Operate migration jobs from Settings → Migrations
Settings → Migrations in the dashboard is the durable console for every platform-migration job your organization has run — the place you return to after the onboarding wizard closes. This guide is the operator loop for that console: how to read a job’s real status, the recovery sequences (retry versus roll back — Orbit itself has no pause), and what to capture when you escalate. The end-to-end wizard narrative and per-job detail are covered elsewhere: run a platform migration end-to-end walks connect → preview → run, and run a migration from Settings → Migrations is the full console walkthrough from connector selection through lifecycle. Start here when the question is “a job is on the board and I need to act on it.”1. Where the page lives
Open it from the dashboard sidebar: Settings → Migrations. Every role with settings access can open the page and read the job list. The destructive half of the console is role-gated: owner and admin roles see the Roll back action, and other roles never get the button. Cancel is not role-gated — anyone who can see the list can stop a job that is still in flight, and the server enforces the same split, so a member never sees a button the API would reject. Two neighbouring guides frame what happens before this console matters: migration jobs operations covers the post-run cancel/rollback lifecycle in depth, and platform migration jobs covers the wizard sequence that puts a job on the board. This guide is the middle of the loop: the job exists, it may not be going well, and the console is where you deal with it.2. Read the board
Each row is one persisted migration job, with a source label (Twilio, Telnyx, Klaviyo, MessageBird, or Front), a status badge, the start time in your timezone, and — after a rollback — a rolled-back marker. The list is not a live feed: it loads on page open and refreshes when you click Refresh. If you take an action on another device or a teammate changed a job, the board is stale until you refresh. The status is the decision input, and the only mistake the console cannot protect you from is acting against a stale one:Queued— the worker has not picked the job up yet. Allow a few minutes before you treat this as stuck.Running— actively pulling entities and writing to your tenant.Completed— terminal; everything the scope selected landed.Failed— terminal; the worker stopped with the failure recorded. Treat a failed job as partially migrated — anything imported before the stop stays.Cancelled— terminal; an operator stopped the job at a checkpoint. Also partially migrated, by choice.
3. The recovery loop
Recover a failed or stuck migration with one of three sequences. Decide which before you click anything:A. Retry — the normal recovery
Cancel what is in flight if anything is, re-run the wizard over the same connector, and let the new job’s duplicate policy (skip / overwrite / merge, set at preview) reconcile against what the failed job already wrote. Prefer this when the job stopped because the upstream account was stale, a credential expired, or the chosen scope was wrong — you want the data, delivered correctly. There is no in-place re-run or per-step “retry failed rows” on the console itself: retry is a fresh job over the same connection. For CSV contact imports, failed rows do come back as a downloadable skipped-rows report you fix and re-submit — that recovery path is documented in import and reconcile contacts. To retry from the console:- Click Refresh and confirm the failed job is terminal (
FailedorCancelled). If anything from the same source is still running, cancel it first (see sequence B) and wait for it to settle — two overlapping jobs over one connection double the conflict surface. - Restart the wizard from the row’s Start a migration entry point (the empty state and the provider-migration hub on Settings → Integrations link there), reconnect, and run a new preview — a fresh job always re-runs the pre-flight, so a fixed upstream shows up in the preview counts before anything writes again.
- Set the duplicate policy for the re-run deliberately: the failed job’s partial data is what the new job collides with, and the policy decides who wins each collision.
B. Cancel — stop the bleeding first
Cancel is the first move whenever something is going wrong mid-run: wrong scope, stale upstream, a migration you meant to stop. The console gates it behind a confirm dialog, and the semantics matter:- The worker stops at the next safe checkpoint between batches — clean, never torn mid-batch.
- Already-imported data stays. Cancel decides nothing about past work; it stops future work.
- The job ends in
Cancelledand is not resumable — sequence A is the only way forward.
C. Roll back — reverse a landed migration (owner/admin)
Rolling back deletes precisely the contacts that job created — reversibility is by job id, not a tenant rewind. Reach for it when a migration landed wrong and you want the imported data gone before re-running, or when the migration was exploratory and should not stand. It is permanent, the confirm dialog says exactly what it destroys, and the scope is narrow: contacts the job created are removed, pre-existing contacts the job merely updated are untouched, and non-contact configuration (routing, channel settings) is out of scope. A job rolls back once — a second attempt is rejected, and the rolled-back marker plus the removed count confirm the first one landed. The safe recovery scripts, composed:- Failed before it wrote much → sequence A. Cancel if needed, re-run, done.
- Landed wrong and you want it out → cancel to terminal (if needed), roll back, then sequence A from a clean slate.
- Stuck queued for minutes → cancel, refresh, sequence A. A queued job that never starts running is a worker-pickup problem, and the ticket evidence below is what support needs if retry also hangs.
4. Export escalation evidence
When a job stays stuck across a cancel-and-retry, support replay is one lookup if you bring the identifiers instead of a narrative. Capture, from the console itself:- The job’s
imp_…id. Take it from the network request the console makes (browser developer tools → theGET /importsresponse lists every row’s id) or fromGET /importsover the API — it is the only key a job is found by. - The exact status observed — the badge text and when you saw it.
- The
meta.request_idfrom any failing API call — the standard response envelope carries it, and support replays the request’s exact state from that id. - The sequence already attempted — “cancelled, waited for terminal, re-ran wizard, new job is also stuck queued” tells support the retry loop is exhausted.
See also
- Run a platform migration end-to-end — the wizard sequence: connect, dry-run preview, live progress, and the API equivalents
- Migration jobs operations — the post-run cancel/rollback lifecycle in depth, with the REST and SDK walkthrough
- Run a migration from Settings → Migrations — the full operator walkthrough of the console, from connector selection through the lifecycle
- Assisted import wizard — the onboarding wizard walkthrough for Twilio, Telnyx, Klaviyo, and MessageBird
- Migrate from Twilio — the concept mapping (numbers, messaging services, TwiML, webhooks) for the most common source
- Migrate from enterprise CCaaS — the phased runbook for contact-center suites (Genesys, Talkdesk, Five9, NICE CXone)
- Troubleshooting: contact imports — per-error-code fixes for cancel, rollback, and queue failures