What's new in the Microsoft Dynamics AX development platform

The Dynamics AX development platform went through a lot of changes in the new version, and I can personally say that I have been expected this changes for some time and Microsoft did not disappoint:

The MorphX development platform no longer exists.

If in the 2012 version the development could be done in both MorphX and in Visual Studio, now Visual Studio is the only development environment.
This is not a problem because it keeps familiar Dynamics AX 2012 concepts, and seamlessly adapts them to the Visual Studio framework and paradigms. It enables standard interoperability with other .NET languages and projects. Also, X++ developers can now take advantage of all the features from Visual Studio 2015 (and future versions).

If you want to check all the new features added in VS 2015 just go to MSDN

The brand-new X++ compiler

Before, X++ was compiled to p-code. Now, the compiler generates CIL for all features. CIL is faster, can efficiently reference classes in managed dynamic-link libraries (DLLs), and can run on a large tool base of .NET utilities.

I will talk more about the new compiler and the changes in the framework in future articles.

Automate build, test, and deploy.

Deploy the Developer topology by using Developer and Build VM. Auto-configure Build VM to discover, build modules from Visual Studio Online (VSO), and run tests. C# and X++ module compilation and references are supported.

Customize with overlayering and extensions.

This is one of my favorite new features. The new version of Dynamics AX has a new customization model. You can customize source code and metadata of model elements that are shipped by Microsoft or third-party Microsoft partners.

This is an interesting topic and will cover it in future articles.

Build new controls and UI elements by using X++ and a modern web framework.

In AX 2012 custom controls relied on external frameworks such as Microsoft ActiveX and Windows Presentation Foundation (WPF). Now, it’s easier to build controls in the current version. The X++ framework can be used for application behavior and business logic, and an HTML/JavaScript-based client allows for modern visualizations. Your controls can be designed to look and behave just like the Dynamics AX out-of-box (OOB) controls.

Evaluate and tune performance by using new tools.

The software development kit (SDK) lets you test and validate all critical business processes for performance in a single-user and, if applicable, multi-user test run. The Data Expansion Toolkit lets you correctly expand all performance tests that must have master data and transactional data correctly expanded. The Trace Parser lets you validate a single-user performance test or a multi-user run. The PerfTimer lets you see whether any query or any specific method call is causing a performance issue. Therefore, you don’t have to take a trace and analyze everything in detail.


The new version of Dynamics AX introduces a public OData service endpoint that enables access to Dynamics AX data in a consistent way across a broad range of clients. OData provides the following benefits:

  • It lets developers interact with data by using RESTful web services.
  • It provides a simple and uniform way to share data in a discoverable fashion.
  • It enables broad integration across products.
  • It enables integration by using the HTTP protocol stack.

To see a list of all the entities that are exposed, open the OData service root URL. The URL for the service root on your system has the following format: [Your Organization Root URL]/data
Your response should look like:

  "@odata.context":"https://[Your Organization Root URL]/data/$metadata","value":[
    },{      "name":"ExciseTaxRegistrationNumbers","kind":"EntitySet","url":"ExciseTaxRegistrationNumbers"
    },{      "name":"SecurityUserRoleOrganizations","kind":"EntitySet","url":"SecurityUserRoleOrganizations"


Also, the business connector is no longer supported. The authoring requirement is provided by the fact that X++ is compiled into managed code. Therefore, interop is easier. The integration scenarios are met by using OData.