AL development for Dynamics 365 Business Central

AL is the language behind every Business Central extension. We write, review and modernize AL code: tables, pages, reports, codeunits, APIs, queries, XMLports, events and interfaces, with testing and deployment included.

The challenge

AL looks approachable, which is why so much AL code is written without structure: logic in page triggers, hard-coded values, no tests. That code works until the first upgrade, the first performance problem or the first new developer.

Technology we use

  • AL language
  • Visual Studio Code with the AL Language extension
  • CodeCop, UICop, AppSourceCop, PerTenantExtensionCop
  • Git
  • Azure DevOps or GitHub Actions
  • Application Insights

How we approach it

The same four steps apply whether the project is a rollout, an integration or a fix. Only the depth changes.

  1. Model the data

    Tables, table extensions and enums designed with keys, relations and permissions in mind.

  2. Put logic in the right place

    Business logic in codeunits behind interfaces, UI code in pages, events for extension points.

  3. Test and analyze

    Test codeunits, code analyzers and code review before anything reaches production.

  4. Deploy repeatably

    Source control, pipelines and versioned releases, with telemetry to observe behaviour.

What is included

  • Tables, table extensions and enums
  • Pages, page extensions and page customizations
  • Reports, report extensions and layouts
  • Codeunits, interfaces and events
  • API pages, queries and XMLports
  • Web services and outbound HTTP integration
  • Automated tests and debugging
  • Extension packaging, versioning and deployment

What you get from it

  • Extensions that upgrade cleanly
  • Readable, testable and documented code
  • Faster debugging with proper telemetry
  • Fewer performance surprises

What this looks like in code

A small AL example: a custom field added to the standard Customer table and shown on the Customer Card without touching Microsoft's base code.

tableextension 50100 "CE Customer Ext" extends Customer
{
    fields
    {
        field(50100; "CE Preferred Carrier"; Code[20])
        {
            Caption = 'Preferred Carrier';
            DataClassification = CustomerContent;
        }
    }
}

pageextension 50100 "CE Customer Card Ext" extends "Customer Card"
{
    layout
    {
        addafter("Payment Terms Code")
        {
            field("CE Preferred Carrier"; Rec."CE Preferred Carrier")
            {
                ApplicationArea = All;
                ToolTip = 'Carrier used by default on new sales orders.';
            }
        }
    }
}

Frequently asked questions

What is AL development?

AL is the programming language used to build extensions for Dynamics 365 Business Central. Developers use Visual Studio Code with the AL Language extension to write objects such as tables, pages, reports, codeunits and APIs, which are packaged as extensions and deployed to Business Central.

Is AL different from C/AL?

Yes. C/AL was the language of Dynamics NAV and early Business Central versions, edited in the Development Environment. AL replaced it and works through extensions instead of modifying the base application.

Can you provide AL developers for our team?

Yes. We can take a full development scope or add AL developers to your project team, with code review and documentation as standard.

Do you offer AL training?

Yes. See our Business Central technical training for a practical AL curriculum.

Talk to us about al development

Let's discuss it. Tell us what you are trying to fix or build, and we will tell you plainly whether and how we can help.