Earlier today I published a new PowerShell module, Adoxio.Dynamics.DevOps, to GitHub and the PowerShell Gallery. This has been in the works for quite a long time, and was finally done today out of necessity and convenience to release a new version. Until today, it’s only been used internally and by a select few clients on projects we’ve delivered. By releasing this module as an open source project and publishing it on the PowerShell gallery, we’re hoping it will be useful to others as well.
Fully articulating and documenting this PowerShell module is going to be a much larger undertaking than I can forsee myself having a large block of time to do, so I’m going to start out small and begin by describing some of the motivations and goals behind it.
At a high level, the module is geared towards solving these technical goals:
- Exporting solutions and data from a source Dynamics 365 instance
- Importing solutions and data to a target Dynamics 365 instance
- Storing the exported solutions and data in source control in an easy to view format
If you’ve followed Adoxio and its previous identity of Adxstudio, you may recognize that these goals are very similar to ones that were handled by the Adxstudio ALM Toolkit. This is not a coincidence, and this project was started after the Microsoft acquisition of Adxstudio which resulted in ALM Toolkit being released for free 🙂 but also was only available for use in an unsupported manner :(. The ALM Toolkit hasn’t been open sourced, and at this point seems all but certain to remain abandonware.
We didn’t want to use unsupported software, and started to look around for alternative tools to accomplish export and import tasks. What we found was there wasn’t a single tool that did the entire job, but we did find several that when used together get pretty close to – and arguably a bit further – than what ALM Toolkit accomplished. The tools found and what they’re each used for are:
- Exporting and importing of data through the Dynamics 365 SDK’s Configuration Migration tool
- Exporting and importing of solutions (among many other abilities) through the open source Microsoft.Xrm.Data.PowerShell PowerShell module
- Unpacking solution zip files into their individual components and packing them back again into a single zip file through the Dynamics 365 SDK’s SolutionPackager tool
- Importing of both solutions and configuration migration tool generated data through the Dynamics 365 SDK’s Package Deployer
The Adoxio.Dynamics.DevOps module builds upon all of these tools, along with additional features, to produce a development workflow for:
- Exporting solutions and data (the assets) from a Dynamics 365 instance
- Storing the assets in source control in a easy to view and history friendly format
- Packaging all of the assets stored in source control back into a format that can be imported
- Importing all the assets into a Dynamics 365 instance
If you’ve used any of the tools listed earlier, this module should hopefully be familiar and useful. I’ll continue with more details about using this module in a future blog post.