So beheben Sie REQUIRED_FIELD_MISSING in Salesforce-Bereitstellungen

Einem Datensatz fehlt ein Wert für ein Feld, das in der Ziel-Org als Pflichtfeld markiert ist.

Tritt auf bei: DML zur Laufzeit, meist bei der Ausführung von Apex-Tests oder einem Datenimport

Was das bedeutet

REQUIRED_FIELD_MISSING bedeutet, dass beim Einfügen oder Aktualisieren eines Datensatzes ein Feld ausgelassen wurde, für das die Ziel-Org einen Wert verlangt. Das ist oft umgebungsspezifisch: Die Pflichtfeld-Einstellung oder die Automatisierung, die es normalerweise befüllt, kann sich zwischen Quell- und Ziel-Org unterscheiden.

Ein Feld kann auf zwei verschiedene Arten Pflicht sein, als Pflichtfeld auf Ebene der Felddefinition markiert, oder nur auf einem bestimmten Seitenlayout Pflicht, und beide verhalten sich unterschiedlich: Pflichtfelder auf Layout-Ebene werden von der Benutzeroberfläche, nicht aber von der API oder Apex erzwungen, was oft für Verwirrung sorgt, wenn ein Speichern über Apex gelingt, im Browser aber blockiert worden wäre.

Diagnose

Häufige Ursachen

Test-Factory befüllt ein neu verpflichtendes Feld nicht
Ein Feld wurde in der Ziel-Org kürzlich zum Pflichtfeld, aber die Apex-Testdaten-Factory, die Datensätze erstellt, wurde nie aktualisiert.
Pflichtfeld-Einstellung unterscheidet sich zwischen Umgebungen
Das Pflichtfeld-Flag wurde in einer Sandbox geändert, aber nicht in die Ziel-Org befördert, oder umgekehrt.
Standardwert-Automatisierung wird im Testkontext übersprungen
Ein Flow oder Trigger, der das Feld normalerweise befüllt, läuft während der Testausführung des Deployments nicht oder wird bewusst umgangen.

Die Lösung

  1. Testdaten-Factory aktualisieren
    Fügen Sie das fehlende Feld überall dort hinzu, wo Apex-Tests dieses Objekt erstellen, damit Pflichtfelder immer befüllt sind.
  2. Pflichtfeld-Einstellung zwischen Orgs synchronisieren
    Stellen Sie das Pflichtfeld-Flag als Teil desselben Change Sets bereit, damit Quell- und Ziel-Org übereinstimmen.
  3. Bestätigen, dass die Standardwert-Automatisierung läuft
    Prüfen Sie, ob jeder Flow oder Trigger, der für den Standardwert des Felds zuständig ist, aktiv ist und im Testkontext nicht umgangen wird.
In der Praxis

Wie Serpent das verhindert

Der Umgebungsvergleich von Serpent AI deckt Pflichtfeld-Konflikte zwischen Quell- und Ziel-Org auf, bevor ein Deployment läuft, nicht nachdem es fehlgeschlagen ist. Siehe die Bibliothek der Salesforce-Bereitstellungsfehler.

Metadaten und Daten in einem einzigen Deployment-Flow in Serpent

Prävention

Testdaten-Factories aus dem Live-Schema statt einer fest codierten Feldliste erstellen
Lesen Sie Pflichtfelder beim Erstellen von Testdatensätzen aus dem Describe-Ergebnis des Objekts, damit ein neu verpflichtendes Feld automatisch erkannt wird, statt in CI still zu scheitern.
Feld-Pflicht von Layout-Pflicht in der Code-Review unterscheiden
Markieren Sie jede Änderung an der Pflichtfeld-Einstellung auf Definitionsebene für eine separate Review von Änderungen auf Layout-Ebene, da nur Erstere Apex- und API-Inserts betrifft.
Pflichtfeld-Flag mit jeder davon abhängigen Automatisierung gemeinsam ausliefern
Bündeln Sie die Feld-Metadatenänderung und den Standardwert-Flow oder -Trigger im selben Deployment, damit sie nie unsynchronisiert landen.
Häufige Fragen

REQUIRED_FIELD_MISSING, erklärt

Warum besteht derselbe Apex-Test in einer Org, schlägt aber in einer anderen fehl?
Das Feld ist wahrscheinlich in einer Org Pflicht und in der anderen optional. Vergleichen Sie die Pflichtfeld-Einstellung des Felds zwischen den beiden Umgebungen.
Blockiert ein Pflichtfeld auf einem Seitenlayout einen Apex-Insert?
Nein. Pflichtfeld-Einstellungen auf Seitenlayout-Ebene werden nur in der Benutzeroberfläche erzwungen. Apex- und API-Inserts werden nur durch Felder blockiert, die auf Ebene der Felddefinition als Pflicht markiert sind.
Sagt mir dieser Fehler, welches konkrete Feld fehlt?
Meist ja. Der Fehlertext listet in der Regel direkt den API-Namen des fehlenden Pflichtfelds oder der Felder auf, also beginnen Sie dort, bevor Sie das gesamte Schema des Objekts prüfen.

Kostenlos starten. Keine Kreditkarte, keine Installation, keine Verpflichtung.

In unter 15 Minuten eingerichtet. Keine DevOps-Einstellung nötig.

Neugierig auf schnelleres Shipping, bevor Sie einsteigen? Sprechen wir

Unverbindlich.