Top Six Advanced Planning Tips

Share Embed Donate


Short Description

Hyperion Planning Advanced development tips...

Description

Top Six Advanced Planning Tips Jessica Cordova

Cameron Lackpour

[email protected]

[email protected]

http://www.arcepmconsulting.com/ Oracle Certified Developer

http://camerons-blog-for-essbasehackers.blogspot.com/

@CameronLackpour

Top Six Advanced Planning Tips

Who is Jessica? 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 are you? 

Experienced Planning ● Administrators ● Developers ● Consultants

What we will cover 

Good practices galore ● ● ● ● ●

Focused aggregations Inherited security Fixing Planning’s filters Automating migrations Integrating Task Lists, Process Management, and Forms ● Designing your Planning app for success

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

What we will not cover  

Why your particular Planning implementation hurts so much (or so good) Every nuance and feature of Planning ● We’d 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 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’s on the menu? 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

 

Either A, or B, or C This is a true direct democracy, so your vote counts!

How I learnt to love Calculation Manager, or…

FOCUSED AGGREGATIONS

Love and hate, mostly hate 

Once upon a time, I hated Business Rules ● Horrific interface ● Horrific code ● Horrific performance

Calc scripts > Business Rules 

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 

But then everything changed with System 9  

  

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?

The most expensive bit 

Level 0 isn’t 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

Even more intelligent calc 

Need to calculate only the blocks that have changed ● Intelligent Calc does not work well with budgeting apps

 

We can’t tell what has changed But we can figure out what might change

What needs to be aggregated? 

It’s right there in the POV

How do I selectively aggregate? 

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

What does it look like?

Non aggregating dimensions Aggregate ancestors of Entity Within the inclusive ancestors of Entity, aggregate ancestors of Segments

Is it faster? Oh yes 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

Dealing with shared members 

@ANCESTORS will not handle shared member hierarchies ● In fact it will ignore shared members altogether



@ALLANCESTORS and @IALLANCESTORS are the solution

Mostly similar code

Non aggregating dimensions Aggregate all ancestor hierarchies of varAppEntity

Within all ancestors hierarchies of varAppEntity, aggregate all ancestor hierarchies of varAppSegments

It’s all in the blocks 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

Blog posts to read 



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

Reuse and recycle with scripts 

And tack aggregation onto every form

So always use focused aggregations? 

Why wouldn’t you? ● Slightly painful to write ● Awfully fast to execute



Except of course where it doesn’t 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

How not to have 52,292 individual security assignments (really)…

INHERITED SECURITY

Never, never, never, ever do individual assigns  

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

Understanding security in Planning 

Access control ● The rules do not change, much, over time ● Individual planners change, a lot, over time



Provisioned roles ● See above

That Better Way is called “Groups” 

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



It’s that easy

Don’t be put off by the initial overhead 

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  

Planning’s access (dimensions, forms, business rules, etc.) gets assigned to groups Ta da, you’re done ● Forever (mostly)

Ongoing maintenance  

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

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

Reduce maintenance through inheritance

PLN_CalcTest

PLN_CalcTest_Consol

PLN_CalcTest_Americas

PLN_CalcTest_APAC

PLN_CalcTest_EMEA

Provisioning by group 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

PLN_CalcTest_Consol Object

Member

Access

Function

Account

Statistics

Write

IDESC

IncomeStatement

Write

IDESC

BalanceSheet

Write

IDESC

CashFlow

Write

IDESC

Ratios

Write

IDESC

Plan

Write

Member

Forecast

Write

Member

Actual

Read

Member

Current

Write

Member

Working

Write

Member

Final

Read

Member

Target

Write

Member

Variance

Read

Member

Scenario

Version

PLN_CalcTest_Americas Object

Member

Access

Function

Entity

E01/North America

Write

IDESC

E02/Latin America

Write

IDESC

E05/Corporate HQ

Write

IDESC

PLN_CalcTest_EMEA Object

Member

Access

Function

Entity

E03/EMEA

Write

IDESC

PLN_CalcTest_APAC Object

Member

Access

Function

Entity

E04/APAC

Write

IDESC

Other objects 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

*Forms

within folders inherit access

Query the security for TestPlanner2 -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'

Dimensions, folders, etc.

So why is this all worth while? 

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. That’s it

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")

What are the filtered security lessons? 

The client with over 50 thousand security assignments? ● Don’t 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

Why oh why oh why doesn’t Planning have…

METAREAD FILTERS

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")

But what’s wrong with that filter?  



In Planning, Entities by write access only But in Essbase, all Entities are visible, although only EMEA can be read. It’s a READ filter

Check out Essbase’s Member Selection ●

Even though JessicaC only has read/write access to EMEA, Essbase shows all Entity members

How oh how oh how does this get fixed?  

Add a MetaRead filter in EAS Not a long term fix, but does it work?

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, isn’t it?

Planning security refresh deletes MetaRead 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")

Fix it with a little script 

What does the script need to do? ● Refresh Planning ● ●

Application Filters

● Apply MetaRead filter to Planners

How do we do this? 

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

What are the steps? 1. 2. 3.

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

Value

Planning encrypted password file

C:\Oracle\Middleware\user_projects\ epmsystem1\Planning\planning1\passw ord.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

Command line C:\Refresh_Planning password.txt calctest hypadmin /R /FS %COMPUTERNAME % 735853931,1645952239

Tiny Oracle EPM code change #1 ModCubeRefresh.cmd @echo off SET EPM_PLANNING_INSTANCE=C:\Oracle\Middleware\user_projec ts\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 #2 startMaxl.cmd @ECHO OFF @REM This file is created to startMaxl rem Set ESSBASEPATH set ESSBASEPATH=C:\Oracle\Middleware\EPMSystem11R1\common\Ess baseRTC-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

Refresh_Planning.cmd is the framework  

Logs and error handles Calls and manages ● ModCubeRefresh.cmd ● startMaxl.cmd ● Create_MetaRead_Filters.wsf

Kick off the refresh in a new window 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%

Write the filters to disk 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_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.

*/

*/

Dynamically create MaxL script 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)

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") ' ;

Run the nested (msh) code 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)

Full logging

Let’s go prove that this works 

Insert movie here

Essbase is now METAREAD  

  

This is what Planning should have had all along Same metadata behavior in Essbase and Planning data sources The bad news is it’s still not there The good news is it’s easy to fix The code is available here: ● https://cameronl.opendrive.com/files?71326909_ozcGn

What have we learnt? 

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, I’m looking at you. Don’t you feel a little bit guilty?

● Sooner or later, Oracle will apply METAREADs to Essbase filters ●

In the meantime, it’s easy to script around

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

● LCM is not a replacement for RDBMS Backups for EPM Repositories

● Synchronizing environments (QA, DEV,DR) ● Restoring artifacts requires less or no involvement of the organization’s infrastructure team ● LCM administrator role

● 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\re ports)

What have we learnt? 

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

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 ●

● ● ●

● Pre-defined primary and secondary dimension’s promotional path example:

EASTVP

Promote->Approve/Reject->Sing-off

Assign ownership to secondary dimensions Support different approval structures by scenario Promotional status e-mail notification

NYOPSMGR NYUSER2

NYDEPTMGR

NYUSER1

NYSLSMGR

Process Management (Cont’d) 

Where do I Start? ● Define Planning Unit Hierarchy Approvals ●

A Planning unit is comprised of: ●

Entities



Secondary dimension



Assign owners



Assign reviewers

Process Management (Cont’d) 

Define Planning Unit Hierarchy as follows: ● Select Administration>Approvals>Planning Unit Hierarchy

Process Management (Cont’d) 

Define Entity Approval Dimension ● In the example below, a Custom Approval Hierarchy is enabled for descendants of USA Sales

Process Management (Cont’d) 

Define Primary and Sub-hierarchy ● The primary dimension is Segments and sub-hierarchy is Relative Generation 3 of Seg01

Process Management (Cont’d) 

Define/Assign Owners

Process Management (Cont’d) 

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 (Cont’d) 

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 (Cont’d) 

Assign Data Form Validation Rule ● Right click in Row area and select Add/Edit Validation Rules

Data Form Validation Rules (Cont’d) 

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 • Data Forms • URL’s

• Instructions • Documents

● Notification features include: ●

Due dates ● Alerts ●

Tasks approaching due dates



Overdue tasks

● Status Reports

Task List (Cont’d) 

Task List – aka “To Do List”

Task List (Cont’d)

Promotion Failed due to Invalid data

Select Failure Message

Task List (Cont’d)

Task List (Cont’d) 

Correct Value and Save



Promote New Owner

What have we learnt? 

No more excuses ● Accountability ● ●

Pre-defined promotional path on primary and secondary dimensions Implement validation rules to prevent promoting plans not aligned with organization’s guidelines

● Control ●

How and When? ●

The task list is your friend (easy as 123) ● Enable due dates and alerts

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 (Cont’d) 

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 (Cont’d) 

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 (Cont’d) 

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 (Cont’d) 

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 (Cont’d) 

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 (Cont’d) ● 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 (Cont’d) 

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 (Cont’d) 

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 (Cont’d) 

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 (Cont’d) 

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 (Cont’d) 

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 (Cont’d) 

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 (Cont’d) 

Fragmentation ● To confirm fragmentation, check the Average clustering ratio: ●

Higher value means lower fragmentation



Lower value means higher fragmentation

Application Design (Cont’d) 

Reducing and Removing Fragmentation: ● Reducing ●

Optimize data loads



Optimize calculation scripts

● Removing ●

Export and Reload (Efficient)



Full Database Restructure (Time Consuming)

Application Design (Cont’d) 

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 (Cont’d) 

Yearly Maintenance ● Lean Metadata ●

Review metadata for usage



Keep the metadata lean for efficiency

● Lean Data ●

Create a Historical application



Clear unnecessary/historical data

What have we learnt? 

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

Q&A

Thank You

Jessica Cordova Oracle Certified EPM Developer http://www.arcepmconsulting.com/ [email protected] Cameron Lackpour [email protected]

http://camerons-blog-for-essbasehackers.blogspot.com/

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF