Sunday, 23 February 2014

Enterprise Development Part 2 - ALM Framework for Dynamics CRM

The ALM Framework for Dynamics CRM is a C# console application designed to support an automated scheduled build. It's primary purpose is to enable the following process to be executed from a command line or windows schedule:

1. Get the latest version of the visual studio web resources project (VSProj1) from Team Foundation Server (TFS).
2. Deploy the web resources to the "master" CRM Server and publish all.
3. Increment the version of the target CRM solution on the master server.
4. Export the target CRM solution as a zip file to a temporary location on disk.
5. Check out the workspace folder containing the unpacked/extracted CRM solution files in the local workspace (VSProj2).
6. Unpack the CRM solution exported from the master server to disk - overwriting the existing files in VSProj2.
7. Modify the Visual Studio project that contains the unpacked solution files (VSProj2) - new files are added to the .csproj and deleted files are removed.
8. Check in the TFS workspace. 

Pre-Reqs and Assumptions

1. You are using Team Foundation Server for Source Control.
2. You are using an existing CRM Developer SDK Visual Studio project to source control and develop your web resources (VSProj1).
3. You have an existing Visual Studio project to store the unpacked CRM solution for source control purposes. (VSProj2)

Under the Hood

The Build Automation tool is simply a mechanism for automating calls to a number of other tools that actually do the work. They are as follows:


This is a commandline tool for interacting with and automating Team Foundation Server operations. Build Automation calls TF.exe to "Get Latest", "Checkout", "Checkin", "Delete" and "Label" the CRM Solution files.

Solution Packager

This is a command line tool included in the CRM SDK. It is used for unpacking CRM solutions to disk as individual files so that they can then be source controlled. It is also used for packaging the individual files back into a zip file CRM solution that can be imported into a target CRM server.

Solution Manager 

A command line tool to provide xRM solution management. This tools is used to export, import and version CRM solutions. In the process above it exports the CRM solution file that is then unpacked by the Solution Packager.

Build Automation for Dynamics CRM provides the glue that binds these three components together to support the process outlined for source controlling a CRM solution.