Performance compare tests – Part 2

another test scenario:

same preconditions like in last post.
1. db: orig. nav 2017 demo db
2. db: to nav 2017 converted nav 2013 demo db

Now developed a recordload test with g/l entries. wanted to know the record load time per entry.

orig. nav 2017 demo db:
(total no. of entries) | (total load time) | (load time per entry)
run 1: 3186 | 282 | 0,088512
run 2: 3186 | 265 | 0,083176
run 3: 3186 | 250 | 0,078468

converted nav 2013 demo db:
(total no. of entries) | (total load time) | (load time per entry)
run 1: 2842 | 171 | 0,060169
run 2: 2842 | 156 | 0,054891
run 3: 2842 | 141 | 0,049613

the test code:
OnRun()
// dt / DateTime
// timePerLoad / Decimal
// noOfEntries / Integer
// totalTime / Decimal
dt := CURRENTDATETIME;
noOfEntries := IterateGLEntries;
totalTime := CURRENTDATETIME – dt;
timePerLoad := totalTime / noOfEntries;
MESSAGE(FORMAT(noOfEntries) + ‘ | ‘ + FORMAT(totalTime) + ‘ | ‘ + FORMAT(ROUND(timePerLoad,0.000001)));

IterateGLEntries() : Integer
glEntry.FINDSET;
REPEAT
glEntry2.GET(glEntry.”Entry No.”);
UNTIL glEntry.NEXT = 0;
EXIT(glEntry.COUNT);

also interesting …

cheers

Performance compare tests between Nav 2013 and Nav 2017

There were some discussions about the newer Nav versions performance. As for my own experience, i can say Nav 2017/2018 releases are quite slow.

To get a better feeling about that i did the following:

I converted Nav 2013 Cronus db (build 46056) to Nav 2017 (build 13682) by simply run the convert job in the dev. env. nothing more. then created a nav service for the converted nav2013-db.

test scenario: i wanted to test the load time for the item list page. in many huge database there can be 1000s and 1000s of items. it’s a very important page, very often loaded per day by many people. so high peformance would be a good thing. in both databases are the same no. of items: 145. in both pages are the same columns/fields in the same order shown. i have the same nav system, same binaries, but different db. so the situation is quite ok for a valid comparison.

next step: i wrote a simple test cu for loading the item-list page.

[Test] TestItemList()
// ItemList / TestPage / item list
// dt / DateTime
dt := CURRENTDATETIME;
ItemList.OPENEDIT;
MESSAGE(FORMAT(CURRENTDATETIME – dt));

i started the test cu with the simple test function and measured the time:
1. run: 270ms
2. run: 230ms
3. run: 170ms

now copied that test cu to the nav2017 db, ran the same test, measured the time:
1. run: 380ms
2. run: 320ms
3. run: 300ms

WOW!!!!!! simple test, the numbers tell the story!
What’s about other main list pages (customers, vendors, ledger entries and so on)? What about performance of posting processes? What would i measure, if i continue that kind of tests? i think better not measure …

Is that really a progress??? What is the advantage of new features, if the performance lowers and lowers from release to release ???

i think here is a todo for the nav microsoft team.

cheers

 

 

Table field changes between Nav 2013 and Nav 2016

In addition to last postings about table changes you’ll find here the field changes.

New table fields in Nav 2016:

Table No.Table NameField No.Field Name
9Country/Region10VAT Scheme
15G/L Account70Omit Default Descr. in Jnl.
15G/L Account1700Default Deferral Template Code
18Customer11Document Sending Profile
18Customer90GLN
18Customer288Preferred Bank Account
21Cust. Ledger Entry172Payment Method Code
21Cust. Ledger Entry173Applies-to Ext. Doc. No.
21Cust. Ledger Entry290Exported to Payment File
23Vendor90GLN
23Vendor132Partner Type
23Vendor170Creditor No.
23Vendor288Preferred Bank Account
25Vendor Ledger Entry170Creditor No.
25Vendor Ledger Entry171Payment Reference
25Vendor Ledger Entry172Payment Method Code
25Vendor Ledger Entry173Applies-to Ext. Doc. No.
25Vendor Ledger Entry288Recipient Bank Account
25Vendor Ledger Entry289Message to Recipient
25Vendor Ledger Entry290Exported to Payment File
27Item10Type
27Item120Stockout Warning
27Item121Prevent Negative Inventory
27Item1217GTIN
27Item1700Default Deferral Template Code
27Item7385Next Counting Start Date
27Item7386Next Counting End Date
36Sales Header56Recalculate Invoice Disc.
36Sales Header165Incoming Document Entry No.
36Sales Header1200Direct Debit Mandate ID
36Sales Header1305Invoice Discount Amount
37Sales Line56Recalculate Invoice Disc.
37Sales Line84Tax Category
37Sales Line1300Posting Date
37Sales Line1700Deferral Code
37Sales Line1702Returns Deferral Start Date
38Purchase Header56Recalculate Invoice Disc.
38Purchase Header165Incoming Document Entry No.
38Purchase Header170Creditor No.
38Purchase Header171Payment Reference
38Purchase Header1305Invoice Discount Amount
38Purchase Header9001Pending Approvals
39Purchase Line56Recalculate Invoice Disc.
39Purchase Line1700Deferral Code
39Purchase Line1702Returns Deferral Start Date
39Purchase Line5005396Order No.
39Purchase Line5005397Order Line No.
49Invoice Post. Buffer1700Deferral Code
49Invoice Post. Buffer1701Deferral Line No.
79Company Information50Allow Blank Payment Info.
79Company Information90GLN
81Gen. Journal Line165Incoming Document Entry No.
81Gen. Journal Line170Creditor No.
81Gen. Journal Line171Payment Reference
81Gen. Journal Line172Payment Method Code
81Gen. Journal Line1220Data Exch. Entry No.
81Gen. Journal Line1221Payer Information
81Gen. Journal Line1222Transaction Information
81Gen. Journal Line1223Data Exch. Line No.
81Gen. Journal Line1224Applied Automatically
81Gen. Journal Line1700Deferral Code
81Gen. Journal Line1701Deferral Line No.
81Gen. Journal Line5618Comment
85Acc. Schedule Line30Double Underline
91User Setup21Approval Administrator
96G/L Budget Entry16Last Date Modified
98General Ledger Setup160Payroll Trans. Import Format
98General Ledger Setup161VAT Reg. No. Validation URL
112Sales Invoice Header710Document Exchange Identifier
112Sales Invoice Header711Document Exchange Status
112Sales Invoice Header712Doc. Exch. Original Identifier
112Sales Invoice Header720Coupled to CRM
112Sales Invoice Header1200Direct Debit Mandate ID
112Sales Invoice Header1300Canceled By
112Sales Invoice Header1301Canceled
112Sales Invoice Header1302Paid
112Sales Invoice Header1303Remaining Amount
112Sales Invoice Header1304Cust. Ledger Entry No.
112Sales Invoice Header1305Invoice Discount Amount
113Sales Invoice Line84Tax Category
113Sales Invoice Line1700Deferral Code
114Sales Cr.Memo Header710Document Exchange Identifier
114Sales Cr.Memo Header711Document Exchange Status
114Sales Cr.Memo Header712Doc. Exch. Original Identifier
114Sales Cr.Memo Header1300Canceled
114Sales Cr.Memo Header1302Paid
114Sales Cr.Memo Header1303Remaining Amount
114Sales Cr.Memo Header1304Cust. Ledger Entry No.
114Sales Cr.Memo Header1305Invoice Discount Amount
115Sales Cr.Memo Line84Tax Category
115Sales Cr.Memo Line1700Deferral Code
122Purch. Inv. Header170Creditor No.
122Purch. Inv. Header171Payment Reference
122Purch. Inv. Header1300Canceled By
122Purch. Inv. Header1301Canceled
122Purch. Inv. Header1302Paid
122Purch. Inv. Header1303Remaining Amount
122Purch. Inv. Header1304Vendor Ledger Entry No.
122Purch. Inv. Header1305Invoice Discount Amount
123Purch. Inv. Line1700Deferral Code
124Purch. Cr. Memo Hdr.1300Canceled
124Purch. Cr. Memo Hdr.1302Paid
124Purch. Cr. Memo Hdr.1303Remaining Amount
124Purch. Cr. Memo Hdr.1304Vendor Ledger Entry No.
124Purch. Cr. Memo Hdr.1305Invoice Discount Amount
125Purch. Cr. Memo Line1700Deferral Code
156Resource1700Default Deferral Template Code
172Standard Customer Sales Code4Valid From Date
172Standard Customer Sales Code5Valid To date
172Standard Customer Sales Code6Payment Method Code
172Standard Customer Sales Code7Payment Terms Code
172Standard Customer Sales Code8Direct Debit Mandate ID
172Standard Customer Sales Code9Blocked
204Unit of Measure3International Standard Code
232Gen. Journal Batch11Allow Payment Export
232Gen. Journal Batch12Bank Statement Import Format
242Source Code Setup49Payment Reconciliation Journal
246Requisition Line7100Blanket Purch. Order Exists
270Bank Account42Last Payment Statement No.
270Bank Account62Total on Checks
270Bank Account113Bank Statement Import Format
270Bank Account116Direct Debit Msg. Nos.
270Bank Account117SEPA Direct Debit Exp. Format
270Bank Account1210Payment Export Format
270Bank Account1211Bank Clearing Code
270Bank Account1212Bank Clearing Standard
270Bank Account1213Bank Name – Data Conversion
270Bank Account1250Match Tolerance Type
270Bank Account1251Match Tolerance Value
270Bank Account1260Positive Pay Export Code
271Bank Account Ledger Entry70Check Ledger Entries
272Check Ledger Entry23Data Exch. Entry No.
272Check Ledger Entry24Data Exch. Voided Entry No.
272Check Ledger Entry25Positive Pay Exported
272Check Ledger Entry26Record ID to Print
273Bank Acc. Reconciliation6Bank Statement
273Bank Acc. Reconciliation7Total Balance on Bank Account
273Bank Acc. Reconciliation8Total Applied Amount
273Bank Acc. Reconciliation9Total Transaction Amount
273Bank Acc. Reconciliation20Statement Type
273Bank Acc. Reconciliation21Shortcut Dimension 1 Code
273Bank Acc. Reconciliation22Shortcut Dimension 2 Code
273Bank Acc. Reconciliation480Dimension Set ID
274Bank Acc. Reconciliation Line15Related-Party Name
274Bank Acc. Reconciliation Line16Additional Transaction Info
274Bank Acc. Reconciliation Line17Data Exch. Entry No.
274Bank Acc. Reconciliation Line18Data Exch. Line No.
274Bank Acc. Reconciliation Line20Statement Type
274Bank Acc. Reconciliation Line21Account Type
274Bank Acc. Reconciliation Line22Account No.
274Bank Acc. Reconciliation Line23Transaction Text
274Bank Acc. Reconciliation Line24Related-Party Bank Acc. No.
274Bank Acc. Reconciliation Line25Related-Party Address
274Bank Acc. Reconciliation Line26Related-Party City
274Bank Acc. Reconciliation Line31Shortcut Dimension 1 Code
274Bank Acc. Reconciliation Line32Shortcut Dimension 2 Code
274Bank Acc. Reconciliation Line50Match Confidence
274Bank Acc. Reconciliation Line51Match Quality
274Bank Acc. Reconciliation Line60Sorting Order
274Bank Acc. Reconciliation Line480Dimension Set ID
279Extended Text Header8Description
287Customer Bank Account1211Bank Clearing Code
287Customer Bank Account1212Bank Clearing Standard
288Vendor Bank Account1211Bank Clearing Code
288Vendor Bank Account1212Bank Clearing Standard
289Payment Method6Direct Debit
289Payment Method7Direct Debit Pmt. Terms Code
289Payment Method8Pmt. Export Line Definition
289Payment Method9Bank Data Conversion Pmt. Type
290VAT Amount Line19Tax Category
311Sales & Receivables Setup44VAT Bus. Posting Gr. (Price)
312Purchases & Payables Setup1217Debit Acc. for Non-Item Lines
312Purchases & Payables Setup1218Credit Acc. for Non-Item Lines
313Inventory Setup40Prevent Negative Inventory
325VAT Posting Setup17Tax Category
370Excel Buffer16Double Underline
372Payment Buffer170Creditor No.
372Payment Buffer171Payment Reference
372Payment Buffer172Payment Method Code
372Payment Buffer173Applies-to Ext. Doc. No.
372Payment Buffer290Exported to Payment File
379Detailed Cust. Ledg. Entry43Ledger Entry Amount
380Detailed Vendor Ledg. Entry43Ledger Entry Amount
386Entry No. Amount Buffer5Start Date
386Entry No. Amount Buffer6End Date
400XBRL Linkbase8File Name
427IC Outbox Sales Line63Shipment No.
427IC Outbox Sales Line64Shipment Line No.
427IC Outbox Sales Line6600Return Receipt No.
427IC Outbox Sales Line6601Return Receipt Line No.
431Handled IC Outbox Sales Line63Shipment No.
431Handled IC Outbox Sales Line64Shipment Line No.
431Handled IC Outbox Sales Line6600Return Receipt No.
431Handled IC Outbox Sales Line6601Return Receipt Line No.
437IC Inbox Purchase Line63Receipt No.
437IC Inbox Purchase Line64Receipt Line No.
437IC Inbox Purchase Line6600Return Shipment No.
437IC Inbox Purchase Line6601Return Shipment Line No.
441Handled IC Inbox Purch. Line63Receipt No.
441Handled IC Inbox Purch. Line64Receipt Line No.
441Handled IC Inbox Purch. Line6600Return Shipment No.
441Handled IC Inbox Purch. Line6601Return Shipment Line No.
454Approval Entry21Pending Approvals
454Approval Entry22Record ID to Approve
454Approval Entry23Delegation Date Formula
454Approval Entry26Number of Approved Requests
454Approval Entry27Number of Rejected Requests
454Approval Entry29Entry No.
454Approval Entry30Workflow Step Instance ID
454Approval Entry31Related to Change
455Approval Comment Line8Record ID to Approve
456Posted Approval Entry22Posted Record ID
456Posted Approval Entry23Delegation Date Formula
456Posted Approval Entry26Number of Approved Requests
456Posted Approval Entry27Number of Rejected Requests
456Posted Approval Entry28Iteration No.
456Posted Approval Entry29Entry No.
457Posted Approval Comment Line8Posted Record ID
458Overdue Approval Entry15Record ID to Approve
472Job Queue Entry10Report Output Type
472Job Queue Entry44User Language ID
472Job Queue Entry45Printer Name
472Job Queue Entry46Report Request Page Options
472Job Queue Entry47Rerun Delay (sec.)
700Error Message8Table Number
700Error Message10Context Record ID
700Error Message11Field Name
700Error Message12Table Name
740VAT Report Header7VAT Registration No.
740VAT Report Header10Report Period Type
740VAT Report Header11Report Period No.
740VAT Report Header12Report Year
740VAT Report Header16Processing Date
740VAT Report Header19Test Export
740VAT Report Header20Notice
740VAT Report Header21Revocation
740VAT Report Header28Trade Type
740VAT Report Header29EU Goods/Services
740VAT Report Header31Total Base
740VAT Report Header32Total Amount
740VAT Report Header33Total Number of Supplies
740VAT Report Header34Total Number of Lines
740VAT Report Header40Company Name
740VAT Report Header41Company Address
740VAT Report Header42Country/Region Name
740VAT Report Header48City
740VAT Report Header49Post Code
740VAT Report Header50Tax Office ID
740VAT Report Header51Sign-off Place
740VAT Report Header52Sign-off Date
740VAT Report Header53Signed by Employee No.
740VAT Report Header54Created by Employee No.
741VAT Report Line17EU Service
741VAT Report Line24Number of Supplies
741VAT Report Line30Trade Type
741VAT Report Line31Line Type
741VAT Report Line32Related Line No.
741VAT Report Line33Trade Role Type
741VAT Report Line50Corrected Reg. No.
741VAT Report Line51Corrected Amount
741VAT Report Line54Registration No.
741VAT Report Line99System-Created
741VAT Report Line101VAT Report to Correct
741VAT Report Line102Able to Correct Line
743VAT Report Setup11000Source Identifier
743VAT Report Setup11001Transmission Process ID
743VAT Report Setup11002Supplier ID
743VAT Report Setup11003Codepage
743VAT Report Setup11004Registration ID
743VAT Report Setup11005Export Cancellation Lines
762Account Schedules Chart Setup3Description
762Account Schedules Chart Setup51Look Ahead
801Online Map Parameter Setup9Directions from Location Serv.
1226Payment Export Data28Sender Bank Name – Data Conv.
1226Payment Export Data29Sender Bank Name
1226Payment Export Data32Sender Bank Account Currency
1226Payment Export Data33Sender Bank Country/Region
1226Payment Export Data35Sender Bank Clearing Std.
1226Payment Export Data36Sender Bank Clearing Code
1226Payment Export Data37Sender Bank Address
1226Payment Export Data38Sender Bank City
1226Payment Export Data39Sender Bank Post Code
1226Payment Export Data45Recipient Email Address
1226Payment Export Data46Recipient ID
1226Payment Export Data48Recipient Bank Clearing Std.
1226Payment Export Data49Recipient Bank Clearing Code
1226Payment Export Data84Payment Type
1226Payment Export Data89Invoice Amount
1226Payment Export Data90Invoice Date
1226Payment Export Data91Recipient County
1226Payment Export Data92Recipient Bank County
1226Payment Export Data93Sender Bank County
1226Payment Export Data130Importing Code
1226Payment Export Data131Importing Date
1226Payment Export Data132Importing Description
1226Payment Export Data133Costs Distribution
1226Payment Export Data134Message Structure
1226Payment Export Data135Own Address Info.
1226Payment Export Data171Transit No.
1226Payment Export Data200Format Command
1226Payment Export Data201Format Remittance Info Type
1226Payment Export Data220Format Payment Type
1226Payment Export Data221Format Expense Code
1226Payment Export Data222Format Text Code
1226Payment Export Data283Format Form Type
1228Payment Jnl. Export Error Text7Additional Information
1228Payment Jnl. Export Error Text8Support URL
5079Marketing Setup71Exchange Service URL
5079Marketing Setup72Exchange Account User Name
5079Marketing Setup73Exchange Account Password Key
5108Sales Line Archive1700Deferral Code
5108Sales Line Archive1702Returns Deferral Start Date
5110Purchase Line Archive1700Deferral Code
5110Purchase Line Archive1702Returns Deferral Start Date
5700Stockkeeping Unit7385Next Counting Start Date
5700Stockkeeping Unit7386Next Counting End Date
5741Transfer Line43Appl.-to Item Entry
5911Service Mgt. Setup950Copy Time Sheet to Order
5992Service Invoice Header710Document Exchange Identifier
5992Service Invoice Header711Document Exchange Status
5992Service Invoice Header712Doc. Exch. Original Identifier
5994Service Cr.Memo Header710Document Exchange Identifier
5994Service Cr.Memo Header711Document Exchange Status
5994Service Cr.Memo Header712Doc. Exch. Original Identifier
7302Bin Content6503Unit of Measure Filter
7380Phys. Invt. Item Selection12Next Counting Start Date
7380Phys. Invt. Item Selection13Next Counting End Date
8613Config. Package Table28Processing Report ID
8614Config. Package Record10Parent Record No.
8616Config. Package Field14Create Missing Codes
8616Config. Package Field15Mapping Exists
8619Config. Template Line16Language ID
9053Sales Cue9Average Days Delayed
9053Sales Cue10Sales Inv. – Pending Doc.Exch.
9053Sales Cue12Sales CrM. – Pending Doc.Exch.
9054Finance Cue22New Incoming Documents
9054Finance Cue23Approved Incoming Documents
9054Finance Cue24OCR Pending
9054Finance Cue25OCR Completed
9054Finance Cue26Requests to Approve
9054Finance Cue27Requests Sent for Approval
9054Finance Cue28User ID Filter
9060SB Owner Cue11Sales Invoices
9060SB Owner Cue12Unpaid Sales Invoices
9060SB Owner Cue13Overdue Sales Invoices
9060SB Owner Cue14Sales Quotes
9060SB Owner Cue30Purchase Invoices
9060SB Owner Cue31Unpaid Purchase Invoices
9060SB Owner Cue32Overdue Purchase Invoices
11014Certificate4PFX File
11014Certificate5Elster Certificate
11014Certificate6PFX File Password
2000000053Access Control8Scope
2000000053Access Control9App ID
2000000053Access Control10App Name
2000000069Add-in15Category
2000000069Add-in25Resource
2000000071Object Metadata30Hash
2000000071Object Metadata33Object Subtype
2000000071Object Metadata34Has Subscribers
2000000073User Personalization27Locale ID
2000000073User Personalization30Time Zone
2000000079Object Tracking15App Package ID
2000000079Object Tracking18Tenant ID
2000000112Server Instance7Management Port
2000000112Server Instance8Status
2000000120User11Authentication Email
2000000120User14Contact Email
2000000121User Property7Authentication Object ID

Removed table fields:

Table No.Table NameField No.Field Name
27Item7382Next Counting Period
79Company Information11020House Number
79Company Information11021Floor Number
79Company Information11022Room Number
744VAT Report Line Relation3Line No.
5600Fixed Asset11100Start of Use Date
5700Stockkeeping Unit7382Next Counting Period
7380Phys. Invt. Item Selection8Next Counting Period
8613Config. Package Table6No. of Database Records
11004Data Export Record Source20No. Of Sessions
11014Certificate3Certificate Ref.
2000000072Profile6Owner SID
2000000072Profile9Owner ID
2000000078Chart12Company
2000000100Debugger Breakpoint3User SID
2000000100Debugger Breakpoint5User ID
2000000104Debugger Watch3User SID
2000000104Debugger Watch5User ID

Removed tables: 452, 453, 464, 465, 1234, 2000000203

regards

 

Tables Changes from Nav 2013 to Nav 2016

For upgrade processes from nav 2013 to nav 2016 i have developed following table comparison.

New in Nav 2016:

60Document Sending Profile
61Electronic Document Format
130Incoming Document
131Incoming Documents Setup
132Incoming Document Approver
133Incoming Document Attachment
134Posted Docs. With No Inc. Buf.
135Acc. Sched. KPI Web Srv. Setup
136Acc. Sched. KPI Web Srv. Line
137Inc. Doc. Attachment Overview
249VAT Registration Log
477Report Inbox
487Business Chart User Setup
710Activity Log
806Geolocation
870Social Listening Setup
871Social Listening Search Topic
980Payment Registration Setup
981Payment Registration Buffer
983Document Search Result
1150Report Totals Buffer
1200Bank Export/Import Setup
1205Credit Transfer Register
1206Credit Transfer Entry
1209Credit Trans Re-export History
1213Data Exchange Type
1214Intermediate Data Import
1220Data Exch.
1221Data Exch. Field
1222Data Exch. Def
1223Data Exch. Column Def
1224Data Exch. Mapping
1225Data Exch. Field Mapping
1227Data Exch. Line Def
1231Positive Pay Entry
1232Positive Pay Entry Detail
1235XML Structure
1237Transformation Rule
1240Positive Pay Header
1241Positive Pay Detail
1242Positive Pay Footer
1248Ledger Entry Matching Buffer
1249Bank Stmt Multiple Match Line
1250Bank Statement Matching Buffer
1251Text-to-Account Mapping
1252Bank Pmt. Appl. Rule
1259Bank Data Conv. Bank
1260Bank Data Conv. Service Setup
1261Service Password
1265Data Exch. Field Mapping Buf.
1270OCR Service Setup
1271OCR Service Document Template
1275Doc. Exch. Service Setup
1280Bank Clearing Standard
1281Bank Data Conversion Pmt. Type
1293Payment Application Proposal
1294Applied Payment Entry
1295Posted Payment Recon. Hdr
1296Posted Payment Recon. Line
1299Payment Matching Details
1300Mini Customer Template
1301Mini Item Template
1302Mini Dimensions Template
1303Mini Vendor Template
1304Sales Price and Line Disc Buff
1305Mini Pages Mapping
1306Mini User Removed Instructions
1310Mini Chart Definition
1311Mini Last Used Chart
1312Mini Trial Balance Setup
1313Mini Activities Cue
1319Sales by Cust. Grp.Chart Setup
1400Service Connection
1500Workflow Buffer
1501Workflow
1502Workflow Step
1504Workflow Step Instance
1505Workflow – Table Relation
1506Workflow Table Relation Value
1507Workflow Step Buffer
1508Workflow Category
1509WF Event/Response Combination
1510Notification Template
1511Notification Entry
1512Notification Setup
1513Notification Schedule
1514Sent Notification Entry
1515Dynamic Request Page Entity
1516Dynamic Request Page Field
1520Workflow Event
1521Workflow Response
1522Workflow Event Queue
1523Workflow Step Argument
1524Workflow Rule
1525Workflow – Record Change
1526Workflow Record Change Archive
1530Workflow Step Instance Archive
1540Workflow User Group
1541Workflow User Group Member
1550Restricted Record
1650Curr. Exch. Rate Update Setup
1700Deferral Template
1701Deferral Header
1702Deferral Line
1703Deferral Post. Buffer
1704Posted Deferral Header
1705Posted Deferral Line
5127Deferral Header Archive
5128Deferral Line Archive
5329CRM Redirect
5330CRM Connection Setup
5331CRM Integration Record
5335Integration Table Mapping
5336Integration Field Mapping
5337Temp Integration Field Mapping
5338Integration Synch. Job
5339Integration Synch. Job Errors
5340CRM Systemuser
5341CRM Account
5342CRM Contact
5343CRM Opportunity
5344CRM Post
5345CRM Transactioncurrency
5346CRM Pricelevel
5347CRM Productpricelevel
5348CRM Product
5349CRM Incident
5350CRM Incidentresolution
5351CRM Quote
5352CRM Quotedetail
5353CRM Salesorder
5354CRM Salesorderdetail
5355CRM Invoice
5356CRM Invoicedetail
5357CRM Contract
5359CRM Team
5360CRM Customeraddress
5361CRM Uom
5362CRM Uomschedule
5363CRM Organization
5364CRM Businessunit
5365CRM Discount
5366CRM Discounttype
5367CRM Account Statistics
5368CRM NAV Connection
5370CRM Synch. Job Status Cue
5371Service Connection Error
5372Service Connection Status
8628Config. Field Mapping
8640Config. Text Transformation
8650DataExch-RapidStart Buffer
9000User Group
9001User Group Member
9002User Group Access Control
9003User Group Permission Set
9070Accounting Services Cue
9170Profile Resource Import/Export
9500Email Item
9600XML Schema
9610XML Schema Element
9611XML Schema Restriction
9612Referenced XML Schema
9650Custom Report Layout
9651Report Layout Selection
9656Report Layout Update Log
9657Custom Report Selection
9701Cue Setup
9800Table Permission Buffer
130400CAL Test Suite
130401CAL Test Line
130402CAL Test Codeunit
130403CAL Test Enabled Codeunit
130404CAL Test Method
130405CAL Test Result
130406CAL Test Coverage Map
2000000114Document Service
2000000150NAV App Object Metadata
2000000151NAV App Tenant App
2000000152NAV App Data Archive
2000000153NAV App Installed App
2000000160NAV App
2000000161NAV App Dependencies
2000000162NAV App Capabilities
2000000163NAV App Object Prerequisites
2000000165Tenant Permission Set
2000000166Tenant Permission

Removed from table list:

452Approval Setup
453Approval Code
464Approval Templates
465Additional Approvers
1234CSV Buffer
2000000203Database Key Groups

regards

 

Tables Changes from Nav 2013 to Nav 2017 – first shot

For those who would like to have release notes when upgrading from nav 2013 to nav 2017 i have developed following table comparison.

New in Nav 2017:

60Document Sending Profile
61Electronic Document Format
62Record Export Buffer
130Incoming Document
131Incoming Documents Setup
132Incoming Document Approver
133Incoming Document Attachment
134Posted Docs. With No Inc. Buf.
135Acc. Sched. KPI Web Srv. Setup
136Acc. Sched. KPI Web Srv. Line
137Inc. Doc. Attachment Overview
197Acc. Sched. KPI Buffer
249VAT Registration Log
326Tax Setup
477Report Inbox
487Business Chart User Setup
570G/L Account Category
710Activity Log
777Online Bank Acc. Link
806Geolocation
851Cortana Intelligence
870Social Listening Setup
871Social Listening Search Topic
980Payment Registration Setup
981Payment Registration Buffer
983Document Search Result
1034Job Planning Line – Calendar
1060Payment Service Setup
1062Payment Reporting Argument
1150Report Totals Buffer
1200Bank Export/Import Setup
1205Credit Transfer Register
1206Credit Transfer Entry
1209Credit Trans Re-export History
1213Data Exchange Type
1214Intermediate Data Import
1220Data Exch.
1221Data Exch. Field
1222Data Exch. Def
1223Data Exch. Column Def
1224Data Exch. Mapping
1225Data Exch. Field Mapping
1227Data Exch. Line Def
1231Positive Pay Entry
1232Positive Pay Entry Detail
1235XML Buffer
1237Transformation Rule
1240Positive Pay Header
1241Positive Pay Detail
1242Positive Pay Footer
1248Ledger Entry Matching Buffer
1249Bank Stmt Multiple Match Line
1250Bank Statement Matching Buffer
1251Text-to-Account Mapping
1252Bank Pmt. Appl. Rule
1259Bank Data Conv. Bank
1260Bank Data Conv. Service Setup
1261Service Password
1265Data Exch. Field Mapping Buf.
1270OCR Service Setup
1271OCR Service Document Template
1275Doc. Exch. Service Setup
1280Bank Clearing Standard
1281Bank Data Conversion Pmt. Type
1284Outstanding Bank Transaction
1293Payment Application Proposal
1294Applied Payment Entry
1295Posted Payment Recon. Hdr
1296Posted Payment Recon. Line
1299Payment Matching Details
1300Mini Customer Template
1301Item Template
1302Dimensions Template
1303Mini Vendor Template
1304Sales Price and Line Disc Buff
1306User Preference
1307O365 Device Setup Instructions
1308O365 Getting Started Page Data
1309O365 Getting Started
1310Chart Definition
1311Last Used Chart
1312Trial Balance Setup
1313Activities Cue
1319Sales by Cust. Grp.Chart Setup
1400Service Connection
1430Role Center Notifications
1500Workflow Buffer
1501Workflow
1502Workflow Step
1504Workflow Step Instance
1505Workflow – Table Relation
1506Workflow Table Relation Value
1507Workflow Step Buffer
1508Workflow Category
1509WF Event/Response Combination
1511Notification Entry
1512Notification Setup
1513Notification Schedule
1514Sent Notification Entry
1515Dynamic Request Page Entity
1516Dynamic Request Page Field
1518My Notifications
1520Workflow Event
1521Workflow Response
1522Workflow Event Queue
1523Workflow Step Argument
1524Workflow Rule
1525Workflow – Record Change
1526Workflow Record Change Archive
1530Workflow Step Instance Archive
1540Workflow User Group
1541Workflow User Group Member
1550Restricted Record
1600Office Add-in Context
1601Office Add-in Setup
1602Exchange Object
1606Office Invoice
1610Office Add-in
1612Office Admin. Credentials
1615Office Job Journal
1620Office Document Selection
1625Office Contact Associations
1638Invoiced Booking Item
1650Curr. Exch. Rate Update Setup
1660Payroll Setup
1661Import G/L Transaction
1662Payroll Import Buffer
1700Deferral Template
1701Deferral Header
1702Deferral Line
1703Deferral Post. Buffer
1704Posted Deferral Header
1705Posted Deferral Line
1800Data Migrator Registration
1801Data Migration Entity
1802Assisted Company Setup Status
1803Assisted Setup
1804Approval Workflow Wizard
1805Encrypted Key/Value
1806Data Migration Setup
1807Assisted Setup Log
1810Assisted Setup Icons
1900Cancelled Document
2000Time Series Buffer
2001Time Series Forecast
2002Azure Machine Learning Usage
2100Sales Document Icon
2103O365 Sales Document
2105O365 Payment History Buffer
2110O365 Sales Initial Setup
2118O365 Email Setup
5127Deferral Header Archive
5128Deferral Line Archive
5324Exchange Service Setup
5329CRM Redirect
5330CRM Connection Setup
5331CRM Integration Record
5332Coupling Record Buffer
5333Coupling Field Buffer
5334CRM Option Mapping
5335Integration Table Mapping
5336Integration Field Mapping
5337Temp Integration Field Mapping
5338Integration Synch. Job
5339Integration Synch. Job Errors
5340CRM Systemuser
5341CRM Account
5342CRM Contact
5343CRM Opportunity
5344CRM Post
5345CRM Transactioncurrency
5346CRM Pricelevel
5347CRM Productpricelevel
5348CRM Product
5349CRM Incident
5350CRM Incidentresolution
5351CRM Quote
5352CRM Quotedetail
5353CRM Salesorder
5354CRM Salesorderdetail
5355CRM Invoice
5356CRM Invoicedetail
5357CRM Contract
5359CRM Team
5360CRM Customeraddress
5361CRM Uom
5362CRM Uomschedule
5363CRM Organization
5364CRM Businessunit
5365CRM Discount
5366CRM Discounttype
5367CRM Account Statistics
5368CRM NAV Connection
5370CRM Synch. Job Status Cue
6300Azure AD App Setup
6301Power BI Report Configuration
6302Power BI Report Buffer
6303Azure AD Mgt. Setup
6700Exchange Sync
6701Exchange Contact
6702Booking Sync
6703Booking Service
6704Booking Mailbox
6705Booking Staff
6706Booking Service Mapping
6707Booking Item
6710Tenant Web Service OData
6711Tenant Web Service Columns
6712Tenant Web Service Filter
6721Booking Mgr. Setup
7500Item Attribute
7501Item Attribute Value
7502Item Attribute Translation
7503Item Attr. Value Translation
7504Item Attribute Value Selection
7505Item Attribute Value Mapping
7506Filter Item Attributes Buffer
8400Record Set Definition
8401Record Set Tree
8402Record Set Buffer
8628Config. Field Mapping
8630Config. Media Buffer
8631Config. Table Processing Rule
8632Config. Record For Processing
8650DataExch-RapidStart Buffer
9000User Group
9001User Group Member
9002User Group Access Control
9003User Group Permission Set
9004Plan
9005User Plan
9006Plan Permission Set
9007User Group Plan
9008User Login
9042Team Member Cue
9062User Security Status
9063Relationship Mgmt. Cue
9069O365 Sales Cue
9070Accounting Services Cue
9153My Account
9154My Job
9155My Time Sheets
9170Profile Resource Import/Export
9178Application Area Setup
9179Application Area Buffer
9190Terms And Conditions
9191Terms And Conditions State
9192Pending Company Rename
9400Media Repository
9500Email Item
9600XML Schema
9610XML Schema Element
9611XML Schema Restriction
9612Referenced XML Schema
9650Custom Report Layout
9651Report Layout Selection
9656Report Layout Update Log
9657Custom Report Selection
9701Cue Setup
9800Table Permission Buffer
9900Web Service Aggregate
130400CAL Test Suite
130401CAL Test Line
130402CAL Test Codeunit
130403CAL Test Enabled Codeunit
130404CAL Test Method
130405CAL Test Result
130406CAL Test Coverage Map
2000000114Document Service
2000000150NAV App Object Metadata
2000000151NAV App Tenant App
2000000152NAV App Data Archive
2000000153NAV App Installed App
2000000160NAV App
2000000161NAV App Dependencies
2000000162NAV App Capabilities
2000000163NAV App Object Prerequisites
2000000165Tenant Permission Set
2000000166Tenant Permission
2000000168Tenant Web Service
2000000169NAV App Tenant Add-In
2000000170Configuration Package File
2000000175Scheduled Task
2000000180Media Set
2000000181Media
2000000183Tenant Media Set
2000000184Tenant Media
2000000185Tenant Media Thumbnails
2000000189Tenant License State
2000000190Entitlement Set
2000000191Entitlement
2000000194Webhook Notification
2000000195Membership Entitlement
2000000196Object Options
2000000197Token Cache
2000000198Page Documentation
2000000199Webhook Subscription

 

Removed from table list:

452Approval Setup
453Approval Code
464Approval Templates
465Additional Approvers
470Job Queue
824DO Payment Connection Details
825DO Payment Connection Setup
826DO Payment Setup
827DO Payment Credit Card
828DO Payment Credit Card Number
829DO Payment Trans. Log Entry
830DO Payment Card Type
5150Integration Page
2000000203Database Key Groups

regards

 

How to: Get field values from dynamically loaded tables

If you need field values from different tables at runtime within the same function, then there is a nice solution:

 

// variablestableType, Option : CompInfo,PayTermresult : ARRAY [5] OF Variant OnRun()LoadDynamicallyFieldValues(tableType::CompInfo, result);MESSAGE(FORMAT(result[1])+', '+FORMAT(result[2])+', '+FORMAT(result[3]));LoadDynamicallyFieldValues(tableType::PayTerm, result);MESSAGE(FORMAT(result[1])+', '+FORMAT(result[2])+', '+FORMAT(result[3]));LoadDynamicallyFieldValues(tableType : 'CompInfo,PayTerm';VAR result : ARRAY [5] OF Variant)CASE tableType of tableType::CompInfo: begin  compInfo.GET;  recID := compInfo.RECORDID;  GetFieldValue(recID,'Name',result[1]);  GetFieldValue(recID,'Address',result[2]);  GetFieldValue(recID,'City',result[3]); END; tableType::PayTerm: BEGIN  payTerm.FINDFIRST;  recID := payTerm.RECORDID;  GetFieldValue(recID,'Code',result[2]);  GetFieldValue(recID,'Discount %',result[3]);  GetFieldValue(recID,'Description',result[1]); END;END;GetFieldValue(recID : RecordID;fieldName : Text;VAR fieldValue : Variant)recRef.GET(recID);field.SETRANGE(FieldName,fieldName);field.SETRANGE(TableNo,recID.TABLENO);IF field.FINDFIRST THEN BEGIN fieldRef := recRef.FIELD(field."No."); fieldValue := fieldRef.VALUE;END;

cheers

 

How to: Create an automation for usage in Navision

The development of a COM component with .Net for usage in Navision needs a special approach. Start with a new C# project, project type Class Library. Set the project to “Make assembly com-visible”. The simple automation provides a string property and a method to show a .net message box.

// a sample codeusing System;using System.Runtime.InteropServices;using System.Windows.Forms;namespace SampleAutom{ // the interface, so that the methods and properties are shown in Nav // needed attributes InterfaceType and Guid [InterfaceType(ComInterfaceType.InterfaceIsDual)] // create a new Guid [Guid("9304DD04-5EF0-498E-893E-CB644CD34656")]  interface IMyInterface {  // set a DispId for each method/property  [DispId(1)]  int MsgBox(string message);  [DispId(2)]  string Title { get; set; } } // class attributes [ClassInterface(ClassInterfaceType.AutoDual)] [Guid("D9E556F3-4D85-45C9-965A-DB3D918528CD")] // implement the interface public class TestCom : IMyInterface {  string _title = "Dynamics Nav";  public TestCom()  { }  // with property Title you can set/read the title of the msgbox  public string Title  {get{ return _title; }  set{ _title = value; }  }// method msgbox returns an integer value according the clicked button  // Yes = 6, No = 7, Cancel = 2  public int MsgBox(string message)  {var result = MessageBox.Show(message, Title,MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);return (int)result;  } }}

To install the new automation run visual studio in admin mode. after restart and loading the project build/compile the project.

Now start Navision and create a new codeunit. In the OnRun trigger add following code:

// TestCom, Automation, 'SampleAutom'.TestCom // RetVal, Integer CREATE(TestCom);TestCom.Title := '.Net Msgbox run in Navision';RetVal := TestCom.MsgBox('Your message text ...');MESSAGE(FORMAT(RetVal));CLEAR(TestCom);

Now run the codeunit. It results in:

    

cheers

How to work with big item descriptions

Sometimes it’s needed to save very long descriptions, but in Nav text fields can have only 250 characters. Additional you may want to search in these long text values. You can add a couple of these text fields to save long texts or save the text in text files and add them to the item. But what about searching? Not that easy.
An other option to save long texts is the usage of blob fields. For that option i developed a solution.

First add a new field “Description 3” to table Item, type BLOB, subtype Memo.
Then edit page Item Card, add a global variable Desc3Txt of type text with no length. Add the variable as new field to the item card, Editable=False, MultiLine=Yes.
Add following code to trigger OnAfterGetRecord in item card page:

// InStr | InStreamCALCFIELDS("Description 3");IF "Description 3".HASVALUE THEN BEGIN  "Description 3".CREATEINSTREAM(InStr);  InStr.READ(Desc3Txt);END;

Add to trigger Desc3Txt – OnAssistEdit()

// OutStr | OutStream // EditCtrl | DotNet | Archer.TextEdit.'Archer.TextEdit, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1465b259ee2284cb' CLEAR(EditCtrl);EditCtrl := EditCtrl.TextEdit;EditCtrl.Load(Desc3Txt);EditCtrl.ShowDialog;Desc3Txt := EditCtrl.Save;EditCtrl.Close;CLEAR(EditCtrl);"Description 3".CREATEOUTSTREAM(OutStr);OutStr.WRITE(Desc3Txt);MODIFY;CurrPage.UPDATE;

Page item card with new multiline text field “Description 3” and Assist Button.

Clicking on Assist Button starts the TextEdit Control and loads the current text. After changing the text and closing the text control, you are asked, if you want to change the text.

Now we need the opportunity to search within the new text/blob field. For that we need a new page Item Search. That new field cannot be searched using the standard search function.

Create a new page with objectid 50000, name Item Search. Add a group under the contentarea, add a global text variable SearchString, add a new field under the group with SearchString as SourceExpr. Add another group, add a new line with type part. Later we set the value for property PagePartID.

To show the search result we need another page: type listpart, objectid 50001, name Item Search Result. As source of the new page we need a new table: objectid 50000, name Item Search Result.

The new page 50001:

Properties: Editable=False, SourceTable=50001, SourceTableTemporary=Yes.

Now add global function SetData(SearchFilter : Text) to the new page. Add following code to the new function:

// local variables// Item, Record, Item // ItemSearchResultLine, Record, Item Search Result // InStr, InStream // Desc3Txt, Text // LineNo, Integer DELETEALL;LineNo := 10;Item.FINDSET;REPEAT  Item.CALCFIELDS("Description 3");  IF Item."Description 3".HASVALUE THEN BEGINItem."Description 3".CREATEINSTREAM(InStr);InStr.READTEXT(Desc3Txt);IF STRPOS(LOWERCASE(Desc3Txt),LOWERCASE(SearchFilter)) > 0 THEN BEGIN  "Line No." := LineNo;  "Item No." := Item."No.";  Description := Item.Description;  "Description 2" := Item."Description 2";  "Description 3" := COPYSTR(Desc3Txt,1,250); // first 250 chars  INSERT(FALSE);  LineNo += 10;END;  END;UNTIL Item.NEXT = 0;CurrPage.UPDATE(FALSE);

Now you can set the property PagePartID in the part line in page 50000 to 50001.

For calling the search function we need a Search button in page 50000.
Add following code to trigger Search – OnAction()
CurrPage.ItemSearchResultLines.PAGE.SetData(SearchString);

The new Item Search Page with a search result.

You can download the TextEdit Control here.

Followup:
You could simplify the solution by:
* Search page: Use only page 50001, add a second group at the top with field SearchString. So page 50000 is not needed.
* Page Item Card: remove the textedit control and the according code, set field Desc3Txt to editable, add the code to fill the blob field “description 3” using outstream to trigger Desc3Txt-OnValidate.

cheers

 

Mass data import

There was an issue with importing all UK post codes from a csv file, about 3m post codes. Importing using rapidstart services (excel import) can cause buffer overflow messages. excel itself has row/size limitations. Increasing MaxNoOfXMLRecordsToSend in config file ClientUserSettings.config from default value 5000 to e.g. 20000 is no problem and can help. Also changing MaxUploadSize in server config file CustomSettings.config is an option (also available via nav service admin console). Better choice for mass data import are dataports (older nav versions) and xmlports.

Another option is to develope a report, which imports the file contents and loops through the lines. quite simple, no memory issues.

create a new report, add following code to trigger OnPreReport():

OnPreReport()// variables PostCode, Record, Post Code file, File fileName, Text, 250 line, Text, 1024 dlg, Dialog idx, Integer txtValue, Text, 100// code PostCode.DELETEALL(FALSE); COMMIT; dlg.OPEN('#1###### #2######'); // show progress dialog idx := 1;// downloaded post code file from https://www.doogal.co.uk/PostcodeDownloads.php// as test file, size: 500k, 2.1m lines, some of them contain obsolete post codes fileName := 'c:\temp\England postcodes.csv'; file.WRITEMODE := FALSE; file.TEXTMODE := TRUE; file.OPEN(fileName); file.READ(line); // skip header line WHILE file.READ(line) > 0 DO BEGIN   // skip obsolete post codes: 2. value = No   IF SELECTSTR(2,line) = 'Yes' THEN BEGIN  PostCode.Code := SELECTSTR(1,line); PostCode.VALIDATE(City,GetValue(SELECTSTR(15,line))); PostCode.County := GetValue(SELECTSTR(8,line)); PostCode."Country/Region Code" := 'GB'; PostCode.INSERT; dlg.UPDATE(1,idx); dlg.UPDATE(2,PostCode.Code); idx += 1;   END; END; file.CLOSE; dlg.CLOSE; MESSAGE(FORMAT(idx) + ' post codes imported.');LOCAL GetValue(txtValue : Text[100]) : Text txtValue := DELCHR(txtValue,'<','"'); // remove leading "   txtValue := DELCHR(txtValue,'>','"'); // remove trailing " IF STRLEN(txtValue) > 30 THEN // fields City,County are Text[30]   txtValue := COPYSTR(txtValue,1,30); // cut text, leading 30 chars EXIT(txtValue);

report runs with 1.5m valid lines/records about 5 min.

cheers