Synchronisation initiale

Effectué

La synchronisation initiale avant de démarrer la double écriture sur une table gère les données existantes des deux côtés de l’intégration entre les applications de finances et d’opérations et Microsoft Dataverse. Elle copie les données existantes d’une application à une autre de manière bidirectionnelle en tant qu’appels d’API utilisant CSV Unicode comme format de fichier. Une synchronisation initiale entre les environnements des applications de finances et d’opérations et Dataverse a un projet d’exportation et d’importation correspondant.

Pour commencer à résoudre les problèmes liés à ce processus, ce projet d’exportation et d’importation est le point de départ idéal. Assurez-vous qu’un projet d’importation ou d’exportation de données peut être terminé et que l’implémentation est réussie. Si l’implémentation d’un projet d’importation ou d’exportation de données échoue, vous devez rechercher les problèmes connus ou les journaux d’événements associés au service.

Le redémarrage du service à partir de Microsoft Dynamics Lifecycle Services pour un environnement des applications de finances et d’opérations est une étape courante permettant de résoudre les problèmes liés à l’infrastructure d’importation et d’exportation, outre la confirmation des détails d’implémentation des tâches.

Si les tâches et packages d’importation et d’exportation de données peuvent être importés avec succès et que vous avez résolu les problèmes existants, vous pouvez réexécuter l’implémentation des packages de données en les recherchant sur l’écran Espace de travail Gestion des données > Double écriture, en sélectionnant l’onglet des détails de la synchronisation initiale dans la liste, puis en cliquant avec le bouton droit pour afficher les options de réexécution.

Voici les deux options de réexécution :

  • Relancer l’exécution, qui réexécute l’intégralité de la synchronisation initiale pour le package que vous avez sélectionné pour toutes les implémentations.
  • Relancer l’exécution sans erreur, qui exécute la synchronisation initiale pour les enregistrements non présents dans l’état erroné ou les données manquantes.

De plus, vous pouvez modifier la possibilité d’effectuer une transmission complète ou incrémentielle pour une synchronisation initiale en fonction du suivi des modifications et s’il est désactivé ou activé. Si vous souhaitez disposer de transmissions incrémentielles de données modifiées depuis la dernière synchronisation initiale, vous devez activer le suivi des modifications. Sinon, si vous ne souhaitez pas effectuer cette action, vous pouvez désactiver le suivi des modifications et le système effectuera une synchronisation initiale complète lors de la prochaine demande.

Problèmes de champ à référence circulaire

La meilleure façon d’expliquer les champs à référence circulaire est de donner un exemple.

Champ A Champ B
Valeur 1 Valeur 3
Valeur 2 Null
Valeur 3 Valeur 4
Valeur 4 Valeur 1

Dans cet exemple, la première valeur du Champ B fait référence à la troisième valeur du Champ A. Si vous effectuez une synchronisation initiale avec ces données, la première tentative échoue, car la troisième valeur du Champ A n’a pas été synchronisée ; par conséquent, le Champ B ne peut pas non plus renseigner la troisième valeur. Quelques mappages standard complètent ce processus, où vous disposez d’une table contenant des enregistrements à référence circulaire.

Pour résoudre ce problème, procédez comme suit :

  1. Supprimez le Champ B du mappage.
  2. Enregistrez le nouveau mappage.
  3. Désactivez le suivi des modifications.
  4. Synchronisez le mappage uniquement avec les données du Champ A.

Une fois le Champ A synchronisé, vous pouvez rajouter le Champ B dans le mappage, puis effectuer une autre synchronisation initiale. Pour la synchronisation comprenant le Champ B, vous devez vous assurer que le suivi des modifications est activé pour synchroniser les données en fonction du Champ A, qui a déjà été mappé et synchronisé avec Dataverse avec succès.

Le processus complet ressemblerait aux étapes suivantes :

  1. Supprimez le Champ B du mappage de table.
  2. Enregistrez le nouveau mappage de table en tant que version la plus récente.
  3. Supprimez le suivi des modifications.
  4. Lancez la synchronisation initiale.
  5. Une fois la synchronisation initiale terminée, arrêtez le mappage.
  6. Restaurez le mappage à la version précédente pour rajouter le Champ B au mappage.
  7. Activez le suivi des modifications.
  8. Resynchronisez le mappage de table.

Problèmes de filtre

Parfois, lorsque vous avez ajouté un filtre à une entité ou une table, vous vous attendez à ce que les informations soient filtrées lorsqu’elles sont déplacées vers l’autre table. Malheureusement, des problèmes peuvent survenir lorsque le filtre ne s’affiche pas dans un système ou dans l’autre après la synchronisation initiale. En général, ce problème se produit si la syntaxe du filtre est incorrecte lors de la synchronisation initiale et il sera ignoré. Pour vous assurer que les filtres fonctionnent, vous devez vérifier que la syntaxe du filtre est correcte. Vous devez vous assurer que les filtres sont appliqués uniquement sur les champs présents sur les mappages à double écriture.

Une classe exécutable supplémentaire est disponible pour vérifier l’expression de filtre dans les applications de finances et d’opérations, comme suit :

var entityName = "PROJECTENTITY";
var filterExpression = '(ParentProject == "")';
Query query = new Query();
query.literals(NoYes::Yes); 
QueryBuildDataSource qbd = query.addDataSource(tablename2id(entityName));
qbd.addRange(fieldname2id(qbd.table(),identifierStr(RecVersion))).
value(filterExpression);
qbd.addSelectionField(fieldname2id(qbd.table(),identifierStr(RecId)));
QueryRun qRun = new QueryRun(query);
// This provides the actual sql statement to execute
var actualSqlStatement = query.getSQLStatement();
while(qRun.next())
{
    var rec = qRun.get(tableName2Id(entityName));
}

Si la classe exécutable renvoie les résultats attendus, le filtre fonctionne avec les applications de finances et d’opérations et peut être transféré au moyen du mappage à double écriture et du processus de synchronisation initial. Côté Dataverse, si un filtre ne fonctionne pas ou est ignoré dans les applications de finances et d’opérations après la synchronisation initiale, vous pouvez effectuer l’appel OData suivant pour veiller au bon fonctionnement du filtre.

https://<EnvironmentURL>/api/data/v9.0/<Table>?$filter=<fieldname> eq <value>

Si cet appel renvoie les résultats attendus, le filtre fonctionnera lors de la synchronisation initiale entre les systèmes. Les mappages standard prêts à l’emploi comportent des filtres, donc nous vous recommandons de comparer les filtres personnalisés avec ces mappages standard pour vous assurer que la syntaxe est similaire.

Actualisation de base de données

L’actualisation de base de données est le scénario le plus courant où des erreurs se produisent depuis Dataverse et les applications de finances et d’opérations. Elle est souvent causée par des enregistrements orphelins ou inutiles d’un système ou d’un autre. Une fois l’actualisation de base de données effectuée, nous vous recommandons d’arrêter tous les mappages et de dissocier l’environnement au moyen de l’espace de travail Double écriture.

Après avoir terminé ce processus, supprimez les données des tables clés DualWriteProjectConfiguration, DualWriteProjectFieldConfiguration et BusinessEventsDefinition dans les applications de finances et d’opérations. La table DualWriteProjectConfigurationEntity vous permet d’effacer ces enregistrements depuis Commun > Commun > Intégration Office > Concepteur de classeurs Excel.

Côté Dataverse, vous pouvez accéder à Paramètres avancés > Recherche avancée. Sélectionnez l’option Configuration d’exécution en double écriture, sélectionnez la colonne que vous souhaitez afficher, puis cliquez sur Résultats pour afficher les configurations. Sélectionnez les enregistrements, puis supprimez-les.

Lorsque vous avez terminé, les deux environnements indiquent que les données ont été supprimées de ces zones. Ensuite, il est temps pour vous de resynchroniser et réassocier les environnements et de réactiver les mappages. Cette approche supprime les enregistrements orphelins ou perdus dans les environnements pour veiller au bon fonctionnement de la synchronisation.