Comment corriger CANNOT_UPDATE_CONVERTED_LEAD dans les déploiements Salesforce
Du code Apex ou API tente de mettre à jour un Lead après sa conversion, et Salesforce bloque l'écriture.
Se manifeste lors de : DML à l'exécution, le plus souvent dans un trigger, un batch job, ou un test ApexCe que cela signifie
CANNOT_UPDATE_CONVERTED_LEAD se déclenche lorsqu'Apex ou un appel API tente de mettre à jour un enregistrement Lead déjà converti. Une fois converti, un Lead devient en lecture seule en dehors d'un petit ensemble de champs que Salesforce autorise encore, donc toute autre mise à jour est rejetée plutôt qu'ignorée silencieusement.
C'est une erreur d'exécution plutôt que de déploiement : le trigger ou le batch job lui-même se déploie sans problème, et l'échec n'apparaît que lorsque le code s'exécute réellement sur un enregistrement converti, souvent au sein des tests Apex qu'exige un déploiement en production.
Causes courantes
La solution
- Exclure les enregistrements IsConverted = true avant de mettre à jour les LeadsAjoutez IsConverted = false à toute requête ou clause WHERE pilotant une mise à jour en masse de Leads.
List<Lead> leads = [ SELECT Id, Status FROM Lead WHERE IsConverted = false AND Id IN :leadIds ]; update leads; - Ajouter des vérifications IsConverted à la logique du triggerProtégez les handlers de trigger Lead pour que les enregistrements convertis soient ignorés plutôt que transmis à la logique de mise à jour.
- Mettre à jour l'enregistrement résultant à la placeUne fois un Lead converti, mettez à jour le Contact, l'Account ou l'Opportunity qu'il a créé plutôt que le Lead d'origine.
Comment Serpent évite cela
Comme Serpent exécute la suite complète de tests Apex sur chaque tâche avant qu'elle ne soit éligible au merge, un trigger qui ne filtre pas les Leads convertis échoue comme un échec de test sur la branche qui l'a introduit, pas lors d'une release en production. Voir la bibliothèque des erreurs de déploiement Salesforce.

Prévention
Erreurs associées
CANNOT_UPDATE_CONVERTED_LEAD, expliqué
Démarrez gratuitement. Pas de carte bancaire, pas d'installation, aucun engagement.
Configuration en moins de 15 minutes. Aucun recrutement DevOps nécessaire.
