O365 – Exchange 2007 Staged Mailbox move falhando com “SourceRecipientDoesNotExistException”

By: Caio Ribeiro César e Cesar Augusto Hara

Após um longo período de tempo, recebemos um chamado referente à uma migração “Staged” para o Exchange Online.

Como o nome sugere, uma migração “Staged” é feita em estágios, etapas. Pode parecer um cenário simples com poucos pontos de falha, porém temos que entender um pouco como esta migração funciona antes de iniciar qualquer tipo de troubleshooting.

Considerações deste tipo de migração:

  1. Os objetos são provisionados via AD<>AAD. Ou seja, mandatório que exista um AADConnect no ambiente;
  2. Algumas funcionalidades cross premises não são suportadas (tais como FreeBusy, Cross Prem Archive , Hybrid Mailbox Permission entre outros) ;
  3. Não existe um mailbox offboard feito nativamente via Exchange (assim como temos no ambiente híbrido);
  4. Não é uma solução “longo termo”. O decomission dos servidores on-premises pode ser feito após a migração.

Resumindo a migração “Staged” em etapas:

(mais detalhes aqui)

  1. Provisionamento de objetos
  2. Mailbox Permission para o administrador (Full Access)
  3. Arquivo CSV
  4. Criação do endpoint para conexão (Outlook Anywhere do ambiente On-Premises deve estar configurado e disponibilizado externamente – este é o ponto de falha mais comum em migrações staged).
  5. Migração
  6. Alteração do DNS (MX)
  7. Completar a migração
  8. Clean Up (remoção de batches, decommission).

Vamos então ao cenário.

Cliente informa que a maioria das caixas de correio foram migradas com êxito via Staged Migration, porém algumas não estão sendo migradas.

Para ter o foco na coleta de dados e troubleshooting, isolamos o problema para uma específica. Inicialmente, coletamos o erro que estava aparecendo na interface gráfica do Exchange Online:

 SourceRecipientDoesNotExistException: Não foi possível encontrar o endereço de email de origem caioc@contoso.com.br no domínio local. Relatório: caioc@contoso.com.br Baixe o relatório para esse usuário

Criamos um plano de ação de coleta de dados:

1. Para confirmar que o SMTP é valido no ambiente On-Premises, executados a coleta do comando

 Get-Mailbox -Id caioc@contoso.com.br | fl

Resultado: SMTP válido e existente, mailbox ativa no Exchange 2007.

2. Coletamos os relatórios enviados para o email do administrador que estava efetuando o move mailbox.

MailboxesCreated.csv

MailboxCreationErrors.csv

EmailMigrationErrors.csv

Resultado:  o relatório mostra o Status “SyncedWithErrors”, com o mesmo erro da interface gráfica.

3. Coletamos relatórios verbose para o batch e para o usuário em questão.

 Get-MigrationBatch -identity  |fl *status*
Get-MigrationBatch  -IncludeReport -Diagnostic | Export-clixml batchname_report.xml
Get-MigrationUser -Identity caioc@contoso.com.br| fl 
Get-MigrationUserStatistics -Identity caioc@contoso.com.br -IncludeReport | Export-Clixml report.xml

Resultado: todos os logs informaram a mesma mensagem de erro:

 SerializationData         : {0, 1, 0, 0...}
RunspaceId                : 48fbab7-5386-473b-9e30-22c7cb09cc02
Identity                  : caioc@contoso.com.br
Guid                      : e8764567812df-08bd-433a-9987652-cd6e7eb2e1a0
Identifier                : caioc@contoso.com.br
BatchId                   : migracao
MailboxIdentifier         : caioc@contoso.com.br
MailboxEmailAddress       : 
RecipientType             : Mailbox
SkippedItemCount          : 0
SyncedItemCount           : 0
MailboxGuid               : 00000000-0000-0000-0000-000000000000
MailboxLegacyDN           : 
RequestGuid               : 00000000-0000-0000-0000-000000000000
LastSuccessfulSyncTime    : 
Status                    : Failed
State                     : Failed
Flags                     : None
WorkflowStep              : Provisioning
WorkflowStage             : Discovery
TriggeredAction           : None
ErrorSummary              : Não foi possível encontrar o endereço de email de origem caioc@contoso.com.br no domínio local.
StatusSummary             : Failed
LastSubscriptionCheckTime : 
SupportedActions          : Start, Set, Remove
IsValid                   : True
ObjectState               : Unchanged
 SerializationData : {0, 1, 0, 0...}
CreationTime : 5/8/2018 4:20:31 PM
ServerName : SC1P215MB0907
Type : Error
TypeInt : 4
Flags : Failure, Fatal, Target
FlagsInt : 2066
Message : User 'caioc@contoso.com.br' failed migration: The source email address caioc@contoso.com.br couldn't be found in the on-premises domain.
MessageData                : {0, 1, 0, 0...}
Failure : SourceRecipientDoesNotExistException: Nao foi possível encontrar o endereço de email de origem caioc@contoso.com.br no domínio local.                   
LocalizedString :  User 'caioc@contoso.com.br' failed migration: The source email address caioc@contoso.com.br couldn't be found in the on-premises domain.

Efetuamos um query local no AD e conseguimos encontrar a mailbox utilizando o valor de SMTP como Identifier. A partir deste ponto, voltamos ao entendimento da teoria do mailbox move em um ambiente staged.

Como fomos informados que outras contas foram movidas sem problemas, tentamos não focar o troubleshooting no Outlook Anywhere em si (networking, endpoint, test migration connectivity).

Discutimos o cenário em questão e lembramos que nesta migração, o Exchange Online irá se comunicar via NSPI com o ambiente OnPremises para localizar a mailbox (diferente de um ambiente híbrido que utilizaria o serviço de EWS via MRSProxy):

O objeto estava sincronizado sem problema algum para o Exchange Online via AADConnect, então focamos na análise de dados utilizando um método de comparação e a matriz de soluções de suporte.

Utilizando este método, conseguimos isolar o problema para uma possível falha ou configuração do objeto em si. Comparamos o get-mailbox de uma conta que foi migrada com sucesso vs. a que está falhando e encontramos uma diferença na configuração abaixo (opção “Compare” do Office Word):

 HiddenFromAddressListsEnabled : True

Se o objeto está “Hidden”, logo o Exchange Online não conseguirá efetuar o move via Outlook Anywhere :).

Após esta alteração, efetuamos um novo batch de migração para o usuário, desta vez com sucesso.