Running Orchestrated Migration End-to-End: Validation, Sync, Cutover, Monitoring, and Cleanup

Orchestrated migration is executed as a migration job (a batch). Microsoft states that the maximum batch size is 100 users and migrations are managed through Microsoft Graph APIs (beta) using PowerShell or Graph Explorer.

Step 1: create a validation batch (recommended)

Use standalone validation to confirm prerequisites before you submit an actual migration. Validation behaves like a what-if: it checks prerequisites at tenant and user levels (permissions, relationships, identity mapping, licensing, and more).

Step 2: submit the migration batch and understand the stages

·       Validation: checks prerequisites; if checks fail, the user's migration does not begin.

·       Mailbox syncing: mailbox content is synced in the background while the user continues working in the source tenant. Microsoft strongly recommends submitting batches two weeks before the cutover date.

·       Cutover: after CompleteAfterDateTime passes and sync completes, mailboxes cut over to the target tenant. After cutover, cancellations are no longer possible.

·       Teams and OneDrive: after mailbox cutover, Teams chats, Teams meetings, and OneDrive sites begin migration.

Batch control and monitoring (Graph beta PowerShell examples)

# Create a validation job
Test-MgBetaCrossTenantMigrationJob -DisplayName "xtmigration1" -CompleteAfterDateTime 2026-02-01T00:00:00Z -ResourceType Users -SourceTenantId <sourceTenantId> -Resources @(<targetUserObjectId1>, <targetUserObjectId2>)

# Create a migration job
New-MgBetaCrossTenantMigrationJob -DisplayName "xtmigration1" -CompleteAfterDateTime 2026-02-01T00:00:00Z -ResourceType Users -SourceTenantId <sourceTenantId> -Resources @(<targetUserObjectId1>, <targetUserObjectId2>)

# Retrieve all jobs (batches)
Get-MgBetaCrossTenantMigrationJob

# Retrieve user status within a job
Get-MgBetaCrossTenantMigrationJobUser -CrossTenantMigrationJobId <jobIdOrName> -CrossTenantMigrationTaskId <targetUserObjectId> | ConvertTo-Json -Depth 100

# Update the cutover date
Update-MgBetaCrossTenantMigrationJob -CrossTenantMigrationJobId <jobIdOrName> -CompleteAfterDateTime 2026-02-08T00:00:00Z

# Cancel a job (only before CompleteAfterDateTime)
Stop-MgBetaCrossTenantMigrationJob -CrossTenantMigrationJobId <jobIdOrName>

Cleanup after migration

After migration completes, remove temporary permissions and return tenants to a non-migration state. Typical cleanup actions include:

·       Remove organization relationships (Remove-OrganizationRelationship).

·       Remove migration endpoints (Remove-MigrationEndpoint).

·       Remove meeting migration permissions (Remove-MMSAppPermissions).

·       Remove identity mapping permissions (Remove-CtimServicePrincipal) and Teams chat migration permissions (Revoke-CTTMAppPermissions).

·       Remove CTIM data (Remove-CtimData) when you have confirmed migration completion and business acceptance.

Note: users remain on the source tenant as MailUsers after migration. Depending on business needs, you can choose to remove or maintain these objects.

Important: avoid outdated guidance

This blog series intentionally avoids using the older Tenant-to-tenant migrations overview page you flagged as outdated. Prefer the Migration Orchestrator and workload-specific cross-tenant migration pages linked above.

Source links (Microsoft Learn)

·       https://learn.microsoft.com/en-us/microsoft-365/enterprise/migration-orchestrator-5-running-migration?view=o365-worldwide

·       https://learn.microsoft.com/en-us/microsoft-365/enterprise/migration-orchestrator-6-post-migration?view=o365-worldwide

·       https://learn.microsoft.com/en-us/graph/api/resources/crosstenant-migration-overview?view=graph-rest-beta

·       https://learn.microsoft.com/en-us/microsoft-365/enterprise/migration-orchestrator-1-overview?view=o365-worldwide

Comments

Popular posts from this blog

Skype for Business, Lync and Exchange Web Services (EWS) and different DNS Domains- Exchange crawling e.g. for presence

How to hide users from GAL if they are AD Connect synchronized

Exchange x500 address x500:/o=ExchangeLabs