mfp's two cents

...on Dynamics AX Development!
  • mfp's two cents

    Dynamics AX EMEA Technical Conference 2011


    See the future of Microsoft Dynamics ERP. Learn more about Microsoft Dynamics AX 2012, the most innovative ERP release to date.

    With Microsoft Dynamics AX 2012 entering the market, Microsoft introduces an innovative and Powerfully Simple ERP solution. At this Microsoft Dynamics AX - Technical Conference Fall Edition, you can jumpstart your product and technology learning in MS Dynamics AX 2012. By attending this three day event, you’ll benefit from new rich functional and technical content as well as best practices delivered by Microsoft leaders and technology experts.

    This is a unique chance to learn, get inspired, and see how Microsoft Dynamics AX 2012 can help you provide innovative solutions for your business.

    Whether you’re a customer or a partner, you will find content and benefit from learning’s to help you develop for and implement Microsoft Dynamics AX 2012.

    Two AX technical conferences two within one year! What a treat! And this time in the beautiful surroundings of southern France. I can hardly wait. The first technical conference this year was in January in Redmond. If you missed it, this is your chance – if you are unsure if it is worthwhile, here are my posts from the January event – trying to capture the atmosphere and depth of the knowledge shared:


    This time I’ll be presenting Models and MorphX improvements, such as the new X++ editor.

    I hope to see you there.

  • mfp's two cents

    AX 2012 Meta Model


    Like previous releases Microsoft Dynamics AX 2012 provides a model driven development platform. It enables us developers to create a business application using predefined types of building blocks (aka. concepts) – each targeted a specific purpose. To be an effective X++ developer you need to know the building blocks and how they relate.

    What is new in the meta model for AX 2012? Quite a lot – here is a short summary:

    • SSRS Report is added, it will replace Reporting Library and Report.
      Create an SSRS Report for any reporting needs.
    • Parts are introduced: Info Part, Form Part, Cue and Cue Group.
      These all provides additional information that can be hosted on a form. An Info Part provides a simple grid, a Form Part can host a form inside a form, a Cue provides visual KPIs.
    • Service and Service Group
      Provides capabilities for exposing X++ classes as .NET services – wsdl style.
    • New security concepts: Role, Duty, Privilege, Security Policy, Code Permission and Process Cycle.
      These are all part of the new role based security framework. Notice the meta model contains Role – allowing the developer to specify predefined roles.
    • Security key is deprecated
    • Visual Studio Project is added
      You can now have VS projects (like C# and VB) in the meta model – yes, they support layer based customization and rapid deployment like all other meta model concepts.
    • …. and much more


    The diagram below shows the most common relationships between concepts. Each arrow should be read as “using”. For example:

    • Menu uses Menu Item. A menu has a collection menu items.
    • Menu Item uses Form. A menu item references a form. This form is launched when the user clicks the menu item.
    • Form uses Table. A form uses a table as a data source.
    • Table uses Extended Data Type. The fields on a table is defined using extended data types.


    I have printed the below diagram, and pinned it to a wall in my office. It serves me as a reference when I navigate the new areas of AX 2012. I hope it can do the same for you.


    Click the image for a larger version

    You might also want to look at the meta model for AX 4

  • mfp's two cents

    Dynamics AX 2012 – The compiler output window


    This is a prominent and frequently used form in the developer workspace – so shouldn’t it be sleek and user friendly?

    Here is an annotated screenshot of the final result (click the image for a large version). What do you think?


    Sometimes the value added by a garage-project becomes so obvious to everyone, that it must be productized. This is an example. This was literally the last developer feature that made it into AX 2012. Working in an environment where last minute changes to scope is possible despite the project’s (huge) size and extensive engineering processes is another thing I love about my job.

  • mfp's two cents

    Development training available for Microsoft Dynamics AX 2012


    The development training has just been made available for AX 2012. Here are the courses:

    • 80303: Development I in Microsoft Dynamics® AX 2012 for Development (ILT and e-Learning)
    • 80304: Development II in Microsoft Dynamics® AX 2012 for Development (ILT and e-Learning)
    • 80312: Development III in Microsoft Dynamics® AX 2012 for Development (ILT)

    The course material is available on PartnerSource.

  • mfp's two cents

    Developing Solutions in a Shared AOS Development Environment


    One often asked question is how to configure a development with multiple developers. The options span from having a silo for each developer where they host AX, AOS, SQL, etc. locally, to a shared setup where each developer only needs an AX client. These options can be combined with the use of a version control system, such as Team Foundation Server or MorphX VCS. Further the capabilities and infrastructure requirements are quite different among the options.

    To describe the options and their capabilities Microsoft has published: Microsoft Dynamics AX 2012 White Paper: Developing Solutions in a Shared AOS Development Environment

    The first paragraph of the white paper is:

    Developing for Microsoft Dynamics ®AX is best done in an environment where each developer has a full Microsoft Dynamics AX installation that runs on a single box. The developer artifacts are synchronized by using one of the supported version control systems in Microsoft Dynamics AX, and solutions are produced by running a build of the sources in the version control system (VCS).(Emphasis mine).

    The rest of the white paper is describing consequences of using other configurations, such as a shared AOS. While there are multiple desirable traits of a shared environment, for example simpler infrastructure and the ability for developers to quickly change project, these benefits come at a cost. I encourage you to make an informed decision when selecting your configuration based on your needs and this whitepaper.

  • mfp's two cents

    Microsoft Dynamics AX 2012 is here!


    Today we announced the public availability of Microsoft Dynamics AX 2012.

    Microsoft Dynamics AX 2012: Powerfully simple

    Microsoft Dynamics AX 2012 empowers people to anticipate and embrace change, enabling businesses to thrive.


    A powerful foundation that is purpose-built for five industries: manufacturing, distribution, retail, services, and public sector, along with comprehensive, core ERP functionality for financial, human resources and operations management. All packaged in a single global solution thus giving customers a rapid time to value.


    Agility through a set of unified natural models that serve as a library of business processes reflecting real-world situations. This enables customers to easily modify their organizations and processes to meet their changing business needs.


    Simplicity through an easy-to-use solution offering access to information that is relevant to the work at hand. The familiar Microsoft Office user interface drives adoption and the enhanced business intelligence (BI) capabilities help customers uncover fresh insights that can lead to faster and more informed decision making.

    For more information see:

  • mfp's two cents

    Microsoft Dynamics AX 2012 Virtual Launch Event


    Attend the virtual launch event to:

    • Hear from Microsoft executives
    • See product demos
    • Listen to customers and partners
    • Watch product tours, based on your business, industry, or role
    • Collaborate with your peers through feeds and community forums
    • Chat with product experts and sales associates

    Make sure to register before the event.

  • mfp's two cents

    Seeing is believing - AX 2012 Creating an ISV Model


    This sneak preview shows how an ISV can create a solution in Microsoft Dynamics AX 2012, including:

    • How to create a new model in AX.
    • Why element IDs are not a concern anymore.
    • Protecting the solution using a licensing scheme.
    • Generating a signed model file for deployment.
    • How to generate licenses for customers.

    This post is also available on Channel 9.

    I've attached the small webApplication I used to demo the capabilites as a Visual Studio 2010 project.


  • mfp's two cents

    Microsoft Dynamics AX 2012 has achieved the “Compatible with Windows 7” designation


    Microsoft Dynamics AX 2012 has successfully passed compatibility testing and has achieved the “Compatible with Windows 7” designation for both 64-bit and 32-bit Windows 7. The Microsoft Windows Logo program defines a set of compatibility test cases covering areas of installation, security and stability. Microsoft Dynamics AX 2012 is now listed among the products that have been certified on the Microsoft Windows 7 compatibility center site.

  • mfp's two cents

    Uptaking installation specific IDs


    In Microsoft Dynamics AX 2012 we have solved the element id problem. The solution is outlined in this post. The solution consists of major changes both having an impact on existing AX 2009 and AX 4 solutions:

    1. Element IDs (like class ID and table ID) are now 32 bit.
    2. Element IDs are installation specific. The same class will have different IDs on different installations.

    When making IDs 32 bit we had to deprecate the TypeId() function. TypeId() took one argument the name of an Base Enum or Extended Data Type. And it returned an integer value, where the upper 16 bits were the ID, and the lower 16 bits denoted if the type was a Base Enum or an Extended Data Type. For example: TypeId(MyEDT) returned 0xC351 000B = (50001 << 16)+11. Naturally such a function wouldn't work with 32 bit IDs. It turned out, that we didn't need a replacement for the TypeId() function, as the name of Base Enums and Extended Data Types are unique across both types. The solution then simply become to update the framework methods that accepted the combined ID from TypeId() with a new name based implementation. And to make it better, it turned out that usage of TypeId() was restricted to very few frameworks. The table below shows a complete list of the usage patterns of TypeId() we found in the SYS layer, and how we updated them. When you are upgrading the compiler will detect all reference to TypeId() for you.

    Dynamics AX 4/2009              Dynamics AX 2012
    // Dialog related
    // When adding fields to a dialog, the types are now identified by Name – not ID.
    dialog.addField(typeid(MyEdt));             dialog.addField(extendedTypeStr(MyEdt)); 
    dialog.addField(typeid(MyEnum));            dialog.addField(enumStr(MyEdt)); 
    dialog.addFieldValue(typeid(MyEdt));        dialog.addFieldValue(extendedTypeStr(MyEdt)); 
    dialog.addFieldValue(typeid(MyEnum));       dialog.addFieldValue(enumStr(MyEdt)); 
    new DialogField(dialog, typeId(MyEdt));     new DialogField(dialog, extendedTypeStr(MyEdt)); 
    new DialogField(dialog, typeId(MyEnum));    new DialogField(dialog, enumStr(MyEnum)); 
    dialog.addField(types::string);             dialog.addField(identifierStr(str)); 
    dialog.addFieldValue(types::string);        dialog.addFieldValue(identifierStr(str)); 
    new DialogField(dialog, types::string);     new DialogField(dialog, identifierStr(str)); 
    // Dict related
    DictField.extendedTypeID() == typeid(MyEdt) DictField.typeID() == extendedTypeNum(MyEdt) 
    DictType.extendedTypeID() == typeid(MyEdt) == extendedTypeNum(MyEdt) 
    // Args related
    args.parmEnumType(typeId(myEnum))           args.parmEnumType(enumNum(myEnum)) 
    //Type related
    typeId2Type(typeId(myEdt))                  typeName2Type(extendedTypeStr(myEdt)) 
    // Other patterns with better alternatives
    // These alternatives can also be used in AX 4 / 2009
    typeId(myEdt) >> 16                         extendedTypeNum(MyEdt) 
    typeId(myEnum) >> 16                        enumNum(MyEnum) 
    typeId2ExtendedTypeId(typeId(myEdt))        extendedTypeNum(MyEdt) 

    As element IDs now are installation specific then we need to provide enough information for data export/import to convert the data correctly between the source and target system. There are 3 things to do:

    1. Do not store IDs in containers,
      If IDs are stored in a non-relational format (like a container), then data export/import cannot identify them, and the IDs will be imported as-is; which means they will resolve incorrectly on the target system. A best practice rule is available to identify IDs in containers.
    2. Use the right Extended Data Types on your fields (TableId, FieldId, ClassId, etc.)
      Data export will convert data using these Extended Data Types into a format that can be correctly resolved on the target system.
    3. For fields containing field IDs
    1. Set the RelatedTable property, OR
    2. Create a new field group with the field referencing the table and the field referencing the field.
  • For data export/import to be able to correctly convert a field ID, it is required that you specify which table the field belongs to. If the field always belongs to the same table, you can use the RelatedTable property to specify it (3.1), OR if the field ID is referencing a field in an arbitrary table, you need to link the table reference and the field reference to each other. You do this by creating a new field group containing the two fields (3.2)


Page 7 of 20 (191 items) «56789»

mfp's two cents

...on Dynamics AX Development!