EPMONEBook a call

Case study · Public sector · Managed services

Multi-year EPM Cloud stewardship for the City of Regina.

The City of Regina runs its budgeting and planning platform on Oracle EPM Cloud. EPM ONE has held the managed-services engagement for several years, keeping the platform healthy night-to-night so the city’s finance team can stay in the planning work, not the platform work.

Client
City of ReginaPublic procurement record
Industry
Public sector — municipal
Engagement started
2019
Modules
Planning (EPBCS)EPM AutomatePython integration
Scope
Multi-year managed services for the EPM Cloud platform — nightly monitoring, valid intersection compliance, EPM Automate operations.

What we were called in for

Public-sector finance functions in Canada increasingly run on Oracle EPM Cloud — the platform replaced a generation of spreadsheet-driven budgeting and Hyperion Planning installations, and once it’s in production it has to stay running. The City of Regina’s engagement is a long-form managed services relationship: keep the platform stable, keep the data clean, keep the city’s analysts working in the planning models rather than chasing platform issues.

The award is on public procurement record — the City of Regina runs an open procurement process and posts results. This page talks about the engagement in the same terms a public-sector audience would expect: what the work is, how it’s run, and what stability looks like at the multi-year mark.

What we built

A nightly monitoring system. EPM Cloud’s out-of-the-box telemetry tells you what Oracle wants you to see. It does not tell you whether your specific implementation is healthy. We built a Python wrapper around EPM Automate that runs nightly, checks the things that historically fail in this platform, and pages on real problems instead of generic ones. Hierarchies, calculation chains, security inheritance, job queues, integration jobs — the parts that actually break.

Valid intersection compliance. Valid intersections are how Planning prevents users from entering data into combinations of dimensions that don’t make business sense. Done right, they enforce the city’s business rules at the data layer. Done wrong, they silently accumulate exceptions until the close cycle hits the wall. We’ve kept Regina’s valid intersections in a clean state across successive budget cycles: both the rules themselves and the data behind them.

EPM Automate as the operating substrate. The platform doesn’t run on dashboards. It runs on the jobs scheduled against it — exports, imports, metadata refreshes, backups, snapshots. We operate those jobs as a unit, not as isolated cron entries. When something fails, the failure propagates into our system, not into the city’s inbox.

Python integration for what EPM Automate can’t do. Oracle ships EPM Automate as a command-line tool. It’s useful but limited. We’ve built Python around it to handle the diagnostics, transformations, and reporting that the built-in tooling doesn’t support — and we’ve kept that code in a state where a senior engineer can read and modify it without an archaeology project.

How the engagement runs

Managed services are not a help desk. The relationship is built around the city’s budget cycle, not around ticket volume. We know what week the budget release lands, we know what week the council presentation happens, and we know what week the quarterly reforecast pulls the platform into a hot state. The work is staffed against that calendar.

The same people look after the platform from one year to the next. When the finance team picks up the phone, the person on the other end already knows the system.

What stable looks like

At the multi-year mark, the proof of a managed services engagement is what doesn’t happen. No late nights before a council briefing. No emergency reload of the budget cube because someone updated metadata without realizing what else moved. No surprise discoveries during audit. No re-tender of the contract because the platform fell over.

The city’s finance function gets to do finance. The platform stays in the background, doing what it’s supposed to do.

Related