Skip to content

Continuous Integration and Continuous Delivery (CI/CD) for Dynamics 365 Finance X++ projects

Continuous Integration and Continuous Delivery (CI/CD) are essential technical infrastructure on a Dynamics 365 Finance X++ development project. The standard D365 Finance application is relatively large (hundreds of thousands of lines of code). This large size makes both compilation and software package deployment relatively time-intensive tasks in X++ development when compared to other development frameworks. So, investing time up-front to set up CI and CD pipelines will, over the life of the project, save time for your developers and code administrators.

Continuous Integration

Continuous integration is defined as the process of automatically building and testing code every time a team member commits code changes to version control. Automated test execution in D365 Finance requires a running D365 Finance system. However, automated code compilation does not. This disparity makes CI setup for X++ development more complex than more mainstream development frameworks. The Microsoft-recommended approach for automated unit test execution is outlined here. The approach above requires a dedicated build VM. To perform builds without a dedicated VM (but also without automated unit testing), follow the guidance here. Both SysTest X++ unit tests and Regression Suite Automation Tool (RSAT) interface tests can be manually executed.

Continuous Delivery

Continuous Delivery (CD) is defined as the process used to build, test, configure, and deploy code from a build to a production environment. Microsoft's custom release pipeline tools achieve CD by automatically copying deployable software packages from AZDO to the Dynamics Lifecycle Services (LCS) administrative portal. You can then queue a package deployment to the desired environment(s) through LCS. These tools have at least two important limitations you should bear in mind:

  • The tools are currently only available for AzDO, so we recommend using AzDO to manage your code repository.
  • A service account without two-factor authentication (2FA) is required to establish the connection between AZDO and LCS, which some security teams will not allow in their enterprise applications.

There is an important logistical challenge to keep in mind when designing a CD approach for your project. Because the test cycles for D365 Finance customizations are lengthy, most Test environments enter a code freeze while core business processes are being tested. Code freeze may affect the flow of validation in CD unlike manual trigger of deployment to test environment.