Monday, 4 January 2016

AX7 Application Code Store (ModelStore in AX2012)

In different versions of Dynamics AX, application code is stored at different places and in different formats. Table below summaries this for last few versions.

File System
Database - With Business Data
Database - Separate From Business Data
File System
Proprietary Format
XML Files

In AX7 Microsoft has not only changed the way application code is stored but also how it is grouped. Application code, that should stay together and is distributed/compiled as a unit, is called a Package.

In AX7 the application code is saved in file system in a directory and is called PackageDirectory. The location of directory (along with other settings) is saved in a web.config file. Why web.config? Because the AX7 AOS is implemented as ASP.NET web application running on an IIS.

In IIS right click on the site "AOSWebApplication" and click on Explore as shown below.

In the folder, find web.config, open it with notepad and search for "Aos.PackageDirectory". This will have the location of application directory.

In this instance we can see that application code is located in C:\Packages. This file also contains the information of business database location.

Folder Structure:
Following diagram highlights the structure of package directory in AX7.

  • Application code consists of many packages including the standard ones that Microsoft shipped (ApplicationFoundation, ApplicationPlatform, ApplicationSuite, Calendar etc) and any custom packages. 
  • In individual package folder, a folder named "Descriptor" is present. This holds the information of the package, the packages it references and the modes that are part of this package. The file is in XML format.
  • Each package consists of one or more models (Model 1, Model 2...Model n). 
  • In the model folder (Model 1 in the above screenshot) there is a folder for each AX object type (AxClass, AxEDT, AxTable etc).
  • The information (code etc) for individual objects is stored in a XML file (shown from FleetManagment package in the above screenshot).

This posting is provided "AS IS" with no warranties. Use code at your own risk.