A planning system without security is a kingdom without walls. Anyone can enter, write whatever they wish, and the integrity of Vision's numbers evaporates overnight. You must build the fortress — defining who sees what, who can change what, and who guards the gate.
Valid Intersections define which combinations of dimensions are allowed for data entry. The most important use: prevent planners from writing to the Actual scenario (which is loaded via Data Integration pipeline, not entered manually).
Valid Intersection Rule Example
// Rule 1: Operating entities can only write to Budget and Forecast
Entity: Descendants(Total_Operating)
Scenario: Budget, Forecast
Version: Working, Draft→ All other scenario/version combos blocked for planners// Rule 2: Actual is Finance-only via Data Integration
Entity: All
Scenario: Actual→ Only Finance_Admin group can see Actual intersections
💡SOX Compliance: Every write to EPBCS is logged with user ID and timestamp. In public companies, this audit trail is what Finance hands to auditors. Enable data change auditing in Application Settings before the first budget cycle — retrofitting it later requires a full data reload.
Budget season at Vision involves 50 managers, 3 layers of approval, and a CFO who needs sign-off on every entity by November 30th. Without formal workflow, this is a chaos of email threads and version confusion. The Approval Units are Vision's council chamber — where each budget goes on trial before the Crown.
Approval States — The Full Lifecycle
📋
Not Started
✏
First Pass
📤
Under Review
↩
Pushed Back
✅
Approved
🔒
Locked
💡Approved vs Locked: Approved = manager signed off. Locked = Finance frozen the data — even administrators need to explicitly unlock before any edits. Build a Groovy rule that checks for Locked status and throws RuleStoppedException to prevent admin overrides.
Groovy + Workflow Integration
Groovy — Workflow Status Check
import com.hyperion.calcmgr.common.groovyrules.exceptions.RuleStoppedException
// Guard: prevent edits on approved/locked planning unitsdef entity = operation.grid.pov.find { it.dimensionName == "Entity" }.memberName
def status = cube.getPlanningContext()
.getPlanningUnitStatus(entity, "Budget", "FY2025")
if (status == "APPROVED" || status == "LOCKED") {
throw newRuleStoppedException(
"${entity} is ${status} — contact Finance Admin to reopen for changes.")
}
⚠Stuck Approvals: If a reviewer is on leave and a planning unit is stuck "Under Review", use Application → Manage Approvals to view all unit statuses and take administrative actions (reassign reviewer, force-advance status) without losing audit trail.
🛡 Quest Tasks — Lesson 17
Create Planning Unit Hierarchy for Vision's 3-level approval chain
Configure reviewer assignments for each approval level
Add Groovy rule to block edits on approved/locked units
The numbers are in, the budgets approved. Now Vision's executives need to see. From the lookout tower, the CFO demands a single screen that tells the financial story of Vision Corporation at a glance: Are we on track? Where are the risks? Build the tower.
CFO Dashboard — Sample KPIs
Revenue vs Budget
$2.84B
+1.4% vs $2.80B budget
📈
Gross Margin
42.3%
-80bps vs 43.1% budget
⚠
EBITDA Margin
18.7%
+20bps vs 18.5% budget
✅
Forecast Accuracy
91%
Q3 MAPE: 9%
📊
Infolets
Infolets are compact, animated KPI tiles on an EPBCS dashboard. They show a summary metric, trend indicator, and can "flip" to reveal detail. They live at the top of dashboards and the home page — the CFO's at-a-glance view.
💡Dashboard Design Principles: (1) CFO understands the story in 10 seconds. (2) Top 3 KPIs never require scrolling. (3) Use Red/Amber/Green conditional formatting with documented thresholds. (4) The "why" behind any number lives one click away — not three.
Conditional Formatting
Set up RAG (Red/Amber/Green) thresholds in EPBCS dashboard forms. Example for Revenue vs Budget:
Green: Actual ≥ Budget (favorable)
Amber: Actual between Budget −5% and Budget
Red: Actual < Budget −5% (unfavorable)
🔭 Quest Tasks — Lesson 18
Build CFO Executive Dashboard with 4 KPI infolets
Add Revenue vs Budget bar+line combo chart
Configure RAG conditional formatting with documented thresholds
Create drill-through from infolet to entity-level detail form
🔭
The Oracle
Dashboard & Reporting Expert
🔭 Part VII · Lesson 19 · 175 XP
📊 FRS Reports & Narrative Reporting
Part VII · Vision Lookout · Lesson 2 of 2
The Scribe's Final Chapter
Dashboards show the present. Reports tell the story. Financial Reporting Studio is Vision's official record — the P&L that goes to the Board, the variance analysis for the Audit Committee, the monthly narrative the CFO signs. Build it with precision; it must be audit-proof.
FRS Key Features
Feature
Description
FP&A Use
Row/Column Templates
Reusable row/column sets
Update once → 20 reports update automatically
Page of Pages
One click → report for every entity
12 entity P&Ls in one job run
Conditional Suppression
Hide zero/missing rows
Clean Board-ready output
Variance Highlighting
Auto-format unfavorable red
Immediate visual attention to risk areas
Drill Through
Click number → GL transaction detail
Auditor-friendly, no manual lookups
💡Narrative Reporting: Oracle Narrative Reporting lets Finance write the MD&A narrative alongside live EPBCS data references. When numbers change, the cited figures in the narrative auto-update. This eliminates the "stale numbers in the Board deck" problem that plagues every finance team during Board prep.
🔭 Quest Tasks — Lesson 19
Create Vision P&L FRS report: Budget vs Actual vs Prior Year
Add variance column with conditional formatting (unfav = red)
Configure Page of Pages for all 12 entities in one run
Build a Narrative Report template with live EPBCS data references
Vision Corporation has hundreds of forms, dashboards, and reports. Without a guided navigation path, new planners are lost in the labyrinth. Navigation Flows create a curated journey — like a GPS for the planning process. And EPM Automate (epmautomate CLI) is the automation scroll that makes it all run without human intervention overnight.
Navigation Flows
Navigation Flows replace the EPM Home page with a custom, role-based navigation structure. Build one flow for Planners, one for Managers, one for Executives — each seeing only what they need.
#!/bin/bash# Vision Corporation — nightly batch (runs 11pm via cron)
EPM="/opt/Oracle/EPMAutomate/bin/epmautomate"# 1. Authenticate
$EPM login [email protected] password https://vision.planning.ocp.oraclecloud.com# 2. Load prior day actuals from GL extract
$EPM uploadFile ActualsDaily.csv
$EPM runDataRule "Vision_Actuals_Daily" "Jan" "Jan" "2025" REPLACE COMMIT# 3. Advance period substitution variables
$EPM setSubstitutionVariable CurPeriod Mar
$EPM setSubstitutionVariable CurYear FY2025# 4. Run master calculation chain
$EPM runBusinessRule "Master_Calculation_Sequence"# 5. Run CFO report package and export to PDF
$EPM runReportingObjectJobset "CFO_Daily_Pack"
$EPM logout
💡Professional Automation: A well-configured nightly EPM Automate (epmautomate CLI) script means Finance arrives each morning to actuals already loaded, period variables current, all calcs run, and reports ready in inbox. This eliminates the "morning load panic" that plagues many EPM implementations.
🧭 Quest Tasks — Lesson 20
Build a Planner Navigation Flow with Budget, Forecast, and Report sections
Create Executive Flow showing only dashboards and approved reports
Write EPM Automate (epmautomate CLI) script for nightly data load and calc sequence
Schedule the script and verify it runs in the job console
🔭
The Oracle
Automation Expert
👑 Part IX · Final Boss · 500 XP
👑 The Final Boss — Crowned Victory
Part IX · The Endgame · All knowledge tested
THE CROWN AWAITS
Answer the 5 enterprise scenarios correctly and claim your Planning Champion crown. Submit each answer to the Oracle for evaluation.
Scenario 1 — The Runaway Allocation
👑 Final Boss · Scenario 1
APAC IT Costs Doubled — Diagnose the Root Cause
Vision's CFO reports that APAC entities' IT allocated costs doubled in the last forecast run versus the previous one. No IT headcount changed and the IT shared cost pool didn't change. List the 3 most likely causes and how you would diagnose each one in EPBCS.
Scenario 2 — The Groovy Decision
👑 Final Boss · Scenario 2
Auto-Populate Benefits for 200 Cost Centres
You need to auto-populate headcount-driven benefits (healthcare, pension, payroll tax) for 200 cost centres across all entities. Should you use: (A) Groovy rule triggered from a button, (B) Member formulas in the Account dimension, (C) Essbase calc script, or (D) Data Integration mapping? Explain your choice and the trade-offs of each option.
Scenario 3 — The Approval Deadlock
👑 Final Boss · Scenario 3
Budget Cycle Closes in 48 Hours, 3 Entities Stuck
The budget cycle closes in 48 hours. Three of Vision's 12 entities are stuck "Under Review" with no action — the assigned reviewers are on leave. Describe the specific administrative actions available in EPBCS to unblock this without overriding the audit trail and without losing the approval history.
Scenario 4 — The Performance Crisis
👑 Final Boss · Scenario 4
Master Calc Rule Times Out — 4 Hours to Fix
Vision's Master Calculation Rule is timing out after 90 minutes during the budget cycle. You have 4 hours to fix it before tomorrow's Board deadline. Walk through your complete diagnosis and remediation plan step by step. What are the likely anti-patterns? What do you check first?
Scenario 5 — Driver-Based Budget Architecture
👑 Final Boss · Scenario 5 · FP&A Integration
Design a Complete Driver-Based Budget System
Vision's CFO wants to move from cost-centre budgeting to fully driver-based: revenue drives headcount, headcount drives compensation, compensation drives benefits. Design the complete Groovy rule chain that implements this in EPBCS. What runs first? What are the dependencies? What validation guards do you need? What happens when a planner changes their headcount mid-cycle?
👑
The Oracle — Final Examiner
Supreme Judge of the Planning Quest
Submit your answer to any scenario for evaluation, or ask for hints on scenarios where you're stuck.