Hoe je CANNOT_CASCADE_PRODUCT_ACTIVE in Salesforce-deployments oplost
Een Product2-record kan niet worden gedeactiveerd of verwijderd omdat een actieve PricebookEntry er nog naar verwijst.
Komt voor bij: DML op Product2-records, meestal in een datamigratie- of opschoonscriptWat het betekent
CANNOT_CASCADE_PRODUCT_ACTIVE treedt op wanneer een bewerking probeert een Product2-record te deactiveren of te verwijderen terwijl het nog wordt gerefereerd door een actieve PricebookEntry. Salesforce cascadeert de wijziging niet automatisch door naar afhankelijke prijsrecords, dus het product blijft geblokkeerd totdat de afhankelijkheid expliciet is opgeheven.
Het is een runtime datafout, geen metadata-deploymentfout: het gebeurt op het moment dat de DML-instructie wordt uitgevoerd, of dat nu via Data Loader, een Apex-datamigratiescript of een CPQ-opschoonjob is, en niet tijdens een Metadata API-deployment.
Veelvoorkomende oorzaken
De oplossing
- Deactiveer eerst de PricebookEntriesWerk elke PricebookEntry die aan het product is gekoppeld bij of deactiveer deze, voordat je probeert het Product2-record zelf te deactiveren.
List<PricebookEntry> entries = [ SELECT Id FROM PricebookEntry WHERE Product2Id = :productId AND IsActive = true ]; for (PricebookEntry pbe : entries) pbe.IsActive = false; update entries; - Volgorde CPQ-migraties zo dat afhankelijkheden eerst worden losgekoppeldOrden de stappen van de datamigratie zodat bundel- en prijsregelverwijzingen worden opgeheven voordat het bovenliggende product van status verandert.
- Controleer op actieve Quote Line- of Order Product-verwijzingenBevestig dat er geen openstaande Quote Lines of Order Products meer naar het product verwijzen voordat je het deactiveert.
Hoe Serpent dit voorkomt
Serpents afhankelijkheidsbewuste deploymentvolgorde geldt voor CPQ- en prijsobjecten op dezelfde manier als voor alle andere metadata, zodat een productdeactivering en de bijbehorende prijsboekregels in de juiste volgorde worden verwerkt in plaats van halverwege de deployment te botsen. Zie de bibliotheek met Salesforce-deploymentfouten.

Preventie
Gerelateerde fouten
CANNOT_CASCADE_PRODUCT_ACTIVE, uitgelegd
Begin gratis. Geen creditcard, geen installatie, geen verplichtingen.
Binnen 15 minuten ingericht. Geen DevOps-specialist nodig.
