Open Source

2026

bcdb restore: Write a Cloud Export Into a Container

Since v0.2.0, bcdb can load a Business Central export into a running container in seconds, without needing the schema to match first. Getting the defaults safe took locking myself out of my own admin login.

AL Language Tests: An Executable Spec for How BC Actually Behaves

Why I built a separate test suite that runs against a real BC service tier instead of AL Runner's in-memory emulator: 101 merged PRs and 566 AL files identifying exact AL language behavior, so AL Runner has a known-correct answer to match and I find out fast if Microsoft ever changes that behavior.

Weekly Recap: August 21-28

AL Runner's CI tooling got a week of hardening after a squash-merge bug ate a required check, the Linux fast lane fixed two bugs that only showed up on real pipelines, OpenPageInspection got its first update in two years, and I shipped Azure CLI auth to navapi, someone else's project.

Weekly Recap: August 14-21

AL Runner's dedicated post already covered v2.2/v2.3, but releases now gate on tests too; pushing the Linux fast lane onto a second repo surfaced a Windows PowerShell 5.1 JSON bug that had silently broken CI on two repos since day one; a graphify-al fork that had drifted 677 commits behind upstream got resynced, catching a live dependency landmine along the way; and a few smaller fixes landed in a WordPress migration script and in vsc-lintercop's LinterCop-to-ALCops migration notice.

AL Runner v2.2 and v2.3: Coverage, Quick Scripts, and a Watch Mode You Can Trust

Since the v2 cutover: code coverage for your AL test runs, running a snippet of AL without writing a codeunit for it, a watch mode that no longer reports fake failures mid-save, and about 130 fixes to places where the runner's behavior didn't match real BC. Plus shoutouts to the two AL developers whose bug reports drove most of them.

AL Runner v2: What Feedback Told Me v1 Was Missing

v1 worked for the use cases it was built for. Companies actually using it told me that wasn't enough — most real extensions can't be unit tested at all without running against real Microsoft or ISV code. That feedback drove a clean v2 cut. It also changed how the runner fails: anything it can't support now throws loudly instead of quietly passing.