ENTITY_IS_DELETED bei Salesforce-Deployments beheben

Die Metadaten oder der Datensatz, auf die das Deployment verweist, wurden gelöscht oder liegen im Papierkorb der Ziel-Org.

Tritt auf bei: DML zur Laufzeit und Metadaten-Deployments, die auf eine inzwischen gelöschte Komponente verweisen

Was das bedeutet

ENTITY_IS_DELETED bedeutet, dass die Komponente oder der Datensatz, den Ihr Deployment erwartet, in der Ziel-Org bereits entfernt wurde. Das passiert, wenn zuvor abgerufene Metadaten inzwischen veraltet sind, oder wenn eine destruktive Änderung und ein abhängiges Deployment in der falschen Reihenfolge gegeneinander laufen.

Es kann auf beiden Ebenen auftreten: eine Apex-Query oder ein DML-Statement, das auf einen weich gelöschten, noch im Papierkorb befindlichen Datensatz trifft, oder ein Metadata-API-Deployment, das auf eine Komponente verweist, die eine frühere destructiveChanges.xml bereits aus der Ziel-Org entfernt hat.

Diagnose

Häufige Ursachen

Veraltete lokale Metadaten
Ein Feld, Objekt oder Record Type wurde nach dem letzten Retrieve direkt in der Ziel-Org gelöscht, sodass die lokalen Metadaten weiterhin darauf verweisen.
Testdaten mitten in der Transaktion gelöscht
Ein Apex-Test oder -Trigger löscht einen Datensatz, den ein späterer Schritt in derselben Transaktion abzufragen oder zu aktualisieren versucht.
Destruktive Änderungen in falscher Reihenfolge ausgeführt
Eine destructiveChanges.xml-Löschung läuft, bevor Metadaten ausgeführt werden, die noch von der zu löschenden Komponente abhängen.

Die Lösung

  1. Vor dem Deployment neu synchronisieren
    Rufen Sie aktuelle Metadaten aus der Ziel-Org ab, um zu bestätigen, dass die Komponente dort tatsächlich noch existiert.
    sf project retrieve start --target-org myOrgAlias --metadata CustomField:Account.Legacy_Score__c
  2. Den Verweis entfernen oder wiederherstellen
    Löschen Sie den veralteten Verweis aus Ihren Metadaten, oder stellen Sie die Komponente aus dem Papierkorb wieder her, falls sie noch existieren sollte.
  3. Destruktive Änderungen korrekt sequenzieren
    Deployen Sie zuerst abhängige Metadatenänderungen und führen Sie danach die destruktiven Löschungen aus, gemäß Salesforces zweistufigem destruktivem Deployment-Muster.
In der Praxis

Wie Serpent das verhindert

Serpent AI ruft vor jedem Task den Live-Org-Status ab und markiert eine gelöschte Komponente als zu lösenden Diff-Konflikt, statt sie mitten im Deployment scheitern zu lassen. Siehe die Bibliothek der Salesforce-Deploymentfehler.

Metadaten und Daten in einem einzigen Deployment-Flow in Serpent

Prävention

Vor jedem Retrieve-and-Modify-Workflow neu abrufen, Aktualität nie annehmen
Behandeln Sie lokal zwischengespeicherte Metadaten als wegwerfbar; holen Sie sich unmittelbar vor dem Erstellen eines Deployments einen aktuellen Zustand aus der Ziel-Org.
Datensätze nach jedem Delete innerhalb derselben Transaktion erneut abfragen
Gehen Sie niemals davon aus, dass ein zuvor in einer Apex-Methode abgefragter Datensatz nach einem später in derselben Transaktion ausgeführten Delete-Statement noch existiert; fragen Sie erneut ab oder strukturieren Sie die Logik um.
Für jede Löschung auf destructiveChangesPre/Post.xml standardisieren
Teilen Sie Löschungen immer anhand der von Salesforce dokumentierten Pre- und Post-Destructive-Change-Dateien auf, statt einer Ad-hoc-Löschreihenfolge.
Häufige Fragen

ENTITY_IS_DELETED, beantwortet

Kann ich eine versehentlich gelöschte Komponente wiederherstellen?
Wurde sie kürzlich gelöscht, prüfen Sie zuerst den Papierkorb der Org. Sowohl Metadatenkomponenten als auch Datensätze bleiben dort für eine begrenzte Zeit wiederherstellbar.
Wie lange bleibt ein gelöschter Datensatz oder eine Metadatenkomponente im Papierkorb?
Datensätze bleiben in der Regel 15 Tage wiederherstellbar, bevor sie endgültig gelöscht werden; manche Metadatentypen haben eigene Aufbewahrungsfristen, prüfen Sie dazu Setup für den jeweiligen Komponententyp.
Vermeidet die Abfrage eines Papierkorb-Datensatzes mit ALL ROWS diesen Fehler?
Bei SOQL-Queries kann das funktionieren. ALL ROWS lässt eine Query weich gelöschte Datensätze sehen, aber jedes DML-Update oder -Delete darauf schlägt weiterhin fehl, bis der Datensatz wiederhergestellt ist.

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

In unter 15 Minuten eingerichtet. Keine DevOps-Einstellung nötig.

Neugierig auf schnelleres Shipping, bevor Sie einsteigen? Sprechen wir

Unverbindlich.