Comment corriger REQUIRED_FIELD_MISSING dans les déploiements Salesforce

Il manque à un enregistrement une valeur pour un champ marqué obligatoire dans l'org cible.

Se produit lors de : DML à l'exécution, le plus souvent lors de l'exécution de tests Apex ou d'un chargement de données

Ce que cela signifie

REQUIRED_FIELD_MISSING signifie qu'une insertion ou une mise à jour d'enregistrement a omis un champ pour lequel l'org cible exige une valeur. C'est souvent spécifique à l'environnement : le paramètre obligatoire du champ, ou l'automatisation qui le remplit normalement, peut différer entre l'org source et l'org cible.

Un champ peut être obligatoire de deux façons différentes, marqué obligatoire au niveau de la définition du champ, ou obligatoire uniquement sur une mise en page spécifique, et les deux se comportent différemment : les champs obligatoires au niveau de la mise en page sont imposés par l'interface mais pas par l'API ou Apex, ce qui est une source fréquente de confusion lorsqu'un enregistrement réussit via Apex mais aurait été bloqué dans le navigateur.

Diagnostic

Causes courantes

La factory de test ne remplit pas un champ récemment devenu obligatoire
Un champ est récemment devenu obligatoire dans l'org cible, mais la factory de données de test Apex qui construit les enregistrements n'a jamais été mise à jour.
Le paramètre obligatoire diffère entre les environnements
L'indicateur obligatoire du champ a été modifié dans un sandbox mais n'a pas été promu vers l'org cible, ou inversement.
L'automatisation de la valeur par défaut est ignorée en contexte de test
Un flow ou un trigger qui remplit normalement le champ ne s'exécute pas, ou est délibérément contourné, pendant l'exécution des tests du déploiement.

La solution

  1. Mettre à jour la factory de données de test
    Ajoutez le champ manquant partout où les tests Apex construisent cet objet, afin que les champs obligatoires soient toujours remplis.
  2. Synchroniser le paramètre obligatoire entre les orgs
    Déployez l'indicateur obligatoire du champ dans le même change set afin que les orgs source et cible correspondent.
  3. Confirmer que l'automatisation de la valeur par défaut s'exécute
    Vérifiez que tout flow ou trigger responsable de la valeur par défaut du champ est actif et n'est pas contourné en contexte de test.
En pratique

Comment Serpent évite cela

La comparaison d'environnements de Serpent AI révèle les incohérences de champs obligatoires entre l'org source et l'org cible avant qu'un déploiement ne s'exécute, pas après son échec. Consultez la bibliothèque des erreurs de déploiement Salesforce.

Métadonnées et données dans un seul flux de déploiement dans Serpent

Prévention

Construire les factories de données de test à partir du schéma en direct, pas d'une liste de champs codée en dur
Lisez les champs obligatoires à partir du résultat describe de l'objet lors de la construction des enregistrements de test, afin qu'un champ récemment obligatoire soit détecté automatiquement plutôt que d'échouer silencieusement en CI.
Distinguer le champ obligatoire de la mise en page obligatoire en revue de code
Signalez tout changement au paramètre obligatoire au niveau de la définition d'un champ pour une revue séparée des changements obligatoires au niveau de la mise en page, car seul le premier affecte les insertions Apex et API.
Livrer l'indicateur obligatoire d'un champ avec toute automatisation qui en dépend
Regroupez le changement de métadonnées du champ et le Flow ou trigger de valeur par défaut dans le même déploiement, afin qu'ils n'arrivent jamais désynchronisés.
Questions fréquentes

REQUIRED_FIELD_MISSING, expliqué

Pourquoi le même test Apex réussit-il dans une org mais échoue-t-il dans une autre ?
Le champ est probablement obligatoire dans une org et optionnel dans l'autre. Comparez le paramètre obligatoire du champ entre les deux environnements.
Un champ obligatoire sur une mise en page bloque-t-il une insertion Apex ?
Non. Les paramètres obligatoires au niveau de la mise en page ne sont imposés que dans l'interface. Les insertions Apex et API ne sont bloquées que par les champs marqués obligatoires au niveau de la définition du champ.
Cette erreur m'indique-t-elle quel champ spécifique manque ?
Généralement oui. Le texte de l'erreur liste typiquement directement le nom d'API du ou des champs obligatoires manquants, donc commencez par là avant de vérifier le schéma complet de l'objet.

Démarrez gratuitement. Sans carte bancaire, sans installation, sans engagement.

Configuration en moins de 15 minutes. Aucun recrutement DevOps nécessaire.

Curieux de livrer plus vite avant de vous lancer ? Parlons-en

Sans engagement.