Andosi - Blog
Automating Deployments to Dynamics
Mark Johnston
03 March 2023
In a previous post "Best Management Practices for Dynamics", we discussed the value of having multiple Dynamics 365 Environments in order to reduce the risk to the Production system and data when introducing new customizations. This post will introduce the concept of automating the publishing those customizations to each environment, also called migration, release, or deployment. As the name indicates, an Automated Deployment is a process that publishes system changes to various environments in a consistent and repeatable way with minimal human involvement.
Before examining the automation, let's explore how customizations are deployed to Dynamics 365 Environments manually. This effort is typically performed by a System Administrator, often with support from a Development Team. The Administrator will start by exporting a file containing the new customizations from the Development Environment. Then the customizations will be imported into the next Environment, for example, Testing. Once the changes are tested and validated then the process will be repeated for the next Environment, culminating with being imported into Production.
This seems simple enough for companies with smaller implementations of the Microsoft PowerApps platform. But as the size and scope of the system grows so does the complexity and risk of the deployment process.
The most common deployment problems are caused by simple human error. Despite anyone's best effort, everyone will occasionally fail to perform a step or make a typo that can cause huge problems, especially when considering the impact to a Production Environment.
There can also be challenges with providing adequate visibility into the deployment process. For example, the System Administrator who performed the work will know the current status and have access to the error logs, but other members of the technical team or other stakeholders will not have direct access to some of this information. Finally, there's the simple matter of time it takes a technical team to manually perform the steps for the deployment, time that could be better spent solving new business problems.
All of these pain points can be addressed by automating the process.
Capabilities
There are several different tool sets that can be used to create the automation for deploying packaging and deploying to Dynamics, but Microsoft’s Azure DevOps Platform is one of the best choices for most deployments. The DevOps Pipelines and Releases includes the following capabilities:
- Packaging and publishing custom-developed client-side scripts
- Executing automated unit tests against source code
- Compiling and publishing custom-developed plugins and workflow assemblies
- Publishing custom Reports
- Rich auditing and logging
- Most common Dynamics 365 Administration tasks
There are multiple ways to initiate the process of an automated deployment. For example, deployments to a Testing Environment can be automatically started as soon as developers commit changes to a source control repository. Deployments to a Staging Environment can be scheduled to happen at a specific time on the same day of every week. Deployments to Production can be configured to require approvals from key stakeholders before being started. These are just some of the many common scenarios supported by the Azure DevOps platform.
Benefits
The benefits to using Automated Deployments are significant.
- Consistency: The process will be performed consistently every single time.
- Simplicity: The deployment is no longer dependent on the knowledge of a single person or team within the company. Anyone with permissions to click a "Run" button can start the process.
- Efficiency: Each step of the deployment process is performed as quickly as possible and even many of the post-deployment validation steps can be automated. This prevents the technical teams from spending time performing manual tasks and frees them to focus on more valuable efforts, like creating great software.
- Transparency: Rich logging is captured throughout the process, providing significant visibility into the status of the process as well as abundant details for troubleshooting any errors.
- Frequency: Automated Deployments can occur more frequently due to having smaller overhead than manual deployments. This allows for more rapid feedback and a more agile response to changing business needs.
Downsides
Naturally, there are a few downsides - similar to automating any other process. Some time and expertise will be required upfront to configure the automation. However, the effort required today is far smaller than in years past thanks to the tremendous advances in tooling.
Another downside of having a consistent deployment process is the expectation that customizations to the system will be consistently performed. For example, if your Automated Deployment is configured to only migrate a specific Solution then any customizations added to different Solutions will not be migrated. This may require some organizations to introduce better governance around their customization and development processes.
Despite these minor downsides, introducing Automated Deployments to your Dynamics 365 implementation will add significant business value and reduce the risk that comes from manual deployments. The tooling is readily available, simple to configure and the help resources are abundant. There's no reason to hesitate - start today!