How to Upgrade Dynamics AX Code to Dynamics 365 for Operations
Microsoft has released its latest update to its flagship ERP solution Microsoft Dynamics AX in November 2016, and have rebranded it as ‘Microsoft Dynamics 365 for Operations’.
Microsoft Dynamics 365 for Operations is an ERP business application that is part of the Microsoft Dynamics 365 platform, a next-generation, cloud-based business management system that combines ERP and CRM capabilities within one seamlessly integrated platform.
For current Microsoft Dynamics AX technical users and developers though, the question of how to upgrade Dynamics AX code to Dynamics 365 for Operations has many people pondering. But the process isn’t as complicated as some people think – it’s really a matter of understanding how your business uses the system now.
Microsoft Dynamics AX Upgrade Paths
Currently Microsoft provides a direct upgrade path from Dynamics AX 2012 to Dynamics 365 for Operations. The code upgrade service in Microsoft Dynamics Lifecycle Services (the collaborative portal for managing updates and upgrades) currently accepts a model store file as an input, which essentially means that you can upgrade anything from Dynamics AX 2012 to Dynamics 365 for Operations. However, this process works best for the Dynamics AX 2012 R3 CU8 version onwards.
The reason for this is that the Dynamics AX CTP5 code base was based on Dynamics AX 2012R3 CU8, so the chances for an automatic merging of code is much higher in versions post-CU8. In our experience, we have started an upgrade from Dynamics AX 2012 R2 CU7 and successfully upgraded the code and data.
However, Microsoft does not currently provide an upgrade path for older versions of Dynamics AX – Dynamics AX 2009 and AX 4.0 – to Dynamics 365 for Operations.
What does that mean if you’re running a Dynamics AX 2009 or AX 4.0 instance? Chances are you would be tempted to do a re-implementation. And with the huge investment that Microsoft has put into Dynamics 365 – all the powerful features and cool new user interface – it would be totally worthwhile for your business.
But just in case you want to wait, or you don’t want to undertake a total system re-implementation, a recommendation would be to upgrade to Dynamics AX 2012. It is a time-tested upgrade path, and with a Dynamics AX 2012 application, you would be ready to take things to the next level with Dynamics 365 for Operations when it makes sense for you.
Upgrade vs. Re-implementation: Which is Right for You?
An upgrade to Dynamics 365 for Operations from Dynamics AX 2012 would ideally involve two activities:
- Code upgrade: This is the process through which you upgrade your business logic, or ‘code’ in technical parlance.
- Data upgrade: This is the process through which business data is upgraded to the new data model.
We say “ideally” because Microsoft has not released a data upgrade service yet, which we expect to be available in year 2017
The alternative to an upgrade is a re-implementation. A re-implementation is similar to a full implementation and requires the new system version to be deployed from scratch, with the necessary business logic and opening balances and master data uploaded.
But there’s also another approach a business can take. This approach involves doing a code upgrade but going with the opening balance and configuring the master data. The important thing to note here is that Microsoft has a well-defined code upgrade service and a comprehensive and well-tested approach to upload data in Dynamics AX – which makes this approach an attractive option to consider.
Pre-requisites for a Code Upgrade
The code upgrade is done through Microsoft Lifecycle Services (LCS), so you need an LCS project to start with. If it’s not enabled, an implementation partner can enable it for you.
As mentioned earlier, you need a model store file (not database) from any Dynamics AX 2012 version. If your application is ready to go into upgrade mode, you must have a Visual Studio Team Services (VSTS) project created to manage the upgrade process.
VSTS has a lot of other functionality and is the “Go to” ALM/Version control solution for Dynamics AX.
It’s a wonderful tool to manage your Dynamics AX journey and allows collaboration between the project team and the client stakeholders in an efficient and transparent manner.
Actions to take before you start a code upgrade process:
- Remove unnecessary models in your model store. These may be test models created by developers, conflict models that get generated when you import hotfixes, or any other model which has features you don’t use. The fewer models you have, the easier the upgrade process; and chances are that a majority of the code will be auto-upgraded, leaving you with minimal manual effort.
- Make sure to upload a fully compiled model store that has no errors.
- Another consideration is the presence of ISV models in your model store. Check with your ISV partner on whether they already have a Dynamics AX-compatible version for their solution.
- If you have customized the ISV solution heavily to fit your needs, it might be a good idea to include your ISV model as part of the upgrade process. The upside is that you don’t have to re-write all the ISV specific customizations you have done in Dynamics AX, while the downside is that all your ISV code gets over-layered to the Platform, Foundation and Application Suite packages. This will potentially increase the complexity of patching and servicing your Dynamics AX solution in the future.
- If you include ISV code in the upgrade process, and if any platform or foundation objects are modified in the code, you have to remove the code from those packages and refactor the code in extension packages.
Microsoft provides a code upgrade service through LCS. There is no data upgrade tool available at the moment, so the standard way to load master data and opening balances is through the data entity framework. This is a great way to upload your data as it is far more advanced than the existing data upload capabilities of Dynamics AX 2012. If you are already live on a newer Dynamics AX instance and want to upgrade to Dynamics 365 for Operations, you can use Runbooks to do the data upgrade.
Code Upgrade Process
The LCS code upgrade service runs based on intelligent algorithms that do a lot of things automatically for you.
Here’s an explanation of the code upgrade steps pictured above:
- Convert to XML: All AOT objects are now in xml format. So this is the first thing the LCS code upgrade tool does.
- Re-baseline model Store: In this step, the model store is split into individual packages. This is nothing but a model spilt and is essentially the process of rearranging legacy metadata into individual packages. Dynamics 365 for Operations has three core packages: Application Platform, Application Foundation and Application Suite.
- Auto Migration: Code migration takes place in this step using an over-layering principle. An over-layering principle is used to minimize complexity, but wherever possible an extension principle is also applied. According to Microsoft, the success rate of this process is 95% for code, and from our experience, the success rate is pretty close to that percentage. We never encounter any issue where the code is dropped because of the upgrade tool.
- Conflicts and TODO: Upgrade service doesn’t resolve all the code merge scenarios and will generate code conflicts that will be flagged with TODO tags and comments that help you to resolve them later. Those can be resolved with a code merge tool provided in Visual studio.
- Estimates and tasks to be solved: A brilliant feature of the upgrade service is the analysis it does on the uploaded model, and how it details tasks that need to be completed manually to finish the upgrade. The level of detail in this report is great for developers and technical consultants, and Microsoft even provides an approximate estimate of the effort required to manually resolve the conflicts. You can generate this report even without actually upgrading your model store, just to get an idea of the work involved.
- Migration report: If you run the upgrade service on an “estimation only” mode, you will get this report and the task list as the two main artefacts. Based on this you can plan your entire upgrade without actually doing it. This report is downloadable as an excel file.
- Create conflict projects in Visual Studio: For this step, a mandatory prerequisite is creating a connection between the Visual Studio Team Services (VSTS) project and Lifecycle Services. This is a one-time setup, and it helps during the entire phase of the project. Once the connection is established, LCS automatically creates conflicts project with relevant objects and checks in the solution to VSTS. A developer has to map their latest virtual machines (VMs) to this project to get all the source code. Start resolving conflicts from base packages like Application Platform, Foundation, Dimension, and Ledger by looking at the package dependency diagram. The code upgrade service also checks in the entire migrated metadata to a VSTS folder called ‘Release’. Developers can get the migrated source code when they map to this folder from Visual Studio in their VMs.
- Auto-check in to Visual Studio Online (VSO) with work items: As a consultant or project manager, you can also track the progress of outstanding work. Once you link your VSTS project with LCS and complete the upgrade process, the service will create ‘work items’ in your VSTS project, which details the work required to be done to complete the upgrade. You can then assign these work items to developers in your team and track and manage them efficiently.
Where the data upgrade is concerned, at the moment, there is no standard way to do this. Microsoft is working on developing tool for the data upgrade process. In our project we worked with Microsoft to upgrade our data from Dynamics AX 2012 to Dynamics 365 for Operations, and they will be using our customer’s data to develop an upgrade tool.
The AX data model has been normalized over the years and to write a custom tool is a considerable effort. From what we hear, Microsoft is most likely to release a standard tool for accomplishing this by the end of July 2017.
If you are working against a deadline though, the best bet would be to go with an opening balance and re-configuration of the master data. With the availability of tools like the data management framework, it is much easier to upload data in newer Dynamics AX than in some of the previous versions. Also, remember that Dynamics 365 now comes with 1,700+ data entities, so virtually all of your data migration needs are covered.
In Summary: Recommendations for Code Upgrades
Code upgrade service has been well-tested and auto-migrates 80-85% of your custom code and 95% of the system code. If you have an application that is less than 50% customized, a code upgrade requires significantly less effort than re-implementing from scratch. The code upgrade process is not beneficial when your customizations are more than 60%, and at 80% it might be easier to do a re-implementation.
If you are doing upgrade from Dynamics AX 2009 and earlier, you can clean up unwanted code as you upgrade to Dynamics AX 2012 first.
You should be aware that some things work differently in Dynamics 365 for Operations and you might have to refactor your code in the upgrade process to make everything work the way you want it to. But Microsoft is most likely to release a standard tool for accomplishing a data upgrade in 2017, so my recommendation would be to line up the code upgrade process and be ready for the tool when it is released.
The improved migration approach enables you to move to Dynamics 365 for Operations without having to do a full migration of historical data; you can choose what is relevant to your business and only migrate what you need.
If you’re wondering how and where to begin the long and tedious process of migrating all your data over to the new solution, Microsoft has you covered; specially crafted state-of-the-art migration tools will do a lot of the heavy lifting for you.
For questions on which migration path would work best for your business, please contact Hitachi Solutions today.