mfp's two cents

...on Dynamics AX Development!

  • mfp's two cents

    Microsoft Dynamics ERP software now available on the Azure cloud



    Read more here.

  • mfp's two cents

    SysExtension Framework – to the rescue


    There is a coding pattern that has been proliferating the X++ code base for years. It is not an X++ best practices – nor is it object oriented; yet it is used quite heavily (unfortunately). Consider a simple class hierarchy with an abstract base class and 3 derived classes. A typical implementation of a factory would be a static method on the base class, like this: (Please ignore the type of the parameter – it could  be anything, I choose str for simplicity)


    Now; the problems with this approach are many.

    • First of all the base class has references to the sub classes. Why is that a problem? Consider the base class is a framework class – is it a good idea for framework classes to have references to consumer classes of the framework? Of course not – we don’t like that coupling.
    • Secondarily; the 3 subclasses are all referenced by the same method. Any new sub class would require an update to the factory. This turns the method into a congestion point, and it creates a coupling between sub-classes.

    The coupling between the 4 classes spells trouble. If you try to modularize an application written like this, you will quickly realize that the pattern above is bad. You cannot have references from lower-level models (aka. assemblies/modules) to higher-level models. Yet; having a single factory method is valuable and a good practice.

    SysExtension Framework to the rescue.

    Consider you decorate the subclasses with an attribute, like depicted here:


    Then you can rewrite the factory method to this:


    The extension framework returns an instance of the right subclass automatically. It uses the attribute to determine which subclass instance to create. Quite simple – extraordinary powerful!

    Now notice:

    • Truly decoupled! New subclasses can be added without any changes to the base class.
    • Less code is required! In the example here the delta is not significant – but sometimes you have switch statements spanning hundreds of lines.
    • No change in the public API! The contract stays the same – this is an easy and low risk refactoring.

    A few words of caution: There is a small performance impact on cold systems when using the SysExtension framework. In most cases you will not notice it; however – for performance critical paths, you should measure the impact of this change before going for it.

    To learn more about the SysExtension framework see here.

  • mfp's two cents

    An amazing AX day in Moscow


    Navicon’s AX Fair in Moscow was a big success. Around 150 peopled gather to learn about Microsoft Dynamics AX 2012. There were a few keynotes followed by two breakout tracks, hands-on labs to allow everyone to interact with AX 2012. Also every attendee got a free copy of the Russian version of Inside Dynamics AX 2012. The book has been translated by Navicon – the host of the conference.

    The Fair was dressed in traditional Russian style and colors, including a guy playing the mandolin (I think) most of the day.
    WP_20130607_003 The first keynote was by Алёна Геклер from Microsoft Russia – I ‘m sorry to say that I missed some of the details, as both the slide deck and the talk was in Russian.

    I followed next, speaking about developing large scale software, and how a MS-Press book is written.

    The next keynote was by Vadim Korepin – who among other things gave Navicon’s expectations to future AX versions.

    Vadim is also my host for the conference, and he has been the main translator of the Russian version of Inside Dynamics AX 2012. He has done a great job, and I’m sure he will be tired tonight.

    WP_20130607_011 The final keynote was by Oleg Ognev, Director of IT at IZOVOL. He spoke about Izovol’s AX implementation. Izovol is the first live Russian customer running Microsoft Dynamics AX 2012. The talk also covered why AX was chosen over SAP and Oracle - again the talk was in Russian – but my interpretation was that AX is simply much better.

    During lunch there was a book signing session. The excitement around the book truly amazed me – I stopped counting how many hands I’ve shaken and how many dedications I’ve written.

    Being a bit challenged by the language, I selected to attend the few English sessions. I saw Keith Thaulow, EMEA Sales Director, Demand Solutions speaking about the importance of good Forecasts for Sales and Production. The forecasting solution from Demand Solutions can free up cash tied up in Inventory – you can expect to reduce the inventory levels by at least 10%; and whats equally amazing is that the vast majority of companies installing Demand Solutions’ AX Forecasting solution is able to have it fully implemented within the first 6 months. WP_20130607_017

    Tonight I’m having a tradition Russian/Ukrainian dinner with developers from the Russian community.

    Спасибо Москва

  • mfp's two cents

    Navicon AX Fair in Moscow




    I’ve been invited to speak at the Navicon AX Fair in Moscow on June 7th 2013. I’m looking forward to my first visit to Russia – and meeting customers and partners, who are as excited about AX 2012 as I am.

    If you are in the neighborhood and want to join the Fair, make sure to sign-up here.

  • mfp's two cents

    Microsoft’s new domicile in Denmark


    Microsoft will be co-locating the current two offices in Hellerup and Vedbæk (MDCC) to Lyngby. According to plan the new facilities should be ready for operation in 2015.

    The new domicile will be near DTU (Danish Technical University) and the shopping mall, restaurants, cinemas and sports facilities in Lyngby.


    It is the internationally recognized Henning Larsen Architects from Denmark who have designed the new domicile Henning Larsen Architects are known for creating the Copenhagen Opera House.

    Oh yes, I’m looking forward to moving in.

  • mfp's two cents

    A new AX development book: Microsoft Dynamics AX 2012 Services


    7546EN_cov A new development book has been published by Packt.

    If you are developing with Dynamics AX 2012, you’ll need this book. For two reasons. Firstly, as you’ll need to deal with services. Secondly, because it is a great book.

    The book is 200 pages, and it does a great job of explaining how to build and how to consume services.


    I think the book is great for several reasons:

    • It is technical. The level of contents and technical depth is comparable to Inside Dynamics AX 2012.
    • It is unique. The contents is written for this book. You will not find it anywhere else.
    • It is self-contained. Whenever a concept is used, it will be explained – even when it is not directly related to services. So be prepared for excursions to the lands of CIL, WCF, Runbase, AX Security, Visual Studio, UI builders etc.
    • It is actionable. Each chapter shows step-by-step, line-by-line what to do in various scenarios. Urging you to try it out yourselves.
    • It is opinionated. I’m not sure how they managed, but the book somehow captures the atmosphere we had when building AX 2012 – we knew we were on to something special. The book deals out appraisals where due, and explains why AX 2012 is a huge leap forward for services.
    • It is jovial. The tone in the book is welcoming and direct – I think the most used word is “you”. This is quite refreshing for a technical book.


    A big “Thank You!” to the team behind the book for increasing the AX community’s knowledge: Klaas Deforche, Kenny Saelen, Palle Agermark, José Antonio Estevan and Tom Van Dyck.

  • mfp's two cents

    Microsoft Dynamics AX 2012 R2 is here


    If you, like anyone else, want to get your hands on R2 – here are the links for customers and partners.

    R2 is an incredible engineering achievement. Let me mention just one remarkable improvement: We have collapsed all GLS layers into the SYS layer. This means that for the first time you can have one instance supporting local requirements in 41 countries simultaneously. Learn more here. I’m proud to have been part of the team making it happen.

    With any great product launch a lot of material is made available. That is also true for R2 – and yet something stands out. In collaboration with Microsoft Studios a number of short videos have been created. I think they are truly amazing – what do you think? Try out the links below.

    What does it feel like to be in control, highly responsive, agile, connected and dynamic?

    Explore in the lives of a; CIO, CFO, HR Manager, Practice Manager, Retail Manager and a COO of Manufacturing.


    For more information see

  • mfp's two cents

    Dynamics AX 2012 R2 achieves "Compatible with Windows 8" certification.


    clip_image001Microsoft Dynamics AX 2012 R2 has successfully passed compatibility testing and has achieved the “Compatible with Windows 8” certification. 

    The Compatible with Windows 8 certification means that the product has passed Microsoft testing criteria for compatibility with Windows 8. The Microsoft Windows Compatibility and Certification program defines a set of compatibility test cases that must be completed successfully-covering areas of Compatibility & Resiliency, Adhere to Windows Security Best Practices, Support Windows Security Features, Adhere to System Restart Manager Messages and perform a Clean, Reversible Installation. The testing is performed using Microsoft’s automated Application Certification framework and tools.

    Microsoft Dynamics AX 2012 R2 is now listed among the products that have been certified on the Microsoft Windows compatibility center site.

  • mfp's two cents

    TypeScript TechTalk at MDCC


    Recently Technical Fellow Anders Hejlsberg visited MDCC. He presented the latest landmark he has been working on: TypeScript. TypeScript enables compile time checking of JavaScript code – namespaces, OO classes etc. Further it gives you great tooling – such as auto-complete and refactoring. TypeScript is implemented in JavaScript and can be used in any existing JavaScript application – and it can be enabled as gradually, making adoption easier. And it is Open Source. If you are writing JavaScript you will love this.


    For more information on TypeScript visit:

    I’m consistently impressed with Anders Hejlsberg and his team’s accomplishments. On a less serious note, I was quite amused while watching this talk. We got optional parameters and dynamic variables in C# 4.0. Features X++ has had since Day 1. TypeScript also supports optional parameters, and JavaScript is by nature a dynamic language. Some of the value offered by TypeScript relies on Duck-typing (“If it quacks like a duck – it is a duck”). For better or for worse X++ behaves quite identically. Now; if you pay close attention to the video, you will notice about 38:06 into the video, that the dangling semicolon also found its way to JavaScript. Perhaps X++ is really the superset of all languages?  :-)


    FYI - Anders Hejlsberg covered the same material on Channel 9.


  • mfp's two cents

    Technical Conference - Wrapping up


    The Microsoft Dynamics AX Technical Conference 2012 is coming to an end. Over 1100 attendees, 75 break-out sessions and tons of networking have happened in Bellevue.

    RobertBadawyThe venue of this third conference has been perfect, large and roomy, great equipment for presenters, skillful and helpful staff and short queues for meals.  Ok, there has been a few minor glitches, some of the sessions were full, but the venue had room for repeats, which were readily scheduled. The first session I attended today was a repeat of the Development Life Cycle and Model Store Management – a topic close to my heart. Senior Program Manager Robert Badawy walked us through the best practices for the process when using TFS and managing the model store. At the last 2 technical conferences we presented a conceptual overview of the new model store capabilities, this prompted several questions, that were left unanswered until now. Robert’s session answered these questions and even better announced availability of white papers containing all the information. Here are the links to the white papers: Deploying Customizations Across Microsoft Dynamics AX 2012 Environments, Change management and TFS integration for multi developer projects and Developing solutions in a shared AOS environment. Petur Chief Architect Snaeland from ToIncrease commented on the session during the Q&A: “This session has been worth the entire conference.” I couldn’t have put it better – well  done, Robert!

    SverreThuneThe next session I attended was Sverre Thune’s presentation of the Product Configurator. A session full of Norwegian charm, warmth, and humor – and great demos. Sverre showed the fundamentals of the Product Configurator – which is based on the Solver that Peter Villadsen showed yesterday – he showed how attributes and constraints are added, and how the constraints are automatically (and instantly) applied when a product is sold – this results in both a BOM and a Route being created so the product and be produced according to the user’s selections. Sverre showed the additions in R2 in the Product Configurator including how attributes could be hidden based on a condition – to not clutter the configuration experience, and how the Configuration form is now a regular MorphX form and can be customized and personalized as any other form. Sverre received a well deserved applause after showing the API capabilities added. It is now possible to create a class that can get/set attributes when the product has been configured. This is based on the SysExtension framework – one of my favorite application frameworks in AX. The Product Configuration creates an instance of the right class based on the class’s attributes – this allows for truly non-intrusive extensions that can easily customize how a product in configured.

    Have a safe pleasant travel home.

Page 4 of 20 (195 items) «23456»