AL, BC14, BC15, BC16, BC17, BC18, Business Central, C/AL, Cumulative Updates, Dynamics 365, End of Mainstream, Extension, Information, NAV 2015, NAV 2016, NAV 2017, NAV 2018, Navision, on-premises, Online, Updates, upgrade

Comparison of BUSINESS CENTRAL AND NAV

First released in 1987, acquired by Microsoft in 2002, now called Business Central, Dynamics NAV is one of Microsoft’s most prolific software packages. 

After Dynamics NAV 2018, Microsoft discontinued their popular, but on-premises only, ERP solution Dynamics NAV and replaced it with Dynamics 365 Business Central (BC-13). But what is the difference between the two systems, and why should your business make the switch? Let’s take a look at Business Central vs Dynamics NAV.

Microsoft Dynamics NAV was rebranded in 2018 to Microsoft Dynamics Business Central for on-premises and private cloud versions, and Microsoft Dynamics 365 Business Central for the cloud version.

At the time of writing this comparison, BC-21 is available in market.

Since 2018, Dynamics NAV is no longer available for purchase. The only businesses that can use the system are those that already held licenses. Even for those who do still hold licenses, the system no longer receives updates, meaning the software will quickly become outdated and harder to use.

Mainstream Support for Dynamics NAV versions from 2013 to 2017 has already ended, with the 2018 version losing support in January 2023. This deadline is fast approaching, so if you are currently using NAV 2018 you should begin to consider your optimal course of action going forward.

With very little time remaining before the end of Dynamics NAV Mainstream Support in January 2023, the sooner you decide on your course of action, the better.

Microsoft introduced Dynamics 365 Business Central. Business Central is a newer version of Dynamics NAV, offering the same standard functionality in a much more user-friendly way. It’s also SaaS (Software as a Service) meaning it’s accessible from anywhere, with the same security that drives Microsoft 365.

In addition to the functions carried over from Dynamics NAV, the Dynamics 365 Business Central system affords users with access to:

  • Integration with Microsoft 365 applications for increased productivity and streamlined data
  • Data connectivity and business intelligence through Microsoft Power Platform
  • Microsoft Azure architecture for cloud security, presence, and scale
  • Increased pool of third-party software integrations
  • Multiple deployment options for on-premises, private server, or cloud hosting

Microsoft Dynamics 365 Business Central helps with day-to-day business processes and operations. Its capabilities include financials, stock management, purchasing and much more, all with real-time data and analytics through Power BI.

Dynamics 365 Business Central is relevant for businesses adopting flexible, hybrid, or remote working models thanks to the scalable, cloud-based architecture and integration with Microsoft 365 and Power BI tools.

It is an all-in-one solution that can be adapted for many industries including software developers, IT services, financial services, healthcare, and educational institutions.

The system also has large user bases in manufacturing, distribution, ecommerce, and retail. 

Features and functions are still the same as back in the NAV days, just with a more digital-focused platform. But still differ from old days Dynamics NAV.

Most of the base code of Business Central has been adapted from NAV, and it has enhanced the rich functionality its predecessor offered, with options to deploy as an on-premises or a SaaS cloud solution.

The Dynamics 365 Business Central web client, including its sisters, the tablet and phone clients (by the way, there is no longer a Windows client) has had a makeover!

Features include new and varied fonts to highlight important information such as a headline banner on the Role Centre, a fabulous teal Role Centre with easy navigation, and interestingly capitalised field names on lists!

They are curiously small differences but really nice touches.

Design Tool it’s as good as it used to be! In fact, it’s a very smart design tool. As a ‘non-developer’ you can amend pages, add new fields and save the result as an extension.

When comparing Dynamics NAV to Business Central, you must be aware of the substantial functional upgrades and new capabilities of Dynamics 365 Business Central. Microsoft Dynamics 365 Business Central is an upgrade to Microsoft Dynamics NAV that offers several notable improvements.

You’ll see numerous benefits in your business, including agility, ability to scale quickly, mobility, lower cost of ownership, and more.

Microsoft Dynamics NAV and Microsoft Dynamics 365 Business Central have many similarities, but there are many differences too that make many users move from NAV to Business Central.

You can also choose to deploy Business Central as an on-premises solution if that is a better fit for your organization. However, you may then miss out on integration and cutting-edge features.

While the two systems are similar, there are key differences that make Business Central the preferred option for many businesses:

Business CentralDynamics Navision
 Dynamics 365 Business Central is a cloud-based ERP solution.  

With Dynamics 365 Business Central, you can access your data and applications anytime, anywhere, and on any device.  

D365 Business Central includes a comprehensive set of features and functionality.  

Business Central is licensed on a per-user basis.  

With Business Central, you only need to pay for the users who will be using the system.
Dynamics NAV is an on-premises ERP solution.  

Dynamics NAV requires some customization and third-party add-ons to achieve the same level of functionality.  

Dynamics NAV is licensed on a per-server basis.  

Dynamics NAV, you need to pay for the server regardless of how many users are accessing the system.
IntegrationFull (All Microsoft Products)Limited, Version Dependent 
Objects49,999 objects are free to use on cloudObjects need to be purchased for customizations 
Search Interface Advanced, with automatic categorization, smart search (search for misspellings or imprecise terms) Basic, possibility of data duplication 
Reporting Power BI Limited 
Deployment Cloud (No need to maintain servers and backups) although On-Premises option also available.On-Premises, Cost for Server maintenance and backup management.
USER INTERFACEWeb-based app
Improved design
Much easier to navigate.
More productive platform.
Desktop-based 
 Business Central interface uses AL language in the code.  

Offers more customization than before and helps to make extensions and upgrades much easier to manage in the long term.
Dynamics NAV using C/AL coding
 Better integration with other Microsoft products already used by many businesses, including all applications within the Microsoft Dynamics suite, like Microsoft Dynamics 365 Sales (CRM) and Office 365 products, such as Outlook and Excel. 
 Offers more automated operations to improve productivity.  

Native connectivity to Microsoft’s Power Platform (e.g., Power Automate) and powerful workflows and integrations can be created, by end-users without complex coding, sometimes almost no code.
 
HOSTINGBusiness Central is a SaaS solution – sitting on Microsoft’s Azure cloud, which enables you to specify the region where your data is stored and processed.  

There are many benefits to SaaS solutions,

*  Greater security
* Less risk of data loss and
* Better accessibility for your team.
* Cloud hosting also works alongside the new coding to make upgrades and extensions much easier to carry out.
Only On-Premises capability.

Need to invest in and manage your own in-house servers.
UPGRADESBi-annual release
Sequential upgrades,
Which happen automatically.
Your systems are always up to date.  

With the on-premises or private cloud version of Business Central, upgrades are not automatic but are still relatively simpler compared to NAV.  

Plus, any third-party apps or customizations you have are also designed to be compatible with each new Business Central update.
No Automatic Upgrades.
 Your business is always using the most optimised version of Business Central.Fuss and cost of manually updating the software.
 If you are apprehensive about an update, there is an option to delay its installation for up to 90 days.

However, it’s good idea to staying as up to date as possible. Updates are introduced to improve overall user experience and security.
Hotfixes & Cumulative updates to be handled on own cost.
 Business Central, the modifications are made using AL language that creates extensions – leaving the core system untouched and making upgrades a lot easier.NAV customization was written in C/AL language and was integral to the core system.

This meant upgrades were a major undertaking as the whole system needed to be reviewed and potentially redeveloped.
USER LICENSESDynamics 365 Business Central uses a monthly/annual subscription model and is available in either (‘Essentials’ or ‘Premium’).  

Charges per user, meaning fees are based on the number of simultaneous users each month.  

You also get an option to pay a perpetual license fee. That means you can now Business Central as an operational expense or a capital expense, whichever makes more sense for your business. It also moves from a concurrent user to a named user licensing model.
Perpetual with yearly AMC 16% in license cost.  

Dynamics NAV is available in Starter Pack & Extended Pack.
 Business Central users can also benefit from Single Sign On and usability across multiple devices, and across iOS, Android, and PC. 
 Remote working much easier, especially as the landscape of working life is becoming a blend of office-based and home working.  

Flexible and cost-effective for businesses.
 
 Now your staff can simply log into the web app from any device to get their job done. This makes the ERP solution much more cost-effective and flexible for your business. 

HOW TO TRANSITION TO BUSINESS CENTRAL

Many companies have been using Dynamics NAV for years, so Nav users may be a little wary about making the switch to Business Central. But with even more functionality than the NAV solution and with better usability, you won’t regret taking the first step.

While some Microsoft products, like Office 365, can be bought directly from Microsoft, this is not the case for Business Central. Due to the complexity of the product, Microsoft Business Central must be purchased through an approved Microsoft partner.

The Business Central trial takes a few minutes to load, and you can start using the app. 

Dynamics 365 Business Central Licensing

There are two main subscription licensing options:

  • Business Central Essentials
  • Business Central Premium.

To use this ERP software, you must license one of these plans. Both plans are licensed by user and are fast to implement as well as easy to configure. There’s also a ‘Team Members‘ licensing option to add on additional users.

The difference between a full user vs. an additional user:

A full user is someone who will be working heavily within Business Central on a daily basis. These will typically be your customer service employees, sales and marketing staff, finance employees, and supply chain managers.

An additional user or team member is a ‘light user’ or users who do not require the full capabilities of Business Central. For instance, they may need to view data reports, log their expenses or time, and other such activities.

Dynamics 365 Business Central Essentials

Microsoft Dynamics 365 Business Central Essentials consists of several modules that are considered essential for any business.

Modules included within Essentials:

  • Financial Management
  • Supply Chain Management
  • Customer Relationship Management
  • Project Management
  • Warehouse Management
  • Human Resources Management

Dynamics 365 Business Central Premium

The Premium license has everything in the Essentials license plus service management and manufacturing.

Modules included within Premium:

  • Service Management
  • Manufacturing
  • Financial Management
  • Supply Chain Management
  • Customer Relationship Management
  • Project Management
  • Warehouse Management
  • Human Resources Management

Business Central, Information, License, upgrade

Those planning for Upgrade – Some Important Information

As per the roadmap which Microsoft has published for Business Central, it shows that the Business Central product name will be continued for future. It means there will not be a Dynamics NAV 2019.

BC Road-map

Looking at your investment in terms of license and annual BREP, it is sense able to upgrade to Microsoft Dynamics 365 Business Central, whether your solution is deployed in Cloud or on-premises.

Don’t take me wrong I don’t mean to say that Microsoft Dynamics NAV and Dynamics 365 for finance and operations, Business edition are now obsolete.

Microsoft is not closing support to these products, it is still available to them. Only any new updates to these solutions we cannot expect any more.

One important note: New customers will still be able to purchase Microsoft Dynamics NAV 2018 till 31st March 2019. Same concept of concurrent user license with starter/extended pack.

From 1st April new customers will not be able to license NAV 2018, but existing NAV customers using the solution can still be able to purchase additional licenses as per their requirements if any.

If you missed earlier post do check this Link also.

 

What had changed in license model for Dynamics 365 Business Central

 

One change that a major one is now no more Concurrent licenses, new license purchased will be for named user.

One user one license, however named user will be able to access the application from multiple devices.

As earlier starter & extended pack was available now it will be Essentials and Premium.

Stander version of Business Central is termed as Essentials while with additional modules Service and Manufacturing is termed as Premium.

When comes to licensing you are not allowed to mix and match essentials & premium licenses, it should be from either of them.

Where is Limited user? Don’t worry it have been taken care as Team Member License. Read access throughout the application and write access to maximum of three tables excluding General Ledger entries.

License can be purchased as Perpetual or Subscription basis.

Licenses for Business Central differ from Dynamics NAV licenses in several ways:

  • Dynamics NAV licenses are calculated from concurrent users, where multiple users can share a license. Business Central licenses, on the other hand, are calculated from named users
  • With Business Central it is no longer necessary to have a Starter Pack. As a minimum, you need a Premium or Essentials user
  • It is only possible to have either Premium or Essentials users in your license. You can purchase Teams Members for both Premium and Essentials licenses.

 

What deployment options are available?

  1. Perpetual License – On premises
  2. Perpetual License – Cloud
  3. Subscription License – On premises
  4. Subscription License – Cloud
  5. Software As A Service (SaaS)

 

When you can upgrade to Microsoft Dynamics Business Central?

 

Microsoft Dynamics 365 Business Central is now generally available worldwide for cloud, and on-premises deployments. However you can check if it is available for your country from your local partners.

Local Functionality in Dynamics 365 Business Central

You can go-ahead with upgrade planning whenever you want too. Just get in touch with your current ERP provider.

For free lancing upgrade/development tasks you can contact us too at KSD Consultancy Private Limited. We are taking new project booking till 31st March on our old price, could be fixed or hour basis, which ever suitable to you. You can save lot from your local partners cost.

 

What’s on offer for existing customers?

 

Customers up-to-date with their BREP can upgrade to Dynamics 365 Business Central on-premises using LMT Upgrade.

Due to change in licensing model in Business Central. Below you can see exchange rate from perpetual NAV concurrent license to Business Central named user licenses.

If you have purchased your Dynamics NAV with Perpetual Licencing before October 1, 2018, your current NAV licenses will be converted from:

  • One Full User in Extended Pack to two Premium users
  • One Full user to two Essentials users
  • One Limited user to one Team Member

In addition to the converting of licenses, the licensing setup is different. As mentioned, Dynamics NAV licenses are calculated from concurrent users, where multiple users can share a number of licenses. Business Central licenses, on the other hand, are calculated from named users. The total value of your current licenses will remain the same – even after the conversion.

For more details on Licensing please refer here, make sure you always check with latest version of documents or discuss with your partner for current effective offers.

Dynamics 365 Business Central on-premises Upgrade Policy​

Dynamics 365 Business Central on-premises Licensing Guide

Similar to Dynamics NAV, the functionality of the D365 Business Central is divided into two ‘packages’, Essentials and Premium. The functionality of ‘Essentials’ corresponds to NAV’s ‘Starter Pack’ and the functionality of ‘Premium’ corresponds to NAV’s ‘Extended Pack’

Brief idea as below:

D365 Business Central Essentials /
Dynamics NAV Starter Pack
D365 Business Central Premium /
Dynamics NAV Extended

Financial Management

General Ledger
Cash Management
Fixed Assets
Currencies
Consolidation

Financial Management Extended

Inter-Company (Essentials)
Cost Accounting (Essentials)

Supply Chain Management

Sales Order processing
Purchase and procurement
Item management
Locations
Basic Warehousing

Supply Chain Management
Extended

Advanced Warehousing (Essentials)

Jobs and Resources

Job Planning, Budgets and Invoicing
Resource allocations
Timesheets

 

Contact

Management Contacts
Campaigns
Opportunity Management
D365 Sales Integration

Service Management

Service Contracts
Service Items
Service Order Management

Assembly

Assembly Bill of Materials

Manufacturing

Production BOMs
Works order management
Capacity and Demand planning

It will be always advised to verify before you make up your mind. However you can trust to Microsoft links provided in above post.

 

AL, C/AL, Development Tips, Extension Package, Information, Modern Development Tool, NAV 2016, NAV 2017, NAV 2018, PowerShell, Tip & Tricks, upgrade, V1, V2, Visual Studio Code

Future of Navision is extensions V2?

With the release of Dynamics 365 Business Central a successor of Dynamics NAV, things are going to change. If I am not wrong from year 2020 Modern Development Environment will be the only platform available to developers.

In every NAV upgrades biggest challenge was customizations, since objects are fully accessible to developers, so we customize the solution as we want as a developer spreading unstructured, difficult to maintain, customized code everywhere and in all objects.

The beauty of product is, it is totally customizable and adaptable to customer’s business. Customizing Navision is easy and quick to deploy. C/AL is easy to learn and code.

Due to these heavy customizations and unstructured codes upgrade to new version of the product required long time and efforts. Hard to merge, too much efforts leading to high cost, usually many customer prefer to stay with their current version, and miss new capabilities of product available in future versions of Navision.

With release of NAV 2016 concept of extension was introduced. This introduced the concept of writing code isolated from the core objects and use events to interact with the standard codes. Now create the extension that can be installed or uninstalled any time without affecting the original base layer of the product. We call it extension V1.

These were also developed using C/AL and deployed using PowerShell. But still it always felt like something is missing. Then last year Microsoft came up with release NAV 2018 which introduced second generation of extension, we call it extensions V2.

This introduced completely new development platform based on Visual Studio Code Modern Development Environment. It uses new AL language an evolution of C/AL. Now this will be the future.

Dynamics 365 Business Central platform (on-premise and SaaS) uses this development model. Probably this will be the only development platform available from year 2020.

In Business central base application is now an entire extension based with some system objects in CSIDE, In future release you may not have any more side by side development, you will only be having AL and extensions.

 

So what next?

 

  • We should now concentrate on learning VS Code and AL as in future this will be the only way to modify the application.
  • Now we need to make our self-familiar with the Web Client as Windows Client will be obsolete soon.
  • We should start moving our all customization to extensions.
  • Now we should start thinking in direction of AL type customization rather than old C/AL type coding practice.

 

What do you think?

I will come up with more details as progress in this direction. Till then keep learning and sharing with others.

 

 

 

Cumulative Updates, Development Tips, Functional Tips, How To, Information, Instalation & Configuration, NAV 2015, NAV 2016, NAV 2017, NAV 2018, Tip & Tricks, Updates, upgrade, What's New

Cumulative Update for Microsoft Dynamics NAV 2015/2016/2017/2018 Released in Oct 2018

Cumulative Update 48 for Microsoft Dynamics NAV 2015 (Build 50638)

This cumulative update includes all hotfixes and regulatory features that have been released for Microsoft Dynamics NAV 2015, including hotfixes and regulatory features that were released in previous cumulative updates.

Note You must convert the database if you are upgrading to this cumulative update from a cumulative update earlier than cumulative update 9 (build 41779). For more information, see Converting a Database in Help for Microsoft Dynamics NAV.

This cumulative update replaces previously released cumulative updates. You should always install the latest cumulative update.

It may be necessary to update your license after implementing this hotfix to gain access to new objects included in this or a previous cumulative update (this only applies to customer licenses).

For a list of cumulative updates released for Microsoft Dynamics NAV 2015, see released cumulative updates for Microsoft Dynamics NAV 2015. Cumulative updates are intended for new and existing customers who are running Microsoft Dynamics NAV 2015.

How to obtain the Microsoft Dynamics NAV update files

This update is available for manual download and installation from the Microsoft Download Center.

Download Cumulative update CU 48 for Microsoft Dynamics NAV 2015

How to install a Microsoft Dynamics NAV 2015 cumulative update

See How to install a Microsoft Dynamics NAV 2015 Cumulative Update.

Prerequisites

You must have Microsoft Dynamics NAV 2015 installed to apply this hotfix.

Cumulative Update 36 for Microsoft Dynamics NAV 2016 (Build 50637)

This cumulative update includes all hotfixes and regulatory features that have been released for Microsoft Dynamics NAV 2016, including hotfixes and regulatory features that were released in previous cumulative updates.

This cumulative update replaces previously released cumulative updates. You should always install the latest cumulative update.

It may be necessary to update your license after implementing this hotfix to gain access to new objects included in this or a previous cumulative update (this only applies to customer licenses).

For a list of cumulative updates released for Microsoft Dynamics NAV 2016, see released cumulative updates for Microsoft Dynamics NAV 2016. Cumulative updates are intended for new and existing customers who are running Microsoft Dynamics NAV 2016.

How to obtain the Microsoft Dynamics NAV update files

This update is available for manual download and installation from the Microsoft Download Center.

Download Cumulative update CU 36 for Microsoft Dynamics NAV 2016

How to install a Microsoft Dynamics NAV 2016 cumulative update

See How to install a Microsoft Dynamics NAV 2016 cumulative update.

Prerequisites

You must have Microsoft Dynamics NAV 2016 installed to apply this hotfix.

 

Cumulative Update 23 for Microsoft Dynamics NAV 2017 (Build 24745)

This cumulative update includes all hotfixes and regulatory features that have been released for Microsoft Dynamics NAV 2017, including hotfixes and regulatory features that were released in previous cumulative updates.

This cumulative update replaces previously released cumulative updates. You should always install the latest cumulative update.

It may be necessary to update your license after implementing this hotfix to gain access to new objects included in this or a previous cumulative update (this only applies to customer licenses).

For a list of cumulative updates released for Microsoft Dynamics NAV 2017, see released cumulative updates for Microsoft Dynamics NAV 2017. Cumulative updates are intended for new and existing customers who are running Microsoft Dynamics NAV 2017.

How to obtain the Microsoft Dynamics NAV update files

This update is available for manual download and installation from the Microsoft Download Center.

Download Cumulative update CU 23 for Microsoft Dynamics NAV 2017

How to install a Microsoft Dynamics NAV 2017 cumulative update

See How to install a Microsoft Dynamics NAV 2017 cumulative update.

Prerequisites

You must have Microsoft Dynamics NAV 2017 installed to apply this hotfix.

 

Cumulative Update 10 for Microsoft Dynamics NAV 2018 (Build 24742)

This cumulative update includes all hotfixes and regulatory features that have been released for Microsoft Dynamics NAV 2018, including hotfixes and regulatory features that were released in previous cumulative updates.

This cumulative update replaces previously released cumulative updates. You should always install the latest cumulative update.

It may be necessary to update your license after implementing this hotfix to gain access to new objects included in this or a previous cumulative update (this only applies to customer licenses).

For a list of cumulative updates released for Microsoft Dynamics NAV 2018, see released cumulative updates for Microsoft Dynamics NAV 2018. Cumulative updates are intended for new and existing customers who are running Microsoft Dynamics NAV 2018.

How to obtain the Microsoft Dynamics NAV update files

This update is available for manual download and installation from the Microsoft Download Center.

Download Cumulative update CU 10 for Microsoft Dynamics NAV 2018

How to install a Microsoft Dynamics NAV 2018 cumulative update

See How to install a Microsoft Dynamics NAV 2018 cumulative update.

Prerequisites

You must have Microsoft Dynamics NAV 2018 installed to apply this hotfix.

Development Tips, Information, NAV 2017, NAV 2018, Tip & Tricks, upgrade, Virtual, What's New

Comparison of NAV 2018 W1 Objects with NAV 2017 W1 Objects – What’s Difference

With the release of NAV 2018, first thing that comes to mind is how much objects are changed from previous version. To check this I have performed small comparison straight forward on NAV 2017 W1 and NAV 2018 W1 database objects.

I have used power shell commands for quick comparison.

Here we go->

  • To compare two sets of application objects
  • Open the Microsoft Dynamics NAV Development Shell in administrator mode.
  • Navigate to the location of your folders by typing a command such as the following:

UpgradeStep-1

In this example, the DEMOUPGRADE folder contains five folders: ORIGINAL, MODIFIED, TARGET, DELTA, and RESULT. The DELTA and RESULT folders are empty. The ORIGINAL, MODIFIED, and TARGET folders contains one or more text files that contain application objects. You can now run the cmdlet. In my case Original = NAV 2017 W1 and Modified = NAV 2018 W1objects.

  • To run the cmdlet to compare all application objects in the ORIGINAL folder to the application objects in the MODIFIED folder, type the following command:

Compare-NAVApplicationObject -OriginalPath .\ORIGINAL -ModifiedPath .\MODIFIED -DeltaPath .\DELTA

UpgradeStep-2

UpgradeStep-2-3

This generates a number of DELTA files that describe the difference between ORIGINAL and MODIFIED. You can open the DELTA files in text editors such as Notepad.

The following example illustrates how a DELTA file identifies the difference between ORIGINAL and MODIFIED.

UpgradeStep-3

You can identify those differences in DELTA folder.

UpgradeStep-4

However on top level review I found there is major change in properties, changes in field size and new codes additions.

Out of which 1014 objects have minor changes like insert, modify or deletion of simple properties or one line code etc.

  • Virtual Table Changes after 2017:

Table 2000000142 Query Metadata
Table 2000000174 New Page Pattern
Table 2000000178 All Profile
Table 2000000192 Page Control Field
Table 2000000193 Api Web Service

New Additions in 2018

Deletion from 2017 in 2018

  • List of Virtual Tables in NAV 2018, are new additions and rest is common from 2017

Table 2000000001 Object
Table 2000000007 Date
Table 2000000009 Session
Table 2000000020 Drive
Table 2000000022 File
Table 2000000026 Integer
Table 2000000028 Table Information
Table 2000000029 System Object
Table 2000000038 AllObj
Table 2000000039 Printer
Table 2000000040 License Information
Table 2000000041 Field
Table 2000000043 License Permission
Table 2000000044 Permission Range
Table 2000000045 Windows Language
Table 2000000048 Database
Table 2000000049 Code Coverage
Table 2000000055 SID – Account ID
Table 2000000058 AllObjWithCaption
Table 2000000063 Key
Table 2000000101 Debugger Call Stack
Table 2000000102 Debugger Variable
Table 2000000103 Debugger Watch Value
Table 2000000135 Table Synch. Setup
Table 2000000136 Table Metadata
Table 2000000137 CodeUnit Metadata
Table 2000000138 Page Metadata
Table 2000000139 Report Metadata
Table 2000000140 Event Subscription
Table 2000000141 Table Relations Metadata
Table 2000000142 Query Metadata
Table 2000000154 Database Locks
Table 2000000164 Time Zone
Table 2000000167 Aggregate Permission Set
Table 2000000171 Page Table Field
Table 2000000172 Table Field Types
Table 2000000173 Finish Design Save Mode
Table 2000000178 All Profile
Table 2000000192 Page Control Field
Table 2000000193 Api Web Service
  • List of New Objects in NAV 2018

Type No. Name
Table 11 Country/Region Translation
Table 52 Batch Processing Parameter
Table 53 Batch Processing Parameter Map
Table 63 Account Use Buffer
Table 138 Unlinked Attachment
Table 143 ECSL VAT Report Line Relation
Table 247 Intrastat Setup
Table 248 VAT Reg. No. Srv Config
Table 316 Tax Area Translation
Table 327 Tax Jurisdiction Translation
Table 355 Dimension Set ID Filter Line
Table 362 ECSL VAT Report Line
Table 466 Payment Method Translation
Table 467 Workflow Webhook Entry
Table 468 Workflow Webhook Notification
Table 469 Workflow Webhook Subscription
Table 483 Change Global Dim. Log Entry
Table 730 Standard Address
Table 742 VAT Statement Report Line
Table 746 VAT Reports Configuration
Table 747 VAT Report Archive
Table 749 Date Lookup Buffer
Table 832 Workflows Entries Buffer
Table 880 Excel Template Storage
Table 1170 User Task
Table 1236 JSON Buffer
Table 1314 User Tours
Table 1315 Purch. Price Line Disc. Buff.
Table 1432 Net Promoter Score Setup
Table 1433 Net Promoter Score
Table 1470 Product Video Buffer
Table 1471 Product Video Category
Table 1519 Notification Context
Table 1531 Workflow Step Argument Archive
Table 1542 Workflow Webhook Sub Buffer
Table 1543 Flow Service Configuration
Table 1544 Flow User Environment Buffer
Table 1545 Flow User Environment Config
Table 1637 Office Suggested Line Item
Table 1670 Option Lookup Buffer
Table 1797 Data Migration Error
Table 1798 Data Migration Parameters
Table 1799 Data Migration Status
Table 1808 Aggregated Assisted Setup
Table 1827 Business Unit Setup
Table 1828 Business Unit Information
Table 1829 Consolidation Account
Table 1875 Business Setup
Table 1876 Business Setup Icon
Table 1877 VAT Setup Posting Groups
Table 1878 VAT Assisted Setup Templates
Table 1879 VAT Assisted Setup Bus. Grp.
Table 2020 Image Analysis Setup
Table 2101 O365 Item Basket Entry
Table 2107 O365 Customer
Table 2112 O365 Field Excel Mapping
Table 2113 O365 Cust. Invoice Discount
Table 2114 O365 HTML Template
Table 2115 O365 Coupon Claim
Table 2116 O365 Coupon Claim Doc. Link
Table 2117 O365 Posted Coupon Claim
Table 2119 O365 Payment Service Logo
Table 2121 O365 Brand Color
Table 2122 O365 Social Network
Table 2132 O365 Settings Menu
Table 2152 O365 Country/Region
Table 2153 O365 Payment Terms
Table 2154 O365 Payment Method
Table 2158 O365 Document Sent History
Table 2160 Calendar Event
Table 2161 Calendar Event User Config.
Table 2162 O365 C2Graph Event Settings
Table 2163 O365 Sales Event
Table 2190 O365 Sales Graph
Table 2200 O365 Sales Invoice Document
Table 2822 Native – Export Invoices
Table 2831 Native – Payment
Table 2840 Native – Gen. Settings Buffer
Table 2850 Native – API Tax Setup
Table 5113 Contact Dupl. Details Buffer
Table 5152 Integration Record Archive
Table 5221 Employee Posting Group
Table 5222 Employee Ledger Entry
Table 5223 Detailed Employee Ledger Entry
Table 5224 Payable Employee Ledger Entry
Table 5225 Employee Payment Buffer
Table 5373 CRM Full Synch. Review Line
Table 5377 Ext Txt ID Integration Record
Table 5450 Graph Contact
Table 5451 Graph Integration Record
Table 5452 Graph Integration Rec. Archive
Table 5455 Graph Subscription
Table 5456 Graph Business Profile
Table 5466 API Entities Setup
Table 5475 Sales Invoice Entity Aggregate
Table 5476 Sales Invoice Line Aggregate
Table 5477 Purch. Inv. Entity Aggregate
Table 5478 Purch. Inv. Line Aggregate
Table 5479 Journal Lines Entity Setup
Table 5480 Tax Group Buffer
Table 5481 Account Entity Setup
Table 5487 Balance Sheet Buffer
Table 5488 Trial Balance Entity Buffer
Table 5489 Dimension Set Entry Buffer
Table 5495 Sales Order Entity Buffer
Table 5499 Aged Report Entity
Table 5502 Tax Rate Buffer
Table 5503 Acc. Schedule Line Entity
Table 5504 Tax Area Buffer
Table 5505 Sales Quote Entity Buffer
Table 5507 Sales Cr. Memo Entity Buffer
Table 5509 Attachment Entity Buffer
Table 6304 Power BI User Configuration
Table 6305 Power BI Chart Buffer
Table 7800 MS-Event Emitter Event Codes
Table 7820 MS-QBO Customer
Table 7821 MS-QBO Item
Table 7822 MS-QBO Invoice
Table 7823 MS-QBO Modified Field List
Table 7824 MS-QBO Setup
Table 7825 MS-QBO Synchronization Error
Table 7826 MS-QBO Start Sync. Service
Table 7827 MS-QBO Failed Syncs
Table 7828 MS-QBO Sync Buffer
Table 7860 MS- PayPal Standard Account
Table 7861 MS- PayPal Standard Template
Table 7862 MS- PayPal Transaction
Table 7880 MS-QBD Setup
Table 8450 Field Buffer
Table 8620 Config. Tmpl. Selection Rules
Table 9090 Autocomplete Address
Table 9091 Postcode Service Config
Table 9160 TempStack
Table 9510 Email Parameter
Table 130415 Semi-Manual Test Wizard
Table 130416 Semi-Manual Execution Log
Table 2000000081 Upgrade Blob Storage
Table 2000000082 Report Layout
Table 2000000176 NAV App Resource
Table 2000000177 Tenant Profile
Table 2000000179 OData Edm Type
Table 2000000182 Media Resources
Table 2000000186 Profile Page Metadata
Table 2000000187 Tenant Profile Page Metadata
Table 2000000188 User Page Metadata
Report 323 ECSL Report Request Page
Report 394 Suggest Employee Payments
Report 399 Remittance Advice – Journal
Report 400 Remittance Advice – Entries
Report 742 VAT Report Request Page
Report 1170 User Task Utility
Report 1302 Standard Sales – Pro Forma Inv
Report 1826 Consolidation – Test
Report 2500 Day Book VAT Entry
Report 2501 Day Book Cust. Ledger Entry
Report 2502 Day Book Vendor Ledger Entry
Report 5085 Contact Cover Sheet
Report 9200 Void/Transmit Elec. Pmnts
Codeunit 48 PostingSetupManagement
Codeunit 52 BOM-BOM Component
Codeunit 112 Empl. Entry-SetAppl.ID
Codeunit 114 Empl. Entry-Edit
Codeunit 140 EC Sales List Suggest Lines
Codeunit 143 ECSL Report Validate
Codeunit 224 EmplEntry-Apply Posted Entries
Codeunit 325 Update Currency Factor
Codeunit 351 Intrastat Document Completion
Codeunit 456 Job Queue Management
Codeunit 483 Change Global Dimensions
Codeunit 484 Block Table Ops Subscriber
Codeunit 576 Run Template Balance Sheet
Codeunit 577 Run Template Income Stmt.
Codeunit 578 Run Template CashFlow Stmt.
Codeunit 579 Run Template Retained Earn.
Codeunit 580 Run Template Trial Balance
Codeunit 581 Run Template Aged Acc. Pay.
Codeunit 582 Run Template Aged Acc. Rec.
Codeunit 703 Find Record Management
Codeunit 704 MemoryStream Wrapper
Codeunit 745 VAT Report Suggest Lines
Codeunit 790 IC Inbox Outbox Subscribers
Codeunit 882 OCR – Sync Master Data
Codeunit 883 OCR Master Data Mgt.
Codeunit 884 ReadSoft OCR Master Data Sync
Codeunit 1060 Paypal Account Proxy
Codeunit 1061 QBO Sync Proxy
Codeunit 1062 QBD Sync Proxy
Codeunit 1344 Acct. WebServices Mgt.
Codeunit 1345 Product Videos Activities Mgt.
Codeunit 1347 User Task Activities Mgt.
Codeunit 1350 Telemetry Management
Codeunit 1351 Telemetry Subscribers
Codeunit 1352 Create Telemetry Cal. Events
Codeunit 1353 Generate Master Data Telemetry
Codeunit 1354 Generate Activity Telemetry
Codeunit 1355 G/L Post. Inconsistent Telem.
Codeunit 1370 Batch Post Parameter Types
Codeunit 1371 Sales Batch Post Mgt.
Codeunit 1372 Purchase Batch Post Mgt.
Codeunit 1373 Batch Posting Print Mgt.
Codeunit 1380 Batch Processing Mgt.
Codeunit 1390 Document Notifications
Codeunit 1432 Net Promoter Score Mgt.
Codeunit 1508 Notification Lifecycle Handler
Codeunit 1511 Notification Lifecycle Mgt.
Codeunit 1540 Workflow Webhook Setup
Codeunit 1541 Workflow Webhook Events
Codeunit 1542 Workflow Webhook Responses
Codeunit 1543 Workflow Webhook Management
Codeunit 1544 Workflow Webhook Subscription
Codeunit 1545 Workflow Webhook Notification
Codeunit 1546 Workflow Webhook Notify Task
Codeunit 1547 Workflow Webhook Sub Delete
Codeunit 1639 Office Line Generation
Codeunit 1797 Data Migration Facade Helper
Codeunit 1798 Data Migration Mgt.
Codeunit 1799 Import Config. Package File
Codeunit 1813 Assisted Setup Management
Codeunit 1815 Progress Dialog
Codeunit 1875 Business Setup Management
Codeunit 2002 Cortana Tracing
Codeunit 2020 Image Analysis Management
Codeunit 2021 Image Analysis Result
Codeunit 2103 O365 Sales Cancel Invoice
Codeunit 2104 O365 Send + Resend Invoice
Codeunit 2107 O365 Sales Management
Codeunit 2112 O365 Sales Attachment Mgt
Codeunit 2114 O365 HTML Templ. Mgt.
Codeunit 2115 Display Coupons
Codeunit 2116 Coupons Management
Codeunit 2117 Coupons Sync
Codeunit 2130 O365 Excel Import Management
Codeunit 2135 O365 Setup Email
Codeunit 2142 O365 Template Management
Codeunit 2151 O365 Sales Email Management
Codeunit 2155 O365 Discounts
Codeunit 2158 O365 Document Send Mgt
Codeunit 2160 Calendar Event Mangement
Codeunit 2161 Calendar Event Execution
Codeunit 2162 O365 Sales Invoice Events
Codeunit 2163 O365 Sales Quote Events
Codeunit 2190 O365 Sales Web Service
Codeunit 2201 Webhooks Adapter Mgt.
Codeunit 2310 O365 Sales Invoice Mgmt
Codeunit 2502 Extension License Mgmt
Codeunit 2800 Native – Setup APIs
Codeunit 2801 Native – EDM Types
Codeunit 2815 Native – Coupons
Codeunit 2820 Native – Attachments
Codeunit 2822 Native – Reports
Codeunit 2831 Native – Payments
Codeunit 2850 Native API – Language Handler
Codeunit 5066 Rlshp. Msgt. Comm. Line Subs
Codeunit 5067 Interaction Mgt.
Codeunit 5344 CRM Product Name
Codeunit 5347 Integration Rec. Delete Invoke
Codeunit 5349 Auto Create Sales Orders
Codeunit 5351 CRM Customer-Contact Link
Codeunit 5377 Webhook Management
Codeunit 5440 Business Profile Sync. Runner
Codeunit 5441 Graph Sync. – Business Profile
Codeunit 5442 Graph Int – Business Profile
Codeunit 5445 Graph Delta Sync
Codeunit 5446 Graph Webhook Sync To NAV
Codeunit 5450 Graph Subscription Management
Codeunit 5451 Graph Integration Table Sync
Codeunit 5452 Graph Sync. Runner
Codeunit 5453 Graph Sync. Runner – OnModify
Codeunit 5454 Graph Sync. Runner – OnDelete
Codeunit 5455 Graph Data Setup
Codeunit 5456 Graph Connection Setup
Codeunit 5457 Graph Sync. – Contact
Codeunit 5458 Graph Collection Mgt – Contact
Codeunit 5459 JSON Management
Codeunit 5460 Graph Int. – Contact Addresses
Codeunit 5461 Graph Int. – Contact
Codeunit 5462 Graph Int. – Questionnaire
Codeunit 5465 Graph Mgt – General Tools
Codeunit 5466 Graph Mgt – In. Services Setup
Codeunit 5468 Graph Mgt – Complex Types
Codeunit 5469 Library API – General Journal
Codeunit 5470 Graph Collection Mgt – Item
Codeunit 5471 Graph Mgt – Customer
Codeunit 5472 Graph Mgt – Vendor
Codeunit 5473 Graph Mgt – Company Info.
Codeunit 5474 Graph Mgt – Sales Header
Codeunit 5475 Graph Mgt – Sales Invoice
Codeunit 5476 Graph Mgt – Sales Inv. Lines
Codeunit 5477 Sales Invoice Aggregator
Codeunit 5478 Graph Mgt – Journal Lines
Codeunit 5479 Graph Mgt – Customer Payments
Codeunit 5480 Graph Mgt – Account
Codeunit 5481 Graph Mgt – Tax Group
Codeunit 5482 Graph Mgt – Journal
Codeunit 5483 Graph Mgt – Employee
Codeunit 5485 Graph Mgt – Currency
Codeunit 5486 Graph Mgt – Payment Method
Codeunit 5487 Graph Mgt – Dimension
Codeunit 5488 Graph Mgt – Reports
Codeunit 5490 Graph Mgt – Payment Terms
Codeunit 5491 Graph Mgt – Shipment Method
Codeunit 5492 Graph Mgt – Item Category
Codeunit 5494 Graph Mgt – Country/Region
Codeunit 5495 Graph Mgt – Sales Order
Codeunit 5496 Graph Mgt – Sales Order Buffer
Codeunit 5497 Graph Mgt – Doc. Sent History
Codeunit 5498 Graph Mgt – Unit Of Measure
Codeunit 5499 Graph Mgt – Purchase Header
Codeunit 5502 Graph Mgt – Unlinked Att.
Codeunit 5503 Graph Mgt – Attachment Buffer
Codeunit 5504 Graph Mgt – Tax Area
Codeunit 5505 Graph Mgt – Sales Quote
Codeunit 5506 Graph Mgt – Sales Quote Buffer
Codeunit 5507 Graph Mgt – Sales Credit Memo
Codeunit 5508 Graph Mgt – Sal. Cr. Memo Buf.
Codeunit 5509 Graph Mgt – Inc Doc Attachment
Codeunit 5527 Graph Mgt – Purchase Invoice
Codeunit 5528 Graph Mgt – Purch. Inv. Lines
Codeunit 5529 Purch. Inv. Aggregator
Codeunit 6100 Data Migration Facade
Codeunit 6101 Data Migration Status Facade
Codeunit 6110 GL Acc. Data Migration Facade
Codeunit 6111 Vendor Data Migration Facade
Codeunit 6112 Customer Data Migration Facade
Codeunit 6113 Item Data Migration Facade
Codeunit 6114 Ex. Rate Data Migration Facade
Codeunit 6305 Set Power BI User Config
Codeunit 6306 PBI Aged Acc. Calc
Codeunit 6307 PBI Aged Inventory Calc.
Codeunit 6308 PBI Job Chart Calc.
Codeunit 6309 PBI Sales Pipeline Chart Calc.
Codeunit 6310 PBI Top Opportunities Calc.
Codeunit 6400 Flow Service Management
Codeunit 6711 OData Action Management
Codeunit 6723 Server Config. Setting Handler
Codeunit 6724 Booking Appointment – Modify
Codeunit 7326 Whse. Item Tracking FEFO
Codeunit 7820 MS-QBO Table Mgt.
Codeunit 8622 Config. Insert With Validation
Codeunit 8623 Create D365 RapidStart Package
Codeunit 8624 Setup Company Name
Codeunit 8625 Setup Item Costing Method
Codeunit 9003 Team Member Action Manager
Codeunit 9004 User Grp. Perm. Subscribers
Codeunit 9005 Environment Mgt.
Codeunit 9033 Invite External Accountant
Codeunit 9090 Postcode Service Manager
Codeunit 9755 Media Resources Mgt.
Codeunit 9802 Logon Management
XMLport 5801 Export Item Data
Page 63 Applied Employee Entries
Page 148 Customer Posting Group Card
Page 149 Vendor Posting Group Card
Page 199 Unlinked Attachments
Page 234 Apply Employee Entries
Page 248 VAT Registration Config
Page 321 ECSL Report
Page 322 ECSL Report Subform
Page 323 EC Sales List Reports
Page 328 Intrastat Setup
Page 481 Dimension Set ID Filter
Page 577 Change Global Dimensions
Page 578 Change Global Dim. Log Entries
Page 621 IC Setup
Page 625 Unapply Employee Entries
Page 670 Concurrent Session List
Page 739 VAT Report Log
Page 742 VAT Report Statement Subform
Page 746 VAT Reports Configuration
Page 749 Date Lookup
Page 830 Workflow Webhook Entries
Page 831 Workflow Webhook Subscriptions
Page 832 Approvals
Page 1156 Company Detail
Page 1157 Client Detail Cash Flow Chart
Page 1158 Cash Account Balances
Page 1159 Purchase Documents
Page 1160 Sales Documents
Page 1161 Purchase Documents Due Today
Page 1162 Purchase Invoice Due Next Week
Page 1163 Sales Invoices Due Next Week
Page 1164 User Task List Part
Page 1170 User Task List
Page 1171 User Task Card
Page 1172 User Task Recurrence
Page 1313 Dynamics CRM Admin Credentials
Page 1314 AccountantPortal Activity Cues
Page 1315 Accountant Portal Finance Cues
Page 1316 Accountant Portal User Tasks
Page 1320 ExcelTemplateCompanyInfo
Page 1328 Purch. Order From Sales Order
Page 1330 Update Address
Page 1339 EU VAT Registration No Check
Page 1346 Purchases Price and Line Disc.
Page 1394 Trial Balance Setup
Page 1432 Net Promoter Score Setup
Page 1433 Net Promoter Score
Page 1470 Product Videos
Page 1561 Pick Report
Page 1637 Office Suggested Line Items
Page 1670 Option Lookup List
Page 1797 Data Migration Error
Page 1798 Data Migration About
Page 1799 Data Migration Overview
Page 1826 Company Consolidation Wizard
Page 1827 Business Units Setup Subform
Page 1875 Business Setup
Page 1876 Integration Services Setup
Page 1877 VAT Setup Wizard
Page 1878 VAT Bus. Post. Grp Part
Page 1879 VAT Product Posting Grp Part
Page 1880 VAT Assisted Setup Template
Page 1881 Sandbox Environment
Page 2020 Image Analysis Setup
Page 2120 O365 Sales Doc. Attachments
Page 2121 O365 Posted Sales Inv. Att.
Page 2122 O365 Incoming Doc. Attch. List
Page 2123 O365 Incoming Doc. Att. Pict.
Page 2124 O365 Item Basket Part
Page 2125 O365 Payment History Card
Page 2130 O365 Business Info Settings
Page 2131 O365 Learn Settings
Page 2132 O365 Invoice Send Settings
Page 2133 O365 Tax Payments Settings
Page 2134 O365 Import Export Settings
Page 2135 O365 Email Account Settings
Page 2136 O365 Help Feedback Settings
Page 2137 O365 Bank Information Settings
Page 2138 O365 Payments Settings
Page 2139 O365 Language Settings
Page 2140 O365 Sync with Microsoft Apps
Page 2141 O365 Sales Quote
Page 2142 O365 First Invoice Wizard
Page 2143 O365 VAT Product Posting Gr.
Page 2145 O365 VAT Posting Setup Card
Page 2146 O365 VAT Posting Setup List
Page 2147 O365 Service Configuration
Page 2148 O365 Address
Page 2149 O365 Email CC/BCC Card
Page 2150 O365 Sales Email Dialog
Page 2151 O365 Tax Area List
Page 2152 O365 Country/Region List
Page 2153 O365 Payment Terms List
Page 2154 O365 Payment Method List
Page 2155 O365 Sales Invoice Discount
Page 2156 O365 Cust. Invoice Discount
Page 2157 O365 Sales Invoice Line Card
Page 2158 O365 Brand Colors
Page 2159 O365 Email Preview
Page 2160 O365 Sales Graph
Page 2162 O365 Social Networks
Page 2165 O365 Coupon
Page 2166 O365 Coupon List
Page 2179 O365 Contact Lookup
Page 2180 O365 Import from Excel Wizard
Page 2181 O365 Excel Sheet Data SubPage
Page 2182 O365 Excel Columns
Page 2183 O365 Sales Invoice Line Dummy
Page 2190 O365 Invoicing Sales Doc. List
Page 2191 O365 Invoicing Settings
Page 2193 O365 Sales Hist.Sell-toFactBox
Page 2194 O365 Units of Measure
Page 2195 O365 Country/Region Card
Page 2196 O365 Link to Financials
Page 2197 O365 Email Setup Wizard
Page 2200 Sales Invoice Document API
Page 2201 Sales Invoice Reminder API
Page 2304 BC O365 Posted Sale Inv. Lines
Page 2310 BC O365 Sales Invoice
Page 2311 BC O365 Sales Inv. Line Subp.
Page 2313 BCO365 Posted Sales Invoice
Page 2314 BC O365 Item List
Page 2315 BC O365 Settings
Page 2316 BC O365 Customer List
Page 2317 BC O365 Item Card
Page 2318 BC O365 Sales Customer Card
Page 2322 BC O365 Inc. Doc. Attch. List
Page 2328 BC O365 Email Settings Part
Page 2329 BC O365 Email Settings
Page 2330 BC O365 Business Info Settings
Page 2335 BC O365 Email Account Settings
Page 2338 BC O365 Payments Settings
Page 2341 BC O365 Sales Quote
Page 2345 BC O365 PayPal Std. Settings
Page 2346 BC O365 VAT Posting Setup List
Page 2347 BC O365 Service Settings
Page 2352 BC O365 Country/Region List
Page 2365 BC O365 Coupon
Page 2366 BC O365 Coupon List
Page 2375 BC O365 Quickbooks Settings
Page 2376 BC O365 Sync with MS Apps
Page 2379 BC O365 Contact Lookup
Page 2397 BC O365 Email Setup Wizard
Page 2800 Native – KPIs Entity
Page 2801 Native – Customer Entity
Page 2802 Native – Item Entity
Page 2803 Native – Contact
Page 2810 Native – Sales Inv. Entity
Page 2812 Native – Sales Quotes
Page 2815 Native – Coupons
Page 2820 Native – Attachments
Page 2821 Native – PDFs
Page 2822 Native – Export Invoices
Page 2823 Native – Email Preview
Page 2824 Native – Test Mail
Page 2831 Native – Payments
Page 2840 Native – General Setting
Page 2841 Native – SMTP Mail Setup
Page 2842 Native – Email Setting
Page 2843 Native – Sync Services Setting
Page 2844 Native – QBO Sync Auth
Page 2850 Native – Tax Area
Page 2852 Native – Tax Group Entity
Page 2860 Native – Units of Measure
Page 2861 Native – Payment Terms
Page 2862 Native – Payment Methods
Page 2863 Native Country/Regions Entity
Page 2865 Native – Sales Tax Setup
Page 2866 Native – VAT Setup
Page 2870 Native – Languages
Page 2876 Native – Tax Rates
Page 5192 Contact Duplicate Details
Page 5224 Employee Posting Groups
Page 5237 Employee Ledger Entries
Page 5238 Detailed Empl. Ledger Entries
Page 5239 Empl. Ledger Entries Preview
Page 5240 Detailed Empl. Entries Preview
Page 5331 CRM Full Synch. Review
Page 5333 CRM Skipped Records
Page 5469 API Setup
Page 5470 Item Entity
Page 5471 Customer Entity
Page 5472 Vendor Entity
Page 5473 Company Information Entity
Page 5475 Sales Invoice Entity
Page 5476 Sales Invoice Line Entity
Page 5477 Customer Paym. Journal Entity
Page 5478 Journal Lines Entity
Page 5479 Customer Payments Entity
Page 5480 Account Entity
Page 5481 Tax Group Entity
Page 5482 Journal Entity
Page 5483 Employee Entity
Page 5484 G/L Entry Entity
Page 5485 Currencies Entity
Page 5486 Payment Methods Entity
Page 5487 Dimensions Entity
Page 5488 Dimension Values Entity
Page 5489 Dimension Lines Entity
Page 5490 Payment Terms Entity
Page 5491 Shipment Method Entity
Page 5492 Item Categories Entity
Page 5493 Cash Flow Statement Entity
Page 5494 Country/Regions Entity
Page 5495 Sales Order Entity
Page 5496 Sales Order Line Entity
Page 5497 Retained Earnings Entity
Page 5498 Units of Measure Entity
Page 5499 Aged AR Entity
Page 5500 Aged AP Entity
Page 5501 Balance Sheet Entity
Page 5502 Trial Balance Entity
Page 5503 Income Statement Entity
Page 5504 Tax Area Entity
Page 5505 Sales Quote Entity
Page 5506 Sales Quote Line Entity
Page 5507 Sales Credit Memo Entity
Page 5508 Sales Credit Memo Line Entity
Page 5527 Purchase Invoice Entity
Page 5528 Purchase Invoice Line Entity
Page 5831 Inventory Posting Setup Card
Page 6306 Power BI Report FactBox
Page 6307 PBI Aged Acc. Payable
Page 6308 PBI Aged Acc. Receivable
Page 6309 PBI Aged Inventory Chart
Page 6310 PBI Job Act. v. Budg. Price
Page 6311 PBI Job Profitability
Page 6312 PBI Job Act. v. Budg. Cost
Page 6313 PBI WorkDate Calc.
Page 6314 PBI Sales Pipeline
Page 6315 PBI Top 5 Opportunities
Page 6316 Content Pack Setup Wizard
Page 6317 Content Pack Setup Part
Page 6400 Flow Template Selector
Page 6401 Flow Selector
Page 6402 Sales Document Entity
Page 6403 Sales Document Line Entity
Page 6404 Purchase Document Entity
Page 6405 Purchase Document Line Entity
Page 6406 Gen. Journal Batch Entity
Page 6407 Gen. Journal Line Entity
Page 6408 Workflow – Customer Entity
Page 6409 Workflow – Item Entity
Page 6410 Workflow – Vendor Entity
Page 6415 Flow Service Configuration
Page 6416 Flow User Env. Selection
Page 6713 OData Fields Export
Page 6725 OData EDM Definitions
Page 6726 OData EDM Definition Card
Page 8637 Config. Package Subform Saas
Page 9031 O365 Invoicing RC
Page 9033 Invite External Accountant
Page 9043 Team Member Activities No Msgs
Page 9077 O365 Invoicing Activities
Page 9078 User Tasks Activities
Page 9140 Postcode Select Address
Page 9628 Available Table Selection List
Page 9629 Available Field Selection Page
Page 9630 Page Fields Selection List
Page 130415 Semi-Manual Test Wizard
Page 130416 Get Semi-Manual Test Codeunits
Query 50 Power BI Customer List
Query 51 Power BI Vendor List
Query 52 Power BI Item Purchase List
Query 53 Power BI GL Amount List
Query 54 Power BI Jobs List
Query 55 Power BI Sales List
Query 56 Power BI Purchase List
Query 57 Power BI Item Sales List
Query 58 Power BI GL Budgeted Amount
Query 59 Power BI Top Cust. Overview
Query 60 Power BI Sales Hdr. Cust.
Query 61 Power BI Cust. Item Ledg. Ent.
Query 62 Power BI Cust. Ledger Entries
Query 63 Power BI Vendor Ledger Entries
Query 64 Power BI Purchase Hdr. Vendor
Query 65 Power BI Vend. Item Ledg. Ent.
Query 106 Segment Lines
Query 134 OCR Vendors
Query 135 OCR Vendor Bank Accounts
Query 141 EU VAT Entries
Query 260 Dimension Set Entries
Query 261 G/L Entries
Query 262 Cust. Ledger Entries
Query 263 Vendor Ledger Entries
Query 264 Bank Account Ledger Entries
Query 265 Item Ledger Entries
Query 266 Value Entries
Query 267 FA Ledger Entries
Query 268 Job Ledger Entries
Query 269 Res. Ledger Entries
Query 270 G/L Budget Entries
Query 472 Failed Job Queue Entry
Query 1470 Product Videos with Category
Query 5480 Customer Sales Entity
Query 5481 Vendor Purchases Entity
Query 5502 Tax Groups For Tax Areas
Query 7301 Whse. Employees at Locations

 

I will come with more details as I proceed on same.

Corfu Navision 2016, Development Tips, Dimension, How To, Information, Instalation & Configuration, upgrade

Design Overview of Dimension handling in Navision 2016

Hold on,

Way of handling Dimension have changed from Navision 2009 not a new concept. Till now everyone is aware of this technical change, but still to keep handy reference today I decided to share the same with community, which can help for new comers in this industry.

Detailed technical insight into the concepts and principles that are used to redesign the dimension entry storing and posting feature in Microsoft Dynamics NAV 2016. Helpful when upgrading from earlier version to 2009.

Dimension Sets

A dimension set is a unique combination of dimension values. It is stored as dimension set entries in the database. Each dimension set entry represents a single dimension value.

The dimension set is identified by a common dimension set ID that is assigned to each dimension set entry that belongs to the dimension set.

Dimension Set Entries

Dimension sets are stored in the Dimension Set Entry table as dimension set entries with the same dimension set ID.

When you add, edit and close the Edit Dimension Set Entries window, a check is performed to see whether the combination of dimension values exists as a dimension set in the table.

If the combination occurs in the table, then the corresponding dimension set ID is assigned to the journal line, document header, or document line.

Otherwise, a new dimension set is added to the table, and the new dimension set ID is assigned to the journal line, document header, or document line.
Performance Improvement
By storing dimension sets once in the database, database space is preserved, and overall performance is improved.

Searching for Dimension Combinations

Building Search Tree
Table 481 Dimension Set Tree Node is used when Microsoft Dynamics NAV evaluates whether a set of dimensions already exists in table 480 Dimension Set Entry table.

The evaluation is performed by recursively traversing the search tree starting at the top level numbered 0.

The top level 0 represents a dimension set with no dimension set entries. The children of this dimension set represent dimension sets with only one dimension set entry.

The children of these dimension sets represent dimension sets with two children, and so on.

Finding Dimension Set ID

At a conceptual level, Parent ID, Dimension, and Dimension Value, in the search tree, are combined and used as the primary key because Microsoft Dynamics NAV traverses the tree in the same order as the dimension entries.

The GET function (record) is used to search for dimension set ID.

DimSet.”Parent ID” := 0;  // ‘root’

IF UserDim.FINDSET THEN

REPEAT

DimSet.GET(DimSet.”Parent ID”,UserDim.DimCode,UserDim.DimValueCode);

UNTIL UserDim.NEXT = 0;

EXIT(DimSet.ID);

However, to preserve the ability of Microsoft Dynamics NAV to rename a dimension and dimension value, table 348 Dimension Value is extended with an integer field of Dimension Value ID.

This table converts the field pair Dimension and Dimension Value to an integer value.

When you rename the dimension and dimension value, the integer value is not changed.

DimSet.”Parent ID” := 0;  // ‘root’IF UserDim.FINDSET THEN  REPEAT      DimSet.GET(DimSet.ParentID,UserDim.”Dimension Value ID”);  UNTIL UserDim.NEXT = 0;EXIT(DimSet.ID);

Table Structure

New Tables

Three new tables have been designed to manage dimension set entries.

Table 480 Dimension Set Entry
Table 480 Dimension Set Entry is a new table. You cannot change this table. After data has been written to the table, you cannot delete or edit it.

Deleting data requires that you check against all occurrences of the dimension set ID in the entire database, including partner solutions.

Field No. Field Name Data Type Comment
1 ID Integer >0.0 is reserved for the empty dimension set. References field 3 in table 481.
2 Dimension Code Code 20 Table relation to table 348.
3 Dimension Value Code Code 20 Table relation to table 349.
4 Dimension Value ID Integer References field 12 in table 349. It is the secondary key that is used when traversing table 481.
5 Dimension Name Text 30 CalcField. Lookup to table 348.
6 Dimension Value Name Text 30 CalcField. Lookup to table 349.

Table 481 Dimension Set Tree Node

Table 481 Dimension Set Tree Node is a new table. You cannot change this table.

It is used to search for a dimension set. If the dimension set is not found, a new set is created.

Field No. Field Name Data Type Comment
1 Parent Dimension Set ID Integer 0 for top level node.
2 Dimension Value ID Integer Table relation to field 12 in table 349.
3 Dimension Set ID Integer AutoIncrement. Used in field 1 in table 480.
4 In Use Boolean False if not in use.

Table 482 Reclas. Dimension Set Buffer
Table 482 Reclas. Dimension Set Buffer is a new table.

The table is used to edit a dimension set ID.

It is required when you edit a dimension value code and a new dimension value code, for example, in the Item Reclas. Journal table.

Field No. Field Name Data Type Comment
1 Dimension Code Code 20 Table relation to table 348.
2 Dimension Value Code Code 20 Table relation to table 349.
3 Dimension Value ID Integer References field 12 in table 349.
4 New Dimension Value Code Code 20 Table relation to table 349.
5 New Dimension Value ID Integer References field 12 in table 349.
6 Dimension Name Text 30 CalcField. Lookup to table 348.
7 Dimension Value Name Text 30 CalcField. Lookup to table 349.
8 New Dimension Value Name Text 30 CalcField. Lookup to table 349.

Modified Tables
All transaction and budget tables have been modified to manage dimension set entries.

Changes to Transaction and Budget Tables
A new field has been added to all transaction and budget tables.

Field No. Field Name Data Type Comment
480 Dimension Set ID Integer References field 1 in table 480.

Changes to Table 83 Item Journal Line
Two new fields have been added to table 83 Item Journal Line.

Field No. Field Name Data Type Comment
480 Dimension Set ID Integer References field 1 in table 480.
481 New Dimension Set ID Integer References field 1 in table 480.

Changes to Table 349 Dimension Value
A new field has been added to table 349 Dimension Value.

Field No. Field Name Data Type Comment
12 Dimension Value ID Integer AutoIncrement. Used for references in table 480 and table 481.

Tables That Get New Field 480 Dimension Set ID
A new field, 480 Dimension Set ID, has been added to the following tables.

For the tables that store posted data, the field only provides a non-editable display of dimensions, which is marked as Drill-down.

For the tables that store working documents, the field is editable. The buffer tables that are used internally do not need editable or non-editable capabilities.

The 480 field is non-editable in the following tables

Table No. Table Name
17 G/L Entry
21 Cust. Ledger Entry
25 Vendor Ledger Entry
32 Item Ledger Entry
110 Sales Shipment Header
111 Sales Shipment Line
112 Sales Invoice Header
113 Sales Invoice Line
114 Sales Cr.Memo Header
115 Sales Cr.Memo Line
120 Purch. Rcpt. Header
121 Purch. Rcpt. Line
122 Purch. Inv. Header
123 Purch. Inv. Line
124 Purch. Cr. Memo Hdr.
125 Purch. Cr. Memo Line
169 Job Ledger Entry
203 Res. Ledger Entry
271 Bank Account Ledger Entry
281 Phys. Inventory Ledger Entry
297 Issued Reminder Header
304 Issued Fin. Charge Memo Header
5107 Sales Header Archive
5108 Sales Line Archive
5109 Purchase Header Archive
5110 Purchase Line Archive
5601 FA Ledger Entry
5625 Maintenance Ledger Entry
5629 Ins. Coverage Ledger Entry
5744 Transfer Shipment Header
5745 Transfer Shipment Line
5746 Transfer Receipt Header
5747 Transfer Receipt Line
5802 Value Entry
5832 Capacity Ledger Entry
5907 Service Ledger Entry
5908 Service Header
5933 Service Order Posting Buffer
5970 Filed Service Contract Header
5990 Service Shipment Header
5991 Service Shipment Line
5992 Service Invoice Header
5993 Service Invoice Line
5994 Service Cr. Memo Header
5995 Service Cr. Memo Line
6650 Return Shipment Header
6651 Return Shipment Line
6660 Return Receipt Header
6661 Return Receipt Line

The 480 field is editable in the following tables

Table No. Table Name
36 Sales Header
37 Sales Line
38 Purchase Header
39 Purchase Line
81 Gen. Journal Line
83 Item Journal Line
89 BOM Journal Line
96 G/L Budget Entry
207 Res. Journal Line
210 Job Journal Line
221 Gen. Jnl. Allocation
246 Requisition Line
295 Reminder Header
302 Finance Charge Memo Header
5405 Production Order
5406 Prod. Order Line
5407 Prod. Order Component
5615 FA Allocation
5621 FA Journal Line
5635 Insurance Journal Line
5740 Transfer Header
5741 Transfer Line
5900 Service Header
5901 Service Item Line
5902 Service Line
5965 Service Contract Header
5997 Standard Service Line
7134 Item Budget Entry
99000829 Planning Component

The 480 field has been added to the following buffer tables.

Table No. Table Name
49 Invoice Post. Buffer
212 Job Posting Buffer
372 Payment Buffer
382 CV Ledger Entry Buffer
461 Prepayment Inv. Line Buffer
5637 FA G/L Posting Buffer
7136 Item Budget Buffer

Codeunit 408 Dimension Management
Codeunit 408 Dimension Management is a function library that handles common tasks that are related to dimensions, such as copying from one table to another or from one document to another.

Many functions are deleted because there is no need for copying between dimension tables at the other hand many functions are modified.

Modified Functions

Function Name Modification Description
CheckDimSetIDComb New function that substitutes the other check functions and takes a Dimension Set ID as an argument instead of a dimension table.
CheckDimSetIDComb

CheckDocDimComb

CheckServContractDimComb

CheckDimBuffer

CheckDimComb

CheckDimValueComb

Delete. All usage should be changed to CheckDimSetIDComb.
GetDefaultDim Modify to return an integer Dimension Set ID instead of a set of records.
CopyJnlLineDimToICJnlDim

CopyICJnlDimToJnlLineDim

CopyDocDimtoICDocDim

CopyICDocDimtoICDocDim

Modify to work with DimSetID -> ICJnlLineDim

Deleted Functions

Functions that are deleted from codeunit 408 in connection with the Dimension Set Entries feature are listed below.

During the upgrade of application code from Microsoft Dynamics NAV 2009 or earlier versions to Microsoft Dynamics NAV 2016, the following functions are not available in Microsoft Dynamics NAV 2016.

If you have customizations that use one or more of the functions, you must upgrade that code accordingly.

InsertJnlLineDim

UpdateJnlLineDefaultDim

GetJnlLineDefaultDim

GetPreviousDocDefaultDim

GetPreviousProdDocDefaultDim

InsertDocDim

UpdateDocDefaultDim

ExtractDocDefaultDim

InsertProdDocDim

UpdateProdDocDefaultDim

InsertServContractDim

UpdateServcontractDim

UpdateDefaultDimNewDimValue

GetDocDim

GetProdDocDim

TypeToTableID1

TypeToTableID2

TypeToTableID3

TypeToTableID4

TypeToTableID5

DeleteJnlLineDim

DeleteDocDim

DeletePostedDocDim

DeleteProdDocDim

DeleteServContractDim

ShowJnlLineDim

SaveJnlLineDim

ShowJnlLineNewDim

SaveJnlLineNewDim

ShowDocDim

SaveDocDim

ShowProdDocDim

SaveProdDocDim

ShowTempDim

SaveTempDim

ShowTempNewDim

SaveTempNewDim

SaveServContractDim

MoveJnlLineDimToLedgEntryDim

MoveDocDimToPostedDocDim

MoveOneDocDimToPostedDocDim

MoveLedgEntryDimToJnlLineDim

MoveDimBufToJnlLineDim

MoveDimBufToLedgEntryDim

MoveDimBufToPostedDocDim

MoveDimBufToGLBudgetDim

CopyJnlLineDimToJnlLineDim

CopyLedgEntryDimToJnlLineDim

CopyDocDimToDocDim

CopyPostedDocDimToPostedDocDim

CopyDocDimToJnlLineDim

CopyDimBufToJnlLineDim

CopyDimBufToDocDim

CopySCDimToDocDim

MoveDocDimToLedgEntryDim

MoveDocDimToDocDim

MoveDocDimArchvToDocDim

MoveLedgEntryDimToDocDim

MoveProdDocDimToProdDocDim

MoveJnlLineDimToProdDocDim

MoveJnlLineDimToDocDim

MoveJnlLineDimToJnlLineDim

CopyLedgEntryDimToLedgEntryDim

MoveTempFromDimToTempToDim

TransferTempToDimToDocDim

MoveJnlLineDimToBuf

CopyICJnlDimToICJnlDim

TestDimValue

TestNewDimValue

MoveDimBufToItemBudgetDim. (Delete because the ItemBudgetDim Table is deleted.

GetServContractDim

MoveTempDimToBuf

UpdateSCInvLineDim

CopyJnlLineDimToBuffer

UpdateDocDefaultDim2

Code Examples of Changed Patterns in Modifications

Posting a Journal Line

Key changes are listed as follows:

  • Journal line dimension tables are removed.
  • A dimension set ID is created in the Dimension Set ID field.

Old Code

ResJnlLine.”Qty. per Unit of Measure” :=  SalesLine.”Qty. per Unit of Measure”;

TempJnlLineDim.DELETEALL;

TempDocDim.RESET;

TempDocDim.SETRANGE( “Table ID”,DATABASE::”Sales Line”);

TempDocDim.SETRANGE( “Line No.”,SalesLine.”Line No.”);

DimMgt.CopyDocDimToJnlLineDim( TempDocDim,TempJnlLineDim);

ResJnlPostLine.RunWithCheck( ResJnlLine,TempJnlLineDim);

New Code

ResJnlLine.”Qty. per Unit of Measure” := SalesLine.”Qty. per Unit of Measure”;

ResJnlLine.”Dimension Set ID” := SalesLine.” Dimension Set ID “;

ResJnlPostLine.Run(ResJnlLine);
Posting a Document
When you post a document in Microsoft Dynamics NAV 2016, you no longer have to copy the document dimensions.

Old Code

DimMgt.MoveOneDocDimToPostedDocDim(

TempDocDim,DATABASE::”Sales Line”,

“Document Type”,

“No.”,

SalesShptLine.”Line No.”,

DATABASE::”Sales Shipment Line”,

SalesShptHeader.”No.”);

New Code

SalesShptLine.”Dimension Set ID”  := SalesLine.”Dimension Set ID”
Editing Dimensions from a Document
You can edit dimensions from a document. For example, you can edit a sales order line.

Old Code

Table 37, function ShowDimensions:

TESTFIELD(“Document No.”);

TESTFIELD(“Line No.”);

DocDim.SETRANGE(“Table ID”,DATABASE::”Sales Line”);

DocDim.SETRANGE(“Document Type”,”Document Type”);

DocDim.SETRANGE(“Document No.”,”Document No.”);

DocDim.SETRANGE(“Line No.”,”Line No.”);

DocDimensions.SETTABLEVIEW(DocDim);

DocDimensions.RUNMODAL;

New Code

Table 37, function ShowDimensions:

“Dimension ID” := DimSetEntry.EditDimensionSet( “Dimension ID”);
Showing Dimensions from Posted Entries
You can show dimensions from posted entries, such as sales shipment lines.

Old Code

Table 111, function ShowDimensions:

TESTFIELD(“No.”);

TESTFIELD(“Line No.”);

PostedDocDim.SETRANGE(“Table ID”,DATABASE::”Sales Shipment Line”);

PostedDocDim.SETRANGE(“Document No.”,”Document No.”);

PostedDocDim.SETRANGE(“Line No.”,”Line No.”);

PostedDocDimensions.SETTABLEVIEW(PostedDocDim);

PostedDocDimensions.RUNMODAL;

New Code

Table 111, function ShowDimensions:

DimSetEntry.ShowDimensionSet(“Dimension ID”);
Getting Default Dimensions for a Document
You can get default dimensions for a document, such as a sales order line.

Old Code

Table 37, function CreateDim()

SourceCodeSetup.GET;

TableID[1] := Type1;

No[1] := No1;

TableID[2] := Type2;

No[2] := No2;

TableID[3] := Type3;

No[3] := No3;

“Shortcut Dimension 1 Code” := ”;

“Shortcut Dimension 2 Code” := ”;

DimMgt.GetPreviousDocDefaultDim( DATABASE::”Sales Header”,”Document Type”,

“Document No.”,0, DATABASE::Customer, “Shortcut Dimension 1 Code”,

“Shortcut Dimension 2 Code”);

DimMgt.GetDefaultDim(TableID,No,SourceCodeSetup.Sales,

“Shortcut Dimension 1 Code”, “Shortcut Dimension 2 Code”);

IF “Line No.” <> 0 THEN

DimMgt.UpdateDocDefaultDim( DATABASE::”Sales Line”,”Document Type”,

“Document No.”,”Line No.”, “Shortcut Dimension 1 Code”, “Shortcut Dimension 2 Code”);

New Code

Table 37, function CreateDim()

SourceCodeSetup.GET;

TableID[1] := Type1;

No[1] := No1;

TableID[2] := Type2;

No[2] := No2;

TableID[3] := Type3;

No[3] := No3;

“Shortcut Dimension 1 Code” := ”;

“Shortcut Dimension 2 Code” := ”;

GetSalesHeader;

“Dimension ID” :=  DimMgt.GetDefaultDimID(

TableID,No,SourceCodeSetup.Sales, “Shortcut Dimension 1 Code”,

“Shortcut Dimension 2 Code”, SalesHeader.”Dimension ID”, DATABASE::”Sales Header”);

Corfu Navision 2016, Data, Development Tips, How To, Information, Instalation & Configuration, PowerShell, upgrade

Few Helpful PowerShell Commands which you can use for Upgrade Process in Navision 2016 – Part 2

You can use Windows PowerShell scripts to upgrade the latest version of Microsoft Dynamics NAV. Microsoft Dynamics NAV 2016 provides sample scripts that you can adapt for your deployment architecture.

Automating the Upgrade Process

When you upgrade to Microsoft Dynamics NAV 2016, you must first upgrade the application code, and then you upgrade the data.

In my earlier post I have explained this using PowerShell commands, you can find the link here: Helpful PowerShell Commands which you can use for Upgrade Process in Navision 2016

By using Windows PowerShell, you can automate both parts of the upgrade process. Also, you can use the same scripts to test each step in your upgrade process before you upgrade production databases.

You can combine this automated upgrade with a migration to multitenancy this makes maintenance easier for you.

The Sample Scripts for Code Upgrade

Microsoft Dynamics NAV includes sample scripts that illustrate how you can use Windows PowerShell cmdlets to upgrade your application to the latest version of Microsoft Dynamics NAV.

The sample scripts are located in the ApplicationMergeUtilities folder under the WindowsPowerShellScripts folder on the Microsoft Dynamics NAV product media.

However you can follow above post link steps explanation to get it done.

The Sample Scripts for Data Upgrade

Microsoft Dynamics NAV includes sample scripts that illustrate how you can automate the upgrade of data to the latest version of Microsoft Dynamics NAV.

The sample scripts are located in the Upgrade folder under the WindowsPowerShellScripts folder on the Microsoft Dynamics NAV product media. You can run the sample script using a partner license or a customer license.
PowerShell-3

To learn and follow MS suggested steps you can find details using this link. Automating the Upgrade Process using Windows PowerShell Scripts in Microsoft Dynamics NAV 2016

To run the sample script for the data upgrade of a Microsoft Dynamics NAV database, you must have a Microsoft Dynamics NAV 2013, Microsoft Dynamics NAV 2013 R2, or Microsoft Dynamics NAV 2015 database that is available on a SQL Server instance and is ready to be upgraded.

Here I present my version derived from above Steps:

To continue we will do some setup. Copy the Upgrade folder from above path and save as DataUpgradePSKit.

PowerShell-4

Create Folder OriginalScript and move the PS1 file on root to this folder although we don’t require for this exercise but you can safe copy for your reference. (Example, Set-PartnerSettings, Set-PowerShellEnvironment)

Create Backup folder, script will use to store backup of the database previous to start Upgrade process.

Create Upgrade Folder and place these files:

  • License File
  • New Merged Objects fob
  • Upgrade Toolkit / or your own prepared Upgrade Codeunits

PowerShell-5

  • Create ProcessLogs Folder, which will be used for recording log of Shell Script.

Here is the script which we will be using to perform our Data Upgrade process:

You can find this script here http://1drv.ms/1NyolVV or you can download from Menu of my Blog using Link Shared Files.

 

# Added below parameter values globally for ease of maintenance

# You just do correction on values here (as per your environment) and will be in effect for rest of below script

# No need to scan and change every occurrence for same value in different steps of the script.

# Select this section and Execute first so that these Variables value are available for rest of the script.

Import-Module ‘C:\Program Files\Microsoft Dynamics NAV\90\Service\NavAdminTool.ps1’

$NAVUpgrade_NAVServerInstance = “UpgradedDBfrom2013R2”

$NAVUpgrade_NAVServerServiceAccount = “NT AUTHORITY\NETWORK SERVICE”

$NAVUpgrade_FinSqlExeFile = “C:\Program Files (x86)\Microsoft Dynamics NAV\90\RoleTailored Client\finsql.exe”

$NAVUpgrade_IDEModulePath = “”

$NAVUpgrade_DatabaseServer = “INDEL-AXT5283VM”

$NAVUpgrade_DatabaseInstance = “”

$NAVUpgrade_DatabaseName = “Demo Database NAV (7-1)”

$NAVUpgrade_DatabaseToUpgradeBakFile = “C:\UserData\DataUpgradePSKit\Backup\DynamicsNAV70_BeforeUpgrade.bak”

$NAVUpgrade_NewVersionObjectsFobFilePath = “C:\UserData\DataUpgradePSKit\Upgrade\NewObjects.fob”

$NAVUpgrade_UpgradeToolkitObjectsFobFilePath = “C:\UserData\DataUpgradePSKit\Upgrade\Upgrade710900.FOB”

$NAVUpgrade_UpgradeObjectsFilter = “Version List=UPGTK9.00.00”

$NAVUpgrade_UpgradeLogsDirectory = “C:\UserData\DataUpgradePSKit\Upgrade\ProcessLogs”

#$NAVUpgrade_RapidStartPackageFile = ‘C:\UserData\DataUpgradePSKit\Upgrade\PackageSTCODES.rapidstart’

$NAVUpgrade_CurrentVersionLicenseFile = “C:\UserData\DataUpgradePSKit\Upgrade\DevLicense.flf”

$NAVUpgrade_PreviousVersionLicenseFilePath = “C:\UserData\DataUpgradePSKit\Upgrade\DevLicense.flf”

 

# Upgrade Steps:

Import-Module (Join-Path (Get-Location) ‘Cmdlets\NAVUpgradeCmdlets.psm1’) -DisableNameChecking

#1. Prepares the Windows PowerShell session by importing the required modules.

        # Import the NAV IDE Module.

Import-NAVIdeModule -IDEModuleSuggestedPath $NAVUpgrade_IDEModulePath -FinSqlExeFile $NAVUpgrade_FinSqlExeFile

Import-NAVManagementModule

Import-SqlPsModule

 

#2. Saves the current license from the Microsoft Dynamics NAV 2013, Microsoft Dynamics NAV 2013 R2, or Microsoft Dynamics NAV 2015 database.

# Backup current license from the application part of the database (table ‘$ndo$dbproperty’) , if it exists

        Export-NAVLicenseFromApplicationDatabase `

-DatabaseName $NAVUpgrade_DatabaseName `

-DatabaseServer $NAVUpgrade_DatabaseServer `

-DatabaseInstance $NAVUpgrade_DatabaseInstance `

-LicenseFilePath $NAVUpgrade_PreviousVersionLicenseFilePath

 

#3. Creates a backup of the Microsoft Dynamics NAV 2013, Microsoft Dynamics NAV 2013 R2, or Microsoft Dynamics NAV 2015 database, and then converts the database to Microsoft Dynamics NAV 2016.

        Backup-NAVSqlDatabase `

-DatabaseServer $NAVUpgrade_DatabaseServer `

-DatabaseInstance $NAVUpgrade_DatabaseInstance `

-DatabaseName $NAVUpgrade_DatabaseName `

-DatabaseBackupFilePath $NAVUpgrade_DatabaseToUpgradeBakFile

$NAVUpgrade_DatabaseSQLServerInstance = Get-SqlServerInstance -DatabaseServer $NAVUpgrade_DatabaseServer -DatabaseInstance $NAVUpgrade_DatabaseInstance

$NavServerInfo = New-Object PSObject

Add-Member -InputObject $NavServerInfo -MemberType NoteProperty -Name NavServerName -Value “$NAVUpgrade_DatabaseServer”

Add-Member -InputObject $NavServerInfo -MemberType NoteProperty -Name NavServerInstance -Value (Get-NAVServerConfigurationValue  -ServerInstance $NAVUpgrade_NAVServerInstance -ConfigKeyName “ServerInstance”)

Add-Member -InputObject $NavServerInfo -MemberType NoteProperty -Name NavServerManagementPort -Value (Get-NAVServerConfigurationValue -ServerInstance $NAVUpgrade_NAVServerInstance -ConfigKeyName “ManagementServicesPort”)

 

# Perform technical upgrade of the NAV database

        Invoke-NAVDatabaseConversion `

-DatabaseName $NAVUpgrade_DatabaseName `

-DatabaseServer $NAVUpgrade_DatabaseSQLServerInstance `

-LogPath $NAVUpgrade_UpgradeLogsDirectory\”Database Conversion”

 

#4. Connects the Microsoft Dynamics NAV 2016 Server instance to the converted database, imports the Microsoft Dynamics NAV 2016 license file, and then synchronizes the table schema.

 

# Connect the NAV Server to the NAV database

        Connect-NAVServerToNAVDatabase  `

-NAVServerInstance $NAVUpgrade_NAVServerInstance `

-NAVServerServiceAccount $NAVUpgrade_NAVServerServiceAccount `

-DatabaseServer $NAVUpgrade_DatabaseServer `

-DatabaseInstance $NAVUpgrade_DatabaseInstance `

-DatabaseName $NAVUpgrade_DatabaseName

# Import the new version license into the application database, and restart the server in order for the license to be loaded

        Import-NAVServerLicense -ServerInstance $NAVUpgrade_NAVServerInstance -LicenseFile $NAVUpgrade_CurrentVersionLicenseFile -Database NavDatabase

Set-NAVServerInstance -ServerInstance $NAVUpgrade_NAVServerInstance -Restart

# Synchronize the NAV database

        Sync-NAVTenant -ServerInstance $NAVUpgrade_NAVServerInstance -Mode Sync -Force

 

#5. Imports the application objects and upgrade toolkit objects from the specified .fob file, and then synchronizes the table schema again.

#   This updates the SQL Server database based on the new table schema that is defined by the imported application objects. Data that must be mapped to another table is saved in upgrade tables.

# Delete the tables from the previous version, using SynchronizeSchemaChanges Later.

# The new  objects we import will contain the new version of the tables.

        Delete-NAVApplicationObject `

-DatabaseName $NAVUpgrade_DatabaseName `

-DatabaseServer $NAVUpgrade_DatabaseSQLServerInstance `

-LogPath $NAVUpgrade_UpgradeLogsDirectory `

-Filter “Type=Table;ID=<2000000000” `

-SynchronizeSchemaChanges “No” `

-NavServerName $NavServerInfo.NavServerName `

-NavServerInstance $NAVServerInfo.NavServerInstance `

-NavServerManagementPort $NavServerInfo.NavServerManagementPort `

-Confirm:$false

# Import all the new objects and the upgrade objects, by delaying the schema synchronization

# If an $UpgradeToolkitObjects value has not been provided, then

#  the assumption is that the upgrade toolkit is within the same .FOB as the new objects

           if(!$UpgradeToolkitObjects)

{

# Import FOB file containing the new version of the application objects, including the upgrade toolkit

Import-NAVApplicationObject `

-Path $NAVUpgrade_NewVersionObjectsFobFilePath `

-DatabaseName $NAVUpgrade_DatabaseName `

-DatabaseServer $NAVUpgrade_DatabaseSQLServerInstance `

-LogPath $NAVUpgrade_UpgradeLogsDirectory `

-ImportAction “Overwrite” `

-SynchronizeSchemaChanges “No” `

-NavServerName $NavServerInfo.NavServerName `

-NavServerInstance $NAVServerInfo.NavServerInstance `

-NavServerManagementPort $NavServerInfo.NavServerManagementPort `

-Confirm:$false

}

else

{

 

# Import FOB file containing the new version of the application objects

Import-NAVApplicationObject `

-Path $NAVUpgrade_NewVersionObjectsFobFilePath `

-DatabaseName $NAVUpgrade_DatabaseName `

-DatabaseServer $NAVUpgrade_DatabaseSQLServerInstance `

-LogPath $NAVUpgrade_UpgradeLogsDirectory `

-ImportAction “Overwrite” `

-SynchronizeSchemaChanges “No” `

-Confirm:$false

 

# Import FOB file containing the upgrade codeunit and upgrade tables

Import-NAVApplicationObject `

-Path $NAVUpgrade_UpgradeToolkitObjectsFobFilePath `

-DatabaseName $NAVUpgrade_DatabaseName `

-DatabaseServer $NAVUpgrade_DatabaseSQLServerInstance `

-LogPath $NAVUpgrade_UpgradeLogsDirectory `

-ImportAction “Overwrite” `

-SynchronizeSchemaChanges “No” `

-Confirm:$false

}

# Synchronize the metadata changes to SQL

        Sync-NAVTenant -ServerInstance $NAVUpgrade_NAVServerInstance -Mode Sync -Force

#6. Calls the Start-NAVDataUpgrade cmdlet to verify the data upgrade preconditions and transfer data from the upgrade tables to the destination tables.

# Invoke the Data Upgrade process

        Invoke-NAVDataUpgrade -ServerInstance $NAVUpgrade_NAVServerInstance

 

#7. Deletes all obsolete tables and the upgrade toolkit objects.

# Delete Upgrade Toolkit objects

        Delete-NAVApplicationObject `

-DatabaseName $NAVUpgrade_DatabaseName `

-DatabaseServer $NAVUpgrade_DatabaseSQLServerInstance `

-LogPath $NAVUpgrade_UpgradeLogsDirectory `

-Filter “$NAVUpgrade_UpgradeObjectsFilter;ID=<2000000000” `

-SynchronizeSchemaChanges “Force” `

-NavServerName $NavServerInfo.NavServerName `

-NavServerInstance $NAVServerInfo.NavServerInstance `

-NavServerManagementPort $NavServerInfo.NavServerManagementPort `

-Confirm:$false

 

#8.       Initializes all companies in the upgraded database. If you specified a RapidStart package in the Set-PartnerSettings.ps1 file, the package is applied to all companies.

# Optionally, run RapidStart package import

        if($NAVUpgrade_RapidStartPackageFile)

{

Invoke-NAVRapidStartDataImport -ServerInstance      $NAVUpgrade_NAVServerInstance -RapidStartPackageFile $NAVUpgrade_RapidStartPackageFile

 

}

 

The sample script is intended to be run in the context of a Microsoft Dynamics NAV 2016 deployment, including the Microsoft Dynamics NAV Server instance.

The Microsoft Dynamics NAV Server instance cannot be multitenant. When the sample script runs successfully, the result is a Microsoft Dynamics NAV 2016 database that is connected to a Microsoft Dynamics NAV 2016 Server instance, and which uses a Microsoft Dynamics NAV 2016 license.

You may face some permission related issues, take help of you IT person if not sure about the nature of issue or use Administrator login.

I will come with more details in my next posts.

 

 

Corfu Navision 2016, Development Tips, How To, Information, upgrade

Helpful PowerShell Commands which you can use for Upgrade Process in Navision 2016

In today’s post we will see some Power Shell Commands which will be helpful while performing Upgrades using PowerShell. For below commands to exercise you will need to create/prepare Folder Structure as below else you will have to modify the path in below script as one which you will be using.

For your ease I have uploaded the below script in form of text file named ‘MyPowerShellScript.txt’ which you can get using this link http://1drv.ms/1OOf7If alternatively from Menu of my blog side use Shared Files to access the file.
PowerShell-1

Extract you objects in Text format from Base, Customized and Target Database and place in respective folders. One text file per object will be better option for getting more clear insight on Results. You can find the command for Splitting the File per object in below Script.

After opening the PowerShell or ISE change your folder to Upgrade Demo as in my case it will be:

PS C:\userdata\upgrade demo>
PowerShell-2
Select the Script and Press Button in Toolbar Run Selection (F8) in Windows PowerShell ISE (Desktop App).

#1. Start Import NAV Module

Import-Module “${env:ProgramFiles(x86)}\Microsoft Dynamics NAV\90\RoleTailored Client\Microsoft.Dynamics.Nav.Model.Tools.psd1” -force -DisableNameChecking

Get-Help “NAV”

This is must in order to run all below commands.

#2. Merge Objects

# Compare ORIGINAL and MODIFIED and merge onto TARGET, then put the merged files in RESULT

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -TargetPath .\TARGET\*.txt -ResultPath .\RESULT -Force

# Standard PowerShell table formatting with sorting on Object Type, Id

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -TargetPath .\TARGET\*.txt -ResultPath .\RESULT -Force -PassThru |

Sort-Object ObjectType, Id |

Format-Table

# Use PowerShell VARIABLE, PIPING, FILTER, and LISTS – capture result in variable, then list file names of ORIGINAL and TARGET files in conflict 

$myVariable = Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -TargetPath .\TARGET\*.txt `

-ModifiedPath .\MODIFIED\*.txt -ResultPath .\RESULT -Force

$myVariable.Summary

$myVariable |

Where-Object MergeResult –eq ‘Conflict’ |

Select Original, Target |

Format-List

# Open NOTEPAD for each CONFLICT file 

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -TargetPath .\TARGET\*.txt `

-ModifiedPath .\MODIFIED\*.txt -ResultPath .\RESULT -Force -PassThru |

Where-Object MergeResult -eq ‘Conflict’ |

foreach { NOTEPAD $_.Conflict }

# Handling Documentation triggers: Merged by default, but conflict can either be treated as real conflict (Strict) or both inserted (ModifiedFirst or TargetFirst)

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\pagXXXX.txt -ModifiedPath .\MODIFIED\pagXXXX.txt `

-TargetPath .\TARGET\pagXXXX.txt -ResultPath .\RESULT\pagXXXX.txt -Force -DocumentationConflict Strict

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\pagXXXX.txt -ModifiedPath .\MODIFIED\pagXXXX.txt `

-TargetPath .\TARGET\pagXXXX.txt -ResultPath .\RESULT\pagXXXX.txt -Force -DocumentationConflict ModifiedFirst

#3. Merge Format Output

# Compare ORIGINAL and MODIFIED and merge onto TARGET, then put the merged files in RESULT

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -TargetPath .\TARGET\*.txt -ResultPath .\RESULT -Force

# Same: Capture the rich output in a PowerShell variable for further processing

$result = Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -TargetPath .\TARGET\*.txt -ResultPath .\RESULT -Force

# Using the variable: Use standard PowerShell outputting of variable 

$result

# Using the variable: Use the Summary property of the result 

$result.Summary

# Using the variable: Use standard PowerShell table formatting 

$result | Format-Table

# Use standard PowerShell table formatting 

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -TargetPath .\TARGET\*.txt -ResultPath .\RESULT -Force -PassThru |

Format-Table

# Use standard PowerShell table formatting with sorting on ObjectType, Id 

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -TargetPath .\TARGET\*.txt -ResultPath .\RESULT -Force -PassThru |

Sort-Object ObjectType, Id |

Format-Table

# Use standard PowerShell graphical output (GridView) 

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -TargetPath .\TARGET\*.txt -ResultPath .\RESULT -Force -PassThru |

Out-GridView

#4. Merge Filter Output

 # Compare ORIGINAL and MODIFIED and merge onto TARGET, then put the merged files in RESULT

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -TargetPath .\TARGET\*.txt -ResultPath .\RESULT -Force

# Same: Plus use PIPING, PASSTHRU and FILTER – show objects with CONFLICT only

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -TargetPath .\TARGET\*.txt `

-ModifiedPath .\MODIFIED\*.txt -ResultPath .\RESULT -PassThru -Force |

Where-Object MergeResult –eq ‘Conflict’

# Same: Plus use PIPING, PASSTHRU, FILTER, and COUNT – count MERGED objects

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -TargetPath .\TARGET\*.txt `

-ModifiedPath .\MODIFIED\*.txt -ResultPath .\RESULT -PassThru -Force |

Where-Object MergeResult –eq ‘Merged’ |

Measure-Object

# Same: Plus use PIPING, PASSTHRU, FILTER, and LISTING FILES – list file names of ORIGINAL and TARGET files in conflict 

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -TargetPath .\TARGET\*.txt `

-ModifiedPath .\MODIFIED\*.txt -ResultPath .\RESULT -PassThru -Force |

Where-Object MergeResult –eq ‘Conflict’ |

Select Original, Target |

Format-List

#5. Merge and open Conflicts files using External Tools

 # Compare ORIGINAL and MODIFIED and merge onto TARGET, then put the merged files in RESULT 

$result = Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -TargetPath .\TARGET\*.txt -ResultPath .\RESULT -Force

# Open NOTEPAD for each CONFLICT file 

$result |

Where-Object MergeResult -eq ‘Conflict’ |

foreach { NOTEPAD $_.Conflict }

#6. Merge and Documentation Triggers

 # Compare object DOCUMENTATION modifications: Body-text (can be merged) and version list additions (potential conflict). 

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\pagXXXX.txt -ModifiedPath .\MODIFIED\pagXXXX.txt `

-TargetPath .\TARGET\pagXXXX.txt -ResultPath .\RESULT\pagXXXX.txt -Force -DocumentationConflict ModifiedFirst

# Same: But STRICT on conflicts. 

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\pagXXXX.txt -ModifiedPath .\MODIFIED\pagXXXX.txt `

-TargetPath .\TARGET\pagXXXX.txt -ResultPath .\RESULT\pagXXXXa.txt -Force -DocumentationConflict Strict

#7. Merge and import in CSIDE

# Compare ORIGINAL and MODIFIED and merge onto TARGET, then put the merged files in RESULT 

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -TargetPath .\TARGET\*.txt -ResultPath .\RESULT -Force

# Locate subset (code units) of partionally merged object files, combine them into a single file for performance, and import them into C/SIDE (parameter -Database for you to provide). All throught piping. 

Get-ChildItem .\RESULT\COD*.txt |

Join-NAVApplicationObjectFile -Destination .\RESULT\partially-merged.txt |

Import-NAVApplicationObject

#8. Merge and Export Result to Excel Output 

# Compare ORIGINAL and MODIFIED and merge onto TARGET, then put the merged files in RESULT 

$result = Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -TargetPath .\TARGET\*.txt -ResultPath .\RESULT -Force

$AutoMerged = ($result | Where-Object MergeResult -eq ‘Merged’).Count

$Conflict   = ($result | Where-Object MergeResult -eq ‘Conflict’).Count

$Unchanged  = ($result | Where-Object MergeResult -eq ‘Unchanged’).Count

$Inserted   = ($result | Where-Object MergeResult -eq ‘Inserted’).Count

$Unknown    = ($result | Where-Object MergeResult -eq ‘Unknown’).Count

$Deleted    = ($result | Where-Object MergeResult -eq ‘Deleted’).Count

$Title      = “MySample”  # update Excel template file to allow blanks and special characters

$excelPath = “$(Get-ItemProperty ‘HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\excel.exe’ | select -exp Path)\Excel.exe”

& $excelPath “.\Merge Result Sample.xlsm” “/e/$Title/$AutoMerged/$Conflict/$Unchanged/$Inserted/$Unknown/$Deleted”

# Start-Process -FilePath “.\Merge Result Sample.xlsm” -ArgumentList “/e/BAS/$AutoMerged/$Conflict/$Unchanged/$Inserted/$Unknown/$Deleted”

#9. Compare

 # Compare ORIGINAL and MODIFIED and output MULTIPLE separate DELTA files 

Compare-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -DeltaPath .\DELTA -Force

# Compare ORIGINAL and TARGET, pipe the result into the Update-cmdlet (in particular the DELTA parameter) 

Compare-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -DeltaPath .\DELTA -Force -PassThru |

Update-NAVApplicationObject -TargetPath .\TARGET\*.txt -ResultPath .\RESULT -Force

#10. Compare Piped

 # Compare ORIGINAL and TARGET and output ONE summary DELTA file 

Compare-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\TARGET\*.txt -DeltaPath .\RESULT\sum-of-deltas.txt -Force

#11. Update Piped

# Compare ORIGINAL and MODIFIED and output MULTIPLE separate DELTA files, capture result in variable to apply multiple times 

$myDifferences = Compare-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -DeltaPath .\DELTA -Force

# Apply a captured set of differences to TARGET objects using the Update-cmdlet 

$myDifferences |

Update-NAVApplicationObject -TargetPath .\TARGET\*.txt -ResultPath .\RESULT -Force

#12. Join & Split Object Files

# Join all Codeunit-TXT-files into a single TXT-file

Join-NAVApplicationObjectFile -Source .\ORIGINAL\COD*.txt -Destination .\RESULT\all-codeunits.txt -Force

# Join list of Codeunit-TXT-files into a single TXT-file 

Join-NAVApplicationObjectFile -Source .\ORIGINAL\COD1.txt, .\ORIGINAL\COD2.txt, .\ORIGINAL\COD3.txt -Destination .\RESULT\3-codeunits.txt -Force

# Split a single TXT-file with multiple application objects into separate files in the DESTINATION folder 

Split-NAVApplicationObjectFile -Source .\RESULT\all-codeunits.txt -Destination .\SEPARATE -Force

Make sure you have created Separate Folder before executing this script.

#13. Get Application Properties 

# Show values of application properties in CODXXXX.TXT 

Get-NAVApplicationObjectProperty -Source .\RESULT\CODXXXX.txt

#14. Set Application Properties

# Set all object properties on named object COD1.TXT: VersionList to DemoV1, Modified as modified, and Date and Time to current date/time (show outcome) 

Set-NAVApplicationObjectProperty -TargetPath .\RESULT\COD1.txt -VersionListProperty “DemoV1” -ModifiedProperty Yes -DateTimeProperty (Get-Date -Format g)

Get-NAVApplicationObjectProperty -Source .\RESULT\COD1.txt

# Set date/time to a fixed, machine-locale agnostic date (January 1st, 2015) on Merged objects 

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -TargetPath .\TARGET\*.txt -ResultPath .\RESULT -Force -PassThru |

Where-Object MergeResult –eq ‘Merged’ |

foreach { Set-NAVApplicationObjectProperty -TargetPath $_.Result -DateTimeProperty (Get-Date -Year 2015 -Month 1 -Day 1 -Hour 0 -Minute 0 -Format g) }

# Capture merge-result in variable, set VersionList property as an concatenation of Modified and Target values with trailing ‘!’ 

$result = Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -TargetPath .\TARGET\*.txt -ResultPath .\RESULT -Force

$result |

Where-Object MergeResult –eq ‘Merged’ |

foreach { Set-NAVApplicationObjectProperty -TargetPath $_.Result -VersionListProperty “$_.Modified.VersionList,$_.Target.VersionList!”;

Get-NAVApplicationObjectProperty -Source $_.Result }

# Display property VersionList of CODXXXX.TXT in MODIFIED, TARGET, and RESULT 

Get-NAVApplicationObjectProperty -Source .\MODIFIED\CODXXXX.txt | select VersionList

Get-NAVApplicationObjectProperty -Source .\TARGET\CODXXXX.txt | select VersionList

Get-NAVApplicationObjectProperty -Source .\RESULT\CODXXXX.txt | select VersionList

#15. Set Application Properties

# Set date/time to fixed date (January 31st, 2015) on Merged objects 

Merge-NAVApplicationObject -OriginalPath .\ORIGINAL\*.txt -ModifiedPath .\MODIFIED\*.txt -TargetPath .\TARGET\*.txt -ResultPath .\RESULT -Force -PassThru |

Where-Object MergeResult –eq ‘Merged’ |

foreach { Set-NAVApplicationObjectProperty -TargetPath $_.Result -DateTimeProperty “31-1-2015” }

#16. Export Language

# Export ONE language (Spanish) from a single object file.  

Export-NAVApplicationObjectLanguage –Source .\original\TAB14.TXT -LanguageId “ESP” -Destination .\result\TAB14-ESP.TXT -Force

# Export one language (Spanish) from a single object file with non-standard code page ENCODING.  

Export-NAVApplicationObjectLanguage –Source .\original\TAB14.TXT -LanguageId “ESP” -Destination .\result\TAB14-ESP-UNICODE.TXT -Encoding Unicode -Force

# Export ONE language (Spanish) from ALL objects into a SINGLE file. 

Export-NAVApplicationObjectLanguage –Source .\original\*.TXT -LanguageId “ESP” -Destination .\result\ALL-ESP.TXT -Force

# Export MULTIPLE languages (Spanish, US English) from ALL objects

Export-NAVApplicationObjectLanguage –Source .\original -LanguageId “ESP”,”ENU” -Destination .\result -Force

# Export ALL languages (Spanish, US English, Danish) from ALL objects into result folder  

Export-NAVApplicationObjectLanguage –Source .\original -Destination .\result -Force

# Export ALL languages (Spanish, US English, Danish) from ALL objects into a SINGLE file

Export-NAVApplicationObjectLanguage –Source .\original -Destination .\result\single.txt -Force

#17. Import Language  

# Import Spanish language from FULL translation file into a single object 

Import-NAVApplicationObjectLanguage –Source .\original\TAB14.TXT -LanguageId “ESP” -LanguagePath .\result\ALL-ESP.TXT -Destination .\result -Force

#18. Remove Language

# Remove Spanish captions from a single object 

Remove-NAVApplicationObjectLanguage –Source .\target\TAB14.TXT -LanguageId “ESP” -Destination .\result\TAB14-ESP-REMOVED.TXT -Force

# Remove all captions from multiple objects, result in a single file 

Remove-NAVApplicationObjectLanguage –Source .\target\TAB14.TXT, .\target\PAGXXXX.TXT -Destination .\result -Force

#19. Test-Languages 

# Test all Spanish captions are present. PowerShell error returned, if translations are missing.

Test-NAVApplicationObjectLanguage –Source .\original\TAB14.TXT -LanguageId ESP

# Test all Danish captions are all present. Catch error situation and report nicely back to the script. 

try

{

Test-NAVApplicationObjectLanguage –Source .\original\TAB14.TXT -LanguageId DAN -ErrorAction Stop

}

catch

{

Write-Host “One or more translations are missing for the DAN language.” -ForegroundColor Yellow

}

# Test all Danish and Spanish captions are all present. With -PassThru a warning is reported and tranlation lines are returned for processing. 

Test-NAVApplicationObjectLanguage –Source .\original\TAB14.TXT -LanguageId ESP,DAN -PassThru

#20. Split or Join Language File

# Split an application translation file into per-object files

Split-NAVApplicationObjectLanguageFile -Source .\result\single.txt -Destination .\result -Force

# Join multiple application translation files into one combined file  

Join-NAVApplicationObjectLanguageFile -Source .\result\*-ESP.TXT -Destination .\result\JOINED-ESP.txt -Force

I will come with more details in my upcoming posts.

Corfu Navision 2016, Data, Development Tips, How To, Information, upgrade

Upgrading the Data in Navision 2016

Continuing from my earlier post Upgrading the Application Code in Microsoft Dynamics NAV 2016

At end of previous post we have imported the objects and compiled also resolved any conflicts and compilation error. In the same process we have got the list of objects which were having destructive table schema, means the objects which will be having the changes due to which we could lose some data. Scan the objects and if we wish to save those data then we will be requiring Data Upgrade codeunits to handle any such situation.

How to create you can refer to my earlier post Data Upgrade – in Navision 2015 this it still valid for 2016.

Now we have all the upgraded application objects and Data Upgrade codeunits if any required for the upgrade. So we are good to go with Upgrading Data for Old database.

We will follow below steps to continue, make sure you have followed the process for preparation/ converting of database as discussed in my earlier post Upgrade in Microsoft Dynamics NAV 2016

Import the application objects to the converted database

In the development environment, import all the application objects that you extracted in previous step as in my earlier post discussed above in the Microsoft Dynamics NAV 2016 database. This includes the FOB file that contains all the Microsoft Dynamics NAV 2016 objects from the application code upgrade and upgrade toolkit objects if any.

When you import the FOB file, if you experience metadata conflicts, use the Import Worksheet to handle these conflicts.

Finally, on the dialog box for selecting the schema synchronization, set the Synchronize Schema option to Later.
Upgrade2016-29

If the upgrade toolkit objects are stored in a separate FOB file, then import the upgrade toolkit FOB file after the application objects are imported.

 

Run the schema synchronization to synchronize the new tables

To publish the data schema changes of the newly imported tables to the SQL tables, run the Sync. Schema For All Tables – With Validation option from the development environment.
Upgrade2016-30

If you are confident that any loss of data you are ok with same you can choose Force option which will drop the data for deleted fields, else use Upgrade Codeunit prepared for same as discussed above.

Or alternatively run the Sync-NavTenant cmdlet from the Microsoft Dynamics NAV 2016 Administration Shell.

Sync-NAVTenant –ServerInstance UpgradedDBfrom2013R2 (My Server Instance Name)

Upgrade2016-31

Note this command runs in Administration Shell not in Development Shell as we used in our previous post.

Run the data upgrade process

A data upgrade runs the upgrade toolkit objects, such as upgrade codeunits and upgrade tables, to migrate business data from the old table structure to the new table structure. You can start the data upgrade from the Microsoft Dynamics NAV Development Environment.
Upgrade2016-32

Upgrade2016-33

Upgrade2016-34

Upgrade2016-35

Ooops………….

Or Alternatively Microsoft Dynamics NAV 2016 Administration Shell.

In the last phase of data upgrade, all companies will be initialized by running codeunit 2 Company Initialization. This is done automatically.

If you want to skip company initialization, then use the Start- NavDataUpgrade cmdlet and set the SkipCompanyIntitialization parameter.

Syntax:

Start-NAVDataUpgrade [-ServerInstance] <String> [[-Tenant] <TenantId> ] [[-FunctionExecutionMode] <FunctionExecutionModeValue> ] [[-ContinueOnError]] [-Force] [-Confirm] [-WhatIf] [ <CommonParameters>]

Parameters
-ContinueOnError

Specifies whether the Microsoft Dynamics NAV Server instance continues to execute other upgrade functions when an error occurs while executing an upgrade function.

If you do not set this parameter, then when an error occurs, the Microsoft Dynamics NAV Server instance will suspend the data upgrade process. It will cancel the execution of upgrade functions currently in progress and roll back any changes that were applied. Completed functions will not be rolled back.

The process remains in suspended state until you take one of the following actions:

– Fix the problems in the upgrade functions that failed, and then resume the process by using the Resume-NAVDataUpgrade cmdlet. You should not add new upgrade functions at this time because they will be ignored when you resume the process.

– Stop the data upgrade process by using the Stop-NAVDataUpgrade cmdlet. Stopping the process will not roll back changes made by upgrade functions that have already been executed.

If you set this parameter, then when an error occurs, the Microsoft Dynamics NAV Server instance will continue executing other upgrade functions. At the end of the process, you can use the Get-NAVDataUpgrade cmdlet to see the list of failed upgrade functions. Changes that were applied by completed functions will not be rolled back.

When upgrading a large database, you should increase the SQL Command Timeout setting for the Microsoft Dynamics NAV Server instance that connects to the database to avoid timeouts during schema synchronization. The default setting is 30 minutes

-ServerInstance<String>

Specifies the Microsoft Dynamics NAV Server instance that the application database and the tenant database are mounted against, such as DynamicsNAV90.

You must include the name within single quotation marks.

-Tenant<TenantId>

Specifies the ID of the tenant that you want to synchronize with the application, such as Tenant1.

This parameter is required unless the specified service instance is not configured to run multiple tenants.

-Force

Forces the command to run without asking for user confirmation.
-FunctionExecutionMode<FunctionExecutionModeValue>
Specifies whether the Microsoft Dynamics NAV Server instance executes upgrade functions in series or parallel.
-Confirm
Prompts you for confirmation before running the cmdlet.

-WhatIf

Shows what would happen if the cmdlet runs. The cmdlet is not run.

Few Examples of Usage:

[1] PS C:\> Start-NAVDataUpgrade -ServerInstance DynamicsNAV90 –Force

[2] PS C:\> Start-NAVDataUpgrade -ServerInstance DynamicsNAV90 -ContinueOnError –Force

[3] PS C:\> Start-NAVDataUpgrade -ServerInstance DynamicsNAV90 -FunctionExecutionMode Serial –Force
Upgrade2016-36

Start-NAVDataUpgrade -ServerInstance UpgradedDBfrom2013R2 –Force

Ooops………….

Now what to do?

To learn how to Create Data Upgrade Codeunits you can see my earlier posts:

Data Upgrade Codeunit in Navision 2015 – Part -1

Data Upgrade Codeunit in Navision 2015 – Part -2

These posts are still valid for 2016, you can follow to get you task done at this step resolution to above error.

To resolve above issue I have followed the instruction as suggested in error message, but in real scenario you will definitely will be having such codeunits. Since I have taken the 2013-R2 Std. Database I am having this issue. I have created on Upgrade codeunit with an empty upgrade function as below:
Upgrade2016-37

Let us run the above process again.
Upgrade2016-38

This time I was able to complete the process successfully.

Delete the upgrade objects

At this point, you have upgraded the database to Microsoft Dynamics NAV 2016. Now, you can delete the upgrade codeunits and upgrade table objects that you imported in above step.

When you delete tables, on the Delete dialog box, set the Synchronize Schema option to Force.

Import upgraded permission sets and permissions by using the Roles and Permissions XMLports

You import the permission sets and permissions XML files according to the following procedure.

To import the permission sets and permissions

  • Delete all permission sets in the database except the SUPER permission set.

In Object Designer, run page 9802 Permission Sets, and then delete the permission sets.

  • Run XMLport 9171 Import/Export Permission Sets to import the permission sets XML file,

In the request page for the XMLport, in the Direction field, choose Import, choose the OK button, and then specify the permission sets XML file.

  • Run XMLport 9172 Import/Export Permissions to import the permission XML file.

In the request page for the XMLport, in the Direction field, choose Import, choose the OK button, and then specify the permissions XML file.

Set the language of the customer database

In the development environment, choose Tools, choose Language, and then select the language of the original customer database.

Add new control add-ins

The database is now fully upgraded and is ready for use. However, you may want to add the new client control add-ins that are included in Microsoft Dynamics NAV 2016. These are not added by the upgrade process. The following client control add-ins are available from the Microsoft Dynamics NAV product media:

  • Microsoft.Dynamics.Nav.Client.BusinessChart
  • Microsoft.Dynamics.Nav.Client.PageReady
  • Microsoft.Dynamics.Nav.Client.PingPong
  • Microsoft.Dynamics.Nav.Client.VideoPlayer
  • Microsoft.Dynamics.Nav.Client.SocialListening

You can add control add-ins in the Control Add-ins window in the Microsoft Dynamics NAV Windows client.

I will come up with more details on this topic in my upcoming posts.

Corfu Navision 2016, Development Tips, How To, Information, upgrade

Upgrading the Application Code in Microsoft Dynamics NAV 2016

Continuing from my earlier post Upgrade in Microsoft Dynamics NAV 2016

No doubt typically, customers want all the customizations that have been implemented in their existing Microsoft Dynamics NAV databases to be migrated to their new Microsoft Dynamics NAV 2016 databases.

Depending on the version of Microsoft Dynamics NAV that a database is being upgraded from, the amount of code changes between the two versions is large or small.

To upgrade the application code, you must merge code from different versions of the application. This merge process is known as a code upgrade or application upgrade.

You must upgrade the application before you upgrade the data.

Application Upgrade Overview

You must analyze and process code changes by comparing and evaluating three separate versions of the Microsoft Dynamics NAV database:

Version Description
Original version This is the baseline version of the solution that you want to upgrade, such as the original release of Microsoft Dynamics NAV 2013.
Modified version This is the version that you want to upgrade, such as a customer’s database with customizations and add-on solutions.
Target version This is the target of the merge process that you want to upgrade your application to, such as the standard version of the Microsoft Dynamics NAV 2016 database.

When you merge the application objects from these three versions, you can import the result into a new Microsoft Dynamics NAV 2016 database that then contains the upgraded application.

At the end of the process, you export the merged Microsoft Dynamics NAV 2016 objects from this database to a .fob file that you will use during the data upgrade.

The following list describes the main steps of upgrading the application code:

  • Prepare the application object text files.
  • Merge versions.
  • Resolve conflicts
  • Import and compile the merged application objects.
  • Export all objects.

To begin, create five folders on the computer and name them as follows:

In my example, the UpgradeDemo folder on the C drive contains five folders: ORIGINAL, MODIFIED, TARGET, DELTA, and RESULT. The DELTA and RESULT folders are empty. The ORIGINAL, MODIFIED, and TARGET folders contains one or more text files that contain application objects.

Preparing the Text Files

The Microsoft Dynamics NAV cmdlets take text files as input. You must prepare three sets of text files that contain application objects as describes in the list above. You can export application objects to text files from the development environment, or by running the ExportObjects command. The following list describes the main steps of preparing the text files that you must provide as input for the application merge process.
Upgrade2016-15

  • First, export all application objects from the original version, such as the original Microsoft Dynamics NAV 2013 R2 database. Do not export system tables. Name the file OldBaseVersion.txt, and then save the file in the ORIGINAL folder that you created earlier. For example, the Microsoft.Dynamics.Nav.Model.Tools.psd1 module includes a function, Export-NAVApplicationObject, that runs the ExportObjects command. This means that you can run a command such as the following:

Export-NAVApplicationObject –DatabaseServer MyServer –DatabaseName “Demo Database NAV (7-1)” –Path C:\Upgrade\ORIGINAL\OldBaseVersion.txt

  • Next, export all relevant application objects from the modified version, such as the customized Microsoft Dynamics NAV 2013 database. Do not export system tables. Name the file OldCustomVersion.txt, and then save the file in the MODIFIED folder that you created earlier.
  • Finally, export all application objects from the new base version, such as the original Microsoft Dynamics NAV 2016 database. Do not export system tables. Name the file NewBaseVersion.txt, and then save the file in the TARGET folder that you created earlier.

Optionally, you can use the Split-NAVApplicationObjectFile cmdlet to split each text file into separate text files for each application object. This can make it easier to keep track of the process. The end result at this stage is three folders with one or more text files that contain the three sets of application objects that you want to merge.

To compare two sets of application objects

  • Open the Microsoft Dynamics NAV 2016 Development Shell in administrator mode.
  • Navigate to the location of your folders by typing a command such as the following:

cd c:\UserData\UpgradeDemo  (in my case)

  • To run the cmdlet to compare all application objects in the ORIGINAL folder to the application objects in the MODIFIED folder, type the following command:

Compare-NAVApplicationObject -OriginalPath ‘C:\UserData\Upgrade Demo\Original’ -ModifiedPath ‘C:\UserData\Upgrade Demo\Modified’ -DeltaPath ‘C:\UserData\Upgrade Demo\Delta’

Upgrade2016-16

Upgrade2016-17
This generates a number of DELTA files that describe the difference between ORIGINAL and MODIFIED. You can open the DELTA files in text editors such as Notepad. The following example illustrates how a DELTA file identifies the difference between ORIGINAL and MODIFIED.
Upgrade2016-18
Let us understand how the changes are reported when we compare the objects.
Upgrade2016-19

Upgrade2016-20

You can apply those differences to TARGET by using the Update-NAVApplicationObject cmdlet.

To apply DELTA files to application objects

  • Open the Microsoft Dynamics NAV 2016 Development Shell in administrator mode.
  • Navigate to the location of your folders by typing a command such as the following:

cd c:\UserData\UpgradeDemo  (in my case)

In this example, the folder structure is the same as described above procedure. You can now run the cmdlet.

  • To run the cmdlet to apply the differences that are stored in the DELTA folder to the application objects in the TARGET folder, type the following command:

Update-NAVApplicationObject –DeltaPath ‘C:\UserData\Upgrade Demo\Delta’ -TargetPath ‘C:\UserData\Upgrade Demo\Target’ -ResultPath ‘C:\UserData\Upgrade Demo\Result’

Upgrade2016-21

Upgrade2016-22

This merges the difference between ORIGINAL and MODIFIED with the target solution and puts the resulting solution in the RESULT folder.

You can now import the merged objects into a Microsoft Dynamics NAV database.

Merging Versions

Alternatively to above process you can merge the three sets of application objects to create the application for the new database.

You can use the Merge-NAVApplicationObject cmdlet to merge the three sets of application objects.

The following example illustrates the type of command that you can run.

Merge-NAVApplicationObject -OriginalPath ‘C:\UserData\Upgrade Demo\Original’ -TargetPath ‘C:\UserData\Upgrade Demo\Target’ -ModifiedPath ‘C:\UserData\Upgrade Demo\Modified’ -ResultPath ‘C:\UserData\Upgrade Demo\Result’

Upgrade2016-23

Upgrade2016-24

Depending on the number of objects that you are merging and the number of differences found, this can take a few seconds, a few minutes, or longer.

The RESULT folder will contain a text file for each application object. The result of the merge is shown when the cmdlet completes, including a description of any application objects with conflicting code.
Upgrade2016-25

These conflicts are stored in .CONFLICT files in the RESULT folder. You can import all objects in the RESULT folder into the new Microsoft Dynamics NAV 2016 database, or you can analyze the conflicts before you import the objects.

Handling Conflicts

Depending on the application that you are upgrading, you can choose to analyze the conflicting code before you import the merged objects into the development environment.

The conflicts are shown in the merged text files but are also identified in .CONFLICT files in the RESULT folder. Subfolders then contain copies of the source files from the versions that have conflicting code.
Upgrade2016-26

You can analyze the conflicts in any tool, make the relevant changes, and then run the merge operation again. Alternatively, you can import the merged files into the development environment, and resolve the conflicts there.

Importing and Compiling Merged Objects

After you have completed the merge, import the new custom version into the new Microsoft Dynamics NAV 2016 database, and then compile all objects. You must resolve any compilation errors before you can continue.

The text files with the merged application objects include successfully merged code, and code that is partially merged. You can import the partially merged objects into the Microsoft Dynamics NAV 2016 development environment and resolve the conflicts there.

You can use Import-NAVApplicationObject, that runs the ImportObjects command.

This means that you can run a command such as the following:

Join-NAVApplicationObjectFile -Source ‘C:\UserData\Upgrade Demo\Result\*.txt’ -Destination ‘C:\UserData\Upgrade Demo\FinalMergedObjects\all-merged.txt’

Upgrade2016-27

First we will join the many text files into a single file using above command and as a result we get all-merged.txt file which we will import in database using below command.

Import-NAVApplicationObject –DatabaseServer MyServer –DatabaseName “My Upgraded App” –Path C:\Upgrade\all-merged.txt

Now we import objects obtained from previous step into an existing, empty database.
Upgrade2016-28
When you compile the objects, an error is thrown for each code conflict, and you can use the tools that are available in the development environment to resolve the conflicts.

You now have a new database with a fully upgraded application.

Exporting All Objects

Now, you must export all objects to an objects.fob file so that you can import them when performing the data upgrade. The export must include customized objects, upgraded reports, and all other Microsoft Dynamics NAV 2016 objects.

This completes the upgrade of the application code. Next, you must upgrade the data in the database.

However you are free to do object merge and upgrade as you do earlier, here I concentrated using Dynamics Navision 2016 Development Shell. As this is the new way also much faster than what we used to do earlier.

We can use this in identifying the Objects under different categories like Modified, having conflicts and New Objects which can help in estimating also and planning the action in advance.

I will come up with further step and more details in my upcoming posts.