So beheben Sie INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY bei Salesforce-Deployments

Dem Benutzer, der das Deployment ausführt, fehlt Feld- oder Objektzugriff auf einen Datensatz, auf den während eines Apex-Tests oder einer Automatisierung verwiesen wird.

Tritt auf bei: Laufzeit-DML, meist während der Ausführung von Apex-Tests

Was das bedeutet

INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY tritt auf, wenn das Profil oder Permission Set, das das Deployment ausführt, meist während der Ausführung von Apex-Tests, ein Feld oder Objekt nicht sehen oder bearbeiten kann, das ein Trigger, Flow oder Genehmigungsprozess dabei berührt. Salesforce setzt Field-Level Security oder Freigaberegeln genau wie konfiguriert durch; dem Deployment-Benutzer fehlt schlicht der Zugriff, den die Automatisierung voraussetzt.

Das „Cross-Reference“ im Namen ist der Hinweis: Es geht nicht um das Objekt, das Sie direkt einfügen oder aktualisieren, sondern um ein verwandtes Objekt oder Feld, das die Automatisierung nebenbei berührt, den übergeordneten Datensatz eines Lookups, eine verwandte Liste, oder ein Feld, das das Profil des ausführenden Benutzers einschränkt.

Diagnose

Häufige Ursachen

Fehlende Field-Level Security
Dem Profil des deployenden Benutzers fehlt Lese- oder Bearbeitungszugriff auf ein Feld, in das ein Apex-Test oder Trigger während der Validierung schreibt.
Flow oder Genehmigungsprozess läuft als bestimmter Benutzer
Ein für einen Flow oder Genehmigungsprozess konfigurierter 'Run-as'-Benutzer hat keinen Objekt- oder Feldzugriff auf die verarbeiteten Datensätze.
Freigaberegeln blockieren Testdaten
Organisationsweite Standardeinstellungen oder Freigaberegeln hindern den ausführenden Benutzer daran, Datensätze zu berühren, die ein Apex-Test erstellt oder aktualisiert.

Die Lösung

  1. Fehlende Berechtigungen gewähren
    Fügen Sie dem Profil oder Permission Set, das dem deployenden Benutzer zugewiesen ist, Field-Level Security und Objektberechtigungen hinzu.
  2. 'Run-as'-Einstellungen prüfen
    Prüfen Sie jeden Flow oder Genehmigungsprozess, der so konfiguriert ist, dass er als bestimmter Benutzer läuft, und bestätigen Sie, dass die Berechtigungen dieses Benutzers die betroffenen Objekte abdecken.
  3. Freigabe für den Testkontext anpassen
    Verwenden Sie bei Bedarf 'without sharing'-Apex-Klassen für den Testaufbau, oder erweitern Sie die Freigaberegeln, um den automatisierten Testpfad abzudecken.
In der Praxis

Wie Serpent das verhindert

Serpent AI führt vor der eigentlichen Deployment-Ausführung eine Preflight-Validierung gegen die tatsächliche Ziel-Org durch, sodass eine Berechtigungslücke als lesbarer Review-Kommentar erscheint statt als Fehler mitten im Deployment. Siehe die Bibliothek der Salesforce-Deployment-Fehler.

Freigabe- und Audit-Nachverfolgbarkeit in Serpent

Prävention

Dem Deployment-Benutzer ein Permission Set geben, das jedes referenzierte Objekt abdeckt
Ordnen Sie jedes verwandte Objekt, das Ihre Trigger und Flows berühren, nicht nur das primäre Objekt, dem Permission Set des Deployment- oder CI-Benutzers zu.
Deklarativen 'Run-as-Benutzerkontext' fest verdrahteten Run-as-Benutzern vorziehen
Wo ein Flow oder Genehmigungsprozess als bestimmter Benutzer laufen muss, dokumentieren und überprüfen Sie dessen Zugriff regelmäßig neu, statt anzunehmen, dass er korrekt bleibt.
Mit dem am wenigsten privilegierten Profil testen, das Sie in der Produktion erwarten
Führen Sie CI-Apex-Tests mit dem Profil des tatsächlichen Deployment- oder Integrationsbenutzers aus statt mit einem vollständigen Admin, damit eine Zugriffslücke schon in der CI und nicht erst am Release-Tag auffällt.
Häufige Fragen

INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY, erklärt

Ist das ein Bug in meinem Code oder ein Konfigurationsproblem der Org?
Fast immer Konfiguration. Die Metadaten sind gültig; das Profil oder Permission Set, das das Deployment ausführt, braucht in der Ziel-Org lediglich breiteren Zugriff.
Sagt mir der Fehler, welches Objekt oder Feld das Problem ist?
Nicht immer namentlich. Die Meldung benennt die Entität oft generisch; prüfen Sie jedes Objekt, das die Trigger und Flows Ihres Apex-Tests als verwandten Datensatz berühren, nicht nur das eingefügte.
Vermeidet die Ausführung von Apex-Tests als System Administrator diesen Fehler vollständig?
Es kann ihn in der CI verdecken, aber das ist eine Falle: Die Produktion läuft weiterhin mit dem Profil, das die Automatisierung tatsächlich deployt oder auslöst, sodass das Verdecken der Lücke in Tests die Entdeckung nur bis zum Release-Tag verzögert.

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

Einrichtung in unter 15 Minuten. Keine DevOps-Fachkraft nötig.

Neugierig auf schnelleres Shipping, bevor Sie einsteigen? Sprechen wir

Unverbindlich.