Track and prevent migration data loss in Exchange Online
When migrating to Exchange Online, the migration process might reveal inconsistencies that pose a risk of data loss. Such inconsistencies can occur during almost any migration, whether from on-premises Exchange Server, Public Folders, PST file imports, Google Workspace (formerly G Suite), or third-party IMAP servers. The migration process tracks and reports on any possible instances of data loss by generating a DataConsistencyScore.
Migration and Data Consistency Score
When you attempt a migration, any inconsistencies between the source and target data stores will count towards the DataConsistencyScore. This score is then used to determine whether an Exchange Online migration will complete successfully or if intervention is needed.
There are 4 possible grades that are derived from the DataConsistencyScore.
Grade | Description | Approval Required? |
---|---|---|
Perfect | No inconsistencies noted during migration. | No approval is required. |
Good | At least 1 inconsistency noted, but the data loss wasn't impactful. For example, if only metadata or folder permissions were lost during migration. | No approval is required |
Investigate | A small amount of noticeable data loss was detected, caused by some common inconsistency types. | Approval of skipped items is required for migration types that have a built-in finalization phase, such as Hybrid migrations or Google Workspace onboarding. |
Poor | Major data loss was detected. | Contact Microsoft Support for assistance. Approval of skipped items is required for migration types that have a built-in finalization phase. |
You can view the DataConsistencyScore for your migration in the Exchange admin center at a per-user and per-batch level. You can also find it using PowerShell cmdlets; the DataConsistencyScore property exists on MigrationBatch, MigrationUser, and RequestStatistics objects.
How the DataConsistencyScore is calculated
There are various thresholds used to determine the DataConsistencyScore. Microsoft is constantly tuning these thresholds to ensure that problematic data loss doesn't occur during migrations. The details of these thresholds aren't presented to Exchange Online administrators.
For batches, the DataConsistencyScore is equal to the worst DataConsistencyScore of any user within that batch. This behavior helps administrators know immediately whether there's any data loss that should be investigated.
Guidance for grades of Investigate or Poor
For migrations from third-party IMAP servers, PST file imports, or on-premises Exchange Server using Cutover or Staged Exchange Migration, there's no need to approve the set of skipped items. Approval of migrations with a score of Investigate or worse is required for the completion of Remote Move, Public Folder, and Google Workspace migrations.
If the migration receives a grade of Investigate, then you can approve skipped items manually to allow the migration to succeed.
If you're using batches, then run:
Set-MigrationBatch -ApproveSkippedItems or Set-MigrationUser -ApproveSkippedItems
If you're using MoveRequests directly, then run:
Set-MoveRequest -SkippedItemApprovalTime $([DateTime]::UtcNow)
For a batch scored as Investigate, approving the migration allows you to complete all migrations in the batch with a score of Perfect, Good, or Investigate.
For a batch scored as Poor, approving the migration allows you to complete all migrations in the batch with a score of Perfect, Good, or Investigate, but won't approve any migration in the batch with a score of Poor.
If the migration fails with a grade of Poor, you can't force the migration to succeed. Please contact Microsoft Support for assistance.
How to see which items weren't migrated in EAC
In the Exchange admin center, go to Migration.
Select the batch you would like to inspect. Click View details in the information pane on the right.
Select the user you would like to inspect. Select Skipped item details in the information pane on the right.
Using Exchange Online PowerShell
Determine the identity of the user you wish to investigate.
Run the following commands:
$userStats = Get-MigrationUserStatistics -Identity user@fabrikaminc.net -IncludeSkippedItems $userStats.SkippedItems | ft -a Subject, Sender, DateSent, ScoringClassifications
Inspect the information about skipped items provided in the SkippedItems property on the userStats object.
How to opt in or opt out of using DataConsistencyScore
The BadItemLimit and LargeItemLimit parameters are still currently available as options. You can specify a value for the BadItemLimit and LargeItemLimit parameters when using cmdlets or you can fill in the BadItemLimit or LargeItemLimit box in the EAC. When you specify a BadItemLimit or LargeItemLimit, the old migration method is used and the DataConsistencyScore isn't calculated.
If neither the BadItemLimit parameter nor the LargeItemLimit parameter is specified, or if the boxes in the EAC wizard are left blank, then the new migration method and DataConsistencyScore are used.