Email this post as a PDFNewDevelopment · 6 November 2026 · 4 min read

AL development from scratch: the complete guide to building the basics in Business Central

A ten-part, hands-on series that takes you from an empty folder to a working Business Central extension: tables, fields and data types, pages, actions, extensions, codeunits, events, reports, APIs, permissions, tests and shipping, with every property explained.

Contents
  1. The example we build
  2. The series
  3. How to use the series
  4. Before you start

If you are new to AL, the language used to build on Business Central, the hardest part is not any single concept. It is that the information is spread across hundreds of documentation pages, and nobody tells you which properties matter on day one and which can wait until year two.

This series fixes that. Ten parts, in the order you need them, each walking through one kind of object in detail: how to build it, every property you will actually use and what it does, the code, and the mistakes people make. If you came from NAV and C/AL, you will recognise most of the ideas. Tables are still tables. What NAV called forms are now pages. The big change is that you never touch Microsoft's objects directly any more: you extend them.

The example we build

Every part adds to one small, realistic extension called Pallet Manager. A warehouse wants to record which pallet each item ships on, how many units fit on a pallet, and how many pallets an order will need. It is small enough to understand in an afternoon and touches every object type a beginner needs.

ObjectNameBuilt in
Enum 50100BBX Pallet MaterialParts 1 and 4
Table 50100BBX Pallet TypeParts 2 and 3
Table extension 50100BBX Item (adds fields to Item)Part 4
Pages 50100, 50101BBX Pallet Type List and CardPart 5
Page 50102, page extensions 50100, 50101FactBox, Item Card and Item List extensionsPart 6
Codeunits 50100, 50101BBX Pallet Mgt. and BBX Pallet SubscribersPart 7
Report, query, XMLport 50100Pallet Requirements, Items by Pallet Type, Pallet Type ImportPart 8
Page 50103BBX Pallet Type APIPart 9
Permission sets, install and upgrade codeunits, testsBBX Pallet View and Edit, Install, Upgrade, test appPart 10

Everything uses the prefix BBX and the ID range 50100 to 50149, which is how a per-tenant extension should be set up. Swap in your own prefix and range when you build for real.

Namespaces

Every complete code example in the series starts with a namespace, namespace BusinessBoxed.PalletManager;, followed by using lines for the Microsoft objects it touches, such as using Microsoft.Inventory.Item;. Namespaces are how Microsoft organises its own code, and they keep a growing app tidy. They are optional: leave the namespace line out and your objects go into the global namespace and work exactly as before. We show them throughout so you can see how they work, and leave the choice to you. Part 1 explains them in full.

The series

  1. Setting up your first project. VS Code, the AL Language extension, a sandbox, AL: Go!, app.json, launch.json, symbols, object IDs, prefixes, namespaces, code analysers and publishing.
  2. Building a table: fields and data types. The anatomy of a table, every table property, every field data type and every field property worth knowing.
  3. Keys, FlowFields, table relations and triggers. Primary and secondary keys, field groups, FlowFields and FlowFilters, TableRelation, and table and field triggers.
  4. Table extensions, enums and enum extensions. Adding fields to Microsoft's tables, and the modern replacement for Option fields.
  5. Building a page (the old "form"). Page types, page properties, layout controls, field properties and page triggers.
  6. Actions, FactBoxes and page extensions. Buttons, promoted actions, FactBoxes, views, and adding to Microsoft's pages.
  7. Codeunits, AL basics, records and events. Procedures, variables, every record method you need, errors and labels, and events.
  8. Reports, report extensions, queries and XMLports. Datasets, request pages, layouts, joined queries and file imports.
  9. API pages and API queries. Exposing your data to other systems properly, with authentication and real requests.
  10. Permissions, install and upgrade codeunits, tests and shipping. Making the extension safe to give to users and safe to change later.

How to use the series

  • Build as you read. Create the project in part 1 and add each object as you go. By part 10 you have an extension you can publish to a sandbox and test.
  • Use the reference tables. Each part has tables of properties with what they do and an example. Bookmark them; they are what you will come back to.
  • Read the common mistakes. Every part ends with the things that catch people out. Most of them are the reason a first extension gets rewritten.
  • Always work in a sandbox. Never develop against production. See environments, sandboxes and containers.

Before you start

If some of the vocabulary is new, read every object type in Business Central, explained first. It is the plain-English version of this series, written for people who are not developers. Then come back here and start with part 1.

When you are ready to go further, these posts pick up where the series stops: events and IsHandled, interfaces, changing a live extension without losing data, AL-Go and pipelines and writing extensions that survive release waves.

Want help with your first extension, or a review of one you have already built? Book a 30-minute call.

Email this post as a PDF
A branded PDF of this post, sent to your inbox to keep, print or share. Copy in colleagues if you like.
We only use these addresses to send this PDF. Nobody is added to a mailing list. Mike at Business Boxed receives a copy. See our privacy notice.
Email this post
Talk to us
Want this done in your Business Central?
Book a 30 minute callGet the monthly newsletter

Related posts