Interfaces in Business Central (AL)

If you’ve ever worked on a Business Central extension that needs to support multiple “flavors” of the same operation—different shipping providers, different document formats, different pricing strategies—you’ve probably felt the pain of tightly coupled code. Interfaces in AL solve that problem by letting you define a contract (a set of methods) and then swap implementations without touching the calling code.

Interfaces were introduced in Business Central 2020 release wave 1 and have quickly become an important pattern for building extensible, maintainable AL solutions. If you haven’t used them yet, this article walks through what they are, why they matter, and how to build with them.

You can find the full code for the example on GitHub.

Customer Card showing enum strategy

What Is an Interface?

An interface is a named object that declares one or more procedure signatures—but contains no implementation. It defines what a Codeunit must do, not how it does it.

interface IDocumentValidator
{
    procedure Validate(var RecRef: RecordRef): Boolean;
}

Any Codeunit that claims to implement IDocumentValidator must provide a concrete body for Validate. The AL compiler enforces this at build time—if a method is missing, you get an error.

Key characteristics:

  • An interface contains only procedure declarations (no variables, no triggers, no logic).
  • It cannot be instantiated or called directly.
  • It acts as a contract between the code that calls a behavior and the code that provides it.

Why You Should Care

  • Loose coupling: Your calling code depends on the interface, not on a specific Codeunit. You can swap implementations without modifying callers.
  • Extensibility without events: Partners and ISVs can add new behavior by implementing the interface and extending the enum—no event subscriptions needed.
  • Polymorphism: You can declare a variable as an interface type and call methods on it. At runtime, the actual implementation executes based on which Codeunit was selected.
  • Testability: You can create a “mock” Codeunit that implements the interface for testing purposes.

How It Works: The Three-Part Pattern

Interfaces in AL rely on three cooperating objects:

  1. The interface – declares the method signatures.
  2. One or more Codeunits – each implements the interface with concrete logic.
  3. An enum – ties enum values to specific implementations.

This trio is the standard pattern. The enum is the dispatch mechanism. When you assign an enum value, Business Central knows which Codeunit to run.

Example: A Discount Calculator

Let’s say you want to support multiple discount strategies. Start with the interface:

interface IDiscountCalculator
{
    procedure CalculateDiscount(var SalesLine: Record "Sales Line"): Decimal;
}

Then create two implementations:

Codeunit 50100 "DVLPR Standard Discount" implements IDiscountCalculator
{
    procedure CalculateDiscount(var SalesLine: Record "Sales Line"): Decimal
    begin
        exit(SalesLine."Line Amount" * 0.05); // flat 5%
    end;
}

Codeunit 50101 "DVLPR Volume Discount" implements IDiscountCalculator
{
    procedure CalculateDiscount(var SalesLine: Record "Sales Line"): Decimal
    begin
        if SalesLine.Quantity >= 100 then
            exit(SalesLine."Line Amount" * 0.15)
        else
            exit(SalesLine."Line Amount" * 0.05);
    end;
}

Wire them up through an enum:

enum 50160 "DVLPR Discount Strategy" implements IDiscountCalculator
{
    Extensible = true;

    value(0; Standard)
    {
        Implementation = IDiscountCalculator = "DVLPR Standard Discount";
    }
    value(1; Volume)
    {
        Implementation = IDiscountCalculator = "DVLPR Volume Discount";
    }
}

Now your calling code never needs to know which strategy is active:

procedure ApplyDiscount(Strategy: Enum "DVLPR Discount Strategy"; var SalesLine: Record "Sales Line")
var
    Calculator: Interface IDiscountCalculator;
begin
    Calculator := Strategy;
    SalesLine."Line Discount Amount" := Calculator.CalculateDiscount(SalesLine);
end;

If a partner wants to add a “Loyalty” discount strategy later, they just create a new Codeunit that implements IDiscountCalculator, add an enumextension value, and they’re done. No modifications to your calling code.

Using Existing Interfaces in Business Central

Microsoft already ships several interfaces in the base application and system application. A practical way to get comfortable with interfaces is to implement one that already exists.

Screenshot showing Implement Interface

For example, the E-Document module defines an E-Document interface. To use it:

  1. Find the interface: Use the AL Explorer in VS Code to browse available interfaces.
  2. Create a Codeunit that implements the interface.
  3. Use the “Implement Interface” quick action in VS Code—hover over the interface name and let the tooling generate empty stubs for all required methods.
  4. Extend the corresponding enum with your new value and implementation mapping.

This is a great way to learn the pattern because the plumbing is already in place—you just supply the logic.

Snippet Support

VS Code has a built-in snippet for interfaces. Type tinterface in an AL file and the AL Language extension generates the basic structure for you. This is a quick way to scaffold a new interface and avoid syntax mistakes.

Implementing Multiple Interfaces

A single Codeunit can implement more than one interface:

Codeunit 50164 "DVLPR Multi Provider" implements IDiscountCalculator, IShippingProvider
{
    procedure CalculateDiscount(var SalesLine: Record "Sales Line"): Decimal
    begin
        // discount logic
    end;

    procedure GetShippingRate(Length: Decimal; Width: Decimal; Height: Decimal; Weight: Decimal): Decimal
    begin
        // shipping logic
    end;
}

Be careful with method name collisions. If two interfaces define a method with the same name and signature, the compiler expects a single implementation to satisfy both. If the signatures differ, you’ll get a compile error. The analyzer rules AL0587 and AL0675 help catch these situations.

Type Testing and Casting

Business Central supports type testing and casting operators for interface variables, which allows you to check at runtime whether an interface variable holds a specific implementation:

var
    Calculator: Interface IDiscountCalculator;
begin
    if Calculator is "DVLPR Volume Discount" then
        Message('Volume discount is active');
end;

This is useful when you need conditional logic based on the underlying implementation, though use it sparingly—heavy use of is checks can undermine the polymorphism that interfaces are meant to provide.

Lists and Dictionaries of Interfaces

Starting with Business Central 2025 release wave 1 (runtime 15.0), you can create List and Dictionary collections of interface types:

var    
    MyCircle: Codeunit Circle;
    MySquare: Codeunit Square;
    Shape: Interface IShape;
    Shapes: List of [Interface IShape];    
begin
    Shapes.Add(MyCircle);
    Shapes.Add(MySquare);

    foreach Shape in Shapes do
        Message('Area: %1', Shape.GetArea());
end;

This opens up patterns like maintaining a registry of handlers or processing a collection of implementations in sequence.

Extending Interfaces

Starting with Business Central 2024 release wave 2, interfaces support the extends keyword. This lets you create a new interface that inherits all methods from one or more existing interfaces and adds its own on top. It’s particularly useful for ISVs and partners who want to build on each other’s interfaces without modifying the originals.

The syntax looks like this:

interface IExtendedInterface extends IBaseInterface
{
    procedure AdditionalMethod();
}

Any Codeunit that implements the extended interface must provide concrete implementations for all methods—both those defined in the base interface(s) and any new methods declared in the extension.

A good real-world example is the "Price Calculation" interface in the base application. This interface is the backbone of the extensible pricing system in Business Central. It declares methods like Init, ApplyDiscount, ApplyPrice, GetLine, and others that a pricing handler must implement. The "Price Calculation Handler" enum maps each value to a Codeunit that implements the interface, which is how Business Central decides which pricing engine runs at runtime.

If you needed to extend this pattern—say you wanted a pricing handler that also supports contract-specific pricing—you could define a new interface that extends the original:

interface IContractPriceCalculation extends "Price Calculation"
{
    procedure SetContractNo(ContractNo: Code[20]);
    procedure GetContractDiscount(): Decimal;
}

A Codeunit implementing IContractPriceCalculation would need to provide all the methods from "Price Calculation" plus the two new ones. This means existing code that works with "Price Calculation" continues to work unchanged, while new code can take advantage of the extended contract.

You can also extend multiple interfaces at once:

interface ICombined extends IFirst, ISecond
{
    procedure CombinedMethod();
}

Codeunit 50160 DVLPRCombines implements ICombined
{
    // Must implement IFirst, ISecond, ICombined 
}

Gotchas and Best Practices

  • Don’t add methods to published interfaces. Once your interface is in production, adding a method breaks every existing implementation. The AppSourceCop rule AS0066 catches this. Use interface extensions (BC 2024 wave 2+) or versioning instead.
  • Keep interfaces small and focused. A few related methods per interface is better than one giant interface that tries to cover everything.
  • Use meaningful names. Prefix with I (like IAddressProvider) to make interface types immediately recognizable.
  • Be aware of circular references. Interfaces, enums, and implementing Codeunits can create circular dependency chains. Rule AL0852 flags this.
  • Avoid naming conflicts with built-in procedures. Rule AL0616 catches this, but it’s easy to trip over.
  • Document expected behavior. The interface definition alone tells the compiler what methods exist, but not how they should behave. Use XML documentation comments or a companion doc to describe expectations (pre/post conditions, expected error handling, etc.).
  • Set Extensible = true on enums when you want partners to add implementations via enum extensions.

Wrapping Up

Interfaces are a powerful pattern available in AL today. They let you design systems where behavior can be extended and swapped without modifying existing code—a core requirement for any healthy extension ecosystem.

The pattern is straightforward: define an interface, implement it in Codeunits, wire it through an enum, and call it polymorphically. Once you see it in action, you’ll find yourself reaching for it any time you need pluggable behavior.

Learn more:

You can find the full code for the example on GitHub.

Note: The code and information discussed in this article are for informational and demonstration purposes only. This content was written referencing Microsoft Dynamics 365 Business Central 2025 Wave 2 online. Interfaces are available from Business Central 2020 release wave 1 and later. Always test in a sandbox first.

Permanent link to this article: https://www.dvlprlife.com/2026/02/interfaces-in-business-central-al/

February 2026 Cumulative Updates for Dynamics 365 Business Central

The February updates for Microsoft Dynamics 365 Business Central are now available.

Before applying the updates, you should confirm that your implementation is ready for the upgrade and ensure compatibility with your modifications. Work with a Microsoft Partner to determine if you are ready and what is needed for you to apply the update.

Please note that Online customers will automatically be upgraded to version 27.4 over the coming days/weeks and should receive an email notification when upgraded.

Direct links to the cumulative updates are listed here:

Dynamics 365 Business Central On-Premises 2025 Release Wave 2 – 27.4 (February 2026)

Dynamics 365 Business Central On-Premises 2025 Release Wave 1 – 26.10 (February 2026)

Dynamics 365 Business Central On-Premises 2024 Release Wave 2 – 25.16 (February 2026)

Dynamics 365 Business Central On-Premises 2024 Release Wave 1 – 24.18 (October 2025)

 


If you’re looking for information on older updates, review the list here

Permanent link to this article: https://www.dvlprlife.com/2026/02/february-2026-cumulative-updates-for-dynamics-365-business-central/

Weekly Review: Business Central AL Development – February 1–7, 2026

Highlighting posts and resources from the Business Central development community — February 1–7, 2026

Looking to stay current with Dynamics 365 Business Central AL development? Here’s a curated list of recent blog posts, tutorials, and community resources from the past week.


Recent Posts (February 1–7, 2026)

➡️ 1. Birthday Message Wall (Enhancing Business Central’s HR)

📇 Author: Gerardo Rentería
🗓️ Date: February 1, 2026
🌎 Link: gerardorenteria.blog
📝 Summary: Gerardo builds a creative Birthday Message Wall extension that enhances Business Central’s HR module. The project demonstrates how to extend the Employee card with a celebratory wall where colleagues can leave birthday messages, showcasing practical AL development with a fun twist.


➡️ 2. AL Object ID Ninja MCP Server Is Here

📇 Author: Vjeko
🗓️ Date: February 2, 2026
🌎 Link: vjeko.com
📝 Summary: The official MCP Server for AL Object ID Ninja is now available on npm, bringing Ninja’s object ID management to agentic coding tools like Cursor, Claude Code, and Windsurf. While VS Code users are already covered by the built-in Ninja extension, this MCP server lets AI coding assistants on other platforms request, commit, and unassign object IDs through the Ninja 3.0 platform.


➡️ 3. New AL Tools Available for Agents in AL Language v17.0

📇 Author: Stefan Šošić
🗓️ Date: February 2, 2026
🌎 Link: ssosic.com
📝 Summary: Stefan covers the new agent-facing tools introduced in AL Language v17.0, giving AI agents direct access to AL development capabilities within VS Code. The post details the fresh set of tools that enhance agentic workflows for Business Central extension development.


➡️ 4. Weekend Project: Teaching AI to Talk to Business Central

📇 Author: Silviu Virlan
🗓️ Date: February 3, 2026
🌎 Link: svirlan.com
📝 Summary: Silviu documents his weekend project connecting Claude to Dynamics 365 Business Central using the Model Context Protocol (MCP). The walkthrough covers Azure AD app registration, enabling BC’s native MCP endpoint, and building a Python MCP server — complete with working examples of querying vendor balances and creating sales quotes through natural language.


➡️ 5. How to Run a Report in Preview Mode Without the Request Page

📇 Author: Yun Zhu
🗓️ Date: February 5, 2026
🌎 Link: yzhums.com
📝 Summary: Yun demonstrates how to preview a Business Central report directly without showing the Request Page — a common developer need that previously forced a download instead. The solution leverages BC26’s File.ViewFromStream method to save the report as a PDF and display it in the web client’s built-in PDF viewer, with full AL code examples for both report-selection-based and fixed-report approaches.


➡️ 6. Why Do All My Tests Show Up Twice in the Test Explorer?

📇 Author: James Pearson
🗓️ Date: February 5, 2026
🌎 Link: jpearson.blog
📝 Summary: James explains the duplicate-test mystery: The AL Language pre-release extension now discovers tests and puts them into VS Code’s Test Explorer alongside AL Test Runner, creating two entries per test. A bug in the AL Language extension against pre-BC28 containers can leave test runs stuck indefinitely, which is particularly problematic when AI agents attempt to run tests during code generation.


➡️ 7. Monitoring Your Customer’s Network Speed from Telemetry

📇 Author: Stefano Demiliani
🗓️ Date: February 6, 2026
🌎 Link: demiliani.com
📝 Summary: Stefano explores the new customDimensions.deviceHardware node recently added to Business Central’s page views telemetry, which exposes client-side metrics including CPU cores, device memory, network bandwidth, and round-trip time. The post includes ready-to-use KQL queries for charting average bandwidth over time, correlating network speed with page duration, and building normalized comparison dashboards.


Community Resources

Official Resources

GitHub Repositories

  • microsoft/BCApps – Repository for collaboration on Microsoft Dynamics 365 Business Central applications.
  • microsoft/BCTech – Business Central technology samples.
  • microsoft/ALAppExtensions – Repository for collaboration on Microsoft AL application add-on and localization extensions for Microsoft Dynamics 365 Business Central.
  • microsoft/AL – Home of the Dynamics 365 Business Central AL Language extension for Visual Studio Code.
  • StefanMaron/MSDyn365BC.Code.History – Contains the Microsoft Business Central Code. Updated each month.

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/02/weekly-review-business-central-al-development-february-1-7-2026/

Quick Tips: Understanding Business Central Localizations

Welcome to Quick Tips — a fast, focused series designed to help you work smarter.

Each post will give you one practical insight you can apply immediately, whether you’re coding, configuring your tools, or improving your workflow.

Here’s today’s Quick Tip:

What Are Localizations?

Dynamics 365 Business Central is available in over 240 countries and regions, but not every localization is built the same way. Understanding how localizations work helps you build extensions that play nicely across geographies and avoid surprises when deploying to new markets.

There are two types of localizations:

  • Microsoft localizations — Microsoft provides the localized BaseApp for about 24 countries like the United States, Canada, Germany, France, Australia, Italy, the UK, and others.
  • Partner localizations — For the remaining 200+ countries, partners build localization apps primarily on top of the international version (known as W1) and publish them on AppSource.

You can learn more about Dynamics 365 Business Central local functionality here.

Why It Matters

When you create a new environment, the country/region you select determines two things:

  • Which BaseApp version you get — A Microsoft localization (like US for United States or DE for Germany) includes country-specific tax, reporting, and compliance features baked in. A W1-based environment relies on partner apps from AppSource for those features.
  • Where your data lives — The environment localization determines the Azure geography your database is deployed to. For example, a Canadian environment deploys to the Canada region, while a South African environment deploys to the South Africa region. Visit the Azure Region List for more information on where each country/region is hosted.

Key Things to Know

  • Some localizations have migrated to W1. Iceland, Sweden, and the United Kingdom have had their BaseApps migrated to W1 in recent releases.
  • Language ≠ localization. Business Central supports 50+ languages, including Czech, Danish, Dutch, Finnish, French, German, Italian, Japanese, Korean, Spanish, Swedish, and many more. Language apps are installed separately from AppSource; some are provided by Microsoft while others come from partners.
  • English (US) is the only built-in language. Every other language requires installing a language app.

How to Check Availability

  • Visit the Country/regional availability and supported languages page on Microsoft Learn.
  • Look up your target country to see whether it uses a Microsoft or Partner localization and which BaseApp version applies.
  • Check the supported languages table to see if your target language has a Microsoft-provided or partner-provided translation app.

Why It Helps

If you’re building extensions for international customers, knowing the localization landscape keeps you from making assumptions about what’s in the BaseApp. A feature that exists natively in the German localization might need a partner app in Brazil. Planning for W1 compatibility from the start makes your extensions more portable across markets.

Learn more about Country/regional availability and supported languages here.

Got a favorite shortcut or workflow tweak? Share it in the comments and subscribe to dvlprlife.com for more Quick Tips like this one!

Permanent link to this article: https://www.dvlprlife.com/2026/02/quick-tips-understanding-business-central-localizations/

Quick Tips: Install the Business Central Desktop App

Welcome to Quick Tips — a fast, focused series designed to help you work smarter.

Each post will give you one practical insight you can apply immediately, whether you’re coding, configuring your tools, or improving your workflow.

Here’s today’s Quick Tip:

Run Business Central as a Desktop App

Did you know you can install Business Central as a standalone desktop app directly from your browser? No trip to the Microsoft Store required — just a couple of clicks and you’re done.

Business Central open in browser with install icon visible

The desktop app gives you a dedicated window for Business Central, separate from your browser tabs. It’s faster to launch, easier to find in your taskbar, and runs more smoothly without competing for attention with dozens of open tabs.

How to Install from the Browser

  • Open Business Central in Microsoft Edge or Google Chrome.
  • Look for the install icon in the browser’s address bar:
    • Edge: Click the App available icon (a small monitor with a down arrow), then select Install.
    • Chrome: Click the Install Business Central icon, then select Install. Install prompt dialog in Edge or Chrome browser
  • The app installs and opens immediately.

Tip: In Edge, you can also go to Settings and more (the three dots) → AppsInstall this site as an appInstall. Edge Settings menu showing Install this site as an app option

Installing for Multiple Environments

If you work with multiple Business Central environments, you can install the app separately for each one:

  • Navigate to the specific environment you want before installing.
  • Each installed app will open directly to that environment.
  • The environment name appears in the window title and Start menu, making it easy to tell them apart.

Why It Helps

  • Quick access — Launch Business Central from your Start menu or pin it to your taskbar.
  • Cleaner workflow — Keep Business Central in its own window, away from browser clutter.
  • Better performance — The app renders faster and more smoothly than running in a browser tab.
  • Multi-environment support — Install a separate app for each environment you work with.

Learn more about the Business Central Desktop App and Preparing for and installing the Microsoft Dynamics 365 Business Central app.

Got a favorite shortcut or workflow tweak? Share it in the comments and subscribe to dvlprlife.com for more Quick Tips like this one!

Permanent link to this article: https://www.dvlprlife.com/2026/02/quick-tips-install-the-business-central-desktop-app/

Weekly Review: Business Central AL Development – January 25-31, 2026

Highlighting posts and resources from the Business Central development community — January 25–31, 2026

Looking to stay current with Dynamics 365 Business Central AL development? Here’s a curated list of recent blog posts, tutorials, and community resources from the past week.


Recent Posts (January 25–31, 2026)

➡️ 1. Why No. Series Break After Upgrading to Business Central 27 (And How to Fix It)

📇 Author: Saurav Dhyani
🗓️ Date: January 29, 2026
🌎 Link: sauravdhyani.com
📝 Summary: Identifies a breaking change in BC27 where No. Series validation now runs earlier and more strictly than in BC26. The post explains which records are affected, provides the specific code change Microsoft made, and offers a step-by-step fix using setup configuration for impacted environments.


➡️ 2. Understanding the Database Wait Statistics Page

📇 Author: Stefano Demiliani
🗓️ Date: January 28, 2026
🌎 Link: demiliani.com
📝 Summary: A detailed look into the Database Wait Statistics page in Business Central, explaining how to read and interpret Azure SQL wait statistics for performance diagnostics. Includes detailed analysis of real-world data covering Buffer IO, CPU, Lock contention, and Service Broker waits, with actionable investigation priorities.


➡️ 3. When GUIDs Collide: The App ID Problem Nobody Expected

📇 Author: Vjeko
🗓️ Date: January 27, 2026
🌎 Link: vjeko.com
📝 Summary: Explores the surprising problem of duplicate App IDs in Business Central extensions, found across nearly 150 out of 50,000 apps tracked by AL Object ID Ninja. Covers three common scenarios that cause collisions (manual GUIDs, GitHub clones, copy-paste apps) and explains how Ninja v3 now provides collision detection and protection.


➡️ 4. Escape Room App Gone Public!

📇 Author: Waldo
🗓️ Date: January 27, 2026
🌎 Link: waldo.be
📝 Summary: Announces the open-source release of the BCTalent Escape Room framework on GitHub (microsoft/BCTech). The framework lets partners build interactive training experiences, gamified onboarding, and feature adoption modules within Business Central—documentation included so even AI can help you build rooms.


Recent Videos (January 25–31, 2026)

🎬 1. What’s Cooking in Business Central: Delivering Analysis Views in AL extensions

📺 Channel: Microsoft Dynamics 365 Business Central
🗓️ Date: January 28, 2026
🌎 Link: youtube.com
📝 Summary: A video discussing the new option in Business Central 2026 Wave 1. This new feature will allow for the exporting and including of Analysis Views in AL applications.

🎬 2. AL Development using Claude Code – The Business Central Coding Stream

📺 Channel: Stefan Maron
🗓️ Date: January 27, 2026
🌎 Link: youtube.com
📝 Summary: Stefan shares his Claude Code setup and workflow for development in AL for Business Central.


Community Resources

Official Resources

GitHub Repositories

  • microsoft/BCApps – Repository for collaboration on Microsoft Dynamics 365 Business Central applications.
  • microsoft/BCTech – Business Central technology samples.
  • microsoft/ALAppExtensions – Repository for collaboration on Microsoft AL application add-on and localization extensions for Microsoft Dynamics 365 Business Central.
  • microsoft/AL – Home of the Dynamics 365 Business Central AL Language extension for Visual Studio Code.
  • StefanMaron/MSDyn365BC.Code.History – Contains the Microsoft Business Central Code. Updated each month.

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/02/weekly-review-business-central-al-development-january-25-31-2026/

Enabling API Access in Business Central

Business Central provides a set of REST APIs for integration scenarios. Developers can also create their own APIs for their specific scenarios. Securing these APIs properly is critical for protecting your data. Business Central uses OAuth 2.0 for authentication and authorization when accessing its APIs. This industry-standard protocol ensures that external applications can securely interact with your Business Central environment without exposing user credentials. Instead of using basic authentication, OAuth 2.0 relies on access tokens that grant specific permissions and can be revoked independently.

To set up API access for Business Central, you must configure both Microsoft Entra ID (formerly Azure Active Directory) and Business Central itself to use OAuth 2.0 authentication. This two-part process ensures that only authorized applications can access your data while maintaining security best practices.

Part 1: Configuring Microsoft Entra ID

The first step in enabling API access is registering an application in Microsoft Entra ID. This registration creates a security principle that represents your integration application.

➡️ Register the Application

  1. Navigate to the Azure Portal.
  2. Search for or go to Microsoft Entra ID.
    Microsoft Entra ID
  3. Click on App registrations > New registration.
    App registrations
  4. Provide a meaningful name for your application (for example, “BC API Integration”).
    Registration Name
  5. Select the appropriate supported account types based on your scenario.
    Supported account types
  6. Click the Register button to create the application.

➡️ Configure API Permissions

  1. After registering the application, while on the Registered Application page, navigate to API permissions.
    api permissions
  2. Click Add a permission.
    api permissions
  3. Search for “Dynamics 365 Business Central” and select it. You’ll see two types of permissions:
    Dynamics 365 Business Central
  • Delegated permissions: Your application needs to access the API as the signed-in user (for example, in the case of interactive sign-in scenarios).
  • Application permissions: Used for service-to-service scenarios without a user.
    application permissions
  1. Select application permissions and choose the appropriate permissions based on your integration needs. For most API integration scenarios, you’ll want to add the API.ReadWrite.All application permission. This grants the application access to Business Central APIs without requiring user interaction. If you’d like to grant access to the environment APIs (more on that in another post), add the AdminCenter.ReadWrite.All permission. Note that you may want to create two separate registrations for each permission.
    api permissions
  2. After selecting the desired permissions, click Add permissions at the bottom.
  3. After adding the permission, click Grant admin consent to complete the authorization.

➡️ Configure Application Registration Authentication

  1. From the App Registration page, navigate to Authentication.
    configure authentication
  2. Under Add Redirect URI, click Web under Web applications.
    add redirect uri web
  3. Enter a Redirect URI. For Business Central API access, you can use https://businesscentral.dynamics.com/OAuthLanding.htm or a placeholder URI if you’re not using interactive sign-in.
    add redirect uri
  4. Click Configure to apply the changes.

➡️ Create a Client Secret

  1. For service-to-service authentication, you need to create a client secret or certificate. Navigate to Certificates & secrets > New client secret.
    create client secret
  2. Provide a description and select an expiration period. Plan to rotate the secret before it expires—set a calendar reminder or use Azure Key Vault to manage secret lifecycle and avoid service disruptions.
    add client secret
  3. Click Add to create the client secret.
  4. Important: Make sure to copy the Value immediately, as it will be hidden later and you won’t be able to retrieve it again.
    copy value Make note of these three values from your app registration:
  • Application (client) ID: Found on the app registration overview page
  • Directory (tenant) ID: Also found on the overview page
  • Client secret: The value you just created

Part 2: Configuring Business Central

With Microsoft Entra ID configured, you can now set up Business Central to accept API requests from your registered application.

➡️ Add application registration to Business Central

  1. Log into Business Central.
  2. Search for Microsoft Entra Applications and open the related page.
    Microsoft Entra Applications in Business Central
  3. Click New to add a new Microsoft Entra Application.
    Microsoft Entra Application Card
  4. On the new application card enter:
    • Client ID: The Application (client) ID from your app registration.
    • Description: A friendly name for your reference.
    • State: Set to Enabled Note: When you set the state to enabled, you may be prompted that a new user will be created. Confirm to proceed.
      confirm user creation
  5. Assign the appropriate User Permission Sets to perform the actions your integration requires to the newly created application. Important: Applications cannot be assigned the SUPER permission set. Follow the principle of least privilege and only assign the permissions required for the integration to work.
  6. Click Grant Consent and Accept to finalize the setup.
    grant consent

➡️ Test the API Connection You can test your configuration by making an OAuth 2.0 token request. Here’s an example using PowerShell:

# Get OAuth Token
$scope = "https://api.businesscentral.dynamics.com/.default"

$clientid = "your-client-id-guid" #Application (client) ID from AppRegistration
$clientsecret = "your-client-secret-value" #Your client secret from AppRegistration
$environment = "Production" #Your Business Central environment Name
$tenantID = "your-tenant-id-guid" #Directory (tenant) ID from AppRegistration
$AuthHeader = @{
    'Content-Type' = 'application/x-www-form-urlencoded'
}

$Body = @{
    grant_type='client_credentials'
    client_id=$clientid
    client_secret=$clientsecret
    scope=$scope
}

$Request = Invoke-RestMethod -Method POST -uri "https://login.microsoftonline.com/$($tenantID)/oauth2/v2.0/token" -Headers $AuthHeader -Body $Body
# Build

$Header = @{
    Authorization = "$($Request.token_type) $($Request.access_token)"
}

$Req = $null
$get = $null

# Get a list of APIs
$URL = "https://api.businesscentral.dynamics.com/v2.0/$($tenantid)/$($environment)/api/v2.0/"

$Req = (Invoke-RestMethod -Method Get -Uri $URL -Headers $Header).Value
$URL
$Req

$URL = "https://api.businesscentral.dynamics.com/v2.0/51020b36-8a5a-4dc3-b7d6-59674b8cbc30/RoyaltyCentral/api/littleBridge/dimensions/v2.0/"
$Req = (Invoke-RestMethod -Method Get -Uri $URL -Headers $Header).Value
$URL
$Req

This script authenticates using client credentials and retrieves the list of APIs from your Business Central environment.

Wrapping Up

Enabling API access in Business Central requires coordination between Microsoft Entra ID and Business Central itself. By registering your application in Entra ID and configuring the corresponding user and permissions in Business Central, you create a secure OAuth 2.0 authentication flow. This approach provides better security than legacy authentication methods and aligns with recommended practices for integrations. Remember to regularly rotate your client secrets and follow the principle of least privilege when assigning permissions.


Note: The information in this article is for informational and demonstration purposes only. This content was written with reference to Microsoft Dynamics 365 Business Central 2025 release wave 2 Online and later. Always test in a sandbox first before deploying to production.

Permanent link to this article: https://www.dvlprlife.com/2026/01/enabling-api-access-in-business-central/

Weekly Review: Business Central AL Development – January 18-24, 2026

Highlighting posts and resources from the Business Central development community — January 18–24, 2026

Looking to stay current with Dynamics 365 Business Central AL development? Here’s a curated list of recent blog posts, tutorials, and community resources from the past week.


Recent Posts (January 18–24, 2026)

➡️ 1. Building Custom External File Storage Connectors and New Ones for Business Central

📇 Author: Stefan Šošić
🗓️ Date: January 18, 2026
🌎 Link: ssosic.com
📝 Summary: Introduces new AppSource connectors for the External File Storage module (including Cloudflare R2, Hetzner, and AWS S3), then outlines how to build your own. Covers the architecture (enum registration + interface implementation), pagination for file listings, and a sandbox-safety pattern using environment cleanup events.


➡️ 2. SaaS ERP Misconceptions: The “On-Premises Thinking Trap”

📇 Author: Stefano Demiliani
🗓️ Date: January 20, 2026
🌎 Link: demiliani.com
📝 Summary: A solution-architecture perspective on why SaaS ERP projects struggle when teams try to recreate on-prem patterns in the cloud. Calls out practical habits like defaulting to “accept as-is,” preferring APIs/events over database-style thinking, and designing integrations to be cloud-native and update-tolerant.


➡️ 3. GitHub Copilot Playbook: Chat Modes

📇 Author: Tonya Bricco-Meske
🗓️ Date: January 21, 2026
🌎 Link: bcdevnotebook.com
📝 Summary: Breaks down Copilot’s modes (Ask, Edit, Plan, Agent) and where each fits in a developer workflow, with practical Business Central examples. Includes tips for adding context effectively, using Next Edit Suggestions, and keeping longer agent sessions flowing with sensible request limits.


➡️ 4. Mermaid Diagrams in Business Central: Dynamic Visual Intelligence

📇 Author: Gerardo Rentería
🗓️ Date: January 22, 2026
🌎 Link: gerardorenteria.blog
📝 Summary: Shows a concept for rendering Mermaid.js diagrams inside Business Central using a control add-in, producing interactive visuals from AL-generated text definitions. Includes a layered architecture (AL + add-in + Mermaid CDN), examples like flowcharts and Gantt charts, and a GitHub repo with the framework objects.


➡️ 5. BC Friday Tips #62: VS Code AL Themes

📇 Author: Teddy Herryanto
🗓️ Date: January 23, 2026
🌎 Link: thatnavguy.com
📝 Summary: Quick reminder that the AL Language extension includes Business Central Light and Dark themes (available since AL v16). If you’re in VS Code all day, switching to these can improve readability and reduce eye strain while staying aligned with the BC look-and-feel.


➡️ 6. Step-by-Step Guide to AI Campaigns in Business Central

📇 Author: Marcel Chabot
🗓️ Date: January 23, 2026
🌎 Link: aardvarklabs.blog
📝 Summary: Walks through an AI-driven demo that generates region-based marketing campaigns from natural language input, using two agents (one for grounded search + narrative results, one for extracting postal codes as JSON). The guide emphasizes a pragmatic architecture: Use AI for campaign creation, then let AL handle day-to-day execution via events to reduce cost and improve performance.


Community Resources

Official Resources

GitHub Repositories

  • microsoft/BCApps – Repository for collaboration on Microsoft Dynamics 365 Business Central applications.
  • microsoft/BCTech – Business Central technology samples.
  • microsoft/ALAppExtensions – Repository for collaboration on Microsoft AL application add-on and localization extensions for Microsoft Dynamics 365 Business Central.
  • microsoft/AL – Home of the Dynamics 365 Business Central AL Language extension for Visual Studio Code.
  • StefanMaron/MSDyn365BC.Code.History – Contains the Microsoft Business Central Code. Updated each month.

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/01/weekly-review-business-central-al-development-january-18-24-2026/

January 2026 Cumulative Updates for Dynamics 365 Business Central

The January updates for Microsoft Dynamics 365 Business Central are now available.

Before applying the updates, you should confirm that your implementation is ready for the upgrade and ensure compatibility with your modifications. Work with a Microsoft Partner to determine if you are ready and what is needed for you to apply the update.

Please note that Online customers will automatically be upgraded to version 27.3 over the coming days/weeks and should receive an email notification when upgraded.

Direct links to the cumulative updates are listed here:

Dynamics 365 Business Central On-Premises 2025 Release Wave 2 – 27.3 (January 2026)

Dynamics 365 Business Central On-Premises 2025 Release Wave 1 – 26.9 (January 2026)

Dynamics 365 Business Central On-Premises 2024 Release Wave 2 – 25.15 (January 2026)

Dynamics 365 Business Central On-Premises 2024 Release Wave 1 – 24.18 (October 2025)

Dynamics 365 Business Central On-Premises 2023 Release Wave 2 – 23.18 (April 2025)

 


If you’re looking for information on older updates, review the list here

Permanent link to this article: https://www.dvlprlife.com/2026/01/january-2026-cumulative-updates-for-dynamics-365-business-central/

Weekly Review: Business Central AL Development – January 11-17, 2026

Highlighting posts and resources from the Business Central development community — January 11–17, 2026

Looking to stay current with Dynamics 365 Business Central AL development? Here’s a curated list of recent blog posts, tutorials, and community resources from the past week.


Recent Posts (January 11–17, 2026)

➡️ 1. Streamline Your AL Development with Global NuGet Symbols

📇 Author: Marcel Chabot
🗓️ Date: January 16, 2026
🌎 Link: aardvarklabs.blog
📝 Summary: Shows how to download Business Central symbols from global NuGet sources when you can’t (or don’t want to) connect to a target environment yet. Includes the key VS Code settings (like al.symbolsCountryRegion) and points you to the new AL command for downloading symbols globally.


➡️ 2. Dynamics 365 Business Central: How to Get the Month Name/Text from a Date (Two Ways)

📇 Author: Yun Zhu
🗓️ Date: January 16, 2026
🌎 Link: yzhums.com
📝 Summary: Two practical approaches for turning a Date into a friendly month name in AL. Covers both formatting patterns and the Date virtual table option, with small code snippets you can drop into an extension.


➡️ 3. Connect Any Agent to Business Central

📇 Author: Dmitry Katson
🗓️ Date: January 12, 2026
🌎 Link: katson.com
📝 Summary: Shows a practical, cross-platform way to connect an AI agent to Business Central using an MCP proxy workflow. Helpful if you’re working on macOS/Linux or want a repeatable “one command” setup for connecting tools and agents to a BC environment.


➡️ 4. Do You Have Applications Connecting to an Azure Storage Account? Be Sure to Use TLS 1.2 or Later

📇 Author: Stefano Demiliani
🗓️ Date: January 14, 2026
🌎 Link: demiliani.com
📝 Summary: Important security heads-up for BC developers using Azure Blob Storage: On February 3, 2026, Azure Blob Storage will require TLS 1.2 or later. If your Business Central integrations connect to Azure Storage, you’ll want to verify both the storage account settings and the TLS capabilities of the apps calling into it.


➡️ 5. Do You Really Need Plan Mode If You Already Use Agents Well?

📇 Author: Steven Renders
🗓️ Date: January 13, 2026
🌎 Link: thinkaboutit.be
📝 Summary: A thoughtful take on whether GitHub Copilot Plan mode is actually “new capability” versus a stronger guardrail around work sequencing. Frames Plan mode as an opinionated workflow that makes intent and planning an explicit artifact before implementation. This is useful when you want to avoid accidentally drifting into code changes.


➡️ 6. Check AppSource App Update History

📇 Author: Teddy Herryanto
🗓️ Date: January 16, 2026
🌎 Link: thatnavguy.com
📝 Summary: Quick reminder to check an AppSource app’s “last updated” date before installing. With Business Central changing every release, stale apps are higher risk for bugs and compatibility issues, so update history is a fast way to spot potential trouble early.


➡️ 7. SQL Support in Business Central, Yes, Also in the Cloud

📇 Author: Erik Hougaard
🗓️ Date: January 12, 2026
🌎 Link: hougaard.com
📝 Summary: A quick experiment-driven post (with a video) showing a proof-of-concept for using SQL “inside” cloud Business Central. Interesting if you’re exploring what’s possible (and what isn’t) when you need ad-hoc querying or data-shaping beyond standard AL patterns.


Community Resources

Official Resources

GitHub Repositories

  • microsoft/BCApps – Repository for collaboration on Microsoft Dynamics 365 Business Central applications.
  • microsoft/BCTech – Business Central technology samples.
  • microsoft/ALAppExtensions – Repository for collaboration on Microsoft AL application add-on and localization extensions for Microsoft Dynamics 365 Business Central.
  • microsoft/AL – Home of the Dynamics 365 Business Central AL Language extension for Visual Studio Code.
  • StefanMaron/MSDyn365BC.Code.History – Contains the Microsoft Business Central Code. Updated each month.

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/01/weekly-review-business-central-al-development-january-11-17-2026/