Hoe je PORTAL_USER_ALREADY_EXISTS_FOR_CONTACT in Salesforce-deployments oplost
Een Contact heeft al een actieve Experience Cloud-gebruiker, dus kan er geen nieuwe portalgebruiker voor worden aangemaakt.
Komt voor bij: runtime DML, in gebruikersprovisioningscripts en datamigratiesWat het betekent
PORTAL_USER_ALREADY_EXISTS_FOR_CONTACT betekent dat een poging om een Experience Cloud-gebruiker (community/portal) voor een Contact aan te maken is mislukt omdat dat Contact er al een heeft. Salesforce staat slechts één actieve portalgebruiker per Contact per portal toe, dus een tweede aanmaakpoging wordt geweigerd in plaats van een dubbele identiteit te creëren.
De beperking geldt per portal, niet per org: een Contact kan afzonderlijke portalgebruikers hebben op meerdere verschillende Experience Cloud-sites, en deze fout treedt alleen op wanneer de specifieke doelportal al een actieve gebruiker heeft die aan dat Contact is gekoppeld.
Veelvoorkomende oorzaken
De oplossing
- Zoek naar een bestaande portalgebruiker voordat je er een aanmaaktControleer het Contact op een bestaand actief User-record dat aan de doelportal is gekoppeld voordat je de aanmaakstap uitvoert.
List<User> existing = [ SELECT Id FROM User WHERE ContactId = :contactId AND IsActive = true AND IsPortalEnabled = true ]; - Heractiveer of werk bestaande gebruikers bij in plaats van ze opnieuw aan te makenGebruik upsert-achtige logica die de bestaande portalgebruiker van een Contact bijwerkt in plaats van altijd een nieuwe insert te proberen.
- Ontdubbel Contacts vóór bulkgewijze gebruikersprovisioningRuim dubbele Contact-records op zodat een provisioningscript niet probeert twee portalgebruikers aan te maken voor wat één persoon zou moeten zijn.
Hoe Serpent dit voorkomt
De pipeline van Serpent voert datasetup uit via dezelfde taakworkflow als al het andere, zodat een herprovisioningscript dat niet controleert op bestaande portalgebruikers zichtbaar mislukt op de taak in plaats van tijdens een live onboardingrun. Zie de bibliotheek met Salesforce-deploymentfouten.

Preventie
Gerelateerde fouten
PORTAL_USER_ALREADY_EXISTS_FOR_CONTACT, uitgelegd
Begin gratis. Geen creditcard, geen installatie, geen verplichtingen.
Binnen 15 minuten ingericht. Geen DevOps-specialist nodig.
