Données, données, donne émoi ! Une histoire de migration de données
Données, données, donne émoi ! Une histoire de migration de données

Combien de fois n’avez-vous pas passé une éternité sur la phase post déploiement afin de charger de la donnée (que ce soit pour une migration de mise en prod, ou de la configuration CPQ etc) ?
Combien de fois n’avez-vous pas tremblé à l’idée de corrompre de la donnée essentielle ?
Combien de fois n’avez-vous pas galéré sur vos orgs de dev/uat pour coller au plus près de la prod par manque de donnée ?
Aujourd’hui, je vous présente un outil gratuit et pourtant aussi puissant qu’utile: SFDMU
SF quoi ?
SFDMU est un acronyme pour SFDX Data Move Utility, né il y a quelques années maintenant, c’est devenu aujourd’hui un outil plus que robuste et ultra flexible par la possibilité d’adjonction de plugins existant ou même de vos propres plugins.
Voyons rapidement quelques uns des atouts clés de l’outil:
- Migration d’org à org (dans la pratique, cela effectue les opérations org -> csv et csv -> org successivement vous laissant au passage un joli backup des données traitées)
- Migration d’org à csv et csv à org.
- Permet la création, modification, mise à jour et la suppression des données.
- Gère automatiquement les dépendances circulaires afin de déterminer l’ordre de traitement des objets à migrer.
- Supporte les ID externes, que ce soit un externalId SF ou un champ texte/formule… ainsi que les clés composées.
- Gère également la préservation des types d’enregistrements.
- Intègre des possibilités de mapping et/ou transformation de données.
- Permet l’anonymisation des données.
- Cerise sur le gâteau, il est aussi possible de créer des plugins maison en s’appuyant sur la Custom Add-On API.
- ….
Bref, un véritable outil de migration utilisable en ligne de commande, mais également via une interface graphique pour ceux qui n’aiment pas manipuler un fichier json.
1/ Installation de l’outil
Afin d’utiliser SFDMU, et étant donné qu’il s’agit d’un outil s’appuyant sur SFDX, il est évident que vous devez avoir installé SFDX sur votre poste au préalable.
Pour l’installation de SFDMU à proprement parler, et pour dire à quel point il est intégré à SFDX, il suffit de 2 commandes SFDX (voir une seule si vous n’avez jamais installé SFDMU sur votre poste):
Sur certains OS il est possible que vous ayez à utiliser sudo en tout début de commande pour pouvoir effectuer l’installation (Linux/MacOs).
2/ Configuration de la migration
Avec SFDMU, une migration se définit dans un fichier export.json. C’est peut-être le principal point de faiblesse que j’ai trouvé à ce jour, car ce nom unique n’aide pas à identifier les différentes migrations qu’un consultant peut avoir à faire sur des projets différents. Aussi je vous suggère d’intégrer ce fichier dans votre outil de versionning projet (après tout, si vous utilisez SFDX, vous devez certainement avoir un dépôt GIT de votre projet 😉 )
Prenons un exemple très basique de migration d’un seul objet, voici ce que donne le fichier:
Très simple non ?
Ici nous voulons créer/mettre à jour les comptes en s’appuyant sur le nom du compte comme champ de correspondance entre les deux orgs.
SFDMU va donc extraire les comptes du l’org source en utilisant la query que vous avez défini, extraire les comptes de l’org destination, et créer chaque compte n’ayant pas de correspondance de nom dans l’org cible, puis mettre à jour les comptes ayant une correspondance de nom, toujours dans l’org cible.
Pour approfondir un peu, je vous propose ici un petit extrait de configuration pour migrer la donnée de configuration CPQ:
Je vous l’accorde, je suis passé un peu vite de la configuration simple à une configuration plus complexe, mais je vous rassure vous trouverez dans le lien vers la documentation, très bien faite au demeurant, de SFDMU en fin d’article.
Alors pour expliciter un peu ce que nous avons ici, voyons quelques points en détail :
- Vous aurez remarqué le readonly_false de la query qui ne ressemble pas à un champ standard ou custom. Simplement parce que oui, SFDMU permet ce genre de simplification dans les queries afin de récupérer tous les champs qui ne sont pas en lecture seule par exemple. Pour la liste complète des mots clés, je vous invite à consulter la documentation Field Multiselect
- Nouveauté par rapport à l’exemple basique, deleteOldData dans le premier objet qui permet de demander à SFDMU de supprimer la data avant de procéder à l’import. (Alors oui ici supprimer des produits est là uniquement pour l’exemple, de manière générale, ce n’est absolument pas le bon objet sur lequel faire ça ).
De même pour excludedFields qui permet de ne pas prendre en compte certains champs d’objet.
Vous retrouverez la liste des attributs possible au niveau objet sur la documentation ScriptObject Object
- Troisième niveau d’attributs en toute fin de configuration et donc relatif à l’exécution de la migration elle même, vous aurez vu par exemple bulkTreshold pour définir le nombre d’objet par batch, bulkApiVersion pour définir l’utilisation de l’api bulk v2 ou encore AllOrNone pour définir si la migration doit faire s’arrêter sur une erreur ou poursuivre…
Autant de possibilités de paramétrage dont vous pourrez trouver tous les détails dans la documentation Script Object
3/ Addons
Véritable atout de l’outil, les Addons permettent de scripter des actions pré migration, post migration par exemple, ou encore de procéder à des manipulations de données spécifiques pour certains packages (au hasard CPQ pour les price rules, price actions et autre qui nécessitent parfois de temporairement modifier des données pour respecter l’ordre d’insertion des objets comportant des restrictions de valeur) au moment de leur récupération, ou avant/après leur envoi dans l’org cible…
Cet article ayant avant tout pour but de vous faire découvrir SFDMU, je ne vais pas rentrer dans le détail des Addons. Je vous invite à aller voir directement la documentation SFDMU Add-On API ou encore celle des Addons personnalisés que vous voudriez implémenter vous-même Custom Add-On API
4/ Exécution de la migration
Lorsque vous avez terminé la description de votre migration dans le fichier export.json, il ne reste plus qu’à croiser les doigts et tester la migration. Bon alors d’abord vous tapez la commande et ensuite vous croisez les doigts, ce sera quand même plus facile.
Je vous mets ici 3 lignes pour montrer qu’il est facile de switcher entre les modes org à org, org à csv et csv à org. La première ligne de commande effectuant la migration org à org (les fichiers CSV intermédiaires seront tout de même créés sur votre poste pendant l’opération, mais vous n’aurez ainsi qu’une seule commande à taper.
La seconde ligne de commande montre comment importer la donnée depuis un fichier CSV dans une org, et bien entendu la troisième ligne de commande montre comment exporter la donnée d’une org dans un/des fichiers csv.
Il est également possible de paramétrer les orgs source/destination et le mode de migration dans le fichier export.json. Tous les détails sont dans la documentation encore une fois 😉
5/ Interface graphique
Parce que les images parlent parfois bien plus que les mots, regardons une capture de l’interface disponible (version actuelle 4.9.0)
Ici, je me trouve sur la configuration en pointer-cliquer dans laquelle j’ai sélectionné quelques objets pour la démonstration. Vous pouvez voir que cela peut grandement aider à la sélection des champs d’objet, par exemple, par la présence des listes de sélections qui permettent de sélectionner rapidement des champs par différents critères de regroupement, ou alors en sélection manuelle dans les arbres de regroupement de champs.
Nous y retrouvons aussi les différents attributs, comme par exemple les Addons, les requêtes et filtres, les mappings de champ…
Cette interface offre également un moyen simple d’analyser les logs, de tester la migration avant de l’exécuter réellement, d’avoir une vue plus quand même plus élégante que du texte dans un fichier…
La version actuelle semble également plus robuste que la version que j’avais utilisée il y a quelque temps (qui souffrait de quelques plantages occasionnels sur MacOs).
Alors vous qui appréhendez les migrations et qui n’avez pas souscrit à des outils hors de prix pour vous aider dans ces tâches, que diriez-vous d’essayer SFDMU, outil gratuit est pourtant très performant ?
Vous trouverez tous les détails et une bonne partie de ce qui est expliqué ici dans la documentation bien faite de SFDMU sur le site https://help.sfdmu.com/