
Andrew Hanna

Andrew Hanna

Réponse courte : Décidez qui possède chaque champ avant la première release, car ce choix est difficile à défaire. Rendez subscriber editable les valeurs que les clients ajusteront, gardez upgradeable les valeurs dont dépend votre code, considérez les valeurs de picklist et les noms d'enregistrements protégés comme définitifs, et testez chaque mise à niveau sur une org qui contient déjà des modifications client.
Une mise à niveau de custom metadata casse un abonné de trois façons :
Les trois cas remontent à des choix de packaging faits avant la première release, pas à la commande de déploiement. Le chemin sûr commence donc par la définition du type.
Chaque champ d'un custom metadata type packagé porte l'un de trois réglages, comme l'explique l'unité Trailhead de Salesforce sur la protection des custom metadata :
Règle pratique : si un client voudra un jour ajuster la valeur, rendez-la subscriber editable et acceptez de ne plus pouvoir la corriger dans son org. Si la valeur détermine le comportement de votre code, gardez-la upgradeable. Réservez locked aux valeurs qui ne doivent jamais bouger. Attention : les champs subscriber editable sur des enregistrements protégés sont verrouillés après la release, alors planifiez protection et gestion ensemble.
Dans les packages gérés de deuxième génération, les enregistrements custom metadata retirés sont marqués comme obsolètes (deprecated) s'ils sont visibles par l'org abonnée, et supprimés définitivement sinon, selon le guide Salesforce sur le retrait de composants de métadonnées des packages 2GP. Les composants obsolètes restent en place jusqu'à ce qu'un administrateur abonné les supprime, et le Setup Audit Trail consigne ce que la mise à niveau a retiré. Deux conséquences :
Si vous repensez votre modèle de packages, notre guide pour changer d'outil DevOps Salesforce sans casser votre pipeline montre comment préserver l'historique des packages lors d'un changement d'outil.
Metadata.Operations.enqueueDeployment et une classe
Metadata.DeployCallback, et Salesforce limite le nombre de ces
déploiements en file d'attente simultanément.
Quand deux branches modifient le même enregistrement .md-meta.xml, suivez
notre guide pour
résoudre les conflits de fusion de métadonnées Salesforce sans perdre le travail de
personne.
Oui, dans une moindre mesure. Les équipes internes déploient elles aussi des enregistrements custom metadata entre sandboxes et production, et déployer un enregistrement depuis la source écrase la copie de l'org cible. Si les administrateurs ajustent des enregistrements directement en production, le prochain déploiement depuis Git les réinitialise sans bruit. Faites de Git le seul endroit où ces enregistrements changent, ou excluez du déploiement les enregistrements gérés par les administrateurs. Notre guide pour permettre aux administrateurs de déployer sans toucher à Git montre comment leur offrir un chemin suivi plutôt que des modifications directes.
Serpent est la plateforme DevOps Salesforce développée par Tekunda. Elle déploie les custom metadata via le même pipeline relu que le reste de vos métadonnées, avec revue de code par IA et approbation humaine avant la production, pour qu'un changement de gestion ou de picklist soit vérifié par une deuxième paire d'yeux avant de partir. Comparez les offres Serpent, ou parcourez d'autres SF Guides sur le packaging et le CI/CD.
Une mise à niveau de package écrase-t-elle les valeurs custom metadata des abonnés ?
Seulement sur les champs upgradeable. Les mises à niveau n'écrasent jamais une valeur qu'un abonné a modifiée dans un champ subscriber editable.
Puis-je supprimer une valeur de picklist d'un custom metadata type packagé ?
Non. Après la release, vous pouvez ajouter des valeurs, mais pas supprimer ni désactiver celles qui existent.
Apex peut-il mettre à jour des enregistrements custom metadata ?
Oui, mais pas en DML. Utilisez Metadata.Operations.enqueueDeployment, qui
déploie de façon asynchrone et rend compte via une classe de callback.
Qui développe Serpent ?
Tekunda développe Serpent, une plateforme DevOps Salesforce avec CI/CD, revue de code par IA et déploiements approuvés par un humain.
Sans engagement.