This process has changed from 10 months ago. NAV on-prem needs to transition to BC14 on-prem to BC 25 on-prem to BC cloud.
Pre-requisites:
- Make sure to install BC on prem 14 and 25.
- Install NAV on prem.
- Make sure to install all the peripheral tools needed like the proper versions of report builder.
- Installation files are found in the DVD installation folder.
- Make sure to have NAV license flf file, BC 14 flf file, BC 25 license file.
- Check expiry dates.
- Install the Microsoft Integration Runtime Configuration Manager.
- Familiarize yourself with where the specific on premise services are being run. If all on your local, check Services to see if the dynamics, sql server, sql reporting services are all running.
- For ease of access, create desktop icons for clients, admin shells, admin tools, dev shells.
- Familiarize yourself with PowerShell commands: https://ricardopaiva.github.io/cheatsheet/business-central-powershell-cheat-sheet/
- Test each NAV and BC on premise environment to see if they run properly in their respective clients with their demo databases.
NAV on-prem to BC 14 transition:
First follow to upgrade application code: https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/upgrade/upgrading-the-application-code to create application .txt files.
- First I make sure the demo BC db can run in the dev tool and client. I may have to use the BC14 admin shell to import the license.
- Restored my NAV db in my SQL Server and connected this db to my NAV Server instance using the admin tool.
- Opened this db in my NAV Development Environment.
- Made sure I uploaded the proper developer license flf file through the development environment.
- Toggle marked all objects, toggle marked all tables and set view filter to only marked and shifted my view to all objects to basically get all objects without tables. In the end you should just get all tables.
- I verified that all table objects were compiled and ran the Build Server Application Objects.
- I deleted the partner object tables
- 100,000 – 149,999 → Reserved for partner-developed solutions (ISVs). 150,000 and above → Typically partner or custom objects, depending on licensing.
- 99000000 – 99999999 → Microsoft reserved for special functionality (e.g., Manufacturing, Warehouse). 2,000,000,000+ → System tables and internal objects (Microsoft).
- In the NAV admin tool, I stopped the NAV instance.
- I made sure that all sql db sessions were disabled and opened the Development Environment for BC14 with admin rights and picked the NAV db in question.
- DELETE FROM [].[dbo].[Server Instance]
- DELETE FROM [].[dbo].[Debugger Breakpoint]
- I then made sure to turn off and on my db:
USE master GO ALTER DATABASE YourDatabaseName SET OFFLINE WITH ROLLBACK IMMEDIATE GOALTER DATABASE [YourDatabaseName] SET MULTI_USER;
- I always make sure to restart BC14 server using admin shell after every step to make sure.
- I made sure to add the NAV license to the BC development environment for the db conversion.
- I got prompted a dialog component asking to see if I want to convert my db, I selected OK.
- Once successfully converting the tables over to BC14, I made sure that the bc 14 server instance is connected to the db
- I opened the development environment for BC14 and imported my application .txt files that I got from the BC 14 demo. (Not really working)
- In the NAV client, I deleted the tables and imported all the bc14 demo objects including tables. – This doesn’t affect the database, just the code for the table objects.
- I run a compile on all my objects to see what errors I get.
- To fix my objects, I am going to read the error file along with exporting my object out as a txt file and addressing issues in VSCode using the search function.
- Once all objects are compiled, the database is in a good place to be converted to version 25.
- Run schema sync on converted db w/ validation. Can run Get-NAVTenant in admin shell to see status. When it’s done, the status should be OperationalDataUpgradePending. This takes a LONG time. Prepare for long wait. I added -Mode ForceSync
- I then upgraded this db and then ran through the bc14-25 conversion.
- RMB when I am loading the license file, I have to attach the db. -database NavDatabase
- After synchronizing, add ODT\gscs1 user to your BC14 server by New-NAVServerUser -ServerInstance BC140 -WindowsAccount “DOMAIN\YourUserName”
- Make sure there is a company: New-NAVCompany -ServerInstance BC140 -CompanyName “MyCompany”
- Create new permissions set:
New-NAVServerUserPermissionSet -ServerInstance BC140 -WindowsAccount "DOMAIN\YourUserName" -PermissionSetId SUPER -CompanyName "YourCompanyName"
Follow the steps here: https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/upgrade/upgrade-unmodified-application-v14-v25
- Main thing here is to go through the steps in the link above mainly involving powershell commands.
- Run Get-NAVAppInfo BC25 to get all apps associated to server so you can upgrade to new versions.
- Get-NavServerConfigurations to see ServicesDefaultCompany if is pointing to the right place.
- Import the proper license file too.
Run the cloud migration setup in a new sandbox BC cloud environment.
- Connect the proper db connection string and run the migration and data replication.
- To do so, open the cloud environment and insert connection string to get the runtime auth to add to microsoft integration runtime to enable a node.
- Make sure to update sql db compatibility level to level 130 or higher.
Add your BC extensions that you need in the new cloud environment and back fill data + columns using things like CSV buffers and such.
After the migration:
- Install custom extensions by uploading them.
- Make sure to back sync relevant custom columns and their data using Fabric and CSV Buffer.
- May have to split the Purchase Invoice Lines up by pre filtering CSV.
- Some tables are going to be too large, so back sync in batches (Purch Inv Line – prefilter using Excel)
- Sync users from Azure AD and give them Sustainability Read and SUPER permissions.
- Execute GL setup, purchase setup by extending posting interval and changing default line item to GL Account.
- Import the CADEFT data exchange model.
- Import the CIBC Bank Import data exchange model.
- Make sure the Bank Accounts are associated w/ the bank import data exchange model.
- Configure CDN CHK RUN batch to allow for export and configure bank account to associate with the appropriate Payment export type.
- Configure BRECADJ Batch for Bank Rec Adjustments feature.
- Make sure the No Series BRECADJ is there as well and is associated to the new batch.
- Add the necessary no series like IMPJE and BRECADJ
- Create the custom webservices for custom reporting tables.
- Use configuration packages to add some data -> Vendor Name 2
- Make sure we update users from M365 for permissions.
- In the Fabric dataflow for reports, modify to point to the appropriate company.
- Connect to sharepoint site -> hougaard’s goated tool
- make sure to account for alt mappings:
- purch header alt folders: doc types: inv, credit memo, order, quote
- metadata -> No., Budget Manager List, Created At
- gen journal line alt folders: Journal Template Name: CASH RECEI, GENERAL, PURCHASES, RECURRING
- USPY Payroll Employee -> Caption field of First Name
- sales header alt folders: doc types: order, quote
- vendor
- bank rec -> look into attaching docs to this.
- purch header alt folders: doc types: inv, credit memo, order, quote
- make sure to account for alt mappings:
- In General Ledger Setup, change posting date ranges
- In Purchases & Payables Setup, change Document Default Line Type to G/L Account
- Dental Plan Code needs to be synced over to vendor and payroll employee and then sync Dental Plan Codes to T4A Box 45 needs to be done.
- Need to add payroll employee fields such as employee reviews, former names, seniority 2268, seniority 3730, continue hire date
- Schedule notifications report to the report inbox