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

يتضمن النشر ميتاداتا Territory2، لكن Enterprise Territory Management غير مفعّلة في المؤسسة الهدف.

يظهر أثناء: التحقق من صحة نشر الميتاداتا، قبل تنفيذ أي DML

المعنى

يعني TERRITORY2_NOT_ENABLED أن نشرًا يحمل ميتاداتا Territory2، ونماذج مناطق، وقواعد مناطق، أو مراجع ذات صلة، إلى مؤسسة لم يتم فيها تفعيل Enterprise Territory Management. يجب تفعيل الميزة من Setup قبل أن يقبل Salesforce أيًا من تلك الميتاداتا، بغض النظر عن مدى نظافة النشر نفسه.

Enterprise Territory Management هي علامة ميزة يفعّلها Salesforce عبر Setup (أو عبر طلب دعم، في بعض الإصدارات)، وليست شيئًا يمكن لواجهة Metadata API تفعيله كجزء من النشر، لذا فهذا دائمًا شرط مسبق يدوي لمرة واحدة وليس شيئًا يمكن لإصلاح في الميتاداتا الخاصة بك حله.

التشخيص

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

المؤسسة المصدر تملك الميزة مفعّلة، والهدف لا
تم جلب الميتاداتا من مؤسسة إنتاج أو sandbox مفعّلة فيها Enterprise Territory Management ونُشرت إلى مؤسسة لم تُفعَّل فيها الميزة قط.
تعريف scratch org يغفل الميزة
لا يطلب ملف scratch-org-def.json المستخدم لإنشاء مؤسسات جديدة ميزة Territory Management، لذا تُنشأ المؤسسات الجديدة بدونها.
ملف شخصي أو مجموعة صلاحيات تشير إلى صلاحيات مناطق في مؤسسة معطّلة الميزة
تفترض الميتاداتا المنشورة وجود صلاحيات متعلقة بالمناطق، لكن المؤسسة الهدف ترفضها لأن الميزة نفسها معطّلة.

الحل

  1. فعّل Enterprise Territory Management في المؤسسة الهدف
    فعّل الميزة من Setup قبل محاولة نشر ميتاداتا Territory2 إلى تلك المؤسسة.
  2. أضف الميزة إلى تعريفات scratch org
    أدرج Territory Management ضمن قائمة features في ملف scratch-org-def.json بحيث تكون مفعّلة في كل scratch org جديدة منذ إنشائها.
    {
      "edition": "Enterprise",
      "features": ["TerritoryManagement2"]
    }
  3. أزل مراجع Territory2 للمؤسسات التي لا تستخدم المناطق
    استبعد ميتاداتا المناطق من عمليات النشر الموجهة إلى بيئات لا تستخدم Enterprise Territory Management عن قصد.
من واقع الاستخدام

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

تعريفات scratch org في Serpent خاضعة للتحكم بالإصدار تمامًا مثل الميتاداتا، بحيث يمكن دمج ميزة Territory Management في كل مؤسسة جديدة تزوّدها مهمة بدلاً من تفعيلها يدويًا لاحقًا. راجع مكتبة أخطاء نشر Salesforce.

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

الوقاية

وحّد ميزات scratch-org-def.json عبر الفريق
احتفظ بتعريف scratch org واحد مشترك وخاضع للتحكم بالإصدار يتضمن كل ميزة يستخدمها الإنتاج، بحيث لا تنحرف scratch orgs الجديدة أبدًا عما تحتاجه الميتاداتا فعليًا.
وثّق متطلبات ميزات مستوى المؤسسة جنبًا إلى جنب مع الميتاداتا التي تحتاجها
دوّن في وثائق إعداد مستودعك أي ميزات Salesforce، مثل Territory Management أو Multi-Currency أو Person Accounts، تحتاج المؤسسة الجديدة إلى تفعيلها قبل أول نشر لها.
لا تفعّل Enterprise Territory Management أبدًا دون خطة لكل مؤسسة
تعامل مع تفعيل الميزة كقرار على مستوى المؤسسة بأكملها ولا رجعة فيه إلى حد كبير، ونسّقه عبر كل بيئة قبل بناء أي ميتاداتا Territory2 على الإطلاق.
أسئلة شائعة

أسئلة شائعة حول TERRITORY2_NOT_ENABLED

هل يمكن تفعيل Enterprise Territory Management ثم تعطيلها لاحقًا؟
بمجرد تفعيلها واستخدامها، لا يمكن عادةً تعطيلها بالكامل دون إعادة عمل كبيرة؛ تعامل مع تفعيلها كقرار في اتجاه واحد لتلك المؤسسة.
هل يمكنني تفعيل Enterprise Territory Management بنفسي، أم أحتاج إلى دعم Salesforce؟
في معظم المؤسسات هذا ذاتي الخدمة عبر Setup، Territory Settings؛ قد تحتاج بعض المؤسسات الأقدم أو المخصصة بشدة إلى طلب دعم، لذا تحقق من Setup أولاً قبل فتح واحد.
هل يؤثر هذا على Territory Management القديمة والمهجورة (Territory، وليس Territory2)؟
لا. هذا الخطأ خاص بميتاداتا Enterprise Territory Management (Territory2)؛ ميزة Territory Management الأصلية لها إعداداتها المنفصلة الخاصة ولا يؤثر عليها هذا الفحص.

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

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

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

بدون التزام.