Passamos por uma situação inusitada hoje pela manhã. Algo tão simples, mas com sintomas tão diversos que perdemos quase o dia até entender o que estava acontecendo.
SINTOMAS
No Dynamics CRM não estava aparecendo os titulos corretos, por exemplo, ao invés de no pedido aparecer "Pedido 0001 - Cliente Fulano - Produto X" estava "Pedido 0001 - Cliente {8888;;;} - Produto {8888...}", ou seja, nos locais onde deveriam aparecer os dados de relacionamentos apareciam os GUIDs.
Alem disso ao verificar o pedido estava os dados do cliente, mas no cliente não constava o pedido !!!
O outro sintoma foi que no Outlook dos usuários tudo parecia estar normal, mas não estavam recebendo emails. Como existe um plug-in do CRM e este estava se comportando de forma estranha, achamos ser este o problema nos outlooks.
Após tentar de tudo, reindexar tabelas, reiniciar servidor e outras doideiras tive um "estalo". Como temos dois servidores Exchange 2007, um na filial outro na matriz, redirecionando entre si verifiquei o Queue do Exchange da filial e estava a mensagem "451 Connection Dropped - Insuficient Resources on Server" no servidor da matriz.
CAUSA
Não podia ser nada mais simples que isso: O disco SO do Exchange da matriz estava com 300 KB livre. Isso explica o problema que eu encontrei no Queue, a questão de não estarem recebendo email na matriz. Porem, o que o CRM tem a ver com isso?
O CRM utiliza um componente chamado "Email Router" que faz a integração com o Exchange e com os plug-in nos Outlooks. Ao ter problema este componente passou a travar processos do serviço CRM Async e todo o sistema passou a ficar com comportamento instável.
SOLUÇÃO
Limpeza de disco no SO do exchange, reiniciamos o servidor Exchange e logo após o CRM. Tudo voltou a funcionar, os GUIDs desapareceram e ficaram com os dados normalmente, os pedidos aparecem nos clientes e os emails entraram todos de uma vez, mais de 300 até aquele momento.
Recentemente fizemos uma manutenção no Exchange e entre elas atualizamos as policies do dominio.
Após a alteração o Exchange não mais enviava emails entre os servidores nem externo, mas recebia normalmente.
Os serviços "System Attendant", "Information Store" e "Transport" ficavam em estado "Starting" ou não subiam. No Event Viewer apareciam erros diversos, mas destacamos o primeiro deles, que era o causador do problema:
Microsoft Exchange Active Directory Topology Service
Process MSEXCHANGEADTOPOLOGYSERVICE.EXE (PID=2068). Topology discovery failed, error 0x80040a02 (DSC_E_NO_SUITABLE_CDC). Look up the Lightweight Directory Access Protocol (LDAP) error code specified in the event description. To do this, use Microsoft Knowledge Base article 218185, "Microsoft LDAP Error Codes." Use the information in that article to learn more about the cause and resolution to this error. Use the Ping or PathPing command-line tools to test network connectivity to local domain controllers.
Após procurar no KB citado não encontramos qualquer referencia de como resolver o problema, mas em um outro KB descobrimos que o Exchange precisa ter autorização na leitura e gerenciamento dos logs de segurança. Portanto, basta ter a permissão na politica da figura abaixo.
Porem, na referencia que encontramos havia uma maneira absurda de resolver, colocar a conta do computador Exchange no grupo Domain Admins, o que obviamente é uma brecha de segurança enorme pensando que um virus ou outro software instalado no Exchange poderia detonar todo o AD ou o ambiente sem precisar de mais nada.
O ideal neste caso é colocar a conta do COMPUTADOR do Exchange na politica "Manage auditing and security log", o que dá ao Exchange o direito necessário para auditar seus serviços no Event Log do Windows sem compromoter a segurança. Se o seu servidor estiver em uma rede com mais do que Exchange 2007 coloque ele no grupo "Exchange Enterprise Server".
Portanto, uma recomendação: NUNCA DÊ PERMISSÃO A DOMAIN ADMINS SÓ PORQUE ALGUEM FALOU OU ALGO NÃO ESTÁ FUNCIONANDO, ANALISE E UTILIZE UMA SOLUÇÃO MAIS CONSISTENTE E SEGURA.