Professional Documents
Culture Documents
Jessica Cordova arcepmconsulting@gmail.com http://www.arcepmconsulting.com/ Oracle Certified Developer Cameron Lackpour cameron@clsolve.com http://camerons-blog-for-essbasehackers.blogspot.com/
@CameronLackpour
Who is Jessica?
Jessica Cordova
Hyperion Enterprise, Hyperion Essbase, Hyperion Planning, FDM Web-Analysis, SmartView and Financial Reports
Core Values
Experienced Planning
Administrators Developers Consultants
Who is Cameron?
Cameron Lackpour
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
Brand extensions (Capex, Workforce, Project Planning, PSPB, etc., etc., etc.)
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
FOCUSED AGGREGATIONS
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
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?
Level 0 calcs are the base of budgeting Aggregated data for analysis and allocations
We cant tell what has changed But we can figure out what might change
Non aggregating dimensions Aggregate ancestors of Entity Within the inclusive ancestors of Entity, aggregate ancestors of Segments
Is it faster? Oh yes
Type
CALC ALL AGG of Entity and Segments Focused aggregation
Time
10.654 seconds 0.61 seconds 0.038 seconds
Within all ancestors hierarchies of varAppEntity, aggregate all ancestor hierarchies of varAppSegments
Sparse calcs
23,357 writes 111,640 reads 2,330 writes 6,871 reads First FIX 8 writes 68 reads Second FIX 54 writes 207 reads Total: 62 writes 275 reads
http://camerons-blog-for-essbasehackers.blogspot.com/2012/03/why-i-hate-andlove-calculation-manager.html http://camerons-blog-for-essbasehackers.blogspot.com/2012/03/why-i-hate-andlove-calculation-manager_18.html
Otherwise, the answer is, YES! And yes, I love Calculation Manager
INHERITED SECURITY
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. See above
Mental
Access control
The rules do not change, much, over time Individual planners change, a lot, over time
Provisioned roles
See above
The key
Security and roles do not change Who gets that security and role does change
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)
Ongoing maintenance
Refresh from Planning Script the whole thing if you are lazy/clever
Good developers (and admins) are always lazy
Naming convention
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
PLN_CalcTest
PLN_CalcTest_Consol
PLN_CalcTest_Americas
PLN_CalcTest_APAC
PLN_CalcTest_EMEA
Provisioning by group
Group
PLN_CalcTest
Role(s)
Essbase Server Access CalcTest (Planning application) Planner Ad Hoc User Reporting and Analysis Explorer Viewer N/A N/A N/A N/A
PLN_CalcTest_Consol
Object Account Member Statistics IncomeStatement BalanceSheet CashFlow Ratios Scenario Plan Forecast Actual Current Version Working Final Target Variance Access Write Write Write Write Write Write Write Read Write Write Read Write Read Function IDESC IDESC IDESC IDESC IDESC Member Member Member Member Member Member Member Member
PLN_CalcTest_Americas
Object
Entity
Member
E01/North America E02/Latin America E05/Corporate HQ
Access
Write Write Write
Function
IDESC IDESC IDESC
PLN_CalcTest_EMEA
Object
Entity
Member
E03/EMEA
Access
Write
Function
IDESC
PLN_CalcTest_APAC
Object
Entity
Member
E04/APAC
Access
Write
Function
IDESC
Other objects
Object Forms Name* Financials Revenue Expenses Allocation AggAll AggPlan CalcRev ClrBS ClrFinal ClrTrgts Group PLN_CalcTest_Consol OR PLN_CalcTest_Consol_Americas, *APAC, *EMEA PLN_CalcTest_Consol OR PLN_CalcTest_Consol_Americas, *APAC, *EMEA Access Read
Business Rules
Launch
*Forms
Hypothetical
TestPlanner3 just got fired A planner named JessicaC just got hired
Here it is in Planning
Member Specification
"Target","Working","Variance","Final",@IDES("E03"),"Actu al","Forecast","Plan","Current",@IDES("CashFlow"),@ID ES("Statistics"),@IDES("BalanceSheet"),@IDES("Ratios" ),@IDES("IncomeStatement") @IDES("Account"),@IDES("Scenario"),@IDES("Version") ,@IDES("Entity")
None
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
METAREAD FILTERS
Here it is in Planning
Member Specification
"Target","Working","Variance","Final",@IDES("E03"),"Actu al","Forecast","Plan","Current",@IDES("CashFlow"),@ID ES("Statistics"),@IDES("BalanceSheet"),@IDES("Ratios" ),@IDES("IncomeStatement") @IDES("Account"),@IDES("Scenario"),@IDES("Version") ,@IDES("Entity")
None
In Planning, Entities by write access only But in Essbase, all Entities are visible, although only EMEA can be read. Its a READ filter
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?
Member Specification
Access
Read
None MetaRead
None
Application Filters
How do we do this?
Error trap
Cause you should, always
4.
5.
Force Planning refresh with CubeRefresh.cmd Extract Read filters to a text file Import text filters into array Convert to MetaRead through MaxL Apply filters
Parameterized Refresh_Planning.cmd
Parameter Planning encrypted password file Value C:\Oracle\Middleware\user_projects\ epmsystem1\Planning\planning1\passw ord.txt* calctest hypadmin /R /FS
%computername% 735853931
1645952239
*File
can be anywhere
Command line
C:\Refresh_Planning password.txt calctest hypadmin /R /FS %COMPUTERNAME % 735853931,1645952239
write_filters_to_disc.mshs
/* 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 ; */
/* exit ;
End of code.
*/
Metaread_Add_Filters.msh
ALTER FILTER 'CalcTest'.'Consol'.'fTestPlanner2' ADD META_READ ON '"Variance","Target","Working","Final",@IDES("E04"),"Actual","For ecast","Plan","Current",@IDES("BalanceSheet"),@IDES("IncomeStatem ent"),@IDES("Ratios"),@IDES("CashFlow"),@IDES("Statistics")' ;
ALTER FILTER 'CalcTest'.'Consol'.'fTestPlanner3' ADD META_READ ON '"Final","Working","Variance","Target",@IDES("E03"),"Actual","Pla n","Forecast","Current",@IDES("CashFlow"),@IDES("Statistics"),@ID ES("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("Cas hFlow")' ; 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 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)
Full logging
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
Automating Migrations
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 .
LCM Utility
Highlights
Schedule automatic Back-ups Synchronizing environments (QA, DEV,DR) Restoring artifacts requires less or no involvement of the organizations infrastructure team LCM administrator role
Limitations
LCM is not a replacement for RDBMS Backups for EPM Repositories
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 EPMA Reporting and Analysis
Start year
Base time period Currency settings
Shared Services
EPMA Planning Reporting And Analysis
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
Expand Foundation Application -> Select Shared Services Select the following:
\\Oracle\Middleware\user_projects\epmsystem1\import_export\
The migration definition files are saved in the root of the migration application folder
Process Management
Promote->Approve/Reject->Sing-off
Assign ownership to secondary dimensions Support different approval structures by scenario Promotional status e-mail notification
Define/Assign Owners
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
Task List
Task List
Guide users through the planning process Data Forms URLs
Instructions Documents
Status Reports
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 How and When?
Control
The task list is your friend (easy as 123) Enable due dates and alerts
Internal Preparation
Success
Internal Preparation
Be informed
Know your data
Data Validation
Lack of resources may delay the project
Pilot testing
Get commitment from participants in advance Develop detail test plans Collect feedback Conduct a second pilot test
Performance testing
Project Management
Internal Business Project Manager External Hyperion planning technical Project Manager
Application Design
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:
Less is more!!
Analyze the planning level details i.e.
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
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
CALCDIM - Calculates the outline formulas and consolidations associated with each member
AGG Calculates
Sparse Dimensions Ignores all member formulas Consolidates only parent child relationships
General Rule:
Add DATACOPY command to create data blocks necessary to improve processing time Include conditional logic to address potential zero values
Web-Form Design
Keep data forms small Row and Column containing dense dimensions only result in one data block
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
Fragmentation
Data fragmentation will result in poor response time. Data fragmentation occurs when:
Fragmentation
To confirm fragmentation, check the Average clustering ratio:
Higher value means lower fragmentation Lower value means higher fragmentation
Removing
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
Yearly Maintenance
Lean Metadata
Review metadata for usage Keep the metadata lean for efficiency
Lean Data
Success
Internal preparation and teamwork
Design
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
Q&A
Thank You
http://camerons-blog-for-essbasehackers.blogspot.com/