So beheben Sie TERRITORY2_NOT_ENABLED bei Salesforce-Deployments

Ein Deployment enthält Territory2-Metadaten, aber Enterprise Territory Management ist in der Ziel-Org nicht aktiviert.

Tritt auf bei: Validierung des Metadaten-Deployments, bevor irgendein DML läuft

Was das bedeutet

TERRITORY2_NOT_ENABLED bedeutet, dass ein Deployment Territory2-Metadaten, Territory-Modelle, Territory-Regeln oder verwandte Referenzen in eine Org bringt, in der Enterprise Territory Management nicht aktiviert wurde. Die Funktion muss in Setup aktiviert werden, bevor Salesforce diese Metadaten akzeptiert, unabhängig davon, wie sauber das Deployment selbst ist.

Enterprise Territory Management ist ein Feature-Flag, das Salesforce über Setup aktiviert (oder bei manchen Editionen über einen Support-Fall), nicht etwas, das die Metadata API im Rahmen eines Deployments einschalten kann. Es ist daher immer eine manuelle, einmalige Voraussetzung und keine Sache, die ein Fix in Ihren Metadaten lösen kann.

Diagnose

Häufige Ursachen

Quell-Org hat die Funktion aktiviert, Ziel-Org nicht
Metadaten wurden aus einer Produktions-Org oder Sandbox mit aktiviertem Enterprise Territory Management abgerufen und in eine Org deployt, in der es nie aktiviert war.
Scratch-Org-Definition lässt die Funktion aus
Eine scratch-org-def.json, die zum Erstellen neuer Orgs verwendet wird, fordert die Territory-Management-Funktion nicht an, sodass neue Orgs ohne sie erstellt werden.
Ein Profil oder Permission Set referenziert Territory-Berechtigungen in einer Org ohne die Funktion
Deployte Metadaten setzen voraus, dass territory-bezogene Berechtigungen existieren, aber die Ziel-Org lehnt sie ab, weil die Funktion selbst deaktiviert ist.

Die Lösung

  1. Enterprise Territory Management in der Ziel-Org aktivieren
    Aktivieren Sie die Funktion in Setup, bevor Sie versuchen, Territory2-Metadaten in diese Org zu deployen.
  2. Funktion zu Scratch-Org-Definitionen hinzufügen
    Nehmen Sie Territory Management in die features-Liste von scratch-org-def.json auf, damit jede neue Scratch-Org sie von Anfang an aktiviert hat.
    {
      "edition": "Enterprise",
      "features": ["TerritoryManagement2"]
    }
  3. Territory2-Referenzen für Orgs entfernen, die keine Territories nutzen
    Schließen Sie Territory-Metadaten von Deployments aus, die auf Umgebungen abzielen, die Enterprise Territory Management bewusst nicht nutzen.
In der Praxis

Wie Serpent das verhindert

Die Scratch-Org-Definitionen von Serpent unterliegen ebenso der Versionskontrolle wie Metadaten, sodass die Territory-Management-Funktion in jede von einem Task provisionierte neue Org eingebacken werden kann, statt sie nachträglich manuell zu aktivieren. Siehe die Bibliothek der Salesforce-Deployment-Fehler.

Metadaten und Daten in einem einzigen Deployment-Flow in Serpent

Prävention

scratch-org-def.json-Features im gesamten Team standardisieren
Pflegen Sie eine gemeinsame, versionierte Scratch-Org-Definition, die jede in der Produktion genutzte Funktion enthält, damit neue Scratch-Orgs nie von dem abweichen, was die Metadaten tatsächlich benötigen.
Org-Feature-Voraussetzungen zusammen mit den benötigten Metadaten dokumentieren
Vermerken Sie in der Setup-Dokumentation Ihres Repos, welche Salesforce-Funktionen, Territory Management, Multi-Currency, Person Accounts, eine neue Org vor ihrem ersten Deployment aktiviert haben muss.
Enterprise Territory Management niemals ohne Plan für jede Org aktivieren
Behandeln Sie die Aktivierung der Funktion als eine org-weite, weitgehend unumkehrbare Entscheidung und stimmen Sie sie über jede Umgebung ab, bevor überhaupt Territory2-Metadaten gebaut werden.
Häufige Fragen

TERRITORY2_NOT_ENABLED, beantwortet

Kann Enterprise Territory Management aktiviert und später wieder deaktiviert werden?
Einmal aktiviert und genutzt, lässt es sich in der Regel nicht ohne erheblichen Mehraufwand vollständig deaktivieren; betrachten Sie die Aktivierung als Einwegentscheidung für diese Org.
Kann ich Enterprise Territory Management selbst aktivieren, oder brauche ich den Salesforce-Support?
In den meisten Orgs geht das im Selbstbedienungsmodus über Setup, Territory Settings; manche älteren oder stark angepassten Orgs benötigen eventuell einen Support-Fall, prüfen Sie also zuerst Setup, bevor Sie einen eröffnen.
Betrifft dies das ältere, veraltete Territory Management (Territory, nicht Territory2)?
Nein. Dieser Fehler betrifft speziell Enterprise-Territory-Management-Metadaten (Territory2); die ursprüngliche Territory-Management-Funktion hat eigene, separate Einstellungen und ist von dieser Prüfung nicht betroffen.

Kostenlos starten. Keine Kreditkarte, keine Installation, keine Verpflichtung.

In unter 15 Minuten eingerichtet. Keine DevOps-Fachkraft nötig.

Neugierig auf schnelleres Shipping, bevor Sie einsteigen? Sprechen wir

Unverbindlich.