Comment corriger MISSING_FIELD dans les déploiements Salesforce

Une vue de liste, un rapport ou une mise en page référence un champ qui n'existe pas sur l'objet dans l'org cible.

Se produit lors de : la validation du déploiement de métadonnées, spécifiquement pour les composants d'interface déclaratifs

Ce que cela signifie

MISSING_FIELD apparaît lorsqu'un composant, le plus souvent une vue de liste, un rapport ou une mise en page, pointe vers un nom d'API de champ que Salesforce ne trouve pas sur l'objet dans l'org cible. Le champ n'y a jamais été déployé, a été renommé, ou a été supprimé après la création du composant dépendant.

C'est l'équivalent déclaratif, au moment du déploiement, d'INVALID_FIELD, qui apparaît dans SOQL et Apex ; les deux remontent à une référence de champ que le schéma de l'org cible ne prend pas actuellement en charge, mais dans des types de métadonnées différents.

Diagnostic

Causes courantes

Champ renommé ou supprimé
Un champ personnalisé a été renommé ou supprimé, mais les vues de liste, rapports ou mises en page qui référencent l'ancien nom d'API n'ont jamais été mis à jour.
Champ déployé séparément
Le champ personnalisé se trouve dans un déploiement ou un package différent et n'a pas encore atteint l'org cible, si bien que les dépendants se déploient avant qu'il n'existe.
Faute de frappe dans le nom d'API du champ
La référence utilise le mauvais préfixe d'objet ou il manque le suffixe __c sur un champ personnalisé.

La solution

  1. Inclure le champ dans le même déploiement
    Regroupez le champ personnalisé avec la vue de liste, le rapport ou la mise en page qui en dépend, afin que les deux arrivent ensemble dans l'org cible.
  2. Régénérer les dépendants après un renommage
    Après avoir renommé ou recréé un champ, réenregistrez ou réexportez les vues de liste et rapports qui le référencent.
  3. Revérifier le nom d'API
    Confirmez que le nom d'API du champ est orthographié exactement, y compris la casse et le suffixe __c, sur le bon objet.
    sf data query --query "SELECT QualifiedApiName FROM FieldDefinition WHERE EntityDefinition.QualifiedApiName = 'Account'" --target-org myOrgAlias
En pratique

Comment Serpent évite cela

Serpent AI délimite les tâches par dépendance, pas uniquement le composant que vous avez modifié, si bien qu'une vue de liste ou un rapport est automatiquement groupé avec le champ dont il a besoin. 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

Déployer les vues de liste et rapports dans la même tâche que le champ qu'ils référencent
Ne séparez jamais un champ et la vue de liste, le type de rapport ou la mise en page qui en dépend dans des tâches de déploiement distinctes.
Rechercher dans les métadonnées déclaratives avant de renommer un champ
Vérifiez le XML de ListView, Report et Layout pour le nom d'API d'un champ avant de le renommer, pas seulement Apex et Flow.
Récupérer les métadonnées de champ à jour avant d'éditer manuellement une vue de liste ou un rapport
Récupérez le schéma d'objet actuel avant de modifier manuellement le XML d'une vue de liste ou d'un type de rapport, afin qu'un nom de champ obsolète ne soit jamais reporté.
Questions fréquentes

MISSING_FIELD, expliqué

Pourquoi cela ne se produit-il que dans un sandbox et pas dans un autre ?
Le champ existe presque certainement dans une org et pas dans l'autre, généralement parce qu'il a été déployé dans un environnement mais pas encore promu vers l'autre.
Supprimer une vue de liste qui référence un champ manquant corrige-t-il le déploiement ?
Cela corrige le symptôme immédiat, mais vérifiez si c'est le champ ou la vue de liste qui devrait réellement exister avant de supprimer l'un ou l'autre ; la correction dépend de quel côté de l'incohérence est fautif.
Un type de rapport peut-il causer MISSING_FIELD même si le rapport lui-même n'affiche pas le champ ?
Oui. Les types de rapport peuvent référencer des champs comme colonnes disponibles même quand un rapport spécifique ne les utilise pas, et les métadonnées sous-jacentes du type de rapport ont toujours besoin que le champ existe.

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.