Skip to main content

NAV 2015 - Changes in Schema Synchronization - Part II.

Hi all,

As discussed in Previous post we will see more about Options of Synchronization Schema, Destructive Table Changes, Upgrade Codeunits, Modes in Upgrade Codeunits, Powershell Commands & benefits of New Schema Synchronization in NAV 2015.

If you haven't read the Previous Post please Refer the Post here -
NAV 2015 - Changes in Schema Synchronization - Part I

Below is the difference between three Synchronize Schemas as discussed in Earlier Post -

In Above Image Let's see what does Validate Table MetaData Changes Means ?

> Verifies whether the changes can be applied to the SQL table without deleting data from the affected columns.

> Non-destructive table changes can always be applied, for example, create a new table, add a new column, add a new key, increase the length of a field, etc.

> C/AL code changes  within a table object never trigger validation and never cause synchronization issues

> Error is shown if destructive table changes are detected and there is no instructions for how to handle them.

What are Destructive table changes ?

Below is what Microsoft Says can be considered as Destructive Table Changes.

What is Upgrade Codeunit with Sync Options?

There is a new subtype of Codeunit is available with NAV 2015. Subtype - UPGRADE.

These Types of Codeunits will be used in case of Destructive Table Changes.

These Codeunits Contain Function Calls which get executed automatically when the object is imported.

These function calls will either Check, Move, Copy or Force the table Sync as shown below.

So now if you are importing a upgrading a Process / Vertical which have destructive  change, you need to create a Upgrade Type Codeunit which will do actions as per your vertical / Process Change.

A simple example -

I have a customized Solution on which there are 3 Tables with 5 Fields each. Now I updated that customized solution where I come up with 5 Tables and 2 Fields Each.

The New updated Objects need to following actions -
-- Add new Tables in Database.
-- Delete Some Fields from Existing Tables.
-- Move Data from Existing Tables to New Tables. &
-- Delete Some Data from the Existing Fields (no longer required).

So with this I need a Codeunit of type Upgrade which will do these task. And the best part is I don't need to run it manually.

When I will import a set of objects with a Codeunit of Subtype Upgrade, system will perform actions based on Logic Written in Codeunit.

In next and Last post of this series we will see what are these Different mode and what exactly they do.

Stay tuned for more about #NAV 2015.

Do write comments on articles as feedback / questions about the post.

Saurav Dhyani


Popular posts from this blog

VIEW SERVER STATE permission on SQL Server?

Hi all, Sometime While trying to Login into a database we face an error message as shown below. --------------------------- Microsoft Dynamics NAV Classic --------------------------- You cannot start Microsoft Dynamics NAV Classic because you do not have the VIEW SERVER STATE permission on SQL Server. Contact your system administrator. --------------------------- OK    ---------------------------

BC 21 and Higher - PowerShell Cmdlet (Replacement of Business Central Administration).

Hi Readers, As discussed in last article about deprecating of Business Central Administration, there are few common actions that we use in administration till Business Central 20. For our on-prem customers, we will still require doing activities. As Microsoft suggest we need to start using PowerShell cmdlet.    Let's see how to do those via PowerShell, or Administration Shell. I will be keep adding commands as you comment to this article.

Send Mail with Attachment From Navision.

Hi all, We have seen how to save a report into PDF and how to send mail to a customer. Let's link these two post in one i.e. Mailing statement to a customer into PDF Format. This article is part of the Series. Please Refer  Table of Content here . If you have the old objects set let me brief you what I will be changing -