Hi. We are facing a situation that looks rather strange. A client has NAV 2016 installed on an Azure virtual machine. Recently, they enabled the Azure web application firewall, and immediately it started blocking NAV web client. Even the login page triggers some WAF rules like SQL injection attack, cross-site scripting, and a few more. Obviously, we can't customize anything in the way NAV client communicated with the server, which leaves us with an assumption that Azure application firewall finds NAV platform code unsafe. Has somebody seen anything like this? Are there any recommendations on security settings for NAV in Azure? Would be great if somebody could share experience of setting WAF security rules on a VM with NAV / BC installation. Thanks!
↧
Forum Post: Web application firewall blocks NAV web client
↧
Forum Post: RE: Adding Background Image in Report
Did you tried with some other images?? I tried and it worked for me.
↧
↧
Forum Post: RE: Adding Background Image in Report
No
↧
Blog Post: Business Central Modern Client: Remove the designer button
You all know the designer , right? The tool for developers (aka the “in-client visual designer”) that “ provides an easy and convenient way of making immediate adjustments to your design by simply dragging and dropping the components on the page”. Well .. then you probably know there are things to take into account… Issues It actually all comes down to what I call “the worst button in NAV ever created in history of mankind”. The “Design” button: Whoever uses that button, is actually doomed in any kind of scenario. What happens is: you open design mode without any context of “active extension” – which basically means – it will create a new extension. And if you – after designing – save that extension, another invocation of the button will create yet another extension. Extensions after extension .. and your environment gets messier and messier. Ok – I admit – it would just be a sandbox database (in SaaS, this button is only enabled when you opened a sandbox (but what about OnPrem??)) but still, I don’t see any use case to use this designer other than you would design pages for YOUR extension, meaning you would open the Designer from VSCode by “AL: Publish and open in the designer” (or “F6” if you will): When you would do that, you ARE actually giving a context to the Designer (being your currently published extension), which means it will save all the changes you would do, into that extension for you to be able to download to your extension again (with F7 (Download Source code)). Remove the button of evil So, the Designer is good – the button is “evil” (yeah, probably exaggerated a bit, but you get my point ;-)). Now, on SaaS, you don’t have to worry that much. OnPrem, my recommendation would be that you actively make sure, this button does NOT exist in a live environment . When I was searching for how to do this, the only thing that I could find was this on Docs : Now, I knew of the fact we could also hide the “Personalize” button (which is on the same place in the client) by simply edit the navsettings.json. There is actually a very helpful page on Docs that explains what you can configure for your web client: https://docs.microsoft.com/pt-pt/dynamics365/business-central/dev-itpro/administration/configure-web-server . And while I expected the same kind of setting as this personalization, this document doesn’t say anything about how to hide the designer, or any kind of setting in that same file, that handles visibility of that button. Luckily, I have smart colleagues, who found out that there actually IS as setting, in that navsettings.json, that actually handles this: One thing though: PowerShell By editing the file directly, it would work, but only after some services that would have been restarted (I restarted the entire docker container). But if you would use PowerShell like this: Set-NAVWebServerInstanceConfiguration -WebServerInstance NAV -KeyName Designer -KeyValue false It works instantaneously Do know though, when you decide to remove this, you can’t open the designer from VSCode either.. .
↧
Blog Post: Business Central 13 CU 09 TearDown
Hello dear reader! I have been very busy with some new exciting customer installations with extensions, so unfortunately I have been unable to write anything for a while. Today I noticed that MS has published CU11 and I have not written anything about CU09 yet, so it is time to give these CU's some attention they require! CU09 seems to be quite small update, the changelog is only 239KB heavy, and consists mainly of standard small fine-tuning to performance, bug-squishing and new hooks and eventsubscribers to tables and codeunits. The number of event subscriber functions has now decreased so it really seems that most of the business cases where they are needed are covered. Nice work! Codeunit 10 Type Helper has a new function, Maximum and Minimum. They can be fed two decimal values and they exit the bigger one or the smaller one. Menusuite has been redesigned somewhat. These are quite difficult to track, but if you know the UI well enough, you will notice. I think Sales Document pages (like Sales Order page 42) have been added nice functionality that hides County handling if it is not used with current setup. This is part of MS "remove clutter" initiative, and I have been using similar pattern where required. This CU MS has changed some translations to match better real-world terms. For example Page 172 Standard Sales Codes caption has been changed from "Standard Sales Lines" to "Recurring Sales Lines" which represents better the normal user case of the functionality. On the other hand this is good, for it is more clear for the user, but on the other hand consults have to learn new terms, and the table names no longer reflect UI. Developer in me cringes a bit. That's about it!
↧
↧
Blog Post: Business Central 13 CU10 TearDown
CU 10 for BC13 is a small update Here is another small update from MS with only half a meg of weight, and most of that is report layout changes. Nevertheless, this is a nice update that everyone should install on top of their system. And how easy has MS done that when they introduced extensions. It is very easy to confirm customers to keep their systems up to date when you have all your changes done with extensions, and CU can just be thrown on top of the working system, give some module testing and you are good to go. I certainly do not miss the old days where WinMerge was pushing out thick black smoke every month! Table 710 Activity Log In this CU MS has added some housekeeping functionality to Activity Log. User has possibility to delete old records to keep the database nice and tidy. The functions to delete records is something I would like to see expanded to other tables as well. Perhaps some RecordRef thing and standardized fields to Job Queue Log and such? And I'd like to see "IF GUIALLOWED" used here as well so it could be automatised better. [External] PROCEDURE DeleteEntries@7(DaysOld@1000 : Integer); VAR Window@1001 : Dialog; BEGIN IF NOT CONFIRM(ConfirmDeletingEntriesQst) THEN EXIT; Window.OPEN(DeletingMsg); IF DaysOld > 0 THEN SETFILTER("Activity Date",'<=%1',CREATEDATETIME(TODAY - DaysOld,TIME)); DELETEALL; Window.CLOSE; SETRANGE("Activity Date"); MESSAGE(DeletedMsg); END; Table 1140 OAuth 2.0 Setup This table has new fields that help restrict the daily limits regarding to data transfers. There is three new fields that are used in Codeunit 1140 OAuth 2.0 Mgt. { 17 ; ;Daily Limit ;Integer ;CaptionML=[ENU=Daily Limit; FIN=Daily Limit]; Editable=No } { 18 ; ;Daily Count ;Integer ;CaptionML=[ENU=Daily Count; FIN=Daily Count]; Editable=No } { 19 ; ;Latest Datetime ;DateTime ;CaptionML=[ENU=Latest Datetime; FIN=Latest Datetime]; Editable=No } Codeunit 1140 has also now a lot of [NonDebuggableAttribute] set as procedures. This helps keeping the Web service calls together, but on the downside debugging is now a bit more difficult. Table 90003 User Group Permission Set This CU includes also one text field that has been extended from 30 to 250 chars; Field 7 Extension Name Sales Quote and Sales Blanket Order subforms The dimension handling of these pages has been changed so it no longer calls SalesLine.ValidateShortCutDimCode function, but rather uses new function "ValidateShortcutDimension" built in the page.
↧
Blog Post: Business Central 13 CU11 TearDown
CU11 is an interesting package Earlier CU's from MS have been mostly small bugfixes. Even though a big chunk of this CU consists of report layout changes, this CU brings again new functionality and interesting patterns to use. Especially ErrorMessageManagement has been taker into wider use, and Report Selections have been extended to cover Customer Statement too. New Objects There is 11 new objects in this CU. Table 254 VAT Entry This table has four new fields that help calculating realized VAT amounts both in LCY and in Additional Currency { 81 ; ;Realized Amount ;Decimal ;CaptionML=[ENU=Realized Amount; FIN=Realisoitunut summa]; Editable=No } { 82 ; ;Realized Base ;Decimal ;CaptionML=[ENU=Realized Base; FIN=Realisoitunut peruste]; Editable=No } { 83 ; ;Add.-Curr. Realized Amount;Decimal ;CaptionML=[ENU=Add.-Curr. Realized Amount; FIN=Lis„valuutan realisoitunut summa]; Editable=No } { 84 ; ;Add.-Curr. Realized Base;Decimal ;CaptionML=[ENU=Add.-Curr. Realized Base; FIN=Lis„valuutan realisoitunut peruste]; Editable=No } These fields are used by the functions in the same table. Table 477 Report Inbox There is now one more output possibility for a report. Old values were "DF,Word,Excel" and new ones "PDF,Word,Excel,Zip". This selection is used for example in Codeunit 8800 Custom Layout Reporting new functions. The codeunit is quite heavily changed as well. The refactoring has also reached to Cu 8810 which works now as a wrapper codeunit for Cu 8800. This means we can now also select output of an report to be automatically zipped. Nice. Table 700 Error Message New fields introduced here, as well as new functions to consume them. If you use Error messaging, it pays out to get comfortable with these fields as well. Now you can find an integration event before log message too. { 13 ; ;Context Field Number;Integer ;OnValidate=BEGIN IF "Context Table Number" = 0 THEN "Context Field Number" := 0; END; DataClassification=SystemMetadata; CaptionML=[ENU=Context Field Number; FIN=Kontekstikent„n numero] } { 14 ; ;Context Table Number;Integer ;DataClassification=SystemMetadata; CaptionML=[ENU=Context Table Number; FIN=Kontekstitaulukon numero] } { 15 ; ;Context Field Name ;Text80 ;FieldClass=FlowField; CalcFormula=Lookup(Field."Field Caption" WHERE (TableNo=FIELD(Context Table Number), No.=FIELD(Context Field Number))); CaptionML=[ENU=Context Field Name; FIN=Kontekstikent„n nimi]; Editable=No } Codeunit 1297 Http Web Request Mgt. Interestingly enough, here we can see a very rare occasion: MS has removed an integration event called "OnBeforeInvokeTestJSONRequest" Posted document pages like 130 Posted Sales Shipment, 146 Posted Purchase Invoice and 132 Posted Sales Invoice Posted documents have found some new tricks. There is now a bunch of helper pages that can be used to modify some non-lethal data on these pages. Page 130 for example has a new PageAction "Update Document" to insert additional information to posted shipment. This has been so far a very big no-no, and I have been very careful to allow users to change these documents. There is only a few fields that are opened for change, for example additional information from Shipping Agent, and Posted Sales Invoice field for payment reference. In case you want to look this further, also check new support codeunits 1405 Purch. Inv. Header - Edit -> 1407 Return Receipt Header - Edit, and pages 1350 Posted Sales Shipment - Update -> 1353 Posted Return Receipt - Update. Error managemet Error message handling is moved to new special codeunits 28 Error Message Management and 29 Error Message Handler. They use another new object, table 1431 Named Forward Link to view and link error messages to users. This is very nice pattern, and I really need to give it a better look and start using it in my own code as well.
↧
Forum Post: RE: Adding Background Image in Report
Try with some different images and see if its working?
↧
Forum Post: RE: Add Available Language for Cloud BC ?
Hi Erik, thank you very much for your explanation
↧
↧
Comment on Weekend with David
I frequently take joy in locating a website that delivers very good information as I like finding out new stuff. I desired to share that I found the content on your web site was rather entertaining and I also learnt something new. An awesome site and I will be back once more for further great content… mobile call forwarding
↧
Forum Post: RE: Adding Background Image in Report
Not Working
↧
Forum Post: Notification for change in document
Hi Folks, My scenario is that i have created a sales order and also warehouse shipment is created. Now for some reason user has revised the order. I want an email to be send to warehouse team that will show the field which is been revised and also the new and old values. kindly suggest
↧
Forum Post: RE: Adding Background Image in Report
Try changing the source and see if its working.
↧
↧
Forum Post: RE: Notification for change in document
Shoot a report to the Warehouse Employee over Email every time u make Warehouse Shipment and that will be the best solution for your case. Just make it Flag based so that it only shoot the email if the flag is manually enabled by the user who actually did the changes and e wants a notification email to be sent.
↧
Forum Post: RE: Notification for change in document
Hi, Just an idea on the top of my head, maybe you can use the change log entries. Activate the change log. Select only the table and fields that you want to monitor ( how to do step 1 & 2 : https://www.archerpoint.com/blog/Posts/change-logs-and-microsoft-dynamics-nav-2016 ) Create a codeunit that will collect the changes and send them to the warehouse team via e-mail. Create a job queue entry with that codeunit (you can execute it every day for example). There are some solutions to be sure to not send the same changes multiple times (codeunit executed every day with a filter on date, log table, etc). I hope this will help you !
↧
Comment on Unicode in Navision
I frequently take joy in locating a website that delivers very good information as I like finding out new stuff. I desired to share that I found the content on your web site was rather entertaining and I also learnt something new. An awesome site and I will be back once more for further great content… global call forwarding
↧
Comment on What's new?
I frequently take joy in locating a website that delivers very good information as I like finding out new stuff. I desired to share that I found the content on your web site was rather entertaining and I also learnt something new. An awesome site and I will be back once more for further great content… virtual phone
↧
↧
Forum Post: NAV 2018 - Analysis By Dimension
Hi All, In Service module, first we creates Service Contract -> Sign Contract -> Create Service Invoice -> Post Service Invoice. For one of our client we have develop new table and page - Contract Accrual Details. When we Post these accrual entries G L Entries get created. We are flowing dimension to GL Entries from Service Contract Header and Line while posting accrual entries. Dimensions are updating properly. After that user runs Analysis by Dimension page and get the data. Now my problem is here. Process 1 :When we follow steps : creates Service Contract -> Sign Contract -> Create Service Invoice -> Post Accrual Entries -> Post Service Invoice. that time values of Accrual amount is updating correctly in Analysis by Dimension. Process2 :But if I follow steps creates Service Contract -> Sign Contract -> Create Service Invoice -> Post Service Invoice -> Post Accrual Entries then value of Accrual amount not updating. If I post Service Invoice(either same invoice for next period or another invoice) then values of accrual amount is updating properly for process 2. If I check GL Entries for accrual entries for both the process, dimensions are updating properly. I am not able to find why this is happening. Can someone help? Thanks in advance.
↧
Blog Post: Dynamics 365 Business Central Wave 2: building apps on top of System Application
As you already knows from this official Microsoft post , with Dynamics 365 Business Central Wave 2 release Microsoft has splitted the application into two main modules: Base Application (that contains all the ERP business logic) and System Application (that contains all the system layer). Separation between business and system layers is a first step for a future goal to have an application always more modular. There’s also an interesting aspect to consider: imagine that your solution creates a totally new module for Dynamics 365 Business Central, totally independent from the Base Application . Now you can build an entire application (new extension) on top of the System Application , without interaction with the Base Application . To show this, I’ve created a small extension for the Wave 2 release that manages Cars (here called CarManager ; I’ve added only a table and two pages for simplicity, but imagine a more complex solution). In the extension’s app.json file I’ve set the dependencies only from the System Application : On my Dynamics 365 Business Central Wave 2 environment I’ve uninstalled the Microsoft’s Base Application from the Extensions Management page: If you try to uninstall the Base Application , you receive an alert that says that there are dependencies from this app. Confirm the complete uninstallation (app + al dependencies): When uninstalled, you will receive an error like the following, so you’ve to logout and login again on the environment: When you uninstall the Base Application , you have a Dynamics 365 Business Central environment without all the standard ERP business logic. Now, from Visual Studio Code I’ve deployed my CarManager extension and, as you can see from the Extension Management page, only two apps are now installed: Now if you try accessing the environment, you have this screenshot (no rolecenter is set): If you search for “car”, you can see my pages and you can work with all the extension’s business logic: Here I’ve inserted a new Car record and potentially you can start all your custom business logic as usual: As you can see, I’ve an extension that works without interaction with the Base Application . You can potentially create custom business solutions on top of the Dynamics 365 Business Central environment and use that enviroment only as an “host” for your solutions, without exposing all the big ERP with all its entities to a non-ERP customer. That’s very cool I think! But… why “potentially” is underlined? Because I think that there’s only a problem to solve in order to use the Dynamics 365 Business Central Wave 2 platform as a platform for hosting new standalone applications: managing users. Unfortunately, at the moment the user’s management logic is also inside the Base Application . Without the Base Application installed, if you search for “users” (in order to insert a new user on the tenant or change permissions to existing users), you will not find any pages: Having the complete users and roles management totally out from the Base Application (maybe in a separate app) could open the doors for big new scenarios I think.
↧
Forum Post: RE: NAV 2018 - Analysis By Dimension
So if you post accural entries before posting service invoice then the system works the way you want to work? is this correct?
↧