Business Central

2026

2025

Is Linux ready for BC Development?

An honest look at Business Central AL development on Linux: what works perfectly, where Docker and reports still need a Windows VM, and how to get started

2024

MsDyn365BC.Code.History Tips & Tricks

Master MSDyn365BC.Code.History: fix broken GitHub search with github.dev, clone single branches, use GitLens to diff entire BC version ranges, and fetch

MsDyn365Bc.Code.History Updates

How MSDyn365BC.Code.History was migrated to GitHub Actions with parallel country matrix builds, why XLF translation files were dropped, and how to manage

Indirect Permissions in Business Central

Why LinterCop rule LC0068 warns about missing Permissions properties in AL — a complete explanation of indirect permissions, 250 restricted tables, and

Excel Reports OnPrem/Docker

How to connect refreshable Excel reports to Business Central OData APIs when running Docker or on-premises containers, including tenant URL and credential

Basic Repo Setup with AL-Go

Step-by-step AL-Go repository setup from template to first release: settings.json, shared rulesets, LinterCop, environment deployment, and org-level

Creating the ErrorInfo Wrapper

Live-stream walkthrough of building a fluent ErrorInfo wrapper codeunit in AL using the 'this' keyword, fix-it actions, and the facade pattern for clean

Running Windows 11 on a Debian Host

How to set up a Business Central AL-Go build agent by running Windows 11 in a KVM/QEMU VM on Debian 12 — bypassing TPM requirements and cutting overhead.

2023

View changes of base permission sets

How to track Microsoft's Business Central permission set changes between updates using the MSDyn365BC.Code.History GitHub repository — step-by-step guide.

My approach to custom APIs

When to use API Queries vs API Pages vs OData Bound Actions in Business Central — a practical approach to building readable, testable, and performant

Go Live Checklist

A look at the open-source GoLiveChecklisting app for Business Central — an extensible framework to script and validate data quality checks before going

BC TechDays 2023

Stefan Maron's BC TechDays 2023 recap: first-ever conference session, community highlights, and resource links for LinterCop, MSDyn365BC.Code.History, and

My journey to Linux

How Stefan switched to Linux for daily AL development: running BC Docker containers in a stripped-down Windows VM and patching the AL language extension

2022

Bugfixes for LinterCop Rule LC0015

LinterCop v0.24.0 fixes rule LC0015 to check all permission types — not just TableData — filling the gap left by PTE0004 for Business Central AL

Changes in MSDyn365BC.Code.History

MSDyn365BC.Code.History rewrote 1800 commits via git filter-branch and added Git LFS for large translation files — here's how to resync your local clone.

BusinessCentral.LinterCop v0.23.0

LinterCop v0.23.0 adds wiki help links, LC0014 for permission set caption length, and LC0015 for full permission set object coverage — not just tables.

2021

Updates on my LinterCop project

LinterCop update: GitHub Actions CI pipelines, expanded Rule0005 casing checks, new LC0013 NotBlank rule for primary keys, and plans for pre-release beta

BusinessCentral.LinterCop goes VS Code!

Install LinterCop in VS Code for AL development — the auto-updating extension adds custom code analysis rules via your al.codeAnalyzers settings.

BusinessCentral.LinterCop

Introducing LinterCop — an AL code analyzer for Business Central built by reverse-engineering the compiler /analyzer: interface. Contribute on GitHub.

Be careful with dynamic code

How overusing RecordRef and FieldRef in Business Central caused a 650% performance regression on sales header modifications — and why interfaces fixed it

Validate a commit before it is committed

Use a Git pre-commit hook with a PowerShell script to block commits with invalid app.json version numbers in Business Central AL projects — shareable

Upgrade a BC CRONUS Database using Docker

Step-by-step PowerShell script to upgrade a Business Central CRONUS database using Docker containers — live-streamed with the script published on GitHub

Code review: Loop over an Enum

Refactor an AL enum loop into a clean foreach with Enum.Ordinals() and FromInteger() — a code review on why readable AL code is always easier to maintain.

Speed up BC container creation

Save nearly 3 minutes per BC container build by pre-baking test libraries into your Docker image with New-BcImage and -includeTestToolkit — one simple

Video series: How do I?

Introducing a short-form AL video series focused on single tasks — practical how-to clips for Business Central developers using default VS Code settings.

Can I copy my container?

Copy a Business Central Docker container in two commands — docker commit to snapshot it, then New-BcContainer from the saved image to restore it instantly.

MSDyn365BC.Code.History

Introducing MSDyn365BC.Code.History: a GitHub repository tracking every on-premises Business Central version so you can diff any two CU releases

2020

Automated export objects from C/AL

Use a SQL trigger on the NAV Object table to auto-export C/AL objects as TXT files into a Git repository inside a Docker container, giving you version

Business Central and Multiline Fields

Display long text fields across multiple lines in Business Central using the built-in WebPageViewer control add-in — no custom control add-in required.

AL Lint v0.1.7: Code Metrics

AL Lint v0.1.7 adds cyclomatic complexity and maintainability index metrics to the VS Code status bar, helping you keep Business Central AL code clean and

VS Code extension: AL Lint

Stefan Maron takes over the AL Lint VS Code extension — adding a function length check and planning clean code and performance rules beyond the built-in

Condition basics in AL

Practical AL coding patterns for writing clean, readable conditions — from IN statements and case true of to extracting complex logic into named functions.

Coding4Performance 4: Task Scheduler

How to use the Business Central Task Scheduler to queue background work across server instances, including Docker setup and scheduling tips.

Coding4Performance 3: Start Session

Step-by-step guide to using StartSession in Business Central AL to run codeunits in the background and improve user session performance.

Coding4Performance 1: Text Builder

AL TextBuilder vs string concatenation benchmarks — why += causes exponential slowdowns and how TextBuilder handles 10 million appends in just 6 seconds.