So beheben Sie INVALID_TYPE in Salesforce-Bereitstellungen

Eine Metadatenkomponente oder ein von ihr referenzierter Typ ist in der Ziel-Org nicht gültig oder aktiviert.

Tritt auf bei: der Validierung des Metadaten-Deployments, vor jeglicher DML- oder Testausführung

Was das bedeutet

INVALID_TYPE bedeutet, dass die Ziel-Org eine Metadatenkomponente abgelehnt hat, weil ihr Typ, oder ein Typ, von dem sie abhängt, dort nicht unterstützt wird. Das lässt sich meist auf ein in der Ziel-Org nicht aktiviertes Org-Feature oder eine fehlende Lizenz, eine falsche API-Versionsübereinstimmung oder ein Standardobjekt bzw. -feld zurückführen, das in der Edition dieser Org nicht existiert.

Das kommt am häufigsten vor, wenn Metadaten aus einer funktionsreichen Produktions-Org, oder einer vollständigen Sandbox-Kopie davon, in eine Scratch-Org oder eine Developer-Edition-Sandbox befördert werden, deren Funktionsumfang und Lizenzen nie darauf abgestimmt wurden.

Diagnose

Häufige Ursachen

Feature in der Ziel-Org nicht aktiviert
Die Metadaten hängen von einem Feature wie Person Accounts oder Multi-Currency ab, das in der Quell-Org aktiviert, in der Ziel-Org jedoch deaktiviert ist.
API-Versionskonflikt
Die API-Version der Metadaten referenziert ein Feld oder eine Funktion, die die unterstützte API-Version der Ziel-Org nicht erkennt.
Standardobjekt oder -feld für die Edition nicht vorhanden
Das referenzierte Standardobjekt oder -feld ist nur in einer Salesforce-Edition oder Lizenz verfügbar, über die die Ziel-Org nicht verfügt.

Die Lösung

  1. Bestätigen, dass das Feature aktiviert ist
    Prüfen Sie, ob die Ziel-Org dasselbe Feature oder dieselbe Lizenz, Person Accounts, Multi-Currency oder Ähnliches, wie die Quelle aktiviert hat.
  2. API-Version angleichen
    Gleichen Sie die API-Version der Metadaten in package.xml an eine Version an, die die Ziel-Org vollständig unterstützt.
    <Package xmlns="http://soap.sforce.com/2006/04/metadata">
      <types>
        <members>*</members>
        <name>CustomObject</name>
      </types>
      <version>62.0</version>
    </Package>
  3. Edition-Kompatibilität prüfen
    Bestätigen Sie, dass die Salesforce-Edition der Ziel-Org das Standardobjekt oder -feld enthält, von dem die Komponente abhängt.
In der Praxis

Wie Serpent das verhindert

Serpent AI vergleicht die Fähigkeiten von Quell- und Ziel-Org, bevor eine Aufgabe abgegrenzt wird, sodass eine Edition- oder Feature-Lücke als Warnung statt als fehlgeschlagenes Deployment erscheint. Siehe die Bibliothek der Salesforce-Bereitstellungsfehler.

Metadaten und Daten in einem einzigen Deployment-Flow in Serpent

Prävention

Feature-Definitionen der Scratch-Org an die aktivierten Produktions-Features anpassen
Halten Sie die Features und Edition-Einstellungen in scratch-org-def.json synchron mit dem, was in der Produktion tatsächlich aktiviert ist, und überprüfen Sie dies bei jeder Aktivierung eines neuen Features.
package.xml auf eine bewusste API-Version festlegen, nicht immer-neueste
Wählen Sie eine API-Version, die Ihre gesamte Toolchain und jede Ziel-Org unterstützt, und erhöhen Sie sie bewusst, statt sie auf den Standardwert Ihrer CLI abdriften zu lassen.
Edition-gebundene Abhängigkeiten direkt an der Komponente dokumentieren
Vermerken Sie in der Beschreibung der Metadaten oder in der Schema-Dokumentation, wenn eine Komponente von einer bestimmten Edition oder Lizenz abhängt, damit dies vor einem Promotion-Versuch sichtbar ist.
Häufige Fragen

INVALID_TYPE, erklärt

Bedeutet INVALID_TYPE, dass das Metadaten-XML fehlerhaft ist?
Nein. Das XML ist meist gültig; der deklarierte oder referenzierte Typ wird von der Edition, den Features oder der API-Version der Ziel-Org einfach nicht unterstützt.
Kann ich ein fehlendes Feature selbst aktivieren, oder braucht es den Salesforce-Support?
Das hängt vom Feature ab. Manche, wie Multi-Currency, sind im Setup selbst aktivierbar, aber praktisch irreversibel; andere, wie Person Accounts, erfordern einen Salesforce-Support-Fall zur Aktivierung.
Kann das Herabstufen der API-Version in package.xml neue Probleme verursachen?
Ja, es kann den Zugriff auf neuere Felder oder Metadatentypen verdecken, die Ihr Code tatsächlich benötigt. Passen Sie die Version an das an, was die Ziel-Org unterstützt, statt weiter als nötig herabzustufen.

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

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

Neugierig auf schnelleres Shipping, bevor Sie einsteigen? Sprechen wir

Unverbindlich.