Friday, December 6, 2013

Book review: Microsoft Dynamics AX 2012 R2 Administration Cookbook

The book covers a lot of ground around the administrative work implementing and maintaining a Microsoft Dynamics AX 2012 R2 installation. Some of the book is written especially for the R2 release, but most of the book also applies to the RTM release, and to some extend AX 2009.

Some things that Microsoft has documented rather cryptically is explained in much more understandable terms. For example, how to create and use claims users. In this way, the book is a good compliment to Microsoft documentation.

It is clear that Simon, the author, has a lot of hands-on experience installing and maintaining AX solutions-. He is good at point out severe pitfalls and to give good hints to things that just makes your admin-life easier when you know about them. The experienced hands-on angle is refreshing in contrast to the Microsoft documentation, which can seem to be a bit theoretically based.

On the downside, I do not think Packt have lived up to their responsibilities as editors of the book. Since the title includes the word “cookbook”, I would expect more crisp recipes. Recipes that not necessarily explain all the background stuff, but just tells me how to get the job done. If this was a real cookbook, it is like that, I am in some of the recipes taken though how an oven works and how potatoes are grown. That is not the fastest path to put dinner at the table. The background information should have been organized differently in my opinion.

The content is good and worth the investment in the book, the editorial work is less good.

Read more about, and buy, the book directly from Packt, Amazon or other major resellers.

Thursday, December 5, 2013

Exporting models from AX 2012 with .Net Runtime version 2.0

I work with some servers where models from the model store are exported with .NET Runtime version 4.0 when using the PowerShell Management Shell:

I cannot be sure to be able to import models with this Runtime version at all customers. Depending on their system they might get an error about the model file having an invalid format. See this article at Dynamics Ax Musings.

TechNet offers a couple of workarounds under Troubleshooting working with model files section. Making changes to our customers servers is however not always an option.

You can change the version number after the export, as described here, but that's an extra step that I'd like to skip.

It seems like by just adding a version parameter to the "Microsoft Dynamics AX 2012 Management Shell" shortcut you can start up PowerShell as another version and you'll now get the expected Runtime version in the exported models. Here's the needed change to the shortcut:

You can the check the version PowerShell runs under, with the Get-Host command:

Thursday, November 28, 2013

Book review: Microsoft Dynamics AX 2012 Reporting Cookbook

Kamalakannan Elangovan has written a comprehensive book about reporting with SSRS in AX 2012. 

The basics are explained in the appendix “Introduction to SSRS” and chapter 1 “Understanding and Creating Simple SSRS Reports”.

Chapter 2 guides you through how you can make more vivid reports, explaining about how you can use multiple data regions in a report and how you can add charts, images, filters, documents maps and drill up/down to a report. It also explains about reports templates, the use of expressions and aggregation in reports.

The programming model is examined in chapter 3 and 4, covering a lot ground about working with report controllers, modifying the report user dialog, adding business logic and not the least how to debug and write unit tests for the business logic. Chapter 4 is entirely dedicated to explain how to use the Report Data Provider as data source for reports.

Chapter 5 explains how to mix and use other data sources for your report, like XML feeds, external data sources and it shows you how to write OLAP reports and how to use the SQL Report Builder.

In chapter 6 the reports get more vivid with descriptions of matrix reports, chart reports, and how to put use gauges in a report.

In chapter 7 upgrading and analyzing reports from earlier versions, and you get recipies for moving different kinds of constructs from the legacy reporting to SSRS, including how to add inventory- and financial dimensions to a report. This is very useful.

Chapter 8 is the chapter for everything else. It holds sections about troubleshooting, print management, e-mail, and a few other others things that cannot fill an entire chapter.

I am very happy to see that this book is not all a about the happy path where everything just works. It means a lot to me to see troubleshooting, debugging, upgrade issues and unit testing be a part of the book.

This book is extremely useful for AX developers writing SSRS reports, whether they are beginners or more experienced developers. If you are just buying one book about reports with AX the year, this must be it. Otherwise, I suggest you buy the other released book too, “Developing SSRS Reports for Dynamics AX”. They complement each other very good. 

You can buy the book directly from Packt Publishing here:

And you can of course buy the book from Amazon, Barnes & Noble etc. too.

Tuesday, November 26, 2013

Thursday, November 14, 2013

Odd synchronization issues in AX 2012

I have an AX 2012 R2 developer box, where I several times have installed and uninstalled a couple of different models.

Until now I have not spent much time on synchronization issues, but today I needed to solve them all for the work ahead.

And it turned out that I had a lot of issues to deal with, like the dreaded error:
"Illegal data conversion from original field xxx.yyy to xxx.zzz: unable to convert data types to anything but character field type (0 to 4)"

The odd thing that nearly drove me crazy, was that I got errors on tables that no longer exist. The synchronization form simply showed tables names that are not in the AOT, not in the ModelStore database and not in the SQLDictionary table.

As it turns out synchronization issues accumulate in the SqlSyncInfo kernel table, until fixed by the synchronization engine and they are never reconsidered. If you have old errors that were not fixed, they remain in this table even if you delete the offending table from the AOT.

So deleting the records, in SqlSyncInfo, for these obsolete tables that I no longer have in my application, fixed my issue and I could get to work on the real synchronization issues.

Remember always to take great care when messing with these system tables. One backup too many is much better than one too little.  

Friday, November 8, 2013

Translate text with Microsoft Translator from AX

I recently had a task involving the translation of a few thousand labels. To speed up the translation I figured that I would get a head start if I could somehow automate parts of the process. I found bits and pieces with which I could use the Bing or Microsoft Translator API for the task, and here is how to implement these in AX.

First of all, you need to sign up for the service. You do that from the data market on Windows Azure. You can translate up to 2000000 characters a month for free. Here is a link to sign up for the service:

The bits and pieces I could find for calling the service is .NET code, so I have implemented this part as a C# Project.

Here's the code for that part: You need to add the Global class to the project, to get a proxy for it. It is used by the C# code.

With the C# Project in place, you can now do translation using this simple code:
// Sign up:
// Translator language codes:
static void EGTranslateSample(Args _args)
    EGBingTranslation.Translator    translator;
    System.String                   clientId        = "YourClientId";
    System.String                   clientSecret    = "XYZ123";
    str                             translatedTxt;

        translator = new EGBingTranslation.Translator();

        // Create an access token
        translator.CreateToken(clientId, clientSecret);

        // Translate
        translatedTxt = translator.Translate("HvedeĂžl smager godt", "da", "en");

    catch (Exception::CLRError)
    info (translatedTxt);

You get your Client Id and Client Secret when you sign up for the service on Azure.

Please note that the Microsoft translation cannot stand alone, unless you think you users are in need of some cheap laughs. You have to have a human to review the translations.

It seems that when you translate between two languages of which neither is English, that the translation is done using English as a "middleman". So for example a Danish to German translation is done first from Danish to English and then from English to German. In that process a lot of context can be lost and the result will not always be correct.

Sharing my AX RSS feeds

Murray Fife recently shared a list of all his AX RSS feeds. I thought I would do the same.

So here you can find an OPML file with all my current feeds:

Happy RSS'ing.

Wednesday, October 30, 2013

Sunday, October 27, 2013

Developing SSRS Reports for Dynamics AX - Review

This short book is a great book if you don't have much experience with SSRS report development for Dynamics AX and just need to get started.

The book explains how to develop reports with auto design and precision design. On a little more advanced level it also explains how to create drill through reports, matrix and chart reports. All of these areas are explained through straightforward steps to follow.

Report deployment and maintenance is also covered.

A particular nice chapter covers the UI for reports and the related data contacts. If you have trouble understanding the Model-view-controller (MVC) pattern used in AX 2012, I can really recommend this chapter.

For reference the book has a good appendix with list of common functions, and do's and don't lists for AX report development.

Tuesday, October 15, 2013

Two new books out about SSRS and AX

Packt Publishing have released to new books about SSRS with AX:


  • Build reports using AOT queries, report data provider classes, or an external data source
  • Learn how to deploy reports and manage SSRS reports in AOT, as well as customize standard reports
  • Discover best practices for Dynamics AX 2012 reporting and learn common SSRS expressions, classes, and methods

  • Practical recipes for creating and managing reports
  • Illustrated step-by-step examples that can be adopted in real time
  • Complete explanations of the report model and program model for reports
  • Examples of all types of report formats including chart, matrix, tabular in precision, and auto design
  • Ready-to-use fixes and tips for real-time reporting challenges

Stay tuned for reviews of both...

Monday, October 14, 2013

Simple PowerShell deployment script for AOD based AX versions (i.e. earlier than AX 2012)

This is just a simple script to ease the manual steps you'd otherwise go through to move an application from DEV to TEST.

$servicenameDEV = "AOS`$01"
$servicenameTEST = "AOS`$02"

Stop-Service $servicenameDEV
Stop-Service $servicenameTEST

$sourcepath = "\\server\applicationfolder\Application\TEST\Appl\AXTEST\" 
$sourceaodpath = $sourcepath + "*.aod"
$sourcelabelpath = $sourcepath + "axvar*.*"
$targetpath = "\\server\applicationfolder\Application Backup\TEST"

echo "Backup AOD files"
Copy-Item $sourceaodpath -Destination $targetpath -Verbose

echo "Backup Labels"
Copy-Item $sourcelabelpath -Destination $targetpath -Verbose

$sourcepath = "\\server\applicationfolder\Application\DEV\Appl\AXDEV\" 
$sourceaodpath = $sourcepath + "*.aod"
$sourcelabelpath = $sourcepath + "axvar*.*"
$targetpath = "\\egdev\HEALTH\AX40TEST\Application\TEST\Appl\AXTEST"

echo "Copy AOD files from DEV"
Copy-Item $sourceaodpath -Destination $targetpath -Verbose

echo "Copy label files from DEV"
Copy-Item $sourcelabelpath -Destination $targetpath -Verbose

Start-Service $servicenameDEV
Start-Service $servicenameTEST

echo ""
echo "Synchronize AX"
& "C:\Program Files (x86)\Microsoft Dynamics AX\40\Client\Bin\ax32.exe" \\server\AXCONFIGS\AX_40_TEST_VAR.axc -startupcmd=Synchronize

Friday, October 11, 2013

Easy reusable method to load postal codes (zipcodes) or how to save a spreadsheet as XML

Something that needs to be done for all AX implementations, and that no one really wants to spend time on, is to load default postal codes.

For a limited set of countries AX comes with job able to import postal codes from a file. These countries are Belgium, Netherlands, Sweden and USA. I have never seen any information about where you obtain the correctly formatted file though.

I have been experimenting with a solution where the postal codes are just loaded with no user interaction at all. This is supposed to happen during the Partition initialization, in the "Create reference data" process:

During "Create reference data", AX is already population address data, like a total list of countries.

There are four major steps to get this far:
  1. Obtain a valid file with the postal code.
  2. If the file is not in XML format, you should convert it for easier import. 
  3. Develop the import code.
  4. Hook the code up to the Partition initialization process.
So, I have obtained a comma separated spreadsheet file from the danish postal service. It looks something like this:

Postnr = Zip code
Bynavn = City
Gade = Street

First I remove unwanted rows and columns from the sheet:

Now convert the columns to a Table; select the columns and choose Insert / Table from the ribbon:

And the result:

The file can be converted to XML from Excel, but first you must enable the Developer tab:

If it is  not enabled, you can enable it from File \ Options \ Customize Ribbon:

You'll now need to write a proper schema for the XML. For my purpose it looks like this:

In Excel go to the Developer tab and click on XML \ Source: 

Click XML Maps \ Add to load the schema you just defined:

Choose the proper root from the schema and click OK twice:

Now the XML Source pane should look like this:

Select the relevant rows, right-clik on ZipCodeTable and choose "Map element":

Click OK:

Now you can save the spreadsheet as XML from File \ Save As and choose XML as the file type. The result will look something like this:

This file is loaded into Dynamics AX as a Resource. Go to the Resources node in the AOT, right-click, choose "Create from File" and select your XML file.

Next create a class to import from the resource node. There are two central methods you should have.

One method retrieves the XML from the resource node: 

One method to loop through the XML:

And you'll of course need a method to actually process the postal code, inserting data into the right tables. That is the processZipCode method called above. You'll have to figure out what to put in that by yourself.

If you'll want to use this in Denmark, you'll have to modify the spreadsheet and code a bit to account for the cases where a postal code belongs to a certain side of a street or just for a limited set of house numbers on a street.

To have the postal codes generated automatically when new Partitions are created, you must write a new class implementing the SysSetup interface. Your new class will then be picked up by the framework.

A final learning I got from this, is that in Denmark, or actually Greenland, the postal code for Santa Claus is 2412 (of course).

Friday, September 20, 2013

Moving labels from AX 2012 R2 to RTM via XPO's

If you make an xpo export from AX 2012 R2 with labels, you'll get an error if you select "Show details" during import on AX 2012 RTM.

For this to work, you need to go through the xpo file and remove lines refering to "Partition":

<table:field name="Partition">5637144576</table:field>


Tuesday, September 17, 2013

Extending Microsoft Dynamics AX 2012 Cookbook Review

Extending Microsoft Dynamics AX 2012 Cookbook is a great collection of recipes allowing you get more value from Dynamics AX with already available tools. The easy to follow recipes can save you a lot of time figuring out how to setup and use these tools.

The recipes are based on real business scenarios and rather than just explaining how a single tool works, you get to know how sets of tools can be applied together to address these scenarios. The business scenarios makes it very clear to me that the author has many years of field experience, which just makes it more interesting.

You can buy the book directly from Packt Publishing and Amazon.

Wednesday, August 21, 2013

Bug in Data Import Export Framework (DIEF) when adding entity for InventParameters

When using the wizard to generate an entity for InventParameters, the generation fails with the name DEL_InventSumDateFinancialDimensionFocus_RU being too long (more than 40 characters).
The bug seems to come from the \Classes\DMFGenerateEntityTable\modifyFields method. Code from line 142:
                                treeNodeToDelete = treeNode;
                                treeNode.AOTRename(#Del + fieldName);
                                treeNodeToDelete = treeNode;

The treeNode.AOTRename method is called without checking the length for #Del + fieldName.

Friday, June 14, 2013

The enum that is specified in the input XML file does not exist in Microsoft Dynamics AX

This is an error you might experience while trying to generate proxies for EP. This can be caused by having a table field setup with an enum that does not exist.

System enums, i.e. enums not in AOT / Data Dictionary / Enums, seems to be falling in the category if enums that "doesn't exists".

You can read a bit more about the issue here.

The error message it self doesn't reveal much information, so the fastest way to find the culprit seems to be to run a Best Practice Check for all your tables. The Best Practice Check will report the issue.

Monday, May 6, 2013

Book review: Implementing Microsoft Dynamics AX 2012 with Sure Step

Implementing Microsoft Dynamics AX 2012 with Sure Step is more about actual implementation of Microsoft Dynamics AX 2012 than the Sure Step methodology itself. You will not learn everything about the methodology by reading the book, but you will get some idea about how you use Sure Step in connection with a Microsoft Dynamics AX 2012 implementation.

The book covers every major Sure Step phase, from Diagnostics to Operation. Between the parts about Diagnostics and Operation, the book becomes very Microsoft Dynamics AX specific and it gets very detailed about technical areas about the product. There is a tendency to move in an out between AX technical stuff and the Sure Step model, and it is a bit difficult for the reader to hold the connection between the Microsoft Dynamics AX 2012 specific information and related Sure Step activities.

The AX infrastructure is explained in detail, maybe too detailed for a methodology book. Quite a few recommendations here, and in several other places, comes as unsubstantiated claims. I would really have liked to get some more background information to support the claims.
Moreover, I think the book would benefit from having a clearer link between the methodology and the related AX parts and tasks.

However, that said. The authors clearly have a long hands-on experience of doing implementations with Microsoft Dynamics AX. No matter if, you have the same length of experience or you are new to Microsoft Dynamics AX and/or Sure Step and no matter if you are in a technical, functional or project role, you should be able to pick up some useful learnings from the book.

You can read more about the book here.

Tuesday, April 23, 2013

Friday, April 19, 2013

New book: Implementing Microsoft Dynamics AX 2012 with Sure Step 2012

Packt Publishing has released a new book about implementation of Microsoft Dynamics AX 2012 with Sure Step 2012

Here is their overview of the book:
  • Get the confidence to implement AX 2012 projects effectively using the Sure Step 2012 Methodology
  • Packed with practical real-world examples as well as helpful diagrams and images that make learning easier for you
  • Dive deep into AX 2012 to learn key technical concepts to implement and manage a project
I'll be posting a review as soon as possible.

Check out the book here.

Thursday, April 18, 2013

Book review: Dynamics AX Performance Optimization Guide

When dealing with performance issues you have to understand in depth how all the components in a solution work by themselves and in collaboration with the specific other components of the solution. You also need to master several different toolboxes to measure performance of the various components. Few people master all these components and tools in depth.

This book is a collection of information you need to be able to prevent and to troubleshoot and fix performance issues with a Microsoft Dynamics AX 2009 and 2012 solution and the components that make up the total solution. The authors have described each topic in an easy and understandable style. You can read it with the purpose of learning more about performance with Microsoft Dynamics AX solutions and you can use it later on as a reference guide.

Experienced, or somewhat experienced, Microsoft Dynamics AX technical consultants are the main audience of the book.

The very first part of the book explains a bit about the architecture of a Microsoft Dynamics AX solution and there is a detailed description about how concurrency control works with Microsoft Dynamics AX.

Second chapter deals with how you monitor the solution. Database monitoring and various performance counters are described in this chapter. As all performance problems starts with some code being executed, there is a large section about tools to monitor and trace the code. This includes Microsoft Dynamics AX Trace Parser, Windows Event Tracing, WCF Service Trace Viewer Tool, Microsoft Visual Studio Profiling Tools, WebServer Performance Tester, Web Performance Test for Enterprise Portal, Performance Analyzer for Microsoft Dynamics AX and Process Monitor.

In the third chapter, there are explanations of things that need consideration for setup and configuration of the solution. This covers I/O configuration, backup strategies, SQL Server configuration, network configuration and Microsoft Dynamics AX configuration.

Fourth chapter deals with several common Microsoft Dynamics AX performance problems. And what you can do to fix these problems.

The fifth chapter is almost entirely dedicated to how you can optimize what SQL statements
Microsoft Dynamics AX sends to SQL Server. The chapter also covers a number of important SQL Server flags.

Chapter six is about the many optimization possibilities you have with SQL Server 2008 and 2012. The optimizations that specifically relates to Microsoft Dynamics AX performance and manageability are discussed here.

Database index management, fragmentation, statistics and locking behavior is covered in chapter seven. Here you can read about how to detect and reduce fragmentation, how to update statistics and how to control the locking behavior.

In the eighth chapter, you can read about how to plan and size the infrastructure for a solution to support the expected load on the system. Even though there is no silver bullet or a magic spreadsheet, as someone from Microsoft put it on the last Technical Conference for Microsoft Dynamics AX, there is a good take on a guide for calculating the expected workload. And how to do your sizing against that calculation. Also in this chapter you will find information helping you with eventual virtualization, Hyper-V, considerations.  

The book covers a lot of ground and it cannot stand alone as a single educational tool for all the described tools and components. You can for example find information much more detailed other places about Microsoft AX development for performance. However, that would make the book ten times thicker. With the books focus on the, for Microsoft Dynamics AX solutions, important things, the book works. I could make the bold statement that you could consider the book to be a kind of a Maggi cube for the information you need about all the different components that make up the Microsoft Dynamics AX performance experience.

I will definitely recommend the book. The investment in the book will quickly pay off if you are a
technical consultant working with performance issues in relation to Microsoft Dynamics AX.   

Martin Zhen and Daniel Liao are the authors of the book. I believe both to be employed at the Chinese offshore development center OutsourceAX. Regrettably, they have been too modest to include bios of themselves in the book. It would have been interesting to learn more about these guys.

Friday, April 12, 2013

New blog address

This blog will from now on be redirected to

Google seems to be redirecting everything OK, except existing RSS settings. So you might want to update your RSS subscription to the new address.

New book: Dynamics AX Performance Optimization Guide

A new book about Dynamics AX performance optimization is out. It is called "Dynamics AX Performance Optimization Guide: Fixing Troubles with Microsoft Dynamics AX and SQL Server" and it is available from Amazon.

I'll soon post a reveiew of the book.

Tuesday, April 2, 2013

Setup the March 2013 demo machine for VirtualBox

On the new demo image for AX 2012, the image running on Windows Server 2012, I couldn't get EP and Role Centers to work. Not even using the usual trick where the hosts file is modified.

I'm definitely not a networking guy, but by reading the documentation for Hyper-V that comes with the image, I actually figured out how to change settings correctly for the image.

First you need two network cards for the machine. One for running its own private network, and one to give it Internet access through your physical machine.

These are the settings for the first card:

Notice the network name: AX2012.

And these are the settings for the second card:

After starting the image, you need to do some configuration of the network card running the internal network. To figure out precisely what card that is, open a command prompt and enter ipconfig to check IP addresses of the cards. It should be the card having an IP address starting with 169.

From the Control Panel you must now open Network and Sharing Center and click Change adapter settings. On the card running the internal network, right-click and choose Properties.
Select Internet Protocol Version 4 (TCP/IPv4):

Now click Properties and enter the following information:

Click Advanced to open this dialog:

And here you need to enter all these IP addresses, with subnet mask
When you save the new network settings, it might warn about the same settings being applied to another network card. That would be that card setup for Hyper-V, and you wont have a conflict with that. You can safely let it remove these settings from the other card however.

Save everything and reboot.

It takes quites a while for both AX and the portal to come alive, so be patient.

For the two other machines that are involved in the full demo setup, you probably need to do the same. The IP addresses to add are different though. You can see the numbers in the Hyper-V documentation that comes with the image.

Any comments to guide me and the rest of the community to an eventual better process are welcome. It is very limited what kinds of questions I'll be able to answer.

Tuesday, March 5, 2013

Free training for Life

Firebrand Training is running a competition where you can win a life time of training.

I never win anything, but it's worth a try: Free training for Life

Thursday, February 21, 2013

Choose payments means in the danish OIOUBL invoice

When building the OIOUBL invoice you can choose which form of payment should apply. You can choose between bank transfer, FIK 71 and Giro.

How payment information is added to the OIOUBL file is determined from the AX OIOUBL stylesheet.

The stylesheet assumes that you to have used the following payment method codes in AX: "DK:BANK", "DK:FIK" or "DK:GIRO".

According to the code, the stylesheet formats the payment information correct.
If you don't want to work with these codes in AX, you need to change the stylesheet according to look for the codes you are using.

If you are using FIK or Giro, you'd want AX to fill the field CustInvoiceJour.PaymId with payment reference information. This is however not implemented for Denmark, but only Norway.

PaymentId is set from code in:
\Classes\CustPostInvoice\run (\Classes\CustPostInvoice\runInternal in R3)

You need to choose the the correct Giro type for the invoice when doing the invoice update, to get the right payment id calculation.

With the correct Giro type you only need to add #isoDK to the container here:
if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoNO]) && numberSeq)
        moneyTransferSlip = PaymMoneyTransferSlip::construct(custInvoiceJour.GiroType);


        paymId = moneyTransferSlip.ocrField( custInvoiceJour.InvoiceAccount, custInvoiceJour.InvoiceId,

        custInvoiceJour.PaymId = strLRTrim(paymId);

Wednesday, February 13, 2013

Delete projects from Team Foundation Service

I have earlier mentioned the online offering of Team Foundation Server called Team Foundation Service.

If you have been playing a bit with it, you probably now have a lot of test projects that you don't really intend to keep.

This blog post explains how to delete these projects:

The post uses the address, which of course by now should be changed to [Your account]

Wednesday, January 23, 2013

Send mail with SMTP through the cloud

I was browsing the services available in connection with Windows Azure and stumbled across a service for delivering e-mails.

In demos, sandboxes, test systems, and sometimes in production systems at clients, it can be difficult to get access to a SMTP relay server. With this service, I can just setup AX to point to their STMP relay server.

The service is called SendGrid. They have a variety of plans and one of these is free, but limiting you to send "only" up to 200 mails a day.

You can sign up either through your Azure account if you have one, or directly from SendGrids site. You can get a free MSDN Azure account, with limitations, depending on what kind of MSDN subscription you have. 

Here's a sample setup in AX:

Here's a post showing how to quickly test that you can send mail:

Tuesday, January 22, 2013

Win a free copy of the 'Microsoft Dynamics AX 2012 Services' just by commenting!

For this contest Packt Publishing have two copies of Microsoft Dynamics AX 2012 Services to be given away to two lucky winners.

How you can win:

To win your copy of this book, all you need to do is to come up with a comment below highligting the reason "why you should win this book". Remarks on this blog are moderated, so it may take a few moments before you can see your comment.

Please note: Winners residing in only in the USA and Europe would get a chance to win print copies. Others would be provided with eBook copies.

Duration of the contest and selection of winners:

The contest is valid until end of day februar 5th. 2013, and is open to everyone. Winners will be selected on the basis of their comment posted.

Microsoft Dynamics AX 2012 Services allows readers to consume existing web services and self-created services using system services in applications and the SysOperation framework in creating batch processes.

This book is a complete tutorial that provides the knowledge needed to implement services with Microsoft Dynamics AX 2012. Using this book Dynamics AX developers will be able to process business logic synchronously and asynchronously using the AIF Document Service Wizard.

Thursday, January 17, 2013

AxUtilLib.dll issue with .NET 4

On his blog, Joris de Gruyter has described an issue with the .NET version of model files, preventing you from importing a model.

Here is a possible way of changing the RunTime version of the model file to 2.0, so you can import the model.

You'll need a tool from Microsoft Research, called ILMerge. You can download it from here:

Once downloaded and installed (it installs to C:\Program files (x86)\Microsoft\ILMerge) you can change the target version from the command prompt, like this:

ILMerge mymodel.axmodel /targetplatform:2.0 /out:mynewmodel.axmodel
You can use the ILSpy tool to verify the target platform. Get it here:

Thursday, January 10, 2013

Microsoft Dynamics AX 2012 Services released

This book is about AX 2012 service architecture is a good read if you need to work to work with services in AX 2012:

I have had the pleasure of beeing one the reviewers of the book and I think it came out great.