Risoluzione dei problemi durante la sincronizzazione iniziale

In questo articolo vengono fornite informazioni sulla risoluzione dei problemi di integrazione della doppia scrittura tra le app per la finanza e le operazioni e Dataverse. In particolare, fornisce informazioni che possono aiutarti a risolvere i problemi che possono verificarsi durante la sincronizzazione iniziale.

Importante

Alcuni problemi che questo articolo tratta potrebbero richiedere il ruolo di amministratore di sistema o le credenziali di amministratore del tenant Microsoft Azure Active Directory (Azure AD). La sezione per ogni problema spiega se sono richiesti ruolo o credenziali specifici.

Controllare gli errori di sincronizzazione iniziale in un'app per la finanza e le operazioni

Dopo aver abilitato i modelli di mapping, lo stato delle mappe deve essere In esecuzione. Se lo stato è Non in esecuzione, si sono verificati errori durante la sincronizzazione iniziale. Per visualizzare gli errori, selezionare la scheda Dettagli sulla sincronizzazione iniziale nella pagina Doppia scrittura.

Errore nella scheda dei dettagli della sincronizzazione iniziale.

Impossibile completare la sincronizzazione iniziale: 400 Richiesta non valida

Ruolo richiesto per risolvere il problema: amministratore di sistema

È possibile che venga visualizzato il seguente messaggio di errore quando si tenta di eseguire il mapping e la sincronizzazione iniziale:

(Richiesta non valida. Il server remoto ha restituito un errore: (400) Richiesta non valida). Si è verificato un errore nell'esportazione AX.

Di seguito è riportato un esempio del messaggio di errore completo.

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 questo errore si verifica in modo coerente e non è possibile completare la sincronizzazione iniziale, attenersi alla seguente procedura per risolvere il problema.

  1. Accedere alla macchina virtuale (VM) per l'app per la finanza e le operazioni.
  2. Aprire la console di gestione Microsoft.
  3. Nel riquadro Servizi, assicurarsi che il servizio framework di importazione esportazione dati di Microsoft Dynamics 365 sia in esecuzione. Riavviarlo se è stato arrestato, poiché la sincronizzazione iniziale lo richiede.

Errore di sincronizzazione iniziale: 403 Accesso negato

È possibile che venga visualizzato il seguente messaggio di errore durante la sincronizzazione iniziale:

(Accesso negato. Il server remoto ha restituito un errore: (403) Accesso negato). Si è verificato un errore nell'esportazione AX

Per risolvere il problema, procedere come segue.

  1. Accedere all'app per la finanza e le operazioni.
  2. Nella pagina Applicazioni Azure Active Directory, eliminare il client DtAppID, quindi aggiungerlo di nuovo.

Client DtAppID nell'elenco di applicazioni Azure AD.

Errori di riferimento automatico o di riferimento circolare durante la sincronizzazione iniziale

È possibile ricevere un messaggio di errore se uno dei mapping include riferimenti automatici o circulari. Gli errori rientrano in queste categorie:

Risolvere gli errori nel mapping della tabella Fornitori V2 per msdyn_vendors

È possibile che si verifichino errori di sincronizzazione iniziale per il mapping di Fornitori V2 all'entità msdyn_vendors se le tabelle hanno righe esistenti con valori nelle colonne PrimaryContactPersonId e InvoiceVendorAccountNumber. Questi errori si verificano perché InvoiceVendorAccountNumber è una colonna di riferimento automatico e PrimaryContactPersonId è un riferimento circolare nel mapping del fornitore.

I messaggi di errore che si ricevono avranno il seguente formato.

Impossibile risolvere il guid per il campo: <campo>. Valore del Registro di sistema <non trovato>. Prova questi URL per verificare se i dati di riferimento esistono: https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/<entity>?$select=<field>&$filter=<field> eq <value>

Di seguito sono riportati alcuni esempi.

  • Impossibile risolvere il guid per il campo: msdyn_vendorprimarycontactperson.msdyn_contactpersonid. Ricerca non trovata: 000056. Prova questi URL per verificare se i dati di riferimento esistono: https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/contacts?$select=msdyn_contactpersonid.contactid&$filter=msdyn_contactpersonid eq '000056'
  • Impossibile risolvere il guid per il campo: msdyn_invoicevendoraccountnumber.msdyn_vendoraccountnumber.. Ricerca non trovata: V24-1. Prova questi URL per verificare se i dati di riferimento esistono: https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/msdn_vendors?$select=msdyn_vendoraccountnumber,msdyn_vendorid&$filter=msdyn_vendoraccountnumber eq 'V24-1'

Se le righe nella tabella fornitore hanno valori nelle colonne PrimaryContactPersonId e InvoiceVendorAccountNumber, seguire questi passaggi per completare la sincronizzazione iniziale.

  1. Nell'app per la finanza e le operazioni, eliminare le colonne PrimaryContactPersonId e InvoiceVendorAccountNumber dal mapping e salvare il mapping.

    1. Nella pagina del mapping in doppia scrittura per Fornitori V2 (msdyn_vendors), nella scheda Mapping della tabella, nel filtro a sinistra, seleziona app per la finanza e le operazioni.Fornitori V2. Nel filtro di destra, selezionare Vendite.Fornitore.

    2. Cercare primarycontactperson per trovare la colonna di origine PrimaryContactPersonId.

    3. Selezionare Azioni, quindi selezionare Elimina.

      Eliminazione della colonna PrimaryContactPersonId.

    4. Ripetere questi passaggi per eliminare la colonna InvoiceVendorAccountNumber.

      Eliminazione della colonna InvoiceVendorAccountNumber.

    5. Salvare le modifiche nel mapping.

  2. Disattivare il rilevamento delle modifiche per la tabella Fornitori V2.

    1. Nell'area di lavoro Gestione dati selezionare la scheda Tabelle dati.

    2. Selezionare la tabella Fornitori V2.

    3. Nel riquadro azioni selezionare Opzioni, quindi selezionare Rilevamento modifiche.

      Selezione dell'opzione Rilevamento modifiche.

    4. Selezionare Disabilita rilevamento modifiche.

      Selezione di Disabilita rilevamento modifiche.

  3. Eseguire la sincronizzazione iniziale per il mapping Fornitori V2 (msdyn‑vendors). La sincronizzazione iniziale deve essere eseguita correttamente senza errori.

  4. Eseguire la sincronizzazione iniziale per il mapping Contatti CDS V2 (contatti). È necessario sincronizzare questo mapping se si desidera sincronizzare la colonna di contatto primario nella tabella fornitori perché la sincronizzazione deve essere eseguita anche per le righe di contatti.

  5. Aggiungere di nuovo le colonne PrimaryContactPersonId e InvoiceVendorAccountNumber al mapping Fornitori V2 (msdyn_vendors) e salvare il mapping.

  6. Eseguire di nuovo la sincronizzazione iniziale per il mapping Fornitori V2 (msdyn_vendors). Tutte le righe verranno sincronizzate perché il rilevamento delle modifiche è disabilitato.

  7. Attivare di nuovo il rilevamento delle modifiche per la tabella Fornitori V2.

Risolvere gli errori nel mapping della tabella Clienti V3 per Account

È possibile che si verifichino errori di sincronizzazione iniziale per il mapping dell'entità Clienti V3 all'entità Account se le tabelle hanno righe esistenti con valori nelle colonne ContactPersonID e InvoiceAccount. Questi errori si verificano perché InvoiceAccount è una colonna di riferimento automatico e ContactPersonID è un riferimento circolare nel mapping del fornitore.

I messaggi di errore che si ricevono avranno il seguente formato.

Impossibile risolvere il guid per il campo: <campo>. Valore del Registro di sistema <non trovato>. Prova questi URL per verificare se i dati di riferimento esistono: https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/<entity>?$select=<field>&$filter=<field> eq <value>

Di seguito sono riportati alcuni esempi.

  • Impossibile risolvere il guid per il campo: primarycontactid.msdyn_contactpersonid. Ricerca non trovata: 000056. Prova questi URL per verificare se i dati di riferimento esistono: https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/contacts?$select=msdyn_contactpersonid.contactid&$filter=msdyn_contactpersonid eq '000056'
  • Impossibile risolvere il guid per il campo: msdyn_billingaccount.accountnumber. Ricerca non trovata: 1206-1. Prova questi URL per verificare se i dati di riferimento esistono: https://focdsdevtest2.crm.dynamics.com/api/data/v9.0/accounts?$select=accountnumber.account&$filter=accountnumber eq '1206-1'

Se le righe nella tabella cliente hanno valori nelle colonne ContactPersonID e InvoiceAccount, seguire questi passaggi per completare la sincronizzazione iniziale. È possibile utilizzare questo approccio per tutte le tabelle predefinite come Account e Contatti.

  1. Nell'app per la finanza e le operazioni, elimina le colonne ContactPersonID e InvoiceAccount dal mapping Clienti V3 (account) e quindi salva il mapping.

    1. Nella pagina del mapping in doppia scrittura per Clienti V3 (account), nella scheda Mapping della tabella, nel filtro a sinistra, seleziona App per la finanza e le operazioni.Cliente V3. Nel filtro a destra, selezionare Dataverse.Account.

    2. Cercare contactperson per trovare la colonna di origine ContactPersonID.

    3. Selezionare Azioni, quindi selezionare Elimina.

      Eliminazione della colonna ContactPersonID.

    4. Ripetere questi passaggi per eliminare la colonna InvoiceAccount.

      Eliminazione della colonna InvoiceAccount.

    5. Salvare le modifiche nel mapping.

  2. Disattivare il rilevamento delle modifiche per la tabella Clienti V3.

    1. Nell'area di lavoro Gestione dati selezionare la scheda Tabelle dati.

    2. Selezionare la tabella Cliente V3.

    3. Nel riquadro azioni selezionare Opzioni, quindi selezionare Rilevamento modifiche.

      Selezione dell'opzione Rilevamento modifiche.

    4. Selezionare Disabilita rilevamento modifiche.

      Selezione di Disabilita rilevamento modifiche.

  3. Eseguire la sincronizzazione iniziale per il mapping Clienti V3 (account). La sincronizzazione iniziale deve essere eseguita correttamente senza errori.

  4. Eseguire la sincronizzazione iniziale per il mapping Contatti CDS V2 (contatti).

    Nota

    Sono presenti due mappe con lo stesso nome. Assicurarsi di selezionare la mappa con la descrizione Modello in doppia scrittura per la sincronizzazione tra Contatti fornitore FO.CDS V2 e CDS.Contatti. Necessita un nuovo pacchetto [Dynamics365SupplyChainExtended] nella scheda Dettagli.

  5. Aggiungere di nuovo le colonne ContactPersonID e InvoiceAccount al mapping Clienti V3 (account) e quindi salvare il mapping. Le colonne InvoiceAccount e ContactPersonId fanno di nuovo parte della modalità di sincronizzazione in tempo reale. Nel passaggio successivo, eseguire la sincronizzazione iniziale per queste colonne.

  6. Eseguire di nuovo la sincronizzazione iniziale per il mapping Clienti V3 (account). Poiché il rilevamento delle modifiche è disattivato, i dati per InvoiceAccount e ContactPersonId vengono sincronizzati dall'app per la finanza e le operazioni a Dataverse.

  7. Per sincronizzare i dati per InvoiceAccount e ContactPersonId da Dataverse all'app per la finanza e le operazioni, è necessario utilizzare un progetto di integrazione dei dati.

    1. In Power Apps, crea un progetto di integrazione dei dati tra le tabelle Sales.Account e App per la finanza e le operazioni.Clienti V3. La direzione dei dati deve essere da Dataverse all'app per la finanza e le operazioni. Poiché InvoiceAccount è un nuovo attributo in doppia scrittura, è possibile che si voglia ignorare la sincronizzazione iniziale. Per ulteriori informazioni, vedere Integrare dati in Dataverse.

      La figura seguente mostra un progetto che aggiorna CustomerAccount e ContactPersonId.

      Progetto di integrazione dei dati per aggiornare CustomerAccount e ContactPersonId.

    2. Aggiungere i criteri dell'azienda nel filtro sul lato Dataverse in modo che solo le righe che soddisfano i criteri di filtro verranno aggiornati nell'app per la finanza e le operazioni. Per aggiungere un filtro, selezionare il pulsante del filtro. Nella finestra di dialogo Modifica query, è possibile aggiungere una query filtro come _msdyn_company_value eq '<guid>'.

      [NOTA] Se il pulsante del filtro non è presente, creare un ticket di supporto per chiedere al team di integrazione dei dati di abilitare la funzionalità sul tenant.

      Se non si immette una query filtro per ‑msdyn‑company‑value, tutte le righe vengono sincronizzate.

      Aggiunta di una query filtro.

    La sincronizzazione iniziale delle righe è ora completata.

  8. Abilitare di nuovo il rilevamento delle modifiche nell'app per la finanza e le operazioni per la tabella Clienti V3.

Errori di sincronizzazione iniziale su mappe con più di 10 campi di ricerca

È possibile che venga visualizzato il seguente messaggio di errore quando si tenta di eseguire una sincronizzazione iniziale sui mapping Clienti V3 - Conti, Ordini cliente o qualsiasi mappa con più di 10 campi di ricerca:

CRMExport: esecuzione del pacchetto completata. Descrizione errore 5 Tentativi di recuperare dati da https://xxxxx//datasets/yyyyy/tables/accounts/items?$select=accountnumber, address2_city, address2_country, ... (msdyn_company/cdm_companyid eq 'id')&$orderby=accountnumber asc failed.

A causa della limitazione della ricerca sulla query, la sincronizzazione iniziale non riesce quando il mapping di entità contiene più di 10 ricerche. Per ulteriori informazioni, vedi Recuperare i record della tabella correlati con una query.

Per risolvere questo problema, procedere come segue:

  1. Rimuovi i campi di ricerca facoltativi dalla mappa di entità a doppia scrittura in modo che il numero di ricerche sia 10 o inferiore.
  2. Salva la mappa ed esegui la sincronizzazione iniziale.
  3. Quando la sincronizzazione iniziale per il primo passaggio ha esito positivo, aggiungi i campi di ricerca rimanenti e rimuovi i campi di ricerca sincronizzati nel primo passaggio. Assicurati che il numero di campi di ricerca sia 10 o inferiore. Salva la mappa ed esegui la sincronizzazione iniziale.
  4. Ripeti questi passaggi finché tutti i campi di ricerca non sono sincronizzati.
  5. Aggiungi tutti i campi di ricerca alla mappa, salva la mappa ed esegui la mappa con Salta sincronizzazione iniziale.

Questo processo abilita la mappa per la modalità di sincronizzazione in tempo reale.

Problema noto durante la sincronizzazione iniziale degli indirizzi postali e degli indirizzi elettronici della parte

È possibile che venga visualizzato il seguente messaggio di errore quando si tenta di eseguire la sincronizzazione iniziale degli indirizzi postali e degli indirizzi elettronici della parte:

Impossibile trovare il numero della parte in Dataverse.

C'è un intervallo impostato su DirPartyCDSEntity nelle app per la finanza e le operazioni che filtra le parti di tipo Persona e Organizzazione. Di conseguenza, una sincronizzazione iniziale del mapping Parti CDS – msdyn_parties non sincronizzerà parti di altri tipi, incluse Persona giuridica e Unità operativa. Quando la sincronizzazione iniziale viene eseguita per Indirizzi postali parte CDS (msdyn_partypostaladdresses) o Contatti parte V3 (msdyn_partyelectronicaddresses) potresti ricevere l'errore.

Stiamo lavorando a una soluzione per rimuovere l'intervallo del tipo di parte sull'entità finanza e operazioni in modo che le parti di tutti i tipi possano essere sincronizzate con Dataverse correttamente.

Ci sono problemi di prestazioni durante l'esecuzione della sincronizzazione iniziale per i dati dei clienti o dei contatti?

Se hai eseguito la sincronizzazione iniziale per i dati Cliente, hai le mappe Cliente in esecuzione e quindi esegui la sincronizzazione iniziale per i dati Contatti, potrebbero verificarsi problemi di prestazioni durante gli inserimenti e gli aggiornamenti delle tabelle LogisticsPostalAddress e LogisticsPostalAddress per gli indirizzi Contatto. Le stesse tabelle di indirizzi postali e indirizzi elettronici globali vengono monitorate per CustCustomerV3Entity e VendVendorV2Entity e la doppia scrittura cerca di creare più query per scrivere dati sull'altro lato. Se hai già eseguito la sincronizzazione iniziale per Cliente, interrompi la mappa corrispondente durante l'esecuzione della sincronizzazione iniziale per i dati Contatti. Fai la stessa cosa per i dati Fornitore. Al termine della sincronizzazione iniziale, puoi eseguire tutte le mappe saltando la sincronizzazione iniziale.

Il tipo di dati float con valore zero non può essere sincronizzato

La sincronizzazione iniziale potrebbe avere esito negativo per i record con valore zero per il prezzo del campo, ad esempio Importo di pagamento fisso o Importo nella valuta della transazione. In questo caso, verrà visualizzato un messaggio di errore simile al seguente esempio:

Si è verificato un errore durante la convalida dei parametri di input: Microsoft.OData.ODataException: Impossibile convertire il valore letterale '000000' nel tipo previsto 'Edm.Decimal',...

Il problema riguarda il valore Impostazioni locali lingua in Formati dati di origine nel modulo Gestione dati. Modificare il valore di Impostazioni locali lingua in en-us e riprovare.