Incremental code upgrade, AX2012 to D365SCM

We are working on an AX2012 to D365SCM upgrade project. Technical code upgrade happened a long time ago. After that, we worked on the functional redesign, integrations, data migration, automated build and release, functional tests, and so on. It takes time and we are still using AX 2012. We have some fixes and new developments from time to time. We did not have a code freeze as we knew it will take time. So now we need to upgrade the new AX2012 code that we have developed after our technical code upgrade to D365SCM. There are a few things to consider and some tricks that I would like to share.

How to find what needs to be upgraded?

As we used TFS for version control in AX 2012, I can go to history. I can find the last changeset that was included in the last code upgrade and compare it with the current code.

TFS compare 1
TFS compare 2

The three options will be handled in a different way.

  • Items that exist only in the source – these are the deleted objects
  • Items that exist only in the target – these are two different types:
    • new custom code
    • newly modified Microsoft code
  • Items that are differ – these are the ones that were already modified when we made the earlier code upgrade, but they were modified again since

Use LCS Code upgrade service on incremental upgrades too

To help with the code upgrade, I used the LCS Code upgrade service.

LCS code upgrade tool

Here I uploaded our latest AX 2012 modelstore and used the result to be able to copy-paste XML files and use them in comparison or creation of elements in D365SCM.

Use TF.EXE to help task delegation

To help the delegation of tasks and the monitoring of the progress, we used an Excel sheet that contains a list of objects that needs to be upgraded. It is not that straight forward, how to get such a list. I used TF.EXE to get the list. The exact command was:

tf diff $/AX2012/AX6Dev/JAD /version:c1772~c1879 /recursive /format:Brief > c:\diffFormatBrief.csv

The result is grouped by element type and needs some extra columns, for example, an “Assigned to” and a “Status” column, but that depends on you and takes just a few minutes to finalize the format.


This post was about incremental code upgrades which you need to do on many projects where there is no code freeze in the older version of AX until the upgrade is going. My tips for you are

  • use TFS compare on the Visual Studio UI
  • use LCS Code Upgrade tool
  • use TF.EXE for task delegation

Good luck and enjoy 😉

Leave a Reply

Your email address will not be published. Required fields are marked *