Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Where Did That Come From? Techniques for Debugging HFM

1,004 views

Published on

Fellow HFM administrators, power users, and anyone else who has had to fix an HFM rule: have you ever wished you could see, understand, and fix what is going on? Have you ever asked yourself:

Where did that error come from?
Why is this number multiplied 12 times?
Is the override number coming from Sub Calculate or Sub Translate?
Does this condition even do anything?
This calculation is incorrectly running on Revenue accounts.
The calculation is correct but I'm not getting any results...



Oracle Ace Chris Barbieri shares multiple techniques for setting up classic vbscript rules to capture debugging information and how to correct these common problems.
Presenter: Chris Barbieri

Published in: Software
  • ★★ How Long Does She Want You to Last? ★★ A recent study proved that the average man lasts just 2-5 minutes in bed (during intercourse). The study also showed that many women need at least 7-10 minutes of intercourse to reach "The Big O" - and, worse still... 30% of women never get there during intercourse. Clearly, most men are NOT fulfilling there women's needs in bed. Now, as I've said many times - how long you can last is no guarantee of being a GREAT LOVER. But, not being able to last 20, 30 minutes or more, is definitely a sign that you're not going to "set your woman's world on fire" between the sheets. Question is: "What can you do to last longer?" Well, one of the best recommendations I can give you today is to read THIS report. In it, you'll discover a detailed guide to an Ancient Taoist Thrusting Technique that can help any man to last much longer in bed. I can vouch 100% for the technique because my husband has been using it for years :) Here's the link to the report ➤➤ https://tinyurl.com/rockhardxxx
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Where Did That Come From? Techniques for Debugging HFM

  1. 1. Where did that come from? Hyperion Financial Management Techniques for debugging HFM rules October 16, 2015 Chris Barbieri
  2. 2. Finit Overview • Founded in 2002 • 75+ employees in 20+ states • Mostly CPAs, MBAs • 50+ Planning / Essbase Clients • 80+ HFM Clients • Managed largest roll-out of HFM in North America • Market Leader in ARM/FCM • World Leader in FDM implementations and custom solutions
  3. 3. EPM Services Full Cycle Implementations Upgrades Dedicated Support
  4. 4. Why is Finit Here? • We make and deliver personalized financial reporting solutions and experiences. • Listening, questioning, and analyzing • Building relationships … not company to company, but person to person. We are Makers and Doers
  5. 5. How do we achieve our beliefs? The Finit Family • All owners actively involved in the business • No debt or external owners • Prioritize the customer, not profitability • Long term stability • employees, not subcontractors • Compensation model based on client satisfaction
  6. 6. Finit Values Our values, on which we ask you to provide consultant feedback:
  7. 7. Finit Customer Success Our values, culture, and approach to becoming a trusted advisor to our customers has led to 100% customer success for every Finit client (225+) and every project (450+)
  8. 8. Some Finit Customers
  9. 9. Questions
  10. 10. About the Presenter • • Global contribution to Oracle EPM community • Hyperion Financial Management • Hyperion Enterprise • 17 years of Hyperion Experience • Customer / administrator • Micro Control • Hyperion Enterprise • Hyperion Employee • Pioneer consultant on HFM • Sr. Product Issues Manager • Oracle Partner • HFM Practice Leader • EPM System Architect • Thought leader in HFM application and system design and performance Expert in tropical places and rock & roll ☺ Chris Barbieri cbarbieri@finitsolutions.com
  11. 11. Topics • Objectives • Where did that number come from? • Review of rules and the value dimension • Getting to the root of the problem • Debugging Classic Rules • Write To File • The art of debugging
  12. 12. Trace the Problem • Symptoms often show up in top entities • Very difficult to find root cause there • Drill back to the inflection point: Start from good • Base Entity • Walk up the Value dimension • Base Customs, ICP and Account • Was the Prior Period okay? • Identify the problem point by taking a bottom-up approach • Don’t forget to check the Calc Status!
  13. 13. Walk the Value Dimension • Create a grid with Entity in rows, Value in columns Connect the dataConnect the dataConnect the dataConnect the data………… …with the Calc Status…with the Calc Status…with the Calc Status…with the Calc Status
  14. 14. Pay Attention to the Calc Status • Tracks whether rules have been run since • Last data change • System (Metadata/rules) change • Enables HFM to run rules only where needed • Utmost importance for trusting the numbers … “OK” doesn’t mean the logic is correct Never had dataNever had dataNever had dataNever had data Data has changedData has changedData has changedData has changed System has changedSystem has changedSystem has changedSystem has changed
  15. 15. Read Cell Information • Right-click on a cell to view Cell Information • Reveals the full POV • Displays Calculation Status • And suggested action
  16. 16. Calc Status: Action Required Status Required Action Objective When Needed “Changed” Calculate Run all logic in local currency • Data has been changed • A journal has been posted/un-posted “Needs Translation” Translate Translate all accounts from local currency balances into target currency • Foreign currency entity has had a data or journal change “Needs Consolidation” Consolidate Add up data from children, perform eliminations • Data from one or more base entities has changed “OK” (do nothing) Data has been calculated • Nothing has changed since logic was last run
  17. 17. Currencies Outside the Hierarchy • Have a grid like this, and “Translate/Force Translate”? • Be careful about currencies which are not any parent’s • “Consolidate” only runs on currencies according to the entity hierarchy 1) Create a hierarchy 2) Create a task flow 3) Manually ‘babysit’ 4) ICP report might translate these* 1) Create a hierarchy 2) Create a task flow 3) Manually ‘babysit’ 4) ICP report might translate these* Possible solutionsPossible solutions
  18. 18. HFM Sub Routines: Commonly Used • Calculate • 80% of business logic • Calculations for the trial balance • Bring P&L into Current Year Retained Earnings • Roll-forwards and Cash Flow • Translate • Non-standard translations • Consolidate • Vary from out-of the box consolidation and eliminations • Write eliminations to a custom member • Apply consolidation methods, including minority interest • NoInput • Data entry “mask” • Dynamic • Ratios
  19. 19. HFM Sub Routines: Less Commonly Used • Allocate • Write back from parent entities to base entities • Equity Pick Up • Multi-pass consolidation logic • Input • Input base level accounts and customs, but in a parent entity • On-Demand • Introduced in 11.1.2.3 for Forms • Transactions • Introduced in 4.0 • Specifies accounts enabled for intercompany transactions
  20. 20. Rule Execution in the Value Dimension: In the beginning – a base entity <Entity Curr Adjs><Entity Currency> <Entity Curr Total> Aggregation – data not stored Rule execution – data stored Data entry and loads here Journals here Unexpected data here is the result of: • Data or journals • Metadata attributes • Sub Calculate Unexpected data here is the result of: • Data or journals • Metadata attributes • Sub Calculate
  21. 21. Rule Execution in the Value Dimension: Next steps– a base entity <Entity Curr Total> Aggregation – data not stored Rule execution – data stored Journals in parent’s currency here Unexpected data here is the result of: • Journals • Metadata attributes • Default translation • Sub Translate • Sub Calculate Unexpected data here is the result of: • Journals • Metadata attributes • Default translation • Sub Translate • Sub Calculate <Parent Curr Adjs><Parent Currency> <Parent Curr Total> Zero here means: • There is no Exchange Rate • Or a rule has zeroed it out after translation
  22. 22. [Contribution Adjs] Rule Execution in the Value Dimension: Contribute to your parent – a base entity [Parent Adjs] [Elimination] [Parent] [Proportion] [Contribution Total] [Contribution] [Parent Total] Aggregation – data not stored Rule execution – data stored Is [Parent Total] correct? It’s the starting point for Sub Consolidate Unexpected data here is the result of: • Sub Consolidate • Methods • Intercompany eliminations • Sub Calculate • [Active] • Scenario attributes
  23. 23. Rule Execution in the Value Dimension: Moving on up… to the parent entity <Entity Currency> of the parent entity = Sum of [Contribution Total] of its children … and the value dimension begins again for the parent entity and its siblings
  24. 24. Applied Example
  25. 25. Where Did That Come From? Page 25 What I got
  26. 26. Check the Metadata Page 26 Entity attributes Account attributes
  27. 27. I wish I could see what it’s doing… Page 27
  28. 28. Write To File • Not a standard HFM-provided subroutine • … but very commonly used • HFM’s VBScript rules permit more than just HFM calculations • Easy for HFM to generate a text file during rule execution • File created by HFM DCOM user • System account that runs CASecurity.exe, HsxServer.exe and HsvDatsource.exe processes • File can reside any place the DCOM user AND you (human, HFM user) can Read/Write • Often directly on the HFM server • Requires Remote Desktop access • Or a shared folder available on the network • Inside the firewall
  29. 29. The Write To File Sub Routine
  30. 30. Generate a Simple File • Make sure the Write To File works • And that you can access it • Create a “road sign” that the sub routine will start • Orient yourself by adding POV details • Exercise in string concatenation sPovValue <Entity Currency> Name of variableName of variable Content of variableContent of variable
  31. 31. Sample Output
  32. 32. Add Variables and Comments to Yourself • The art of debugging is to write intelligible, actionable notes to yourself • Give yourself as many clues as possible Log every variable you’re using, watch for nulls Use line numbers for navigation Write out each member in the list
  33. 33. Check Your Variables Page 33 • Capture both the variable name AND its contents • If you see the variable name followed by nothing, it means it’s not defined
  34. 34. Tip: Working With Text Page 34 • Text is case-sensitive “APR” is not equal to “apr” • Instead use UCASE(text) LCASE(text) StrComp(text1, text2, vbTextCompare) = 0 • Easy to manipulate text • VBScript functions Left(text, number of characters) Right(text, number of characters) Mid(text, start position, number of characters) • Concatenate strName = “Chris” & “ ” & “Barbieri” • Can’t perform “math” on text • “<“ or “>” are based on alphanumeric sequence “APR” is less than “MAR” “APR” is less than “apr”
  35. 35. Now What? Changed, but still not expected Walk the value dimension Corrected the case problem
  36. 36. Dig a Little Deeper Custom dimensions aren’t the same for both accounts! “Taxes” not flagged IsCalculated“Taxes” not flagged IsCalculated
  37. 37. Tip: Check Your Sources • HS.EXP sets data in the same intersections on the right to those on the left • All valid intersections • Be explicit! Balance the seesaw Account Account ICP Customs = Account ICP Customs Account ICP Customs = Which ICP or Customs will be written to? [None]? Tops? Only [None] was valid for “Taxes” in Customs 2-4 Custom1 Product is the same Only [None] was valid for “Taxes” in Customs 2-4 Custom1 Product is the same
  38. 38. Tweak The Rule Pull TotalProducts into [None] Clear out the residual data Only necessary if the account/custom is not IsCalculatedOnly necessary if the account/custom is not IsCalculated
  39. 39. Log File Management Tips • Output log appends each new text item • Including from one session to the next • Delete the file as needed • Make it easier to navigate • Hard to find answers among 10,000 lines of messages • “Take only what you need” • Execute calculations as narrowly as possible
  40. 40. Getting Closer Page 40 Italy has no taxes, as expected But why is this negative? And not 35% Add all customs and ICPAdd all customs and ICP
  41. 41. Very Close Now… Page 41
  42. 42. Trick: Set the Targets Equal Page 42 • Shake out any differences – remove the rate • Still a difference • Strip out all Sub Calculate except this one rule
  43. 43. Is the Intersection Correct? Page 43 • Look in a web grid at the cell you’re reading from
  44. 44. Found it! Page 44 • Custom3: needed TotalC3 rather than TotalChannels • Update the rule • Hurrah! I’m getting the right intersection • Add back the other rules and continue
  45. 45. More Useful Tips
  46. 46. Tip: Debug a Number • Fetch a number from an HFM intersection • Must use “GetCell” or a variant • GetCell yields a number in a cell • GetCellRealData also tells if the number is derived (gray) • GetCellNoData tells if the cell is empty or not • Must be ‘one number at a time’ • Can’t embed this inside Call WriteToFile • Fetch it just before you need it • Or pass along a variable that should contain a number • Percentages are common for Allocations: • fProductAllocationPct • fChannelRevenue • fDenominator
  47. 47. Life of a Variable Page 47 • By default, it is only defined for the current subroutine • By default, it is not passed into other subroutines Call Useful(sPovEntity, bIsLastPeriod) Sub Useful(sPovEntity, bIsLastPeriod) If sPovEntity = “Boston” And bIsLastPeriod = True Then Do something useful End If End Sub • Could redefine it within each subroutine • Risk it being defined differently • Use Public variables for string constants • Do NOT use Public for POV variables
  48. 48. HFM Administrator Guide Page 48 • Check out Chapter 10 in the HFM Administrator Guide http://docs.oracle.com/cd/E57185_01/ epm.1112/hfm_admin_11124100/fram eset.htm?launch.html • Also available online
  49. 49. Thank you for attending! Questions? Email us for a copy of the slides or link to the recording insights@finitsolutions.com Past webinars: www.finitsolutions.com/ webinars Presenter: Chris Barbieri cbarbieri@finitsolutions.com General Questions: Greg Barrett gbarrett@finitsolutions.com Joe Mizerk jmizerk@finitsolutions.com
  50. 50. Questions? Use the code “Finit” for $100 discount when you register for Kscope16

×