Understanding Layers in Microsoft Dynamics AX 2012

Visit Website View Our Posts

Microsoft Dynamics AX is fully customizable.  Most of the code used by Dynamics AX is written in X++ and it is visible and editable in the AOT.  This feature provides developers with the ability to add, remove, and even replace intrinsic Dynamics AX functionality within the system.


Some developers are more cautious than others, some are more detailed than others, and some of them spend more time and resources in testing new changes they made to the system.  But after all, we are all humans and we can make mistakes.  Having this amount of power, a developer could potentially make the system unusable.


Microsoft’s approach to this issue was to introduce the concept of layers.  A layer is a hierarchical location where code resides.  From left to right, these are the most common layers available in a standard Dynamics AX system:




Each layer is completely independent of the other layers.  You specify which layer to connect to when setting up the AX client profile.


The bottom layer will be the SYS layer and this is where the standard application code is located, and is only accessible by Microsoft.  Other layers like ISV (Independent Software Vendor), VAR (Value Added Reseller) can be accessed by entering keys that Microsoft provides for each layer except USR (User) which does not require a key.


So the objective of the layers is to provide developers with the option to modify Microsoft’s code but only in one of the layers the developer has access to.


Every time a developer makes a change to a Dynamics AX object in the AOT, a copy (version) of the object is taken from a system layer to the layer which the developer is connected to.  If there are multiple versions of the same object in different layers, then the top layer will take precedence and will be used.


Let’s use an example:


Standard Dynamics AX comes with a table named ALPHABET that consists of columns:  A, B, and C. If there are no changes made in other layers then the end user will see the table exactly as in the SYS layer.




If a developer logs on to Dynamics AX to the VAR layer and adds column D to the table, this is what happens.



Finally if a developer in the USR layer decides to remove columns B and C, this is how the table definition will be seen by the end user.



As you can see, the top layer will always be used, and in this case, it will not matter if you keep adding columns to the table definition in the VAR layer as those new columns won’t be available to the end user, as the USR layer takes precedence.


Written by Eduardo Sicouret, Dynamics AX Technical Consultant for Tridea Partners. Tridea is a leading Microsoft Dynamics AX provider.

11 thoughts on “Understanding Layers in Microsoft Dynamics AX 2012”

  1. There is no right or wrong here. The version of an object can reside in either the ISV or ISP layer.

    If you want to keep the ISV version only, then export the object using an XPO file, then delete the object in the ISP layer and then import the XPO file in the ISV layer.

    Note that if you are referring to a table and its fields then you may lose data if the tables are already populated, in which case I would recommend to just leave the ISP version of the object.

    Tridea Partners

  2. Field is define in ISV we are working on ISP now we have to change the field name in ISP, then have to change that field in ISV in this case, we have to sync with ISV Models are we can directly do configuration of dynamic Ax2012 and change to ISV.. which one is the best way

  3. Hi Eduardo Sicouret,
    Its an Excellent post for people who are new to the layering concept.
    Keep writing such blogs.

  4. The SYS layer (or system layer) can only be modified by Microsoft. You can though create your own version of an object (in this case ‘table’) in other layers like VAR, CUS or USR. To delete a version of an object in one of these layers, you will need to launch the AX client and set it to point to the corresponding layer, and then delete the object from the AOT. This will remove the object version from that layer you are logged in and leave the version in the upper layer (in this case the SYS layer).


    Eduardo Sicouret
    Tridea Partners

  5. arahan567@gmail.com

    "Finally if a developer in the USR layer decides to remove columns B and C, this is how the table definition will be seen by the end user." Will you please explain how to remove the columns you created in sys layer from usr layer.

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Show Buttons
Hide Buttons