129
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

Embed Size (px)

DESCRIPTION

Hyperion Planning Advanced development tips

Citation preview

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