So beheben Sie CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY bei Salesforce-Deployments

Eine Validierungsregel, ein Trigger oder ein Flow in der Ziel-Org hat das Einfügen oder Aktualisieren eines Datensatzes während der Deployment-Validierung abgelehnt.

Tritt auf bei: der Ausführung von Apex-Tests im Rahmen eines Deployments oder einer Validierung

Was das bedeutet

CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY ist ein generischer DML-Fehler, den Salesforce auslöst, wenn ein Trigger, eine Validierungsregel oder eine Prozessautomatisierung in der Ziel-Org einen Datensatz ablehnt. Er tritt am häufigsten während der Ausführung von Apex-Tests auf, da ein Deployment in die Produktion oder eine Validierung Ihre Tests immer gegen den tatsächlichen Automatisierungs-Stack der Ziel-Org ausführt.

Da es sich um einen generischen Wrapper-Code handelt, steht die nützliche Information fast immer in dem Text, der im Deployment-Ergebnis darauf folgt, also der konkreten Meldung der Validierungsregel, der Trigger-Exception oder dem Flow-Fehler, nicht im Code selbst.

Diagnose

Häufige Ursachen

Validierungsregel lehnt Testdaten ab
Die Data Factory eines Apex-Tests erfüllt eine Validierungsregel nicht, die nur in der Ziel-Org aktiv ist.
Nebeneffekte der Automatisierung schlagen fehl
Ein Trigger oder Flow führt eine DML-Operation aus, die während des Testlaufs an ein Governor-Limit oder einen gesperrten Datensatz stößt.
Fehlende umgebungsspezifische Konfiguration
In der Ziel-Org fehlt eine Custom Setting, ein Standard-Datensatztyp oder eine andere Konfiguration, von der die Automatisierung abhängt.

Die Lösung

  1. Lesen Sie den vollständigen Fehlertext, nicht nur den Code
    Öffnen Sie das Deployment-Ergebnis und lesen Sie, was nach CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY folgt; Salesforce hängt die konkrete Meldung der Validierungsregel oder des Triggers an, die den eigentlichen Fehler benennt.
  2. Erforderliche Konfiguration zuerst anlegen
    Deployen Sie Custom Settings, Custom Metadata oder Standard-Datensatztypen, die die Automatisierung benötigt, bevor Sie die davon abhängigen Tests ausführen.
  3. Die fehlerhafte Automatisierung isolieren
    Deaktivieren oder umgehen Sie den betreffenden Trigger oder Flow vorübergehend in einer Scratch-Org, um zu bestätigen, welche Automatisierung den Datensatz ablehnt.
In der Praxis

Wie Serpent das verhindert

Serpent AI führt Ihre Apex-Tests vor dem eigentlichen Deployment gegen die tatsächliche Ziel-Org aus, sodass ein abgelehnter Datensatz als benannte Validierungsregel oder Trigger sichtbar wird, nicht als generischer Fehler. Siehe die Bibliothek der Salesforce-Deployment-Fehler.

Metadaten und Daten in einem einzigen Deployment-Flow in Serpent

Prävention

Apex-Test-Data-Factories nach produktionsnahen Validierungsregeln aufbauen
Pflegen Sie eine gemeinsame Test-Data-Factory, die jede aktive Validierungsregel erfüllt, damit neue Tests konforme Daten erben, statt Datensätze von Hand zu bauen, die Randfälle übergehen.
Konfigurationsabhängigkeiten in derselben Task deployen wie die Automatisierung, die sie benötigt
Bündeln Sie Custom Settings, Custom Metadata und Standard-Datensatztypen mit dem Trigger oder Flow, der sie liest, damit sie nie in falscher Reihenfolge in der Ziel-Org landen.
Vor einem Produktions-Release gegen einen Klon der Ziel-Org validieren
Führen Sie vor dem eigentlichen Release-Fenster ein Check-only-Deployment gegen eine Full-Sandbox durch, die die Validierungsregeln und die Automatisierung der Produktion widerspiegelt.
Häufige Fragen

CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, erklärt

Sagt mir die Fehlermeldung, welche Validierungsregel fehlgeschlagen ist?
Meist ja. Salesforce hängt den eigenen Fehlertext der Validierungsregel oder des Triggers nach dem Code CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY an, lesen Sie also über den Code selbst hinaus.
Warum schlägt das Deployment hier fehl, obwohl derselbe Test in meiner Dev-Sandbox erfolgreich ist?
Validierungsregeln, Flows und Custom Settings unterscheiden sich häufig zwischen einer persönlichen Dev-Sandbox und der Ziel-Org. Vergleichen Sie die aktive Automatisierung für das betreffende Objekt zwischen beiden Umgebungen.
Kann das jemals ein Bug in Salesforce sein statt ein Konfigurationsproblem meiner Org?
Selten. Dieser Code spiegelt fast immer die eigene Automatisierung der Ziel-Org wider, die den Datensatz wie vorgesehen ablehnt; behandeln Sie es zunächst als Konfigurations- oder Testdatenproblem.

Kostenlos starten. Keine Kreditkarte, keine Installation, keine Verpflichtung.

Einrichtung in unter 15 Minuten. Keine DevOps-Fachkraft nötig.

Neugierig auf schnelleres Shipping, bevor Sie einsteigen? Sprechen wir

Unverbindlich.