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.
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:
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.
The benefits to using Automated Deployments are significant.
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!