Blog

From C/AL to AL: what a conversion actually involves

When people picture a NAV to Business Central upgrade they imagine moving data. The data matters, but the technical heart of the project is something else entirely: converting your customisations from C/AL to AL. Understanding what that involves is the difference between a realistic budget and an unpleasant surprise.

C/AL and AL are two different worlds

C/AL was the language of classic NAV. Code lived inside the base application — you opened a standard object and edited it directly. That power is exactly why old NAV systems are so hard to upgrade: your logic and Microsoft’s logic were tangled together in the same objects.

AL is the modern language of Business Central, and it works on a completely different principle. Your code lives in extensions — separate packages that sit alongside the standard application and hook into it through events, without ever modifying Microsoft’s objects.

Why it matters: once your customisations are clean extensions, Microsoft’s twice-yearly updates stop being a project. The base application updates underneath you while your code keeps running on top. That is the whole reason the conversion is worth doing.

Why modified base objects are the expensive category

Split your customisations into three groups: untouched standard, fully custom, and modified standard. The first group is free, the second moves across fairly mechanically — but the third, the modified base objects, is where the real work lives.

Every change someone once made directly inside a standard object now has to be lifted out and re-expressed as an extension. There is no automatic equivalent, because the whole point of AL is that you can no longer edit those objects in place.

Why it matters: an honest estimate counts modified base objects, not lines of code. Two systems with the same number of customisations can differ wildly in cost depending on how deeply those customisations reached into the standard application.

Three outcomes for every modification

Going through the modifications one by one, each lands in one of three places:

Here is what a typical conversion looks like. A C/AL change that defaulted a dimension when the customer changed becomes a subscriber:

codeunit 50100 "Sales Header Subscriber"
{
    [EventSubscriber(ObjectType::Table, Database::"Sales Header", OnAfterValidateEvent, "Sell-to Customer No.", false, false)]
    local procedure OnAfterValidateSellToCustomer(var Rec: Record "Sales Header")
    begin
        Rec.Validate("Shortcut Dimension 1 Code", GetDefaultDepartment(Rec."Sell-to Customer No."));
    end;
}

Why it matters: the third outcome is the most valuable one. Every customisation you drop is saved twice — once in the conversion, and again in every future maintenance and upgrade hour you no longer pay for it.

Tooling helps, but does not do the job

Conversion tooling exists and is genuinely useful: it inventories objects, flags the modified ones, and scaffolds the extension structure. But it cannot decide whether a given modification should be re-expressed, rebuilt or dropped — that judgement needs someone who understands both the original business intent and current Business Central.

Why it matters: treat any quote that implies a tool does the conversion automatically with suspicion. The tool accelerates the mechanical parts; the decisions are human, and the decisions are where quality is won or lost.

Testing is not optional

Because each modification is rewritten rather than copied, you must prove that the new AL behaves like the old C/AL. That means testing every converted process — posting routines, custom reports, integrations — against known results from the live NAV system.

Why it matters: the conversion is the riskiest part of the upgrade precisely because the code changes shape. Disciplined testing against the old system is what turns that risk into confidence before go-live.


Facing a NAV to Business Central upgrade and want to know what your customisations will really cost to convert? Tell us your story and we will run the object audit and give you an honest, free estimation.

← All articles

Tell us your story.

Describe what you need and we will come back with an honest, free estimation — no strings attached.

Request a free estimation