Advertisements

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.

 

Advertisements

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

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.

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”);

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.

 

 

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.

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.

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.

Upgrade in Microsoft Dynamics NAV 2016

Upgrade Considerations Preparing for Upgrade in Microsoft Dynamics NAV 2016

If your solution includes variables where the name is now used by a standard C/AL function or statement such as REGISTERTABLECONNECTION or FOREACH, you must change the variables before you upgrade to Microsoft Dynamics NAV 2016. Alternatively, you can enclose the variable names in quotation marks.

If you are upgrading a solution that depends on functionality that is deprecated or changed in the default version of Microsoft Dynamics NAV 2016, you must verify that the upgrade codeunits migrate data correctly. From 2013-R2 not yet reported any under this category.

When you introduce changes to the database schema in Microsoft Dynamics NAV 2016, Microsoft Dynamics NAV will check if these changes are destructive or not. If the database check indicates that the change may lead to data deletion, such as if you are dropping a table column so that the contents of that column will be deleted, this is considered a destructive change. You will be prompted to handle the situation using upgrade codeunits. You can check out my earlier post on this topic here. Data Upgrade – in Navision 2015 it still valid for 2016, I will come up with any specific differences in my upcoming post later.

If a company name includes a special character, an error may display during the upgrade. In this context, special characters include the: [ ~ @ # $ % & * ( ) . ! % – + / = ? ]. If you are going to upgrade a database where one or more company name includes a special character, it is recommend that you rename the company before you start the upgrade process. After the upgrade is successfully finished, you can rename the company again.

Versions later than Microsoft Dynamics NAV 2013 R2 require that all columns in all system tables are in English. As a result, if you try to open a database with non-English system tables in Microsoft Dynamics NAV 2013 R2 or later, an error displays, saying that one or more columns do not exist. Make sure that all objects where compiled in a development environment with the right .ETX and .STX files. You can verify that you are running in the correct environment with English (US) as the base language by opening the ndo$dbproperty table in SQL Server Management Studio. In the Identifiers column, the word Object must be written exactly as shown here.

Converting a Database in Microsoft Dynamics NAV 2016

Before you start, make sure that you have applied the changes that are described in KB 2804640

Code corrections for some Microsoft Dynamics NAV 2013 reports to prevent compilation errors with Report Viewer 2012 when upgrading to later versions of Microsoft Dynamics NAV. Your will require to use partner login to access the hotfix. Click here for the Link.

You can choose to convert the old database and not upgrade your application. However, it is recommend that you upgrade the application objects as well so that your solution includes important application fixes and new functionality that is introduced in Microsoft Dynamics NAV 2016.

Upgrading the application will also reduce the amount of merging required to upgrade to the next major version of Microsoft Dynamics NAV, bringing you to the latest version of the product faster.

Preparing the Old Database for Conversion

  • Make a copy of the old database or create full database backup.

I have copied the database (Navision 2013/R2) and attached to the SQL for this operation:
Upgrade2016-1

  • Clear all Microsoft Dynamics NAV Server instance records from the dbo.Server Instance table in the database on SQL Server.

Upgrade2016-2

You can do this by using SQL Server Management Studio to open and clear the table.

  • Open the development environment that matches the Microsoft Dynamics NAV version of the old database, and then connect to the old database.
  • In Object Designer, make sure that no objects are locked.

If any objects are locked, the conversion process will not update the database version number. As a result, the conversion will not complete.

  • On the Tools menu, choose Build Server Application Objects, and then choose the Yes button.
  • If any errors occur, they are shown in the Error List window. Make sure that you address all compilation errors before you continue.
  • Upload the Microsoft Dynamics NAV 2016 Partner license to the database

The license that you upload must be a developer license. During the conversion, the development environment will convert the report objects that are stored in the old database to the RDL 2012 format.

  • If you are converting a Microsoft Dynamics NAV 2013 R2 or Microsoft Dynamics NAV 2015 database, then run the Sync-NavTenant cmdlet from the Microsoft Dynamics NAV 2013 R2 or Microsoft Dynamics NAV 2015 Administration Shell to synchronize the database schema changes.

Converting the Old Database

Next, we will convert the old database so that it can be used in Microsoft Dynamics NAV 2016.

Before you start the following procedure, you can choose to uninstall Microsoft Dynamics NAV 2013, Microsoft Dynamics NAV 2013 R2, or Microsoft Dynamics NAV 2015. When you uninstall Microsoft Dynamics NAV 2013, Microsoft Dynamics NAV 2013 R2, or Microsoft Dynamics NAV 2015, the database is still attached to the instance of SQL Server, which you can verify using SQL Server Management Studio.

To convert the database

  • Install Microsoft Dynamics NAV 2016.
  • Open the Microsoft Dynamics NAV 2016 development environment, and then connect to the database that you prepared in the previous task.
  • In the dialog box that appears, read the instructions carefully because this action cannot be reversed. When you are ready, choose the OK button, and then choose the OK button to confirm that you want to convert the database.

Upgrade2016-3

Microsoft Dynamics NAV will now convert the database. This includes an upgrade of system tables, and an upgrade of all reports to support Report Viewer 2012.

  • When you are notified that the conversion was successful, choose the OK button.

Upgrade2016-4

Upgrade2016-5

  • Connect a Microsoft Dynamics NAV 2016 Server instance to the converted database.

You use the Microsoft Dynamics NAV Server Administration tool to connect a Microsoft Dynamics NAV Server instance to the converted database.
Upgrade2016-6

In addition, you must add the service account that is used by the Microsoft Dynamics NAV Server instance as a member of the db_owner role in the Microsoft Dynamics NAV database on SQL Server.

It is also possible to script these steps in SQL Server Management Studio:

USE [master]

GO

CREATE LOGIN [domain\accountname] FROM WINDOWS

CREATE USER [domain\accountname] FOR LOGIN [domain\accountname]

GRANT SELECT ON [master].[dbo].[$ndo$srvproperty] TO [domain\accountname]

GO

USE [Microsoft Dynamics NAV Database]

GO

CREATE USER [domain\accountname] FOR LOGIN [domain\accountname]

ALTER ROLE [db_owner] ADD MEMBER [domain\accountname]

GRANT VIEW DATABASE STATE TO [domain\accountname]

You can check more details from my earlier post Provisioning the Microsoft Dynamics NAV Server Account.

  • Run the development environment as an administrator, and then set the development environment to use the Microsoft Dynamics NAV Server instance that connects to the database.

Upgrade2016-7

  • Run the schema synchronization to complete the database conversion.

You can run the schema synchronization from the Microsoft Dynamics NAV Development Environment or Microsoft Dynamics NAV 2016 Administration Shell.
Upgrade2016-8

From the development environment:

Open development environment as an administrator. On the Tools menu, choose Sync. Schema For All Tables, and then choose With Validation and follow the schema synchronization instructions.
Upgrade2016-9

Upgrade2016-10

From the Microsoft Dynamics NAV 2016 Administration Shell:

Open the Microsoft Dynamics NAV 2016 Administration Shell as an administrator, and then run Sync-NavTenant cmdlet as follows:

Sync-NavTenant –ServerInstance <ServerInstanceName>

Replace <ServerInstanceName> with the name of the Microsoft Dynamics NAV Server instance that is connected to the database

  • If the database references any assemblies (such as client control add-ins) that are not included on the Microsoft Dynamics NAV 2016 installation media (DVD), then add the assemblies to the Add-ins folder on Microsoft Dynamics NAV Server or Microsoft Dynamics NAV Windows client computers.

For the Microsoft Dynamics NAV Windows client, the default path is C:\Program Files (x86)\Microsoft Dynamics NAV\90\RoleTailored Client\Add-ins folder.

For Microsoft Dynamics NAV Server, the default path is the C:\Program Files\Microsoft Dynamics NAV\90\Service\Add-ins folder

In the development environment, on the Tools menu, choose Build Server Application Objects, and then, in the dialog box, choose the Yes button.
Upgrade2016-14

  • Fix compilation errors.

You can find all objects which did not compile in the Object Designer window, by setting a field filter on the Compiled field.

  • Upload the customer license to the converted database.

You have now completed the conversion of the Microsoft Dynamics NAV 2013, Microsoft Dynamics NAV 2013 R2, or Microsoft Dynamics NAV 2015 database to be accessed from Microsoft Dynamics NAV 2016. To test the converted database, you can connect it to the Microsoft Dynamics NAV 2016 Server instance that by Microsoft Dynamics NAV clients, and then open a client.

You may encounter some login issues to resolve it here are the few tips:

Delete the user login details as we do in earlier versions when RTC was introduced to access any database using SQL Query as below :

USE [Demo Database NAV (7-1)]  (use your database name)
GO

delete from [dbo].[User]

delete from [dbo].[Access Control]

delete from [dbo].[User Property]

delete from [dbo].[Page Data Personalization]

delete from [dbo].[User Default Style Sheet]

delete from [dbo].[User Metadata]

delete from [dbo].[User Personalization]

After this if you get error stating you don’t have permission to codeunit ApplicationManagement give permission in SQL to the Login running the service as below:

Upgrade2016-12

Upgrade2016-13

Next, upgrade the application code to Microsoft Dynamics NAV 2016.

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

Important

Most of the contents you find in this blog will be either inherited from MSDN or Navision Developer IT Pro Help. Some places images are also directly taken from these sites. Purpose is simple to try those stuffs and re-produce adding few things as per my understanding to make easy understanding for others and quick reference.

Here nothing under my own brand or authorship of the content. At any point of time we are just promoting Microsoft stuffs nothing personnel with same.

Hope stuffs used here will not violate any copyright agreement with them. In case by mistake or in-intestinally it happens and the Microsoft feels these should not be used Microsoft have full right to inform me about same and will be glad to take down any such content which may be violating the norms.

Purpose is to promote Navision and share with community.

FB Profile

Like FB Page

%d bloggers like this: