When I first started to work with MS Dynamics NAV, I needed to understand some of the most important concepts related to Dimensions: what’s the difference between global dimensions, shortcut dimensions, default dimensions, what are default dimensions priorities, what are dimension set entries etc ? I couldn’t find an article on the internet that demonstrates all these concepts starting with the beginning and covering most of them in an easy manner.
That’s why, in this post I will explain Microsoft Dynamics NAV Dimensions from a functional perspective and you will see how easy it is to work with them.
- What are Microsoft Dynamics NAV Dimensions used for ?
We use Dimensions in order to add data to entries before posting so that posted entries can be grouped and retrieved for analysis purposes. For the most simple example, imagine that you invoiced customers located in “City A” 10.000 euros and customers from “City B” 20.000 euros. If you don’t use dimensions, you will only know that your revenue is 30.000 euros, but it might be useful to know in which area you are selling the most or for example to compare the sales from January with the Sales from February to customers from “City B”. Using Dimensions, in this case, means that for every sale you will specify the City of the Customer and the result would be that you will know the sales per City. In this example the Location or Area is the Dimension and the Cities are the Dimension Values:
! So, a Dimension is a type of information that you want to add to an entry and a Dimension value is a possible value for a particular dimension.
The more dimensions you are using, the more complicated the daily use of the system will be.
- How to create dimensions and dimension values:
To create Dimensions, go to Departments/Administration/Application Setup/Financial Management/Dimensions:
! In Microsoft Dynamics NAV, there are a couple of features or concepts created to ease the use of dimensions (no need to manually add the dimension values to each transaction), ensure the accuracy of reporting (make sure that dimension values are assigned to each required entry and users don’t forget to add them), organize the columns of the database to minimize data redundancy in order to increase the speed of the system and decrease the size of the database etc.
- Global Dimensions, Shortcut Dimensions and Setting up Dimensions in General Ledger Setup:
Global dimensions: the two most important dimensions should be set up as Global Dimensions, in the General Ledger Setup (Departments/Administration/Application Setup/Financial Management/Finance):
! Global Dimensions are maintained at the entry level !
For example, if we post an Invoice with Default Dimensions values Department: Sales and D_Location: City B, in the G/L Entry we will have the two columns with the Dimension Values:
In this way, the user can very easily use these dimensions to filter the entries for reporting purposes. All other dimensions cannot be shown directly in the ledger entries because they are stored in another table !
Shortcut Dimensions: dimensions that can be shown as columns in for example sales lines, purchase lines or journal lines. In this way, the user can add dimensions directly in the line without having to go in another page:
In the General Ledger Setup the 2 Global Dimensions are by default the first two Shortcut Dimensions and six more Shortcut Dimensions can be defined by the user.
- Default Dimensions:
Are stored at the master data level (Customers, Items, Vendors etc). For example if we sell to Customer 10000, the customer location will always be for example “City B”. In order to not have to add manually the dimension in each Sales Order, we can setup a default dimension at the Customer level and anytime we use that Customer, the system will automatically add that dimension in the Sales Order:
When you assign default dimensions there is another very important field: Value Posting:
* Same Code: the only code possible for that customer. For example it should always be “City B”. If the user changes the value in the sales order, the system will not post the invoice.
* No Code: it means it’s not possible to post on that customer with the selected Dimension or Dimension and Dimension Value combination. In this example, if we select “No code”, the system will not post the invoice if the dimension D_Location has the value “City B”. If we leave the “Dimension Value Code” blank, the system will not post the invoice if in the invoice there is a dimension value selected for the D_Location dimension.
! We can also assign default dimension to multiple Customers by selecting the Customers in the Customer List page and choosing the “Dimension Multiple” Action from Navigate- Dimensions- Dimensions Multiple.
! Assign Default Dimensions for an Account Type: looking at the Customers examples, if we are using D_Location dimension for the Customers, we want this dimension to be mandatory for each Customer. If an user creates a new Customer and forgets to add a default dimension how can we make sure that the system will not post documents related to that customer until a value is added for the D_Location dimension ? We can make the D_Location dimension mandatory for the Account Type Customer, so for the Customers table, using the “Account Type Default Dim.” function from the Dimensions Page. In the below example it means that a D_Location dimension value is mandatory for each Customer:
! Default Dimensions Conflicts: for example if we set up for Customer 10000 default dimension D_Location “City B” with Posting Value “Same Code” and we also set up on Account Type level for all Customers from table 18 Dimension Value “City A” also with Posting Value “Same Code”, we would have a conflict. In NAV we can run a report to see if any conflicts exist:
- Default Dimensions Priority:
As default dimensions can be assigned to different master data tables, other conflicting situations might occur. For example let’s suppose that we assign the “City A” dimension value to Item 1300, and “City B” to Customer 10000 (in reality you might not assign areas to items, but for the purpose of demonstrating the concept let’s suppose that we have this situation). If we will invoice the item 1300 to Customer 10000, what dimension value should the system select ?
a) The standard rule is that the default dimension value of the last entered account takes priority. So in this example, the value would be “City A”, from the item because in the sales order we first enter the customer and then the item.
b) Also if for example we have setup a default dimension on the Account Type level (ex: at the Customer table level), but on an individual account we have another value, the most specific value takes priority (the value from the individual account).
However, we can overrule the standard rule from the first situation by setting up default dimension priorities: the system will select the dimension value of the account that has the highest priority. In our example from point a), if we setup like in the below image (Customer table has priority 1 and Item table priority 2), the dimension value from the Customer will be selected by the system, because it has the highest priority.
Default dimension priorities are set up based on the Source Codes.
In a Sales order, for example, you can see or modify dimensions on the Header level (Customer) from Navigate-Dimensions and on the Line level (Item/GL Account/Resource etc) from Line-Dimensions. Usually, the dimensions from the Line level are more important, because from a reporting perspective, we are interested in what we are selling or what is the cost of each item per department for example. If we assign dimensions manually in the Sales Order (not using Default Dimensions), the dimensions assigned to the Header can be copied to all the lines.
- Blocking Dimension Combinations:
Another feature in Dynamics NAV is to disallow the user to use combinations of dimensions. You can do this from “Departments/Administration/Application Setup/Financial Management/Dimensions/Dimension Combinations“. There are 2 options:
a) Blocked: in the bellow example it means that we cannot use both Project and Customer Group Dimensions:
b) Limited: for example you want to allow users to use CustomerGroup together with BusinessGroup Dimensions but block only some specific values of these dimensions:
In the below example, it is not allowed to post transactions where the BusinessGroup is “Home” and the CustomerGroup is “Institution”. All the other combinations are still possible.
- Dimension Set Entry:
As I said, only Global Dimensions are stored at the Ledger Entries level, all other dimensions are stored in another table and this happens based on Dimension Set Entries. What happens is that when we assign dimensions, Microsoft Dynamics NAV creates automatically entries in the table “Dimension Set Entry” (480). For example, let’s analyze the case of the below posted sales invoice:
What the system did ? It created an Entry in table “Dimension Set Entry” as in the below print screen and in the G/L Entry table it stored only the “Dimension Set ID” of the combination. In this way, the performance of the system is improved and the database space preserved.
Basically, every time when we enter dimensions, the system checks if the combination exists and if does not exist, it creates new entries in “Dimension Set Entry” table and assigns a new Dimension Set ID. If it exist, it does not create new entries in this table and it uses the existing Set. Based on the Dimension Set ID, the system knows what dimensions were used for each entry and it can use this information for reporting and analysis purposes.
I will not go through how to use Microsoft Dynamics NAV Dimensions for Financial Reports and Analysis in this post because it will be too long, but I am thinking about creating a post about this subject in the future.