Friday, August 21, 2015

OpenXML teaser

If you want to be able to create an Excel document from a batch job or on a machine where Excel is not installed, you can use the Open XML standard to create the file without ever opening the Excel application.

You would of course need some X++ wrappers, but I have learned today that these are actually already created for some Russian localizations.

Check this out:
static void OpenXML_Excel_Demo(Args _args)
    Counter                 c;
    XMLExcelDocument_RU     excelDocument;
    str                     templateFilename = @'F:\SomeTemplate.xlsx';
    str                     newFilename = @'F:\OpenXML_Excel_Demo.xlsx'; 

    // Create a new document
    // This implementation works with template files, so I have just created an empty spreadsheet to act
    // as template
    excelDocument = XMLExcelDocument_RU::newFromFile(templateFilename, newFilename);
    // Create some column headers
    for (c = 1; c != 10; c++)
            ComExcelDocument_RU::numToNameCell(c, 1), 
            strFmt("Column %1", c));

    // Close and save the document

Use the cross reference tool to see more usage of this in AX.

Wednesday, August 19, 2015

The important ViewUserLicense and MaintainUserlicense properties of menu items

These often overlooked properties are key to how Microsoft will determine the number and nature of required AX licenses during a license audit.

You need to map menu items to correct CAL type by specifying a value for ViewUserLicense and MaintainUserLicense. If nothing is provided for these properties of a menu item, the menu item will be categorized with the highest available CAL type, which is Enterprise CAL ($$$).

To determine the appropriate CAL's, you can refer to "Microsoft Dynamics AX 2012 R3 Licensing Guide" and follow the guidelines in that document.

In the "Inside Dynamics AX 2012 R3" book, you can find text instructing you to not fill these properties. That is wrong. Microsoft has confirmed with us (EG) that this is wrong, and the team behind the book is aware of the error.

Friday, August 14, 2015

One-stop page for Microsoft development tools

I was made aware of this site today, where you can find all the important Microsoft development tools in one place:

Google will get a lot less traffic from me now.

Friday, August 7, 2015

VSO Alternate authentication credentials

When you setup a link between a Life Cycle Services (LCS) project and a Visual Studio Online (VSO) project, you need to specify some "Alternate authentication credentials" to login to VSO from LCS.

On VSO you setup these credentials by going to "My profile \ Security \ Alternate authentication credentials", tick the "Enable alternate authentication credentials" box an enter the alternate user id and password you want to use from LCS.

Wednesday, July 1, 2015

Nominate your organization as a candidate for the Dynamics 'AX7' Go-Live TAP program

The customer implementation must the following intent:

  • Go live between July 2015 - January 2016
  • Complete use of Dynamics Lifecycle Services
  • Pre-approved budget and sponsorship
  • Signed Statement of Work with a Dynamics AX partner

NOTE: Acceptance into the Dynamics AX R&D Feedback Community is required to participate in this program. If you are NOT a member of the Dynamics AX R&D Feedback Community, you will receive follow-up communication as to how to join.

Fill out the survey here to nominate your own organization.

Quick import of new label files

I'm on a project where we have added some new languages to AX, and to have a starting point we need to import new label files for these languages. We need for example to import a new version of the SYS labels for the additional languages.

It turns out however, that for large label files the import is painfully slow. So I tried to figure out a safe way to trick AX to speed up this process.

This is the process I figured out:

  • Make sure that you are alone on the system.
  • Create a copy of the new ALD label file with only a few lines in it.
  • Import this new small label file via the AOT label file import.
  • Restart the AOS and Client (this may not be 100% necessary)
  • Overwrite the new label ALD file in the Server directory with the correct large label file.
  • To trigger that AX imports this new label file to the model store, make a correction to a single label, for example a Comment, from the new label file. Make the correction with the regular label editor from within the Client in AX.
  • Restart the AOS and the Client. 
Now you should see that AX pushes the large label file from the model store to the Server directory and if you export the label file again from the AOT, you should should see the large version being exported.