Sunteți pe pagina 1din 129

Top Six Advanced Planning Tips

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

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

Whats on the menu?


A B C

Forms, Task Lists, Process Management


Focused Aggregations

Forms, Task Lists, Process Management


Bringing METAREAD to Planning

Automated LCM migrations


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

Even more intelligent calc

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

What needs to be aggregated?

Its 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 Do this for each dimension

FIX on the calculated blocks

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
CALC ALL AGG of Entity and Segments Focused aggregation

Time
10.654 seconds 0.61 seconds 0.038 seconds

Compared to focused agg


0.36% 6.2% 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

Its all in the blocks


Type
CALC ALL FIX and AGG Focused aggregation

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

Sparse calc cells


106,950,000 9,309,100 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 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

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. See above

Mental

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

Its that easy

Dont 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

Plannings access (dimensions, forms, business rules, etc.) gets assigned to groups Ta da, youre 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
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 PLN_CalcTest_Americas PLN_CalcTest_APAC PLN_CalcTest_EMEA

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

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. Thats it

Here it is in Planning

JessicaC can only see E03/EMEA

And in the Essbase filter fJessicaC


Access
Read

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

What are the filtered security lessons?

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

Why oh why oh why doesnt Planning have

METAREAD FILTERS

Here it is in Planning

JessicaC can only see E03/EMEA

And in the Essbase filter fJessicaC


Access
Read

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

But whats wrong with that filter?

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

Check out Essbases 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?
Member Specification

Access

Read

"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") "Target","Working","Variance","Final",@IDES("E03"),"Actu al","Forecast","Plan","Current",@IDES("CashFlow"),@ID ES("Statistics"),@IDES("BalanceSheet"),@IDES("Ratios" ),@IDES("IncomeStatement")

None MetaRead

Pretty, isnt it?

Planning security refresh deletes MetaRead


Access Read 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

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 Planning encrypted password file Value C:\Oracle\Middleware\user_projects\ epmsystem1\Planning\planning1\passw ord.txt* calctest hypadmin /R /FS

Planning application Planning admin username Refresh or create Filter switches

Essbase server First half of private key


Second half of private key

%computername% 735853931
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

Lets 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 its still not there The good news is its 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, 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

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

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 EPMA Reporting And Analysis Essbase Planning Financial Management Performance Scorecard 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 EPMA Reporting and Analysis

The following applications are necessary for migrating Hyperion Planning:


Shared Services Planning

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 dimensions promotional path example:

EASTVP NYOPSMGR NYUSER2 NYUSER1 NYDEPTMGR NYSLSMGR

Promote->Approve/Reject->Sing-off

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

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 Data Forms URLs

Instructions Documents

Notification features include: Due dates Alerts


Tasks approaching due dates Overdue tasks

Status Reports

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

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 organizations guidelines How and When?

Control

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

What have we learnt?

Success
Internal preparation and teamwork

Define project scope Identify resources Communication Training Less is More


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

Jessica Cordova Oracle Certified EPM Developer http://www.arcepmconsulting.com/ arcepmconulting@gmail.com


Cameron Lackpour cameron@clsolve.com

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

S-ar putea să vă placă și