
Andrew Hanna

Andrew Hanna

Metadata-conflicten in Salesforce ontstaan doordat de configuratie van je org in duizenden XML-bestanden leeft, en drie eigenschappen van die bestanden maken botsingen routine: de Metadata API geeft elementen in een niet-deterministische volgorde terug, monolithische bestanden zoals profielen verzamelen wijzigingen uit ongerelateerd werk, en teams mergen vanuit sandboxes die uit sync zijn geraakt. De meeste conflicten die je bestrijdt zijn vals, ruis in plaats van echte onenigheid. Je stopt ze met source tracking, kortlevende branches, permission sets in plaats van profielen, en een metadata-bewuste merge in plaats van een kale git-diff.
Een metadata-conflict is een merge-conflict in de XML-bestanden die je org definieren: objecten, velden, Apex, flows, profielen, permission sets en layouts. Het ontstaat wanneer twee branches hetzelfde bestand wijzigen en git ze niet automatisch kan verzoenen. Omdat Salesforce configuratie als tekst weergeeft, wordt elke admin-klik en elke developer-commit uiteindelijk een regel in een bestand dat git moet mergen.
Het addertje is dat veel van deze conflicten vals zijn. Git markeert een botsing waar geen echte semantische onenigheid is, alleen herordende of geherformatteerde XML.
Vier grondoorzaken, ruwweg op volgorde van hoe vaak ze toeslaan:
Sommige bestandstypen zijn veel conflictgevoeliger dan andere:
Als een conflict toch landt:
Een kale three-way git-merge kan herordende XML niet onderscheiden van een echte wijziging, en daarom is het hele Salesforce DevOps-ecosysteem geconvergeerd op metadata-bewust mergen. Voor het volledige draaiboek, inclusief het lezen van een profieldiff en wat te doen met een geconflicteerde Flow, zie Salesforce-metadataconflicten oplossen zonder iemands werk kwijt te raken.
Verschillende platforms bieden semantisch of metadata-bewust mergen dat valse conflicten automatisch oplost en alleen de echte markeert. Gearset, Copado, AutoRABIT, Flosum, Salto en Blue Canvas werken allemaal in dit domein, elk met een andere balans tussen automatisering en controle. Serpent kiest een git-native aanpak: het leest je metadata contextueel, laat niet-functionele XML-ruis wegvallen, en toont alleen echte conflicten voor een mens om te beslissen, zodat kortlevende branches goedkoop blijven om te mergen.
Zijn de meeste Salesforce metadata-conflicten echt?
Nee. Veel zijn valse conflicten veroorzaakt door niet-deterministische XML-volgorde of herformattering, en een metadata-bewuste merge negeert ze automatisch.
Waarom zijn profielen zo conflictgevoelig?
Een profiel is een groot bestand met rechten voor elk object en veld, dus ongerelateerde wijzigingen landen naast elkaar en git leest ze als een botsing.
Voorkomen permission sets conflicten?
Ze verminderen ze. Kleinere, doelgerichte permission sets betekenen dat minder mensen hetzelfde bestand bewerken, wat overlap verkleint.
Hoe helpen kortlevende branches?
Dagelijks naar de trunk mergen houdt divergentie klein, zodat elke merge uren aan wijziging verzoent in plaats van weken.
Kan CI/CD metadata-conflicten elimineren?
Niet volledig, maar source tracking, frequente merges en metadata-bewuste tooling maken van de meeste conflicten automatische oplossingen.
Vrijblijvend.