List of CU's for Dynamics NAV 2018.
Dynamics 365 Business Central: show/hide fields on pages
Your NAV Cumulative Updates are now in One Place
Business Central, deleting records from some tables for “Go-Live”
Business Central, deleting records from some tables for “Go-Live”
Assuming that it is necessary to delete data only from some tables for example for a Go-live (I remember that in Business Central Online – SaaS cannot access the database in any way, I do not like this thing but it is so).
How can we do?
Don’t Panic… Keep calm and GO LIVE! You have two methods to achieve this goal.
#1 – OPEN IN EXCEL: It does not allow deleting everything, only some tables, for example it is not possible to delete tables with transactional data (non-sense and very large time consuming). It is the only mode officially provided by Microsoft embedded with the pages.
#2 Go-LIVE Tool CUSTOM EXTENSION: Create and install a dedicated extension (for example, creating a delete report or a table selection mask and assigning the necessary permissions). In this case I modified one of the old GO-LIVE tools already existing (there are a couple of versions of it) adapting it to BC Online, in this case that of Olof Simren. Remember that it is to be used with discretion, only in the test \ setup environments … NOT on the production db of course.
Both solutions are based on the “DELETE” Standard method of BC
DELETE Method (Record)
Deletes a record in a Dynamics 365 Business Central table
[Ok :=] Record.DELETE([RunTrigger])
#1 – USE “OPEN IN EXCEL”
As said is the solution proposed by Microsoft, waiting for other tools \ kit etc.
Example:
- Delete the table “Customer”
You can delete data directly from Excel, deleting each records, Publish and it works, we have NO more customers in my database.
- “BLANK” ALL DATA e REIMPORT THE EXCEL FILE
And the Customer table is Empty!
#2 – MY “BCGOLIVETOOL EXTENSION”
As I said, I created this very simple extension that allows you to erase the data from the chosen Tables, based on one of the already existing Go-Live tools; it’s a very simple, improvable app, useful for quickly deleting data.
Objects in APP
- Table
- Page
- Codeunit
- XML Permissions file for master table
WHAT YOU CAN’T DO
For example, some methods or system tables that are locked ByDesign and cannot be used (for system security and integrity); I could not therefore use some methods or table ex: “table information”, DELETE Method is obviously allowed.
Is only permitted to publish the “Objects” and “Fields” Virtual tables AS Web Services, if you need to recover tabled and fields Names from these.
TYPES OR METHODS BLOCKED “CAN’T BE USED IN EXTENSIONS” ERROR
SOME CHECKS BEFORE INSTALL THE APP
“RUNTIME” VERSION 1.0, 2.0
- In this case i’m using Runtime 2.0 (October ’18 Release)
@Today you cannot upload a Runtime 2.0 Extension, Only 1.0
Recompile with Runtime 1.0 version
“Deployment failed. Errors: App ID : bf8dac69-7579-48bf-8df6-e21544280ad5 Message : { The runtime version of the extension package is currently set to ‘2.0’. The runtime version must be set to ‘1.0’ or earlier in the app.json file in order to install the extension package on this server. } – Job Id : d5885f00-0c37-49da-9466-48202f2adf18”
MICROSOFT SYSTEM
Use Platform and Application = 12.0.0.0 to Deploy extensions for Current BC Online release
If you try to use v. 13.0.0.0… instead of 12.0.0.0 …
Deployment failed. Errors: App ID : bf8dac69-7579-48bf-8df6-e21544280ad5 Message : { Extension compilation failed
error AL1024: A package with publisher ‘Microsoft’, name ‘System’, and a version compatible with ‘13.0.0.0’ could not be loaded. } – Job Id : a5932f7c-f880-49a4-aff6-25009278b7bc
You can download the APP BCGOLIVETOOL from:
AL Code Source
https://github.com/rstefanetti/AL-Samples/tree/AL-Go-Live-Tool
READY APP: https://github.com/rstefanetti/AL-Samples/blob/AL-Go-Live-Tool/Roberto%20Stefanetti_BCGT_2.1.0.0.app
TESTING ON PRODUCTION ENVIRONMENT! Load the APP on BC Online
Create a Test Company for test Data Delection (Copy Company from Cronus ad example)
UPLOAD THE APP
AND RUN “Delete Records Page”!
“HOW” TO USE THE INSTALLED APP
Search for “Record Deletion” in the SERCH MENU’
Insert the tables that you want do delete (Table ID is the table “No.”)
- Example: tbl 32, 17, 21, 25, etc. manually inserrted.
- You can import tables using RapidStart Services (a package wth all tables to delete), loaded from an Excel List for example.
Click on “Delete Records”
..AND WAIT SOME MINUTES.. ALL THE TABLES LISTED IN PAGE WILL BE DELETED.
Check Data from the Web Client, you ca do the same with the Windows Client (if you are using BC On-premise)
https://businesscentral.dynamics.com/?company=TestDeleteCompany&table=32
http://localhost:8981/dynamicsnav130/?company=TestDeleteCompany&table=32
IF The System “Hangs Up” or NOT complete the deletions… don’t warry…. you can run more times!
Stay tuned!
Setting up multitenant without using commands.
How-To: Image Analyzer in Dynamics NAV as Cognitive Service
AL Code Analysis Rules (Diagnostic Descriptors) – Updated Again
I have been blogging a few times about the Diagnostic Descriptors we get when enabling code analysis. Well – yet again, we have new ones. But I’m not going to keep updating these rulesets, as Microsoft is now doing that on docs. So let me give you one more overview, and the resources to the pages on docs per analyzer.
Here we go….
For AppSourceCop, it was already known for a while, but now the cop is going to make sure you have a translation file when creating an app for AppSource. On top of that, also quite a good one, it makes sure you don’t forget the data classification (cfr. GDPR in Europe)
DiagnosticId | Title | Description | MessageFormat | Category | Default Severety | IsEnabledByDefault |
AS0001 | Tables cannot be deleted. | Tables cannot be deleted. | Table ‘{0}’ has been deleted. | Upgrade | Error | TRUE |
AS0002 | Fields cannot be deleted. | Fields cannot be deleted. | Field ‘{0}’ has been deleted from table ‘{1}’. | Upgrade | Error | TRUE |
AS0003 | The previous version was not found. | The previous version was not found. | The previous version was not found. Name='{0}’, Publisher='{1}’, Version'{2}’ | Upgrade | Warning | TRUE |
AS0004 | Fields cannot change type. | Fields cannot change type. | Field ‘{0}’ has changed type from ‘{1}’ to ‘{2}’. Type changes are not allowed. | Upgrade | Error | TRUE |
AS0005 | Fields cannot change name. | Fields cannot change name. | Field ‘{0}’ has changed name to ‘{1}’. Name changes are not allowed. | Upgrade | Error | TRUE |
AS0006 | Tables cannot change name. | Tables cannot change name. | Table ‘{0}’ has changed name to ‘{1}’. Name changes are not allowed. | Upgrade | Error | TRUE |
AS0007 | Properties cannot change value. | Properties cannot change value. | The property ‘{0}’ has changed value. Value change is not allowed for this property. | Upgrade | Error | TRUE |
AS0008 | Keys cannot change name. | Keys cannot change name. | Key ‘{0}’ has changed name to ‘{1}’. Name changes are not allowed. | Upgrade | Error | TRUE |
AS0009 | Key fields cannot be changed. | Key fields cannot be changed. | Key ‘{0}’ has changed the key fields. Changes to the field list are not allowed. | Upgrade | Error | TRUE |
AS0010 | Keys cannot be deleted. | Keys cannot be deleted. | Key ‘{0}’ has been deleted. Key deletions is not allowed. | Upgrade | Error | TRUE |
AS0011 | A prefix is required | A prefix is required | The identifier ‘{0}’ must have the prefix ‘{1}’. | Extensibility | Error | TRUE |
AS0012 | A suffix is required | A suffix is required | The identifier ‘{0}’ must have the suffix ‘{1}’. | Extensibility | Error | TRUE |
AS0013 | The field identifier must be within the allowed range. | The field identifier must be within the allowed range. | The field identifier ‘{0}’ is not valid. It must be within the allowed range ‘{1}’ – ‘{2}’ | Extensibility | Error | TRUE |
AS0014 | The project manifest must contain the allocated identifier range. | The project manifest must contain the allocated identifier range. | The project manifest must contain the allocated identifier range. | Extensibility | Error | TRUE |
AS0015 | Please enable the TranslationFile feature in the app.json file for your project. | Please enable the TranslationFile feature in the app.json file for your project. | Please enable the TranslationFile feature in the app.json file for your project. | Extensibility | Error | TRUE |
AS0016 | Fields of field class ‘Normal’ must use the DataClassification property and its value should be different from ToBeClassified. | Fields of field class ‘Normal’ must use the DataClassification property and its value must be different from ToBeClassified. FlowFields and FlowFilter fields are automatically set to the SystemMetadata data classification. | Field with name ‘{0}’ must use the DataClassification property and its value should be different from ToBeClassified. | Extensibility | Error | TRUE |
Also new stuff in the CodeCop (the generic analyzer which you should always enable):
AA0001 | There must be exactly one space character on each side of a binary operator such as := + – AND OR =. | There must be exactly one space character on each side of a binary operator such as := + – AND OR =. The parameter comma operator however, should have no spaces. | There must be exactly one space character on each side of ‘{0}’. | Readability | Warning | TRUE |
AA0002 | There must be no space character. | There must be no space character between a unary operator and its argument. | There must be no space character after ‘{0}’. | Readability | Warning | TRUE |
AA0003 | There must be exactly one space character between the NOT operator and its argument. | There must be exactly one space character between the NOT operator and its argument. | There must be exactly one space character after ‘{0}’. | Readability | Warning | TRUE |
AA0005 | Only use BEGIN..END to enclose compound statements. | Only use BEGIN..END to enclose compound statements. | Only use BEGIN..END to enclose compound statements. | Readability | Warning | TRUE |
AA0008 | Function calls should have parenthesis even if they do not have any parameters. | Use parenthesis in a function call even if the function does not have any parameters. | You must specify open and close parenthesis after ‘{0}’. | Readability | Warning | TRUE |
AA0013 | When BEGIN follows THEN, ELSE, DO, it should be on the same line, preceded by one space character. | When BEGIN follows THEN, ELSE, DO, it should be on the same line, preceded by one space character. | When BEGIN follows THEN, ELSE, DO, it should be on the same line, preceded by one space character. | Readability | Warning | TRUE |
AA0018 | The END, IF, REPEAT, UNTIL, FOR, WHILE and CASE statement should always start a line. | The END, IF, REPEAT, UNTIL, FOR, WHILE and CASE statement should always start a line. | The ‘{0}’ keyword should always start a line. | Readability | Warning | TRUE |
AA0021 | Variable declarations should be ordered by type. | Variable declarations should be ordered by type. In general, object and complex variable types are listed first followed by simple variables. | Variable declarations should be ordered by type. | Readability | Warning | TRUE |
AA0022 | Substitute the IF THEN ELSE structure with a CASE. | An IF followed by two or more ELSE IF should be replaced with a CASE. | Substitute the IF THEN ELSE structure with a CASE. | Readability | Warning | TRUE |
AA0040 | Avoid using nested WITH statements | It can be difficult to see what variable that a member variable or function refers to, when nesting WITH statements of variables with different types | This WITH statement is nested inside another WITH statement at ‘{0}’ | Readability | Warning | TRUE |
AA0074 | TextConst and Label variable names should have an approved suffix. | TextConst and Label variable names should have a suffix (an approved three-letter suffix: Msg, Tok, Err, Qst, Lbl, Txt) describing usage. | TextConst and Label variable ‘{0}’ must have a suffix from this list: Msg, Tok, Err, Qst, Lbl, Txt. | Readability | Warning | TRUE |
AA0100 | Do not have identifiers with quotes in the name. | Do not have identifiers with quotes in the name. | Do not have identifiers with quotes in the name. | Design | Warning | TRUE |
AA0101 | Use camel case captions in pages of type API. | For pages of the type API and all their field controls, the Caption property value should be camel-cased to follow the Microsoft REST API Guidelines. | For pages of the type API and all their field controls, the Caption property value should be camel-cased. | Design | Warning | TRUE |
AA0102 | Use camel case name for field controls in pages of type API. | Field controls in pages of type API should have a camel case name in order to follow the Microsoft REST API Guidelines. | Field controls in pages of type API should have a camel case name. | Design | Warning | TRUE |
AA0136 | Do not write code that will never be hit. | Do not write code that will never be hit. | Unreachable code detected. | Design | Warning | TRUE |
AA0137 | Do not declare variables that are unused. | Do not declare variables that are unused. | Variable ‘{0}’ is unused in the method ‘{1}’. | Design | Warning | TRUE |
AA0139 | Do not assign a text to a target with smaller size. | Do not assign a text to a target with smaller size. | Possible overflow assigning ‘{0}’ to ‘{1}’. | Design | Warning | TRUE |
AA0161 | Only use ASSERTERROR in Test Codeunits. | Only use ASSERTERROR in Test Codeunits. | Only use ASSERTERROR in Test Codeunits. | Design | Warning | TRUE |
AA0194 | Only write actions that have an effect. | Remember to specify either the ‘OnAction’ trigger or ‘RunObject’ property on an action. | Remember to specify either the ‘OnAction’ trigger or ‘RunObject’ property on an action. | Design | Warning | TRUE |
The “PerTenantExtensionCop” analyzes as if you are writing a one-off customization for a customer in the cloud – so different rules apply.
PTE0001 | Object ID must be in free range. | Object ID must be in free range. | {0} ‘{1}’ has an ID of [{2}]. It must be between {3} and {4}. | ObjectValidation | Error | TRUE |
PTE0002 | Field ID must be in free range. | Field ID must be in free range. | Field ‘{0}’ has an ID of [{1}]. It must be between {2} and {3}. | ObjectValidation | Error | TRUE |
PTE0003 | Functions must not subscribe to CompanyOpen events. | Functions must not subscribe to CompanyOpen events. | Function {0} subscribes to {1}. | ObjectValidation | Error | TRUE |
PTE0004 | Table definitions must have a matching permission set. | Table definitions must have a matching permission set. | Table ‘{0}’ is missing a matching permission set. | ObjectValidation | Error | TRUE |
PTE0005 | Property ‘target’ has invalid value. | ‘Internal’ is a reserved usage for the ‘target’ property. | App.json ‘target’ property must not be set to ‘Internal’. | PackageValidation | Error | TRUE |
PTE0006 | Encryption key functions must not be invoked. | Encryption key functions must not be invoked. | Encryption key function ‘{0}’ is not allowed. | PackageValidation | Error | TRUE |
PTE0007 | Test assertion functions are not allowed in a non-test context. | Test assertion functions are not allowed in a non-test context. | Assertion function ‘{0}’ must not be invoked. | PackageValidation | Error | TRUE |
PTE0008 | Fields must use ApplicationArea property. | Fields must use ApplicationArea property. | Field with name ‘{0}’ must have a value for the ApplicationArea property. | PackageValidation | Error | TRUE |
PTE0009 | This app.json property must not be used for per-tenant extensions. | The properties ‘HelpBaseUrl’ and ‘SupportedLocales’ are reserved for translation apps. | The app.json ‘{0}’ property must not be used for per-tenant extensions. | PackageValidation | Error | TRUE |
Last but not least: the UICop to check the UI if UI guidelines are met.
AW0001 | The Web client does not support displaying the Request page of XMLPorts. | The Web client does not support displaying the Request page of XMLPorts. | The Web client does not support displaying the Request page of the XMLPort ‘{0}’. | WebClient | Warning | TRUE |
AW0002 | The Web client does not support displaying both Actions and Fields in Cue Groups. Only Fields will be displayed. | The Web client does not support displaying both Actions and Fields in Cue Groups. Only Fields will be displayed. | The Web client does not support displaying both Actions and Fields in the Cue Group ‘{0}’. Only Fields will be displayed. | WebClient | Warning | TRUE |
AW0003 | The Web client does not support displaying Repeater controls containing Parts. | The Web client does not support displaying Repeater controls containing Parts. | The Web client does not support displaying Repeater controls containing Parts. | WebClient | Warning | TRUE |
AW0004 | A Blob cannot be used as a source expression for a page field. | A Blob cannot be used as a source expression for a page field. | A Blob cannot be used as a source expression for a page field. | WebClient | Warning | TRUE |
AW0005 | Actions should use the Image property. | Actions should use the Image property. | Action with name ‘{0}’ should have a value for the Image property. | WebClient | Info | TRUE |
MSDYN365BC - Microsoft Dynamics Business Central On-Premise Partner Preview.

Welcome Back, I am trying to get back to my writing schedule.
I will start with an update about Microsoft Dynamics Business Central.
Is Digital Transformation for sale? Really?
How to add custom permission sets
Connection Error while launching debugger in NAV
Launching our first App, Discontinued Master Data
“Git” Going with Extensions
Why Attend User Group Summit in Phoenix When You Can Just Login Online?
It is true, the value of being a part of the Dynamic Communities User Groups is that they are available to members year round, 24/7. You can login online anytime, anywhere. There is virtual collaboration, training and support.
So why is it so valuable to also attend a live Dynamic Communities User Group event?
Delaney Freer, Events Marketing Manager at Dynamic Communities says, “I 100% believe that in-person events compliment all of the online learning and networking that is happening online in the user groups every day.
- It is a chance for you to put voices and faces to names and deepen those connections you have made online. You are taking it to the next level. Meeting somebody face to face cements a relationship and makes you feel closer. You can keep that connection virtual year round and then you get excited when you know you're going to see them again next year at Summit.
- You can sit in the same room with somebody who works at Microsoft and tell them exactly what your pain points are or what you would like to see in the next version. You can go to the medic station, you can have an MVP right in front of you and have them show you how to do something in five minutes that before took you an hour.
- You can ask for a demo of an add-on product immediately, and just have them show you the exact parts you want to see, then move to the next booth in the expo and compare it to another product.
I definitely do not want to downplay the virtual side of things because it is so valuable, but I do think that the opportunities you get at an in-person event are incomparable.”
A Dynamics GP user and frequent attendee of Summit commented, “I think it’s important for customers to learn what’s going on from other companies in attendance. As far as doing things online, in my opinion, that is only good if you know what to ask. Most of the time, I learn different ways of doing things or something I didn’t think of from chatting with others. Another reason to attend is it gives us a chance to get out of the office and focus on GP without the constant interruptions.”
Come experience User Group Summit Phoenix for yourself.
User Group Summit Events: October 15-18, 2018, Phoenix Convention Center, Phoenix, AZ
AXUG Summit: https://www.axugsummit.com
BCUG/NAVUG Summit: https://www.navugsummit.com
CRMUG Summit: https://www.crmugsummit.com/
D365UG Summit: https://www.d365ugsummit.com/
GPUG Summit: https://www.gpugsummit.com
Power Summit: https://www.powerugsummit.com
CRM Software Blog Members Exhibiting at User Group Summit Phoenix 2018 with Twitter Links
ERP Software Blog Members Exhibiting at User Group Summit Phoenix 2018 with Twitter Links
By ERP Software Blog Editor, www.erpsoftwareblog.com
Webinar: Migrating from GP to Dynamics 365 Business Central: Should You Make The Move?
How to add fields to existing pages using Extension in Business Central
56 = SQUARE(7) + 7 and My Conference Season
For those of you that have been following me for a reasonable number of years: you might have stumbled across my testimonial. It clearly marked a threshold in my professional carrier, and in hindsight it was worth all the while taking it. And now I am on the verge of adding another 7 years. Next week Thursday, to be precise, when I will be down south in California, when conference season has just taken off. My conference season and a whole new training season too.
May I invite me to join me in my sessions?
Directions NA - September 30,2018 | San Diego, USA -- link
Yep, I will be there once again. It's three years already that I attended it last time. Way back in 2015, Orlando, Florida. This time, San Diego, I couldn't let it just pass by. With the great memories of the 2014 conference. With the tremendous changes the NAV world is facing. Not in the least the namechanger, Business Central, and the role automated testing finally is going to play in our daily development practice.
Did you have a look at the program already? Nope, go there [url=http://www.directionsna.com/agenda/conference/] and count the number of sessions relating to automated testing. At least five, more than ever before.
Let me seize the change to invite to at least two of them. And yes I'll be the speaker. ;-)
NAV Developer & Support Academy - October 8, 2018 | Ljubljana, Slovenia -- link
The 3rd this will be run at Housing.si. For both technical and no-technical Dynamics NAV pros. It's always a pleasure getting out there Me and Rob Gabriels are looking forward to conduct this academy ones again.
What's New Dynamics 365 Business Central - October 12, 2018 | Ljubljana, Slovenia -- link
Being going out to Slovenia for almost 4 years now, a big number of Dynamics NAV pros joined the various courses and workshops I have been performing at Housing in those years. Please be invited to this event. An informal gathering - a reunion ;-) - with good food and good news.
NAVUG Summit - October 15, 2018 | Phoenix, USA -- link
This is going to be a whole new experience in my professional live. The first time to join this biggest Dynamics end-user event around the world. And it will be in Phoenix. It has been ages ago that this Greyhound bus brought me and my youngest brother out there. Youngsters, criss-crossing the States, off to the Grand Canyon.
The other day someone remarked: this is not your target audience. Hell what, he might be right, but why should I care. It might be, it might be not. I am going to experience it. Going to teach some pre-conference classes . And, o yeah, do one exiting session on the conference itself. If you're working at a Dynamics NAV end-user and haven't registered yet? Go there [url=] and do so. At least have a look at my classes and presentation:
- Coding Best Practices and Design Patterns in Dynamics NAV
- NAV Test Automation
- APP88 - Dynamics NAV vs. D365 Business Central: Technical Considerations
Designing Microsoft Dynamics NAV Automated Tests - October 25 | Vilnius, Lithuania -- link
A 2days workshop that will cover the same topics as my NAV TechDays workshops. For those that could get a set in Antwerp. And my first time to out to the Baltics. Really looking forward to it.
Directions EMEA - October 29 | The Hague, The Netherlands -- link
Near home, but unfortunately not. At least no response to my last proposal, so far.
Dynamics NAV Junior Training - October 29, 2018 | Rolduc Abbey, Kerkrade, The Netherlands -- link
You might have noticed that we have been announcing this a couple of times before. And even though there was a big interest from various partners and end-user companies, our initiative suffered from the tight labor market. Big interest, too low a number of attendees. But finally some things got moving, and now it's really going to take off. A 5 weeks course spread over three month, to get both functional and technical Dynamics NAV newbies up and running.
And yes, it's held in the Netherlands, but it's open to anyone around the world. Kerkrade is almost as south as you can get in this country. Next to Aachen and Maastricht, and just stone's throw away from Luik/Liège.
Still seats available for both the technical and functional track.
NAV TechDays - November 22, 2018 | Antwerp, Belgium -- link
It might the last one called NAV TechDays, but probably always remain the-best-you-can-get conference on technical matters regarding Dynamics NAV and D365 BC. Long sessions, relevant subjects, and some great speakers. No, no, no, not me, Surely not this year at the conference, but, hack, yeah, automated testing workshops. You need yourself get starting on this:
- Getting Microsoft automated tests working on your solution - still some seats available
- Writing your own automated tests - sold out