So beheben Sie MISSING_FIELD in Salesforce-Bereitstellungen

Eine Listenansicht, ein Report oder ein Layout referenziert ein Feld, das auf dem Objekt in der Ziel-Org nicht existiert.

Tritt auf bei: der Validierung des Metadaten-Deployments, speziell bei deklarativen UI-Komponenten

Was das bedeutet

MISSING_FIELD tritt auf, wenn eine Komponente, meist eine Listenansicht, ein Report oder ein Seitenlayout, auf einen Feld-API-Namen verweist, den Salesforce auf dem Objekt in der Ziel-Org nicht finden kann. Das Feld wurde dort entweder nie bereitgestellt, umbenannt oder nach Erstellung der abhängigen Komponente gelöscht.

Es ist das deklarative Deployment-Zeit-Gegenstück zu INVALID_FIELD, das in SOQL und Apex auftritt; beide gehen auf eine Feldreferenz zurück, die das Schema der Ziel-Org derzeit nicht unterstützt, nur bei unterschiedlichen Metadatentypen.

Diagnose

Häufige Ursachen

Feld umbenannt oder gelöscht
Ein benutzerdefiniertes Feld wurde umbenannt oder entfernt, aber Listenansichten, Reports oder Layouts, die auf den alten API-Namen verweisen, wurden nie aktualisiert.
Feld separat bereitgestellt
Das benutzerdefinierte Feld befindet sich in einem anderen Deployment oder Paket und hat die Ziel-Org noch nicht erreicht, sodass abhängige Komponenten bereitgestellt werden, bevor es existiert.
Tippfehler im Feld-API-Namen
Die Referenz verwendet das falsche Objektpräfix oder es fehlt das __c-Suffix bei einem benutzerdefinierten Feld.

Die Lösung

  1. Das Feld im selben Deployment einbeziehen
    Bündeln Sie das benutzerdefinierte Feld mit der Listenansicht, dem Report oder Layout, das davon abhängt, damit beide gemeinsam in der Ziel-Org landen.
  2. Abhängige Komponenten nach einer Umbenennung neu generieren
    Speichern oder exportieren Sie Listenansichten und Reports, die darauf verweisen, nach dem Umbenennen oder Neuerstellen eines Felds erneut.
  3. API-Namen noch einmal prüfen
    Bestätigen Sie, dass der Feld-API-Name genau richtig geschrieben ist, einschließlich Groß-/Kleinschreibung und __c-Suffix, auf dem richtigen Objekt.
    sf data query --query "SELECT QualifiedApiName FROM FieldDefinition WHERE EntityDefinition.QualifiedApiName = 'Account'" --target-org myOrgAlias
In der Praxis

Wie Serpent das verhindert

Serpent AI grenzt Aufgaben nach Abhängigkeit ab, nicht nur nach der berührten Komponente, sodass eine Listenansicht oder ein Report automatisch mit dem benötigten Feld gebündelt wird. Siehe die Bibliothek der Salesforce-Bereitstellungsfehler.

Metadaten und Daten in einem einzigen Deployment-Flow in Serpent

Prävention

Listenansichten und Reports als Teil derselben Aufgabe wie das referenzierte Feld bereitstellen
Trennen Sie ein Feld und die davon abhängige Listenansicht, den Reporttyp oder das Layout niemals in separate Deployment-Aufgaben.
Deklarative Metadaten durchsuchen, bevor ein Feld umbenannt wird
Prüfen Sie ListView-, Report- und Layout-XML auf den API-Namen eines Felds, bevor Sie es umbenennen, nicht nur Apex und Flow.
Feldmetadaten vor manueller Bearbeitung einer Listenansicht oder eines Reports neu abrufen
Rufen Sie das aktuelle Objektschema ab, bevor Sie XML für eine Listenansicht oder einen Reporttyp manuell bearbeiten, damit ein veralteter Feldname nie übernommen wird.
Häufige Fragen

MISSING_FIELD, erklärt

Warum tritt das nur in einer Sandbox auf und nicht in einer anderen?
Das Feld existiert fast sicher in einer Org und nicht in der anderen, meist weil es in einer Umgebung bereitgestellt, aber noch nicht in die andere befördert wurde.
Behebt das Löschen einer Listenansicht, die auf ein fehlendes Feld verweist, das Deployment?
Es behebt das unmittelbare Symptom, aber prüfen Sie, ob eigentlich das Feld oder die Listenansicht existieren sollte, bevor Sie eines von beiden löschen; die Lösung hängt davon ab, welche Seite der Abweichung falsch ist.
Kann ein Reporttyp MISSING_FIELD verursachen, selbst wenn der Report das Feld selbst nicht anzeigt?
Ja. Reporttypen können Felder als verfügbare Spalten referenzieren, auch wenn ein bestimmter Report sie nicht verwendet, und die zugrunde liegenden Reporttyp-Metadaten benötigen weiterhin, dass das Feld existiert.

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.