Microsoft released the new Dynamics 365 Business Central 2023 Wave 1 (version 22) on the first days of April. We had a webcast last week with Simplanova explaining all the new features you will find in this new release (I suggest checking the recording), and with this post, I want to emphasize some of what I think are the most important topic and features of this new version.
As usual, a new major release introduces changes on all levels, and I will group them into 3 main categories:
New server and platform features in Dynamics 365 Business Central 2023 Wave 1
The most important thing to know is that now the server runs on .NET 6. Running on .NET 6 means that the platform now supports a cross-platform framework. As a result, the AL runtime is up to 30% faster and uses less memory than in the past.
For partners, this impact is the following: .NET interop with .NET Framework does not work on version 22. So if you have add-ins based on -NET Framework (DLLs for on-premises), you must move them to .NET 6. But remember that if you’re in this situation, there’s something wrong. Also, if you’re still on-premises, you don’t need to use .NET add-ins, and your extensions must have Target = Cloud in the app.json file to be compliant with Universal Code (otherwise, you need to add a dedicated module in the customer’s license, with a possible additional cost).
If you’re using Dynamics 365 Business Central v22 on-premises, now it supports SQL Server 2022.
Dynamics 365 Business Central 2023 Wave 1 (version 22) introduces the possibility of managing permissions by assigning group memberships in the M365 Admin portal / Azure portal and then using these groups inside the ERP. The main improvements related to administration are summarized in the following picture:
Dynamics 365 Business Central version 22 (and the new runtime 11) also introduces the possibility of controlling transaction isolation levels from AL. This means that you will have a new property on the Record data type:
rec.ReadIsolation := IsolationLevel::<Level>
The possible isolation levels are the following:
Reads are READUNCOMMITTED when no writes have been done to the table in the current transaction. If a row has been written to the table (or LockTable is called) in the current transaction, reads are done with UPDLOCK against the table.
In Dynamics 365 Business Central 2023 Wave 2 release (version 23), the new default isolation level will be ReadCommitted (cannot read data modified but not committed by other transactions).
In Dynamics 365 Business Central 2023 Wave 2 release (version 23)
An example of usage is the following:
Here we count only the committed records, and even if the current session is writing data in the G/L Entry table, the COUNT operation does not take any locks.
New Application features in Dynamics 365 Business Central Wave 1
Dynamics 365 Business Central 2023 Wave 1 introduces many features in different areas (warehouse, transfer orders, financial management, etc.) I don’t want to list all here, and I suggest checking the webcast recording to discover all details, but here I want to mention what I think are the main two features in the application area:
- Master Data Management
- Data analysis in Pivot mode on the browser
Master Data Management permits you to synchronize data between companies and maintain them in synch after the initial synchronization. Master data management is intended for scenarios where you want to move the setup from one company to another company in the same environment. It’s also built as a data synchronization engine that lets you keep data in the companies synchronized after the initial move.
To start using the new Master Data Management feature, from a company where you want to have data synchronized with a master company, open the Master Data Management Setup page and here select the Source Company and turn on Enable Data Synchronization:
The tables that will be synchronized from the Master company can be specified by using the Synchronization Tables page:
Here you can select tables and fields to synchronize.
You can then perform two types of data synch (pull mode):
- Full Synchronization: creates a new record based on the record in the source company.
- Match-Based Coupling: existing records are matched with records from the source company accordingly to the criteria you can set.
Please remember that if you schedule the data synch, it relies on the Job Queue (so you need to schedule your tasks accordingly to other possible tasks running).
The new release also introduces a new Analyze view mode in list pages directly on the browser. As a result, end users and data analysts can analyze data from list pages directly in the client without opening the page in Excel or running a report.
Analysis mode is a new way of interacting with data on list pages. For example, instead of running reports using different options and filters, you can add multiple tabs representing different tasks or data views. Then, when you’re ready to analyze data on a listing page (where you might have filtered data using a view or filter pane), switch to analysis mode:
If you enable the Analyze mode, it opens the data in a new experience that’s optimized for data analysis. When a page is in analysis mode, it’s split into two areas:
- The main data area(including a Tabs pane): use the data area to interact with the data. You can easily get descriptive statistics on a set of fields for summable columns by marking them.
- The field modifier area: use the field modifier area to control the data to show and its format. On the menu, you choose the fields to show or hide.
You can turn on the Pivot mode from here and then pivot your data directly in the browser. Here, for example, I’ve quickly created a sales analysis from the Sales Orders list page:
You can then pin or duplicate columns, drag and drop columns, set additional filters, arrange tabs, mark data and copy, export data in Excel or CSV, and more.
In-browser data analysis helps you avoid creating custom reports or data export for every analysis you want. To give you a quick sample, let’s consider the standard Vendor Balance To Date report:
Now you can create the same report on your own directly in the browser by opening the Vendor Ledger Entries page and pivoting in the following way:
Please remember that this feature is currently considered a public preview, that going to analysis mode will load all data into your browser, and at the time of writing this post, there’s a limit on the number of rows returned to the browser (currently above 100,000 rows).
News for Developers
As with every new major release in v22, there is much news for developers.
The first new thing that appears immediately visible to AL developers in Visual Studio Code is AL Home and AL Explorer. The new AL Home startup page in VS Code introduces a new communication channel, allowing Business Central R&D to efficiently share news, best practices, upcoming events, urgent information and status, learning content, and more to all users of the AL Visual Studio Code extension.
AL Explorer is an instead powerful tool for the hands of pro developers and technical consultants, allowing both roles to explore, navigate, and better understand objects in extensions, including object details, dependencies, and extension points, without looking at the code:
With this tool, you can easily see an overview of all objects in a given app scope (for example, a whole workspace or selected project), and you can search in object names and group objects by type. Then, for a selected object, you can quickly jump to source code, whether it’s to develop, read, and understand it or whether it’s to add breakpoints as part of troubleshooting. You can also bookmark objects used frequently to easily filter a list of objects to only the bookmarked ones—for example, when navigating between those you currently work on.
A new change coming with version 22 is related to event subscribers. Until now, event subscriber arguments used string literals for events and parameters:
Now event subscriber arguments now use identifier syntax, unlocking the possibility to use navigations to the subscribed event:
You can also convert the old syntax to the new syntax immediately with new code actions:
You also have new code actions to remove redundant ApplicationArea properties:
When set on the page, these actions remove redundant ApplicationArea properties on page fields. This applies to an object, a document, a project, or a workspace.
To create more user-friendly errors, the AL ErrorInfo object now supports actions. More in detail:
- The AddAction method on the ErrorInfo variable adds custom action on an error dialog to invoke a custom Codeunit method.
- The AddNavigationAction method on the ErrorInfo variable adds custom action on an error dialog to navigate to record on a page.
This is an example of usage:
Here we are creating an ErrorInfo object, adding a navigation action for opening a custom page, and a Generate Data action. The result of this is the following:
The last developer feature I want to mention here is my absolutely favorite dev-oriented feature in this release: the possibility to declare external business events.
You can now use the new ExternalBusinessEvent attribute to raise external events for consumption by externally external services. In addition, you can optionally use the RequiredPermissions attribute to describe required permissions to subscribe to the External Business Event.
When an event is declared as ExternalBusinessEvent in AL, you can use it from Dataverse to unlock full power on your integrations with Dynamics 365 applications:
The AI momentum
The world “AI” is everywhere, and Microsoft is a big player.
In the last 4 months, Microsoft invested a lot in AI and introduced AI Copilot on almost every product. Dynamics 365 Business Central is one of them, and the first Copilot “Responsible AI” features now comes embedded into the product.
Copilot integration in Dynamics 365 Business Central can be enabled per environment (From “Create with Copilot” or search for the Copilot page).
You can read more details about what you can do NOW with Copilot in Dynamics 365 Business Central.
Please remember that Copilot is actually in an early preview stage, and it will remain in preview for all of the 2023 Wave 1 period at least: