Skip to content

Mailbox move failure – Troubleshoot and Fix

We have to offboard a mailbox from Exchange Online to Exchange on-premises. After following the steps, we get a mailbox move failure at the end, and the mailbox will not complete. Why is the mailbox move failing, and what is the solution? Let’s look at how to troubleshoot a mailbox move that fails.

StatusDetail TransientFailure

Let’s connect to Exchange Online PowerShell and follow the article move mailbox from Exchange Online to on-premises. However, an error shows up at the end of the migration, and the mailbox will not finalize.

The StatusDetail shows:

  • TransientFailure
  • TransientFailureTarget
PS C:\> Get-MoveRequest | Get-MoveRequestStatistics

DisplayName    StatusDetail           TotalMailboxSize           TotalArchiveSize       PercentComplete
-----------    ------------           ----------------           ----------------       ---------------
Boris Campbell TransientFailureTarget 2.279 MB (2,389,872 bytes) 3.235 KB (3,313 bytes) 100

We did suspend and resume the mailbox move request, which helps in most cases. But it didn’t this time, and the error is still there.

So what is happening, and how to fix the mailbox move fail? Let’s have a better look at the move status details.

Troubleshoot mailbox move failure

Add the -IncludeReport parameter to return additional information about the mailbox move. Store the mailbox move report in the $stats variable.

PS C:\> $stats = Get-MoveRequestStatistics "boris.campbell@exoip.com" -IncludeReport

Get all move request failures and their count.

PS C:\> $stats.report.Failures | group FailureType | fl


Name   : CannotEnterFinalizationTransientException
Count  : 36
Group  : {CannotEnterFinalizationTransientException: Cannot enter finalization because Data Guarantee is lagging behind by more than 00:05:00. Failure: Database b6a840a4-670e-43d7-9ecc-1d8b99e66ba4 doesn't satisfy the constraint SecondCopy
         because the commit time 5/28/2022 9:13:28 AM isn't guaranteed by replication time 5/28/2022 9:12:54 AM.., CannotEnterFinalizationTransientException: Cannot enter finalization because Data Guarantee is lagging behind by more than
         00:05:00. Failure: Database b6a840a4-670e-43d7-9ecc-1d8b99e66ba4 doesn't satisfy the constraint SecondCopy because the commit time 5/28/2022 9:14:02 AM isn't guaranteed by replication time 5/28/2022 9:12:54 AM..,
         CannotEnterFinalizationTransientException: Cannot enter finalization because Data Guarantee is lagging behind by more than 00:05:00. Failure: Database b6a840a4-670e-43d7-9ecc-1d8b99e66ba4 doesn't satisfy the constraint SecondCopy because
         the commit time 5/28/2022 9:14:38 AM isn't guaranteed by replication time 5/28/2022 9:12:54 AM.., CannotEnterFinalizationTransientException: Cannot enter finalization because Data Guarantee is lagging behind by more than 00:05:00.
         Failure: Database b6a840a4-670e-43d7-9ecc-1d8b99e66ba4 doesn't satisfy the constraint SecondCopy because the commit time 5/28/2022 9:15:12 AM isn't guaranteed by replication time 5/28/2022 9:12:54 AM.....}
Values : {CannotEnterFinalizationTransientException}

Get full details of the last failure.

PS C:\> $stats.report.Failures[0]


Timestamp         : 5/28/2022 10:19:03 AM
FailureType       : CannotEnterFinalizationTransientException
FailureHash       : 317e
FailureCode       : -2146233088
MapiLowLevelError : 0
FailureSide       :
FailureSideInt    : 0
ExceptionTypes    : {CannotEnterFinalization, MRSExpected, MRS, MRSTransient...}
ExceptionTypesInt : {632, 14, 10, 11...}
WorkItem          : CheckDataGuaranteeIfNeeded
Message           : Cannot enter finalization because Data Guarantee is lagging behind by more than 00:05:00. Failure: Database b6a840a4-670e-43d7-9ecc-1d8b99e66ba4 doesn't satisfy the constraint SecondCopy because the commit time 5/28/2022
                    10:14:07 AM isn't guaranteed by replication time 5/28/2022 10:07:15 AM..
MessageData       :
DataContext       : --------
                    >>>> Current WorkItem: CheckDataGuaranteeIfNeeded, Scheduled WorkItems: PostContentVerificationBadItemCheck(P:0,R:-63789329909495,S:63789329909495,C:0,D:0);
                    CheckDataGuaranteeIfNeeded(P:0,R:-63789329909495,S:63789329909495,C:374,D:0); BeginJob(P:0,R:0,S:0,C:0,D:0); ConfigureProviders(P:0,R:-63789329939897,S:63789329939897,C:0,D:0);
                    BeforeConnections(P:0,R:-63789329939897,S:63789329939897,C:0,D:0); CheckTriggerRecoveryActions(P:0,R:-63789329939897,S:63789329939897,C:0,D:0); MakeConnections(P:0,R:-63789329939897,S:63789329939897,C:2016,D:0);
                    StartMove(P:0,R:-63789329941913,S:63789329941913,C:264,D:0); IncrementalSync(P:0,R:-63789329942178,S:63789329942178,C:751,D:0); PostContentVerificationBadItemCheck(P:62,R:-63789329942929,S:63789329942929,C:0,D:0)
DataContextData   :
StackTrace        :    at Microsoft.Exchange.MailboxReplicationService.MoveBaseJob.CheckDataGuaranteeIfNeeded()
                       at Microsoft.Exchange.MailboxReplicationService.Job.ExecuteWorkItemCallback(WorkItem workItem)
InnerException    :
UnknownElements   :
UnknownAttributes :
XmlSchemaType     :

Solution for mailbox move failure

Looking at the Message, it shows:

Message : Cannot enter finalization because Data Guarantee is lagging behind by more than 00:05:00. Failure: Database b6a840a4-670e-43d7-9ecc-1d8b99e66ba4 doesn’t satisfy the constraint SecondCopy because the commit time 5/28/2022 10:14:07 AM isn’t guaranteed by replication time 5/28/2022 10:07:15 AM..

This happens in the mailbox database b6a840a4-670e-43d7-9ecc-1d8b99e66ba4 (which is DB01).

Verify mailbox database GUID

Run Exchange Management Shell as administrator and identify the mailbox database GUID.

[PS] C:\>Get-MailboxDatabase "b6a840a4-670e-43d7-9ecc-1d8b99e66ba4" | ft -AutoSize

Name Server    Recovery ReplicationType
---- ------    -------- ---------------
DB01 EX01-2019 False    Remote

Get DataMoveReplicationConstraint value

The DataMoveReplicationConstraint parameter specifies the throttling behavior for high availability mailbox moves.

Run the Get-MailboxDatabase cmdlet and get the mailbox database DB01 DataMoveReplicationConstraint value.

Note: The DataMoveReplicationConstraint value is by default set to SecondCopy.

[PS] C:\>Get-MailboxDatabase "DB01" | ft Name,Guid,DataMoveReplicationConstraint

Name Guid                                 DataMoveReplicationConstraint
---- ----                                 -----------------------------
DB01 b6a840a4-670e-43d7-9ecc-1d8b99e66ba4                    SecondCopy

Set DataMoveReplicationConstraint to None

Run the Set-MailboxDatabase cmdlet and set the mailbox database DataMoveReplicationConstraint to None.

[PS] C:\>Set-MailboxDatabase "DB01" -DataMoveReplicationConstraint None

Get mailbox move request statistics

Wait a minute and verify the mailbox move status. It shows that it completed the mailbox move to Exchange on-premises successfully.

PS C:\> Get-MoveRequest | Get-MoveRequestStatistics

DisplayName    StatusDetail TotalMailboxSize           TotalArchiveSize       PercentComplete
-----------    ------------ ----------------           ----------------       ---------------
Boris Campbell Completed    2.279 MB (2,389,872 bytes) 3.235 KB (3,313 bytes) 100

Set DataMoveReplicationConstraint to SecondCopy

Don’t forget to set the DataMoveReplicationConstraint value on the mailbox database back to the default SecondCopy value.

[PS] C:\>Set-MailboxDatabase "DB01" -DataMoveReplicationConstraint SecondCopy

Read more: Remove move request fails in Exchange Server »

Conclusion

You learned how to troubleshoot mailbox move failures and fix them. First, use the -IncludeReport parameter when retrieving the mailbox move request statistics to get all the details. Next, implement the fix. After that, the mailbox move will complete successfully.

Did you enjoy this article? You may also like New-MigrationBatch or New-MoveRequest in Exchange. Don’t forget to follow us and share this article.

ALI TAJRAN

ALI TAJRAN

ALI TAJRAN is a passionate IT Architect, IT Consultant, and Microsoft Certified Trainer. He started Information Technology at a very young age, and his goal is to teach and inspire others. Read more »

This Post Has One Comment

  1. Hi Ali. Love the work that you do. I am having some failures while migrating some users from Exchange Online back to Exchange OnPrem. I have had a couple of these and the solution so far is to set the move in a loop that retries until it completes. This seems to work but takes several days to a week on just a 5GB mailbox. In reading this article, I tried some of your “get” steps. (below are the results. Since the error is different from what you had, I did not do any of the steps to set “[PS] C:\>Set-MailboxDatabase “DB01″ -DataMoveReplicationConstraint None”. Let me know what you think. Thanks, Mike.

    Name : StoragePermanentException
    Count : 60
    Group : {StoragePermanentException: –> , StoragePermanentException: –> , StoragePermanentException: –> ,
    StoragePermanentException: –> , StoragePermanentException: –> , StoragePermanentException: –> ,
    StoragePermanentException: –> , StoragePermanentException: –> , StoragePermanentException: –> ,
    StoragePermanentException: –> , StoragePermanentException: –> , StoragePermanentException: –> ,
    StoragePermanentException: –> , StoragePermanentException: –> , StoragePermanentException: –> ,
    StoragePermanentException: –> …}
    Values : {StoragePermanentException}

    Name : TooManyTransientFailureRetriesPermanentException
    Count : 1
    Group : {TooManyTransientFailureRetriesPermanentException: The job encountered too many transient failures (61) and
    is quitting. The most common failure is StoragePermanentException with the hit count 60.}
    Values : {TooManyTransientFailureRetriesPermanentException}

Leave a Reply

Your email address will not be published. Required fields are marked *