ट्रबलशूटिंगरिकॉर्ड एक्सेसत्रुटियाँ

"Insufficient access rights on object id" को कैसे ठीक करें

Salesforce की "insufficient access rights on object id" त्रुटि का अर्थ, यह cross-reference वाले संस्करण से कैसे अलग है, और इसे चरण-दर-चरण ठीक करने का तरीका।

AgentForceAccess 5 मिनट पढ़ें
एक ताले के पीछे एक अकेला रिकॉर्ड आइकॉन जिस पर एक चेतावनी चिन्ह है, और उसकी ओर बढ़ता एक हाथ जिसे एक अवरोध रोक रहा है

INSUFFICIENT_ACCESS_OR_READONLY: insufficient access rights on object id अपने cross-reference वाले चचेरे भाई से लगभग एक-जैसा दिखता है, पर यह एक अलग समस्या की ओर इशारा करता है। यह उस रिकॉर्ड के बारे में है जिसे आप सीधे छू रहे हैं — यूज़र बस उस पर लिख नहीं सकता।

यह गाइड बताती है कि इस संदेश का क्या अर्थ है, इसे cross-reference वाले संस्करण से कैसे अलग पहचानें, और इसे ठीक करने का एक दोहराने योग्य तरीका।

इस त्रुटि का असल मतलब क्या है

जब कोई यूज़र किसी रिकॉर्ड को insert, update, या delete करता है, तो लिखने की अनुमति देने से पहले Salesforce दो चीज़ें जाँचता है: यूज़र की object permissions (CRUD) और उसकी record-level access (sharing)। सेव हो रहे रिकॉर्ड के लिए यदि इनमें से कोई एक भी गायब है, तो ऑपरेशन इसके साथ अस्वीकार हो जाता है:

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

<id> उस रिकॉर्ड की 15- या 18-अक्षरों वाली ID है जिसे आपने सेव करने की कोशिश की — किसी संबंधित रिकॉर्ड की नहीं। चल रहा यूज़र उसे देख सकता है, या पढ़ भी सकता है, पर उस तक उसकी write पहुँच नहीं है।

इस संदेश को ऐसे पढ़ें: “इस क्रिया को चला रहा यूज़र उस रिकॉर्ड <id> को edit (या delete) नहीं कर सकता जिस पर वह क्रिया कर रहा है।"

"object id” बनाम “cross-reference id” — इन्हें गड्डमड्ड न करें

ये दोनों त्रुटियाँ भाई-भाई हैं और लगातार आपस में मिला दी जाती हैं:

insufficient access rights on object idinsufficient access rights on cross-reference id
कौन-सा रिकॉर्ड रोक रहा है?वह रिकॉर्ड जिसे आप सेव कर रहे हैंएक संबंधित रिकॉर्ड जिसकी ओर वह इशारा करता है (lookup / master-detail)
सामान्य error codeINSUFFICIENT_ACCESS_OR_READONLYINSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY
पहले क्या ठीक करेंइस रिकॉर्ड तक Edit/Delete पहुँचसंबंधित रिकॉर्ड तक Read पहुँच

यदि संदेश में दी गई ID वही रिकॉर्ड है जिस पर आपने Save क्लिक किया था, तो आप सही लेख पढ़ रहे हैं। यदि यह कोई parent, owner, या looked-up रिकॉर्ड है, तो इसके बजाय insufficient access rights on cross-reference id देखें।

चरण 0 — रिकॉर्ड को पहचानें

त्रुटि से ID कॉपी करें और उसे सीधे खोलें:

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

पुष्टि करें कि यह वही object और रिकॉर्ड है जिसे आप सेव करने की उम्मीद कर रहे थे। नीचे दिया गया सब कुछ उसी रिकॉर्ड तक write access को लक्ष्य बनाता है।

चार कारण, संभावना के क्रम में

1. object permission न होना (CRUD)

यूज़र के profile या permission sets में object पर Edit (या Delete) नहीं है। sharing के मूल्यांकन से पहले object permissions ही पहला द्वार होती हैं — किसी यूज़र के पास पूरी record access हो सकती है फिर भी यदि Edit प्रदान नहीं किया गया तो वह रुक जाएगा। देखें object permissions बनाम record sharing। ज़रूरी CRUD को किसी permission set के ज़रिए प्रदान करें।

2. read-only या कोई record access न होना (sharing)

यूज़र के पास object Edit तो है, पर इस विशिष्ट रिकॉर्ड तक केवल read पहुँच है — या कोई पहुँच नहीं। सामान्य कारण:

  • एक Private org-wide default जिसमें कोई sharing rule यूज़र तक नहीं पहुँचती।
  • यूज़र role hierarchy में owner से ऊपर नहीं है।
  • रिकॉर्ड Read Only रूप में share किया गया है (sharing rule, team, या manual share), जो खोलने तो देता है पर सेव नहीं करने देता।

रिकॉर्ड पर Sharing बटन से पुष्टि करें, फिर किसी sharing rule, team, या manual share से Read/Write पहुँच बढ़ाएँ। यहाँ read और read-write के बीच का अंतर ही ठीक-ठीक “खोल सकता है” को “सेव कर सकता है” से अलग करता है।

3. किसी master-detail parent तक edit पहुँच न होना

यदि रिकॉर्ड किसी master-detail रिश्ते का detail पक्ष है, तो उसे edit करने के लिए उसके parent तक पहुँच चाहिए। ऐसा यूज़र जो parent को केवल पढ़ सकता है (या उसे देख ही नहीं सकता) child को सेव नहीं कर सकता — Salesforce इसे child के object id पर insufficient access के रूप में बताता है। यूज़र को parent रिकॉर्ड तक read-write पहुँच प्रदान करें।

4. एक locked या approval-pending रिकॉर्ड

किसी सक्रिय approval process द्वारा — या किसी Apex lock द्वारा — locked रिकॉर्ड को कोई भी (एडमिन को छोड़कर) तब तक edit नहीं कर सकता जब तक वह approve, recall, या unlock न हो जाए। यह उन यूज़र्स के लिए भी वही त्रुटि पैदा करता है जिनके पास वास्तव में edit पहुँच है। permissions को छूने से पहले रिकॉर्ड का approval history जाँचें।

अतिरिक्त कारण — user context में automation। “in user context” चलने पर सेट कोई Flow या with sharing घोषित किया गया Apex चल रहे यूज़र की पहुँच को लागू करता है। यदि वह यूज़र रिकॉर्ड पर लिख नहीं सकता, तो automation इसी त्रुटि के साथ विफल हो जाता है — भले ही एडमिन ने इसे ठीक से जाँचा हो। या तो automation को system context में चलाएँ, या यूज़र को असली पहुँच प्रदान करें (कारण 1–3)।

एक दोहराने योग्य फ़िक्स चेकलिस्ट

  1. त्रुटि से <id> निकालें और उसे खोलें — पुष्टि करें कि कौन-सा रिकॉर्ड विफल हुआ।
  2. क्या रिकॉर्ड किसी approval process में है / locked है? → पहले उसे हल करें।
  3. क्या यूज़र के पास उस object पर object Edit/Delete है? → profile/permission set ठीक करें।
  4. क्या यूज़र के पास read-write record access है (केवल read नहीं)? → Sharing बटन जाँचें; एक read-write share जोड़ें।
  5. क्या यह कोई master-detail child है? → parent पर read-write प्रदान करें।
  6. क्या कोई automation user context में चल रहा है? → system context बनाम पहुँच प्रदान करने में से तय करें।

पहली विफल होने वाली जाँच ही आपका मूल कारण है।

यह त्रुटि असल में एक access-tracing समस्या क्यों है

ऊपर दिया गया हर कारण एक ही अंतर्निहित प्रश्न है: क्या इस यूज़र के पास वास्तव में इस रिकॉर्ड तक write access है, और किस तंत्र के ज़रिए? CRUD, ownership, role hierarchy, और छह sharing तंत्रों के पार इसका उत्तर हाथ से देना थकाऊ है — खासकर जब read बनाम read-write ही पूरा अंतर हो।

AgentForceAccess इसका उत्तर सरल भाषा में देता है — यूज़र और रिकॉर्ड पेस्ट करें, और यह ठीक-ठीक ट्रेस करता है कि कौन-सी permission या share write access प्रदान करती (या रोकती) है, ताकि आप अनुमान लगाना बंद करें कि आप किस कारण को देख रहे हैं।

अक्सर पूछे जाने वाले सवाल

"insufficient access rights on object id" और "on cross-reference id" में क्या अंतर है?

"On object id" उस रिकॉर्ड के बारे में है जिसे आप सीधे insert, update, या delete कर रहे हैं — यूज़र के पास *उसी* रिकॉर्ड तक edit/delete पहुँच नहीं है। "On cross-reference id" किसी lookup या master-detail फ़ील्ड के ज़रिए पहुँचे *संबंधित* रिकॉर्ड के बारे में है। एक ही परिवार की त्रुटि, पर लक्ष्य उल्टा। यदि संदेश में दी गई ID वही रिकॉर्ड है जिस पर आपने Save क्लिक किया था, तो यह object-id वाला संस्करण है।

एक ही रिकॉर्ड को एडमिन तो edit कर सकता है पर सामान्य यूज़र को यह त्रुटि क्यों मिलती है?

एडमिन के पास आमतौर पर object पर "Modify All Data" या "Modify All" होता है, जो org-wide defaults, sharing rules, और role hierarchy को दरकिनार कर देते हैं। सामान्य यूज़र को object permissions या record-level sharing रोक देती है। इसे अलग करके पहचानने के लिए हमेशा प्रभावित यूज़र के रूप में (या "Login As" से) लॉग इन करके वही क्रिया दोहराएँ।

यूज़र के पास रिकॉर्ड तक Read पहुँच है — फिर सेव पर insufficient access क्यों?

लिखने के लिए Read पर्याप्त नहीं है। Edit या delete के लिए Edit/Delete object permission *और* read-write record access दोनों चाहिए। "Read Only" रूप में share किया गया रिकॉर्ड (किसी sharing rule, role hierarchy, या manual share से) यूज़र को खोलने तो देता है पर बदलाव सेव नहीं करने देता, जो update पर insufficient access के रूप में सामने आता है।

क्या कोई locked या approval-pending रिकॉर्ड यह त्रुटि पैदा कर सकता है?

हाँ। जब तक कोई रिकॉर्ड किसी सक्रिय approval process (या Apex lock) द्वारा locked है, तब तक edit पहुँच वाले यूज़र भी उसे तब तक सेव नहीं कर सकते जब तक वह approve, recall, या unlock न हो जाए। permissions के पीछे भागने से पहले जाँचें कि रिकॉर्ड किसी approval process में तो नहीं है।

इसे अपने org पर देखें

AgentForceAccess सीधी भाषा में समझाता है कि कोई भी user किसी भी record या file को क्यों देख सकता है — हर Salesforce sharing तंत्र में।

जल्द access का अनुरोध करें