Path to One Version: Upgrading Dynamics 365 Finance and Operations On-premises data
What is needed: Access to LCS, one-box dev VM, On-premises database backup that needs to be upgraded. In this scenario I will walk through the process of upgrading 10.0.4 VHD to 10.0.5 PU29 and running code and data upgrade from 7.3PU 12 to 10.0.5PU29. Before you begin always check for the updated instructions on docs.microsoft.com. The process of upgrading to the latest version is described here: https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/migration-upgrade/upgrade-data-to-latest-update
This is high level overview of the activities involved in the process:
- Configure VM
- Update 10.0.4 VM to 10.0.5
- Run LCS code upgrade
- Restore 7.3 source AXDB on dev VM
- Run data upgrade
Configure VM
Prior to proceeding, the dev VM VHD must already be downloaded from LCS and set up locally. In order to configure the new VM properly, use the following document before the machine is renamed https://docs.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/migration-upgrade/vso-machine-renaming
First step is to apply application/platform update. https://docs.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/migration-upgrade/vso-machine-renaming#additional-steps-to-install-one-version-service-updates
Note: Application/Platform update might fail if you don’t update MR settings: https://docs.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/migration-upgrade/vso-machine-renaming#update-financial-reporting
PS C:\D365Upgrade\PlatformUpdate\MROneBox\Scripts\Update> .\ConfigureMRDatabase.ps1 -NewAosDatabaseName AxDB -NewAosDatabaseServerName -NewMRDatabaseName ManagementReporter -NewAxAdminUserPassword AOSWebSite@123 -NewMRAdminUserName MRUser -NewMRAdminUserPassword MRWebSite@123 -NewMRRuntimeUserName MRUSer -NewMRRuntimeUserPassword MRWebSite@123 -NewAxMRRuntimeUserName MRUser -NewAxMRRuntimeUserPassword MRWebSite@123
Update 10.0.4 VM to 10.0.5
First things first: Download the target application/platform update to the local vm and follow the process described in https://docs.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/deployment/install-deployable-package.
Note: Make sure you close Visual Studio instances before proceeding with application or platform updates.
Main steps:
- Run AXUpdateInstaller.exe list
- Update DefaultTopologyData.xml with the machine name (see configure vm section), update the list of services. Should look something like this (where localhost is your VM name):
- Generate the runbook
AXUpdateInstaller.exe generate -runbookid="applicationUpdate" -topologyfile="DefaultTopologyData.xml" -servicemodelfile="DefaultServiceModelData.xml" -runbookfile="applicationUpdate.xml"
- Import the runbook file
AXUpdateInstaller.exe import -runbookfile="applicationUpdate.xml"
- Verify the runbook
AXUpdateInstaller.exe list
- Execute the runbook
AXUpdateInstaller.exe execute -runbookid="applicationUpdate"
- Rerun steps if the runbook execution fails.
Run LCS Code Upgrade
Double check that the upgrade services are configured by following the process documented here https://docs.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/lifecycle-services/configure-execute-code-upgrade
- Create ax7version
- Execute code upgrade
- Click Analyze code
- When complete you will be able to view the results
- New branch will be created. And this is what we need for the next step.
- Next step would be to start visual studio on the local VM, map the workspace to a newly created branch and build the application.
Restore Source database on VM
The next step is to restore Source AXDB on VM:
- Stop the W3SVC, MR2012ProcessServie, DynamicsAXBatch
net stop W3SVC net stop MR2012ProcessService net stop DynamicsAxBatch
- Rename current AXDB (I used AXDB_orig)
- Restore Staging AXDB
- Run the script to create AXDB users against imported database https://docs.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/database/dbmovement-scenario-exportuat#update-the-database. This is the list of standard users from default AXDB
After you run the SQL against imported database your AXDB users will look like the following:
- Turn on change tracking (should already be enabled) https://docs.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/database/dbmovement-scenario-exportuat#turn-on-change-tracking
At this point AXDB is ready for data upgrade package execution
Run data upgrade package
Download and unzip data upgrade package from LCS
Extract the files. In the folder where you extracted the deployable package, open DefaultTopologyData.xml and repeat the steps for deploy application update using runbook:
- Update DefaultTopologyData.xml with the machine name (see configure vm section), update the list of services. Should look something like this (where localhost is your VM name):
- Generate the runbook
AXUpdateInstaller.exe generate -runbookid="DataUpgrade" -topologyfile="DefaultTopologyData.xml" -servicemodelfile="DefaultServiceModelData.xml" -runbookfile="DataUpgrade.xml"
- Import the runbook file
AXUpdateInstaller.exe import -runbookfile="DataUpgrade.xml"
- Verify the runbook
AXUpdateInstaller.exe list
- Execute the runbook
AXUpdateInstaller.exe execute -runbookid="DataUpgrade"
- Rerun steps if runbook execution fails.
Once the data upgrade package is executed, start the services:
net start W3SVC net start MR2012ProcessService net start DynamicsAxBatch
Run the Admin Provisioning Tool to provision yourself as a new admin (as users may be different) and begin testing. In the next post we’ll continue the in-place upgrade process to restore the upgraded AXDB on the source environment and deploy new AX application.
Happy upgrades
Comments
-
Overall a really good document. Note that the "generate runbook" line has a stray 'Ð' in place of double-quotes. A couple of lazy/further automated tweaks: For the MR DB, auto substitute the hostname like so: ``` .\ConfigureMRDatabase.ps1 -NewAosDatabaseName AxDB -NewAosDatabaseServerName $env:COMPUTERNAME -NewMRDatabaseName ManagementReporter -NewAxAdminUserPassword AOSWebSite@123 -NewMRAdminUserName MRUser -NewMRAdminUserPassword MRWebSite@123 -NewMRRuntimeUserName MRUSer -NewMRRuntimeUserPassword MRWebSite@123 -NewAxMRRuntimeUserName MRUser -NewAxMRRuntimeUserPassword MRWebSite@123 ``` Similarly, the hostname portion of the topology data with something like ``` $TopologyFile = Get-ChildItem .\DefaultTopologyData.xml [XML]$TopologyData = Get-Content $TopologyFile.FullName $TopologyData.TopologyData.MachineList.Machine.Name = $Env:COMPUTERNAME $TopologyData.Save($TopologyFile.FullName) ``` (Apologies on formatting, I'm trying to find what options are available on this forum, will update when I can.
-
Overall a really good document. Note that the "generate runbook" line has a stray 'Ð' in place of double-quotes. A couple of lazy/further automated tweaks: For the MR DB, auto substitute the hostname like so: ``` .\ConfigureMRDatabase.ps1 -NewAosDatabaseName AxDB -NewAosDatabaseServerName $env:COMPUTERNAME -NewMRDatabaseName ManagementReporter -NewAxAdminUserPassword AOSWebSite@123 -NewMRAdminUserName MRUser -NewMRAdminUserPassword MRWebSite@123 -NewMRRuntimeUserName MRUSer -NewMRRuntimeUserPassword MRWebSite@123 -NewAxMRRuntimeUserName MRUser -NewAxMRRuntimeUserPassword MRWebSite@123 ```
-
*This post is locked for comments