"Insufficient access rights on cross-reference id" oplossen
Wat de Salesforce-fout "insufficient access rights on cross-reference id" betekent, de vijf oorzaken ervan en hoe je hem stap voor stap oplost.
INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY: insufficient access rights on cross-reference id is een van de meest verkeerd gelezen fouten in Salesforce. De reflex is om de rechten te controleren op het record dat je opslaat — maar de fout gaat bijna nooit over dat record. Hij gaat over een ander record waarnaar het verwijst.
Deze gids legt uit wat het bericht betekent en geeft je een herhaalbare manier om het op te lossen.
Wat de fout werkelijk betekent
Wanneer je een record invoegt of bijwerkt, controleert Salesforce ook elk record waarnaar het verwijst — via lookup- of master-detailvelden, eigenaarschap of related-listbewerkingen. Als de uitvoerende gebruiker een van die verwezen records niet kan benaderen, wordt de hele bewerking geweigerd met insufficient access rights on cross-reference id: <id>.
De <id> is de 15- of 18-cijferige ID van het record dat de gebruiker niet kan bereiken — niet het record dat wordt opgeslagen. Dat onderscheid is de hele sleutel tot de oplossing.
Lees het bericht als: “De gebruiker die deze actie uitvoert, heeft geen toegang tot het gerelateerde record
<id>waarnaar dit record verwijst.”
Stap 0 — Identificeer het cross-referencerecord
Kopieer de ID uit de fout en open hem rechtstreeks:
https://yourdomain.my.salesforce.com/<id>
Nu weet je welk object en record je blokkeert (een bovenliggend Account, een Contact in een lookup, een eigenaar, een gerelateerde Case, enzovoort). Elke stap hieronder richt zich op dat record.
De vijf oorzaken, in volgorde van waarschijnlijkheid
1. Ontbrekende objectrechten
Het profiel of de permission sets van de gebruiker missen Read (of Create/Edit) op het verwezen object. Objectrechten zijn de poort voordat deling überhaupt wordt geëvalueerd — zie objectrechten versus recorddeling. Ken de benodigde CRUD toe via een permission set.
2. Field-level security op het lookupveld
De gebruiker kan het veld dat de verwijzing bevat niet zien of bewerken. Als FLS het lookupveld verbergt, mislukt het schrijven ernaar. Controleer de field-level security voor dat veld op het profiel/de permission sets van de gebruiker.
3. Geen toegang tot het verwezen record (deling)
De gebruiker heeft objecttoegang maar geen recordtoegang tot dat specifieke gerelateerde record. Oorzaken: een Private org-wide default zonder sharing rule, of de gebruiker staat niet boven de eigenaar in de rolhiërarchie. Bevestig dit met de knop Sharing op het gerelateerde record en breid de toegang vervolgens uit met een sharing rule, team of handmatige deling.
4. Automatisering die in de gebruikerscontext draait
Flows die zijn ingesteld om te draaien “How to run the flow → in user context”, of Apex gedeclareerd als with sharing, dwingen de rechten van de uitvoerende gebruiker af. Als die gebruiker het gerelateerde record niet kan bereiken, mislukt de automatisering met deze fout, ook al testte een admin het probleemloos.
- Oplossing A (aanbevolen waar gepast): laat de Flow draaien in systeemcontext / Apex
without sharing, zodat de automatisering niet beperkt wordt door de uitvoerende gebruiker — gebruik dit alleen wanneer de gebruiker terecht geen directe toegang nodig zou hebben. - Oplossing B: geef de gebruiker daadwerkelijk toegang tot het gerelateerde record (oorzaken 1–3).
5. Een verwijderde, lege of misvormde verwijzing
De lookup verwijst naar een record dat is verwijderd, nooit heeft bestaan, of de ID is leeg/onjuist (gebruikelijk bij data loads en integraties). Salesforce meldt ontbrekende records als onvoldoende toegang. Valideer dat de ID verwijst naar een bestaand record voordat je opslaat.
Een herhaalbare oplossingschecklist
- Haal
<id>uit de fout en open hem — identificeer het object en record. - Heeft de gebruiker object-Read/Edit op dat object? → corrigeer het profiel/de permission set.
- Heeft de gebruiker field-level security op het lookupveld? → corrigeer FLS.
- Heeft de gebruiker recordtoegang tot dat specifieke record? → controleer de knop Sharing; voeg een deling toe.
- Draait er een automatisering in gebruikerscontext? → kies tussen systeemcontext en het verlenen van toegang.
- Verwijst de verwezen ID nog steeds naar een bestaand record? → corrigeer de data/integratie.
De eerste mislukte controle is je grondoorzaak.
Waarom deze fout eigenlijk een toegangstraceringsprobleem is
Elke oorzaak hierboven is dezelfde onderliggende vraag: heeft deze gebruiker daadwerkelijk toegang tot dat gerelateerde record, en via welk mechanisme? Dat is moeizaam om met de hand te beantwoorden over CRUD, FLS en zes deelmechanismen heen.
AgentForceAccess beantwoordt het in gewoon Nederlands — plak de gebruiker en het record erin, en het traceert precies welk recht of welke deling toegang verleent (of blokkeert), zodat je niet langer hoeft te raden naar welke van de vijf oorzaken je kijkt.
Veelgestelde vragen
Waar verwijst "cross-reference id" eigenlijk naar?
Het is de Salesforce-record-ID van het *gerelateerde* record waarnaar je actie verwijst via een lookup- of master-detailveld. De uitvoerende gebruiker heeft geen toegang tot dat record, dus het opslaan wordt geweigerd. Voeg de ID toe aan je org-URL (https://yourdomain.my.salesforce.com/<id>) om hem te identificeren.
Waarom werkt dezelfde actie wel voor een admin maar niet voor een standaardgebruiker?
Admins hebben meestal "View All"/"Modify All" of "Modify All Data", die het deelmodel omzeilen. De standaardgebruiker wordt geblokkeerd door objectrechten, field-level security of recorddeling op het gerelateerde record. Reproduceer de actie als de getroffen gebruiker om het te isoleren.
Verbergt een Flow draaien in systeemcontext een echt rechtenprobleem?
Dat kan. Systeemcontext negeert de deling en CRUD/FLS van de uitvoerende gebruiker, wat de fout oplost maar de gebruiker via de UI toegang kan geven die hij niet zou mogen hebben. Gebruik het bewust en bevestig dat de gebruiker het gerelateerde record echt zou moeten kunnen bereiken.
Kan deze fout door een verwijderd of ontbrekend record komen?
Ja. Als de lookup verwijst naar een record dat is verwijderd, nooit heeft bestaan, of als de ID leeg/onjuist is, meldt Salesforce dit als onvoldoende toegang in plaats van "niet gevonden". Controleer of de verwezen ID nog steeds verwijst naar een bestaand record.
Bekijk het op je eigen org
AgentForceAccess legt in normale taal uit waarom een gebruiker een record of bestand kan zien — over elk Salesforce share-mechanisme heen.
Vraag vroege toegang aan