So beheben Sie CANNOT_CASCADE_PRODUCT_ACTIVE bei Salesforce-Deployments
Ein Product2-Datensatz kann nicht deaktiviert oder gelöscht werden, weil ein aktiver PricebookEntry noch darauf verweist.
Tritt auf bei: DML auf Product2-Datensätzen, meist in einem Datenmigrations- oder BereinigungsskriptWas das bedeutet
CANNOT_CASCADE_PRODUCT_ACTIVE tritt auf, wenn ein Vorgang versucht, einen Product2-Datensatz zu deaktivieren oder zu entfernen, während er noch von einem aktiven PricebookEntry referenziert wird. Salesforce leitet die Änderung nicht automatisch an abhängige Preisdatensätze weiter, sodass das Produkt blockiert bleibt, bis die Abhängigkeit explizit aufgelöst wird.
Es handelt sich um einen Laufzeit-Datenfehler, keinen Metadaten-Deployment-Fehler: Er tritt in dem Moment auf, in dem die DML-Anweisung ausgeführt wird, sei es über den Data Loader, ein Apex-Datenmigrationsskript oder einen CPQ-Bereinigungsjob, nicht während eines Metadata-API-Deployments.
Häufige Ursachen
Die Lösung
- Zuerst PricebookEntries deaktivierenAktualisieren oder deaktivieren Sie jeden mit dem Produkt verknüpften PricebookEntry, bevor Sie versuchen, den Product2-Datensatz selbst zu deaktivieren.
List<PricebookEntry> entries = [ SELECT Id FROM PricebookEntry WHERE Product2Id = :productId AND IsActive = true ]; for (PricebookEntry pbe : entries) pbe.IsActive = false; update entries; - CPQ-Migrationen so ordnen, dass Abhängigkeiten zuerst gelöst werdenOrdnen Sie die Schritte der Datenmigration so an, dass Bundle- und Preisregelverweise entfernt werden, bevor sich der Status des übergeordneten Produkts ändert.
- Auf aktive Quote-Line- oder Order-Product-Verweise prüfenBestätigen Sie, dass keine offenen Quote Lines oder Order Products mehr auf das Produkt verweisen, bevor Sie es deaktivieren.
Wie Serpent das verhindert
Die abhängigkeitsbewusste Deployment-Reihenfolge von Serpent gilt für CPQ- und Preisobjekte genauso wie für jede andere Metadaten, sodass eine Produktdeaktivierung und ihre Preisbucheinträge in der richtigen Reihenfolge ablaufen, statt mitten im Deployment zu kollidieren. Siehe die Bibliothek der Salesforce-Deployment-Fehler.

Prävention
Verwandte Fehler
CANNOT_CASCADE_PRODUCT_ACTIVE, beantwortet
Kostenlos starten. Keine Kreditkarte, keine Installation, keine Verpflichtung.
In unter 15 Minuten eingerichtet. Keine DevOps-Fachkraft nötig.
