Category Archives: Data

A quick look into the upcoming major version in April 2021 (Business Central 2021 release wave 1) from the developer’s point of view

It is only four months since the last major version of the Business Central (2020 wave 2) has been released, and we can already look forward to another version that will be released in April.

Microsoft has already provided the list of planned and confirmed functionality (available here). Let’s look at some of the planned features that will be usable (or, at least available) for programmers.

Most useful changes for developers

Extensible reports

One of the most annoying things for customising in the AL language are definitely reports. Till now, to add own field to the existing report from the base app or another extension, there was no other way but to copy the report and do the change in this copy.

With the upcoming version, developers will be able to create a report extension objects. Using this extension object type, we will be able (at least) to add new fields to existing datasets and request pages.

In my opinion, this is one of the most critical changes and as so I will look at it in another article once it is available in public preview.

Returning of complex types from AL procedures

One of the greatest news is that with the new update almost every complex type (record, page, query, list, …) can be returned from a procedure. Let’s see an example:


 procedure GetSellToCustomer(): Record Customer
 var
   Customer: Record Customer;
 begin
   Rec.TestField("Sell-to Customer No.");
   if Customer.Get("Sell-to Customer No.") then
     exit(Customer);
 end;

As this is a big change and as it is something known and often used in almost any other language, I will look at it in details in the next weeks.

Ability to add own keys/indexes to base table/tableextension

To increase custom processes’ performance, Microsoft added support of adding own keys to original tables and tables from any extension.

Entitlement and PermissionSet objects

There will be new object types for better administration and security of user’s roles: Entitlements, PermissionSets and PermissionSetExtension.

PermissionSets (and PermissionSetExtension) are already familiar to anybody. However, in current versions of the Business Central, they are stored and managed directly in the Modern Client.

Entitlements is a new object type that will allow specifying, which objects are available for specific users based on their assigned license (Full, Team Member, …) or Azure Active Directory role.

Easier working with 1-D barcodes in report layouts

There are new fonts available to use in report layouts. These fonts allow generating one-dimensional barcodes. For now (2021/02) licensed fonts are as follow

Some of other improvements

  • Availability to specify report layout both using AL or directly in the Modern Client (so as developers, we can use the same report for more layouts dynamically)
  • Performance improvements to Role Centers. The content of the Role Center is loaded in a similar way to FactBoxes. That means that Role Centers are loaded part by part from top-level (from menus), and only the visible parts are loaded. For developers, that is the improvement that helps with the performance a lot as users will be able to use menu actions without waiting for bricks and other stats shown on the main page.
  • Interfaces can be obsoleted as any other objects (In my opinion, this is a fix, not an improvement…)
  • Lookups triggers will return record link of selected record instead of its name.
  • Many improvements to the extensibility of reservation management. I will cover this topic as a separate article in the upcoming weeks.

Merge entity duplicity

In the case of duplicity in Customers, Vendors or Contacts, the system offers functionality to merge related record. To run it, go to the customer/vendor/contact card and run action “Merge With…”.

The setup window is opened for the entity from which the page was started. In the header, the opposite entity with which we want to merge has to be chosen, then the system lookup all relevant data and show them in the tab below.

In this tab, the user can see all conflict between the source entity and the selected one. If you want to save the value of any field from the selected entity, choose “Override”; otherwise, the value from the source entity will be used.

The last tab, “Related Tables”, shows all tables where the source or selected entity were found. The most important information is whether there are any conflicts in the column “Conflicts”. If there are any problems, in the next step it will be necessary to resolve them before the process of merging could be finished.

Whether there are any conflicts or not, continue with the action “Merge”. If there are some conflicts, resolve them and then run the “Merge” again. If there aren’t any, just confirm the merging process.

New Features: Managing permissions to export data to Excel

With the new version of the Business Central (2020 Wave 1) administrators have a way how to restrict users who could export data to Excel. This is common request across all industries to allow this functionality to only some users.

The permission is under the permission set “D365 Excel Export Action” and for system with own permission sets it could be done by specifying System Permission ID 6110.

Users who don’t have this permission are not able to export any data from any page (“Open in Excel” or “Edit in Excel”).

The specific action (Open or Edit) is dependent on whether the Excel Add-In in installed on the user’s computer. In the Cloud version, if user has Add-In he see both actions; however, in the On-Premise version only one of them is shown (based on whether the Add-In is installed or not). This can’t be unfortunately changed by any setup and we have to hope that it will change in the future.

All released or planned features from Microsoft Dynamics 365 Business Central 2020 Wave 1 could be found on Microsoft Docs.

Page Inspection

Page inspection is a function that lets users get details about a page. The provided information is split into a few separated tabs:

Object information

Information about the page and the underlying table (name and object ID).

Table Fields

Table Fields tab shows information about data in the underlying table. If the table does not have an underlying table, no information in this tab is shown. Page fields calculated using variables (also table field from a different table than the underlying one) are not shown.

– User in this tab can find
– ID and Name of the field
– Data Type of the field
– Value of the field
– Other details (primary keys, extension names…)

Extensions

List of all extensions that are subscribed to the page or corresponding table.

Page Filters

Page Filters show current filters that are applied to the page. All filters within all FilterGroups are shown (with information about in which FilterGroup they are applied)

Page Inspection – Table Fields and Page Filters

The functionality of Page Inspection is very similar to About this Page in the original Microsoft Dynamics NAV Role Tailored Client.

About This Page – original functionality in Microsoft Dynamics NAV roletailored client.