Access Dynamics AX (aka ‘7’) performance counters with “&debug=develop”.

The new Dynamics AX have some very powerful capabilities to show exactly where time is spent. You would like to explore more about what is happening behind the scene, try adding the “&debug=develop” to the URL. This will bring up a small timer that shows how much time was spent on opening and showing the current form.

If you click on it, it will give more performance details. Like if I open the all customers in the Contoso form, my system gives me the following.

I see here that the loading the customers took 366 ms, where 131 ms was from the AOS loading the data. You also see a color coding (green/blue) that indicates at what sequence the time was spent.

There is also a section to show what the server is doing, and it also shows you the exact SQL call that was the longest running SQL statement.

At the bottom of the performance screen we can also see something interesting;

And when I click on this Session ID, I get;

I have no clue what that is J, but could this be a tool for external monitoring ?



New AX (aka ’7’), limited navigation and the WHSWorkExecute

When opening the new Dynamics AX client, you see that we have a nice set of navigation menus and options in the top of the screen.

But if you would like to limit the navigation options for the user, try to add the “&limitednav=true” to the URL.

As you see, the menu-bar is then changed, and the user cannot see the menu buttons, search and settings any more. We have a limited navigation.

Let’s further extend this ability by also adding the “&mi=action:WHSWorkExecute. For those that have not heard what WHSWorkExecute is, it is the form used for simulating a Warehouse Mobile Device. The form existed in AX 2012, and it also exists in AX 7.

In the AX ‘7’ preview demo environment try the URL:

You then have a quite nice RF device without the navigation options. Simple can often be the best J

Happy DAX’ing

New Microsoft Dynamics AX – A guide for using retail sales prices and discounts

This is a guide I have been looking forward to publish, but due to the NDA restrictions I needed to wait until the new Dynamics AX was made public preview, and today it is J This blogpost is not about AX licenses prices, or implementation costs, and if you were looking for that, you have to google again. It’s about what product sales price and discount options that exists MSDAX – “out-of-the-box”, and it’s not about product sales price tactics and strategies, but how to apply them into AX and most of the presented information here can also apply to earlier releases of Dynamics AX.


Pricing and discounts is a science, and the number of variations and combinations is amazing. When I talk to my customers I like to show the following overview of the most common used pricing strategies available in AX. Here I have tried to put “retail names”, and exemplify what they mean.

The Microsoft documentation on TechNet visualizes quite clearly the relationship between prices, discounts, channels and programs with the following many-to-many relationship diagram;

It basically means that you can combine and mix pricing elements to achieve the strategy you are aiming for. The combination of these gives us the functionality we are looking for, but we have also realized that not all combinations are practical or possible. Remember that much of the pricing possibilities became available with the introduction of Retail, Call- center and in some cases the lean-modules. Some pricing options will therefore not work in combination with each other, and also not across the Omni-channel.

Product prices and RRP (Recommended Retail price)

RRP, or Recommended Retail Price is a very common and known concept. It is very often used on, when the sales channels are more complex, and includes producers, distributors, partners and resellers. Often the ownership structure of the sales channel is fragmented and differentiated. The recommended retail price is therefore often specified based on geography, currency and channel. The RRP if very often just the baseline on which prices are built on, and as the name suggests, just a recommended price. In Dynamics AX either the standard (single currency) sales price on the released product or having a “All/Group” sales trade agreement (multiple currencies, dates, quantity) is sufficient to make this work. One restriction to make this work within AX, is that the product must be released, in order to do this. If a more “Global recommended retail price” is wanted, I suggest reading my blogpost on this subject, where prices are made global, and distributed to all legal entities.

Price/discount matrix’s (Trade agreements)

The price discount matrix has been available for AX users since the beginning, and handles most requirements in a B2B scenario. The setup is quite easy, and involves setting price or discounts on groups, or in relation to specific entities like product or customer accounts.

In the following example we have different sales price on a single item, but it differences per customer price/discount group.

In AX ‘7’, you will just create a trade agreement journal, and create the necessary lines to reflect the different prices.


Discount matrix

Maintaining sales prices on the item-level per customer group, or per specific customer can quickly be a maintenance nightmare. The different combinations quickly end up with so many price points, that oversight is lost. A customer of me had 4000 products, 6 currencies and 12 different account selection options. This would mean that they would maintain 288.000 price points. That was impossible! The option was to use discounts instead, and just maintain recommended retail prices per currency. This resulted in 24.012 price points to maintain. With the use of smart rounding, and generic currency we reduced the number further down to 4012 price points. A discount matrix would look like this, where the combination per item price group and customer price group resulted in a discount.

In AX ‘7’, you will just create a trade agreement journal, just like for prices, and create the necessary lines to reflect the different discounts.

If you want to test a sales price, with all the different combinations, you can use the “Find prices” feature. Here I have a specific customer belonging to the price group “Retailer”, The item belongs to “Apparel”, and the combination of this gives me a net amount of “127,5”.

Generic currency and smart rounding

As seen in the example above, I have specified prices for different account selections, but only in USD. If multiple currencies are used, and you don’t always want to maintain currency based pricelists, then the generic currency option is a nice feature. The first step is to specify what is the generic currency, and what exchange rates that should be used. Also if smart rounding should be applied after currency conversion. In the setup of smart rounding you also need to set up member currencies that belongs to the smart rounding.

Enabling this, will open the “include generic currency” option on the trade agreements, and when creating sales orders in a different currency, the sales order. Here we have a sales order, converted from USD to €, and then the automatic smart rounding is applied.

Trade agreements and Retail/Call center in combination

As shown here we, the trade agreement matrix can solve quite a few price requirements, but in a retail scenario it would not solve the all requirements we see. We are missing elements like retail channel, categories and more advanced features. Going deeper into retail functionality shows that there are many additional possibilities that opens up. I have met quite a few companies, that have advanced price and discount requirements, but they have never thought about enabling the retail module. Many thinks the retail is for POS, but the retail module is for Omni-channel. This means that we can also use this in traditional sales orders (The “call center module” enabled retail functionality to be used in traditional sales.)

But there are some elements in AX, that you should be aware. I often see good old AX consultants getting confused when they start looking at retail discounts. Let’s say we have the following scenario; We have item 0001 with a recommended price of 150 USD.

And then we have a 15% discount on the customer;

You would then expect that when using the retail module, it will just use these values. But it don’t ! It actually calculates the discount amount, and not the percentage. Keep this in mind, because it will confuse you later.

When using the retail discounts, they will work together with the traditional trade agreements, but not exactly as you would expect. To better understand the actual code executing, then take a look at the class\RetailOrderCalculator.saveSalesOrder(). The CRT (Commerce Run Time) engine returns quantity, price and total discount amount. Based on this, the unit discount amount is calculated. I’ll also show the actual source code on this, because when we are talking about discounts, we are most likely going to think in percentages, and the same are customers and users.

And one more thing. The CRT will not apply both the trade agreement discounts and the retail discount. It will select the best of them.

The use of Retail Discounts in Sales orders

Let’s take some scenarios, that is common in the retail industry, and I’ll try to link them to what you find in the standard Contoso demo dataset. In AX ‘7’, the retail module mainly has 4 discount types of discounts, and a price adjustment;

  1. Just an ordinary discount product

Let’s say you just want to have a discount on a single item.

First step is to use the retail discount rule.


Periodic discounts on categories

“50 % off on accessories this week” can be a strong trigger to make the customer open the wallet.

To create such discounts, we can use the same screen.

PS! The Retail discounts have a “discount code” field, but I have never managed to use it in the call-center sale order screen. But in POS, it works J


Happy hour J

Happy hours are an efficient way of attracting and breaking customer’s shopping routine. It’s also fun, and can give retailers a lot of attention. This feature is excellent also for Black Fridays.

The validation period has an advanced setting, that opens up the field “Discount period number”, and select a discount period. I have here created a happy hour between 12 AM and 1 AM for early birds.

We can further specify the valid periods here, so that more period based discounts can be given. Just remember that the valid period is current time +/- the offset time defined on the retail channel. In the AX ‘7’ CTP 7 version, the call-center channel details screen is not showing the time zone, like it does for retail stores, and this could have some implications on using “Happy hour” in an installation that works across time zones. A small service request to Microsoft have been created, and I’m sure they will fix this J

Coupon discounts (Call center)

Coupon discounts seems to be very popular in US, and we also see an increasing use of this in Europa. Especially in relation to mobile coupons.

In Dynamics AX 2012 there are two ways of working with Coupons. One solution for POS, and one solution for Call-Center. And these two don’t work in common. It is a bit sad, because it means we have a GAP in the Omni-Channel offering. But with enough push on Microsoft, I’m certain it will merge in future versions.

Call-Center Coupons, can be defined to be an amount or a percentage, and may have valid period. The coupon can be a unique, and a one-time use, and

It can have item rules attached, that specifies what products the coupon can be used with or excluded from.

So solve Coupons for Retail/POS, you can see that all discounts have the option to apply a “Discount code”. I have not found a way to make this discount code to behave as a unique and on-time code. Even though AX-Sales orders not can use CRT as the price engine, there are no places, where the discount code can be applied to a sales order. It therefore only works on POS/eCommerce scenario’s It is a bit sad, because it means we have a GAP in the Omni-Channel offering.

Dynamics AX for retail have a GAP in relation to coupons to solve “One-Time” coupons, and in future versions I hope to see more features, like Store coupons, Manufacturer coupons, Mobile/Cell codes and promotion codes.

Trade discounts

Trade discounts is a most common way of creating discounts. 3 very common discounts are

  • Employee discounts

    This can be solved by using affiliations in Dynamics AX, and works for both POS and AX sales orders In order to leverage the Affiliation functionality at retail POS, the following must be setup:
    Price group(Retail)

    Affiliations, and link the Affiliation to the Employee price group.

    Discounts, and link to the price group “employee

    Each employee must be a customer, that is linked to the Affiliation, and you mark the customer with the relevant affiliation. When this customer in POS or in AX creates a sales order, the discount will apply.

    Affiliations can also be used for senior, military or any other groups.

  • Discount category

    With discount category I mean that we can have a discount on an entire category of product. Let’s say “Digital SLR camera” sale, as is exemplified in the Contoso demo data. We then don’t have to assign a discount to a specific product, but just refer to the retail category. When adding products from the category the discounts will automatically apply (after running some periodic jobs, and distributing the prices to the channels.)
  • Loyalty discounts

    To use the loyalty features, then a lot needs to be setup. But in relation to prices, it just means that you need to assign a price group to the discount. If we take the example of the “SLR” discount, we can associate it with a price group called “LP-FabGold”, meaning that all loyalty customers in the “Gold” tier will get the discount.

Mix and Match discounts

  • Mix/Match

    A mix and match discount gives customers a discount when they purchase a specific combination of products. In the Contoso demo data, take a look at the “30% off 3” discount. Here a 30% discount is given, if you select 3 of the specified products. Here we use the “Mix and Match discount” form.
  • BOGO

    A BOGO price is basically “get 2 for the price of one”. We also use the “Mix and Match discount” form for this, but we use the “Least expensive” price option, and give a discount of 100%, and specify that 2 units are required for the price to “kick-in”. In this case, the lucky customer gets 2 camera’s for the price of one J

    Other options also exists, like a 50% discount when selecting 2 of an item, or use line Spec and Product category feature in Mix and Match discount

  • Buy 3 pay for 2 promo
    This can be solved just like BOGO, but where the number of products are increased to 3.
  • Free item A if item B
    For this, we can take a look at the “Water Bottle Promo” in the Contoso demo data. We use the Mix and match discount, but use the “line spec” discount type. Then we create a “Mix and match line group, to specify that we need to have at least one item in the selected category/product, for the price to be active.

Quantity discounts

A quantity discount is a discount that is given to customers when they purchase a particular quantity of a product. For example, you can set up a 5 percent discount for the purchase of two products of a particular category or brand.

  • Buy 2 items get 5%, Buy 3 items get 10%, Buy 10 items get 40 %

Threshold discounts

A threshold discount is a discount that is given to customers when the total for a transaction reaches one or more specified amounts. For example, you can create a discount that gives a 5 percent discount for purchases over 100.00 or you can specify a fixed discount amount.

Buy for 100 $ get 5%, Buy for 200 $ get 10%, Buy for 900 $ get 40%

Price adjustments per channel

  • Online gives 5% discount, In Store gives 2% discount
    Channel based discounts are solved by assigning channel specific price groups to a channel, and then assign the different price adjustments to each price group.

Loyalty cards

The loyalty module in Dynamics AX is a large module with a lot to offer.

But there are some small GAPS you should be aware of, and that is to use loyalty points for payment in the call-center sales order. It could be I’m wrong, but I have not been able to efficiently use the Dynamics AX sales order screen efficiently with the loyalty module. A good blog for loyalty is available here.

Smart Rounding

Smart rounding is a feature that have no direct effect on retail pricing.

But it can adjust trade agreements, that indirectly works with retail. Also remember that it is not “automatic smart rounding”, and the smart rounding is applied to a price discount journal. A good blogpost on smart rounding is this one.

Recurrence and discounts

The ability of creating recurring sales is not directly related to Retail/POS. In AX there is a feature called continuity programs where delivery schedules can be setup.

I don’t think this modules works very nicely with POS and eCommerce, and is mainly a tool for call-centers and selling recurring items. More information is available on TechNet.

B2B Discount agreement

Price agreements is not working with retail-POS, and is not very good supported through the CRT. It is mainly used for B2B orders, and features exists both for sales and for purchase.

  • Yearly agreement to buy 1200 pcs, and get them for 450 $ per pcs.
    In this example I have an agreement to buy 1200 units, and I get the price of 460, until 12/1/2016. In this case, it is a product quantity commitment.

    Other types of commitment also exists like

    This makes it possible to create several different types and combinations. It features also contains Ok formletter that is confirming the agreements. Take a look at the following blog for additional information.




Synchronization problems in AX 2012 R3; Try disable track changes.

If you are installing a ISV solution into a Contoso environment, and you suddenly see that you cannot synchronize, and you cannot see why:

Here is a tip that works for me;

Disable the track changes in the specified tables;

Then the synchronization is able to perform. After synchronization you can enable it again.

If you want to switch on/off in SQL, then this is the script for Switching off;


To switch them on again;


Happy Daxing !

How to evaluate Dynamics AX ISV solutions

Dynamics AX 2012 R3 have truly evolved into an enterprise solution, and the functional width solves most requirements that any customer “really need”. But there is always the 80% / 20% rule that applies and there are requirements that is not solved by the standard Dynamics AX. We often see extended domain specific requirements in relation to finance, sales, procurement, logistics and production. To solve this, customers have the option to create customizations or to try to find VAR/ISV solutions that solves this. (VAR= Value Added Reseller. ISV =Independent software vendor) Creating your own large customizations can result in high risks, and the option to buy a “ready to use” ISV solution then becomes interesting.

What I wanted to give to the Dynamics Community is my list of how I evaluate ISV-solutions as a VAR. I basically just use a word document with a set of chapters, and the topics to evaluate here is from a consulting perspective. The idea is to have a formalized way of making evaluations, and also use the ISV/representatives to fill in the information for you.

1. Executive summary
{Yup. There is always someone to report to. }

2. Product Introduction
{Then I write a brief introduction to the product, describing the overall area that it solves.}

3. Background for evaluation
{Here I write why this product was evaluated in the first place.}

4. Vendor/Distributor information – general
{Then I record some general information about the company that offers the solution. Just to be sure that the company behind the solution will exists in the future. The following table can be used}

Company name
Sales manager
Turnover 2014
Results 2014
Number of employees
Number of customers
Number of references

5. Vendor/Distributor information – product

{The ISV-“mothership” may be large, but it is interesting also to check out the team that is organized around the product. I therefore have a secondary evaluation around the team developing and maintaining the ISV solution}

Product manager
Product turnover
Number of customers
Number of developers

100% dedicated

Part time dedicated

Number of consultants

100% dedicated

Part time dedicated

Support resources/routines

6. Pricing

{Describing product pricing, enhancement and also flexibility. Also include a case study with implementation. }

7. Marked/Cost savings potential
{ Describing the current marked potential, also reflect according to existing customer base. I also use a calculation sheet to show investment, potential, margins, number of sales each year, training costs, start up issues etc}

8. Known Competitors
{Describing any known competitors to the ISV solution and what the main advances this product have.}

9. Versions and language
{Describing supported versions and language of Dynamics AX. I also want to record how support is handled as new versions and upgrades go along}

10. Access to software
{Describing how the product is accessible from the ISV and how it is distributed}

11. Technical Installation guide

{Describing the quality of the installation guide, and I also try the installation to check how easy it is}

12. Application setup guide
{Describe the quality of the application guide, and I also try the application to check that it actually work}

13. Scenario testing
{In this chapter, we will test the different functional aspects of the product. The processes that is tested is the most common scenarios that we expect and have experienced in the field. Normally divided into a section per feature.}

14. Solution footprint
{The solution footprint is very important to evaluate, because this tells us how costly upgrades and applying hotfixes will be. We want to see high footprint on SYS elements for Dynamics AX. A way to easily evaluate this, is to count the number of SYS overlaying’s that exists and how many new elements that have been introduced. I therefore use a table like this}

{If there is a high number of SYS objects customized, I know that cumulative updates from Microsoft will be more costly.}

15. Best practice deviations
{To evaluate the coding quality, then evaluating all best practice deviations that can be found. Dynamics AX have building tools for this, and if there is a high amount is BP errors and warnings, it means that the code quality it not where it should be. }

Also get any documentation if the product have a CfMD certification (Certified for Microsoft Dynamics)

16. Support and training
{Describe how the product is supported from the vendor. There will always be questions and issues, so we need to know how this is handled. Often ISV solutions are purchased from VAR’s, and then it is good to know how this financially is handled. Also if there are any training included in the offering.}

17. Internal requirements
{Describe needed competence and needed training needed internally to implement, deliver and use this ISV-solution. }

18. Road map
{Show what plans there are for the product, what their priorities, what are their policies around upgrades, etc}

19. Marketing
{If you are a VAR, that want’s to include a ISV solution offering, it is important to understand how the ISV will support you in promoting the solution. Show what marketing material the ISV have and how you can use it. Do they have marketing insight they in the local market. Also find out how the ISV will support and drive market campaigns, participate in events, demos, etc with people and or marketing funds (money)}

ISV solutions play a big role in unlocking all of the possibilities that Dynamics harnesses. When analyzing your Dynamics ERP investment, it’s imperative that you also analyze your ISVs so that you can make the best decision for your business, both in the short and long-term. These topics will lead you toward making better evaluations while looking for an ISV solution. Feel free to use them, and extend them when needed.

AX7/AX 2012 Retail Omni-channel Hub-and-Spoke Architecture

The simplest definition of “hub and spoke” is that it is a model for integrating the ERP system used at a company’s headquarters with the systems used by its subsidiaries and branch offices. This blogpost discusses approaches on how to benefit from the fast innovation cycle that Dynamics AX have, without starting a new big-bang ERP implementation project.

Implementing any ERP system is a huge investment. It is not uncommon that thousands of hours is required before you can start to see the benefits. The cost of performing a large scale upgrade simply cannot be justified. It is therefore common to see companies implementing Dynamics AX, and then waits a few years before they take the effort to upgrade to newer releases. In my experience I see that it is most common to jump over a major release.

The innovation cycle that we see with Dynamics AX, new ground breaking technology is being released every year. Much of this new innovation is directly related to new possibilities in having true Omni-channels. The Dynamics AX Retail solution became mature in release AX 2012 R3. But there is a lot of companies still using AX 2009, any they have a well working systems for financials, procurement, supply chain and order management. They don’t want to upgrade, but they are still missing the ability to benefit from becoming a true Omni-channel retailer. The challenge is that the competition will be stronger and more mature.

I have met several customers that are implementing AX 2012/AX7 only for the Omni-channel, while keeping their AX 2009/legacy system taking care of the traditional ERP-processes. This approach focuses on limiting the implementation scope to only cover the Omni-Channel Retail vision. The idea is to only use AX 2012 on the retail channels. This means that retail stores, WEB, retail hierarchies, call-center is features that the AX 2012 (green) is covering. Then an integration between the legacy system (AX 2009) and AX 2012 is done using DIXF, that seamlessly connects the systems.

What I like about the Dynamics AX retail, is that what we currently have in AX 2012 is a very stable and is built for supporting a much faster implementation cycle. This means we can faster take advantage of new technologies. The AX for retail support the N-1 approach. This means that we can upgrade the AX 2012 parts to AX7, without making changes to the POS or the e-commerce systems. We can also in a timely fashion roll-out updated version to new channels, without being concerned of disrupting the existing channels.

I can share a personal experience with this approach. A customer came to us that had Dynamics NAV as their legacy system, and wanted to roll-out Dynamics AX POS to several countries. From the time we did the kick-off, and until the first store was up and running it took only 8 hardworking weeks. We used the Hub-and-Spoke approach, and it shows that it is a quick and achievable way to get return-on-investment fast.

So my advice is; Start your Omni-Channel journey today. Don’t wait until you have upgraded your legacy systems, because you can do that later.

Happy DAX’ing friends, and thanks for reading my blogposts!