Solucionar problemas durante a sincronização inicial
Este artigo fornece informações de solução de problemas para a integração de gravação dupla entre aplicativos de finanças e operações e o Dataverse. Especificamente, ele fornece informações sobre como solucionar problemas que podem ajudá-lo a corrigir problemas que podem acontecer durante a sincronização inicial.
Importante
Alguns dos problemas que este artigo aborda podem exigir a função de administrador do sistema ou as credenciais de administrador do locatário Microsoft Azure Active Directory (Azure AD). A seção para cada problema explica se uma função ou credenciais específicas são necessárias.
Verificar erros de sincronização inicial em um aplicativo de finanças e operações
Depois de habilitar os modelos de mapeamento, o status dos mapas deve estar em Execução. Se o status Não estiver em execução, ocorrerão erros durante a sincronização inicial. Para exibir os erros, selecione a guia Detalhes de sincronização inicial na página Gravação dupla.
Não é possível concluir a sincronização inicial: 400 Solicitação incorreta
Função necessária para corrigir o problema: administrador do sistema
A seguinte mensagem de erro pode ser exibida ao tentar executar o mapeamento e a sincronização inicial:
([Solicitação Incorreta], O servidor remoto retornou um erro: (400) Solicitação Incorreta.), a exportação do AX encontrou um erro.
Veja aqui um exemplo da mensagem de erro completa.
Dual write Initial Sync completed with status: Error. Following are the details:
Executed leg: From AX Financial dimensions to CRM msdyn_dimensionattributes
with exported records count: 0, ImportRecordsErrorCount: 0,
ImportRecordsInsertedCount: 0 and ImportRecordsUpdatedCount: 0
ErrorsDetails:
Dual write Initial sync failed
Message: ([Bad Request], The remote server returned an error: (400) Bad Request.), AX export encountered an error
Stacktrace: at
Microsoft.Dynamics.Integrator.QueryGenerator.AxClient.\<ExportAxPackage\>d__16.MoveNext()
in X:\\bt\\1024532\\repo\\src\\Core\\QueryGenerator\\AxClient.cs:line 265
\--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.D365.ServicePlatform.Context.ServiceContext.Activity.\<ExecuteAsync\>d__11\`2.MoveNext()
\--- End of stack trace from previous location where exception was thrown ---
Se esse erro ocorrer consistentemente e você não puder concluir a sincronização inicial, siga estas etapas para corrigir o problema.
- Entre na VM (máquina virtual) para o aplicativo de finanças e operações.
- Abra o console de gerenciamento da Microsoft.
- No painel Serviços, verifique se o serviço de estrutura de importação/exportação de dados do Microsoft Dynamics 365 está em execução. Reinicie-o se ele tiver sido interrompido, pois a sincronização inicial requer essa ação.
Erro de sincronização inicial: 403 Proibido
A seguinte mensagem de erro pode ser exibida durante sincronização inicial:
([Proibido], O servidor remoto retornou um erro: (403) Proibido.), a exportação do AX encontrou um erro
Para corrigir o problema, siga estas etapas.
- Entre no aplicativo de finanças e operações.
- Na página aplicativo do Azure Active Directory, exclua o cliente DtAppID e, em seguida, adicione-o novamente.
Falhas de autorreferência ou referência circular durante a sincronização inicial
Você poderá receber mensagens de erro se um dos seus mapeamentos tiver autorreferências ou referências circulares: Os erros são classificados nestas categorias:
- Erros em Fornecedores V2 para mapeamento de tabela msdyn_vendors
- Erros no mapeamento de Clientes V3 para a tabela Contas
Resolver erros em Fornecedores V2 para mapeamento de tabela msdyn_vendors
Você poderá encontrar erros de sincronização inicial para o mapeamento de Fornecedores V2 para msdyn_vendors se as tabelas tiverem linhas existentes com valores nas colunas PrimaryContactPersonId e InvoiceVendorAccountNumber. Esses erros ocorrem porque InvoiceVendorAccountNumber é uma coluna de auto-referência e PrimaryContactPersonId é uma referência circular no mapeamento do fornecedor.
As mensagens de erro recebidas terão o seguinte formulário.
Não foi possível resolver o GUID do campo: <campo>. A pesquisa não foi encontrada: <valor>. Experimente estas URLs para verificar se os dados de referência existem: https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/<entity>?$select=<field>&$filter=<field> eq <value>
Veja alguns exemplos:
- Não foi possível resolver o GUID do campo: msdyn_vendorprimarycontactperson.msdyn_contactpersonid. A pesquisa não foi encontrada: 000056. Experimente estas URLs para verificar se os dados de referência existem:
https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/contacts?$select=msdyn_contactpersonid.contactid&$filter=msdyn_contactpersonid eq '000056'
- Não foi possível resolver o GUID do campo: msdyn_invoicevendoraccountnumber.msdyn_vendoraccountnumber. A pesquisa não foi encontrada: V24-1. Experimente estas URLs para verificar se os dados de referência existem:
https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/msdn_vendors?$select=msdyn_vendoraccountnumber,msdyn_vendorid&$filter=msdyn_vendoraccountnumber eq 'V24-1'
Se alguma linha na tabela do fornecedor tiver valores nas colunas PrimaryContactPersonId e InvoiceVendorAccountNumber, siga estas etapas para concluir a sincronização inicial.
No aplicativo de finanças e operações, exclua as colunas PrimaryContactPersonId e InvoiceVendorAccountNumber do mapeamento e salve o mapeamento.
Na página de mapeamento de gravação dupla para Fornecedores V2 (msdyn_vendors), na guia Mapeamentos de tabela, no filtro esquerdo, selecione aplicativos de finanças e operações.Vendors V2. No filtro direito, selecione Sales.Vendor.
Procure primarycontactperson para encontrar a coluna de origem PrimaryContactPersonId.
Selecione Ações e depois Excluir.
Repita essas etapas para excluir a coluna InvoiceVendorAccountNumber.
Salve as alterações feitas no mapeamento.
Desative o controle de alterações para a tabela Fornecedor V2.
No espaço de trabalho Gerenciamento de dados, selecione o bloco Tabelas de dados.
Selecione a tabela Fornecedores V2.
No Painel de Ações, selecione Opções e depois selecione Controle de Alterações.
Selecione Desabilitar Controle de Alterações.
Execute a sincronização inicial para o mapeamento Fornecedores V2 (msdyn‑vendors). A sincronização inicial deve ser executada com êxito, sem erros.
Execute a sincronização inicial para o mapeamento de Contatos de CDS V2 (contatos). Você deverá sincronizar este mapeamento se desejar sincronizar a coluna de contato principal na tabela fornecedores, pois a sincronização inicial também precisa ser feita para as linhas de contatos.
Adicione as colunas PrimaryContactPersonId e InvoiceVendorAccountNumber para o mapeamento Vendors V2 (msdyn_vendors) e então salve o mapeamento.
Execute a sincronização inicial novamente para o mapeamento Fornecedores V2 (msdyn_vendors). Como o controle de alterações está desabilitado, todas as linhas serão sincronizadas.
Ative o controle de alterações novamente para a tabela Fornecedor V2.
Resolver erros no mapeamento de Clientes V3 para a tabela Contas
Você poderá encontrar erros de sincronização inicial para o mapeamento de Clientes V3 para Contas se as tabelas tiverem linhas existentes com valores nas colunas ContactPersonID e InvoiceAccount. Esses erros ocorrem porque InvoiceAccount é uma coluna de autorreferência e ContactPersonID é uma referência circular no mapeamento do fornecedor.
As mensagens de erro recebidas terão o seguinte formulário.
Não foi possível resolver o GUID do campo: <campo>. A pesquisa não foi encontrada: <valor>. Experimente estas URLs para verificar se os dados de referência existem: https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/<entity>?$select=<field>&$filter=<field> eq <value>
Veja alguns exemplos:
- Não foi possível resolver o guid do campo: primarycontactid.msdyn_contactpersonid. A pesquisa não foi encontrada: 000056. Experimente estas URLs para verificar se os dados de referência existem:
https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/contacts?$select=msdyn_contactpersonid.contactid&$filter=msdyn_contactpersonid eq '000056'
- Não foi possível resolver o guid do campo: msdyn_billingaccount.accountnumber. A pesquisa não foi encontrada: 1206-1. Experimente estas URLs para verificar se os dados de referência existem:
https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/accounts?$select=accountnumber.account&$filter=accountnumber eq '1206-1'
Se alguma linha na tabela cliente tiver valores nas colunas ContactPersonID e InvoiceAccount, siga estas etapas para concluir a sincronização inicial. Você pode usar essa abordagem para qualquer tabela pronta para uso, como Contas e Contatos.
No aplicativo de finanças e operações, exclua as colunas ContactPersonID e InvoiceAccount do mapeamento Clientes V3 (contas) e salve o mapeamento.
Na página de mapeamento de gravação dupla para Clientes V3 (contas), na guia Mapeamentos de tabela, no filtro esquerdo, selecione aplicativos de finanças e operações.Customers V3. No filtro direito, selecione Dataverse.Account.
Pesquise contactperson para encontrar a coluna de origem ContactPersonID.
Selecione Ações e depois Excluir.
Repita essas etapas para excluir a coluna InvoiceAccount.
Salve as alterações feitas no mapeamento.
Desative o controle de alterações para a tabela Clientes V3.
No espaço de trabalho Gerenciamento de dados, selecione o bloco Tabelas de dados.
Selecione a tabela Fornecedor V3.
No Painel de Ações, selecione Opções e depois selecione Controle de Alterações.
Selecione Desabilitar Controle de Alterações.
Execute a sincronização inicial para o mapeamento de Clientes V3 (contas). A sincronização inicial deve ser executada com êxito, sem erros.
Execute a sincronização inicial para o mapeamento de Contatos de CDS V2 (contatos).
Observação
Há dois mapas com o mesmo nome. Selecione o mapa que tenha a seguinte descrição na guia Detalhes: Gravação dupla para sincronização entre Contatos do Fornecedor V2 FO.CDS para CDS.Contacts. Exige novo pacote [Dynamics365SupplyChainExtended].
Adicione as colunas InvoiceAccount e ContactPersonId novamente no mapeamento Clientes V3 (contas) e depois salve o mapeamento. As colunas InvoiceAccount e ContactPersonId agora fazem parte do modo de sincronização ao vivo novamente. Na próxima etapa, você executará a sincronização inicial dessas colunas.
Execute a sincronização inicial novamente para o mapeamento de Clientes V3 (contas). Como o controle de alterações está desativado, os dados de InvoiceAccount e ContactPersonId serão sincronizados do aplicativo de finanças e operações para o Dataverse.
Para sincronizar os dados de InvoiceAccount e ContactPersonId do Dataverse para o aplicativo de finanças e operações, você deve usar um projeto de integração de dados.
No Power Apps, crie um projeto de integração de dados entre as tabelas Sales.Account e aplicativos de finanças e operações.Customers V3. A direção de dados deve ser do Dataverse para o aplicativo de finanças e operações. Como InvoiceAccount é um novo atributo na gravação dupla, talvez você queira ignorar a sincronização inicial desse atributo. Para obter mais informações, consulte Integrar dados no Dataverse.
A ilustração a seguir mostra um projeto que atualiza CustomerAccount e ContactPersonId.
Adicione os critérios da empresa no filtro do Dataverse, para que somente as linhas que correspondem aos critérios do filtro sejam atualizadas no aplicativo de finanças e operações. Para adicionar um filtro, selecione o botão de filtro. Em seguida, na caixa de diálogo Editar consulta, você pode adicionar uma consulta de filtro como _msdyn_company_value eq '<guid>'.
[NOTA] Se o botão de filtro não estiver presente, crie um tíquete de suporte para solicitar que a equipe de integração de dados habilite a capacidade de filtro no seu locatário.
Se você não inserir uma consulta de filtro para _msdyn_company_value, todas os linhas serão sincronizados.
A sincronização inicial das linhas está concluída.
No aplicativo de finanças e operações, ative o controle de alterações para a tabela Clientes V3.
Falhas de sincronização inicial em mapas com mais de 10 campos de pesquisa
Você pode receber a seguinte mensagem de erro ao tentar executar uma sincronização inicial com falha nos mapeamentos de Clientes V3 - Contas, Ordens de venda ou qualquer mapa com mais de 10 campos de pesquisa:
CRMExport: execução de pacote concluída. Descrição do Erro 5 Falha em tentativas de obter dados de https://xxxxx//datasets/yyyyy/tables/accounts/items?$select=accountnumber, address2_city, address2_country, ... (msdyn_company/cdm_companyid eq 'id')&$orderby=accountnumber asc.
Devido à limitação de pesquisa na consulta, a sincronização inicial falha quando o mapeamento da entidade contém mais de 10 pesquisas. Para obter mais informações, consulte Recuperar registros de entidades relacionadas com uma consulta.
Para corrigir esse problema, siga estas etapas:
- Remova campos de pesquisa opcionais do mapa da entidade de gravação dupla, de forma que o número de pesquisas seja de 10 ou menos.
- Salve o mapa e faça a sincronização inicial.
- Quando a sincronização inicial da primeira etapa for bem-sucedida, adicione os campos de pesquisa restantes e remova os campos de pesquisa que você sincronizou na primeira etapa. Certifique-se de que o número de campos de pesquisa seja 10 ou menos. Salve o mapa e execute a sincronização inicial.
- Repita essas etapas até que todos os campos de pesquisa sejam sincronizados.
- Adicione todos os campos de pesquisa de volta ao mapa, salve o mapa e execute-o com Ignorar sincronização inicial.
Esse processo habilita o mapa para o modo de sincronização em tempo real.
Problema conhecido durante sincronização inicial de endereços postais de terceiros e endereços eletrônicos de terceiros
A seguinte mensagem de erro pode ser exibida ao tentar executar a sincronização inicial de endereços postais de terceiros e endereços eletrônicos de terceiros:
O número do participante não foi encontrado no Dataverse.
Há um conjunto de intervalos em DirPartyCDSEntity em aplicativos de finanças e operações que filtra participantes do tipo Pessoa e Organização. Como resultado, uma sincronização inicial dos participantes do mapeamento CD – msdyn_parties não poderá sincronizar participantes de outros tipos, incluindo a Entidade Legal e a Unidade Operacional. Quando a sincronização inicial for executada para os Endereços postais de participante de CDs (msdyn_partypostaladdresses) ou Contatos do participante v3 (msdyn_partyelectronicaddresses), você poderá receber o erro.
Estamos trabalhando em uma correção para remover o intervalo de tipo de participante da entidade de finanças e operações, de forma que participantes de todos os tipos possam sincronizar o Dataverse com êxito.
Há problemas de desempenho durante a execução da sincronização inicial para clientes ou dados de contatos?
Se você tiver executado a sincronização inicial para os dados do Cliente e tiver os mapas do Cliente em execução e, em seguida, executar a sincronização inicial dos dados dos Contatos, talvez haja problemas de desempenho durante inserções e atualizações nas tabelas LogisticsPostalAddress e LogisticsElectronicAddress para endereços de Contato. As mesmas tabelas de endereço postal global e de endereço eletrônico são rastreadas para CustCustomerV3Entity e VendVendorV2Entity e tentativas de gravação dupla para criar mais consultas para gravar dados em outro lado. Se você já tiver executado a sincronização inicial para o Cliente, interrompa o mapa correspondente durante a execução da sincronização inicial dos dados de Contatos. Faça a mesma coisa para os dados do Fornecedor. Quando a sincronização inicial é concluída, você pode executar todos os mapas ignorando a sincronização inicial.
Tipo de dados float que tem um valor zero não pode ser sincronizado
A sincronização inicial pode falhar para registros que têm um valor zero em um campo de preço, como Valor de pagamento fixo ou Valor na moeda da transação. Nesse caso, você receberá uma mensagem de erro parecida com o seguinte exemplo:
Ocorreu um erro ao validar parâmetros de entrada: Microsoft.OData.ODataException: Não é possível converter o literal '000000' no tipo 'Edm.Decimal' esperado,...
O problema está com o valor Localidade de idioma em Formatos de dados de origem no módulo Gerenciamento de dados. Altere o valor do campo Localidade de idioma para en-us e tente novamente.