Zo los je CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY op bij Salesforce-deployments

Een validatieregel, trigger of flow in de doelorganisatie heeft het invoegen of bijwerken van een record tijdens de deployment-validatie geweigerd.

Treedt op tijdens: uitvoering van Apex-tests als onderdeel van een deploy of validatie

Wat het betekent

CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY is een generieke DML-fout die Salesforce geeft wanneer een trigger, validatieregel of procesautomatisering in de doelorganisatie een record weigert. Dit gebeurt meestal tijdens de uitvoering van Apex-tests, omdat een deploy naar productie of een validatie je tests altijd tegen de werkelijke automatiseringsstack van de doelorganisatie uitvoert.

Omdat het een generieke wrapper-code is, staat de bruikbare informatie vrijwel altijd in de tekst die er in het deployresultaat op volgt, het specifieke bericht van de validatieregel, de trigger-exceptie of de flow-fout, niet in de code zelf.

Diagnose

Veelvoorkomende oorzaken

Validatieregel weigert testdata
De data factory van een Apex-test voldoet niet aan een validatieregel die alleen in de doelorganisatie actief is.
Neveneffecten van automatisering mislukken
Een trigger of flow voert DML uit die tijdens het testen een governorlimiet raakt of op een vergrendeld record stuit.
Ontbrekende omgevingsspecifieke configuratie
In de doelorganisatie ontbreekt een custom setting, standaard-recordtype of andere configuratie waar de automatisering van afhankelijk is.

De oplossing

  1. Lees de volledige foutmelding, niet alleen de code
    Open het deployresultaat en lees wat er na CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY volgt; Salesforce voegt het specifieke bericht van de validatieregel of trigger toe dat de werkelijke fout benoemt.
  2. Zaai eerst de benodigde configuratie
    Deploy custom settings, custom metadata of standaard-recordtypes die de automatisering nodig heeft, voordat je de tests uitvoert die ervan afhankelijk zijn.
  3. Isoleer de falende automatisering
    Schakel de specifieke trigger of flow tijdelijk uit of omzeil deze in een scratch org om te bevestigen welke automatisering het record weigert.
In de praktijk

Hoe Serpent dit voorkomt

Serpent AI voert je Apex-tests uit tegen de werkelijke doelorganisatie voordat de echte deployment plaatsvindt, zodat een geweigerd record zich meldt als een benoemde validatieregel of trigger, niet als een generieke fout. Zie de bibliotheek met Salesforce-deploymentfouten.

Metadata en data in één deploymentflow in Serpent

Preventie

Bouw Apex-testdatafactory's tegen productie-achtige validatieregels
Onderhoud één gedeelde data factory die aan elke actieve validatieregel voldoet, zodat nieuwe tests compliant data erven in plaats van handmatig records te bouwen die randgevallen overslaan.
Deploy configuratieafhankelijkheden in dezelfde taak als de automatisering die ze nodig heeft
Bundel custom settings, custom metadata en standaard-recordtypes met de trigger of flow die ze uitleest, zodat ze nooit in de verkeerde volgorde in de doelorganisatie terechtkomen.
Valideer tegen een kloon van de doelorganisatie voor een productierelease
Voer een check-only deploy uit tegen een volledige sandbox die de validatieregels en automatisering van productie weerspiegelt, voordat het echte releasevenster begint.
Veelgestelde vragen

CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, uitgelegd

Vertelt de foutmelding welke validatieregel is mislukt?
Meestal wel. Salesforce voegt de eigen foutmelding van de validatieregel of trigger toe na de code CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, dus lees verder dan de code zelf.
Waarom mislukt de deployment hier terwijl dezelfde test slaagt in mijn dev-sandbox?
Validatieregels, flows en custom settings verschillen vaak tussen een persoonlijke dev-sandbox en de doelorganisatie. Vergelijk de actieve automatisering op het specifieke object tussen beide omgevingen.
Kan dit ooit een bug in Salesforce zijn in plaats van de configuratie van mijn organisatie?
Zelden. Deze code weerspiegelt vrijwel altijd de eigen automatisering van de doelorganisatie die het record opzettelijk weigert; behandel het eerst als een configuratie- of testdataprobleem.

Start gratis. Geen creditcard, geen installatie, geen verplichting.

Ingericht in minder dan 15 minuten. Geen DevOps-engineer nodig.

Benieuwd naar sneller releasen voordat je instapt? Laten we praten

Vrijblijvend.