The modern EPM calculation editor

EPM Calculation Manager hasn't changed in 20 years.

You've felt it every time that beige little dialog box loads. So did we.

Calculation Manager — Rule Editor×
Application:— select —
Plan Type:— select —
Rule Name:— select —
OKCancel
scroll
The editor

Welcome to the modern EPM calculation editor.

Real intelligence across both Groovy and calc script — completion, diagnostics, hover docs, signature help, and one-key formatting, all on native files.

Live editor · type → complete → validate
ClearAndCalc.groovy — epm-work
ClearAndCalc.groovy×
AllocateOpex.csc
1/* RTPS: {rtpCube} {rtpYear} */
2Cube cube = operation.application.getCube(rtps.rtpCube.toString())
3def plan = rtps.rtpYear.member
4Member acct = cube.getDimension("Account").getMember("Net Income")
Pod: FINPLAN-PRODGroovy Full Application Intelligence
Completion sources

Fed from the model

Members · Connections · &SubVars · @-functions.

Members
"Net Income"
Connections
FINPLAN-PROD
&SubVars
&CurrYear
@-functions
@RELATIVE
Whole-Pod validation

Diagnostics at rest

Across every closed file — not just the one you have open.

ClearRegion.groovy 2
AllocateOpex.csc 1
RollForward.groovy 3
Consol.csc 1
Both languages

Groovy and calc script, one editor

The same intelligence flips between .groovy and .csc.

ClearRegion.groovyAllocateOpex.csc
1/* RTPS: {rtpCube} {rtpYear} */
2Cube cube = operation.application.getCube(rtps.rtpCube.toString())
3def plan = rtps.rtpYear.member
Full Application Intelligence

It knows your whole application.

Intelligence that reads across every artifact in your workspace — not just the file you have open.

  • Cross-artifact resolution across every rule, template, and script
  • %Template and %Script macros expanded inline
  • Find references anywhere a member or macro is used
AllocateOpex.groovy
%Template(name:="Clear Region",application:="PLAN",plantype:="Plan1")
expanded from your whole application
↳ resolved expansion
FIX("Plan1", "North")
"Region" = #Missing;
ENDFIX
BYO-AI

Bring your AI.

Because your rules are native files, any coding assistant can read and write them directly — no plugin, no proxy, no permission slip.

  • Works with GitHub Copilot inline completions
  • Works with Claude Code and Codex agents
  • Operates on real TextDocuments — nothing bespoke to learn
NetIncome.csc — Claude Code · Copilot · Codex
FIX("Actual", &CurrYear, @RELATIVE("Entity", 0))
Version control

Fully git enabled.

Modern implementation practices finally come to EPM teams. Every rule is a plain file in your repo — versioned, diffable, reviewable, and revertible.

  • Line-by-line diffs on every rule change
  • Pull requests and code review for calculation logic
  • Roll back to any commit, any time
ForecastRevenue.groovy — git
main · working tree
@@ FIX("Actual", &CurrYear) @@
- "Net Income" = "Revenue" - "Expense";
+ "Net Income" = "Revenue" - "Expenses";
History
a71e04fix: guard #Missing in Clear RegionHEAD
3c9b12feat: allocate opex by headcount
e5f7a0refactor: extract %Template Clear Region
Two ways to work

Live to your Pod, or fully air-gapped.

The same workspace, the same intelligence — connected to Oracle or completely offline.

Full · live connection

Connected to your Pod

Pulldimensions, rules, artifacts → your workspace
Pushwith pre-Push drift detection
Deploystraight to your Pod
ExecuteRuns panel captures Oracle's output verbatim
Offline · air-gapped

Same workspace, no network

snapshot.zip
full workspace
  • Populated from a disk Snapshot — zero requests
  • Full application intelligence, entirely offline
  • Built for the SCIF, the plane, the secure room
Workspace setup

One workspace. Many Pods.

One VS Code workspace holds many Pod Folders — dev, test, prod, or multiple clients side by side. Each Pod Folder is self-describing, so any folder works standalone.

EXPLORER — EPM-WORK · one workspace
FINPLANDomain
FINPLAN-DEVService Account
pod.jsonurl · app · no creds
FINPLAN-PRODOAuth
pod.jsonurl · app · no creds
CLIENT-BDomain
CLIENT-BOffline
pod.jsonurl · app · no creds
credentials live in VS Code SecretStorage — never in a folder

one workspace · many Pod Folders · per-Pod connection badges

  • Pods group under Domains — one credential typically spans a Domain's Pods
  • pod.json carries the URL and app name — never credentials
  • Offline Pods — no credential at all — sit right beside connected ones
Two sign-in methods, both supported

Service Account

A shared credential stored in VS Code SecretStorage — one credential serving multiple Pods across a Domain.

BasicSecretStorageshared

Personal OAuth

Per-user sign-in through your own SSO/MFA via device flow. Tokens never leave your machine.

SSOMFAdevice flow

All your storage is local.

Your files, optionally your git — then deploy straight to your Pod. There is no server of ours in the path. Rules are never proxied through us.

You · VS Code
the extension
Local files + optional git
every rule, on disk
Your Pod · Oracle EPM
deploy target
A server of oursnever in the path

Install Free.

The modern EPM calculation editor, in the editor you already live in.

Add to VS Code

marketplace.visualstudio.com · free forever, no account