Case Study
From 2 to 3 Hours to Under 30 Seconds
How CloudADDIE Found One Bad Formula in Thousands of Lines of Code, and Gave a Healthcare Finance Team Their Nights Back
The Situation
A large healthcare organization had completed what should have been a straightforward journey: migrating off on-premise Oracle Hyperion Planning and moving to Oracle PBCS in the cloud. Modern infrastructure. Lower overhead. No more hardware to manage.
What they got instead was a reporting environment that had quietly broken their finance team's workflow.
Reports were taking 2 to 3 hours to complete. Not occasionally. Consistently. The team had adapted the only way they knew how: scheduling reports to run overnight, arriving in the morning to check results, and rebuilding their entire close process around waiting. Nobody had flagged it as abnormal. Nobody had pushed back on the original implementation.
They had accepted slow as the new standard.
When CloudADDIE arrived, the first thing we said was: this shouldn't be happening. In a correctly configured PBCS environment, this workload had no business taking more than a few minutes. Something was wrong, and it wasn't the cloud.
The Investigation
Diagnosing performance issues in PBCS is not a simple process. The application surface area is large: dimension outlines, member properties, business rules, calculation scripts, data maps, and member formulas, all of which interact with each other inside the Essbase calculation engine.
The temptation in situations like this is to start replacing things. Rebuild the cube. Restructure dimensions. Re-migrate. That approach is expensive, disruptive, and often unnecessary. Our approach is the opposite: find the actual cause before touching anything.
We started with the member formulas.
Why Member Formulas First
In PBCS, Dynamic Calc members don't store pre-calculated values. They compute their results at retrieval time, on demand. This is by design and is generally more efficient than storing every aggregated value. But it comes with an important dependency: every member reference inside a Dynamic Calc formula must resolve correctly.
When a Dynamic Calc member's formula contains a reference to another member, whether for a cross-dimensional lookup, a conditional calculation, or a multi-period aggregation, the engine follows that reference at retrieval time. If the reference resolves cleanly, the calculation is fast. If the reference contains an error in syntax or points to a member that doesn't behave as the formula expects, the engine doesn't simply fail. It attempts to resolve the problem, triggering cascading recalculation passes across the cube that multiply the processing time with every report call.
This is one of the most insidious performance failure modes in EPM systems: the application doesn't crash, the data doesn't disappear, and no error message surfaces to the end user. The report just runs. Slowly. Every time.
What We Found
This client had complex member formulas. Not unusual for a mature Hyperion environment. Years of business logic, conditional calculations, and cross-member references accumulate over time, and migrations carry all of it into the cloud. Some formula sets ran to dozens, even hundreds of lines per member.
Inside that complexity, we identified the problem: a Dynamic Calc member whose formula contained a reference to another member with incorrect syntax.
The reference was syntactically malformed. It was not missing entirely, not pointing to a non-existent member, but written in a way that the PBCS Essbase engine could not cleanly resolve. On every report retrieval, the engine encountered this formula, attempted to calculate it, hit the broken reference, and was forced to execute an extended resolution path across the affected dimension hierarchy.
Multiplied across every report run, across every user session, across every reporting cycle, this single formula error was costing the finance team 2 to 3 hours per report.
Finding it required manually working through the formula logic, member by member, cross-referencing the syntax against the actual outline structure and understanding how the calculation engine would attempt to resolve each reference at runtime. It is exactly the kind of diagnostic work that requires deep EPM expertise, not because the fix is complex, but because identifying the source within a large and intricate formula environment demands that you know precisely what you're looking for.
The Fix
Once we identified the member with the broken reference, the remediation was direct:
- Corrected the syntax error in the member formula
- Validated the corrected reference resolved cleanly against the current PBCS outline structure
- Reviewed adjacent member formulas in the same calculation chain to confirm no secondary issues
- Refreshed the database
- Ran a full report validation to confirm performance and data integrity
No structural rebuild. No re-migration. No data loss.
Reports that had been running for 2 to 3 hours completed in under 30 seconds.
The Result
The finance team stopped running reports overnight. The close process that had been architected around a broken system was reconfigured around one that worked. Hours of analyst time absorbed by waiting were returned to actual financial analysis.
More importantly: the team now understood why it had been slow, and what to watch for going forward.
What This Tells You About PBCS Migrations
Migrations from on-premise Hyperion Planning to PBCS carry years of accumulated formula logic into a new environment. That logic was written and tested against an on-premise Essbase engine with specific outline structures, member properties, and calculation behaviors. When that same logic runs in PBCS, even small syntactic inconsistencies, such as a member reference that was never formally validated or a formula that worked in the old environment due to how the on-premise engine handled edge cases, can produce dramatically different performance outcomes.
The critical point is this: the application will not tell you something is wrong. Data will appear correct. Reports will run. Users will adapt. The broken formula will continue executing its broken path on every single retrieval until someone with the expertise to recognize it goes looking.
Common sources of post-migration formula performance issues include:
- Member references with syntax that doesn't match the PBCS outline: member names, aliases, or dimension qualifiers that were valid in the on-premise environment but need adjustment in PBCS
- Cross-plan-type references that behave differently in cloud vs. on-premise Essbase
- Conditional logic in member formulas that triggers unexpected calculation paths when member properties change during migration
- Long, unoptimized formula chains where a single broken reference causes cascading recalculation across parent hierarchies
- Accumulated formula debt: logic written over years that was never refactored, now running in a cloud environment with less tolerance for inefficiency
A post-migration performance audit doesn't require rebuilding your application. It requires knowing where to look, and having enough experience with PBCS's calculation engine to recognize what a broken reference path looks like before it becomes two more years of overnight reports.
The Broader Lesson
The original migration team wasn't negligent. Complex formula environments are difficult to validate comprehensively during a migration project, and PBCS's behavior around Dynamic Calc member formula resolution is subtle enough that even experienced teams miss it. The problem is that "the reports run" gets accepted as success, when what success actually looks like is "the reports run the way they should."
If your team migrated to PBCS and accepted slow performance as the cost of moving to the cloud, it almost certainly isn't. One broken member formula, misconfigured reference, or unoptimized calculation chain can silently absorb hours of your team's time every reporting cycle.
The question worth asking isn't whether your migration completed. It's whether it actually worked.
CloudADDIE specializes in Oracle EPM implementations, cloud migrations, and post-migration performance optimization across PBCS, EPBCS, Hyperion Planning, and Oracle Cloud EPM.
Book a free 15-minute performance assessment
If your migration completed but performance never did, we can help you find out why.