كيفية إصلاح PORTAL_USER_ALREADY_EXISTS_FOR_CONTACT في عمليات نشر Salesforce
تملك جهة الاتصال بالفعل مستخدم Experience Cloud نشطًا، لذا لا يمكن إنشاء مستخدم بوابة جديد لها.
يظهر أثناء: عمليات DML وقت التشغيل، في سكربتات تزويد المستخدمين وترحيلات البياناتالمعنى
يعني PORTAL_USER_ALREADY_EXISTS_FOR_CONTACT أن محاولة إنشاء مستخدم Experience Cloud (مجتمع/بوابة) لجهة اتصال فشلت لأن تلك الجهة تملك واحدًا بالفعل. يسمح Salesforce بمستخدم بوابة نشط واحد فقط لكل جهة اتصال لكل بوابة، لذا تُرفض محاولة الإنشاء الثانية بدلاً من إنشاء هوية مكررة.
القيد محدد النطاق لكل بوابة، وليس لكل مؤسسة: يمكن لجهة الاتصال أن تملك مستخدمي بوابة منفصلين عبر عدة مواقع Experience Cloud مختلفة، ولا يظهر هذا الخطأ إلا عندما تملك البوابة الهدف المحددة بالفعل مستخدمًا نشطًا مرتبطًا بجهة الاتصال تلك.
الأسباب الشائعة
الحل
- استعلم عن مستخدم بوابة موجود قبل إنشاء واحدتحقق من جهة الاتصال بحثًا عن سجل User نشط موجود مرتبط بالبوابة الهدف قبل تنفيذ خطوة الإنشاء.
List<User> existing = [ SELECT Id FROM User WHERE ContactId = :contactId AND IsActive = true AND IsPortalEnabled = true ]; - أعد تفعيل المستخدمين الموجودين أو حدّثهم بدلاً من إعادة إنشائهماستخدم منطقًا شبيهًا بـupsert يحدّث مستخدم البوابة الموجود لجهة الاتصال بدلاً من محاولة إدراج جديد دائمًا.
- أزل التكرارات من جهات الاتصال قبل تزويد المستخدمين بشكل جماعينظّف سجلات جهات الاتصال المكررة حتى لا يحاول سكربت التزويد إنشاء مستخدمي بوابة لما يفترض أن يكون شخصًا واحدًا.
إزاي Serpent بتمنع ده
يشغّل خط أنابيب Serpent إعداد البيانات عبر نفس سير عمل المهام مثل كل شيء آخر، بحيث يفشل سكربت إعادة التزويد الذي لا يتحقق من وجود مستخدمي بوابة سابقين بشكل واضح على المهمة بدلاً من أثناء تشغيل تأهيل مباشر. راجع مكتبة أخطاء نشر Salesforce.

الوقاية
أخطاء ذات صلة
أسئلة شائعة حول PORTAL_USER_ALREADY_EXISTS_FOR_CONTACT
ابدأ مجانًا. بدون بطاقة ائتمان، وبدون تثبيت، وبدون التزام.
الإعداد في أقل من 15 دقيقة. لا حاجة لتوظيف مختص DevOps.
