Hoe je REQUIRED_FIELD_MISSING in Salesforce-implementaties oplost

Een record mist een waarde voor een veld dat als verplicht is gemarkeerd in de doelorganisatie.

Komt voor tijdens: DML op runtime, meestal Apex-testuitvoering of een data-import

Wat het betekent

REQUIRED_FIELD_MISSING betekent dat het invoegen of bijwerken van een record een veld heeft overgeslagen waarvoor de doelorganisatie een waarde vereist. Dit is vaak omgevingsspecifiek: de verplichte instelling van het veld, of de automatisering die het normaal gesproken invult, kan verschillen tussen de bron- en doelorganisatie.

Een veld kan op twee verschillende manieren verplicht zijn, gemarkeerd als verplicht op het niveau van de velddefinitie, of alleen verplicht op een specifieke paginalayout, en beide gedragen zich anders: verplichte velden op layoutniveau worden afgedwongen door de UI maar niet door de API of Apex, wat een veelvoorkomende bron van verwarring is wanneer een opslag via Apex slaagt maar in de browser zou zijn geblokkeerd.

Diagnose

Veelvoorkomende oorzaken

Testfactory vult een nieuw verplicht veld niet in
Een veld is onlangs verplicht geworden in de doelorganisatie, maar de Apex-testdatafactory die records opbouwt is nooit bijgewerkt.
Verplichte instelling verschilt tussen omgevingen
De verplichte vlag van het veld is gewijzigd in de ene sandbox maar niet gepromoveerd naar de doelorganisatie, of omgekeerd.
Automatisering voor standaardwaarden wordt overgeslagen in testcontext
Een flow of trigger die het veld normaal invult, draait niet, of wordt bewust omzeild, tijdens de testuitvoering van de implementatie.

De oplossing

  1. Werk de testdatafactory bij
    Voeg het ontbrekende veld toe op elke plek waar Apex-tests dat object opbouwen, zodat verplichte velden altijd worden ingevuld.
  2. Synchroniseer de verplichte instelling tussen organisaties
    Implementeer de verplichte vlag van het veld als onderdeel van dezelfde change set, zodat bron- en doelorganisatie overeenkomen.
  3. Bevestig dat de automatisering voor standaardwaarden draait
    Controleer of elke flow of trigger die verantwoordelijk is voor het standaard invullen van het veld actief is en niet wordt omzeild in testcontext.
In de praktijk

Hoe Serpent dit voorkomt

De omgevingsvergelijking van Serpent AI brengt mismatches in verplichte velden tussen bron- en doelorganisatie aan het licht voordat een implementatie draait, niet nadat deze is mislukt. Zie de bibliotheek met Salesforce-implementatiefouten.

Metadata en data in één deploymentflow in Serpent

Preventie

Bouw testdatafactories op basis van live schema, niet op een hardcoded veldlijst
Lees verplichte velden uit het describe-resultaat van het object bij het opbouwen van testrecords, zodat een nieuw verplicht veld automatisch wordt opgemerkt in plaats van stilletjes te falen in CI.
Onderscheid veld-verplicht van layout-verplicht in code review
Markeer elke wijziging aan de verplicht-op-definitieniveau-instelling van een veld apart voor review van wijzigingen op layoutniveau, omdat alleen de eerste Apex- en API-invoegingen beïnvloedt.
Lever de verplichte vlag van een veld samen met alle automatisering die ervan afhankelijk is
Bundel de metadatawijziging van het veld en de Flow of trigger voor standaardwaarden in dezelfde implementatie, zodat ze nooit uit sync raken.
Veelgestelde vragen

REQUIRED_FIELD_MISSING, uitgelegd

Waarom slaagt dezelfde Apex-test in de ene organisatie maar faalt deze in de andere?
Het veld is waarschijnlijk verplicht in de ene organisatie en optioneel in de andere. Vergelijk de verplichte instelling van het veld tussen de twee omgevingen.
Blokkeert een verplicht veld op een paginalayout een Apex-invoeging?
Nee. Verplichte instellingen op paginalayoutniveau worden alleen in de UI afgedwongen. Apex- en API-invoegingen worden alleen geblokkeerd door velden die op het niveau van de velddefinitie als verplicht zijn gemarkeerd.
Vertelt deze fout mij welk specifiek veld ontbreekt?
Meestal wel. De foutmelding vermeldt doorgaans direct de API-naam van het ontbrekende verplichte veld of velden, dus begin daar voordat je het volledige schema van het object controleert.

Begin gratis. Geen creditcard, geen installatie, geen verplichtingen.

In minder dan 15 minuten ingericht. Geen DevOps-aanwerving nodig.

Benieuwd naar sneller releasen voordat je instapt? Laten we praten

Vrijblijvend.