You got a Business Central V14 with extension and/or data you want to bring in Business central V15 ?
Let’s take a look at the microsoft guideline : Technical Upgrade to Dynamics 365 Business Central 2019 Wave 2 I personally followed Microsoft process but it turns out that several details and step are missings so I’m writing down what I’ve followed to bring a customized V14 with extension and data to V15.
Prerequisite
- Administrator rights on your V14 database and service
- Your V14 Extension source code
- Business central V15 operational base to adapat your V14 extension
Methodology
1- Make your V14 extension working for business central V15 is the hard work.
– Update your launch.json to point the V15 target
– As V15 application moved from C/Side to Microsoft Apps, let’s update your extension dependencies you would have something like bellow
Use an empty AL project to retireve your V15 dependencies version and guid if necessary, they depend on CU and Localization (exemple bellow is W1 CU1) and change your “runtime”: “4.0” instead of “3.0”
"dependencies": [ { "appId": "63ca2fa4-4f03-4f2b-a480-172fef340d3f", "publisher": "Microsoft", "name": "System Application", "version": "15.0.36560.36649" }, { "appId": "437dbf0e-84ff-417a-965d-ed2bb9650972", "publisher": "Microsoft", "name": "Base Application", "version": "15.0.36560.36649" }
– Update your code following v14 to v15 breaking change. Lot of objects have been moved or renamed you will have to guess new names or search for them on google.
https://github.com/microsoft/ALAppExtensions/blob/master/BREAKINGCHANGES.md
(Unfortunately this is not an exhautive list)
2- Uninstall and unpublish all V14 extension, including symbols (follow microsoft task 3. cmdlet sample)
3- Backup/restore your V14 base to the V15 base (erase the demo database or use new one). Modify V15 service configuration to point this new database
4- With V15 administrative powershell console execute Invoke-NAVApplicationDatabaseConversion on this base
5- Restart the V15 service
6- Publish V15 symbol (system.app) provide in the installation DVD/ModernDev/[…]
7- Publish V15 Microsoft System.Application then Microsoft Base Application from the installation DVD/Applications
9- Use powershell powershell Sync-NAVTenant -ServerInstance <BC15 server instance> -Mode Sync
then Sync-Navapp -ServerInstance <BC15> -Mode ForceSync for “System Application” And “Base Application”
8- Install Microsoft System.Application then Microsoft Base Application
10- Publish then install your customized extension made in 1-
11- Restart BC15 service
Hi Maxime,
Could you please give me further info in relation with 3 step (3- Backup/restore your V14 base to the V15 base (erase the demo database or use new one). Modify V15 service configuration to point this new database) ?
Thanks in advance
Piedi
Of course, the purposte of step 3 is to use your V14 database with a V15 service, in order to execute powershell commands later :
– If you want to keep a copy of you old V14 database : in sql managment studio right click/Tasks/Back up on the V14 database. Then on your existing demo V15 Right click/Tasks/Restore/database, then choose the bakcup you made before (you would have to rename mdf and ldf in files tab)
– If you don’t want to keep a copy of the V14 version, simply create or modify a V15 service and set your V14 database in the V15 service parameters.
Hope this help
Hi Maxime,
on Sync-NAVApp -ServerInstance BC150 -Name “Base Application” -Version 15.2.39040.0 part im getting the bellow error
Table Sales Price :: Unsupported field change. Field:Markup %; Change:Remove
Table Sales Price :: Unsupported field change. Field:Profit %; Change:Remove
Table Sales Price :: Unsupported field change. Field:Profit (LCY); Change:Remove
Table Sales Price :: Unsupported field change. Field:Unit Price Including VAT; Change:Remove
Table Purchase Price :: Unsupported field change. Field:Wholesale Price; Change:Remove
Table Purchase Price :: Unsupported field change. Field:Discount %; Change:Remove
Table Sales Price Worksheet :: Unsupported field change. Field:Markup %; Change:Remove
Table Sales Price Worksheet :: Unsupported field change. Field:Profit %; Change:Remove
Table Sales Price Worksheet :: Unsupported field change. Field:Profit (LCY); Change:Remove
Table Sales Price Worksheet :: Unsupported field change. Field:New Unit Price Including VAT; Change:Remove
At line:2 char:1
+ Sync-NAVApp -ServerInstance BC150 -Name “Base Application” -Version 1 …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Sync-NAVApp], InvalidOperationException
+ FullyQualifiedErrorId : MicrosoftDynamicsNavServer$BC150/default,Microsoft.Dynamics.Nav.Apps.Management.Cmdlets.SyncNavApp
Any help would be great.
Thanks in advance.
Hi Nasreddine,
I’ve never faced this error but you can verify following :
– I see you do not provide the -Mode ForceSync argument, without BC would throw errors when an app ask for schema modification resulting in data loss
– Did you have only one Base app published ?
– Did system app synch correctly before base app ?
– Did you got any problem with Invoke-NAVApplicationDatabaseConversion cmdlet ?
– Did your original V14 database was modified from c/al environnement ?
Hope this ideas can help you
Hi Maxime,
Thanks for the sharing blog.
Can you tell that how you handle Custom fields data during this upgrade from V14 to V15. I am on V14 with CAL customization.
Thanks in advance.
Hello Abrar
Take a look at this post
http://navcraft.fr/automate-your-c-side-data-to-al-transfer-business-central-v14/
Hi Maxime,
I have question Microsoft link have this task
Task 2: Convert your application from C/AL to AL,
and this task described to convert all CAL to AL, and Technical upgrade this is mentioned “This process won’t upgrade the application to the latest version. You’ll convert the entire application from C/AL to an AL base application extension.”. what if i have to upgrade application to V15 as well. Can you please suggest something.
I am currently on BC V14 on-prem with some CAL customization, (Custom fields and custom tables) and my goal is BC cloud version.
Yes has V15 is no longer supporting C/AL, you must convert your C/AL cusotmizations to extension in order to go cloud.
This current post deal with the v14 to v15 database conversion assuming you already have extension.
To build your AL Extension you need some powershell skills and to start working with Visual studio code and AL, you can help yourself with the TXT2AL tool for the conversion, take a look :
https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-txt2al-tool
Good luck
By unpublishing the extensions don’t you lose the data of the additional tables and fields? Is there a workaround for preserving data?
Hello Andrea,
Unpublishing extension is not removing the extension table and data.
Uninstall extension can remove data only if you specify it implicitly in powershell cmtlet with “-DoNotSaveData”, see microsoft doc here Uninstall-NAVApp (Microsoft.Dynamics.Nav.Apps.Management)
By default, the table and data are keeped and then retrieved when you republish the same extension GUID.
You can test this by unpublishing your app then search in the database for your app table name with a filter on your extension GUID.
Regards