Comment corriger TERRITORY2_NOT_ENABLED dans les déploiements Salesforce

Un déploiement inclut des métadonnées Territory2, mais Enterprise Territory Management n'est pas activé dans l'org cible.

Survient pendant : la validation du déploiement de métadonnées, avant l'exécution de tout DML

Ce que cela signifie

TERRITORY2_NOT_ENABLED signifie qu'un déploiement transporte des métadonnées Territory2, des modèles de territoire, des règles de territoire ou des références associées, vers une org où Enterprise Territory Management n'a pas été activé. La fonctionnalité doit être activée dans Setup avant que Salesforce n'accepte ces métadonnées, quelle que soit la propreté du déploiement lui-même.

Enterprise Territory Management est un indicateur de fonctionnalité que Salesforce active via Setup (ou un dossier de support, sur certaines éditions), pas quelque chose que l'API Metadata peut activer dans le cadre d'un déploiement ; c'est donc toujours un prérequis manuel et ponctuel plutôt que quelque chose qu'un correctif dans vos métadonnées peut résoudre.

Diagnostic

Causes courantes

L'org source a la fonctionnalité activée, pas la cible
Les métadonnées ont été récupérées depuis une org de production ou un sandbox avec Enterprise Territory Management activé et déployées vers une org où elle n'a jamais été activée.
La définition du scratch org omet la fonctionnalité
Un scratch-org-def.json utilisé pour créer de nouvelles orgs ne demande pas la fonctionnalité Territory Management, donc les nouvelles orgs sont créées sans elle.
Un profil ou permission set référence des permissions de territoire dans une org sans la fonctionnalité
Les métadonnées déployées supposent l'existence de permissions liées au territoire, mais l'org cible les rejette car la fonctionnalité elle-même est désactivée.

La solution

  1. Activez Enterprise Territory Management dans l'org cible
    Activez la fonctionnalité dans Setup avant de tenter de déployer des métadonnées Territory2 dans cette org.
  2. Ajoutez la fonctionnalité aux définitions de scratch org
    Incluez Territory Management dans la liste des features de scratch-org-def.json afin que chaque nouveau scratch org l'ait activée dès sa création.
    {
      "edition": "Enterprise",
      "features": ["TerritoryManagement2"]
    }
  3. Retirez les références Territory2 pour les orgs qui n'utilisent pas les territoires
    Excluez les métadonnées de territoire des déploiements ciblant des environnements qui n'utilisent volontairement pas Enterprise Territory Management.
En pratique

Comment Serpent évite cela

Les définitions de scratch org de Serpent sont versionnées de la même façon que les métadonnées, si bien que la fonctionnalité Territory Management peut être intégrée à chaque nouvelle org qu'une tâche provisionne au lieu d'être activée manuellement après coup. Voir 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

Standardisez les features de scratch-org-def.json au sein de l'équipe
Maintenez une seule définition de scratch org partagée et versionnée incluant chaque fonctionnalité utilisée en production, afin que les nouveaux scratch orgs ne s'écartent jamais de ce dont les métadonnées ont réellement besoin.
Documentez les prérequis de fonctionnalités au niveau org avec les métadonnées qui en ont besoin
Notez dans la documentation de configuration de votre dépôt quelles fonctionnalités Salesforce, Territory Management, Multi-Currency, Person Accounts, une nouvelle org doit avoir activées avant son premier déploiement.
N'activez jamais Enterprise Territory Management sans un plan pour chaque org
Considérez l'activation de la fonctionnalité comme une décision à l'échelle de l'org, largement irréversible, et coordonnez-la sur tous les environnements avant même de construire des métadonnées Territory2.
Questions fréquentes

TERRITORY2_NOT_ENABLED, expliqué

Enterprise Territory Management peut-il être activé puis désactivé plus tard ?
Une fois activé et utilisé, il ne peut généralement pas être entièrement désactivé sans un travail de refonte important ; considérez son activation comme une décision à sens unique pour cette org.
Puis-je activer Enterprise Territory Management moi-même, ou ai-je besoin du support Salesforce ?
Dans la plupart des orgs, c'est en libre-service via Setup, Territory Settings ; certaines orgs plus anciennes ou fortement personnalisées peuvent nécessiter un dossier de support, vérifiez donc d'abord Setup avant d'en ouvrir un.
Cela affecte-t-il l'ancienne Territory Management dépréciée (Territory, pas Territory2) ?
Non. Cette erreur est spécifique aux métadonnées Enterprise Territory Management (Territory2) ; la fonctionnalité Territory Management d'origine a ses propres paramètres distincts et n'est pas affectée par cette vérification.

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.