Exchange Online - Hybrid Mailbox Move falha com "SourceMailboxAlreadyBeingMovedTransientException"
By: Caio Ribeiro César e Romulo Farias
Este artigo discute sobre cenários em que uma migração para o Exchange Online falha com o erro "SourceMailboxAlreadyBeingMovedTransientException".
Anteriormente, comentamos sobre quais as possíveis falhas para um mailbox move em um ambiente Híbrido. Resumindo:
1) O comando New-MoveRequest é executado pelo administrador (Exchange Online). Este passo pode ser efetuado manualmente ou via batch (múltiplas mailboxes). O Exchange Online irá validar se o valor de MSExchMailboxGUID coincide com o objeto do Exchange OnPremises (criado no momento em que os objetos foram sincronizados via DirSync/AADSync/Azure AD Connect);
2) O Mailbox Replication Service (MRS) da cloud irá validar o pedido de move e irá iniciar uma conexão com o MRS Proxy do ambiente OnPremises (lembrando que mailbox moves em ambientes híbridos ou até cross prem dependem do MRSProxy para o move);
3) O conteúdo da mailbox é migrado via conexão MRSProxy (Exchange Web Services). A migração é feita na ordem: hierarquia de pastas, data (emails), configurações da conta / atributos e permissões;
4) Assim que o move de dados terminar, iremos para as últimas etapas de finalização. A source mailbox é bloqueada e então é feito o sync incremental (delta). Os dados restantes são copiados;
5) A mailbox só pode existir em um local (Exchange Online ou OnPrem). Convertemos os valores de atributos da conta em ambas as localizações:
- Exchange Online: o objeto Mail Enabled User (MEU) é convertido para uma Mailbox. HomeMDB, HomeMTA, msExchHomeServerName são atualizados com os valores da nuvem.
- Exchange OnPrem: o objeto Mailbox é convertido para um Mail Enabled User (MEU/RemoteMailbox). O valor de TargetAddress é atribuído com o email “tenant.mail.onmicrosoft.com” e os valores de HomeMDB, HomeMTA, msExchHomeServerName são configurados como “$NULL”.
6) A mailbox é liberada para acesso (usuário final).
O troubleshooting pode variar para cada passo efetuado no move mailbox. Cabe ao administrador reconhecer exatamente o processo da falha e então atuar na resolução.
No cenário deste post, inicialmente o administrador informa que ao mover algumas mailboxes para a cloud, recebemos o erro abaixo (MigrationMRSPermanentException):
Nota-se um link para o relatório de move mailbox do usuário em questão. Ao baixar o relatório, temos o erro:
25/10/2016 14:31:21 [CP1PR80MB1095] '' created move request.
25/10/2016 14:31:45 [BLUPR80MB0915] The Microsoft Exchange Mailbox Replication service 'BLUPR80MB0915.lamprd80.prod.outlook.com' (15.1.679.12 caps:07FFFF) is examining the request.
25/10/2016 14:31:45 [BLUPR80MB0915] Connected to target mailbox 'mailbox.onmicrosoft.com\ExchGuid_Is_Here* (Primary)', database 'LAMPR80DG078-db030', Mailbox server 'BLUPR80MB0935.lamprd80.prod.outlook.com' Version 15.1 (Build 679.0).
25/10/2016 14:31:47 [BLUPR80MB0915] Connected to source mailbox 'mailbox.onmicrosoft.com\ ExchGuid_Is_Here* (Primary)', database 'OnPrem-DB', Mailbox server 'mailbox_server_onprem.corp' Version 15.0 (Build 1178.0), proxy server 'exchserver_onprem.corp' 15.0.1178.0 caps:1F7FFFFFCB07FFFF.
25/10/2016 14:31:49 [BLUPR80MB0915] Transient error SourceMailboxAlreadyBeingMovedTransientException has occurred. The system will retry (1/620).
*alteramos o ExchGuid do objeto em questão.
Os resultados acima também podem ser coletados via PowerShell: Get-Migrationuser -Identity mailbox | Get-MigrationUserStatistics -Includereport -Debug
Revisando os logs:
1) Move request é criado:
25/10/2016 14:31:21 [CP1PR80MB1095] '' created move request.
25/10/2016 14:31:45 [BLUPR80MB0915] The Microsoft Exchange Mailbox Replication service 'BLUPR80MB0915.lamprd80.prod.outlook.com' (15.1.679.12 caps:07FFFF) is examining the request.
2) Target mailbox localizada no ambiente OnPremises:
25/10/2016 14:31:45 [BLUPR80MB0915] Connected to target mailbox ' (Primary)', database '', Mailbox server 'BLUPR80MB0915.lamprd80.prod.outlook.com' Version 15.1 (Build 679.0).
25/10/2016 14:31:47 [BLUPR80MB0915] Connected to source mailbox ' (Primary)', database ', Mailbox server '' Version 15.0 (Build 1178.0), proxy server '' 15.0.1178.0 caps:1F7FFFFFCB07FFFF.
3) Mailbox move falha com o erro "SourceMailboxAlreadyBeingMovedTransientException":
25/10/2016 14:31:49 [BLUPR80MB0915] Transient error SourceMailboxAlreadyBeingMovedTransientException has occurred. The system will retry (1/620).
Coletamos então o report em XML para maiores informações sobre o mailbox move.
Get-MoveRequestStatistics mailbox -IncludeReport | Export-Clixml mailbox.xml
Importamos o XML para filtrar os resultados pelo PowerShell:
$r = Import-Clixml C:\Users\user\Downloads\mailbox.xml
Filtramos as entradas para apenas falhas:
$r.Report.Failures
Message : Couldn't switch the mailbox into Sync Source mode.
This could be because of one of the following reasons:
Another administrator is currently moving the mailbox.
The mailbox is locked.
The Microsoft Exchange Mailbox Replication service (MRS) doesn't have the correct permissions.
Network errors are preventing MRS from cleanly closing its session with the Mailbox server. If this is the
case, MRS may continue to encounter this error for up to 2 hours - this duration is controlled by the TCP
KeepAlive settings on the Mailbox server.
Wait for the mailbox to be released before attempting to move this mailbox again. --> An error occurred while
saving the changes on the folder "". Error details: Failed, Property: [0x66180003] InTransitStatus,
PropertyErrorCode: AccessDenied, PropertyErrorDescription: . --> Property: [0x66180003] InTransitStatus,
PropertyErrorCode: AccessDenied, PropertyErrorDescription: .
MessageData :
DataContext :
DataContextData :
StackTrace :
InnerException : FolderSaveException: An error occurred while saving the changes on the folder " Error details: Failed, Property:
[0x66180003] InTransitStatus, PropertyErrorCode: AccessDenied, PropertyErrorDescription: . --> Property:
[0x66180003] InTransitStatus, PropertyErrorCode: AccessDenied, PropertyErrorDescription: .
Filtramos o report para “ .entries”:
$r.report.Entries
LocalizedString : 25/10/2016 12:15:44 [mailboxserver] Connected to source mailbox 'ExchangeGUID
(Primary)', database 'mailbox-DB', Mailbox server '' Version 15.0 (Build 1178.0),
proxy server '' 15.0.1178.0 caps:1F7FFFFFCB07FFFF.
CreationTime : 10/25/2016 2:15:44 PM
ServerName :
Type : Informational
TypeInt : 0
Flags : None
FlagsInt : 0
Message : Relinquishing job because the mailbox is locked. The job will attempt to continue again after 10/25/2016 12:20:44.
Agora que temos os dados necessários, vamos para o troubleshooting efetuado:
- Isolar o problema é a primeira etapa em resolução. Neste cenário, o move mailbox para a cloud está falhando. Para não focar em problemas de networking/EXO, tentamos mover a mailbox internamente para reproduzir a falha.
- Validamos que a mailbox não estava sendo movida por outro batch (EXO) ou até internamente entre Databases ou Exchange Servers utilizando o comando: Get-MoveRequest -Identity "user".
- Efetuamos a alteração do “TCP Keepalive” para 1800000. Para alteração deste valor, inserimos a seguinte chave no registro:
Path: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\
Value name: KeepAliveTime
Value Type: Dword Value
Value Type: 1800000 (Decimal)
Maiores informações: https://support.microsoft.com/pt-br/kb/2535656
- Executamos o comando “Test-MRSHealth” para testar a integridade do serviço de Mailbox Replication.
- Verificamos se o atributo adminCount da conta de computador do Exchange hybrid server não estava definido como “1”. Caso estivesse, signica que a conta é membro de um “protected group”. Neste caso, precisamos alterar o atributo pra “0” e reiniciar o Exchange Hybrid conforme descrito no artigo kb2975731;
- Verificamos as databases no Mailbox Server. Problemas de performance no Mailbox ou até problemas com a database, podem gerar este erro. Primeiro verificamos que as databases estavam montadas, posteriormente validamos problemas de performance no Mailbox Server. Então validamos que os discos de log do Mailbox server estavam cheios.
Conclusão
Quando o disco de log ou da própria Mailbox Database está cheio, ele não permite a escrita de informações, tornando então impossível o acesso do serviço MRS ao mailbox do usuário. Após liberarmos o espaço no disco de logs, a migração ocorreu com sucesso sem os erros de “acesso negado” ou “SourceMailboxAlreadyBeingMovedTransientException”.
___________________________________
Want this post to be translated? Please comment below.