Offering Microsoft Dynamics 365 Business Central means giving your clients access to the future of ERP solutions. As AI-driven automation ...
Leer másTechnical Code Changes in Microsoft Dynamics 365 Business Central 2023 Release Wave 1
Tuesday, June 6, 2023
Reading time: 24 minutes
April 1st was the official release day of Microsoft Dynamics 365 Business Central 2023 Wave 1 (version 22). You can review the list of new and planned functionality and the list of functionality that has been moved, removed, or replaced by Microsoft. Along with newly introduced and changed functionalities, a lot of code changes have been made, which I will review in this blog post. These include:
- Developer experience
- AL language
- Application
- Performance
- App lifecycle
- Telemetry
- New features for Business Central on-premises only

Developer experience changes
In the new Business Central 2023 Wave 1 release, Microsoft introduced quite a few developer experience changes listed below.
- Two new pages in Visual Studio Code: AL Explorer and AL Home -. You can see these pages in the opened project in Visual Studio Code.
AL Explore makes code navigation easier and allows you to see all the code that is used in your app and all the basic code that is in the base application.
- Code Action to remove Application Area setting from fields on pages. In earlier versions of AL, when you created a page and put a field on a page, you had to specify each field specifically in ApplicationArea. In the latest release, you can also have ApplicationArea on the top of the page, and in Visual Studio Code you can use a code action to remove ApplicationArea setting from fields if it is equal to the setting from the page. This helps to clean up your page definition.
- “Go to implementation” for interfaces. An interface is an object in AL that defines how codeunits should interact and which functions they should provide. There can be several codeunits implemented in one interface. Now you can go from the interface to the codeunits that have been implemented.
- Compiler resource handling. AL will load faster and code analyzers will run faster, which is especially helpful with larger projects in AL.
- IntelliSense indicator for temporary tables. If you hover your mouse over a term in Visual Studio Code, an IntelliSense pop-up will appear indicating whether or not it is a temporary table.
- IntelliSense suggestion for Enum ordinal value. An Enum is a replacement for the old Option data type. If you create an Enum and add a new value, IntelliSense will suggest the number for that Enum.
- New rule to enforce pragma warning 'disable' specifying a disabled rule. In earlier versions of Business Central, if you disabled some warnings from the code analysis, you could accidentally disable all the warnings in one go. This is no longer possible, as there is a requirement to disable a specific rule.
- Support for multiple .al package cache paths for symbols. If you have a larger project, you can have multiple projects within one AL workspace. Each of these projects can have its separate AL package cash part in the AL environment. Until now, it didn’t work very well. The apps wouldn’t always be able to find the package that they needed from the other apps in the same project. Now on you can have multiple paths defined, which helps the compiler to find symbols that you need for compiling.
- URLs in includeRuleSets. RuleSets define which rules you will or will not use in your development environment. In the new Business Central release, RuleSets are defined in a URL so you can share them with several developers. So, if you have a rule that you want to disable or use for all of your developers, you can just define it in a place that can be reached through the URL and then all developers will be able to use the same RuleSet instead of defining it themselves.
- Possibility to attach AL debugger to the active session or to the next session. Debugger in Visual Studio Code can connect to an active session or to the next session. Now you can not only debug the new session but also debug already running sessions and wait for the next session to pop up.
AL language changes
In the new Business Central 2023 Wave 1 release, Microsoft continues to raise the productivity of Business Central AL developers and introduced plenty of AL language changes listed below.
- Event Subscribers use Identifier instead of string literal value. In the AL language, the Event Subscribers which currently use a string literal value can now be replaced by the Identifier.
- Instream – Length & Position. In the earlier Business Central versions, if you wanted to know how much data you would get into your environment, you had to create a blob and then assign the Instream to that blob. Only then you could find out how many bytes there were in that blob and where you were reading it (whilst the blob was taking memory on your server). Now, instead of using the blob, you can perform this action directly from the Instream object.
- Control database locking behavior. From now on you can resolve performance issues with database locking behavior. If you are using a record and you are reading through a record set, you can now define if that loop is going to read only committed data from other processes and make sure that your process is not blocked by other processes.
- Define regional settings per report using a region property. You can now set regional settings per report and define how a report should format numbers and dates. This is defined based on a region property, which is different from the user’s region property used until now. So, from now on you can have a specific format for a report.
- Developers can write faster install code (*). In the previous Business Central release, there was an item called ‘Developers can write faster upgrade code’ that was using a new type of AL object called DataTransfer. From now on, if you need to move a lot of data when you are installing your app, you can do that using DataTransfer objects. It runs a lot quicker as it is executed by the SQL server instead of the application server.
- Folder paths for control add-in resources. Control add-ins are usually JavaScript code and until now, if you had resources there, such as images or specific files, you had to load them one by one. From now on you can specify a path and all the resources from that path will be available to your add-in.
- Iterating with foreach on text variables. From now on, if you have a text variable, you can enumerate all the characters in that text and just use one command instead of finding each character separately.
- Provide title and custom actions to error dialogs. In the new Business Central release, if there is an error, you can provide an action for the user to solve that error.
- Publishers can use existing custom licensing while moving to AppSource transactability. There’s an addition to the objects where you can find out if your code is running AppSource licensing, which is a new transactability, or if it is still using your own licensing. So now, you can differentiate between the two.
Application changes
From September 2023, you will be able to extend general ledger posting aggregations in Dynamics 365 Business Central. Until now, if you posted an invoice in Business Central, it would create just one line in your general ledger entry with a description saying invoice and invoice number. It was possible to modify that, but you had to add a key to a table which you were not able to do in AL. Now, Microsoft is redesigning that process and you will be able to modify the aggregation of the posting. For example, instead of one line of your invoice, you can have one for each item description, depending on your preferences.
Performance changes
In the new Business Central release, the performance of OData web services is improved. This is mainly achieved by removing the OnOpenCompany code from OData sessions. Previously, every time you opened OData session from an external application, it used to do OnOpenCompany trigger for each of your goals, and in many cases, for OData that was not necessary. If you depend on code that is using OnOpenCompany trigger, you should rewrite your OData code.
Improvements have also been made to the loading times of pages (Navigation, Action Bar, List-to-Card). Navigation and Action Bar pages are now using more optimized code and should load faster. The performance of the List page has also improved, now you can drill down to a card quicker.
In the new Business Central release, the Business Central server runs on .NET 6. This is a different version from the .NET Framework that was used before, and it can improve the performance of the server by up to 30%, meaning that your app runs much quicker.
App lifecycle changes
In PTEs, every time you upload a new app, there is now extra telemetry coming through the customer environment. If something goes wrong, or if it takes too long, you can go to your application insights environment and check why that happened, and get more information on the validation of PTE.
Also, you can now deploy hotfixes for older AppSource apps. Perviously, for example, if you had an app on Business Central v.22 and then you published the same app but optimized for Business Central v.23, you would no longer be able to create a hotfix for customers that were still on BC v.22. You could not create a hotfix for a version that was already replaced by a newer version. But now, between the time that the new version is released and until the last customers are updated to that new version, you can publish hotfixes to older versions.
In addition, from September 2023, Microsoft ISVs can organize a preview for their AppSource apps. You can publish your app and allow your customers to have a preview in their environment to see if they like your app and if they want to use it.
Telemetry changes
In the new Business Central 2023 Wave 1 release, you can get more information on incoming and outgoing web service calls in the telemetry. For example, you can find out how long the incoming call has been waiting, as when the server is very busy, it will reject calls and place them in a queue. Now you can see if the performance of your web service is hindered by too many calls.
For outgoing web service calls, you can now get more information about the code on the database level which was run to create your result. It is now in the telemetry of long-running AL methods. You can see what database queries there were and get more information about what was run to create the result of your web service.
Now the error messages include the ENU error text instead of localized. In the past, if an error message popped up, you would get a localized error message in your application insights. It’s not good if you have a multi-language solution, because the same error message might take two to four different forms in your application insights. You will now be able to retrieve the English US basic error text so it makes aggregating data from the same error easier.
In the new release, the application reports changes that were made in permission sets by extensions. For example, if an extension is installed, that extension modifies existing permission sets by adding a table, and you will now be able to monitor that.
Now, files are blocked for upload due to possible malware. If you try to upload a file, that file will be blocked by the service because of possible malware, and you will be able to see that in the telemetry. Previously you didn’t get any notification for that.
Also, there are Feature Management changes in settings in the new Business Central release and now you can get more information. If the user changes something in Feature Management, you will be better able to follow that in your telemetry for that environment.
New features added to Business Central On-Premises
In Business Central on-premises only, there is support for overriding the PublicWebBaseURL server setting. If you are developing on a server where the web service is also running, by default, the compiler connects through the web-based URL meaning it goes through the web service while it is running on your local server. So, you can now overwrite that from your development environment and have quicker access to your server.
In addition, you can now allow application and tenant databases to differ in collation in Business Central on-premises. The Business Central environment has application and tenant databases and until now these databases have had the same collation (the sorting order of the text inside the database), causing problems if there was a difference. In the new Business Central 2023 Wave 1 release, you can have different collations in different tenant databases and they will all be served by the same application database.
In the new release, there is the .NET 6 update. If you are doing technical upgrades from the older version that uses the .NET framework to the current version that uses .NET 6, you may experience technical upgrade issues. Sometimes you will also need to update your application if you only want to do a technical upgrade.
Microsoft has rewritten all their control add-ins and all their own code, and everything is also converted to .NET 6. But in the Dutch and Mexican localizations, there are functions not possible to convert to .NET 6, as they use things from the .NET framework that are not in .NET 6. So, Microsoft has replaced that with Azure functions. If you want to see how it is done, you should check one of these localizations.
In Business Central on-premises only, you can now control the maximum time a task can run on the service. For instance, you can better control the time for the job queue.
Companial upgrade options for Dynamics NAV/365 Business Central
If you’d like to find out more about the technical, functional, and administrative platform enhancements of the latest Dynamics 365 Business Central release, and see the live demo, watch the webinar on this topic here. You can also visit our website and find out how we can help Dynamics Partners to upgrade and maintain solutions in Dynamics 365 Business Central, or download the Companial e-book and learn more about Dynamics NAV/365 Business Central upgrade options.
Jan Veenendaal is a Business Central Partner Technology Strategist with over 30 years of experience in various roles, having worked as a developer, software engineer, senior technical consultant, and Partner technology strategist. Jan Veenendaal has been developing software since 1990 and is always striving to be a front runner in technological advancement. In his current position, Jan advises Partners on how to advance in the fast-moving world of cloud solutions. Get in touch
- Technical Code Changes in Microsoft Dynamics 365 Business Central 2024 Release Wave 2 - 19/11/2024
- Microsoft Dynamics 365 Business Central 2025 Release Wave 1: The Functional and Technical Enhancements - 30/06/2024
- Technical Code Changes in Microsoft Dynamics 365 Business Central 2024 Release Wave 1 - 02/05/2024
Más información sobre Business Central
Mastering the Basics of the Page Scripting Tool in Microsoft Dynamics Business Central
Dive into basics of using the Page Scripting Tool, leveraging the insights shared in our previous advanced blogs on parameterizing ...
Leer másWhy Microsoft Business Central is the Future of ERP for SMBs
As a provider of ERP solutions, you have the chance to lead your customers into the future with Microsoft Dynamics ...
Leer másBreaking Through Barriers: How to Attract New Clients and Expand into New Industries
For Microsoft Dynamics 365 Business Central partners, growth is both an opportunity and a challenge. Expanding your client base and ...
Leer másCompanial SofTalk: Upgrades at Scale
In this episode of Companial SofTalk, Inga Levinskiene, Project Manager at Companial, dives into the topic of cloud migration, alongside ...
Leer másGOB Software & Systeme GmbH
GOB’s Transformation to Business Central Online and AI Readiness with Migration & Modernization Program
Leer más