Als je in Salesforce automatisering bouwt, kom je al snel situaties tegen waarin je waarden wilt instellen die voor meerdere processen gelden – denk aan prijzen, percentages, e-mailadressen of API-endpoints. Je kunt die natuurlijk hardcoden in je Flow of Apex, maar dan wordt het onderhoud lastig. Elke aanpassing betekent een nieuwe deployment of een Flow-wijziging.
Custom Metadata Types (CMDT) bieden een slimme oplossing: je slaat configuratiegegevens op als metadata in plaats van als operationele data. Dat betekent dat je waarden kunt wijzigen zonder code aan te passen, en dat je instellingen automatisch meeverhuizen tussen sandbox en productie. In dit artikel leggen we uit wat Custom Metadata precies is, wanneer je het gebruikt en geven we praktische voorbeelden.
Wat is Custom Metadata?
Custom Metadata Types zijn metadata – geen operationele data zoals Accounts of Opportunities. Dat klinkt abstract, maar het verschil is cruciaal: metadata beschrijft hoe je systeem werkt, terwijl data beschrijft wat er in je systeem gebeurt.
Voordelen van Custom Metadata
- ✓Meeneembaar in deployments
Custom Metadata records reizen automatisch mee met change sets, packages en deployments – net als custom velden of page layouts.
- ✓Consistent tussen omgevingen
Geen handmatig overzetten van configuratie. Wat je in sandbox bouwt, werkt hetzelfde in productie.
- ✓Geen hardcoding in Flow of Apex
Je logica blijft generiek. Waarden staan in metadata-records, niet in de code.
- ✓Door admins te beheren
Een beheerder kan Custom Metadata records aanpassen zonder developer-skills of deployment.
Wanneer gebruik je Custom Metadata?
Custom Metadata is bedoeld voor configuratiegegevens of regels die zelden veranderen maar cruciaal zijn voor je processen. Denk aan tarieven, drempelwaarden, endpoints, afzendergegevens of rekenparameters. Hieronder vier fictieve voorbeelden die laten zien wanneer Custom Metadata écht waardevol is.
Use-case 1 – Prijslogica voor abonnementen
Een fictief softwarebedrijf biedt verschillende abonnementen aan. De prijzen hangen af van looptijd en aantal gebruikers. In plaats van deze prijzen in Apex of Flow te hardcoden, staan ze in Custom Metadata.
| Naam | Looptijd (mnd) | Gebruikers | Prijs p/m |
|---|---|---|---|
| Starter_12 | 12 | 1–5 | €49 |
| Starter_24 | 24 | 1–5 | €45 |
| Business_12 | 12 | 6–20 | €89 |
Hoe werkt het? Een Flow haalt deze metadata op basis van looptijd en aantal gebruikers, berekent de prijs en vult die in op de Opportunity. Als prijzen wijzigen, pas je alleen de metadata-records aan – de Flow blijft ongewijzigd.
Use-case 2 – Regionale toeslagen
Een fictieve koeriersdienst rekent per regio een toeslag op het orderbedrag. Deze toeslagen staan in Custom Metadata.
| Regio | Toeslag (%) |
|---|---|
| Randstad | 8 |
| Noord | 5 |
| Zuid | 6 |
Hoe werkt het? Een Flow kijkt naar de regio van de klant, haalt de juiste toeslag op uit Custom Metadata en berekent het totaalbedrag. Als de toeslagen veranderen, pas je alleen de metadata aan.
Use-case 3 – E-mailafzenders per merk
Een fictieve organisatie heeft meerdere merken, elk met een eigen afzenderidentiteit. Custom Metadata zorgt dat flows automatisch de juiste afzender selecteren.
| Merk | Afzendernaam | E-mailadres |
|---|---|---|
| GreenTech | GreenTech Team | info@greentech.nl |
| SolarNext | SolarNext Support | support@solarnext.nl |
Hoe werkt het? Een Flow kijkt naar het merk van de klant, haalt de juiste afzender op uit Custom Metadata en gebruikt die in de e-mailactie. Nieuw merk toevoegen? Gewoon een nieuwe metadata-record aanmaken.
Use-case 4 – API-instellingen per omgeving
Een fictieve integratie roept een extern systeem aan. De API-URL en sleutel verschillen per omgeving. Met Custom Metadata hoef je je code of Flow niet per omgeving aan te passen.
| Omgeving | API Base URL | API Key |
|---|---|---|
| Test | https://api-test.ordersystem.nl | test123 |
| Productie | https://api.ordersystem.nl | live987 |
Hoe werkt het? Je Apex-class of Flow detecteert de omgeving (bijvoorbeeld via een Named Credential of organization ID), haalt de juiste metadata-record op en gebruikt die URL en sleutel. Elke omgeving heeft zijn eigen metadata-records – geen handmatige aanpassingen nodig.
Waarom geen Custom Object?
Veel mensen vragen: waarom geen Custom Object gebruiken? Het antwoord ligt in het verschil tussen operationele data en configuratie.
| Gebruik | Kies voor |
|---|---|
| Operationele data (Accounts, Orders, Transacties) | Custom Object |
| Instelbare logica / configuratie | Custom Metadata |
| Tijdelijke of gebruikersspecifieke data | Custom Settings |
Let op: Custom Metadata reist automatisch mee met deployments. Custom Object-data moet je handmatig overzetten tussen omgevingen (via data import/export of API). Voor configuratie is dat onhandig.
Waar kun je Custom Metadata gebruiken?
In Flows via Get Records
Sinds Summer '20 kun je Custom Metadata volledig opvragen met het Get Records-element. Je kunt filteren op velden en de waarden gebruiken in je Flow-logica.
In Apex
Gebruik MyType__mdt.getAll() om alle records op te halen, of query met SOQL:
In Validation Rules
Je kunt Custom Metadata gebruiken om dynamische uitzonderingen of drempelwaarden te definiëren in validatieregels.
In formules of record types
Gebruik metadata om standaardwaarden of condities te bepalen zonder hardcoding.
Fictief praktijkvoorbeeld – Energiebedrijf
Een fictief energiebedrijf biedt gas, stroom en waterstof aan. Elk energietype heeft een eigen CO₂-factor die gebruikt wordt om de uitstoot per offerte te berekenen. Deze factoren veranderen jaarlijks op basis van nieuwe wetgeving.
Stap-voor-stap uitwerking
Maak Custom Metadata Type
Energy_Factor__mdt met velden: Energietype__c (Text), CO2_Factor__c (Number).
Vul metadata-records in
Voeg records toe voor elk energietype:
- • Gas: 1.8 kg CO₂/m³
- • Stroom: 0.4 kg CO₂/kWh
- • Waterstof: 0.0 kg CO₂/kg
Bouw Flow voor offerte
De Flow haalt het juiste metadata-record op basis van het gekozen energietype en gebruikt de CO₂-factor om de totale uitstoot te berekenen.
Wijzig factor in metadata
Als de CO₂-factor verandert, pas je alleen het metadata-record aan. Geen herdeployment, geen Flow-wijziging – het werkt direct.
Voordeel: Je behoudt één generieke Flow. Alle energie-specifieke waarden staan in Custom Metadata en zijn beheerbaar door admins.
Tips van CRM Force
- ✓Logica die je wilt centraliseren
- ✓Waarden die je meeneemt tussen omgevingen
- ✓Delen tussen Flow en Apex
- ✓Configuratie die zelden wijzigt maar cruciaal is
- ✗Klantdata of transacties
- ✗Data die gebruikers dagelijks wijzigen
- ✗Tijdelijke campagnes of seizoensdata
- ✗Data met complexe relaties of grote volumes
