Migration Guides
Pause & Resume

Pause & Resume

Migrayt migrations can be paused at any point during execution and resumed from exactly where they stopped. You will never need to restart a migration from the beginning due to an interruption.

How Pausing Works

Every work item that Migrayt successfully creates in Jira is immediately recorded in a persistent state store. When a migration is paused or interrupted, this record is used to determine which items have already been created.

When the migration resumes:

  • Items already in Jira are skipped (identified by their ado-id-{N} label)
  • The migration continues from the next unprocessed item
  • No duplicates are created

This is guaranteed. You can pause, restart the server, lose network connectivity, or have the migration task interrupted by your cloud provider — the migration will pick up exactly where it left off.

Pausing a Running Migration

Via the UI

Click the ⏸ Pause button in the top-right corner of the migration progress screen. The button triggers a pause signal that is polled by the migration engine every 50 items.

The migration will stop cleanly at the next checkpoint (within seconds on a running migration) rather than stopping immediately mid-item.

Via the API

curl -X POST https://api.migrayt.ai/api/migrations/{runId}/pause \
  -H "Authorization: Bearer {token}"

The migration status transitions from RUNNINGPAUSED.

Resuming a Paused Migration

Via the UI

Return to the migration progress screen. Click ▶ Resume to restart the migration from where it stopped.

Via the API

curl -X POST https://api.migrayt.ai/api/migrations/{runId}/resume \
  -H "Authorization: Bearer {token}"

The migration status transitions from PAUSEDRUNNING.

What Happens to Items Already Created

Nothing. Items already in Jira are untouched when you resume. The migration engine checks each ADO item against the persistent state store before attempting to create it in Jira.

If an item is already in Jira, the engine:

  1. Records the existing Jira key in the ID map (so links work correctly)
  2. Increments the "skipped" counter
  3. Moves to the next item

Phase-Level Checkpointing

In addition to per-item checkpointing, Migrayt also checkpoints completed phases. If a migration is paused in Phase 5 (Transitions), it will not re-run Phases 1–4 on resume. It will continue from the next item in Phase 5.

PhaseDescriptionCheckpointed?
1 — PreflightUser/sprint/component setupAt start of run
2 — Create itemsWork item creationPer-item
3 — HierarchyEpic/parent linkingPer-item
4 — LinksIssue linksAfter all links
5 — AttachmentsFile uploadsPer-item
6 — TransitionsStatus transitionsAfter all transitions
7 — CommentsComment migrationPer-item
8+ — Plugins7pace / XrayPer-plugin

Interruptions vs Pauses

An intentional pause (button click or API call) checkpoints cleanly before stopping.

An unintentional interruption (server restart, network failure, cloud spot instance termination) stops immediately. The migration resumes from the last checkpointed item — at most 50 items before the point of interruption.

In both cases, resuming is safe. No duplicates will be created.

Cancelling a Migration

Cancelling is permanent. The migration cannot be resumed after cancellation — a new run must be started.

Items already migrated to Jira are not removed when a migration is cancelled. If you cancel partway through, you will have a partial Jira project. You can either:

  • Start a new migration run (already-created items will be skipped automatically)
  • Manually delete the partial items in Jira and start fresh

To cancel:

curl -X POST https://api.migrayt.ai/api/migrations/{runId}/cancel \
  -H "Authorization: Bearer {token}"