Incorporating GST [CU17] in NAV 2016

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:

  1. Create: The new object will be added to the database. This option is only valid if no such object already exists.
  2. Replace: The existing object will be replaced by the new object.
  3. 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.
  4. 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.
  5. 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:

  1. The field is located in the old object, but not in the new. The field will remain as it was.
  2. The field is located in the new object, but not in the old. The field will be added.
  3. 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.

Interactive Reports in NAV 2013 R2–Drill Down

In continuation to my earlier post ‘Interactive Reports in NAV 2013 R2 – Dynamics Sorting’, in this session we will see how we can drill down from the report preview to more detailed data


You can refer to my earlier post describing interactive sorting in NAV 203 R2 in the following link –

Interactive Reports in NAV 2013 R2


We will use our existing report designed in my last post [Interactive Reports in NAV 2013 R2] and will incorporate a drill down facility from the ‘Inventory’ column in the report to the Item Ledger Entry corresponding the report’s item No. Probably the design should be as below –


Now to achieve this we need to do 3 things –

  • Create a link to ‘Item Ledger entry’ page (Page no 38) and
  • Connect the same link with ‘Inventory’ field in the report and
  • Enable your report to use an external link (URL)

Create a link to ‘Item Ledger entry’ page:

Creating a link to a page in NAV 2013 R2 is simple. Open any Item Card and drill down from the inventory field –


This will open the ‘Item Ledger Entry’ page filtered out by the item from whose card you are drilling down –


Click on the down arrow key in the upper left corner of the page and go to Page > Copy Link to Page. Open a notepad and paste the link (you need to further edit it)-


here is the link URL pasted (This link relates to my NAV server and Company):

dynamicsnav://dss-282:7046/DynamicsNAV71/CRONUS%20India%20Ltd./runpage?page=38&personalization=38& bookmark=12%3BIAAAAACHNAE%3D&$filter=%27Item%20 Ledger%20Entry%27.%27Item%20No.%27%20IS%20%271000%27&mode=View

This link contains a lot of information about the target page and some part of this link can easily be removed to make it more generic. This link has the following information –

Link Text Purpose
dynamicsnav://dss-282:7046/DynamicsNAV71 Target Server Instance and port no
/CRONUS%20India%20Ltd. Target Company
./runpage?page=38&personalization=38& bookmark=12%3BIAAAAACHNAE%3D&$ Target page no 38 and bookmarking
filter=%27Item%20 Ledger%20Entry%27.%27Item%20No.%27%20IS%20%271000%27 Filer information. Here the data is getting filtered by ‘1000’ on ‘Item No.’ field in target data (Item Ledger Entry)
&mode=View Open the page in View mode

So I will remove the ‘Target Server’, ‘Port No’, ‘Target Company’ and the ‘Personalisation’ part to make it usable for any server, any database or company (you can port this object to any other database in any other server and it will work fine). post my changes, the link will look like this –

dynamicsnav://///runpage?page=38&filter=’Item Ledger Entry’.’Item No.’ IS ‘1000’&mode=View

[I have replaced the %20 with space and %27 with a single quote (‘)]

Right now the above link will open the Page 38 filtering the ‘item ledger entries’ with the Item No. ‘1000’. We need to change it further to make it filter data dynamically with the item no. from the report. We will make this change directly in report builder in our next step.

Connect the same link with ‘Inventory’ field in the report:

Open the report in NAV 2013 R2 development environment and go to View > Layout. This will open the report layout in SQL Server Report Builder.


Note: To learn how to use SQL Server Report Builder 3.0 (instead of Visual Studio 2013) for NAV 2013 R2 report layout designing, you can refer to my earlier post NAV 2013 R2 Report layout design with Report Builder



Right click on the ‘Inventory’ textbox and go to ‘Text Box Properties’.


Go to ‘Action’ tab and select the radio button in ‘change action option’ to ‘Go to URL’. After this click on the ‘fx’ (as circled above) button next to ‘Select URL’ text box.


Here I have modified the URL with the following changes:

  • Added a ‘=’ sign in front of the URL
  • Included the entire URL inside double quotes
  • Replaced the text ‘1000’ (the item no.) with the text ‘+Fields!No.Value+’. This makes the URL to pick up the Item No. from the value displayed in ‘No.’ field in report.


Instead of manually typing it, you can actually select the ‘Fields (DataSet_Result) in Category box, Select ‘<All>’ in Item box and then  double-click on ‘No.’ in the Values box.


Post the above changes, my final URL looks like this –

=”dynamicsnav://///runpage?page=38&$filter=’Item Ledger Entry’.’Item No.’ IS ‘”+Fields!No.Value +”‘&mode=View”

Now the field ‘Inventory’ is perfectly linked to the page 38 (Item Ledger Entry). Next let us complete our 3rd step –

Enable your report to use an external link (URL):

Save the report layout and come back to NAV 2013 R2 development environment (Report designer). Go to a blank line at the bottom of the report and click on View > Properties –


Change the property ‘EnableHyperlinks’ to ‘Yes’.

And that’s it. You are ready with your NAV 2013 R2 interactive report from where you can drill down to more detailed data. Let us test the same.

Save the report and run it from the Object designer itself (that’s the good thing you can do in NAV 2013 R2 but not in NAV 2009 Smile).

Once the request page opens, just click on the ‘Preview’ button. This will open the report viewer window. Hover your mouse on the ‘Inventory’ field values and you will see the cursor is getting changed to a ‘hand’ denoting that you can drill down from that value. Click on the value and Item ledger entry page will open up with the entries corresponding to the item no in the report.


Try and see if all values are opening it’s corresponding item ledger entries only.

Hope you are able to follow the steps mentioned here in creating your own interactive reports. You can leave your comment here in case you face any difficulty or you can write to me on the same at

Catch you in my next post / session on NAV 2013 R2. Till then happy reading.

Interactive Reports in NAV 2013 R2

With the world cup football 2014 in full swing, I am struggling to catch up up with my goal of weekly post to my blog Smile. But thought of catching up on the same today.

In this edition of post, let me show you some of the interactive features of Microsoft Dynamics NAV 2013 R2 reports

NAV 2013 R2 reports can be pretty interactive in terms of –

  • Interactive sorting
  • Drilling down to detailed data
  • Toggling the visibility of any field [say image] based on user action.

These features are kind of giving more power to end users of NAV to view their reports in their own way. Let them decide how they want to sort the report and help them with details of information wherever possible.

To demonstrate the same, let me create a report in NAV 2013 R2 and take you through these interactive features.

I will create a simple report based on Item Master – ‘Item List Interactive’ with the following columns displayed in the report –

  • – No
  • – Description
  • – Base Unit of Measure
  • – Costing Method
  • – Inventory and
  • – Picture of the item

So I opened the developer environment of NAV 2013 R2, created a new report and inserted the DataItem with the Data Source ‘Item’ table and added the above mentioned columns in the Report Dataset Designer as below –


Now let us design the layout of the report. [I am using SQL Server 2012 Report Builder 3.0 for layout Designing]. Go to View > Layout and this will open the Report Builder’s Layout Designer [a blank one]. Just add a table and drag and drop the fields displayed in Dataset_Result under the group Datasets in the Report data pane in the left [You could use a Table Wizard (Insert > Table > Table Wizard) also to include the fields in the layout] –


Your layout will look more or less similar to my above screenshot.


[Note: Use a image control instead of a textbox control to display the picture field. Otherwise the the picture column will not show the images of the items and will display an ‘Error’ wherever picture is present for the item.]


Now your basic report is complete. Close the report builder and save the report and run it from the object designer itself. Though we have not selected any key in the DataItem’s property ‘DataItemTableView’, you will see that the list of items are sorted on [No] column as that’s the primary key of the item table.


Also, wherever the item has a picture stored in the database, the same will be displayed in the Picture column of the report.


Our next job is to make it more interactive and enable the major columns [Say ‘No’, ‘Description’ and ‘Costing Method’] dynamically sortable during runtime. For that we will go back to our report and open the layout in report builder.

In the layout design, right click on the header textbox of the [No] column and open the text box properties.


In the properties window, go to the Interactive Sorting tab and in the right hand side pane, tick the [Enable interactive sorting on this text box]


Keep the [Choose what to sort] on [detail row] selected and go to the field [sort by]. Here select [No] column. Click on the ‘Ok’ and you are done with making the [No] column interactively sortable during runtime.

Similarly make the [Description] and [Costing Method] column interactively sortable by repeating the above steps (Right click on the header of the column and open the text box properties. Go to the interactive Sorting tab and tick the [Enable interactive sorting on this text box]. Also select the corresponding field in [sort by]) .

Save the report layout and come out of the Report Builder. In NAV report designer window, click anywhere and it will prompt you to synchronise the report object and the modified RDLC [.rdl] file –


[This happens every time you modify anything in the report layout in either Report Builder or Visual Studio and come back to NAV report designer]
Say yes and save & compile the report.

Let us test how the report is behaving now after all the above changes. Select the report in Object Designer window and run it. This will open the request page of the report where click on the preview button to display the report –


In the preview, immediately you can notice that there are some visual changes in the report and the [No], [Description] and [Costing Method] columns have up/down arrows in their header. This denotes that these columns are enabled with interactive sorting.

Click on the column header of [No] and you will see the sorting of the data is getting changed from ascending to descending and if you click again, the sorting is reverting back to ascending way. The same sorting behaviour you can see for the other 2 columns too ([Description] and [Costing Method]).


So, we just made our simple ‘Item List Interactive’ report dynamically / interactively sortable on the basis of multiple columns.

That’s closes this session on Interactive features of Microsoft Dynamics NAV 2013 R2 reports. Do send / write to me your feedback on the same. In my next session I will continue with my discussion on rest of the interactive features [Drill down and Image Toggling] of NAV 2013 Report. Till then happy reading and enjoy the Football World Cup matches Smile.

[Going to watch Brazil vs Mexico match tonight]

ADCS – Automated Data Capture System

Probably I felt about writing on ADCS (Automated Data Capture System) configuration in Microsoft Dynamics NAV 2013 R2, when I myself struggled a bit to gather all the relevant information to manage it properly. There are always some missing points in all documentation related to ADCS configuration and all of them are not collated together very well in any documentation.

So here is my guide to ADCS configuration Smile.

First of all let’s understand the architecture of ADCS in NAV 2013 R2; mind it – its no more MSMQ as communication mode between VT100 plugin and NAV server. Now the communication happens via web services –


[the above image is taken from msdn site]

I am not going into details of the architecture here. I assume you already understand it or will read about it on your own.

Now, what exactly you need to concentrate on to configure the ADCS? I divide it into 4 parts:

A. Installation of ADCS [Microsoft Dynamics NAV VT100 Plugin]

B. NAV configuration changes for ADCS

C. Logon permission to VT100 Service

D. ADCS config file.

Let me install ADCS afresh in my laptop and describe the steps to you:

A. Installation of ADCS:

I already have NAV 2013 R2 installed in my laptop and I am opening the add / remove programs and adding the ADCS component to the same by clicking on the ‘Change’


Once the NAV 2013 R2 maintenance window opens, select ‘Add or Remove Components’. This will open the list of components available to be installed –


Click on the ‘Automated Data Capture System’ and select ‘Run from my computer’. Click on the ‘Next’ button and that will open the ‘Specify parameters’ window –


if you have NAV 2013 R2 already installed, you don’t really need to change anything in this window. Review the properties and click on the ‘Apply’. This will start installing the ADCS component for Microsoft Dynamics NAV 2013 R2


This completes the installation of NAV ADCS component. Let me go to my next step –

B. Configuration changes in NAV for ADCS:

Once the installation is successfully done, let us come back to NAV RTC and check few things in which will enable ADCS to communicate with NAV server / database effectively –

B.1 ADCS User:

You need to create a ADCS user which will be used for authenticating the device’s access to the database. Go to ‘CRONUS India Ltd. / Departments / Administration / Application Setup / Warehouse / ADCS’ and open the ‘ADCS Users’


Create a new user and assign a password to it. The same user id and password you need to pass while connecting NAV from the handheld device.

B.2 Connect ADCS user with the Warehouse Employee:

Identify the ADCS user as one of the Warehouse employee [which in turn identify itself as one of the window’s login in NAV. for more details on the same, read about creating warehouse employees]. Go to  ‘<Company Name> / Departments / Warehouse / Setup / Warehouse’ and open ‘Warehouse Employees’ window –


Link between windows user [warehouse employee] and the ADCS user you have just created in previous step.

Now this user will have a default location [Default will be ticked next to the location code] which he can use in his warehouse related transactions in NAV. The same location must be ADCS enabled too. This step need to be repeated if the user has access to multiple location.

B.3 Enabling Location for ADCS use:

Open the location card [where the above defined user has access to work on] and tick ADCS checkbox in the warehouse fast tab.


B.4 Check the miniforms:

Go to ‘<Company Name> / Departments / Administration / Application Setup / Warehouse / ADCS’ and open the list of miniforms


These are the default miniforms available in ‘Cronus’ company and the same can be copied to any new company / installation you have created. These miniforms can manage all the standard warehouse functions / activities but you have the liberty to create additional miniforms to cater to additional custom activities [If you create any additional miniforms, the same may need changes in the associated ADCS related codeunits in NAV. These codeunits are between 7700 and 7714].

B.5 Publish the ADCS Web Service:

Publish the Web Service which will be called by the VT100 Component [Check the architecture at the top of the post] of NAV. Open the Web services window and add a new service with the object type ‘Codeunit’ and select 7714 in ‘Object Id’ –


Be sure the to keep the Service Name as ‘ADCS’. Check the service availability by copying the SOAP url and pasting it in your browser. This should display the details of the Web Service.

C. Logon permission to VT100 Service

Additionally the ADCS component of NAV [Microsoft Dynamics NAV VT100 plugin] must have the access to NAV database. This is determined by whether the logon user used for this plugin has the necessary permission in NAV database or not.

You can use an existing user id already used in NAV as logon user id for VT100 or you can create a dedicated windows user id for this use. The same user must have ‘ADCS ALL’ Permission Set. If you are not sure about the permission set you can go ahead with the ‘Super’ Permission Set assigned to the user.

For example, here I have used my user id as logon user for Microsoft Dynamics NAV VT100 plugin. [Services can be opened by typing in ‘services.msc’ in your Search / Run box]


Start the service of this plugin once you are done with logon information changes.

D. ADCS config file:

Lastly you need to check if the information mentioned in the ADCS config file are correct as per the NAV environment you are working on. Go to ‘C:Program Files (x86)Microsoft Dynamics NAV71Automated Data Capture System’ and edit the ‘Microsoft.Dynamics.Nav.VT100Plugin.exe.config’ file. [Note: VT100 plugin is a 32 bit application and i have 64 bit OS. That;’s why it under the folder ‘Program Files (x86)]

Majorly 3 attributes need to be checked here –

a. “NavWSEndpoint” url: Make sure this has the right url pointing to your ADCS web service. You can actually copy the SOAP url from the ADCS Web Service in Web Services window and paste it here.

b. Terminal listenIP: This denotes the IP address of the machine that is running the VT100 Plug-in service. denotes the localhost. This you need to mention while logging to VT100 plugin from Handheld devices [This you can find in your Hosts files located in ‘C:WindowsSystem32driversetc’ folder]

c. Terminal listenPort: VT100 plugin uses port number 6666 by default.


Note: if you have changed any text in this file for your environment, please make sure that you have restarted ‘Microsoft Dynamics NAV VT100 Plugin’ service. 

Phew! Thankfully all the configuration is now over and I need to test the same. For this I will try simulating the ADCS functionality using a HyperTerminal client application  or Telnet. As windows 7 (my os) no longer have a HyperTerminal client included I will settle for Telnet,

[Note: you can enable Telnet in ‘add or remove programs > Turn windows feature on or off’ from control Panel if it is already not enabled / not visible]

So I have run the telnet and the telnet command prompts open up. Below mentioned command prompt is to connect to my VT100 service using port no 6666 in localhost-



Pressed enter and I got the ADCS login window displayed in my telnet command prompt –


Typed in my user id and pressed enter. Typed in my password and pressed enter.

[telnet can take 1 input at a time so you need to put your user id first and press enter and then you can put your password. And the text display may not look like that you have typed it right. but don’t worry, type user id and password correctly and it will work fine]

voila! We are done here. This opens up the list of functionality available to be used through ADCS and this list is nothing but the list of miniforms available in NAV –


That ends my session on configuring ADCS in Microsoft Dynamics NAV 2013 R2. From here you can go ahead and experiment on the default ADCS functions available in NAV.

If anything in any stage of this tour is not working fine in your environment, the best way to troubleshoot the same is to check the windows event viewer. it gives a hint / a clear picture what is wrong in your configuration. I am attaching a few scribbling I did on the whiteboard during one of my classroom training


If you want further details on troubleshooting, you can refer to below msdn link –

ADCS Troubleshoot Guide

See you guys in my next post (probably a topic on interactive report designing in NAV 2013 R2. Keep Reading Smile

NAV 2013 R2 Report layout design with Report Builder

I was travelling to Kochi, Kerala to conduct a 6 day session on NAV 2013 R2 topics to a bunch of guys from one of the Microsoft Partner. it was 3 months back and as client requested to demonstrate the topics in NAV 2013 R2, I upgraded my laptop with NAV 2013 R2 from NAV 2013 FP1.

During the training, when we reach the topics on Reports, I got a rude shock that my report layout  design is no longer opening and its throwing an error as below (though I have visual studio 2010 installed in laptop) –


Normally I ensure to keep all dependent software of NAV installed right in my laptop. But this time I missed out the fact that NAV 2013 R2 is no longer compatible with Visual Studio 2010. Rather it needs VS 2012 or higher.

Now I got a situation here as I even don’t have the installable of Visual Studio 2012 / 2013  and I need to demonstrate the report designing features to my audience.

Fortunately with my installation of NAV 2013 (R2), the SQL Server 2012 express version was installed and along with that, the Report Builder 3.0 too was got installed in my Lapi. Though I was more comfortable in designing the reports in Visual Studio, but I quickly adapted to the new environment and managed the show perfectly. And trust me my audience was happy .

So the fact is that –

  • NAV 2013 R2 no longer uses Visual Studio 2010 for report layout design. Rather it looks for Visual Studio 2012 / 2013.
  • If you don’t have the Visual Studio 2012 / 2013, you can still manage to design the report using Report Builder 3.0. This is a component of SQL server 2012 reporting services and gets installed when you install SQL server 2012.
  • Among the 2 report authoring tools, Visual studio is still the default report authoring tool.  So even though you have the Report Builder 3.0 in your machine, you will see that NAV 2013 R2 is looking for Visual Studio 2012 / 2103 and still throwing the above mentioned error (picture).

To make NAV 2013 R2 use Report Builder 3.0, you need to change an option property in your NAV environment. To do the same –

  • Open NAV 2013 R2 development environment.
  • Go to Tools > Options. the below mentioned screen will open –


  • Change the ‘Use Report Builder’ property to ‘Yes’. The default value will be ‘<No>’.
  • Press ‘Ok’.

Once this is done, NAV 2013 R2 will no longer look for Visual Studio 2012 / 2013 and will open the Report Builder 3.0 for designing the report layout.

Note: If you are interested in knowing the difference between designing the report in Visual Studio (Report Designer) and designing the report in Report Builder, you can check out the below url for more details  –

Designing Reports in Report Designer and Report Builder 3.0 (SSRS)

Enjoy Reading. I will come back with more topics on report designing soon. bye for now.

Quit, Break, SKIP, EXIT

One of my student asked the following question few days back and I just tried to answer them in simple language. You may already know those answer right.

“can u please tell me the diff. in quit/break/skip/exit in NAV & how to use it properly……..”

Just to answer your question –

1. Quit 

Quit can only be used in Report, Dataport or XMLport. (Like Currreport.quit). It quits (come out from) the report or dataport or XMLPORT. If some processing of data happened before the quit statement, all of those data manipulations will be reversed (rolled back).

2. Break

Break can be used in 2 places –

a. in any loop (repeat..until) – This statement will break the loop and come out of the loop without further processing. All the data manipulation before this statement will remain intact.

b. In a report or dataport or XMLport. This statement will take you out from any trigger (like on prereport, Onpresection etc)

3. SKIP 

SKIP is only used in Report / Dataport / XMLPORT. This statement skips the iteration of a dataitem.


EXIT normally used in functions / triggers to return a value. (say a function returns a numeric value –

Myfunction(integer A, Integer B) Integer—



Hope the above answer helps you. I will try to send a more detailed answer to you (with example) soon. Keep writing me your problems and ask ur freinds to send their problems to me too.

You can also send me a mail to

Navision – How to find out Square Root / Cube Root?

We all know how to raise a number to the power n. Use the powerful nummeric function ‘Power’.NewNumber := POWER(Number, Power);
So Power(4,2) will result in 16.But how to find out the roots (square, cuber or nth root)?

Simple use the same Power function – And just change the ‘Power’ parameter of the function.

So to find out the square root of say 16, use

Power(16,1/2); This will result in 4

to find out the Cube root of say 8, use

Power(16,1/3); This will result in 2.

to find out the nth root of any number just use –

NewNumber := Power(Number,1/n);

How to indent multiple lines of code in Navision

What to do if you need to indent several lines of Code (Just because youmade the changes in code lately) in any Navision Object? Will you do it manually one line at a time?
Don’t despair. There is a simple way to do it –
To indent several lines of code, select those several lines and press TAB. The code indents with two spaces to the right, every time that TAB is pressed.
To indent several lines of code to the left, select those lines, and press SHIFT+TAB. This indents the code with one space to the left, every time that SHIFT+TAB is pressed.
Block indentation enables developers to indent several lines of code in only three keystrokes (one for highlighting the code and two for pressing SHIFT and TAB.)

How to Send SMTP mail from Navision Application

2 Steps to use it –
1. Setup the SMTP mail in Navision.
2. Use the functions avaliable in Codeunit 400 (SMTP Mail)
1. Setup the SMTP mail in Navision:
Go to Administration> IT administration > General Setup > SMTP Setup. The following screen will open –
You need a SMTP server address (IP or link). I have used my office SMTP server. If your SMTP server permits anonymous mailing, you can choose authentication as ‘Anonymous’ where you don’t need to mention any user id and password.
If your SMTP Server does not allow anonymous mailing, you need to choose authentication as ‘Basic’ and need to mention one valid User id and Password.

2. Use the functions available in Codeunit 400 (SMTP Mail) :

Once the setup is done, you can start mailing using the functions available in SMTP mail codeunit.
a) Take a new form and take a command button on it. On clicking of that button the mail will be send (Just for the example)
b) Take a global variable ‘SMAIL’ of data type ‘Codeunit’ and subtype ‘SMTP mail’ codeunit. This will give you the access to the functions available in that codeunit.
c) Now the actual code. Write the following code on ‘On Push’ trigger of the command button
SMAIL.CreateMessage(‘Snehanshu’,’’,’’,’Warning – Inventory’, ‘Item 50005 has a inventory below minimum inventory level’,FALSE);
[Syntax for the Createmessage function – Createmessage([sender’s name] ,[sender’s id],[recipient’s id or ids],[subject] ,[body line] ,[html formatted or not]]
SMAIL.AddAttachment(‘d:Sales Invoice.xlsx’);
MESSAGE(‘mail send’);
That’s it. Now click on the command button, and the mail will be sent to the recipients.
1. There can be multiple recipients. Just put them as comma separated text in the recipient parameter.
2. You can add more body lines using ‘AppendBody’ function.
3. You can also mark a CC or BCC copy of the mail using ‘AddCC’ ‘AddBCC’ functions.
If you are not sure about the SMTP server, just search in google how to use, rediffmil, Gmail or Hotmail or any other mailing system as your smtp server.

Disabling F4 – Stopping inadvertent Delete

Can we disable the F4 function button in Navision?

Few years back, I had a situation in one of my implementation, where users used to delete the sales order inadvertently by pressing F4 (Their intention was to create a new order by pressing F3).

Now how to stop it. I had solved it in a very simple way by creating a new dummy menu item in one of the menu button present in the order window and assigning F4 as the shortcut key to that menu item. It just overridden the default F4 functionality (delete function). Here is how i did it –

Open the sales order form (Form 42) in design mode. Add a new menu item to the menu button ‘Order’ present in that form. Caption it as ‘Dummy’ and assign the shortcut key F4 to it.

Don’t write any code for this menu item. So nothing will happen if somebody clicks on it.
Now if somebody press F4, system calls that menu item ‘Dummy’ instead of default delete call and nothing happens for F4. And your default F4 is disabled.
Do you have a better solution? Do write to me.