Business Central 23 (aka Business Central 2023 release wave 2) has been released on the 2nd of October 2023, and the docs were updated even a few days earlier. There are – as usual – multiple resources for AL developers:
- Release plan: What’s new and planned
- AL Language changelog
- Docs: content mentioning 2023 release wave 2 – written by editors
- Docs: content mentioning version 23 – written by editors
- Docs: content mentioning runtime 12.0 – auto-generated from AL
This blog post will summarize what technical docs content has been added specifically for BC 23 / in AL 12.0.
- Deprecated features in BC 23
- Feature Management
- Namespaces
- New data model for table extensions
- New AL properties
- SecretText data type
- View and analyze query data
- Rich Text Editor
- Other new AL methods
- AddAction now supports tooltips
- Other content for developers
- Rules for compiler or code analyzer
Deprecated features in BC 23
Application
As per Deprecated application features
The following features are marked as obsolete:pending
:
- Legacy time sheets experience
- G/L entry aggregations when posting invoices
- Exchange Rates Adjustment report
See Extending Currency Exchange Rate Adjustments
Platform
As per Deprecated platform features
- Server settings for database hints FORCEORDER and LOOPJOIN (warning)
- Schema version for custom APIs (warning)
- Support for Delta Links with APIs (warning)
- Remove write access to app database tables from AL (warning)
- Legacy views on list pages (removal)
- Resource Owner Password Credentials (ROPC) flow in OAuth 2.0 for Business Central online (removal)
Feature Management
Overview page: Optional features that are now mandatory
New and optional features
New features (turned off by default):
- Enable use of new extensible invoice posting engine
- Enable use of new extensible exchange rate adjustment, including posting review (available in 23.1)
- Enable Tri-State locking in AL. Find it also explained on Tri-state locking in database.
Mandatory features
These features are now mandatory and can no longer be disabled:
- Analysis mode, quickly analyze data directly in Business Central
- Create AI-powered product descriptions with Copilot
- Enable using Form 1096 to transmit paper Tax Forms to the IRS in the United States
- Legacy list views are hidden
- Auto-save with every field change
- Enable using of Service Declaration (Intrastat for Services)
- Standardized bank reconciliation and deposits.
Namespaces
Namespaces in AL
Structuring namespaces in AL: This script allows you to specify namespaces for multiple objects at a time, using your folder structure.
New data model for table extensions
In this new model, data from all table extensions on a table are stored in the same companion table. This means that there will be at most one SQL join involved when doing data operations on the table (as seen from AL). Partial records can still eliminate the join to the single companion table in Business Central 2023 release wave 2, if all loaded fields reside in the base table.
New AL properties
- AllowInCustomizations (Table field), also considered in pagecustomization objects
- AnalysisModeEnabled (Page) to disable analysis mode on specific pages
- ExcelLayoutMultipleDataSheets (Report) due to a new Excel layout data contract
- MovedFrom, MovedTo (Table)
SecretText data type
As already stated in the AL Language changelog, runtime 12.0 introduces the new SecretText data type. The docs talk about it in detail here: Protecting sensitive values with the SecretText data type, and the data type methods are explained here.
However, to support the new data type, quite a lot of methods or method overloads for other data types have been added as well:
- HttpClient.AddCertificate(Certificate: SecretText [, Password: SecretText])
- HttpClient.UseWindowsAuthentication(UserName: SecretText, Password: SecretText [, Domain: SecretText])
- HttpContent.IsSecretContent()
- HttpContent.ReadAs(var OutputSecretText: SecretText)
- HttpContent.WriteFrom(SecretText: SecretText)
- HttpHeaders.Add(Name: Text, Value: SecretText)
- HttpHeaders.ContainsSecret(Key: Text)
- HttpHeaders.GetSecretValues(Key: Text, Values: List of [SecretText])
- HttpHeaders.GetSecretValues(Key: Text, Values: Array of [SecretText])
- HttpHeaders.TryAddWithoutValidation(Name: Text, Value: SecretText)
- HttpRequestMessage.GetSecretRequestUri()
- HttpRequestMessage.SetSecretRequestUri(RequestUri: SecretText)
- System.Clear(var Variable: SecretText)
View and analyze query data
You can view and analyze query data directly from the Business Central client by running the query, and then switching to in the analysis mode. Related AL property changes:
- UsageCategory now also applies to queries.
- RunObject now also supports queries.
Rich Text Editor
The rich text control enables rich multimedia content editing. With that you get a multiline textbox with a rich toolbar, corresponding keyboard shortcuts, and the ability to author or paste in pictures, tables, and formatted text.
Related AL property change:
- ExtendedDatatype for table or page fields: new property values
Barcode
andRichContent
.
Other new AL methods
- CompanyProperty.ID()
Gets the current company ID. - FieldRef.IsEnum()
Checks if the currently selected field is an enum. - Record.SetBaseLoadFields()
Sets that only fields for the base table to be initially loaded when the record is retrieved from its data source. This will overwrite fields previously selected for initial load. - Variant.IsDictionary()
Indicates whether an AL variant contains a Dictionary variable. - Variant.IsList()
Indicates whether an AL variant contains a List variable.
AddAction now supports tooltips
Description = The text that appears as the tooltip of the action in the error UI:
- ErrorInfo.AddAction(Caption: Text, CodeunitID: Integer, MethodName: Text, Description: Text)
- ErrorInfo.AddNavigationAction([Caption: Text] [, Description: Text])
- Notification.AddAction(Caption: Text, CodeunitID: Integer, MethodName: Text, Description: Text)
Other content for developers
- System requirements for Business Central 2023 release wave 2
- Important Information and Considerations When Upgrading to BC 23
- Windows PowerShell Cmdlets for Business Central Version 23 (2023 Release Wave 2)
- Cmdlet Changes in Business Central Version 23 (2023 Release Wave 2)
- Business Central Server: new External event settings related to the external business events functionality.
- New Delete Orphaned Extension Data page.
- The update window remains 60 days in BC online.
- Selling Business Central apps through AppSource
With Business Central 2023 release wave 2, transactability based on credit card payment and per-user licensing is available for AppSource apps. This means that customers can purchase your app directly in AppSource. - Troubleshoot in Visual Studio Code directly from the web client
- The Business Central connector for Power Automate now also supports starting flows based on a business event via the When a business event occurs (V3) trigger.
- New tables to embed Power BI reports, scorecards, dashboards in pages: Table 6312 “Power BI Displayed Element”, Table 6314 “Power BI Context Settings”
- It’s now possible to add field groups even if the base object does not define any.
- You can add groups and page fields using a table field as source expression in page customizations.
- You can hover over any variable of the
Label
data type to see the text string value of the label. - Adding barcode scanning to the mobile app
Rules for compiler or code analyzer
Lots of rules have been added. In order to keep this blog post compact, not all rules could be directly linked to the docs.
New AL diagnostics (ALxxxx)
This blog post would be too long to include them all, even with screenshots. Find a few of them mentioned on Twitter.
AL Warnings turned into errors
Source: Warnings Turning into Errors Overview
- AL0731 – The name ‘{0}’ does not exist in the current context.
- AL0733 – Access modifier ‘{0}’ is not allowed for member ‘{1}’ in the context of object type ‘{2}’.
- AL0743 – The property ‘{0}’ is not valid for the cue action ‘{1}’.
- AL0745 – The property ‘{0}’ is not valid for action ‘{1}’ defined in a report request page.
- AL1078 – Key vault URL is not a valid Azure key vault URL. A valid key vault URL must use HTTPS and point to the Azure key vault domain.
New AppSourceCop (ASxxxx) rules
- Warning AS0116 – Source application for the moved object cannot be found.
- Warning AS0117 – Application object is moved without the use of PendingMove.
- Warning AS0119 – The value of the MovedTo property in the source object does not match the destination AppId.
- Warning AS0120 – The value of the MovedFrom property in the destination object does not match the source AppId.
- Error AS0121 – When an application object is moved the name must remain the same.
- Warning AS0122 – Source object for the moved object cannot be found in the package with the given AppId.
New CodeCop (AAxxxx) rules
- Info AA0247 – Use namespaces to organize your code and isolate it from changes.
New UICop (AWxxxx) rules
- Warning AW0016 – Rich Text Fields are only allowed while alon