Hoe je INVALID_TYPE in Salesforce-implementaties oplost

Een metadatacomponent, of een type waarnaar deze verwijst, is niet geldig of ingeschakeld in de doelorganisatie.

Komt voor tijdens: validatie van metadata-implementatie, vóór enige DML of testuitvoering

Wat het betekent

INVALID_TYPE betekent dat de doelorganisatie een metadatacomponent heeft geweigerd omdat het type ervan, of een type waarvan deze afhankelijk is, daar niet wordt ondersteund. Dit is meestal terug te voeren op een organisatiefunctie of licentie die niet is ingeschakeld in de doelorganisatie, een mismatch in API-versie, of een standaardobject of -veld dat niet bestaat in de editie van die organisatie.

Dit komt het vaakst voor bij het promoten van metadata van een functierijke productieorganisatie, of een volledige sandboxkopie daarvan, naar een scratch-organisatie of Developer Edition-sandbox waarvan de functieset en licenties nooit zijn geconfigureerd om overeen te komen.

Diagnose

Veelvoorkomende oorzaken

Functie niet ingeschakeld in de doelorganisatie
De metadata is afhankelijk van een functie zoals Person Accounts of Multi-Currency die is ingeschakeld in de bronorganisatie maar uitgeschakeld in de doelorganisatie.
Mismatch in API-versie
De API-versie van de metadata verwijst naar een veld of mogelijkheid die de ondersteunde API-versie van de doelorganisatie niet herkent.
Standaardobject of -veld ontbreekt voor de editie
Het aangehaalde standaardobject of -veld is alleen beschikbaar in een Salesforce-editie of licentie die de doelorganisatie niet heeft.

De oplossing

  1. Bevestig dat de functie is ingeschakeld
    Controleer of de doelorganisatie dezelfde functie of licentie, Person Accounts, Multi-Currency, of iets vergelijkbaars, heeft ingeschakeld als de bron.
  2. Stem de API-versie af
    Stem de API-versie van de metadata in package.xml af op een versie die de doelorganisatie volledig ondersteunt.
    <Package xmlns="http://soap.sforce.com/2006/04/metadata">
      <types>
        <members>*</members>
        <name>CustomObject</name>
      </types>
      <version>62.0</version>
    </Package>
  3. Controleer de compatibiliteit van de editie
    Bevestig dat de Salesforce-editie van de doelorganisatie het standaardobject of -veld bevat waarvan de component afhankelijk is.
In de praktijk

Hoe Serpent dit voorkomt

Serpent AI vergelijkt de mogelijkheden van bron- en doelorganisatie voordat een taak wordt afgebakend, zodat een verschil in editie of functie als waarschuwing verschijnt in plaats van als mislukte implementatie. Zie de bibliotheek met Salesforce-implementatiefouten.

Metadata en data in één deploymentflow in Serpent

Preventie

Stem scratch-org-functiedefinities af op de ingeschakelde functies van productie
Houd de functies en editie-instellingen van scratch-org-def.json synchroon met wat productie daadwerkelijk heeft ingeschakeld, en beoordeel dit telkens wanneer een nieuwe functie wordt ingeschakeld.
Zet package.xml vast op een bewuste API-versie, niet altijd-nieuwste
Kies een API-versie die je hele toolchain en elke doelorganisatie ondersteunt, en verhoog deze bewust in plaats van te laten afdrijven naar wat je CLI standaard gebruikt.
Documenteer editie-gebonden afhankelijkheden op de component zelf
Vermeld in de beschrijving van de metadata of in schemadocumentatie wanneer een component afhankelijk is van een specifieke editie of licentie, zodat dit zichtbaar is vóór een promotiepoging.
Veelgestelde vragen

INVALID_TYPE, uitgelegd

Betekent INVALID_TYPE dat de metadata-XML misvormd is?
Nee. De XML is meestal geldig; het type dat wordt gedeclareerd of aangehaald wordt gewoon niet ondersteund door de editie, functies of API-versie van de doelorganisatie.
Kan ik een ontbrekende functie zelf inschakelen, of is Salesforce-support nodig?
Dat hangt af van de functie. Sommige, zoals Multi-Currency, zijn self-service in Setup maar in de praktijk onomkeerbaar; andere, zoals Person Accounts, vereisen een Salesforce-supportcase om in te schakelen.
Kan het downgraden van de API-versie in package.xml nieuwe problemen veroorzaken?
Ja, het kan de toegang blokkeren tot nieuwere velden of metadatatypen die je code daadwerkelijk nodig heeft. Stem de versie af op wat de doelorganisatie ondersteunt in plaats van verder te downgraden dan nodig.

Begin gratis. Geen creditcard, geen installatie, geen verplichtingen.

In minder dan 15 minuten ingericht. Geen DevOps-aanwerving nodig.

Benieuwd naar sneller releasen voordat je instapt? Laten we praten

Vrijblijvend.