Comment corriger CANNOT_CASCADE_PRODUCT_ACTIVE dans les déploiements Salesforce
Un enregistrement Product2 ne peut pas être désactivé ou supprimé car une PricebookEntry active y fait toujours référence.
Survient pendant : un DML sur des enregistrements Product2, généralement dans un script de migration de données ou de nettoyageCe que cela signifie
CANNOT_CASCADE_PRODUCT_ACTIVE se déclenche lorsqu'une opération tente de désactiver ou de supprimer un enregistrement Product2 alors qu'il est encore référencé par une PricebookEntry active. Salesforce ne propage pas automatiquement le changement aux enregistrements de tarification dépendants, donc le produit reste bloqué jusqu'à ce que la dépendance soit levée explicitement.
Il s'agit d'une erreur de données à l'exécution, pas d'une erreur de déploiement de métadonnées : elle survient au moment où l'instruction DML s'exécute, que ce soit via Data Loader, un script de migration de données Apex ou une tâche de nettoyage CPQ, et non lors d'un déploiement Metadata API.
Causes courantes
La solution
- Désactivez d'abord les PricebookEntriesMettez à jour ou désactivez chaque PricebookEntry liée au produit avant de tenter de désactiver l'enregistrement Product2 lui-même.
List<PricebookEntry> entries = [ SELECT Id FROM PricebookEntry WHERE Product2Id = :productId AND IsActive = true ]; for (PricebookEntry pbe : entries) pbe.IsActive = false; update entries; - Séquencez les migrations CPQ pour détacher les dépendances en premierOrdonnez les étapes de la migration de données pour que les références de bundle et de règles de prix soient supprimées avant que le produit parent ne change d'état.
- Vérifiez les références actives de Quote Line ou Order ProductConfirmez qu'aucune Quote Line ou Order Product ouverte ne fait encore référence au produit avant de le désactiver.
Comment Serpent évite cela
Le séquencement de déploiement de Serpent, tenant compte des dépendances, s'applique aux objets CPQ et de tarification de la même façon qu'à toute autre métadonnée, si bien qu'une désactivation de produit et ses entrées de catalogue de prix associées se déroulent dans le bon ordre au lieu de se percuter en plein déploiement. Voir la bibliothèque des erreurs de déploiement Salesforce.

Prévention
Erreurs associées
CANNOT_CASCADE_PRODUCT_ACTIVE, expliqué
Démarrez gratuitement. Sans carte bancaire, sans installation, sans engagement.
Configuration en moins de 15 minutes. Aucun recrutement DevOps nécessaire.
