Comment corriger INVALID_TYPE dans les déploiements Salesforce

Un composant de métadonnées, ou un type qu'il référence, n'est pas valide ou activé dans l'org cible.

Se produit lors de : la validation du déploiement de métadonnées, avant toute exécution de DML ou de tests

Ce que cela signifie

INVALID_TYPE signifie que l'org cible a rejeté un composant de métadonnées parce que son type, ou un type dont il dépend, n'y est pas pris en charge. Cela remonte généralement à une fonctionnalité ou une licence d'org non activée dans la cible, une incompatibilité de version d'API, ou un objet ou champ standard qui n'existe pas dans l'édition de cette org.

C'est le plus fréquent lors de la promotion de métadonnées depuis une org de production riche en fonctionnalités, ou une copie sandbox complète de celle-ci, vers une scratch org ou une sandbox Developer Edition dont l'ensemble de fonctionnalités et les licences n'ont jamais été configurés pour correspondre.

Diagnostic

Causes courantes

Fonctionnalité non activée dans l'org cible
Les métadonnées dépendent d'une fonctionnalité comme Person Accounts ou Multi-Currency, activée dans l'org source mais désactivée dans la cible.
Incompatibilité de version d'API
La version d'API des métadonnées référence un champ ou une capacité que la version d'API prise en charge par l'org cible ne reconnaît pas.
Objet ou champ standard manquant pour l'édition
L'objet ou le champ standard référencé n'est disponible que sur une édition ou une licence Salesforce que l'org cible ne possède pas.

La solution

  1. Confirmer que la fonctionnalité est activée
    Vérifiez que l'org cible a la même fonctionnalité ou licence, Person Accounts, Multi-Currency, ou similaire, activée que la source.
  2. Aligner la version d'API
    Faites correspondre la version d'API des métadonnées dans package.xml à une version entièrement prise en charge par l'org cible.
    <Package xmlns="http://soap.sforce.com/2006/04/metadata">
      <types>
        <members>*</members>
        <name>CustomObject</name>
      </types>
      <version>62.0</version>
    </Package>
  3. Vérifier la compatibilité de l'édition
    Confirmez que l'édition Salesforce de l'org cible inclut l'objet ou le champ standard dont dépend le composant.
En pratique

Comment Serpent évite cela

Serpent AI compare les capacités des orgs source et cible avant de délimiter une tâche, si bien qu'un écart d'édition ou de fonctionnalité apparaît comme un avertissement plutôt que comme un déploiement échoué. 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

Faire correspondre les définitions de fonctionnalités de la scratch org à celles activées en production
Gardez les fonctionnalités et les paramètres d'édition de scratch-org-def.json synchronisés avec ce qui est réellement activé en production, révisés à chaque activation d'une nouvelle fonctionnalité.
Fixer package.xml à une version d'API délibérée, pas toujours-la-dernière
Choisissez une version d'API prise en charge par toute votre chaîne d'outils et chaque org cible, et faites-la évoluer délibérément plutôt que de la laisser dériver vers ce que votre CLI utilise par défaut.
Documenter les dépendances liées à l'édition sur le composant lui-même
Notez dans la description des métadonnées ou dans la documentation du schéma quand un composant dépend d'une édition ou d'une licence spécifique, afin que ce soit visible avant une tentative de promotion.
Questions fréquentes

INVALID_TYPE, expliqué

INVALID_TYPE signifie-t-il que le XML des métadonnées est mal formé ?
Non. Le XML est généralement valide ; le type qu'il déclare ou référence n'est tout simplement pas pris en charge par l'édition, les fonctionnalités ou la version d'API de l'org cible.
Puis-je activer moi-même une fonctionnalité manquante, ou faut-il passer par le support Salesforce ?
Cela dépend de la fonctionnalité. Certaines, comme Multi-Currency, sont en libre-service dans Setup mais pratiquement irréversibles ; d'autres, comme Person Accounts, nécessitent un dossier de support Salesforce pour être activées.
Rétrograder la version d'API dans package.xml peut-il causer de nouveaux problèmes ?
Oui, cela peut masquer l'accès à des champs ou types de métadonnées plus récents dont votre code a réellement besoin. Faites correspondre la version à ce que l'org cible prend en charge plutôt que de rétrograder plus que nécessaire.

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.