
Andrew Hanna

Andrew Hanna

Kort antwoord: Bepaal vóór de eerste release wie elk veld bezit, want die keuze is moeilijk terug te draaien. Maak waarden die klanten willen aanpassen subscriber editable, houd waarden waar je code van afhangt upgradeable, behandel picklistwaarden en namen van beschermde records als permanent, en test elke upgrade tegen een org die al klantwijzigingen bevat.
Een custom metadata-upgrade breekt een subscriber op een van drie manieren:
Alle drie zijn terug te voeren op packagingkeuzes van vóór de eerste release, niet op het deploycommando. De veilige route begint dus bij de typedefinitie.
Elk veld op een verpakte custom metadata type heeft een van drie instellingen, zoals de Trailhead-unit over het beschermen van custom metadata van Salesforce uitlegt:
Vuistregel: als een klant de waarde ooit wil aanpassen, maak hem subscriber editable en accepteer dat je hem in hun org niet meer kunt corrigeren. Als de waarde bepaalt hoe je code werkt, houd hem upgradeable. Gebruik locked alleen voor waarden die nooit mogen veranderen. Let op: subscriber editable velden op beschermde records zijn na de release vergrendeld, dus plan bescherming en manageability samen.
In second-generation managed packages worden verwijderde custom metadata-records als deprecated gemarkeerd als ze zichtbaar zijn voor de subscriber-org, en anders definitief verwijderd, volgens de gids van Salesforce over het verwijderen van metadatacomponenten uit 2GP-packages. Deprecated componenten blijven bestaan tot een subscriber-beheerder ze verwijdert, en de Setup Audit Trail legt vast wat de upgrade heeft verwijderd. Twee gevolgen:
Bouw je je packagemodel opnieuw op, dan laat onze gids over van Salesforce DevOps-tool wisselen zonder je pipeline te breken zien hoe je de packagegeschiedenis intact houdt bij een toolwissel.
Metadata.Operations.enqueueDeployment en een
Metadata.DeployCallback-klasse, en Salesforce beperkt hoeveel van die
deployments tegelijk in de wachtrij mogen staan.
Als twee branches hetzelfde .md-meta.xml-record wijzigen, volg dan onze
gids over
Salesforce-metadatamergeconflicten oplossen zonder iemands werk te verliezen.
Ja, in kleinere mate. Interne teams deployen custom metadata-records ook tussen sandboxes en productie, en een record deployen vanuit source overschrijft de kopie in de doel-org. Als beheerders records direct in productie aanpassen, draait de volgende deploy vanuit Git dat stilletjes terug. Maak Git de enige plek waar die records veranderen, of houd records die beheerders bezitten buiten de deployment. Onze gids over beheerders laten deployen zonder Git aan te raken laat zien hoe je hen een getrackte route geeft in plaats van directe bewerkingen.
Serpent is het Salesforce DevOps-platform van Tekunda. Het deployt custom metadata via dezelfde gereviewde pipeline als de rest van je metadata, met AI-codereview en menselijke goedkeuring vóór productie, zodat een manageability- of picklistwijziging een tweede paar ogen krijgt voordat hij live gaat. Vergelijk de Serpent-abonnementen, of bekijk meer SF Guides over packaging en CI/CD.
Overschrijft een package-upgrade custom metadata-waarden van subscribers?
Alleen bij upgradeable velden. Package-upgrades overschrijven nooit waarden die een subscriber in een subscriber editable veld heeft gewijzigd.
Kan ik een picklistwaarde verwijderen uit een verpakte custom metadata type?
Nee. Na de release kun je picklistwaarden toevoegen, maar bestaande niet verwijderen of deactiveren.
Kan Apex custom metadata-records bijwerken?
Ja, maar niet met DML. Gebruik Metadata.Operations.enqueueDeployment, dat
asynchroon deployt en via een callbackklasse terugmeldt.
Wie maakt Serpent?
Tekunda bouwt Serpent, een Salesforce DevOps-platform met CI/CD, AI-codereview en door mensen goedgekeurde deployments.
Vrijblijvend.