Migration ratée chez un grossiste : anatomie d'une corruption de données à 1,1 million d'euros
Trois mois après la mise en production, le contrôleur de gestion d'un grossiste alimentaire découvre que 14 000 codes EAN ont été décalés d'une ligne. Aucune alerte. Aucun message d'erreur. Juste un préjudice qui s'accumule, silencieux. Décryptage d'un sinistre type.
- Une migration ERP peut corrompre des données sans aucun message d'erreur : le problème n'apparaît qu'à l'usage, parfois plusieurs mois plus tard.
- Dans ce cas réel (anonymisé), un décalage d'une ligne dans une table de correspondance a généré 9 mois de comptabilité fausse pour un grossiste à 60 millions de CA.
- Le préjudice total a atteint 1,1 million d'euros : retraitement comptable, pénalités fournisseurs, fuite client et campagne de réassurance commerciale.
- La garantie Cyber a pris en charge la restauration des données et l'audit forensique ; la RC Pro de l'intégrateur a couvert le préjudice immatériel du client.
Le décor : un grossiste alimentaire à 60 millions d'euros et un projet maîtrisé
Le client est un grossiste alimentaire régional, 90 collaborateurs, 60 millions d'euros de chiffre d'affaires, 18 000 références actives. Il quitte un Sage 100 vieillissant pour SAP Business One, motivé par le besoin de tracer les lots, gérer les DLUO et automatiser sa relation EDI avec la grande distribution. Le projet, conduit par un intégrateur indépendant de huit personnes, est budgété à 240 000 EUR sur sept mois. Rien d'extravagant.
La phase de cadrage se déroule normalement. La reprise de données est planifiée en trois lots : référentiel articles, historique commercial, encours fournisseurs. L'intégrateur livre des scripts de migration testés sur un environnement de recette, validés sur un échantillon de 500 articles tirés aléatoirement. Tous les contrôles passent. Le go-live est prononcé un samedi soir. Lundi matin, l'entreprise tourne sur SAP. Pas un bug en façade. Le projet semble réussi.
Trois mois plus tard, le contrôleur de gestion remarque une anomalie sur la marge d'une famille de produits. Une investigation discrète révèle l'impensable : 14 000 codes EAN ont été décalés d'une ligne dans la table de correspondance. Le code rattaché au produit "jambon supérieur" pointe en réalité vers "jambon premier choix". Et ainsi de suite, sur l'intégralité du référentiel charcuterie. Depuis le go-live.
L'enquête forensique : un bug à 17 caractères dans un script de 4 000 lignes
L'intégrateur est rappelé en urgence. La phase d'investigation, conduite par un expert mandaté par l'assureur Cyber, prend onze jours. Elle révèle la cause racine : un script SQL de transformation comportait une jointure sur la mauvaise clé technique. Au lieu d'un JOIN ON SAP.itemcode = LEGACY.code, le script utilisait l'itemnumber, un identifiant interne SAP qui n'avait aucun lien avec l'ancien Sage. Le résultat : un décalage systématique, masqué par le fait que les 500 articles tirés en recette appartenaient à des familles où, par hasard, les deux identifiants étaient alignés.
Aucune alerte n'avait été levée. SAP Business One ne dispose d'aucun mécanisme automatique pour détecter qu'un EAN ne correspond pas au libellé attendu : les deux champs sont indépendants. Les commandes clients passaient, les factures partaient, les livraisons s'effectuaient - simplement avec un EAN qui ne correspondait pas physiquement au produit livré.
Sur le plan technique, c'est un cas d'école de corruption silencieuse de données (silent data corruption). Sur le plan juridique, c'est une faute professionnelle manifeste : la validation par échantillon non stratifié ne respecte pas les standards de la profession, formalisés notamment par le référentiel SAP "SAP Activate" et le standard ISO/IEC 25024 sur la qualité des données.
Le chiffrage du préjudice : une cascade de coûts
Le préjudice du grossiste se décompose en cinq postes, retraités après expertise contradictoire.
| Poste de préjudice | Montant |
| Retraitement comptable des 9 mois facturés | 185 000 EUR |
| Pénalités contractuelles versées aux centrales d'achat (EAN erronés en EDI) | 340 000 EUR |
| Perte de marge sur ventes mal valorisées | 210 000 EUR |
| Fuite de deux clients grands comptes (perte de marge actualisée) | 290 000 EUR |
| Audit forensique, restauration des données, campagne commerciale de réassurance | 95 000 EUR |
| Total | 1 120 000 EUR |
Comparons ces chiffres au plafond de responsabilité prévu au contrat d'intégration : 120 000 EUR, soit la moitié du budget projet. Le ratio préjudice/plafond est de 9,3. Inutile de préciser que la clause limitative a été écartée par le tribunal de commerce.
La répartition entre les garanties : ce que Cyber a payé, ce que la RC Pro a payé
L'intégrateur disposait d'un contrat RC Pro à 1 million d'euros et d'une garantie Cyber incluse à 300 000 EUR. La répartition opérée par les assureurs après expertise a été la suivante.
Garantie Cyber - prise en charge de 95 000 EUR
La garantie Cyber a couvert tout le volet technique et de remédiation : intervention de l'expert forensique, frais de reconstruction du référentiel articles à partir des sauvegardes Sage 100 conservées, mise en place d'un environnement de recette dédié, audit indépendant des autres tables migrées, et campagne de communication de crise auprès des clients de la grande distribution.
RC Pro - prise en charge de 920 000 EUR
La RC Pro a indemnisé le grossiste pour le préjudice immatériel consécutif à la faute professionnelle de l'intégrateur : retraitement comptable, pénalités EDI, marge perdue et fuite client. Cette indemnisation suppose que le contrat RC Pro inclue explicitement les "dommages immatériels non consécutifs à un dommage matériel", clause qui n'est pas systématiquement présente dans les RC Pro entrée de gamme.
Reste à charge de l'intégrateur - 105 000 EUR
Le solde, soit 105 000 EUR, est resté à la charge de l'intégrateur au titre de la franchise contractuelle (5 % du sinistre, plafonnée à 50 000 EUR par garantie). Pour une entreprise de huit personnes, ce reste à charge est significatif mais soutenable. Sans assurance, l'entreprise déposait le bilan.
Ce qui aurait pu éviter le sinistre, ce qui aurait pu en réduire l'ampleur
L'expertise post-sinistre a formulé sept recommandations dont quatre auraient suffi à éviter ou contenir la corruption.
- Échantillonnage stratifié de la recette : tirer les articles de test en couvrant systématiquement toutes les familles produits, et non par tirage aléatoire pur.
- Contrôles de cohérence métier post-migration : automatiser un rapport listant les écarts de prix supérieurs à 20 % entre l'ancien et le nouveau référentiel, ainsi que les libellés ne contenant aucun mot commun.
- Période de "shadow run" de deux semaines où l'ancien Sage tourne en parallèle de SAP, avec rapprochement quotidien des factures et des EAN.
- Conservation des sauvegardes legacy pendant au moins 24 mois après le go-live, sous forme exploitable (et non simplement archivée sur bande).
Aucune de ces mesures n'est coûteuse. Toutes auraient été incluses dans un plan d'assurance qualité conforme aux standards de la profession. Leur absence a directement engagé la responsabilité contractuelle de l'intégrateur.
Trois enseignements pour l'intégrateur ERP/CRM
Ce sinistre, représentatif de dizaines d'affaires jugées chaque année par les tribunaux de commerce français, livre trois enseignements transversaux.
Premier enseignement. La corruption silencieuse de données est le pire risque de l'intégrateur, parce qu'elle s'accumule pendant que le client paie ses factures et signe les PV de réception. Plus elle est détectée tard, plus le préjudice est massif. C'est aussi le risque le plus difficile à couvrir : aucune garantie ne paye un préjudice non détecté.
Deuxième enseignement. La répartition Cyber / RC Pro est rarement intuitive. Le client tend à voir tout incident lié aux données comme "cyber", alors que le préjudice économique majeur relève de la RC Pro. Souscrire l'une sans l'autre laisse un trou dans la couverture.
Troisième enseignement. Le plafond contractuel ne protège pas contre le préjudice réel. Seule l'assurance le fait. Un intégrateur ERP qui n'a pas calibré sa RC Pro à au moins 1 million d'euros pour des clients dépassant les 30 millions de chiffre d'affaires prend, mathématiquement, un risque vital pour son entreprise.
Questions fréquentes
Partiellement. La garantie Cyber couvre les volets techniques (forensique, restauration, communication de crise), mais le préjudice économique consécutif au mauvais paramétrage relève de la RC Pro pour dommages immatériels. Il faut donc impérativement souscrire les deux.
Les standards professionnels et la jurisprudence convergent vers un minimum de 24 mois après le go-live, sous une forme exploitable. Au-delà, conservez les sauvegardes au moins jusqu'à la fin de la prescription des actions en responsabilité (5 ans en matière contractuelle).
Pas toujours. Beaucoup de contrats entrée de gamme limitent la couverture aux dommages immatériels consécutifs à un dommage matériel. Pour un intégrateur ERP, l'extension "dommages immatériels non consécutifs" est indispensable et doit figurer expressément aux conditions particulières.
Oui. La prescription quinquennale de l'article 2224 du Code civil court à compter de la découverte du dommage, pas du fait générateur. Un sinistre comme celui décrit ici, détecté trois mois après la mise en production, ouvre donc une fenêtre d'action jusqu'à plus de cinq ans après les faits.
Non, sauf pour des projets très simples. Pour un référentiel articles ou clients dépassant quelques milliers de lignes, la jurisprudence et les standards professionnels exigent un échantillonnage stratifié, couvrant explicitement toutes les familles, les cas limites et les enregistrements à risque (lots, devises multiples, hiérarchies).
Souscrivez votre assurance pro en 2 minutes
Toutes nos protections pour votre activité de Intégrateur ERP / CRM — attestation immédiate, sans engagement.
* Tarifs indicatifs « à partir de », selon votre profil, votre activité et les garanties choisies. · Voir la fiche Intégrateur ERP / CRM →
Article rédigé et vérifié par l'équipe Insurio — Tutassûr, courtier en assurance immatriculé à l'ORIAS sous le n° 22001730. Information à caractère général ne se substituant pas aux conditions de votre contrat.