·3 min read·Rishi

Dataverse Solution Components: A 2026 Quick Reference

dynamics-365-crmpowerapps
Dataverse Solution Components: A 2026 Quick Reference

When working with unmanaged solutions in Dynamics 365 and Power Platform, understanding solution component types is essential for troubleshooting import errors, managing dependencies, and scripting deployments.

Common Component Type Codes

Here are the component types you will encounter most often in solution.xml and the Solution API:

CodeComponent TypeExample
1Entity (Table)Account, Contact, custom tables
2Attribute (Column)firstname, custom_field
3RelationshipMany-to-one, many-to-many
9Option Set (Choice)Global choice columns
10Entity RelationshipLookup relationships
24Security RoleSales Manager, System Admin
25PrivilegeprvReadAccount
26Role PrivilegeLinks role to privilege
29Workflow (Classic)Classic workflows
60System FormMain form, quick create
61Web ResourceJavaScript, HTML, images
62Site MapApp navigation
63Connection RoleStakeholder, Team Member
65Assembly (Plugin)Plugin DLL registrations
66Plugin StepSDK message processing step
70Field Security ProfileColumn-level security
91Plugin TypeIndividual plugin classes
300Canvas AppPower Apps canvas apps
371ConnectorCustom connectors
372Environment Variable DefinitionConfig variables
380AI ModelAI Builder models
10076Cloud FlowPower Automate cloud flows

Reading solution.xml

Root components appear in the <RootComponents> section:

<RootComponents>
  <RootComponent type="1" schemaName="account" />
  <RootComponent type="60" id="{GUID}" />
  <RootComponent type="29" id="{GUID}" />
</RootComponents>

The type attribute maps to the table above. The id is the component's unique identifier in Dataverse. For entities, the schemaName is used instead.

Using the Solution API

Query components programmatically:

GET /api/data/v9.2/solutioncomponents?$filter=_solutionid_value eq '{solution-id}'&$select=componenttype,objectid

Or with PowerShell:

$components = Get-CrmRecords -EntityLogicalName solutioncomponent `
  -FilterAttribute solutionid -FilterOperator eq -FilterValue $solutionId `
  -Fields componenttype, objectid

$components.CrmRecords | Group-Object componenttype | 
  Select-Object @{N='Type';E={$_.Name}}, Count | 
  Sort-Object Count -Descending

Troubleshooting Import Errors

When a solution import fails with a missing dependency:

  1. Check the MissingDependencies section in the import log
  2. Note the type and id of the missing component
  3. Look up the type in the table above to understand what is missing
  4. Find which solution contains that component and import it first

Common causes:

  • Missing base table that a flow references
  • Security role referencing a privilege from an uninstalled solution
  • Plugin step registered against a message that does not exist in the target

Key Takeaway

Bookmark this table. You will reach for it every time you debug a solution import error or script a deployment. The component type codes haven't changed in years — this reference stays valid.

Comments

No comments yet. Be the first!