La Réponse Courte

Les migrations de données vers Salesforce échouent généralement non pas à cause de l'outil, mais en raison d'un processus de travail défaillant : commencer le chargement sans comprendre la qualité de la source, cartographier les champs dans un simple fichier Excel sans vérifier les valeurs aberrantes, et charger sans respecter les dépendances entre objets. Un processus correct est construit comme un cycle itératif : profilage, cartographie, nettoyage, chargement contrôlé, test et réconciliation – et seulement ensuite le Cutover.

L'objectif de cet article est de décomposer ce cycle de vie en étapes claires, avec une table d'ordre de chargement et une checklist de réconciliation utilisables concrètement. Dans la plupart des projets, la différence entre une migration fluide et une migration entraînant des retouches est déterminée dès la première semaine, lors de la phase de profilage de la source.

Un travail de nettoyage précoce permet d'éviter des dommages ultérieurs. Il est recommandé de lire plus en détail l'article Nettoyage des doublons Salesforce.

Profilage de la Source : Comprendre les Données Avant de les Manipuler

Avant de rédiger une cartographie de champ, il est essentiel de profiler la source de données : combien d'enregistrements y a-t-il dans chaque table, quels champs sont réellement vides (pas seulement dans le schéma, mais dans les données elles-mêmes), quelle est l'étendue des valeurs dans les champs numériques et de date, et où se trouvent des valeurs libres qui devraient être une liste fermée. Dans un projet que nous avons accompagné, un champ "Statut Client" contenait 47 formulations différentes dans la source – "actif", "Active", "actif " avec un espace, "a" – toutes censées être mappées à une seule valeur dans Salesforce.

Des outils comme OpenRefine, de simples requêtes SQL ou même un tableau croisé dynamique dans Excel sur un échantillon de données suffisent pour la plupart des projets. L'objectif est de produire un document de profilage montrant : le nombre total d'enregistrements, le pourcentage de champs obligatoires vides, le nombre de valeurs uniques pour chaque champ catégoriel, et une identification initiale des doublons potentiels par nom, téléphone ou email.

À ce stade, on identifie également s'il existe plusieurs sources pour des informations superposées – par exemple, le même client existe à la fois dans un ancien CRM et dans un système comptable – et on décide quelle source est la Source of Truth pour chaque champ. Une telle décision doit être documentée, non implicite, car elle impacte toutes les étapes suivantes.

Cartographie des Champs : Au-delà d'une Simple Feuille Excel

Une bonne cartographie des champs ne se limite pas à "colonne A dans la source = champ B dans la cible". Elle inclut également la direction de transformation : format de date, conversion d'unités, division d'un champ d'adresse en rue/ville/code postal, et solution pour les valeurs qui n'existent pas dans la liste fermée de la cible. Le meilleur document de cartographie que nous ayons vu contenait cinq colonnes : champ source, champ cible, type de transformation, règle de traitement des valeurs manquantes, et un exemple d'entrée/sortie.

Les champs Lookup et Master-Detail doivent être traités séparément : ils ne contiennent pas de valeur directe mais une référence à un autre enregistrement, et leur cartographie dépend donc du fait que l'enregistrement lié soit déjà chargé et dispose d'un identifiant pointable. C'est pourquoi l'ordre de chargement (abordé plus loin) et la cartographie des champs sont les deux facettes de la même décision.

Des informations approfondies sur la gestion de la qualité des champs sur le long terme, et non pas seulement de manière ponctuelle, sont disponibles dans Qualité des données Salesforce.

Nettoyage et Doublons : Avant le Chargement, Pas Après

Le nettoyage effectué après que l'information se trouve déjà dans l'environnement de production est d'autant plus coûteux : il implique la mise à jour d'enregistrements actifs, le risque de perturber les automatisations et les processus d'approbation, et parfois même d'affecter des rapports déjà diffusés à la direction. Par conséquent, la phase de nettoyage doit obligatoirement avoir lieu dans la couche intermédiaire (Staging), avant que les données n'entrent dans Salesforce.

Règles de nettoyage clés à définir à l'avance :

  • Normalisation du téléphone et de l'email (suppression des espaces, uniformité du format international)
  • Identification des doublons par combinaison de champs (nom + téléphone, ou numéro d'identification d'entreprise seulement pour les entreprises)
  • Règle de sélection de l'enregistrement Maître lors de la fusion des doublons – par exemple, l'enregistrement le plus récent ou le plus complet
  • Traitement des valeurs Null par rapport à une chaîne vide, afin d'éviter la création de "doublons factices"

Dans un projet typique avec environ 80 000 enregistrements clients, un nettoyage raisonnable identifiera entre 3% et 8% de doublons réels. Un nombre beaucoup plus élevé suggère que la source elle-même n'a pas été maintenue, et justifie une discussion avec les propriétaires de processus métier avant de continuer.

IDs Externes et Ordre de Chargement

Un External ID est un champ unique du système source qui est également conservé dans Salesforce, permettant un rechargement (Upsert) sans créer de doublons à chaque fois qu'un fichier est exécuté à nouveau. Sans External ID, chaque réexécution de Data Loader pourrait créer une copie supplémentaire du même enregistrement, car le système ne saurait pas "identifier" un enregistrement existant.

L'ordre de chargement est déterminé par les dépendances entre les objets : il est impossible de charger un contact avant que le compte auquel il est associé n'existe, et il est impossible de charger un poste de commande avant la commande elle-même.

ÉtapeObjetDépendanceNote sur l'External ID
1AccountAucune dépendanceIdentifiant client du système source (ERP/ancien CRM)
2ContactDépend de AccountIdentifiant contact + Lookup vers Account External ID
3OpportunityDépend de Account, ContactIdentifiant d'opportunité du système source
4Product / PriceBook EntryAucune dépendance (chargé en parallèle des étapes 1-2)SKU comme External ID
5Opportunity Line ItemDépend de Opportunity, ProductCombinaison d'identifiant d'opportunité + ligne
6Case / Activity HistoryDépend de Account, ContactIdentifiant de dossier du système source

Le non-respect de cet ordre est l'une des erreurs les plus courantes dans les projets de migration : une équipe qui tente de "gagner du temps" et charge tous les fichiers en parallèle découvre des milliers d'erreurs de Lookup difficiles à filtrer après coup, car il n'est pas clair si l'erreur résulte d'une donnée manquante ou d'un ordre de chargement incorrect.

Environnements et Tests

Une migration n'est pas chargée directement en production. Une structure d'environnements recommandée comprend un Sandbox dédié à la migration (séparé du Sandbox de développement courant), dans lequel le même volume de données et la même configuration de Validation Rules et Triggers qu'en production sont chargés, afin de révéler les problèmes avant qu'ils n'affectent les utilisateurs réels.

Les tests à ce stade incluent le test de volume (le chargement se termine-t-il dans un délai raisonnable), le test d'erreurs (quel pourcentage des enregistrements est rejeté et pourquoi), et le test du comportement des automatisations – un Flow ou un Trigger qui s'exécute lors de la création d'un enregistrement pourrait déclencher l'envoi d'un vrai email à un client s'il n'est pas temporairement désactivé dans l'environnement de test. L'oubli d'un tel détail a causé dans un projet l'envoi de milliers d'emails de "bienvenue" en double à des clients existants.

Dry Run : Exécution Complète Répétée

Une Dry Run est une exécution complète du processus de chargement dans des conditions aussi proches que possible de la production – même volume, mêmes fichiers, même ordre – mais dans un environnement Sandbox. L'objectif est de mesurer deux choses : le temps d'exécution réel (afin de planifier la fenêtre de Cutover de manière réaliste) et le pourcentage d'erreurs à chaque étape.

Il est recommandé d'effectuer au moins deux Dry Runs complètes : la première révèle la plupart des problèmes, la seconde vérifie que les corrections les ont effectivement résolus et n'ont pas créé de nouveau problème. Si une deuxième exécution produit toujours plus de 1% à 2% d'erreurs sur les objets critiques, il est généralement préférable de reporter la date du Cutover plutôt que de faire des compromis sur la qualité.

Cutover et Réconciliation des Données

Le Cutover est la fenêtre réelle pendant laquelle l'ancien système est gelé (Freeze), les données les plus récentes sont chargées dans Salesforce, et les utilisateurs commencent à travailler dans le nouveau système. Le succès à cette étape ne se mesure pas seulement à "l'achèvement du chargement", mais par la Réconciliation – une comparaison systématique entre la source et la cible.

Liste de contrôle pour la Réconciliation à effectuer à la fin de chaque Cutover :

  • ☐ Nombre d'enregistrements identique (ou l'écart est explicable) pour chaque objet principal
  • ☐ Somme des champs financiers (par exemple, valeur totale des opportunités ouvertes) correspondante entre les sources
  • ☐ Un échantillon aléatoire de 30 à 50 enregistrements vérifié manuellement champ par champ
  • ☐ Vérification des relations – chaque Contact a-t-il un Account valide, chaque Opportunity Line Item a-t-il une Opportunité
  • ☐ Vérification des enregistrements "orphelins" – chargés sans référence valide
  • ☐ Comparaison du nombre de doublons avant et après par rapport à l'objectif défini lors de la phase de nettoyage
  • ☐ Confirmation par le propriétaire du processus métier que son échantillon de données semble correct

Les écarts de Réconciliation courants incluent : un nombre d'enregistrements identique mais des totaux différents, car un champ numérique a été chargé dans un format incorrect ; ou des relations manquantes parce qu'un Lookup a été chargé avec une valeur textuelle et non avec un External ID. Une documentation complète du processus de réconciliation, y compris un exemple de base de référence, se trouve également dans Salesforce Master Data Management.

Corrections après la Mise en Production (Go Live)

Même un Go Live réussi laisse une "queue" de corrections : des enregistrements individuels rejetés lors du chargement, des utilisateurs signalant des données manquantes, et des écarts qui ne sont révélés que lorsque de vrais utilisateurs travaillent avec le système et ne se contentent pas de le tester. Une fenêtre de deux à quatre semaines doit être allouée à l'avance pour des corrections ciblées, avec un rapport d'exceptions quotidien la première semaine, puis hebdomadaire.

Il est important de distinguer une correction ponctuelle (un seul enregistrement mis à jour manuellement) d'une correction systémique (une erreur de cartographie qui se répète sur des milliers d'enregistrements et nécessite une correction dans l'outil de chargement lui-même et une réexécution). Confondre les deux amène les équipes à corriger manuellement un problème qui est en fait systématique, et à perdre beaucoup de temps.

Exemple de Cas d'Entreprise

Une entreprise de distribution, comptant environ 120 000 clients dans un ancien CRM et une liste de clients distincte dans le système de comptabilité, a souhaité migrer les deux sources vers un seul Salesforce. Un profilage initial a révélé que 11 % des clients apparaissaient dans les deux sources avec des coordonnées différentes, et que le champ "secteur d'activité" contenait 340 valeurs libres qui devaient être environ 25 catégories.

L'équipe a élaboré une cartographie de champs détaillée, établi une règle de fusion basée sur la combinaison du numéro d'identification d'entreprise et du numéro de téléphone, et désigné le système de comptabilité comme Source of Truth pour les informations de facturation et l'ancien CRM comme Source of Truth pour les coordonnées. Une première Dry Run a révélé que 4 % des enregistrements étaient rejetés en raison d'un format de date non valide – une correction qui a été prise en compte lors de la deuxième exécution. Le Cutover a été effectué un week-end, avec une réconciliation complète le lundi matin avant l'ouverture du système aux utilisateurs.

Le résultat : moins de 0,3 % des enregistrements ont nécessité une correction manuelle après le Go Live, contre une estimation initiale de l'équipe qui s'attendait à environ 5 % d'exceptions. La différence était presque entièrement due aux deux Dry Runs effectuées avant la date officielle.

Risques Courants et Actions Préventives

RisqueComment il se manifeste concrètementAction préventive
Identités non unifiéesLe même client déclenche des processus dupliquésRègle d'unification basée sur l'External ID et le Golden Record
Chargement sans External IDUne réexécution crée de nouveaux doublonsDéfinir l'External ID avant la première exécution
Ordre de chargement incorrectErreurs de Lookup massives difficiles à filtrerChargement selon une table de dépendances pré-définie
Saut du Dry RunLa fenêtre de Cutover s'allonge et des surprises sont découvertes en temps réelAu moins deux exécutions complètes dans un environnement de test
Pas de RéconciliationNombre d'enregistrements correct mais totaux et relations erronésVérifications du nombre, du total, des relations et échantillonnage à chaque Cutover

Au niveau de la gestion de la migration de données vers Salesforce, ce tableau des risques n'est qu'un point de départ. Une extension sur la gestion continue de la qualité, y compris la distinction entre un nettoyage ponctuel et une gouvernance des données continue, est présentée dans Data 360 Zero Copy.

Comment Mesurer le Succès

DomaineCe qui est mesuréFréquence de vérification
ComplétudeTaux de champs obligatoires et d'informations critiques complètesAvant et après chaque chargement
UnicitéTaux de doublons par entitéAvant le Dry Run et après le Cutover
ValiditéValeurs conformes aux règles de format et métierPour chaque lot de chargement
RéconciliationConcordance des comptages, des totaux et des relations avec la sourceÀ chaque répétition et lors du Cutover
Temps d'exécutionDurée réelle du chargement par rapport à la fenêtre de Cutover planifiéeÀ chaque exécution de Dry Run

Pour la plupart des projets, trois à cinq indicateurs suffisent pour la première version. Un bon indicateur peut être calculé avant et après le changement, est lié à un propriétaire de processus métier, et ne peut pas être amélioré artificiellement par une saisie de données partielle. Lorsqu'il n'y a pas de base de référence documentée du système existant, il convient d'investir un ou deux jours dans la mesure de l'état actuel avant de rapporter des améliorations.

Checklist Avant le Go Live

  • ☐ Le profilage de la source a été effectué et inclut les pourcentages de champs vides et de doublons.
  • ☐ Le document de cartographie des champs est complet, incluant les transformations et le traitement des valeurs manquantes.
  • ☐ Un External ID est défini pour chaque objet nécessitant un rechargement.
  • ☐ L'ordre de chargement est documenté et approuvé par l'équipe technique.
  • ☐ Deux Dry Runs ont été effectuées et les erreurs sont tombées en dessous du seuil défini.
  • ☐ Un scénario de Rollback est documenté au cas où le Cutover échouerait.
  • ☐ La Checklist de Réconciliation est prête et la personne chargée de l'exécuter est connue à l'avance.
  • ☐ Une fenêtre de correction après le Go Live a été allouée dans le calendrier.
  • ☐ Les automatismes susceptibles d'envoyer des communications aux clients ont été vérifiés et sont désactivés pendant le chargement.
  • ☐ Le propriétaire du processus métier a approuvé un échantillon final de données.

Notes Approfondies pour la Mise en Œuvre et la Maintenance

Note d'architecte : La migration n'est pas un événement ponctuel

Même après un Go Live réussi, les modifications dans le système source (s'il continue à fonctionner temporairement en parallèle) ou les corrections manuelles créent un décalage entre les données. Il est donc conseillé de maintenir un rapport de Réconciliation régulier – hebdomadaire le premier mois, puis mensuel – qui compare un échantillon de données entre les anciens et les nouveaux rapports et identifie les écarts précocement. Un projet qui considère la migration comme une ligne d'arrivée passe à côté du fait que la qualité des données est un processus continu.

D'un point de vue managérial, le véritable test d'une migration de données vers Salesforce n'est pas seulement de savoir si les enregistrements ont été chargés, mais si les responsables de la donnée, du CRM et des projets peuvent se fier aux rapports le lendemain sans vérifier manuellement chaque chiffre. Les organisations qui souhaitent un accompagnement professionnel pour un tel processus peuvent faire appel aux services d'intégration et de données, qui accompagnent à la fois la phase de planification et la fenêtre de Cutover elle-même.

Sources Professionnelles