It’s that time of summer again, Microsoft has released the list of improvements, modules and features that will be added to Business Central 2024 Wave 2, aka BC25. As usual, I’ll run through the list to explain what’s going on and give you my perspective on what’s good and what makes me excited about the new release. Check out the video:

In this video, Erik walks through Microsoft’s published plan for Business Central 2024 Wave 2 (BC25) — the full list of upcoming features and changes spanning application improvements, Copilot and AI, development tooling, governance, sustainability, and user experience. He shares his honest opinions on each item, highlighting what excites him, what puzzles him, and what he thinks still needs work.
The Version Number Finally Surpasses the Year
A fun milestone: we had the “magic” versions where BC23 shipped in 2023 and BC24 shipped in 2024, but now BC25 arrives in 2024, meaning the version number has officially outpaced the calendar year. As Erik notes, “It’s a fast moving train — I still remember BC version 14, and that’s like 11 versions ago.”
Application Highlights
Subscription Billing and Revenue Recognition — A Whole New Module
Perhaps the most exciting application-level addition is a brand new module for managing subscription billing and revenue/expense recognition. The reality of modern business is that subscriptions are everywhere, and Business Central hasn’t natively handled them well. There have been AppSource apps to help, and Erik himself built a subscription app live on stage at Summit — so he jokes that Microsoft saw him do it in 90 minutes and decided to build a full module.
The new module includes contracts for recurring billing on items and services, flexible billing schedules, usage-based billing, automatic billing, deferral integration, revenue recognition based on billing schedules, and contract updates. This is a significant addition to the platform.
Field Service Integration and Project Improvements
The Field Service integration that arrived in BC24 continues to grow, with new capabilities for viewing item availability in field service work orders and archiving service management documents. It’s encouraging to see different Dynamics products actually working together.
The Projects module (formerly “Jobs”) is also getting attention. Erik notes that this module has been lacking functionality “for decades” compared to other modules. With the rename — which Erik still considers himself the godfather of — the module is being revitalized with features like directed put-away and pick warehouse integration.
E-Documents and AI Document Intelligence
The ability to capture data from e-documents using Azure AI Document Intelligence is an area where Erik sees AI providing genuine value. Reading invoices, understanding their content, and extracting structured data is a natural fit for AI. Eventually, the old approach of defining templates with specific regions and fields for each document format should become obsolete — you’ll just feed a random invoice to the AI and let it extract the information.
Shopify Integration Improvements
Several Shopify-related improvements are coming: exporting posted sales invoices to Shopify, reconciling payment transactions with invoices, and importing/exporting product info using Shopify meta fields. All sensible additions for the growing Shopify connector.
Copilot and AI Innovation
The Copilot list is extensive this wave. Here are the highlights:
- Number series suggestions with Copilot — Erik believes this may have originated from an AI hackathon, though he’s not entirely convinced this needs to be an AI exercise given that number series setup is a fairly well-defined task.
- Chat with Copilot to learn about and install add-on apps — Currently in BC24 (available mainly in the US), the chat capabilities are quite limited. If Copilot can search AppSource and know about available apps, that would be genuinely useful — especially interesting from an app developer’s perspective.
- Summarize any record with Copilot — Right now, the Copilot chat has very limited awareness of what’s on screen. It works in a couple of places but is otherwise clueless about your current context. Having it summarize the record you’re looking at would be a welcome improvement.
- Analysis Assist enhancements — Erik considers this probably the best Copilot feature in BC24 — helping build views in the analysis mode. More investment here is great news.
- Copilot enabled by default — Microsoft wants to remove the need for any one-time administrator setup, meaning Copilot capabilities may just be turned on by default.
- Create sales lines with Copilot — If the system can look at historical purchase patterns and suggest that a customer typically buys certain items at certain times, this could be quite powerful.
- Automated testing for Copilot extensions — The Business Central test toolkit will support testing your Copilot extensions, which makes sense as more developers build AI features.
Countries and Regions
Microsoft continues to make Business Central available in more countries. Erik notes an important distinction: adding a country is not the same as adding a localization. When Microsoft adds a new country, what’s often available there is just the W1 (worldwide) version of Business Central — not necessarily full support for every local regulatory requirement in that country.
Other regional highlights include IRS integration for 1099 submissions in the US and the e-document framework being localized for Germany (after starting mainly in Denmark).
Development — The Meat of Things
Erik is pleased to see a substantial development feature list this wave, noting that the last couple of versions were “almost empty” in this area. The sample project for BC25 shows the new runtime and application version:
{
"id": "27b30fa5-54ff-41af-9ef5-bcd41dfc5377",
"name": "WhatsNewinBC25",
"publisher": "Default Publisher",
"version": "1.0.0.0",
"dependencies": [],
"platform": "1.0.0.0",
"application": "25.0.0.0",
"idRanges": [
{
"from": 50100,
"to": 50149
}
],
"resourceExposurePolicy": {
"allowDebugging": true,
"allowDownloadingSource": true,
"includeSourceInSymbolFile": true
},
"runtime": "14.1",
"features": [
"NoImplicitWith"
]
}
Inline Performance Profiling with Rules
Erik already uses the performance profiler extensively, especially with customers reporting performance issues — “start the profiler, do your thing, send us the file.” Having rules-based inline profiling will make this even more useful.
The Ternary Operator — Erik Is Against It
The ternary operator (?:) is coming to AL. For the record, Erik is openly against this addition. The syntax works like: variable := expression ? trueValue : falseValue. Erik considers this a leftover from C “when keystrokes mattered and dense code meant better code.” AL is a verbose language by design, and he views this as a mistake on Microsoft’s part. “But they don’t ask me, so it’s there.”
Pull Extension Source from GitHub
When opening a page in VS Code from the web client, if the extension has a resource exposure policy that prevents viewing the code, you can now add a link to the GitHub repository in app.json so VS Code can navigate there instead.
Erik sees limited personal use for this since he typically already has relevant repos cloned locally. What he’d actually love instead is simpler: “Get me a launch.json configuration for the thing I’m in right now.” When working with client sandboxes, having to manually copy-paste tenant IDs and configure launch.json is tedious — auto-generating that configuration would be much more useful.
The this Keyword for Codeunit Self-Reference
Codeunits increasingly behave as objects that can be passed as variables, used with the include sender pattern on events, and so on. But until now, there was no way for a codeunit to reference itself. The new this keyword solves this, allowing a codeunit to pass itself as a parameter — a natural and needed addition for object-oriented patterns in AL.
Extension Restore on Failed Publish
This addresses a painful real-world scenario. When publishing an extension that sits in the middle of a dependency tree, VS Code must uninstall and unpublish dependent extensions for recompilation. If the deployment then fails — for example, because the AL compiler is actually a transpiler that recompiles to C# on the server, and the server’s symbols don’t match your local symbols — you can end up with an incomplete dependency graph and broken extensions that require manual redeployment in the correct order.
With this change, VS Code will attempt to restore the previous extension state when deployment fails, removing most of the manual cleanup work. Erik’s reaction: “This is what we need. Thank you.”
Word Layout Report Improvements — Including a Word Add-in
Several improvements are coming to Word layouts: support for sections (with margins, orientation, columns), different watermarks for different parts of a layout, and the ability to download a Word layout template from the Report Layout page.
But the most interesting part, in Erik’s view, is a new Word add-in for controlling conditional visibility of text, tables, and table rows/columns. Erik reads this as Microsoft starting to acknowledge that the report layout building experience has been, in his words, “super crappy.” He started building his own report designer for this very reason, and a Word add-in approach could significantly improve the experience.
Package Resources in Extensions — Access from AL
This is another feature Erik is genuinely excited about. Currently, if you want to supply a config package or other resource file with your extension, your options are limited: put it on a web server and download it, or use a hacky workaround where you embed the resource as an image in a control add-in (which requires UI context and doesn’t work in upgrade codeunits or background processing).
Being able to package resources directly in extensions and access them from AL opens up many possibilities — supplying demo data, configuration packages, JSON files, and more — without external dependencies or UI hacks.
Code Actions for File, Project, or Workspace
The implicit with statement continues its exit from AL. You can now run code actions globally across a file, project, or workspace to clean up with usage. Erik has never been a fan of with and has avoided it on his channel, so he’s happy to see tooling to help remove it everywhere.
Type Testing and Casting for Interfaces (is and as)
With interfaces becoming more prevalent in AL, the need for type checking and casting grows. The new is and as operators let you test and cast interface types, which is essential when something implements multiple interfaces and you need to specify which one you’re working with.
Extending AL Interfaces
Interfaces can now extend other interfaces. For example, if interface IFooBar extends both IFoo and IBar, implementing IFooBar requires implementing all methods from all three interfaces. Erik notes this is a natural and necessary evolution as AL’s object model matures.
Extend and Customize Profiles from Other Extensions
You can now extend profiles defined in other extensions, which rounds out the extensibility model.
Governance and Administration
More Flexible Environment Updates
This is a significant policy change. Currently, Microsoft pushes major and minor updates on a relatively aggressive schedule. With this wave, you can stay on the previous major version for five months instead of three, and you can choose not to apply optional minor updates. Effectively, you can go back to upgrading just once every six months.
Erik sees this as a sign of platform maturity: “It’s not ‘you’ve got to update, we don’t want to run this old crap anymore.’ It’s ‘the old versions are very good, we have no issues with you staying back.'”
Record Links and Notes for Cloud Migration
Record links weren’t being migrated during cloud migration, likely because they often pointed to local files that can’t be accessed from a web client. But in the real world, people need those record links, and multiple apps and solutions were already migrating them. Microsoft is now doing it natively.
Manage Per-Tenant Extensions in Admin Center
Previously, you could manage AppSource and Microsoft apps in the Admin Center, but per-tenant extensions were managed separately. Now they’re all in one place — a no-brainer improvement.
App Compatibility with Future Versions in Admin Center
Microsoft already sends emails about app incompatibility with upcoming versions, but that information was lost in email inboxes. Now it will be visible directly in the Admin Center with a column showing compatibility status. As Erik puts it: “Microsoft already had the information — they do all the work and then it’s lost in emails that nobody can read.”
Job Queue Failure Notifications
After Microsoft made significant changes to job queues in 24.1/24.2 that introduced some issues, being able to trigger a Power Automate flow when a job queue fails — and set up email notifications — is a welcome addition.
IPv6 Support
Coming in February 2025, Business Central will support IPv6 addresses. Erik suspects this is mainly relevant for on-premises deployments, since cloud infrastructure typically uses internal IP addressing regardless.
Other Notable Additions
- Multiple VAT numbers per customer
- Sustainability scorecard — Erik notes this isn’t relevant in Canada yet, but it will be eventually, and it’s good to see BC out front on it.
- Embedded Power BI reports out of the box — More pre-built reports shipping with the platform.
- Access key tips in more languages — Pressing ALT shows keyboard hints, important for accessibility.
- Drag and drop for multiple file uploads — Instead of adding files one at a time.
- Re-sort columns even when personalization is disabled — Previously, if personalization was turned off for a role, users couldn’t even reorder columns, which was an odd limitation.
Summary
BC25 is a substantial wave with meaningful additions across the board. On the application side, the new subscription billing module is the standout feature. For developers, the highlights are resource packaging in extensions, the this keyword, extension restore on failed publish, interface improvements, and the Word layout add-in. On the governance side, the more flexible update schedule reflects a maturing platform, and the Admin Center improvements for app compatibility and per-tenant extensions address long-standing pain points. The Copilot features continue to expand, with analysis assist and record summarization being the most promising. It’s a wave that shows BC moving forward on many fronts — and as Erik notes, it’s important to remember this is the plan for the next six months, not just what ships on day one of BC25.