We are hiring!

As we are continuing on our path to build a multi-billion-dollar business in the cloud we are looking for a Senior Development Engineer to join the Dynamics AX SCM team. Your primary task will be to deliver incremental improvements that make a real difference for thousands of companies running Dynamics AX and attract even more…


Warehouse Location directives – Fixed location usage

Setting up location directives for your warehouse in AX2012 R3 and AX7 requires a lot of attention to detail. The directives are extremely powerful, but also open ended, which can lead to both performance and logistical problems. This article on MSDN gives a good overview, but doesn’t provide any deep dives. This post is intended…


Dynamics AX Virtual Launch Event

The launch of the new Dynamics AX is imminent. Join the Virtual Launch Event on March 9th 2016 by registering here!


InventDim in AX7

Background The way a new inventory dimension is added in AX has not changed significantly for several releases. Even for AX 7 the best guide is still chapter 6 in Inside Dynamics AX 4. In AX 2012 we almost hit a SQL limitation on the maximum number of fields in the DimIdx index (the limit…


What is new in X++ in AX7?

The X++ language has taken a huge leap ahead in AX7. Here is a list of some of the new capabilities: The var keyword Finally and using Type declarations can be 80 characters Private and public members Static members Client/Server keywords Static event subscription Static classes Internal keyword Reals are decimals Readonly keyword Extension methods…


X++ in AX7: Attributes without specifying ”Attribute”

The naming convention in X++ (and C# by the way) is to postfix attribute classes’ name with “Attribute”. When using the attribute to decorate a class, it is a bit verbose to type in “Attribute” as it is apparent from the context, so now in X++ – just like in C# – you can skip…


X++ in AX7: String truncation

Consider this X++ code:  CustGroupId id = “012345678901234567890123456789”; //30 chars long;   CustGroup custgroup;   custGroup.id = id;  custGroup.insert;    select custGroup     where custGroup.id == id;   The CustGroupID EDT is defined with a length of 20 characters. In AX 2012 the assignment in the very first line would truncate the string from 30 to 20 characters. The record would be inserted and selected again. In AX7 the CustGroupID EDT is being compiled as…


X++ in AX7: Garbage Collection

In AX 2012 the runtime can either be the .NET CLR executing IL code, or the AX interpreter executing pcode. From a Garbage Collection point of view these two behaves extremely different. The difference is like night and day.   In AX7 only the .NET CLR Garbage Collector is in play.        …


X++ in AX7: Forms implementing interface

Forms can now implement interfaces.  public class MyForm extends FormRun implements SysPackable{}      This is pretty cool, because: The compiler will validate that the interface is correctly implemented. No longer a need to use reflection, like hasFormMethod(), to determine if it is safe to call the method. No longer a need to downcast to object to invoke the methods. Now cast to…


X++ in AX7: Method signatures

This post is about one of the more subtle changes in AX7. AX7 uses the .NET runtime, aka CLR. This has some implications for method signatures. In the CLR a method’s signature includes casing, parameters and return type. In AX2012 a method’s signature was simply the method’s name – case insensitive. Why is this important?…