A question that many customers and partners have regarding AX 2009 is how patching is handled for the product. Changes have been made in Dynamics AX 2009 to address some of the concerns that existed with the patching strategy that was in place for Dynamics AX 4.0.
A quick summary of how patching is done in Dynamics AX 4.0:
There are some positives and negatives to this patching approach which I have summarized here:
This feedback was used to make some crucial changes in the design of Dynamics AX 2009 to allow for a more convenient and usable patching approach. For Dynamics AX 2009 individual patches are available for SYS and GLS code. The key change to delivering the individual fix is that Dynamics AX will now allow the import of a signed .xpo file to a particular layer. For a patch to code that resides in the SYS layer a patch would be made that would load an .xpo into the SYP layer. GLS code patches will be made to the GLP layer. This is helpful for multiple reasons. First, the SYP layer is controlled by Microsoft and does not allow others to include code in the layer. This means that only patches released from Microsoft will reside in the layer. At the time of a service pack update, we can also move the axsyp.aod automatically to the old folder for comparison purposes as we know where previously installed patches will reside on the system. The second advantage to patching SYS code in the SYP layer is that any over-layering issues can be avoided. By patching in the proper layer a patch will not overwrite any country-specific functionality that would have expanded on the global code base.
For an application hot fix we ship a package that contains the following:
A patch is installed for Dynamics AX 2009 by clicking on axpatch.exe and following the prompts from the installer. The *.cab file contains the Microsoft signed .xpo as well as an .xml file which directs the installer to the appropriate layer to patch.
The folder named licenseterms contains the license terms used in the installer for each of the supported languages. In the support folder the 24 languages for the patch installer are included as well as necessary files for managing the import of a patch.
The kbXXXXXX.txt file contains the affected objects including methods. This is helpful in initial analysis to determine if the affected object has been modified on your system in any other layer. After the initial analysis the patch can be applied to a test system and the compare tool inside of Dynamics AX can be used to analyze any changes that need to be made to merge the patch into the environment before being deployed on the live system.
Additionally, once an application patch has been applied a new class can be found in the Application Object Tree (AOT) called SysHotFixManifest. This class will contain a method with the KB Article number representing each patch applied to the system. This is done to allow the tracking of patches deployed in AX 2009 as the application version cannot be incremented when using individual patches.
In summary, Dynamics AX 2009 can be patched via a Microsoft signed .xpo file in a specific layer. This enables better tracing of installed patches as well as isolating Microsoft code from customizations and third party applications. The patches installed on an environment can be seen in the SysHotFixManifest class and will appear as methods indicating each KB Article applied.
For additional information on patching Dynamics AX 2009 please see the Dynamics AX 2009 Patching Whitepaper which has been published on PartnerSource\CustomerSource.
Please feel free to comment with your feedback or any questions regarding this approach.
Thanks for reading and have a great day!
Dynamics AX Sustained Engineering Team
This looks promising and is something long needed. Will this patching tool become available for partners to use for patching of their own solutions? What is mean is if a set of components are delivered by one layer (i.e. BUS layer) would it be possible to delivery hot fix which will be installed into BUP using this technique?
Best regards, Sturla.