Comment corriger ALL_OR_NONE_OPERATION_ROLLED_BACK dans les déploiements Salesforce
Un seul enregistrement défaillant dans un lot soumis avec allOrNone=true a annulé tous les enregistrements de ce lot, y compris les valides.
Se produit lors : d'opérations DML en masse, de chargements de données et de la configuration de tests ApexCe que cela signifie
ALL_OR_NONE_OPERATION_ROLLED_BACK signifie qu'une opération DML a été soumise avec allOrNone défini sur true, et qu'au moins un enregistrement du lot a échoué à la validation, si bien que Salesforce a annulé tout le lot au lieu de valider les enregistrements individuellement corrects. C'est le comportement attendu d'allOrNone, pas un bug, mais cela peut coûter cher sur de gros lots.
Cela survient partout où du DML en masse s'exécute : un appel Database.insert(records, true) en Apex, un job Bulk API avec l'option allOrNone activée, ou une session Data Loader avec "Insert null values" et le succès partiel tous deux désactivés. Une seule ligne défaillante n'importe où dans le lot entraîne toute la transaction avec elle.
Causes courantes
La solution
- Valider les enregistrements côté client avant l'envoiVérifiez les conditions d'échec évidentes, champs obligatoires, valeurs de liste de sélection, par rapport aux règles de l'objet avant d'envoyer le lot.
- Définir allOrNone=false pendant les passes de migrationExécutez les migrations avec allOrNone=false afin que les échecs individuels ne bloquent pas le reste du lot, puis examinez et corrigez les enregistrements en échec.
- Découper les lots volumineux en groupes plus petitsDivisez une opération de données volumineuse en lots plus petits afin qu'un seul enregistrement défaillant n'affecte qu'une petite partie du chargement total.
List<SObject> chunk = new List<SObject>(); for (Integer i = 0; i < records.size(); i++) { chunk.add(records[i]); if (chunk.size() == 200 || i == records.size() - 1) { Database.insert(chunk, false); chunk.clear(); } }
Comment Serpent évite cela
Les opérations de données de Serpent sont découpées en lots et validées dans le cadre du pipeline, de sorte qu'un seul enregistrement défaillant dans une migration apparaît tôt sur un petit lot au lieu d'annuler un lot important en plein milieu d'un déploiement. Consultez la bibliothèque des erreurs de déploiement Salesforce.

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