Weekly Review: Business Central AL Development – April 19–25, 2026

Highlighting posts and resources from the Business Central development community — April 19–April 25, 2026

This week’s standout is Stefan Maron’s AL Runner — a CLI that transpiles AL to C# via the BC compiler’s public API and runs your unit tests in seconds with no service tier, no Docker, and no SQL. Stefano Demiliani warns about reusing the same self-hosted integration runtime across cloud migrations, Natalie Karolak surfaces a quietly-shipped BC 27.1 platform fix that finally makes 'string'.Substring() a safe drop-in for CopyStr, Marcel Chabot walks through how to debug a misbehaving Business Central agent, and Javi Armesto introduces ALDC, his contracts-first delivery model for AI-assisted AL development.


Recent Posts (April 19–25, 2026)

➡️ 1. AL Runner: Run AL Unit Tests Without a BC Service Tier

📇 Author: Stefan Maron
🗓️ Date: April 24, 2026
🌎 Link: stefanmaron.com
📝 Summary: Stefan announces MSDyn365BC.AL.Runner, a cross-platform dotnet tool that calls Microsoft.Dynamics.Nav.CodeAnalysis.Compilation.Emit() to transpile your .al files into C#, rewrites BC runtime types (NavRecordHandle, etc.) into in-memory mocks via a CSharpSyntaxRewriter, compiles with Roslyn, and runs every Subtype = Test codeunit through reflection — typically in seconds. Test matrix runs against BC 26 through BC 28. Supports Insert/Modify/Find/FindSet/SetRange/CalcFields, RecordRef/FieldRef, TestPage, JSON types, IsolatedStorage, event subscribers, and single-dataitem queries; Commit()/Rollback() are no-ops and .app package code requires --stubs or --compile-dep for real behavior. Designed for fast CI pre-checks ahead of a full container pipeline and as a tight inner loop for AI coding agents (--guide exposes a prompt-ready reference).


➡️ 2. Business Central Cloud Migration: Be Careful On Reusing the Same Self-Hosted Runtime

📇 Author: Stefano Demiliani
🗓️ Date: April 24, 2026
🌎 Link: demiliani.com
📝 Summary: When the source database is on-prem SQL Server, Cloud Migration relies on a self-hosted Azure Data Factory integration runtime to push data into the cloud. A frequent partner mistake is reusing the same self-hosted runtime across multiple migrations — when one environment finishes the migration process, it disables the cloud side of the runtime, breaking the next environment with The tenant YOURTENANT has not been set up with a valid integration environment. Runtimes are also disabled after 10 days of inactivity. Stefano’s rule: don’t share integration runtimes between environments.
(also appeared in the April 12–18 newsletter)


➡️ 3. Using Substring to Replace CopyStr

📇 Author: Natalie Karolak
🗓️ Date: April 23, 2026
🌎 Link: nataliekarolak.wordpress.com
📝 Summary: On older BC platforms, replacing CopyStr('123456789', 1, 20) with '123456789'.Substring(1, 20) blew up at runtime with Index and length must refer to a location within the string. That mismatch — CopyStr clamps to actual length, Substring did not — has finally been fixed on the platform side as of a later BC 27.0 build (online), and is in any BC 27.1 application build. Natalie notes the fix went undocumented, so set app.json "application" to 27.1.0.0 or higher before swapping CopyStr for Substring; the AL Language "runtime" doesn’t matter. CopyStr is not being deprecated.


➡️ 4. Effective Steps for Troubleshooting Business Central Agents

📇 Author: Marcel Chabot
🗓️ Date: April 24, 2026
🌎 Link: aardvarklabs.blog
📝 Summary: Part 3 of Marcel’s BC AL Journey #35 covers the practical side of debugging an agent that isn’t behaving. Open the Agent Tasks page, drill into a task, and use View Messages (input/output transcript) and View Log Entries (every discrete step the agent took, with Description, Reason, and Details columns) to see why the agent navigated where it did. View Details exposes “what the agent saw” — page state, tools available, data, and prompts — so you can pinpoint missing data exposure or bad permissions. To tune behavior, set the agent to Inactive, then adjust Agent Permissions (avoid Super in production), the Profile (Role) the agent runs under, and prune the profile’s home page so the agent has fewer options to parse. Copilot credits per task are visible on the same page (1 credit ≈ $0.01).


➡️ 5. ALDC: A Delivery Model for AI-Assisted AL Development

📇 Author: Javi Armesto
🗓️ Date: April 22, 2026
🌎 Link: techspheredynamics.com
📝 Summary: Javi’s AL Development Collection (ALDC) reframes AI-assisted coding around spec contracts rather than chat prompts. Every feature starts with a contract capturing the functional requirement, technical design, and test criteria. A Conductor agent orchestrates three scoped subagents — Architect, Developer, Review — through gated phases that require explicit human approval between phases. The Implementation subagent writes tests before code, and 11 composable skills (RDLC transformation, event-driven integration, upgrade codeunit patterns, AL performance tuning, etc.) load only when the task needs them. Runs in both GitHub Copilot and Claude Code under MIT license — same contracts, agents, and skills regardless of the assistant.
(also appeared in the April 12–18 newsletter)


Community Resources

Official Resources

GitHub Repositories

Follow on Social Media


Stay Connected

The Business Central AL development community stays active with valuable content on AL development, upgrades, integrations, and tooling improvements. Following #MSDyn365BC and #BusinessCentral on Twitter/X is a great way to catch new posts as they’re published.


Note: This review is compiled from publicly available blog posts and community resources. Links to external blog posts are provided for your information only and do not constitute endorsement or validation of their content. Publication information and availability are subject to change. Always verify information against official documentation for production use.

Permanent link to this article: https://www.dvlprlife.com/2026/04/weekly-review-business-central-al-development-april-19-25-2026/

Leave a Reply

Your email address will not be published.