Top Six Advanced Planning Tips Jessica Cordova Cameron Lackpour [email protected] [email protected] http://www.arcepmconsulting.com/ Oracle Certified Developer http://camerons-blog-for-essbase- hackers.blogspot.com/ @CameronLackpour
Nov 25, 2015
Top Six Advanced Planning Tips
Jessica Cordova Cameron Lackpour
[email protected] [email protected]
http://www.arcepmconsulting.com/
Oracle Certified Developer
http://camerons-blog-for-essbase-
hackers.blogspot.com/
@CameronLackpour
Top Six Advanced Planning Tips
Jessica Cordova
Hyperion Essbase/Planning Oracle Certified Developer
17 years of hands-on experience
Hyperion Enterprise, Hyperion Essbase, Hyperion Planning, FDM
Web-Analysis, SmartView and Financial Reports
Core Values
Honesty/Integrity
Service excellence
Knowledge transfer
Who is Jessica?
Experienced Planning
Administrators
Developers
Consultants
Who are you?
Good practices galore
Focused aggregations
Inherited security
Fixing Plannings filters
Automating migrations
Integrating Task Lists, Process Management, and Forms
Designing your Planning app for success
What we will cover
Who is Cameron?
Cameron Lackpour
Oracle EPM practitioner
ODTUG board member
20 years experience with Hyperion Products
Essbase, Planning, ODI, Financial Reports
Core Values
A practiced ability to take on way too many projects
Quality work
Knowledge sharing
Why your particular Planning implementation
hurts so much (or so good)
Every nuance and feature of Planning
Wed have to rename Kscope to the Jessica and Cameron Conference
Fun or an agony heretofore unknown? You decide.
Brand extensions (Capex, Workforce, Project
Planning, PSPB, etc., etc., etc.)
What we will not cover
Too much of a good thing
Advanced tips = details + time
More than 50 minutes worth of content
So what to do?
Delete?
Gloss over?
Or let you choose
Whatever is not covered will be in a webinar
We pinky promise
What we will cover
A B C
Forms, Task Lists,
Process Management
Forms, Task Lists,
Process Management
Automated LCM
migrations
Focused Aggregations Bringing METAREAD to
Planning
Planning for success
Automated LCM
migrations
Automated LCM
migrations
Inherited security model
Whats on the menu?
Either A, or B, or C
This is a true direct democracy, so your vote
counts!
FOCUSED AGGREGATIONS
How I learnt to love Calculation Manager, or
Once upon a time, I hated Business Rules
Horrific interface
Horrific code
Horrific performance
Love and hate, mostly hate
The good
Tokenized (stole the idea from Tim Tow) calc script generator in Excel
Write once, create many, manual copy
My code was much faster
The bad
Painful to manage
Lots of calcs
Lots of $$$ for me, so not so bad
Calc scripts > Business Rules
Point of View and Page dimensions
addressable in Business Rules
Business rules could be driven by the form
Less data = fewer blocks = faster time
Love is in the air
Or is it?
But then everything changed with System 9
Level 0 isnt where most of the pain lies
FIX ({varEntity}, etc.) is very useful
No more calc scripts
No more code generator
Way less pain
But aggregating the data is still slow
Level 0 calcs are the base of budgeting
Aggregated data for analysis and allocations
The most expensive bit
Need to calculate only the blocks that have
changed
Intelligent Calc does not work well with budgeting apps
We cant tell what has changed
But we can figure out what might change
Even more intelligent calc
Its right there in the POV
What needs to be aggregated?
Use Calculation Manager variables FIX for level 0
@ANCESTORS of POV to aggregate
@ANCESTORS and @IANCESTORS are the key Walk the hierarchy to the dimension top
Do this for each dimension
FIX on the calculated blocks Do this for each dimension
Looks ugly but is fast, fast, fast
Only effected intersections are aggregated
Fewer blocks = faster speed
How do I selectively aggregate?
What does it look like?
Non aggregating dimensions
Within the inclusive ancestors of Entity,
aggregate ancestors of Segments
Aggregate ancestors of Entity
Type Time Compared to focused
agg
CALC ALL 10.654 seconds 0.36%
AGG of Entity and
Segments
0.61 seconds 6.2%
Focused aggregation 0.038 seconds N/A
Is it faster? Oh yes
@ANCESTORS will not handle shared member
hierarchies
In fact it will ignore shared members altogether
@ALLANCESTORS and @IALLANCESTORS
are the solution
Dealing with shared members
Mostly similar code
Non aggregating dimensions
Within all ancestors hierarchies of varAppEntity,
aggregate all ancestor hierarchies of
varAppSegments
Aggregate all ancestor hierarchies of varAppEntity
Type Sparse calcs Sparse calc cells
CALC ALL 23,357 writes 111,640 reads
106,950,000
FIX and AGG 2,330 writes 6,871 reads
9,309,100
Focused aggregation First FIX
8 writes 68 reads Second FIX
54 writes 207 reads Total:
62 writes 275 reads
First FIX
36,632 Second FIX
247,270 Total:
283,902
Its all in the blocks
http://camerons-blog-for-essbase-
hackers.blogspot.com/2012/03/why-i-hate-and-
love-calculation-manager.html
http://camerons-blog-for-essbase-
hackers.blogspot.com/2012/03/why-i-hate-and-
love-calculation-manager_18.html
Blog posts to read
And tack aggregation onto every form
Reuse and recycle with scripts
Why wouldnt you?
Slightly painful to write
Awfully fast to execute
Except of course where it doesnt work
Forms that stick sparse dimensions onto rows and columns
Partial focused aggregations can lessen the pain
Otherwise, the answer is, YES!
And yes, I love Calculation Manager
So always use focused aggregations?
INHERITED SECURITY
How not to have 52,292 individual security assignments (really)
Never
Do you like pain?
Physical
From excessive rework as people move in and out of
Planning and you remove old users and assign the
replacement users to each and every dimension.
Mental
See above
There Is A Better Way
Never, never, never, ever do individual assigns
Access control
The rules do not change, much, over time
Individual planners change, a lot, over time
Provisioned roles
See above
Understanding security in Planning
The key Security and roles do not change
Who gets that security and role does change
The better way No assignments to usernames
All assignments to groups Group hierarchy makes it better
Users come, users go Planning security is static
Some Shared Services group membership changes
Its that easy
That Better Way is called Groups
Shared Services groups
Yes, you have to create lots of native groups
Can use LDAP/MSAD groups, but why?
Subgroups get assigned to those groups
Users are then assigned to subgroups
Plannings access (dimensions, forms, business rules, etc.) gets assigned to groups
Ta da, youre done
Forever (mostly)
Dont be put off by the initial overhead
Never go into Planning to change access
Only go into Shared Services to
Add or remove users from groups
Add or remove groups
Refresh from Planning
Script the whole thing if you are lazy/clever
Good developers (and admins) are always lazy
Ongoing maintenance
Technology_AppName
PLN_CalcTest
Technology_AppName_PlanType
PLN_CalcTest_Consol
Technology_AppName_PlanType_Entity
PLN_CalcTest_Consol_Americas
PLN_CalcTest_Consol_APAC
PLN_CalcTest_Consol_EMEA
Naming convention
PLN_CalcTest
PLN_CalcTest_Consol
PLN_CalcTest_Americas PLN_CalcTest_APAC PLN_CalcTest_EMEA
Reduce maintenance through inheritance
Group Role(s)
PLN_CalcTest Essbase
Server Access CalcTest (Planning application)
Planner Ad Hoc User Reporting and Analysis
Explorer Viewer
PLN_CalcTest_Consol N/A
PLN_CalcTest_Americas N/A
PLN_CalcTest_APAC N/A
PLN_CalcTest_EMEA N/A
Provisioning by group
Object Member Access Function
Account Statistics Write IDESC
IncomeStatement Write IDESC
BalanceSheet Write IDESC
CashFlow Write IDESC
Ratios Write IDESC
Scenario Plan Write Member
Forecast Write Member
Actual Read Member
Current Write Member
Version Working Write Member
Final Read Member
Target Write Member
Variance Read Member
PLN_CalcTest_Consol
Object Member Access Function
Entity E01/North
America
Write IDESC
E02/Latin
America
Write IDESC
E05/Corporate
HQ
Write IDESC
PLN_CalcTest_Americas
Object Member Access Function
Entity E03/EMEA Write IDESC
PLN_CalcTest_EMEA
Object Member Access Function
Entity E04/APAC Write IDESC
PLN_CalcTest_APAC
Object Name* Group Access
Forms Financials
Revenue
Expenses
Allocation
PLN_CalcTest_Consol
OR
PLN_CalcTest_Consol_Americas,
*APAC, *EMEA
Read
Business
Rules
AggAll
AggPlan
CalcRev
ClrBS
ClrFinal
ClrTrgts
PLN_CalcTest_Consol
OR
PLN_CalcTest_Consol_Americas,
*APAC, *EMEA
Launch
Other objects
*Forms within folders inherit access
-- Purpose: Security report by object, group, and user -- Modified: 14 October 2011 -- Notes: Remove comment at penultimate line to change object type -- See HSP_OBJECT_YPE for all object types. -- SELECT OT.TYPE_NAME AS 'Object Type', O.OBJECT_NAME AS 'Object Name', O3.OBJECT_NAME AS 'Group Name', O2.OBJECT_NAME AS 'User Name', (CASE AC.ACCESS_MODE WHEN 1 THEN 'Read' WHEN 3 THEN 'Write' WHEN -1 THEN 'Deny' END) AS 'Read/Write', (CASE AC.FLAGS WHEN 0 THEN 'Member' WHEN 5 THEN 'Children' WHEN 6 THEN 'IChildren' WHEN 8 THEN 'Descendants' WHEN 9 THEN 'IDescendants' END) AS 'Hierarchy function' FROM HSP_OBJECT O, HSP_ACCESS_CONTROL AC, HSP_OBJECT_TYPE OT, HSP_USERSINGROUP UG, HSP_USERS U, HSP_OBJECT O2, HSP_OBJECT O3, HSP_OBJECT_TYPE O4 WHERE O.OBJECT_ID = AC.OBJECT_ID AND O.OBJECT_TYPE = OT.OBJECT_TYPE AND O3.OBJECT_TYPE=O4.OBJECT_TYPE AND O3.OBJECT_ID = UG.GROUP_ID AND UG.USER_ID=U.USER_ID AND U.USER_ID=O2.OBJECT_ID AND AC.USER_ID = UG.GROUP_ID AND O2.OBJECT_NAME = 'TestPlanner2' ORDER BY 'Object Type', 'Group Name', 'Object Name'
Query the security for TestPlanner2
Dimensions, folders, etc.
Hypothetical TestPlanner3 just got fired
A planner named JessicaC just got hired
TestPlanner3 used to do EMEA forecasts
How does an admin do the switch? 1. Remove TestPlanner3 from
PLN_CalcTest_Consol_EMEA
2. Add JessicaC to PLN_CalcTest_Consol_EMA
3. Refresh filters from Planning
4. Thats it
So why is this all worth while?
Here it is in Planning
JessicaC can only
see E03/EMEA
And in the Essbase filter fJessicaC
Access Member Specification
Read "Target","Working","Variance","Final",@IDES("E03"),"Actu
al","Forecast","Plan","Current",@IDES("CashFlow"),@ID
ES("Statistics"),@IDES("BalanceSheet"),@IDES("Ratios"
),@IDES("IncomeStatement")
None @IDES("Account"),@IDES("Scenario"),@IDES("Version")
,@IDES("Entity")
The client with over 50 thousand security
assignments?
Dont Be That Guy
Use the power of inheritance to define security
Use the power of group-assigned security to
make security maintenance simple
Make your design work for you, not the other
way round
What are the filtered security lessons?
METAREAD FILTERS
Why oh why oh why doesnt Planning have
Here it is in Planning
JessicaC can only
see E03/EMEA
And in the Essbase filter fJessicaC
Access Member Specification
Read "Target","Working","Variance","Final",@IDES("E03"),"Actu
al","Forecast","Plan","Current",@IDES("CashFlow"),@ID
ES("Statistics"),@IDES("BalanceSheet"),@IDES("Ratios"
),@IDES("IncomeStatement")
None @IDES("Account"),@IDES("Scenario"),@IDES("Version")
,@IDES("Entity")
In Planning, Entities by write access only
But in Essbase, all Entities are visible, although
only EMEA can be read.
Its a READ filter
But whats wrong with that filter?
Check out Essbases Member Selection
Even though
JessicaC only has
read/write access to
EMEA, Essbase
shows all Entity
members
Add a MetaRead filter in EAS
Not a long term fix, but does it work?
How oh how oh how does this get fixed?
Access Member Specification
Read "Target","Working","Variance","Final",@IDES("E03"),"Actu
al","Forecast","Plan","Current",@IDES("CashFlow"),@ID
ES("Statistics"),@IDES("BalanceSheet"),@IDES("Ratios"
),@IDES("IncomeStatement")
None @IDES("Account"),@IDES("Scenario"),@IDES("Version")
,@IDES("Entity")
MetaRead "Target","Working","Variance","Final",@IDES("E03"),"Actu
al","Forecast","Plan","Current",@IDES("CashFlow"),@ID
ES("Statistics"),@IDES("BalanceSheet"),@IDES("Ratios"
),@IDES("IncomeStatement")
Pretty, isnt it?
Access Member Specification
Read "Target","Working","Variance","Final",@IDES("E03"),"Actu
al","Forecast","Plan","Current",@IDES("CashFlow"),@ID
ES("Statistics"),@IDES("BalanceSheet"),@IDES("Ratios"
),@IDES("IncomeStatement")
None @IDES("Account"),@IDES("Scenario"),@IDES("Version")
,@IDES("Entity")
Planning security refresh deletes MetaRead
What does the script need to do?
Refresh Planning
Application
Filters
Apply MetaRead filter to Planners
Fix it with a little script
Automate refresh but tack on MetaRead CubeRefresh.cmd
Dynamically generated MaxL to apply Read to MetaRead
Error trap Cause you should, always
Local copies of CubeRefresh.cmd and StartMaxL.cmd Both need to EXIT
A much more civilized location for both scripts
How do we do this?
1. Force Planning refresh with CubeRefresh.cmd
2. Extract Read filters to a text file
3. Import text filters into array
4. Convert to MetaRead through MaxL
5. Apply filters
What are the steps?
Parameterized Refresh_Planning.cmd
Parameter Value
Planning encrypted password file C:\Oracle\Middleware\user_projects\epmsystem1\Planning\planning1\password.txt*
Planning application calctest
Planning admin username hypadmin
Refresh or create /R
Filter switches /FS
Essbase server %computername%
First half of private key 735853931
Second half of private key 1645952239
*File can be anywhere
C:\Refresh_Planning password.txt calctest hypadmin /R /FS %COMPUTERNAME
% 735853931,1645952239
Command line
ModCubeRefresh.cmd
@echo off SET EPM_PLANNING_INSTANCE=C:\Oracle\Middleware\user_projects\epmsystem1/Planning/planning1 call "%EPM_PLANNING_INSTANCE%\setHPenv.bat" "%JAVA_HOME%\bin\java" %HP_JAVA_OPTIONS% %JAVA_OPTIONS% com.hyperion.planning.HspCubeRefreshCmd %1 %2 %3 %4 %5 %6 %7 /COMMAND:CubeRefresh.cmd REM Added this line to get CubeRefresh to EXIT on finish EXIT
Tiny Oracle EPM code change #1
startMaxl.cmd
@ECHO OFF
@REM This file is created to startMaxl
rem Set ESSBASEPATH
set ESSBASEPATH=C:\Oracle\Middleware\EPMSystem11R1\common\EssbaseRTC-64\11.1.2.0
set ARBORPATH=%ESSBASEPATH%
set PATH=C:\Oracle\Middleware\EPMSystem11R1\bin;%ESSBASEPATH%;%PATH%
%ESSBASEPATH%\bin\essmsh.exe %*
REM Added this line to get MaxL to EXIT on finish
EXIT
Tiny Oracle EPM code change #2
Logs and error handles
Calls and manages
ModCubeRefresh.cmd
startMaxl.cmd
Create_MetaRead_Filters.wsf
Refresh_Planning.cmd is the framework
REM start /wait /min modcuberefresh.cmd -f:c:\tempdir\MetaReadRefresh\password.txt /A:calctest /U:hypadmin /R /FS /DEBUG >>%log%
START /WAIT /MIN ModCubeRefresh.cmd -f:%1 /A:%2 /U:%3 %4 %5 /DEBUG >>%log%
Kick off the refresh in a new window
REM Write filters to disc
START /WAIT /MIN startmaxl.cmd -D write_filters_to_disc.mshs %7,%8
REM If error, go to end, else write
IF ERRORLEVEL == 1 (SET errormsg=Error! - Read of filters from Essbase failed & GOTO ERROR)
Write the filters to disk
/* Create log file that will contain the filter contents */
spool on to 'Write_Filters_To_Disc.log';
/* Log on to the server using the: userid, password, and servername */
login $key 4759364321386283573059330813218914075800 $key 8517954660334668312042358713305933081321 on $computername;
/* Set the column width to 1000 characters to allow the filter plenty of room. */
set column_width 1000 ;
/* Show those filters */
display filter row all ;
/* End the spooling. */
spool off ;
/* End of code. */
exit ;
write_filters_to_disc.mshs
REM CSCRIPT Create_MetaRead_Filters.wsf /Application:%2 /FilterFile:Write_Filters_To_Disc.log /OutputFile:/MetaRead_Add_Filters.msh
CSCRIPT Create_MetaRead_Filters.wsf /Application:%2 /FilterFile:Write_Filters_To_Disc.log /OutputFile:Metaread_Add_Filters.msh
REM If the output file doesn't exist, an error has occurred
IF NOT EXIST MetaRead_Add_Filters.msh (SET errormsg=Error! - Creation of MaxL include file failed %2 & GOTO ERROR)
Dynamically create MaxL script
ALTER FILTER 'CalcTest'.'Consol'.'fTestPlanner2' ADD META_READ ON '"Variance","Target","Working","Final",@IDES("E04"),"Actual","Forecast","Plan","Current",@IDES("BalanceSheet"),@IDES("IncomeStatement"),@IDES("Ratios"),@IDES("CashFlow"),@IDES("Statistics")' ; ALTER FILTER 'CalcTest'.'Consol'.'fTestPlanner3' ADD META_READ ON '"Final","Working","Variance","Target",@IDES("E03"),"Actual","Plan","Forecast","Current",@IDES("CashFlow"),@IDES("Statistics"),@IDES("Ratios"),@IDES("BalanceSheet"),@IDES("IncomeStatement")' ; ALTER FILTER 'CalcTest'.'Consol'.'fTestPlanner1' ADD META_READ ON '"Final","Target","Variance","Working",@IDES("E02"),@IDES("E01"),"Forecast","Actual","Current","Plan",@IDES("BalanceSheet"),@IDES("Ratios"),@IDES("Statistics"),@IDES("IncomeStatement"),@IDES("CashFlow")' ;
Metaread_Add_Filters.msh
ALTER FILTER 'CalcTest'.'Consol'.'fJessicaC' ADD META_READ ON '"Variance","Target","Working","Final",@IDES("E03"),"Forecast","Plan","Current","Actual",@IDES("CashFlow"),@IDES("Statistics"),@IDES("Ratios"),@IDES("BalanceSheet"),@IDES("IncomeStatement")' ;
REM Execute add metaread MaxL script START /WAIT /MIN startmaxl.cmd -D call_metaread_add_filters.mshs %7,%8 REM MaxL creates a file whether there is an error or not. When there is no error, the file has a length of zero bytes. REM Use the below FOR loop to get the length of the MaxL STDERR output for %%a in (call_metaread_add_filters.err) do ( set length=%%~za ) REM If the log file doesn't have a length of zero bytes, an error has occurred IF NOT %length%==0 (SET errormsg=Error! - Execution of MaxL include file for METAREAD ADD failed & GOTO ERROR)
Run the nested (msh) code
Full logging
Insert movie here
Lets go prove that this works
This is what Planning should have had all along
Same metadata behavior in Essbase and Planning
data sources
The bad news is its still not there
The good news is its easy to fix
The code is available here:
https://cameronl.opendrive.com/files?71326909_ozcGn
Essbase is now METAREAD
There is Planning, and then there is Planning
Business rules can be fast by rolling up only needed hierarchies
Planning security should never be directly assigned
Yeah, Im looking at you. Dont you feel a little bit guilty?
Sooner or later, Oracle will apply METAREADs to Essbase filters
In the meantime, its easy to script around
What have we learnt?
Automating Migrations
GOOD BYE MANUAL MIGRATIONS!!
LCM (Life Cycle Management)
An effortless migration feature accessible via Shared Services designed for your enjoyment. With LCM you can migrate:
Applications in the same environment
Migrate across environments
Repositories, individual artifacts or dimensions
Enable auditing for tracking import/export by date and by artifacts
AUTOMATE migrations from definition files across environments using the LCM Utility .
GOOD BYE MANUAL MIGRATIONS!!
LCM Utility
Highlights Limitations
Schedule automatic Back-ups
Synchronizing environments (QA, DEV,DR)
Restoring artifacts requires less or no involvement of the organizations infrastructure team
LCM administrator role
LCM is not a replacement for RDBMS Backups for EPM Repositories
Data Migration is not supported
Application release must be the same
Captures new users and new application provisioning. It is additive by nature.
GOOD BYE MANUAL MIGRATIONS!!
What applications can be migrated?
Shared Services Planning
EPMA Financial Management
Reporting And Analysis Performance Scorecard
Essbase Profitability and Cost Management
GOOD BYE MANUAL MIGRATIONS!!
Automate Planning application across environment
Planning the migration process
Full Back-up of target application
Do not use the following Windows OS reserved names for files or
folders:
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5,
COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5,
LPT6, LPT7, LPT8, and LPT9
The following applications are necessary for migrating Hyperion Planning:
Shared Services Planning
EPMA Reporting and Analysis
GOOD BYE MANUAL MIGRATIONS!!
Automate Planning application across environments
Considerations
Application versions must be the same
The following properties Must match:
Start year
Base time period
Currency settings
Migration load sequence Matters:
Shared Services
EPMA
Planning
Reporting And Analysis
GOOD BYE MANUAL MIGRATIONS!!
Shared Services Migration Limitation
LCM will add new users/groups and application provisioning
LCM does not remove user provisioning, groups or change group
What do we do in this instance??
Delete existing users and groups from the target environment
To synch shared services successfully you will need to:
Export Users/Groups from the source environment
Export Users/Groups from the target environment
Delete Users/Groups from the target environment
Import Users/Groups from the source environment
Update Administrative passwords in target environment
GOOD BYE MANUAL MIGRATIONS!!
Create Migration Definition files in Shared Services as follows:
Expand Foundation Application -> Select Shared Services
Select the following:
GOOD BYE MANUAL MIGRATIONS!!
Migration Status Report is displayed
GOOD BYE MANUAL MIGRATIONS!!
By default, the application artifacts and migration definition files are
generated and saved under:
\\Oracle\Middleware\user_projects\epmsystem1\import_export\
The migration definition files are saved in the root of the migration application folder
GOOD BYE MANUAL MIGRATIONS!!
Edit Migration properties
Enter user password and user name (password is encrypted upon execution)
Insert the import operation delete
Save migration definition file
GOOD BYE MANUAL MIGRATIONS!!
Automating Shared Services Migration in a batch script
GOOD BYE MANUAL MIGRATIONS!!
Automating Planning Migration in a batch script Export Migration artifacts and definition file from source environment Copy file system artifacts and migration source definition files to target
environment
Import application
GOOD BYE MANUAL MIGRATIONS!!
Migration status report logs
\\Oracle\Middleware\user_projects\epmsystem1\diagnostics\logs\migration\reports)
Migrations are no longer a bear
Create migration definition files within shared services
Application version must be the same in the target environment
LCM does not remove user provisioning, groups or change group
Delete existing users and groups from the target
environment
Integrate windows batch and LCM utility
What have we learnt?
Integrating Process Management, Forms and Task List
Integrating Process Management, Forms and Task List
Process
Management
Workflow
Data Forms
Control Promotion
Task List
Planning Guide
Process Management
Planning Workflow Process
Process Management
Ownership and accountability
Define approval path
Pre-defined promotional path
Promote->Approve/Reject->Sing-off
Assign ownership to secondary
dimensions
Support different approval structures by
scenario
Promotional status e-mail notification
Pre-defined primary and secondary dimensions
promotional path example:
NYOPSMGR
NYUSER2
NYUSER1
NYDEPTMGR
NYSLSMGR
EASTVP
Process Management (Contd)
Where do I Start?
Define Planning Unit Hierarchy Approvals
A Planning unit is comprised of:
Entities
Secondary dimension
Assign owners
Assign reviewers
Process Management (Contd)
Define Planning Unit Hierarchy as follows:
Select Administration>Approvals>Planning Unit Hierarchy
Process Management (Contd)
Define Entity Approval Dimension
In the example below, a Custom Approval Hierarchy is enabled for descendants of USA Sales
Process Management (Contd)
Define Primary and Sub-hierarchy
The primary dimension is Segments and sub-hierarchy is Relative Generation 3 of Seg01
Process Management (Contd)
Define/Assign Owners
Process Management (Contd)
Version control and efficiency
Can this be maintained externally and imported?
YES
Planning Web and Outline Load Utility
The required field parameters are as follows:
Process Management (Contd)
Planning Unit Hierarchy Scenario and Version assignment
Select Administration>Approvals>Planning Unit >Scenario and Version Assignment
Data Form Validation Rules
Data Form Validation Rules
Enforce business policies
Validation rules can prevent planners from promoting plans not
aligned with the organization's guidelines i.e. Travel Expenses.
Validation rules can be added to a row, cell, column or grid
Change cell color and include violation message when
conditions are not met
Build validation threshold limits
Change promotional path to designate a reviewer/owner for
approval
Data Form Validation Rules (Contd)
Assign Data Form Validation Rule
Right click in Row area and select Add/Edit Validation Rules
Data Form Validation Rules (Contd)
Define Data Validation Rule Properties
If the Account Member is Descendants of Travel and the Current Cell Value is greater than 5k
Then highlight the cell Red and Do Not Promote
Task List
Task List
Guide users through the planning process
Notification features include:
Due dates
Alerts
Tasks approaching due dates
Overdue tasks
Status Reports
Data Forms URLs
Instructions Documents
Task List (Contd)
Task List aka To Do List
Task List (Contd)
Promotion Failed due to Invalid data
Select Failure Message
Task List (Contd)
Task List (Contd)
Correct Value and Save
Promote
New Owner
No more excuses
Accountability
Pre-defined promotional path on primary and secondary
dimensions
Implement validation rules to prevent promoting plans not
aligned with organizations guidelines
Control
How and When?
The task list is your friend (easy as 123)
Enable due dates and alerts
What have we learnt?
Designing Your Planning Application for Success
Designing Your Planning Applications for Success
Internal
Preparation
Efficient
Application Design
Success
Internal Preparation
Internal planning is the Key to Success
Clear defined project objective
Identify resources
Stakeholders
Business Process Owners
IT Infrastructure Resources
System administrators
Be informed
Know your data
Data sources required to facilitate input
Training
Identify calculations that need to be processed before/after input
Frequency
Internal Preparation (Contd)
Data Validation
Lack of resources may delay the project
Approved Application Design
Include thorough Quality Assurance and Test Plans
Pilot testing
Get commitment from participants in advance
Develop detail test plans
Collect feedback
Conduct a second pilot test
Performance testing
Internal Preparation (Contd)
Project Management
Internal Business Project Manager
External Hyperion planning technical Project Manager
Application Design
Why not have it all in one Planning application?
Planning is not a reporting tool
Each tool is uniquely designed to serve its purpose
The objective is to design your planning applications for success
The planning application should be used for planning and budgeting
related tasks only
Application Design (Contd)
Please read the warning label
Warning!! Failure to adhere to the following design considerations may result in adverse physical/mental side effects
Separate apps may be necessary for separate business areas
Exclude irrelevant dimensions
Incorporate true driver-based planning early in the development effort
Standardized intelligent member labels
Provision security groups for efficiency
Do not provision individual users
Application Design (Contd)
Dimension Design
For optimal performance consider the following:
Outline consolidation
Minimize the number of stored dimensions
Assign Label Only to organize account groups i.e. Stat accounts
If possible, avoid:
Sparse member formulas
Large flat sparse dimensions
Application Design (Contd)
Less is more!!
Analyze the planning level details i.e.
Is there value in planning at the transaction level?
Look for opportunities to purge accounts or merge dimensions
Leverage Supporting Detail as an option to itemize
Leverage Smart List and Attributes
Fewer dimensions will result in optimal performance
Application Design (Contd)
Modified Hour Glass
Calculation performance may be improved by changing the order of standard
dimensions to a modified hourglass design.
Accounts
Time
Smallest Dense
Smallest Sparse Agg
Largest Sparse
Dimension Agg
Non-Agg Sparse
Dimensions
Attribute Dimensions
Entity (Dense)
Time (Dense)
Smallest Sparse Agg
Largest Sparse
Dimension
Application Design (Contd)
Optimize Calculation Rules
Leverage outline consolidation where possible
Do not calculate more than what is required
Evaluate the consolidation capabilities granted to each user-group
Focused Aggregations
@ANCESTORS and @IANCESTORS
Application Design (Contd)
Optimize Calculation Rules
Only calculate necessary dimensions i.e.
CALCDIM - Calculates the outline formulas and consolidations associated
with each member
FIX (Margin)
CALC DIM (Customer, Product);
ENDFIX
AGG Calculates
Sparse Dimensions
Ignores all member formulas
Consolidates only parent child relationships
Application Design (Contd)
Optimize Calculation Rules
Eliminate unnecessary passes through the database by using FIX and IF statements on focused calculations.
General Rule:
Use FIX statement for members of sparse dimensions
Use IF statements for members of dense dimensions
Add DATACOPY command to create data blocks necessary to improve processing time
Include conditional logic to address potential zero values
Application Design (Contd)
Web-Form Design
Keep data forms small
Row and Column containing dense dimensions only result in one data block
Page and Point of View - contain sparse dimensions only
Enable Suppress Missing Blocks when sparse dimensions are in rows
Utilize Task Lists to guide users through the planning process
Application Design (Contd)
Web-Form Design
Business Rule form options:
Run on Save and enter run-time prompts
Run on Load executes business rule or calculation upon opening the form
Run on Save and select Use Member on Data Forms
Limit the use of Run on Load as it may result in poor response time
Response time should not exceed 3 second
Leverage Global Variables/Run Time Prompts
Consider scheduling a calculation process to calculate all the dimensions
Application Design (Contd)
Fragmentation
Data fragmentation will result in poor response time. Data fragmentation occurs when:
Users constantly Read/Write to database
Executing Calculation Rules
Incremental data loads and poorly designed data load rules
Large number of Dynamic Calc and Store members
Databases that use an isolation level of uncommitted access with commit
block set to zero
Large Sparse dimensions
Application Design (Contd)
Fragmentation
To confirm fragmentation, check the Average clustering ratio:
Higher value means lower fragmentation
Lower value means higher fragmentation
Application Design (Contd)
Reducing and Removing Fragmentation:
Reducing
Optimize data loads
Optimize calculation scripts
Removing
Export and Reload (Efficient)
Full Database Restructure (Time Consuming)
Application Design (Contd)
Optimize Data loads
Rows Sort Field Order - from left to right in file:
Sparse dims first, from top to bottom of outline order.
Dense dims second, from top to bottom of outline order
OR Export data in column format to view optimal order for loading
Use a dense dim in data columns i.e. period
Remove excess white space
Replace zero values string with #MI
Application Design (Contd)
Yearly Maintenance
Lean Metadata
Review metadata for usage
Keep the metadata lean for efficiency
Lean Data
Create a Historical application
Clear unnecessary/historical data
Success Internal preparation and teamwork
Define project scope
Identify resources
Communication
Training
Design Less is More
Do not include irrelevant dimensions
Do not include unnecessary members in forms
Do not calculate more than required
Establish intelligent member labels in advance
User and provisioning security groups for efficiency
What have we learnt?
Q&A
Thank You
Jessica Cordova Oracle Certified EPM Developer
http://www.arcepmconsulting.com/ [email protected]
Cameron Lackpour
[email protected] http://camerons-blog-for-essbase-
hackers.blogspot.com/