Analytics Catalog/Oracle EPM/EPM Automate commands
Explore the catalogEPM modulesThe extraction patternConnect Power BIEPM to the warehouse
Oracle EPM Cloud · Spine

EPM Automate, the commands that matter

The utility has well over a hundred commands. Data work uses about twenty. This is that twenty, grouped by job, each with the one thing that trips people.

RuleScripts stay dumb: login, call the named job, download, logout. The job holds the POV, the format, and the logic, so the script survives every change.
Neverput export logic in the script itself. A script full of member names breaks with the first hierarchy change, and nobody remembers why.
Start here, if you have never run it— what it is, where it lives, and your first five minutes.

EPM Automate is a small program that runs on your own computer or a server, not inside EPM. You type commands at a command line, the program talks to your EPM environment over the internet, and files move between the two. That is the whole idea.

StepWhat to do
1 · Get itLog in to your EPM environment in a browser. Click your name at the top right, then Downloads, then pick your system. On Windows, run the installer as administrator; Java comes bundled and the utility lands under Program Files. On Mac and Linux, install Java 17 first and point the JAVA_HOME variable at it, the installer does not bring its own.
2 · Open a command lineWindows: press Start, type cmd, press Enter. Mac: open Terminal. Linux: any shell. This is where every command on this page is typed.
3 · Store your password safely, onceType: epmautomate encrypt YOUR_PASSWORD myKey password.epw and press Enter. This writes an encrypted password file. Scripts use the file; your real password never sits in plain text anywhere.
4 · Your first sessionThree commands, one per line, pressing Enter after each: epmautomate login your.name@company.com password.epw https://your-environment-url, then epmautomate listFiles, then epmautomate logout. If listFiles prints a file list, everything works.
5 · Know where files landDownloads arrive in the folder your command line is sitting in when you run the command. On Windows, logs and the password file live in the ProgramData Oracle folder.
:: the whole first session, typed at the command line
epmautomate encrypt YOUR_PASSWORD myKey password.epw
epmautomate login your.name@company.com password.epw https://your-environment-url
epmautomate listFiles
epmautomate logout

Running commands by hand is how you learn. Running them on a schedule is the point: the same commands go into a script file, a scheduler fires it nightly, and the loop on the extraction pattern page runs without you. Windows uses Task Scheduler, Linux uses cron, and a small always-on Linux instance is the usual home.

PathThe least resistance, start to production: first session by hand on your laptop, then the same commands in a script on a small Linux instance, cron nightly, files pushed to a cloud bucket, and the BI tool reads the bucket. Four moves, no product to buy, nothing to renew.
Drill: the script kit, fill in six lines and run— copy, paste, edit the top block, schedule it. Nothing below the line needs touching.

Everything you change lives in the top block: your pod URL, the service account, the password file, your two job names, and the landing folder. The rest is the loop, logging with dates, logging out even on failure, and stopping on the first error so a bad night never half-runs.

#!/bin/bash
# ===== fill in these six lines, nothing else =====
EPM_URL="https://YOURPOD.epm.ocs.oraclecloud.com"
EPM_USER="service.account@yourcompany.com"
PASSFILE="/opt/epm/password.epw"
DATA_JOB="NightlyPlanExport"
META_JOB="NightlyDimExport"
LANDING="/data/epm/landing"
# =================================================

set -euo pipefail
LOG="/var/log/epm_export_$(date +%F).log"
exec >>"$LOG" 2>&1
echo "==== run start $(date) ===="

cd /opt/epm
epmautomate login "$EPM_USER" "$PASSFILE" "$EPM_URL"
trap 'epmautomate logout' EXIT

epmautomate exportdata "$DATA_JOB" plan_data.zip
epmautomate exportmetadata "$META_JOB" dims.zip
epmautomate downloadfile plan_data.zip
epmautomate downloadfile dims.zip

mkdir -p "$LANDING"
unzip -o plan_data.zip -d "$LANDING"
unzip -o dims.zip -d "$LANDING"

# pick the one line for your cloud, delete the other two:
# aws s3 cp "$LANDING" s3://your-bucket/epm/ --recursive
# gsutil -m cp -r "$LANDING"/* gs://your-bucket/epm/
# azcopy copy "$LANDING/*" "https://youraccount.blob.core.windows.net/epm/"

echo "==== run complete $(date) ===="

One-time setup on the server, before the first run:

# one time only, on the server, before the first run
mkdir -p /opt/epm && cd /opt/epm
epmautomate encrypt YOUR_PASSWORD myKey /opt/epm/password.epw
chmod 600 /opt/epm/password.epw
# save the script above as /opt/epm/nightly_export.sh, then:
chmod +x /opt/epm/nightly_export.sh

Then cron, five steps, in order. The habit that matters is step one, never schedule a script you have not watched succeed by hand:

# step 1, prove it works by hand, watch it finish clean
bash /opt/epm/nightly_export.sh
cat /var/log/epm_export_$(date +%F).log

# step 2, open your schedule
crontab -e

# step 3, add this one line, 2am nightly, then save and exit
0 2 * * * /bin/bash /opt/epm/nightly_export.sh

# step 4, confirm the line took
crontab -l

# step 5, tomorrow morning, check the log and the landing folder
cat /var/log/epm_export_$(date +%F).log
ls -l /data/epm/landing

Three notes that save a support ticket. Cron uses the server's timezone, so 2am means the server's 2am, check it with the date command. Keep the schedule off your close calendar, the export locks the application while it runs. And the two job names must exist in the application first, jobs hold the logic, the script only calls them, which is the whole design.

Session and files— the plumbing every script starts and ends with.
CommandWhat it does, and the trap
login · logoutOpen and close the session. Use a password file, never a plain password in the script, and always log out, orphaned sessions count against you. Two April 2026 changes break old scripts: the install moved to Program Files, and a password file referenced without an absolute path must now sit in the ProgramData Oracle folder. Failed calls no longer retry on 403 and 404 errors.
listFilesShows the default location, the Data Management folders, snapshots, and logs. The trap: it will not show the current snapshot while daily maintenance is generating it, so a backup script that runs during the window sees nothing and quietly does nothing.
uploadFile · downloadFileMove files in and out. Imports need the upload first, a step every first script forgets. Download paths include the folder, outbox slash filename.
deleteFileClear the old file before uploading its replacement. Skipping this is how stale files get imported with fresh names in the log.
Data out, the pipeline set— four exports, four different products, one right choice per purpose.
CommandWhat it does, and the trap
exportDataRuns a named Export Data job, columnar CSV in a zip. The warehouse route. The job holds dense dimensions on columns and excludes dynamic members; the command only names it.
exportMetadataRuns a named metadata export, the dimension files. The dictionary half of every extract, and the half everyone skips.
exportEssbaseDataThe whole cube in native Essbase format. Backup and reload only. Feed it to anything that is not Essbase and you learn the native format trap firsthand.
exportDataManagementThe integration setup and staging tables in one zip, with identifiers intact. For moving integration configuration between environments, not for reporting data.
Data in, and running things— loads, rules, and the process identifier problem.
CommandWhat it does, and the trap
importData · importMetadataRun the named import jobs. Metadata imports will not rename members or delete dimensions, that stays manual by design. Pass an error file name so failures land somewhere readable.
refreshCubePushes metadata changes into the cube. Imports without a refresh look like they worked and change nothing users see.
runBusinessRule · runCalcRun a rule with its runtime prompts as name equals value pairs. The rule set from a script needs every prompt supplied, there is no dialog to catch what you forgot.
runDataRuleThe old Data Management load rule runner. Its trap is famous: it does not return the process identifier, so the output filename is unpredictable. Fix the filename in the target options, or move on.
runIntegration · runPipelineThe current Data Integration equivalents, and the better answer to the runDataRule problem. Pipelines chain loads, rules, and clears in one named unit the script calls once.
Environment discipline— the four commands that separate tidy tenants from lucky ones.
CommandWhat it does, and the trap
exportSnapshot · importSnapshotThe full LCM package, artifacts and data. The backup, the environment move, and the audit trail. Snapshots are for Essbase and EPM, never for parsing downstream.
maskDataScrambles data in a test environment after a production clone. The step most admins skip, and the one the security review asks about first.
runDailyMaintenanceTriggers the maintenance window on demand. Useful once, dangerous on a schedule, it takes the environment away from users while it runs.

The full alphabetical reference lives in Oracle's EPM Automate documentation, one page per command. This page is the map; that is the territory. On Linux the utility needs Java 17 with JAVA_HOME set, per the June 2026 update notes. The nightly script these commands build is on the extraction pattern page, and the loop they feed is on Connect Power BI. Command names verified against the current reference, July 2026.

Want the scripts written, tested, and handed over?
The named jobs, the dumb scripts that call them, the schedule that respects the close, and a runbook your team owns.
Talk to us
Terms on this page
named job
An export or import defined once in the application. The script calls it by name and nothing else.
password file
The encrypted credential EPM Automate logs in with. Plain passwords in scripts fail audits.
runtime prompt
A rule's parameter, supplied as name equals value from the command line.
process identifier
The run number that ties an output to a run. REST returns it, runDataRule does not.
pipeline
A named chain of integration steps in Data Integration, called as one unit.
snapshot
The full LCM package. The backup, never the data feed.