videoAL Developmentofficial - Microsoftreviewed - checked by Opus

What's new in AL and Tools (2026 release wave 2)

What's new in AL and Tools for 2026 release wave 2: AL MCP environment symbol search and next object ID tool, project-aware AL language server over LSP, interface default implementations, public resource folders, big integer migration, namespaced translations, IsDirty, data-driven tests, test handlers, static call graph analysis, and MCP proxies for profiling and snapshots.

  1. 0:00 Building blocks: AL MCP and AL language server
  2. 1:26 Discovery phase: understanding existing code with AI agents
  3. 2:31 Environment-aware symbol search via AL MCP
  4. 4:06 Getting next available object IDs and planning changes
  5. 5:48 Using LSP to understand fee calculation flow
  6. 6:49 Interface default implementations for backward-compatible extension
  7. 9:24 Sharing resources, big integers, table extensions, and namespaces
  8. 10:49 Public resource folders without dependencies
  9. 13:23 Integer to big integer field migration and AppSource COP warnings
  10. 14:47 Extending tables with SQL-friendly indexes
  11. 16:17 Namespaced translations to prevent collisions
  12. 17:37 Intent-making language features: tooltips and audit fields
  13. 19:10 System audit fields, record dirty-state detection, and data-driven testing
  14. 23:29 Test handlers and static call graph analysis
  15. 27:57 Production debugging with agents and MCP proxies
video Microsoft Dynamics 365 Business Central (YouTube) · 2026-10-01Watch on YouTube

Overview

The session walks through a late-fee extension scenario to show how AI agents and new AL features work together. It starts with AL MCP and the AL language server (LSP, no longer tied to Visual Studio Code), then covers discovering existing code, searching symbols in a connected environment, and getting the next free object ID.

It then covers language and compiler changes: default implementations on interfaces, public resource folders, integer to big integer field migration with AppSource COP warnings, table extension keys and SQL indexes mixing base and extension fields, and namespaced translation IDs. The last part covers tooltip inheritance, audit name system fields, Record.IsDirty(), data-driven tests, test handlers, static call graph analysis, and agent-driven profiling and snapshot capture. The presenters say full sessions on some of these topics are coming and will be linked in the description.

Key points

  • AL symbol search has a new ‘source’ parameter. Set it to ‘environment’ to search the connected server without downloading symbols or adding dependencies. It returns the owning app and version for each object.
  • The new get next object ID MCP tool reads the ID ranges defined in the project’s app.json and suggests free IDs.
  • Interfaces can have default method implementations, so existing implementers keep compiling. New methods get a RequiredPending attribute that tells consumers the method will become mandatory, for example in a future major version.
  • Public resource folders make resources available to other apps without a dependency. Requesting a private or missing resource by provider app ID returns an error, so be careful about hard dependencies on other apps’ public resources.
  • Changing a field from integer to big integer keeps existing rows, but causes implicit conversion warnings. AppSource COP flags the change against the previous version, and dependent apps can overflow at runtime if they keep integer types.
  • With the translation with namespaces option in app.json, generated XLF files use fully qualified names as IDs instead of name-based hash keys, which avoids collisions between same-named objects in different namespaces.
  • Static call graph analysis (graph command in the AL tool) needs an offline extraction step first. It lists callers of a method and the public entry points to review, and it complements the live-project LSP.

Features

Feature Status At
AL MCP (AL Management Control Platform) generally available (roadmap Discover objects in connected Business Central environments, Let agents allocate free AL object IDs, Configure AL MCP workspaces dynamically), demoed 0:43
AL language server with project awareness generally available (roadmap Use AL language intelligence from AI agents and other editors), demoed 1:14
Symbol search with environment source parameter status not stated, demoed 3:40
Get next object ID tool in AL MCP status not stated, demoed 5:02
Interface default implementations generally available (roadmap Evolve AL interfaces with default implementations), demoed 7:38
Public resource folders status not stated, demoed 9:47
Big integer field type migration status not stated, demoed 13:40
Namespace support in translation IDs generally available (roadmap Translate objects with the same name in different namespaces), demoed 10:36
Mixed extension and base field SQL indexes generally available (roadmap Developers can define indexes that span fields from a base table and its table extensions), demoed 15:39
Action tooltip inheritance from page generally available (roadmap Actions on reports and pages can now inherit tooltips), demoed 17:52
Audit name fields as system fields status not stated, demoed 19:10
Record.IsDirty() method generally available (roadmap Check records for uncommitted changes), demoed 20:02
Data-driven testing framework generally available (roadmap Build extensible and data-driven AL test suites), demoed 20:32
Test handler interface for lifecycle hooks status not stated, demoed 23:29
Static call graph analysis generally available (roadmap Audit AL app accessibility and debugging boundaries), demoed 25:47
Agent-assisted production investigation generally available (roadmap Profile slow Business Central sessions with AI agents) 30:27
Launch profiling MCP proxy status not stated, demoed 31:15
Launch snapshot MCP proxy status not stated, demoed 32:44
Isolated storage explicit read isolation level status not stated 17:52

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.

  • interface “Calculate Fee” at 7:49
  • table “Customer Ledger Entry” at 3:40
  • other “late fee entries” at 19:22
  • other “fee sequence” at 15:50
  • enum “test handler” at 24:01
  • other “late fee logger” at 23:49
  • codeunit “Late Fee Management Apply Fee” at 28:29
  • page “Late Fee Entries” at 28:51

Not found in BC28-30: interface “Calculate Fee”, table “Customer Ledger Entry”, enum “test handler”, codeunit “Late Fee Management Apply Fee”, page “Late Fee Entries”.

Quotes

  • 0:43 “We have the ALMCP that we launched uh in the last release and that gives AI agents real tools to work with your AL”
  • 2:02 “In this wave, an agent can search the connected environment and get back not just the object but the app that owns it uh”
  • 4:36 “It’s called source. And here you can now choose environment.”
  • 5:02 “we now have a new tool in our MCP called get next object ID. This will look at your current project the appjson”
  • 7:49 “Um, we also now have something new in this release which is the default implementation of this interface.”
  • 7:59 “So now you don’t have to implement a method in an interface if there is a default implementation. This is critical for allowing you”
  • 11:05 “But now we have the ability to specify the public resource folders. This means that resources in these folders are available to anyone outside”
  • 11:34 “The public resources are actually consumable without a dependency.”
  • 13:53 “So we made it possible for you to switch to big integer by changing the type.”
  • 13:53 “we made it possible for you to switch to big integer by changing the type”
  • 15:01 “to a big integer and we have to be mindful that this will or can cause overflow at runtime”
  • 15:50 “we can now mix our base uh field with our extension field and get a nice index that is uh very useful”
  • 17:05 “Now we’ve also added namespaces to our translations”
  • 18:31 “read isolation is now an explicit option when reading from isolated storage so that you can state read committed with an update lock”
  • 18:52 “we no longer need to specify the tool tip if we use the run object”
  • 19:33 “These are not fields that I have created. They’re part of the system fields on the record now.”
  • 20:02 “a method called is dirty on a record and a record ref that allows you to test whether a record has changed”
  • 20:56 “we’re actually adding datadriven tests so that one test method can run many scenarios”
  • 24:21 “There are several things that you can do in the test handler. If we go and look at the interface, we can see on”
  • 26:13 “we have added a static call graph analysis. And that means that our tool will build a graph across the extension and its dependencies”
  • 26:13 “If we change this internal fee calculation, who can call it and which public entry points should we review?”
  • 27:34 “Counter to the LSP which is actually looking at the project as it is now. This is a static thing that we can do”
  • 29:12 “This is important because we have methods in our code that we want to protect that we want to somehow understand what the call”
  • 30:48 “coding agents can now capture the performance profiles and the snapshot recordings themselves through dedicated mcp”
  • 33:27 “why are these called proxies this is because the actual work all happens on the server there’s no snapshot or”

Disclaimers in the video

  • 26:27 coming-later: we’re going to have a full session on this. And we’ll add the link in the description.
  • 29:31 coming-later: Take a look at the video that Peter mentioned because there’s a lot more to this graph tool than I can cover here.
  • 31:15 coming-later: we will have a recorded session on this to go through details in the capabilities and again we will link this in the description

Presenters (as heard): Peter, Stefan, Stephan.