كيفية إصلاح INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY في عمليات نشر Salesforce

يفتقر المستخدم الذي يُشغّل عملية النشر إلى صلاحية حقل أو كائن على سجل تتم الإشارة إليه أثناء اختبار Apex أو أتمتة.

يظهر أثناء: عمليات DML وقت التشغيل، غالبًا أثناء تنفيذ اختبارات Apex

المعنى

يظهر INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY عندما لا يستطيع ملف التعريف أو مجموعة الصلاحيات التي تُشغّل عملية النشر، عادة أثناء تنفيذ اختبارات Apex، رؤية أو تعديل حقل أو كائن يلمسه مشغّل أو تدفق أو عملية موافقة على طول الطريق. يفرض Salesforce أمان مستوى الحقل أو قواعد المشاركة تمامًا كما هي مكوَّنة؛ ببساطة لا يملك مستخدم النشر الصلاحية التي تفترضها الأتمتة.

كلمة "cross-reference" في الاسم هي الدليل: الأمر لا يتعلق بالكائن الذي تُدرجه أو تُحدّثه مباشرة، بل بكائن أو حقل مرتبط تلمسه الأتمتة جانبيًا، كالسجل الرئيسي لحقل بحث، أو قائمة ذات صلة، أو حقل يقيده ملف تعريف المستخدم المُشغِّل.

التشخيص

الأسباب الشائعة

أمان مستوى حقل مفقود
يفتقر ملف تعريف المستخدم الذي ينشر إلى صلاحية القراءة أو التعديل على حقل يكتب إليه اختبار Apex أو مشغّل أثناء التحقق.
تدفق أو عملية موافقة تعمل كمستخدم محدد
لا يملك مستخدم "التشغيل كـ" (run as) المضبوط على تدفق أو عملية موافقة صلاحية الكائن أو الحقل للسجلات التي يعالجها.
قواعد مشاركة تحجب بيانات الاختبار
تمنع الإعدادات الافتراضية على مستوى المؤسسة أو قواعد المشاركة المستخدم المُشغِّل من لمس السجلات التي ينشئها اختبار Apex أو يحدّثها.

الحل

  1. امنح الصلاحيات المفقودة
    أضف أمان مستوى الحقل وصلاحيات الكائن إلى ملف التعريف أو مجموعة الصلاحيات المُسندة إلى المستخدم الذي ينشر.
  2. راجع إعدادات "التشغيل كـ"
    تحقق من أي تدفق أو عملية موافقة مضبوطة للتشغيل كمستخدم محدد، وتأكد أن صلاحيات ذلك المستخدم تغطي الكائنات المعنية.
  3. اضبط المشاركة لسياق الاختبار
    استخدم فئات Apex من نوع 'without sharing' لإعداد الاختبار عند الحاجة، أو وسّع قواعد المشاركة لتغطية مسار الاختبار الآلي.
من واقع الاستخدام

إزاي Serpent بتمنع ده

يُجري Serpent AI تحققًا مسبقًا (preflight) مقابل المؤسسة المستهدفة الفعلية قبل تنفيذ النشر الحقيقي، بحيث تظهر فجوة الصلاحيات كتعليق مراجعة قابل للقراءة بدلًا من فشل في منتصف النشر. طالع مكتبة أخطاء نشر Salesforce.

تتبع الموافقات والتدقيق في Serpent

الوقاية

امنح مستخدم النشر مجموعة صلاحيات تغطي كل كائن مرجعي متقاطع
احرص على أن تشمل مجموعة صلاحيات مستخدم النشر أو CI كل كائن مرتبط تلمسه المشغّلات والتدفقات، لا الكائن الأساسي فقط.
فضّل "سياق المستخدم" التصريحي على مستخدمي "التشغيل كـ" المُثبَّتين برمجيًا
عندما يجب أن يعمل تدفق أو عملية موافقة كمستخدم محدد، وثّق صلاحيات ذلك المستخدم وأعد التحقق منها دوريًا بدلًا من افتراض بقائها صحيحة.
اختبر بالملف الشخصي الأقل صلاحية الذي تتوقعه في الإنتاج
شغّل اختبارات Apex الخاصة بـ CI بملف تعريف مستخدم النشر أو التكامل الفعلي بدلًا من مسؤول كامل، بحيث تظهر فجوة الصلاحيات في CI لا في يوم الإصدار.
أسئلة شائعة

INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY، بالشرح

هل هذا خطأ في الكود الخاص بي، أم مشكلة تكوين في المؤسسة؟
غالبًا ما تكون مشكلة تكوين. البيانات الوصفية صالحة؛ ملف التعريف أو مجموعة الصلاحيات التي تُشغّل النشر تحتاج فقط إلى صلاحية أوسع في المؤسسة المستهدفة.
هل يخبرني الخطأ بالكائن أو الحقل الذي يمثل المشكلة؟
ليس دائمًا بالاسم. غالبًا ما تسمي الرسالة الكيان بشكل عام؛ تحقق من كل كائن تلمسه مشغّلات وتدفقات اختبار Apex كسجلات مرتبطة، لا الكائن الذي يُدرَج فقط.
هل يتجنب تشغيل اختبارات Apex كـ System Administrator هذا الخطأ تمامًا؟
قد يخفيه في CI، لكن هذا فخ: الإنتاج لا يزال يعمل بالملف الشخصي الذي ينشر الأتمتة أو يُشغّلها فعليًا، لذا فإن إخفاء الفجوة في الاختبارات يؤخر اكتشافها فقط إلى يوم الإصدار.

ابدأ مجانًا. دون بطاقة ائتمان، دون تثبيت، ودون التزام.

الإعداد في أقل من 15 دقيقة. لا حاجة لتوظيف مختص DevOps.

هل تريد معرفة كيف يمكنكم الشحن أسرع قبل البدء؟ لنتحدث

بدون التزام.