What's New: AL Language (2025 release wave 1)
AL language changes in Business Central 2025 release wave 1: moving fields and tables between apps, resources in apps with size limits, a user control host page type, report enhancements, new string, text and JSON methods, YAML read and write, and test handling of HTTP calls.
- Move of Fields and Tables Between Applications
- Resources in Apps - Enhancements and Limits
- Page Extensions and User Control Host Page Type
- Report Enhancements - Tooltips, Excel Layouts, and Triggers
- Report Preview and View from Stream
- String Handling - Negative Numbers, Call Stack, Continue Keyword, and Multi-line Strings
- Text and JSON Object Improvements
- Role Explorer Inheritance and Teaching Tips
- Testing Enhancements and HTTP Client Handling
Overview
This 15-minute video from the Business Central channel, published 2025-04-01, walks through the AL language updates in 2025 release wave 1. It covers moving fields and tables between apps with move to and move from properties, resources in apps, page and report changes, and language additions such as the continue keyword and multi-line strings.
It also covers JSON and text improvements, YAML read and write, role explorer inheritance of about title and about text, and testing features. The testing features include an HTTP client handler and a server certificate validation override, both for tests and not for production.
Key points
- Move to and move from properties can now be used on tables and fields to move them between applications.
- Resources in apps are open to everyone, with a resource root folder set in app.json. Limits: 16 MB per resource, 250 MB for all resources, 250 characters per resource name, 256 resources per app.
- Get resource as text needs the encoding specified for correct output; the default is MS DOS. A list resources function supports simple pattern matching.
- The user control host page type holds one user control and nothing else, for example a PowerBI report or a browser. Only one user control is allowed, it cannot have actions, and some limitations are still being worked on.
- Reports gain tooltips, a property for multiple Excel data sheets that layouts can override, obsolete report layouts, pre-rendering and post report triggers, and access to the target format. View from stream previews a report without downloading it.
- New language features: the continue keyword, multi-line strings prefixed with @, a call stack function that does not throw an exception, negative numbers in increment string, and to text on simple types.
- JSON objects get direct text and type-specific get methods. The text method does not check whether the property exists and can throw, but a default value can be given. YAML read and write is backported to runtime version 143.
Features
| Feature | Status | At |
|---|---|---|
| Move To and Move From Properties | status not stated | 0:05 |
| Resources in Apps | status not stated, demoed | 0:46 |
| List Resources Function | status not stated, demoed | 1:37 |
| Get Resource as Text and Get Resource as Json | status not stated, demoed | 1:58 |
| Override Card Page ID | status not stated | 3:44 |
| User Control Host Page Type | status not stated, demoed | 4:04 |
| Report Tooltips | generally available (roadmap Actions on reports and pages can now inherit tooltips) | 5:01 |
| Excel Layout Multiple Data Sheets | status not stated, demoed | 5:21 |
| Obsolete Report Layouts | status not stated, demoed | 6:21 |
| Report Pre-rendering and Post Report Triggers | status not stated | 6:41 |
| Access Target Format in Reports | status not stated | 6:56 |
| View from Stream | status not stated | 7:16 |
| Negative Numbers in Increment String | status not stated | 7:47 |
| Call Stack Function | status not stated | 8:08 |
| Continue Keyword | status not stated, demoed | 8:19 |
| Multi-line Strings | status not stated, demoed | 8:49 |
| To Text on Simple Types | status not stated, demoed | 9:19 |
| JSON Object Get Text Method | status not stated, demoed | 9:41 |
| JSON Object Type-specific Get Methods | status not stated, demoed | 10:41 |
| Read and Write YAML | status not stated | 11:09 |
| About Title and About Text Inheritance | status not stated, demoed | 11:44 |
| HTTP Client Handler for Testing | status not stated | 13:21 |
| Server Certificate Validation Override | status not stated, demoed | 13:44 |
A status with a roadmap link comes from the Microsoft 365 roadmap feature this part of the video covers (matched by Haiku; links Opus dropped are not used); other statuses need a status word in the video itself.
AL objects mentioned
As heard in the captions. A name that matches one object page by exact type and name links to it; the others stay as named.
- other “app.json” at 0:46
- other “JsonToken” at 10:01
- other “JsonValue” at 10:01
- other “HTP client” at 14:04
Quotes
- 0:26 “in this release we have opened up for the use of the move to and move from properties on tables and Fields”
- 2:59 “the new limits for a single resource is 16 mbes the maximum size of all the resources in the entire app is 250 megabytes”
- 3:44 “we have added the ability to override the card page ID this can be especially helpful for the scenarios where there is no card”
- 4:45 “there are a few limitations that we are still working on but go ahead and try it out to see if it fits your”
- 8:08 “we added the call stack function that allows you to get the current callstack without throwing an exception”
- 8:19 “improved readability by introducing the keyword continue this is actually a bc ideas that has now been implemented”
- 11:24 “the read from and write to yaml functionality has been backported to runtime version 143 so if you haven’t started already then even the”
- 13:44 “we do not recommend you using this in production but for test purposes with connecting to local Services self- signed certificates and so on”
Disclaimers in the video
- 4:45 preview: there are a few limitations that we are still working on but go ahead and try it out to see if it fits your needs
- 13:44 other: we do not recommend you using this in production but for test purposes
Presenters (as heard): Stephen Belo.
