Aller au contenu
Espace client

Audit gratuit

Intelligence artificielle

Deux systèmes qui ne sont jamais tout à fait d’accord

Une intégration qui tourne n’est pas une intégration juste. Ce qu’il faut mettre en place le jour où les deux côtés commencent à diverger.

Publié le 24 juillet 2026 — Algeria Agency

Une intégration est déclarée finie le jour où les données passent d’un système à l’autre. C’est un jalon réel et ce n’est pas la fin : deux systèmes reliés se mettent à diverger, lentement, et personne ne s’en aperçoit avant que quelqu’un compare deux écrans.

La divergence n’est pas un bug au sens habituel. Rien ne tombe en panne, aucune erreur n’est enregistrée, les deux logiciels affichent des chiffres cohérents avec leur propre contenu. Simplement, ils ne racontent plus la même histoire, et le jour où la différence est découverte, personne ne sait depuis quand elle dure.

Cet article traite de la vie d’une intégration en marche : qui a raison quand deux systèmes se contredisent, à quelle fréquence rapprocher, ce qu’on fait d’un doublon, comment rejouer sans dupliquer, ce qui arrive quand un champ est renommé, et jusqu’où on peut remonter dans le passé. L’article qui l’accompagne traite de la faisabilité — l’inventaire avant le devis, ce qui sort d’un logiciel, la caisse qui n’expose rien — et rien de cela n’est repris ici.

Il ne contient aucun graphique, et la raison est plus intéressante que d’habitude : ce dont il parle n’a jamais été compté par personne, parce qu’aucun des deux systèmes ne l’enregistre comme une erreur.

Une intégration qui tourne n’est pas une intégration juste

Le critère de recette d’une intégration est presque toujours le même : on crée un enregistrement d’un côté, on vérifie qu’il apparaît de l’autre, on signe. Ce test prouve que le tuyau existe. Il ne prouve rien sur ce qui circulera dedans pendant les trois années suivantes.

La différence tient à ce que le test de recette porte sur un cas propre, créé exprès, en journée, par quelqu’un qui sait ce qu’il fait. La production apporte les cas que personne n’a écrits : la commande annulée puis recréée, le client dont le nom contient une apostrophe, la modification faite pendant que la synchronisation tournait.

Il faut donc distinguer deux questions qui sont posées comme une seule. « Est-ce que ça marche » se vérifie une fois et se répond par oui. « Est-ce que c’est juste » ne se vérifie pas une fois : c’est une propriété qui se maintient ou se perd, et elle se perd sans bruit.

La conséquence pratique est qu’une intégration a besoin d’un contrôle permanent et pas d’une recette. Le contrôle est modeste — un comptage des deux côtés, à intervalle régulier, avec un écart acceptable déclaré à l’avance — et son absence est la cause la plus fréquente des découvertes désagréables au moment de l’inventaire ou du bilan.

Qui a raison le mardi matin

Quand deux systèmes affichent deux valeurs différentes pour la même chose, la question posée est « lequel est juste ». C’est la mauvaise question, et elle n’a pas de réponse au niveau du système. Elle en a une au niveau du champ.

La formulation qui marche est ennuyeuse à écrire et règle presque tous les litiges à l’avance : pour chaque champ qui circule, un seul des deux systèmes est la source, et l’autre en reçoit une copie qu’il n’a pas le droit de modifier. Le stock est la source de la caisse ; l’adresse est la source du fichier client ; le prix est la source du catalogue.

Ce document tient sur une page et il est presque toujours absent. Son absence ne se voit pas au début parce que les deux côtés sont d’accord, et se voit brutalement le jour où quelqu’un corrige une adresse dans le système qui n’est pas la source : la correction est écrasée à la synchronisation suivante, la personne recommence, et l’entreprise conclut que « l’outil efface les modifications ».

Il faut accepter que la réponse soit parfois inconfortable. Déclarer que la caisse est la source du stock signifie qu’une correction faite dans le logiciel de gestion ne tiendra pas, et donc qu’il faut aller la faire dans la caisse. C’est un changement d’habitude, il coûte une conversation, et il est moins cher que la divergence qu’il évite.

L’écart qui apparaît au bout de trois semaines

La divergence commence toujours petit et par un cas particulier. Une commande annulée pendant que la synchronisation tournait. Un enregistrement modifié deux fois dans la même minute. Une panne de réseau de quarante secondes au milieu d’un envoi. Chacun de ces cas produit un écart d’une ligne, et une ligne ne se remarque pas.

Ce qui rend le phénomène dangereux est qu’il s’accumule sans se signaler. Au bout de trois semaines l’écart est de quelques dizaines de lignes, au bout d’un an il est structurel, et il est découvert par un inventaire physique ou par un client qui affirme avoir payé quelque chose que le système ne connaît pas.

À ce moment-là, la question posée est « depuis quand », et c’est la question à laquelle il est le plus coûteux de répondre après coup. Sans comptage régulier conservé, il n’existe aucun moyen de dater le début de la dérive, et la seule option est de reprendre la totalité de la période.

Nous ne pouvons pas dire à quelle fréquence cela arrive, et l’explication mérite d’être donnée plutôt que contournée. Il n’existe aucune statistique publiée sur les taux de divergence entre systèmes, non pas parce qu’elle est confidentielle, mais parce que personne n’a jamais pu la mesurer : pour les deux logiciels concernés, l’opération a réussi. L’envoi a réussi, l’écriture a réussi. L’événement n’est enregistré nulle part comme un échec, donc il n’existe aucune population d’erreurs à échantillonner. C’est le seul chiffre de cette page, et il n’a jamais été compté par personne.

Le rapprochement, et à quelle fréquence

Le contrôle qui répond à la section précédente est un rapprochement : compter la même chose des deux côtés et comparer les deux nombres. Il est bien plus simple que ce que son nom comptable suggère, et il n’a pas besoin d’être fin pour être utile.

Le comptage suffit dans la grande majorité des cas. Combien d’enregistrements de chaque côté sur la période, et quelle somme pour le champ qui compte — un montant, une quantité. Deux nombres par côté, relevés au même moment, écrits quelque part où on les conserve. La comparaison ligne à ligne est un autre exercice, plus coûteux, et on ne le déclenche que quand le comptage a dit qu’il y avait un problème.

La fréquence se déduit du coût de la reprise et pas d’une bonne pratique générale. Si retrouver l’origine d’un écart d’une journée coûte une heure et celui d’un mois coûte une semaine, alors le rapprochement est quotidien. Pour un volume faible et des enjeux modestes, une fois par semaine suffit largement.

Le point qui décide de l’utilité de tout cela est la conservation. Un rapprochement fait et jeté ne répond pas à « depuis quand » ; un rapprochement fait et gardé transforme cette question en une lecture de trois minutes. Quatre nombres par jour dans un fichier, c’est l’intégralité du dispositif, et c’est ce qui distingue un incident d’une reprise complète.

Le doublon, et pourquoi il est créé deux fois

Le doublon est le symptôme le plus visible d’une intégration et celui qu’on traite le plus mal. Deux fiches pour le même client, deux commandes identiques, deux produits qui portent le même nom : le réflexe est de supprimer l’un des deux, ce qui règle l’affichage et ne règle rien.

La cause est presque toujours l’absence d’un identifiant partagé. Le système A crée un client, l’envoie ; le système B l’enregistre avec son propre numéro. Rien ne conserve le lien entre les deux numéros, donc au prochain envoi, B ne reconnaît pas le client et le crée à nouveau. Le doublon n’est pas une erreur de saisie, c’est la conséquence mécanique d’un chaînon manquant.

La réparation consiste à stocker la correspondance : pour chaque enregistrement transmis, l’identifiant de départ et l’identifiant d’arrivée, conservés quelque part. C’est une table à deux colonnes, elle est ennuyeuse, et elle est ce qui rend une intégration réparable — sans elle, on ne peut pas rejouer un envoi sans risquer de tout recréer.

Le nettoyage des doublons existants vient après et jamais avant. Fusionner des fiches dans un système dont l’intégration continue de produire des doublons revient à écoper : le travail est refait la semaine suivante, ce qui décourage durablement l’équipe qui l’a fait et fait croire que le problème est insoluble.

Quand l’autre système ne répond pas

Le système d’en face sera indisponible, et pas rarement : maintenance, coupure réseau, quota atteint, serveur saturé un jour de forte activité. La question n’est pas de l’éviter mais de savoir ce que fait votre côté pendant ce temps.

Il y a trois comportements possibles et un seul est acceptable. Perdre l’envoi, ce qui produit la divergence de la section 2 et ne se voit pas. Bloquer et attendre, ce qui transforme une panne chez eux en panne chez vous. Ou mettre de côté et réessayer, ce qui est la seule réponse qui préserve à la fois le service et l’exactitude.

La mise en attente doit avoir une limite et une voix. Une file qui grossit indéfiniment est une perte différée : au bout d’un moment quelqu’un la vide pour débloquer la situation, et personne ne saura jamais ce qu’il y avait dedans. Une file qui prévient quand elle dépasse un seuil transforme la panne en information.

Il faut aussi que les tentatives s’espacent. Réessayer toutes les secondes contre un système déjà en difficulté ajoute de la charge à la panne, et certains fournisseurs traitent cette insistance comme un abus et coupent l’accès. Espacer les tentatives est une politesse technique qui protège surtout celui qui l’applique.

Rejouer sans dupliquer

Une fois la file constituée, il faut la rejouer, et c’est le moment où la plupart des intégrations créent le désordre qu’elles étaient censées éviter. Rejouer trois cents envois en attente sans précaution produit trois cents nouveaux enregistrements à côté de ceux qui étaient déjà passés.

La propriété qui manque porte un nom technique et une idée simple : le même envoi effectué deux fois doit produire le même résultat qu’une seule fois. Concrètement, chaque envoi porte une référence stable — pas un horodatage, pas un numéro tiré au hasard — et le système d’arrivée refuse un envoi dont il a déjà vu la référence.

Cette précaution ne coûte presque rien au moment de la construction et ne se rattrape pas facilement après. Sans elle, chaque reprise après incident devient une opération manuelle et anxieuse, faite par quelqu’un qui coche des lignes dans un tableur pour savoir lesquelles ont déjà été passées, ce qui est exactement le travail que l’intégration devait supprimer.

Le test qui vérifie cette propriété est le plus simple de tout le projet et il n’est presque jamais fait : envoyer deux fois exactement la même chose, et regarder s’il y a un ou deux enregistrements à l’arrivée. Il prend une minute le jour de la livraison et il répond à la question qui coûtera le plus cher plus tard.

Le champ que quelqu’un a renommé

Les intégrations cassent rarement pour des raisons techniques. Elles cassent parce que quelqu’un, dans l’un des deux systèmes, a fait une modification parfaitement légitime sans savoir que quelque chose écoutait : un champ renommé, une liste de valeurs à laquelle on a ajouté une option, un formulaire réorganisé.

Cette personne n’a rien fait de mal. Elle a adapté son outil à son travail, ce qui est l’usage attendu, et rien dans son interface ne l’a prévenue qu’une intégration dépendait du nom de ce champ. L’information n’existait pas là où la décision a été prise.

La protection n’est donc pas technique, elle est organisationnelle et tient en une phrase : la liste des champs sur lesquels l’intégration s’appuie est écrite, et elle est connue de la personne qui administre chaque système. Deux pages, une par outil, affichées là où les modifications se font.

Le complément technique est de rendre la casse bruyante. Une intégration qui rencontre une valeur inconnue doit s’arrêter et se plaindre, et non deviner ou ignorer la ligne. Une intégration qui ignore silencieusement ce qu’elle ne comprend pas est une intégration qui produit la divergence de la section 2, en plus grand et plus vite.

L’historique qu’on ne rattrapera pas

Quand une intégration est mise en place, la demande qui suit immédiatement est de récupérer le passé : reprendre les deux dernières années de commandes, remplir le nouveau système avec l’historique de l’ancien. Elle est légitime et elle a une limite qu’il vaut mieux poser tout de suite.

Ce qui peut être repris est ce qui a été enregistré. Ce qui n’a jamais été saisi n’existe nulle part et aucune reprise ne le fera apparaître : si l’ancien système ne notait pas le canal d’acquisition, le nouveau ne l’aura pas pour les années passées, quelle que soit la qualité du travail de migration.

C’est une distinction que les demandes formulent rarement et qui change complètement l’estimation. « Reprendre l’historique » peut vouloir dire recopier des champs qui existent, ce qui est du travail mécanique et faisable, ou reconstituer une information qui n’a jamais été collectée, ce qui est de l’invention et doit être refusé.

La bonne pratique est de séparer les deux dans le devis, en toutes lettres : voici les champs repris, voici les champs qui resteront vides pour la période antérieure. Le client décide alors en connaissance de cause, et personne ne découvre six mois plus tard que la colonne qui devait servir à tout est vide sur trois quarts des lignes.

Deux systèmes, deux vérités sur un client

Le cas le plus tenace n’est pas le doublon technique mais le doublon humain : la même personne existe des deux côtés avec des informations différentes, et rien ne permet de trancher automatiquement. Un numéro écrit avec un indicatif d’un côté et sans de l’autre, un nom orthographié de deux manières, une entreprise et son gérant enregistrés séparément.

La tentation est de rapprocher automatiquement sur une ressemblance de noms, et c’est la décision qui produit les erreurs les plus difficiles à défaire. Fusionner deux clients qui n’en étaient pas mélange deux historiques d’achat, deux adresses de livraison et parfois deux soldes, et le retour en arrière est rarement propre.

La règle raisonnable est de ne rapprocher automatiquement que sur une correspondance exacte d’un identifiant fiable, et de mettre le reste dans une liste que quelqu’un regarde. Le numéro de téléphone normalisé fonctionne bien dans ce marché ; le nom seul ne suffit jamais, en particulier avec des transcriptions qui varient.

Il faut accepter que cette liste ne se vide jamais complètement, et ce n’est pas un échec. Quelques dizaines de cas ambigus qu’une personne tranche en dix minutes par mois valent mieux qu’un rapprochement automatique confiant qui se trompe deux fois par an sur les clients les plus importants, parce que ce sont ceux qui ont le plus d’enregistrements.

Reprendre une intégration qui tourne depuis trois ans

Le cas courant est d’hériter d’une intégration en marche, sans documentation, dont l’auteur est parti et que personne n’ose toucher. Elle fonctionne, ce qui est à la fois rassurant et trompeur : rien ne dit qu’elle est juste, seulement qu’elle n’a pas cessé.

La première mesure à prendre n’est pas de lire le code, c’est de faire le rapprochement décrit plus haut, une fois. Compter des deux côtés sur les trois derniers mois. Ce chiffre unique dit en une demi-journée si l’on hérite d’une intégration correcte ou d’une divergence installée, et il oriente tout le reste.

Ensuite vient l’inventaire des champs, obtenu en observant plutôt qu’en lisant : quels champs bougent réellement, dans quel sens, et lesquels sont écrits des deux côtés — ces derniers étant les emplacements exacts des futurs conflits. Deux semaines d’observation donnent une image plus fidèle que le code, qui décrit ce qui était prévu.

La règle de prudence est de ne rien réécrire avant d’avoir un rapprochement qui tourne. Sans lui, une modification et une divergence préexistante sont indiscernables, et toute correction sera accusée d’avoir cassé quelque chose qui était déjà cassé. Le contrôle vient avant la réparation, y compris quand la réparation semble évidente.

Ce que nous faisons, et ce que nous refusons

Ce que nous prenons en charge est délimité : écrire la source de vérité champ par champ avec les personnes qui utilisent les deux systèmes, construire l’intégration avec sa table de correspondance et sa référence stable, et installer le rapprochement qui se conserve — la partie la moins spectaculaire et celle qui rend tout le reste réparable.

Nous ne construisons pas d’intégration sans que la source de vérité soit écrite pour chaque champ qui circule, même quand le client trouve la question théorique. Elle ne l’est pas : sans cette page, le premier conflit est arbitré par l’ordre d’exécution des programmes, ce qui revient à laisser une décision de gestion à un hasard d’ordonnancement.

Nous ne reconstituons pas un historique qui n’a jamais été enregistré. Nous recopions ce qui existe et nous disons quelles colonnes resteront vides pour la période antérieure. Remplir ces colonnes par estimation produirait des données d’apparence complète sur lesquelles quelqu’un fondera une décision, ce qui est plus dommageable qu’une case vide.

Enfin, nous ne promettons pas un taux d’erreur. Cette page explique pourquoi il n’en existe pas de publié — l’événement n’est enregistré comme un échec par aucun des deux systèmes — et il serait incohérent d’en annoncer un après l’avoir écrit. Ce que nous pouvons promettre est que l’écart sera mesuré chez vous, chaque semaine, et conservé, de sorte que la question « depuis quand » ait toujours une réponse.

Questions fréquentes

Comment savoir si une intégration est juste et pas seulement en marche ?

En comptant des deux côtés. Le test de recette prouve que le tuyau existe ; il ne dit rien sur ce qui y circulera pendant trois ans. Relevez le nombre d’enregistrements et la somme du champ qui compte, des deux côtés, au même moment, et conservez ces quatre nombres. « Est-ce que ça marche » se répond une fois ; « est-ce que c’est juste » est une propriété qui se maintient ou se perd, et elle se perd sans bruit.

Quel système a raison quand les deux se contredisent ?

La question n’a pas de réponse au niveau du système, seulement au niveau du champ. Pour chaque champ qui circule, un seul des deux est la source et l’autre en reçoit une copie qu’il n’a pas le droit de modifier. Sans cette page, le premier conflit est arbitré par l’ordre d’exécution des programmes — et l’entreprise conclut que « l’outil efface les modifications », alors qu’il applique une règle que personne n’a écrite.

Pourquoi les doublons reviennent-ils après avoir été nettoyés ?

Parce que la cause n’est pas la saisie mais un chaînon manquant : rien ne conserve le lien entre l’identifiant de départ et celui d’arrivée, donc au prochain envoi le système receveur ne reconnaît pas l’enregistrement et le recrée. Il faut stocker cette correspondance — une table à deux colonnes — avant de fusionner quoi que ce soit, sinon le nettoyage est refait la semaine suivante.

Que se passe-t-il quand l’autre système est en panne ?

Trois comportements sont possibles et un seul est acceptable. Perdre l’envoi produit une divergence invisible. Bloquer et attendre transforme leur panne en la vôtre. Mettre de côté et réessayer préserve les deux — à condition que la file ait une limite et qu’elle prévienne au-delà d’un seuil, sinon quelqu’un la videra un jour pour débloquer la situation et personne ne saura ce qu’il y avait dedans.

Peut-on récupérer l’historique des deux dernières années ?

Ce qui a été enregistré, oui ; ce qui n’a jamais été saisi, non, et aucune migration ne le fera apparaître. La distinction change complètement l’estimation, donc elle doit figurer en toutes lettres dans le devis : voici les champs repris, voici ceux qui resteront vides pour la période antérieure. Les remplir par estimation produirait des données d’apparence complète sur lesquelles quelqu’un fondera une décision.

Existe-t-il un taux de divergence de référence ?

Non, et pas parce qu’il serait confidentiel. Personne n’a jamais pu le mesurer : pour les deux logiciels concernés, l’opération a réussi — l’envoi a réussi, l’écriture a réussi. L’événement n’est enregistré nulle part comme un échec, donc il n’existe aucune population d’erreurs à échantillonner. Le seul chiffre qui vous concerne est l’écart mesuré chez vous, chaque semaine, et conservé.

Où nous intervenons

Compter des deux côtés sur trois mois donne deux nombres qui ne coïncident jamais. L’écart n’est pas une erreur de calcul : c’est deux systèmes qui n’ont pas la même définition.

  • Nous fixons par écrit, pour chaque donnée, lequel des deux systèmes fait foi.
  • Nous transportons ce qui a été saisi, et nous laissons visible ce qui manque.
  • Nous refusons de construire tant que ce document d’une page n’est pas signé.

Une donnée qui n’a pas été saisie n’existe pas, et nous refuserons de l’inventer pour boucher un trou : la reconstitution est pire que le vide.

À lire ensuite

Parlons de votre projet

Un audit gratuit, sans engagement : nous regardons votre présence en ligne et nous vous disons ce qui coince.

Nous mesurons l’audience de ce site avec Google Analytics, pour savoir quelles pages servent vraiment. Vous pouvez arrêter cette mesure à tout moment depuis le pied de page. Politique de cookies