O365 – Erro ao mover mailboxes para a nuvem “CreatingFolderHierarchy CommunicationErrorTransientException”

By: Caio Ribeiro César

 

Quando falamos em mover mailboxes para a nuvem, devemos lembrar dos diversos processos envolvidos. Um troubleshooting de online move mailbox pode ser simples como aumentando a velocidade de seu upload ou um pouco mais complexo como este exemplo do artigo.

Primeiramente devemos validar o tipo de move, entender qual a tecnologia utilizada para o mailbox move em questão. Neste exemplo, estamos focando em um move híbrido (ou rich mailbox move), porém existem outros métodos de migração utilizados por outras empresas – para uma lista completa sugerimos que acesse este link.

Já que sabemos que é uma migração híbrida, alguns fatores podem estar envolvidos:

  • Exchange On-Premises Performance (para diversos problemas, não específico em latências);
  • Componentes Exchange On-Premises (Mailbox Replication Service, MRSProxy);
  • Permissões de Mailbox;
  • Organization Relationship;
  • Passos específicos do processo de move mailbox entre outros fatores.

Em resumo, o processo de mover mailboxes para a nuvem de um ambiente híbrido consiste em 9 passos:

  1. Início do processo (recebimento do comando new-remotemoverequest pela conexão MRSProxy e consequentemente MRS);
  2. Validação – MRS irá confirmar que o MSExchMailboxGuid é valido;
  3. Criação da mailbox que será migrada no ambiente da nuvem;
  4. MRSProxy conecta no ambiente local para encontrar a mailbox de origem (novamente utilizando o valor de MsExchMailboxGuid);
  5. O serviço de MRS localiza a mailbox de origem e passa a informação para o MRSProxy;
  6. O serviço de MRS da nuvem abre uma conexão Web Services com o CAS on-premises;
  7. A migração de dados é iniciada;
  8. Ao finalizar a cópia de dados, a mailbox do ambiente local é convertida para uma mailbox remota (ou mail enabled user “MEU”);
  9. A mailbox do ambiente da nuvem é convertida de mailbox remota (MEU) para mailbox.

O que seria um “MEU”? Quando temos um ambiente híbrido, não podemos ter duas mailboxes para um único usuário. O objeto em si possui um atributo único de MSExchMailboxGuid para ser referenciado pelos dois ambientes, porém em um ambiente ele é uma mailbox ativa e no outro um MEU.

O MEU nada mais é do que um objeto sem alguns valores de mailbox, como: HomeMDB/ homeMTA/msExchHomeServerName, porém com um email configurado em TargetAdrress apontando para a mailbox destino (neste caso, para a nuvem).

Agora que já sabemos algumas das especificações da arquitetura de um mailbox move de um ambiente híbrido, vamos ao problema.

Ao tentar efetuar um move local para a nuvem (ou vice-versa), o move parava em 10% e enviava uma mensagem de erro:

3/4/2014 2:56:14 PM [BLUPR05MB258] The Microsoft Exchange Mailbox Replication service 'BLUPR05MB258.namprd05.prod.outlook.com' (15.0.888.6 caps:0FFF) is examining the request.

3/4/2014 2:56:20 PM [BLUPR05MB258] Connected to target mailbox caioc.onmicrosoft.com\9eb4312d-de3d-4184-a924-db6a2e54120b (Primary)', database 'CA-MDB', Mailbox server 'CASCAIOC.COM' Version 14.3 (Build 123.0), proxy server 'CASCAIOC.COM' 14.3.151.0 caps:05FFFF.

3/4/2014 2:56:21 PM [BLUPR05MB258] Connected to source mailbox 'caiocsource.onmicrosoft.com\9eb4312d-de3d-4184-a924-db6a2e54120b (Primary)', database 'NAMPR05DG017-db022', Mailbox server 'BLUPR05MB258.namprd05.prod.outlook.com' Version 15.0 (Build 888.0).

3/4/2014 2:56:22 PM [BLUPR05MB258] Request processing continued, stage CreatingFolderHierarchy.

3/4/2014 2:56:22 PM [BLUPR05MB258] Initializing folder hierarchy from mailbox 'caioc.onmicrosoft.com\9eb4312d-de3d-4184-a924-db6a2e54120b (Primary)': 207 folders total.

3/4/2014 2:56:22 PM [BLUPR05MB258] Folder creation progress: 0 folders created in mailbox 'caioc.onmicrosoft.com\9eb4312d-de3d-4184-a924-db6a2e54120b (Primary)'.

3/4/2014 2:59:19 PM [BLUPR05MB258] Transient error CommunicationErrorTransientException has occurred. The system will retry (1/60).

Nesta mensagem de erro podemos entender que:

  • O processo em questão é o de criação da estrutura de hierarquia de pastas “CreatingFolderHierarchy”;
  • A mailbox que será migrada possui 207 pastas, porém o processo falha antes da migração de dados e nenhuma pasta é criada na mailbox;
  • A mensagem de erro é “CommunicationErrorTransientException”.

Temos um entendimento geral do que ocorre, porém precisamos de mais informações para poder criar um plano de ação que possa resolver o problema.

Executamos então o comando abaixo para a geração de um relatório mais específico (verbose) em um arquivo xml:

Get-MoveRequestStatistics caioc -IncludeReport | Export-Clixml caioc.xml

O arquivo gerado é relativamente grande e podemos levar muito tempo para a análise, portanto escolhemos criar um filtro, que nos trará os último erro recebido:

$stats = Import-CliXml caioc.xml

$stats.report.failures[-1]

Resultado:

Timestamp         : 3/4/2014 7:04:16 PM

FailureType       : CommunicationErrorTransientException

FailureCode       : -2146233088

MapiLowLevelError : 0

FailureSide       : Target

FailureSideInt    : 2

ExceptionTypes    : {Exchange, Transient, MRS, MRSTransient}

ExceptionTypesInt : {1, 2, 10, 11}

Message: The call to 'https://cascaioc.domain.com/EWS/mrsproxy.svc CASCAIOC.com (14.3.151.0 caps:05FFFF)' failed. Error details: The server was unable to process the request due to an internal error.  For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.. --> The server was unable to process the request due to an internal error.  For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.

MessageData       :

DataContext       : --------

                    Operation: IDestinationFolder.SetSearchCriteria

                    Operation: IDestinationFolder.SetSearchCriteria

                    OperationSide: Target

                    caioc.onmicrosoft.com\9eb4312d-de3d-4184-a924-db6a2e54120b (Primary)

Restriction: Restriction: AND[count:2, AND[count:7, NOT[CONTENT[ptag:0x1a001f(MessageClass…

                 Flags: Recursive, NonContentIndexed, FailOnForeignEID

                    --------

Search folder: '/Finder/Sent directly to me, entryId [len=46, data=00000000297ED05D0A0CD211921C006097D538A20100ACCB14784BE62B4283BA485D3DB115F1000008147CF50000], parentId                   [len=46, data=00000000297ED05D0A0CD211921C006097D538A20100007CA93C08CCD1119219006097D538A20000002882EC0000]

DataContextData   :

StackTrace       :    at Microsoft.Exchange.MailboxReplicationService.CommonUtils.CallWCFService[ExceptionT](Action serviceCall, String epAddress, Action`1 faultHandler, VersionInformation

                    serverVersion)

Neste erro podemos entender que o serviço de MRS está com problemas para copiar a pasta de pesquisa “Sent directly to me”, ao criar a hierarquia de conteúdo.

Uma Pasta de Pesquisa é uma pasta virtual que permite visualizar todos os itens de email que atendam a critérios específicos de pesquisa. Por exemplo, a Pasta de Pesquisa Emails “Não Lidos” permite visualizar todas as mensagens não lidas a partir de um único local, mesmo que as mensagens estejam localizadas em pastas diferentes de email.

Validamos e a pasta de pesquisa está visível para o usuário final:

image

 

Neste caso o usuário escolheu remover a pasta (nenhum email é removido, somente a pasta de pesquisa).

Outra opção é excluir todas as pastas de pesquisa do armazenamento de informações, executando o comando “outlook.exe /cleanfinders”:

image

Caso a pasta não apareça no outlook e a opção cleanfinders não resolva o problema, utilizamos então a ferramenta MFCMapi (modo online) para validar as permissões da pasta de pesquisa.

Efetue o download da ferramenta MFCMAPI e configure o perfil do Outlook como online (caso contrário o arquivo ost estará em uso e ao abrir a mailbox a ferramenta trará mensagens de erro).

Abra a ferramenta selecione a opção “Session” e “Logon and Display Store Table”. Selecione então o perfil desejado.

A mailbox aparecerá na GUI. Clique duas vezes na mailbox para que uma nova janela apareça:

image

Na sessão da esquerda, encontramos a pasta específica:

image

Ao clicar com o botão direito, existem as opções de remover a pasta ou resetar as permissões - ambas ações resolveriam o incidente.