Comment corriger PORTAL_USER_ALREADY_EXISTS_FOR_CONTACT dans les déploiements Salesforce
Un Contact possède déjà un utilisateur Experience Cloud actif, un nouvel utilisateur portail ne peut donc pas être créé pour lui.
Survient pendant : un DML à l'exécution, dans les scripts de provisionnement d'utilisateurs et les migrations de donnéesCe que cela signifie
PORTAL_USER_ALREADY_EXISTS_FOR_CONTACT signifie qu'une tentative de création d'un utilisateur Experience Cloud (communauté/portail) pour un Contact a échoué parce que ce Contact en possède déjà un. Salesforce n'autorise qu'un seul utilisateur portail actif par Contact et par portail, donc une deuxième tentative de création est rejetée plutôt que de créer une identité en double.
La contrainte est définie par portail, pas par org : un Contact peut avoir des utilisateurs portail distincts sur plusieurs sites Experience Cloud différents, et cette erreur ne se déclenche que lorsque le portail cible spécifique a déjà un utilisateur actif lié à ce Contact.
Causes courantes
La solution
- Recherchez un utilisateur portail existant avant d'en créer unVérifiez si le Contact a déjà un enregistrement User actif lié au portail cible avant d'exécuter l'étape de création.
List<User> existing = [ SELECT Id FROM User WHERE ContactId = :contactId AND IsActive = true AND IsPortalEnabled = true ]; - Réactivez ou mettez à jour les utilisateurs existants plutôt que de les recréerUtilisez une logique de type upsert qui met à jour l'utilisateur portail existant d'un Contact plutôt que de toujours tenter une nouvelle insertion.
- Dédupliquez les Contacts avant le provisionnement massif d'utilisateursNettoyez les enregistrements Contact en double afin qu'un script de provisionnement ne tente pas de créer deux utilisateurs portail pour ce qui devrait être une seule personne.
Comment Serpent évite cela
Le pipeline de Serpent exécute la configuration des données via le même flux de tâches que tout le reste, si bien qu'un script de reprovisionnement qui ne vérifie pas les utilisateurs portail existants échoue visiblement sur la tâche plutôt que pendant un onboarding en production. Voir la bibliothèque des erreurs de déploiement Salesforce.

Prévention
Erreurs associées
PORTAL_USER_ALREADY_EXISTS_FOR_CONTACT, expliqué
Démarrez gratuitement. Sans carte bancaire, sans installation, sans engagement.
Configuration en moins de 15 minutes. Aucun recrutement DevOps nécessaire.
