Dataverse Tip #1

Read a solution package before you import it: three files and two things that lie to you

A Dataverse solution is a zip: three files tell you what you are about to import, and two things inside them mislead you if you read them the obvious way.

A Dataverse solution is a zip file, and you can read it without an environment, a login or a single pac command. Two files inside it carry most of what you need to know before an import.

solution.xml is the identity: the unique name, the version, whether the package is managed, the publisher, and a <RootComponents> list in which every component is a type number and nothing more. customizations.xml is the payload - tables, columns, forms, views. [Content_Types].xml keeps SolutionPackager happy and tells you nothing.

customizations.xml declares things the package does not carry

It declares Entities, Roles, Workflows and WebResources whether or not the package carries any. Microsoft’s metadata sample has three root components and not one of them is a table, yet its <Entities> element is there with nothing inside it

The web resource payload has no extension

Inside the zip a file is named after its logical name with the dot removed and the resource’s uppercase GUID glued on: example_form-script.js becomes WebResources/example_form-scriptjsAEFB6A9A-0EA4-F111-B8DC-7CED8DA8A791. There is no extension, so editors, diff tools and packers each guess the type and each guess differently. The only honest source is <WebResourceType>, where 3 means a script. The logical name is not a hint either: Microsoft’s own metadata sample ships a resource called sample_/metadatabrowser, which carries no extension and is a web page.

The published type table is not the whole set

Microsoft’s metadata sample declares type 80, the CoE starter kit ships nine of them, and the reference page has no row for 80 at all. Tooling that treats the documented list as exhaustive drops those components on the floor.

A managed solution cannot be edited once it is in the target environment, and an import that fails halfway leaves you diagnosing from the portal. Thirty seconds with the zip - how many components, of which types, and which web resources - is the difference between a five-minute import and an afternoon.