mfp's two cents

...on Dynamics AX Development!

January, 2011

  • mfp's two cents

    X++ - A managed language


    Yesterday at Microsoft Dynamics AX Technical Conference 2011 Peter Villadsen, Senior Program Manager gave one of his best performances ever. Anyone who have seen Peter live in the past knows what this statement carries. And it certainly didn't hurt, that Peter had excellent news to share with us.

    Peter is a dear friend of mine, a top professional program manager, and a class entertainer. In his own laid-back, eloquent and well-articulated manner Peter owns the room and the audience's attention. Peter's presentation took place in the Kodiak room - the largest of the rooms we use for breakout sessions at the Microsoft Conference Center. It seats 400 people, and many more were standing along the walls - including me. Peter masters the English language to an extend where it is impossible to tell (and believe) that he is actually a native Dane. Over the course of the years I've had the pleasure of traveling with Peter to Italy, Spain and France - and I can testify that Peter also masters these dialects of the human linguistic. I do not believe it is a coincidence that Peter works in our Language team.

    The session's title were: "Developing in .NET Managed Code and other X++ enhancements". Based on that title no one expected to find such fine jewels in the treasure chest. Peter started by going through some of the "minor" improvements in the X++ language in Microsoft Dynamics AX 2012. These includes:

    1. New AS and IS keywords - with the same semantics as in C#. In X++ they work for class and table types.
    2. Support for Attributes - just like in C#.
    3. Table inheritance.
    4. Tightening up of various language constructs. X++ no longer allows return type covariance, return type contravariance, parameter covariance, parameter contravariance, and visibility contravariance. This fully aligns X++ with C#. To explain this in less language-savvy terms, it means an overriding method must have the same return type and parameters as the method it is overriding. Further; it cannot reduce the visibility, e.g. it cannot make a public method private.
    5. The dangling semi-colon is not required anymore. The spontaneous applause was much appreciated.

    As if the above in itself was not enough to warrant a new release - Peter moved on to the real topic: X++ as a managed languages.

    The BC.NET component has been re-engineered. In Microsoft Dynamics AX 2009 it is basically a face-less client that allows the managed world to call into the AX stack. The X++ code in AX 2009 can call out into the managed world using interop. Notice that when you call out into managed code, you cannot call back into the same AX session. I.e. no round-tripping. In Microsoft Dynamics AX 2012 this is changed. The new BC.NET component is a now thin conversion layer that can attach itself (in-process) to the AX client(s), the AOS and regular managed code. It will ensure all marshaling and type conversions happen seamlessly between the two realms. Peter demonstrated this by having a X++ class pass itself to a C# class, and let the C# class change the state of the object, by invoking a method on the X++ class. It just worked exactly like you would expect.

    But wait - there is even more. In Microsoft Dynamics AX 2012 we are compiling X++ code to the CLR. At compile time we generate an XML representation of the pcode, which we can convert into IL. At run-time we will be executing the IL for batch jobs, service calls and RunAs constructs. (RunAs is a new method allowing you to request the X++ logic to be executed as IL.). Peter demonstrated how the performance characteristics are vastly different particular in situations with extremely many objects or extremely many methods calls. Even in less-extreme situations running X++ as IL is beneficial as for example it reduces the time database locks are held, and thus improves performance and scalability.

    Peter started the session by quoting Bob Dylan's The Times They Are A-changin' - I believe everyone in the audience agreed.

  • mfp's two cents

    Getting to Microsoft Dynamcis AX 2012


    Wrapping up Microsoft Dynamics AX Technical Conference 2011 Deepak Kumar, Senior Program Manager, presented the data upgrade framework in Microsoft Dynamics AX 2012.

    Data upgrade is an intrinsic difficult subject to demonstrate in a breakout session. “Seeing is believing”, and Deepak had invested the time in preparing no less than six AX instances each at a different stage in the data upgrade process. With this setup Deepak was able to demonstrate all the improvements at various points in the data upgrade process. I’ve had the pleasure of presenting with Deepak a few times in the past. I know how much attention he pays to detail, and how much time he spends preparing just his slideshow. With this setup I will not even guess how much time Deepak has invested in helping us understand the data upgrade process in AX 2012. As one of the 400+ attendance in the audience, I felt I got spoiled. Thank you Deepak!

    “Fear – Challenged – Rewarded – Joy” is the emotional evolution you go through during the data upgrade process.

    Fear is the naturally emotion that kicks in when you are facing a big unknown change. To reduce the fear an Upgrade Readiness tool will be available. You install this tool on your live AX 4 / 2009 system. The tool offers a lot of benefits. First, it enables you to verify that the data in your live system can be upgrade. For example, if an optional column is being converted to an mandatory column, and your current production data has <blank> contents in the field – then the data upgrade is bound to fail. In the past you discovered issue like this much later in the process – you could call it trial-n-error. This pre-verification allows you to fix your data on your live production system before starting the actual upgrade.

    Challenged replaces fear, as you now know you are in good hands. The Upgrade Readiness tool will secondarily enable you to enter data that is required to run AX 2012. In the past you would be entering this type data after the actual data upgrade but still during the downtime. Now you can enter the data up-front while the system is live. It is a quite comprehensive amount of data you need to provide, covering global address book, site, financial dimensions, organizational model etc. Next the live Preprocessing allows you to process live data to a staging area. It will be doing data transformations in the process, and the idea is to lower the complexity (and thus execution time) for the upgrade scripts that needs to run during the downtime. This process is of course delta-based, so any updates happening in the live system can be reapplied to the staging area. You can even control how much of your live system’s resources should be used for this, e.g. you may only want to use 0% during peak hours, 20% during night time, and 40% in the weekends.

    On the AX 2012 installation you can connect to the live production system. The upgrade process now prioritize the actual upgrade scripts and data copy tasks based on the data composition of the production data you have. You can of course tweak the prioritization of the upgrade scripts and data copy tasks to further tune your data upgrade. At this point you have completed about 80% of the data upgrade process, and now is the time to take the system offline to do the actual data copy/transformation. Reward is in sight.

    True joy is when the upgrade is completed, and you uninstall the upgrade model. The upgrade model contains all the DEL_ tables/fields/indexes, and as you don’t need them anymore – you might as well remove them completely from your system. This way your developer experience on the system gets much improved. Take a look here:

    Let me wrap up my coverage of the Microsoft Dynamics AX Technical Conference 2011 with a quote I heard yesterday: “AX is like Hotel California – once you get there, you can never leave!”

  • mfp's two cents

    Adapting to installation specific IDs


    The Dynamics AX Technical Conference 2011 is just a few weeks away. This conference is the first public disclosure of details of the next release of Dynamics AX 2011. I'm looking very much forward to sharing our excitement of the new release with you.

    Working with the latest technology and coordinating the most innovative Dynamics AX release ever, while maintaining a living blog; are not necessarily compatible. You may have noticed the lack of frequent updates on my blog. It is not because I have nothing to report - it is simply because we are saving the fireworks for the Technical Conference.

    At the conference I will be hosting (among other sessions) a chalk and talk session about how we solved the Element ID problem.

    Session code: CT005

    Session title: Adapting to installation specific IDs

    Session abstract: Element IDs (such as table and class IDs) have been a problem since the introduction of AX because they are limited to small ranges and often in conflict between solutions. That has changed in the new version, however. Come and learn the history behind element IDs, how they work in in latest release and how that may impact your code.

    I hope to see you in Redmond.

  • mfp's two cents

    CombineXPOs has been updated


    It was brought to my attention that the published version of CombineXPOs did not support unicode. Given it was posted >4 years ago it was time for an update - so I did. For more information see this post: Building a layer file from XPO files.

  • mfp's two cents

    The generational shift in ERP

    The Dynamics AX Technical Conference 2011 started this morning with a key-note session hosted by Hal Howard, Microsoft Corporate Vice President. In his key-note Hal reveal the official name of the next version of AX: Microsoft Dynamics AX 2012.

    The overall theme in the key-note was "The general shift in ERP". Crispin Read, General Manager, joined Hal on stage explaining how we are doing things differently in Microsoft Dynamics AX 2012.

    The key-note was action packed with over 45 minutes of product demos. Hal invited several team members on stage to demonstrate new capabilities in Dynamics AX 2012.

    The very first demo was conducted by Lachlan Cash, Senior Product Manager (and the driving force behind this Conference). Lachlan demonstrated the model driven development in Microsoft Visual Studio and MorphX. He showed how changes in one environment immediately are available in the other - because they are both driven from the same SQL based repository. He continued by showing how the new concept of Models allows having business logic from multiple source in the same layer - or simply modularizing your code, as the tool sets natively support models directly in the IDEs.

    The next presenter on stage was Kyle Young, Principal Program Manager Lead. Kyle showed some of the many new application abstractions available in Dynamics AX 2012. Using the Enterprise Portal, where forms are driven from the same form definition as in the rich client, he showed the powerful application features built on top of Organizational Models, Workflow, Date Effectiveness, Categorization, Dimensions, Policies and Work On Behalf. 

    Tom Patton, Senior Program Manager, showed the new User Experience in the Microsoft Dynamics AX 2012 client, and how it seamlessly integrates with Microsoft Office Excel, allowing you to query data from AX, and join it with arbitrary other data sources, pivot, edit and format the data in Excel, before posting it back into AX, and finally using SQL Server Reporting Services to generate an interactive (and very appealing) report of the data from within AX.

    The demos were followed by an ISV Panel consisting of Bob Hadingham, Platform Director LexisNexis, Jeff Green, CTO Tyler and Cornelius Bosch, CEO ToIncrease. They each in turn explained what Dynamics AX 2012 means for their businesses.

    Let me wrap up this post by quoting one of my favorite performing artists: "It's the end of the world as we know it - and I feel fine", Michael Stipe - R.E.M.

  • mfp's two cents

    Its today!


    My flight was full of familiar faces. Homeland Security in Seatac learned that Microsoft is hosting a Dynamics AX Conference. So did the receptionists at my hotel. Almost everyone at the breakfast buffet was wearing a Dynamics AX logo. The weather is warm. You can smell the pine wood surrounding the area and you can feel the anticipation building up. Today is  the day! In just 3 hours the registration for the Dynamics AX 2011 Technical Conference 2011 will open. Welcome to Redmond and Microsoft Campus - my home away from home.


  • mfp's two cents

    Session list for Technical Conference 2011 is available


    The first major AX event this year is not even a week away. I encourage you to plan your conference - there is so much too see, and so much you don't want to miss.

    The session list has recently been published here:


Page 1 of 1 (7 items)