With Microsoft releasing GST -Indian localization for Dynamics NAV, Dynamics community is all excited and jumped to work on it and so did I. Of course, the first step was to upgrade the database with GST objects. This also lead me to think about what approach to follow such that it be simple and effective for all the different customers those looking for upgrading to GST. Some of the customers are in latest version of NAV, while there are customers who are also on older versions for which it is highly unlikely that Microsoft is going to release an update for GST.
Those who are starting with a fresh implementation, can directly download of CU 17 (build 48067) setup and install and are ready to go. For those who are way ahead in their implementation phase with an older version of NAV or have already gone Live, will have to go through an upgrade process with GST.
Upgrading GST means to merging the changes done to objects for GST to the existing objects. Changes to GST will impact most of the areas of the product for e.g. Masters, Business logic, Screens etc and in all these area there will also be custom codes that will make the merging a little challenging. The intention of this post was to cover how to approach merging of objects in Dynamics NAV. Below approaches can be taken up for upgrading to GST.
- Merging all the custom code to GST changes
- Merging all the GST changes to Custom implementation
- Mix of approach 1 and 2
While deciding upon the approach, some of considerations that will influence decisions are the effort involved, availability of Resources, time required etc. For e.g. bringing all the customer changes to GST would mean to have different upgrade strategy to each customer, while bring the GST changes to different implementation will mean having a uniform approach for upgrading process. For making these decision points that needs to considered are
- Type of Import option i.e. Merging feature supported by Dynamics NAV
- Objects that have been impacted by GST changes
Type of Import options (Merging features available in Dynamics NAV)
While importing the objects to Dynamics NAV, following options are available:
- Create: The new object will be added to the database. This option is only valid if no such object already exists.
- Replace: The existing object will be replaced by the new object.
- Merge: Existing<-New: Only valid for tables. All fields in the existing table will remain and any additional fields from the new object will be added.
- Merge: New<-Existing: Only valid for tables. All fields in the new table will be imported and any additional fields in the existing table will be added to the new table.
- There are two more “Skip” and “Delete”
Steps involved in merging objects are –
Step 1: Import the GST objects to the existing Database, which will appear as a list in Import worksheet. All new tables will have “Create” option set in field “Action” as shown in below image –
Step 2: Patch also has changes to existing standard tables and in the Import worksheet they will appear with option “Replace” in field “Action”. All those standard tables that are not modified or customized can straight away be set to “Replace” as shown in below image
Step 3: Those standard Tables that are customized, set the “Action” field with option “Merge: Existing<-New”. For e.g. in case Vendor table is customized. Go to the Vendor table line in Import worksheet and in Action field, select option “Merge: Existing<-New” as shown in below image –
Merging using Action “Merge:Existing<-New”
While merging with option “Merge:Existing<-New”, system considered are Global variables, Local C/AL function including local variables and Table properties. Similarly from New table items considered are New fields, Field properties that are different and Trigger level code on field level including local variables.
Fields are merged based on the field number. The following scenarios are possible:
- The field is located in the old object, but not in the new. The field will remain as it was.
- The field is located in the new object, but not in the old. The field will be added.
- The field is located in both objects. If the properties are different in the new object, these new properties will be used.
Sample Walk-through of Vendor table Merge
Below are List of new fields added as part of GST changes to Vendor table.
Field No. | Field Name |
16600 | GST Registration No. |
16609 | GST Vendor Type |
16610 | Associated Enterprises |
Changes to Existing Field
Field No. | Field Name |
13717 | State Code |
‘State Code’ field has new C/AL included in Trigger as shown in below image –
Below are steps to import GST changes to Vendor Table –
Step 1: Create a .FOB of Table 23 GST changes and Import. On importing .FOB, an error may popup as shown in below image. This is due of code existing in Triggers of New fields as well as existing fields. To resolve the error, one of the approach would be to open the object in GST Build (48067) and comment all the C/AL code existing in Trigger related to GST changes and save and compile another .FOB
Step 2: Import .FOB with Option “Merge: Existing<-New”. Merging will create all the new fields and also the triggers in the new fields. It may not bring the C/AL trigger for field “State Code” and this will have to be manually merged.
Step 3: Uncomment all the GST changes and recompile the object.
Step 4: After the Merge, it is always better to do a text compare and check what is missing and change it manually.
Objects Impacted by GST changes
Below is list of new table that are part of GST patch
Type | No. | Name |
Table | 1531 | Workflow Step Argument Archive |
Table | 16400 | GST Registration Nos. |
Table | 16401 | GST Accounting Period |
Table | 16402 | GST Accounting Sub Period |
Table | 16403 | GST Claim Setoff |
Table | 16404 | GST Group |
Table | 16405 | GST Component |
Table | 16406 | GST Posting Setup |
Table | 16407 | GST Configuration |
Table | 16408 | GST Setup |
Table | 16411 | HSN/SAC |
Table | 16412 | Detailed GST Entry Buffer |
Table | 16418 | GST Ledger Entry |
Table | 16419 | Detailed GST Ledger Entry |
Table | 16420 | GST Posting Buffer |
Table | 16421 | GST Calculation Buffer |
Table | 16422 | Adv. GST Calculation Buffer |
Table | 16423 | GST Application Buffer |
Table | 16424 | GST Liability Line |
Table | 16425 | Posted GST Liability Line |
Table | 16426 | e-Commerce Merchant Id |
Table | 16429 | GST Recon. Mapping |
Table | 16430 | GST Reconciliation Lines |
Table | 16431 | Periodic GSTR-2A Data |
Table | 16432 | Posted GST Reconciliation |
Table | 16433 | GST Reconciliation |
Table | 16434 | GST Credit Adjustment Journal |
Table | 16435 | Invoice Adjustment Journal |
Table | 16436 | GST Payment Buffer |
A Sample list of existing standard Tables that are modified as part of GST –
Type | No. | Name |
Table | 3 | Payment Terms |
Table | 4 | Currency |
Table | 5 | Finance Charge Terms |
Table | 6 | Customer Price Group |
Table | 8 | Language |
Table | 9 | Country/Region |
Table | 13 | Salesperson/Purchaser |
Table | 14 | Location |
Table | 15 | G/L Account |
Table | 17 | G/L Entry |
Table | 18 | Customer |
Table | 21 | Cust. Ledger Entry |
Table | 23 | Vendor |
Table | 25 | Vendor Ledger Entry |
Table | 27 | Item |
Table | 32 | Item Ledger Entry |
Table | 36 | Sales Header |
There is no fixed way or right way of merging objects from new releases, intention is to provide an overview of what is possible so that upgrades become very smooth affair. This is very critical as GST in India has to be implemented to most of the customers and within a given time frame. I believe this post will bridge that gap.
Thanks Biju for updates…