Upgrade Business central base V14 to V15 (wave 2)

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

10 Comments

  1. 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

  2. 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

  3. 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.

  4. 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.

    • 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

Leave a Reply to Abrar Shaikh Cancel reply

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