Comment corriger INVALID_FIELD_FOR_INSERT_UPDATE dans les déploiements Salesforce
Le déploiement tente d'écrire dans un champ non modifiable, comme un champ de formule ou un champ que l'utilisateur exécutant l'opération ne peut pas modifier.
Se produit lors de : DML en compilation ou en exécution, le plus souvent dans un test ApexCe que cela signifie
INVALID_FIELD_FOR_INSERT_UPDATE signifie qu'une opération DML, généralement dans un test Apex, a tenté d'assigner une valeur à un champ qui ne peut pas être écrit directement. Cela se produit avec les champs de formule, les champs de synthèse (roll-up) et les champs système, ainsi que lorsque la sécurité au niveau du champ (Field-Level Security) rend un champ en lecture seule pour le profil qui exécute l'opération.
Pour les champs réellement non modifiables comme les formules, Apex détecte cela à la compilation si la syntaxe littérale SObject est utilisée ; pour les restrictions de sécurité au niveau du champ, cela n'apparaît qu'à l'exécution, car le même code peut réussir pour un profil et échouer pour un autre.
Causes courantes
La solution
- Supprimer l'écriture directeSupprimez la ligne de code de préparation de test qui assigne une valeur au champ de formule, de synthèse ou système.
- Accorder l'accès en modification si le champ doit être modifiableMettez à jour la sécurité au niveau du champ sur le profil ou l'ensemble d'autorisations utilisé pour le déploiement si le champ doit réellement être modifiable.
- Auditer les changements de type de champAprès avoir converti un champ en formule, recherchez dans la base de code les écritures DML directes vers ce champ et supprimez-les.
grep -rn "Amount_Rollup__c\s*=" force-app/main/default/classes/
Comment Serpent évite cela
Serpent AI signale les écarts de sécurité au niveau du champ entre les environnements dès la revue préalable, avant qu'ils ne deviennent un échec au moment de l'exécution. Consultez la bibliothèque des erreurs de déploiement Salesforce.

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