"Insufficient access rights on cross-reference id" beheben
Was der Salesforce-Fehler "insufficient access rights on cross-reference id" bedeutet, die fünf Ursachen und wie Sie ihn Schritt für Schritt beheben.
INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY: insufficient access rights on cross-reference id ist einer der am häufigsten falsch gedeuteten Fehler in Salesforce. Der erste Reflex ist, die Berechtigungen auf dem Datensatz zu prüfen, den Sie gerade speichern — doch der Fehler bezieht sich fast nie auf diesen Datensatz. Es geht um einen anderen Datensatz, auf den er verweist.
Dieser Leitfaden erklärt, was die Meldung bedeutet, und gibt Ihnen ein wiederholbares Vorgehen zur Behebung an die Hand.
Was der Fehler wirklich bedeutet
Wenn Sie einen Datensatz einfügen oder aktualisieren, prüft Salesforce auch jeden Datensatz, den dieser referenziert — über Lookup- oder Master-Detail-Felder, über die Eigentümerschaft oder über Operationen auf zugehörigen Listen. Kann der ausführende Benutzer auf einen dieser referenzierten Datensätze nicht zugreifen, wird die gesamte Operation mit insufficient access rights on cross-reference id: <id> abgelehnt.
Die <id> ist die 15- oder 18-stellige ID des Datensatzes, den der Benutzer nicht erreichen kann — nicht die des gespeicherten Datensatzes. Diese Unterscheidung ist der gesamte Schlüssel zur Lösung.
Übersetzen Sie die Meldung als: “Der Benutzer, der diese Aktion ausführt, kann nicht auf den verknüpften Datensatz
<id>zugreifen, auf den dieser Datensatz verweist.”
Schritt 0 — Den Cross-Reference-Datensatz identifizieren
Kopieren Sie die ID aus dem Fehler und öffnen Sie sie direkt:
https://yourdomain.my.salesforce.com/<id>
Jetzt wissen Sie, welches Objekt und welcher Datensatz Sie blockiert (ein übergeordneter Account, ein Contact in einem Lookup, ein Eigentümer, ein zugehöriger Case usw.). Jeder folgende Schritt zielt auf diesen Datensatz ab.
Die fünf Ursachen, nach Häufigkeit geordnet
1. Fehlende Objektberechtigung
Dem Profil oder den Permission Sets des Benutzers fehlt Read (oder Create/Edit) auf dem referenzierten Objekt. Objektberechtigungen sind die Schranke, bevor Sharing überhaupt geprüft wird — siehe Objektberechtigungen vs. Datensatz-Sharing. Vergeben Sie die nötigen CRUD-Rechte über ein Permission Set.
2. Field-Level Security auf dem Lookup-Feld
Der Benutzer kann das Feld, das den Verweis enthält, nicht sehen oder bearbeiten. Verbirgt die FLS das Lookup-Feld, schlägt der Schreibvorgang darauf fehl. Prüfen Sie die Field-Level Security für dieses Feld im Profil bzw. in den Permission Sets des Benutzers.
3. Kein Zugriff auf den referenzierten Datensatz (Sharing)
Der Benutzer hat Objektzugriff, aber keinen Datensatzzugriff auf diesen konkreten verknüpften Datensatz. Ursachen: ein Private-Standardwert (OWD) ohne Sharing-Regel oder der Benutzer steht in der Rollenhierarchie nicht über dem Eigentümer. Bestätigen Sie dies über die Schaltfläche Sharing auf dem verknüpften Datensatz und erweitern Sie den Zugriff anschließend per Sharing-Regel, Team oder manueller Freigabe.
4. Automatisierung läuft im Kontext des Benutzers
Flows, die mit “How to run the flow → in user context” konfiguriert sind, oder Apex-Klassen, die als with sharing deklariert sind, erzwingen die Berechtigungen des ausführenden Benutzers. Kann dieser Benutzer den verknüpften Datensatz nicht erreichen, scheitert die Automatisierung mit diesem Fehler — obwohl der Test beim Admin einwandfrei lief.
- Lösung A (empfohlen, sofern angemessen): Führen Sie den Flow im Systemkontext aus / Apex als
without sharing, damit die Automatisierung nicht durch den ausführenden Benutzer eingeschränkt wird — nur einsetzen, wenn der Benutzer berechtigterweise keinen direkten Zugriff benötigen sollte. - Lösung B: Gewähren Sie dem Benutzer tatsächlich Zugriff auf den verknüpften Datensatz (Ursachen 1–3).
5. Ein gelöschter, leerer oder fehlerhafter Verweis
Das Lookup verweist auf einen Datensatz, der gelöscht wurde, nie existierte, oder die ID ist leer/falsch (häufig bei Datenimporten und Integrationen). Salesforce meldet fehlende Datensätze als unzureichende Zugriffsrechte. Stellen Sie vor dem Speichern sicher, dass die ID auf einen aktiven Datensatz verweist.
Eine wiederholbare Checkliste zur Behebung
- Extrahieren Sie
<id>aus dem Fehler und öffnen Sie sie — identifizieren Sie Objekt und Datensatz. - Hat der Benutzer Read/Edit auf diesem Objekt? → Profil/Permission Set korrigieren.
- Hat der Benutzer Field-Level Security auf dem Lookup-Feld? → FLS korrigieren.
- Hat der Benutzer Datensatzzugriff auf diesen konkreten Datensatz? → Schaltfläche Sharing prüfen; eine Freigabe hinzufügen.
- Läuft eine Automatisierung im Benutzerkontext? → zwischen Systemkontext und Zugriffsvergabe entscheiden.
- Verweist die referenzierte ID noch auf einen aktiven Datensatz? → Daten/Integration korrigieren.
Die erste fehlschlagende Prüfung ist Ihre Grundursache.
Warum dieser Fehler in Wahrheit ein Zugriffs-Tracing-Problem ist
Jede Ursache oben läuft auf dieselbe grundlegende Frage hinaus: Hat dieser Benutzer tatsächlich Zugriff auf den verknüpften Datensatz — und über welchen Mechanismus? Das von Hand über CRUD, FLS und sechs Sharing-Mechanismen hinweg zu beantworten, ist mühsam.
AgentForceAccess beantwortet die Frage in verständlicher Sprache — geben Sie Benutzer und Datensatz ein, und es verfolgt exakt nach, welche Berechtigung oder Freigabe den Zugriff gewährt (oder blockiert), sodass Sie nicht länger raten müssen, welche der fünf Ursachen vorliegt.
Häufig gestellte Fragen
Worauf bezieht sich die "cross-reference id" eigentlich?
Es ist die Salesforce-Datensatz-ID des *verknüpften* Datensatzes, auf den Ihre Aktion über ein Lookup- oder Master-Detail-Feld verweist. Der ausführende Benutzer hat keinen Zugriff auf diesen Datensatz, daher wird das Speichern abgelehnt. Hängen Sie die ID an Ihre Org-URL an (https://yourdomain.my.salesforce.com/<id>), um sie zu identifizieren.
Warum funktioniert dieselbe Aktion bei einem Admin, scheitert aber bei einem Standardbenutzer?
Admins haben in der Regel "View All"/"Modify All" oder "Modify All Data", die das Sharing-Modell umgehen. Der Standardbenutzer wird durch Objektberechtigungen, Field-Level Security oder Sharing auf Datensatzebene des verknüpften Datensatzes blockiert. Reproduzieren Sie die Aktion als betroffener Benutzer, um die Ursache einzugrenzen.
Verbirgt das Ausführen eines Flows im Systemkontext ein echtes Berechtigungsproblem?
Das kann sein. Der Systemkontext ignoriert Sharing sowie CRUD/FLS des ausführenden Benutzers, was den Fehler behebt, dem Benutzer aber über die Oberfläche Zugriff gewähren kann, den er eigentlich nicht haben sollte. Setzen Sie ihn bewusst ein und stellen Sie sicher, dass der Benutzer den verknüpften Datensatz tatsächlich erreichen dürfen sollte.
Kann dieser Fehler von einem gelöschten oder fehlenden Datensatz stammen?
Ja. Wenn das Lookup auf einen Datensatz verweist, der gelöscht wurde, nie existierte, oder die ID leer/fehlerhaft ist, meldet Salesforce dies als unzureichende Zugriffsrechte statt als "nicht gefunden". Prüfen Sie, ob die referenzierte ID noch auf einen aktiven Datensatz verweist.
Sieh es dir in deiner eigenen Org an
AgentForceAccess erklärt in klarer Sprache, warum jeder Nutzer jeden Datensatz oder jede Datei sehen kann — über jeden Salesforce-Sharing-Mechanismus hinweg.
Frühen Zugang anfragen