Serializing Financial Dimensions in Microsoft Dynamics AX 2012- Default Dimensions

Camilo Godines

The Microsoft Dynamics AX/D365 Support Team at Avantiico is focused on solving our client’s problems, from daily issues to large and more complex problems.

See All Posts

This article will cover advanced x++ to show how developers can serialize financial dimensions to create a default dimension surrogate key from a series of financial dimensions.

In Microsoft Dynamics AX 2012 the financial dimensions are stored as a 64bit integer surrogate key in the database. For example, the following financial dimension combination of BusinessUnit = 001, ItemGroup = Service in AX it is represented as 22565424233. For example, an integration or import process may require a combination of financial dimensions to be serialized in order to save this information in Microsoft Dynamics AX.

There have been significant changes in how financial dimensions are stored in Microsoft Dynamics AX 2012 versus previous versions, and this blog post can assist developers who are not familiar with Microsoft Dynamics AX 2012 financial dimension architecture. This blog explains how this can be used, using a simple import routine. Please refer to my other post about How to Deserialize a Default Dimension in Microsoft Dynamics AX 2012.

Financial dimensions are stored as a 64bit integer surrogate key in the database. When reading/importing financial dimensions it is necessary to create this 64bit integer surrogate key to be stored in the database. This blog explains some of the common Microsoft Dynamics APIs available to save/create a default dimension surrogate key. I’ve created a simple job to demonstrate this.

In this example, we will be working with the financial dimensions of a customer and we will be reading its financial dimensions out of a CSV file and we are filling out the default dimensions in AX.

Figure 1: Customer Default Dimensions

Customer Export
Dynamics 365 retail screen

These financial dimensions are stored in the SQL database as a 64 bit integer, right now for customer US-001 there are no financial dimensions, thus we have the DefaultDimension field equal 0.

Figure 2: DefaultDimension Value

Customized Table

Figure 3: Data model of dimension framework in AX 2012


The following script is created to demonstrate:

Figure 4: Sample AOT Job


Figure 5 & 6: This is how the Customer form looks after running the job:

Customer account screen dynamics
Table customized

The Following Microsoft API's Are Used:

–  The DimensionAttributeValueSetStorage class is used to iterate through all the financial dimensions in the DefaultDimension.

–  The DimensionAttributeValue table is used, this stores a link to the VALUE of the financial dimension we want to display, for example a department or cost center number. This is usually linked via a surrogate key, e.g. DimensionAttibuteValue.EntityInstance is a surrogate key to the exact record we wish to display.

–  The DimensionAttribute table is used, this stores information so we can understand the TYPE of financial dimension. This stores the object ID of the view or tabled used as backing entity, e.g. 11765 = DimAttributeOMDepartment

–  The DimensionAttribute record contains a “ValueAttibute” field, which is the field id in the backing entity view that stores the VALUE of the financial dimension, this is a natural key, for example a department ID (e.g. Department 10).


Thanks for reading this blog, let me know if you liked it or if you want to hear about something else in my next post!


More to explorer

Request a free Dynamics 365 demo

Discover how Avantiico helps you improve business processes, provide customers with a seamless experience and transform the way you do business.