Using the SolutionPackager tool with Dynamics 365

Isaac Stephens, 24 July 2019

When you export a solution, you are given a Zip folder containing 3 XML files. These 3 files contain all the information needed to build your solution. But this isn’t exactly human friendly as all of your entities are jammed into one file called ‘Customizations.xml’. But Microsoft have our backs here with the SolutionPackager Tool, this helpful tool extracts the files from the Solution ZIP and separates everything into its parts for easy access.

After installing the SolutionPackager, instructions here, go to the location where the Tools are installed inside PowerShell and run SolutionPackager.exe with the following arguments:

.\SolutionPackager.exe /action:Extract /zipfile:"*zip folder* " /folder "*folder*"

/action: {Extract|Pack}
– Use Extract to extract files and Pack to repack them for deployment.

/zipfile: [Your folder]\YourSolution.zip
– This will be the source folder.

/folder: [Output folder]
– This will be the output folder, it will be created if it doesn’t exist already.

When using ‘Pack’ the folder of extracted files must exist and the zipfile will either be created or updated.

image

If we have a look inside the Entities folder, all of the Entities are split into their own folders with custom entities being shown by their logical name.

image

Opening up one of these we get to see that even in here all the parts of an Entity are split into their own folders and files. This tool has made this solution a lot more human readable by splitting the nearly 70000 lines of customizations.xml into individual files in easy to understand folders.

image

One benefit of this is you can now upload the Root folder to a source control system and then keep track of all changes you, and your team, make to your solution. Being able to track all the changes made to the XML, such as fields, entities, and workflows, can be extremely useful as it will let you see when a certain change was made and what deployment it was in and help resolve/rollback any issues that may have been created with each deployment.