Skip to main content
ekso migrate devops pulls work items, comments, attachments, links, and iterations from Azure DevOps (and on-prem Azure DevOps Server / TFS) into your Ekso tenant. Two commands — collect and apply. Read Migrate overview and Before you start first.

What gets imported

Authoring fidelity preserved — every comment, every change is attributed to the original DevOps identity (matched by email).

What does NOT get imported

  • Revision history. Each work item has full edit history in DevOps; v1 imports only the current state. Re-evaluate if a customer needs SOX/audit migration.
  • State transition rules. The migrator snapshots the current state of each item; transition rules don’t transfer.
  • Build & release pipelines. Out of scope.
  • Repos / Git history. Out of scope — work items only.
  • Test plans / suites / runs. Test management is out of scope for v1.
  • Boards & queries (saved WIQL). Re-author on the Ekso side.
  • Service identities ([Project]\Project Collection Build Service, etc.) are filtered at collect — they’re not real users.

Before you start

Pre-flight checklist on top of the general one:
  • An Azure DevOps organisation (https://dev.azure.com/<your-org>).
  • A Personal Access Token (PAT) with Work Items (Read) + Identity (Read) scopes.
Add a devops block to your migration.config.json:
Or use the env-var override EKSO_MIGRATE_DEVOPS_PAT for CI use cases. The organisation field is the segment after dev.azure.com/ in your DevOps URL. For on-prem Azure DevOps Server, use the full base URL — see the on-prem section below.

Step 1 — list projects

Sample output:

Step 2 — collect

Repeat --project for multiple. Sample run:
Useful flags:
  • --no-attachments — skip downloads.
  • --no-comments — skip discussion.
  • --resume — pick up where a killed collect left off.

Step 3 — dry-run apply

Step 4 — apply for real

If interrupted, re-run with --resume.

Identity resolution for DevOps

DevOps identities have email — --user-strategy match-or-create is reliable. Service identities ([Project]\Project Collection Build Service, [Acme]\Project Collection Service Accounts, etc.) are filtered out at collect time — they aren’t real users and don’t pollute your Ekso user list. There’s a regression test pinning this. Read Identity resolution.

Custom fields for DevOps

DevOps fields use Reference Name identifiers like Microsoft.VSTS.Scheduling.StoryPoints or Custom.<Name>:
Discover your reference names:
Pass it to apply:
See Field mapping.

Iterations, Area Paths, Work Item Types

Cycles attach to a board on the Ekso side. Pass --board <BOARD_ID> if the tenant has more than one board.

On-prem Azure DevOps Server (TFS)

The same CLI works against on-prem Azure DevOps Server / TFS — point the organisation at the full base URL of your collection:
Collection-scoped PATs work the same way as Azure DevOps Service PATs. The Microsoft TFS SDK bundled with the CLI handles both.

Iron rule — WIQL chunking and 429 retry

WIQL queries return up to 200 work-item IDs per call (Azure cap). The migrator paginates by chunking IDs client-side at 200. The WorkItemTrackingHttpClient.GetWorkItemsAsync call also caps at 200 IDs per request — chunked the same way. DevOps rate-limit responses surface as VssServiceResponseException with HttpStatusCode==429. The CLI catches this, honours Retry-After, and backs off up to 6 attempts (~64 s of accumulated backoff). Past 6 attempts, exit code is 7.

Binary footprint note

The DevOps adapter bundles the official Microsoft TFS SDK (Microsoft.TeamFoundationServer.Client + Microsoft.VisualStudio.Services.Client), adding ~30 MB to the standalone Ekso CLI binary. This is the bundled trade-off — single binary, no plugin install. If binary size becomes a constraint, the v2 roadmap includes a plugin model that makes DevOps separately installable.

Troubleshooting DevOps-specific issues

See Troubleshooting for the full per-source error table.

Why migrate to Ekso

Azure DevOps centralises work items, repos, builds, and tests; Ekso focuses on the work-item layer with financial intelligence and AI primitives DevOps doesn’t model. See Ekso vs Azure DevOps for the broader comparison.

Where to next