ekso migrate command. Each per-source page links here for the global flag surface so the source-specific pages can stay focused on the source-specific quirks.
The four commands
Every source supports the same four verbs:
The
list-* verb is named per-source to match the customer’s mental model:
ekso migrate jira list-projectsekso migrate linear list-projectsekso migrate devops list-projectsekso migrate zendesk list-projectsekso migrate gemini list-projects
Global flags (every migrate command)
These flags work on everyekso migrate <source> <verb> invocation, alongside the standard CLI flags from Configuration (--url, --api-key, --format, --quiet, etc.).
collect flags
apply flags
See Identity resolution for what each
--user-strategy does.
status flags
status is read-only and has no source-specific flags. It reads the most recent cache file (or --cache <FILE>) and prints:
- Schema version of the cache
- Row counts per
Source*table (issues, comments, attachments, etc.) - IdMap progress per entity kind (how many items / users / files have been applied)
- Whether the cache is fresh (collect-only) or partially / fully applied
A typical run
Idempotency model
Everyapply writes (source-id → Ekso-id) pairs into an IdMap table inside the cache. A re-run reads the IdMap before each write and skips rows that already have an Ekso ID. This means:
- Running
applytwice in a row is a no-op the second time. - A killed
apply(Ctrl-C, network blip, machine reboot) can resume cleanly with--resume. - Running
applywithout--resumeafter a partial run is still safe — it just re-checks every row and skips the applied ones.--resumeskips the per-row IdMap lookup for speed.
collect — each collect writes a new timestamped file).
Per-cache schema versioning
Every cache file is stamped with aschema_version. If you upgrade the CLI between collect and apply and the schema version changes, apply refuses to run and tells you to re-collect. This is intentional — silent data shape mismatches are worse than an explicit “please re-collect” error.
Where to next
- Identity resolution — pick the right
--user-strategy. - Field mapping — write
migration.fields.yaml. - Troubleshooting — exit codes and recovery.
- Per-source: Jira / Linear / Azure DevOps / Zendesk / Gemini.