Hoe je CANNOT_UPDATE_CONVERTED_LEAD in Salesforce-deployments oplost
Apex- of API-code probeert een Lead bij te werken nadat die al is geconverteerd, en Salesforce blokkeert de schrijfactie.
Treedt op bij: runtime DML, meestal binnen een trigger, batch job, of Apex-testWat het betekent
CANNOT_UPDATE_CONVERTED_LEAD treedt op wanneer Apex of een API-aanroep probeert een Lead-record bij te werken dat al is geconverteerd. Zodra een Lead is geconverteerd, wordt die alleen-lezen behalve voor een klein aantal velden die Salesforce nog toestaat, dus elke andere update wordt geweigerd in plaats van stilzwijgend genegeerd.
Het is een runtime-fout, geen deploy-time-fout: de trigger of batch job zelf wordt zonder problemen gedeployed, en de fout verschijnt pas zodra de code daadwerkelijk wordt uitgevoerd tegen een geconverteerd record, vaak binnen de Apex-tests die een productiedeployment vereist.
Veelvoorkomende oorzaken
De oplossing
- Filter records met IsConverted = true uit voordat je Leads bijwerktVoeg IsConverted = false toe aan elke query of WHERE-clausule die een bulk Lead-update aanstuurt.
List<Lead> leads = [ SELECT Id, Status FROM Lead WHERE IsConverted = false AND Id IN :leadIds ]; update leads; - Voeg IsConverted-controles toe aan triggerlogicaBeveilig Lead-triggerhandlers zodat geconverteerde records worden overgeslagen in plaats van naar de updatelogica te worden doorgestuurd.
- Werk in plaats daarvan het resulterende record bijZodra een Lead is geconverteerd, werk je het Contact, Account of Opportunity dat daaruit is ontstaan bij in plaats van de oorspronkelijke Lead.
Hoe Serpent dit voorkomt
Omdat Serpent bij elke taak de volledige Apex-testsuite draait voordat die mag worden gemerged, faalt een trigger die geconverteerde Leads niet uitfiltert als een testfout op de branch die de fout introduceerde, niet bij een productierelease. Zie de bibliotheek met Salesforce-deploymentfouten.

Preventie
Gerelateerde fouten
CANNOT_UPDATE_CONVERTED_LEAD, beantwoord
Start gratis. Geen creditcard, geen installatie, geen verplichting.
Binnen 15 minuten ingericht. Geen DevOps-medewerker nodig.
