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

يمتلك السجل أو مكوّن الـ metadata الذي يتم إنشاؤه بالفعل قيمة فريدة أو Developer Name مطابقًا في المؤسسة المستهدفة.

تظهر أثناء: عمليات إدراج DML وقت التشغيل والتحقق من نشر metadata على حد سواء

المعنى

يعني DUPLICATE_VALUE أن Salesforce رفض عملية إدراج أو مكوّن metadata جديدًا لأن شيئًا فيه، قيمة حقل فريدة، أو external ID، أو Developer Name، موجود بالفعل في المؤسسة المستهدفة. يفرض Salesforce التفرد على مستوى المنصة ولن يستبدل السجل أو المكوّن الموجود بصمت.

إنه أوسع من DUPLICATE_DEVELOPER_NAME أو DUPLICATE_EXTERNAL_ID؛ فهذان هما النوعان المحددان الأكثر شيوعًا، لكن هذا الكود يمكن أن يظهر أيضًا على أي custom field تم ضبط سمة Unique له.

التشخيص

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

حقل فريد مملوء بالفعل
يحتوي حقل تم وضع علامة عليه كفريد أو external ID بالفعل على قيمة مطابقة في المؤسسة المستهدفة من عملية تحميل أو نشر سابقة.
عمل متوازٍ أنشأ نفس الـ Developer Name
أنشأ مطوّران بشكل مستقل مكوّنًا، أو custom field، أو record type، أو permission set، بنفس الـ Developer Name في فروع منفصلة.
قواعد التكرار تحجب بيانات الاختبار
تعلّم قاعدة duplicate أو matching في المؤسسة المستهدفة بيانات اختبار Apex كنسخة مكررة من سجل موجود.

الحل

  1. استخدم upsert بدلاً من insert
    استخدم upsert مع حقل external ID الصحيح حتى يتم تحديث السجلات الموجودة بدلاً من إعادة إنشائها.
  2. أعِد تسمية المكوّن المتعارض
    امنح مكوّن الـ metadata الأحدث Developer Name فريدًا وحدّث أي مراجع إليه.
  3. راجع قواعد التكرار في سياق الاختبار
    تأكد من أن قواعد duplicate وmatching لا تحجب أشكال السجلات المحددة التي تُدرجها اختبارات Apex الخاصة بك.
من واقع الاستخدام

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

يرصد Serpent AI تداخل أسماء الـ Developer Name عبر المهام المتزامنة قبل أن يصل أي منها إلى عملية نشر، بحيث يُكتشف التعارض أثناء تحديد النطاق. راجع مكتبة أخطاء نشر Salesforce.

الـ metadata والبيانات في مسار نشر واحد داخل Serpent

الوقاية

اعتمد upsert بدلاً من insert أينما وُجد external ID
استخدم upsert كنمط قياسي لأي كائن يمتلك مفتاحًا خارجيًا ثابتًا، حتى لا تتعارض إعادة تشغيل عملية التحميل مع نفسها أبدًا.
تجاوز قواعد التكرار عمدًا في إعداد الاختبار، لا عن طريق الخطأ
اضبط DMLOptions.DuplicateRuleHeader.allowSave صراحةً في مصانع بيانات الاختبار التي تحتاج إلى إدراج سجلات كانت ستُعلَّم كتكرار من قِبل duplicate rules.
اتفقوا على قواعد التسمية قبل بدء العمل المتوازي على الميزات
حدّدوا بادئات الـ Developer Name لكل فريق أو ميزة عند الانطلاق، لا بعد وصول أول تعارض إلى مؤسسة مشتركة.
أسئلة شائعة

DUPLICATE_VALUE، بالإجابات

هل يمكنني ببساطة حذف السجل الموجود وإعادة النشر؟
فقط إذا كان بالفعل غير مستخدم. تحقق أولاً مما يعتمد عليه، لأن حذف النسخة المكررة الخاطئة قد يكسر metadata أخرى تشير إليه.
هل ينطبق DUPLICATE_VALUE فقط على الحقول المخصصة، أم على الحقول القياسية أيضًا؟
ينطبق على كليهما. تفرض الحقول الفريدة القياسية، مثل حقل Email الخاص بـ Contact في بعض إعدادات المؤسسة، نفس القيد الذي يفرضه custom field مع تفعيل Unique.
هل يعادل DUPLICATE_VALUE تحذير قاعدة إدارة التكرار في Salesforce؟
لا. قواعد duplicate وmatching في Setup هي تحذير أو حظر أكثر ليونة وقابل للتهيئة على السجلات التي يُحتمل تكرارها؛ أما DUPLICATE_VALUE فهو قيد تفرد صارم على مستوى المنصة لا يمكن للمستخدم تجاوزه من الواجهة.

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

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

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

بدون التزام.