DépannageAccès aux enregistrementsErreurs

« Insufficient access rights on object id » : la corriger

Ce que signifie l'erreur Salesforce « insufficient access rights on object id », en quoi elle diffère de la version cross-reference et comment la corriger.

AgentForceAccess 4 min de lecture
Une icône d'enregistrement unique derrière un cadenas avec un symbole d'avertissement, une main qui tente de l'atteindre bloquée par une barrière

INSUFFICIENT_ACCESS_OR_READONLY: insufficient access rights on object id ressemble presque trait pour trait à sa cousine cross-reference, mais elle pointe vers un problème différent. Celle-ci concerne l”enregistrement que vous manipulez directement — l”utilisateur ne peut tout simplement pas y écrire.

Ce guide explique ce que signifie le message, comment le distinguer de la version cross-reference et vous donne une méthode reproductible pour le corriger.

Ce que signifie vraiment l”erreur

Lorsqu”un utilisateur insère, met à jour ou supprime un enregistrement, Salesforce vérifie deux choses avant d”autoriser l”écriture : les autorisations d”objet de l”utilisateur (CRUD) et son accès au niveau de l”enregistrement (partage). Si l”un des deux manque pour l”enregistrement en cours d”enregistrement, l”opération est rejetée avec :

INSUFFICIENT_ACCESS_OR_READONLY: insufficient access rights on object id: <id>

Le <id> est l”ID à 15 ou 18 caractères de l”enregistrement que vous avez tenté d”enregistrer — et non un enregistrement associé. L”utilisateur en cours peut le voir, voire le lire, mais n”a pas d”accès en écriture sur celui-ci.

Traduisez le message ainsi : « L”utilisateur qui exécute cette action ne peut pas modifier (ou supprimer) l”enregistrement <id> sur lequel il agit. »

« object id » vs « cross-reference id » — ne les confondez pas

Ces deux erreurs sont sœurs et sont constamment confondues :

insufficient access rights on object idinsufficient access rights on cross-reference id
Quel enregistrement bloque ?L”enregistrement que vous enregistrezUn enregistrement associé vers lequel il pointe (lookup / master-detail)
Code d”erreur typiqueINSUFFICIENT_ACCESS_OR_READONLYINSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY
Première chose à corrigerAccès Edit/Delete sur cet enregistrementAccès Read sur l”enregistrement associé

Si l”ID du message est l”enregistrement sur lequel vous avez cliqué sur Enregistrer, vous lisez le bon article. S”il s”agit d”un parent, d”un propriétaire ou d”un enregistrement référencé par un lookup, consultez plutôt insufficient access rights on cross-reference id.

Étape 0 — Identifier l”enregistrement

Copiez l”ID de l”erreur et ouvrez-le directement :

https://yourdomain.my.salesforce.com/<id>

Confirmez qu”il s”agit bien de l”objet et de l”enregistrement que vous comptiez enregistrer. Tout ce qui suit vise l”accès en écriture à cet enregistrement.

Les quatre causes, par ordre de probabilité

1. Autorisation d”objet (CRUD) manquante

Le profil ou les ensembles d”autorisations de l”utilisateur n”ont pas le droit Edit (ou Delete) sur l”objet. Les autorisations d”objet constituent la barrière avant même que le partage ne soit évalué — un utilisateur peut avoir un accès complet à l”enregistrement et rester bloqué si Edit n”est pas accordé. Voir autorisations d”objet et partage d”enregistrement. Accordez le CRUD nécessaire via un ensemble d”autorisations.

2. Accès en lecture seule ou aucun accès à l”enregistrement (partage)

L”utilisateur a le droit Edit sur l”objet, mais seulement un accès en lecture — ou aucun accès — à cet enregistrement précis. Causes fréquentes :

  • Une valeur par défaut à l”échelle de l”organisation (org-wide default) en mode Private sans règle de partage atteignant l”utilisateur.
  • L”utilisateur n”est pas au-dessus du propriétaire dans la hiérarchie des rôles.
  • L”enregistrement est partagé en Lecture seule (règle de partage, équipe ou partage manuel), ce qui permet de l”ouvrir mais pas de l”enregistrer.

Vérifiez avec le bouton Sharing sur l”enregistrement, puis étendez l”accès en Lecture/Écriture via une règle de partage, une équipe ou un partage manuel. La différence entre lecture et lecture-écriture est ici exactement ce qui sépare « peut ouvrir » de « peut enregistrer ».

3. Aucun accès en modification sur un parent master-detail

Si l”enregistrement est le côté détail d”une relation master-detail, le modifier requiert l”accès à son parent. Un utilisateur qui ne peut que lire le parent (ou ne peut pas le voir du tout) ne peut pas enregistrer l”enfant — Salesforce le signale comme un accès insuffisant sur l”object id de l”enfant. Accordez à l”utilisateur l”accès en lecture-écriture sur l”enregistrement parent.

4. Un enregistrement verrouillé ou en attente d”approbation

Un enregistrement verrouillé par un processus d”approbation actif — ou par un lock Apex — ne peut être modifié par personne (hormis les admins) jusqu”à ce qu”il soit approuvé, rappelé ou déverrouillé. Cela produit la même erreur, même pour les utilisateurs qui disposent réellement de l”accès en modification. Vérifiez l”historique d”approbation de l”enregistrement avant de toucher aux autorisations.

Cause bonus — automatisation dans le contexte utilisateur. Un Flow configuré pour s”exécuter « dans le contexte utilisateur » ou de l”Apex déclaré with sharing applique l”accès de l”utilisateur en cours. Si cet utilisateur ne peut pas écrire dans l”enregistrement, l”automatisation échoue avec cette erreur, même si un admin l”a testée sans problème. Exécutez l”automatisation en contexte système, ou accordez à l”utilisateur un accès réel (causes 1 à 3).

Une checklist de résolution reproductible

  1. Extrayez <id> de l”erreur et ouvrez-le — confirmez quel enregistrement a échoué.
  2. L”enregistrement est-il dans un processus d”approbation / verrouillé ? → résolvez cela en premier.
  3. L”utilisateur a-t-il le droit Edit/Delete sur cet objet ? → corrigez le profil / l”ensemble d”autorisations.
  4. L”utilisateur a-t-il un accès en lecture-écriture à l”enregistrement (pas seulement en lecture) ? → vérifiez le bouton Sharing ; ajoutez un partage en lecture-écriture.
  5. S”agit-il d”un enfant master-detail ? → accordez la lecture-écriture sur le parent.
  6. Une automatisation s”exécute-t-elle dans le contexte utilisateur ? → choisissez entre le contexte système et l”octroi de l”accès.

La première vérification qui échoue est votre cause racine.

Pourquoi cette erreur est en réalité un problème de traçage d”accès

Chaque cause ci-dessus revient à la même question de fond : cet utilisateur a-t-il réellement un accès en écriture sur cet enregistrement, et par quel mécanisme ? C”est fastidieux à déterminer à la main entre le CRUD, la propriété, la hiérarchie des rôles et six mécanismes de partage — surtout lorsque la différence se joue entre lecture et lecture-écriture.

AgentForceAccess y répond en langage clair : indiquez l”utilisateur et l”enregistrement, et l”outil retrace précisément quelle autorisation ou quel partage accorde (ou bloque) l”accès en écriture, pour que vous cessiez de deviner à quelle cause vous avez affaire.

Questions fréquentes

Quelle est la différence entre « insufficient access rights on object id » et « on cross-reference id » ?

« On object id » concerne l'enregistrement que vous insérez, mettez à jour ou supprimez directement — l'utilisateur n'a pas l'accès en modification/suppression sur *cet* enregistrement. « On cross-reference id » concerne un enregistrement *associé* atteint via un champ lookup ou master-detail. Même famille d'erreur, cible opposée. Si l'ID du message est l'enregistrement sur lequel vous avez cliqué sur Enregistrer, c'est la version object-id.

Pourquoi un admin peut-il modifier l'enregistrement alors qu'un utilisateur standard obtient cette erreur ?

Les admins disposent généralement de « Modify All Data » ou « Modify All » sur l'objet, qui contournent les valeurs par défaut à l'échelle de l'organisation, les règles de partage et la hiérarchie des rôles. L'utilisateur standard est bloqué par les autorisations d'objet ou le partage au niveau de l'enregistrement. Reproduisez toujours l'action en étant connecté en tant que (ou via « Login As ») l'utilisateur concerné pour isoler le problème.

L'utilisateur a l'accès en lecture sur l'enregistrement — pourquoi un accès insuffisant lors de l'enregistrement ?

La lecture ne suffit pas pour écrire. Modifier ou supprimer requiert l'autorisation d'objet Edit/Delete *et* un accès en lecture-écriture à l'enregistrement. Un enregistrement partagé en « Lecture seule » (via une règle de partage, la hiérarchie des rôles ou un partage manuel) permet à l'utilisateur de l'ouvrir mais pas d'enregistrer les modifications, ce qui se manifeste par un accès insuffisant lors de la mise à jour.

Un enregistrement verrouillé ou en attente d'approbation peut-il provoquer cette erreur ?

Oui. Tant qu'un enregistrement est verrouillé par un processus d'approbation actif (ou par un verrou Apex), même les utilisateurs disposant de l'accès en modification ne peuvent pas enregistrer jusqu'à ce qu'il soit approuvé, rappelé ou déverrouillé. Vérifiez si l'enregistrement est dans un processus d'approbation avant de chercher du côté des autorisations.

Voyez-le sur votre propre org

AgentForceAccess explique, en langage clair, pourquoi n'importe quel utilisateur peut voir n'importe quel enregistrement ou fichier — à travers chaque mécanisme de partage Salesforce.

Demander un accès anticipé