Exchange 2013/2016 – Move request to specific server/database is failing with “Database doesn’t satisfy the constraint SecondCopy “

I had one very strange issue with multi DAG environment where move requests to only once specific server were failing. No matter of the Source Database, if the target database is on the affected server the move was is failing with :

Error: Mailbox changes failed to replicate.
Database doesn’t satisfy the constraint
SecondCopy because the commit time 19.09.2017 13:11:15 isn’t guaranteed by
replication time 31.12.9999 23:59:59.

In this article are you can wind more information regarding the Database contains.

There is alos tome reuirements there :

If the DataMoveReplicationConstraint is set to SecondCopy, then for a given replicated database at least one passive database copy must: 1.Be healthy.
2.Have a replay queue within 10 minutes of replay lag time.
3.Have a copy queue length less than 10 logs.
4.Have an average copy queue length less than 10 logs. The average copy queue length is computed based on the number of times the application has queried the database status.

All this were of course OK im case.

I checked replication health with Test-ReplicationHealth and found that the HighAvailability component was trowing errors that it is inactive :

RunspaceId : ac1e9231381-123-132-123123123
Server : server
Check : DatabaseAvailability
CheckDescription : Verifies that databases have sufficient availability. If this check fails, it means that some
databases are at risk of losing service.
Result : *FAILED*
Error : Failures:

servername:
Server ‘server.domain.com’component (HighAvailability) state is offline. If you need
to activate databases copies on this server, you can use Set-ServerComponentState -Component
‘HighAvailability’ -State ‘Active’ and retry Move-ActiveMailboxDatabase.

But get-ServerComponentsState is showing everything active for all servers

Also there was and error in Aplication log:

Log Name: Application
Source: MSExchange Mid-Tier Storage
Date: 28.12.2017 10:27:19
Event ID: 10011
Task Category: (10)
Level: Error
Keywords: Classic
User: N/A
Computer: server.domain.com
Description:
Replication for database MDB1 is not flushed yet. Constraint: SecondCopy, number of copies: 2, minimum replay time: 31.12.9999 23:59:59, commit time: 28.12.2017 10:27:19. Failure reason: Database 828ffdad-2323-4e18-9e5e-123123123 doesn’t satisfy the constraint SecondCopy because the commit time 28.12.2017 10:27: isn’t guaranteed by replication time 31.12.9999 23:59:59.

Accounting to this article there is two places where the Component states are saved:

Local – in the server Registry and remote-in Active directory. configuration name context.

when I get the remote ServerComponent states i see that the serverwideoffilnecomponent is inactive!

$components =Get-ServerComponentState servername -Component serverwideoffline

[PS] C:\Windows\system32>$components.Localstates

Requester State Component
——— —– ———
Functional Active serverwideoffline
Maintenance Active serverwideoffline

[PS] C:\Windows\system32>$components.Remotestates

Requester State Component
——— —– ——— ———
Functional Active ServerWideOffline
Maintenance Inactive ServerWideOffline

After setting the components to active again the issue in the test-ReplicationHealth report got resolved and with this the move request are also not failing any more.

Also the date in the event 10011 is no more 31.12.9999 23:59:59. but something in the near future 🙂