This guide covers 105 Business Central technical interview questions across beginner, experienced, and expert levels.
Preparing for a Dynamics 365 Business Central AL developer interview? Then this guide is for you. It is the most complete bank of Business Central technical interview questions available online, with 105 real questions and answers drawn from my 18+ years of building, reviewing, and interviewing across Dynamics NAV C/AL and Business Central AL projects.
Moreover, the questions are grouped into three experience levels so you can jump straight to your band. In addition, a free timed mock exam waits at the end of the page. As a result, you can study and self-test in one sitting. If you are a functional consultant instead, see my companion post: 105 Business Central functional interview questions.
📝 Note: Click any question to expand the answer. Answers are intentionally short and interview-ready. However, in a real interview you should expand them with code examples and project stories.
🟢 Beginner Business Central Technical Interview Questions (0–2 Years)
These beginner-level Business Central technical interview questions cover the AL language, object types, and the development environment. If you are a fresher or moving from C/AL, you should therefore master all 40 before your interview. Furthermore, these fundamentals appear in every screening round.
1. What is AL and how is it different from C/AL?
AL is the modern development language for Business Central, written in Visual Studio Code with a file-based, Git-friendly workflow. C/AL, in contrast, lived inside the classic C/SIDE client and modified the base application directly. AL only builds extensions on top of the base app.
2. What is an Extension in Business Central?
An extension is a deployable package (.app file) containing AL objects that add to or modify base functionality without changing base code. As a result, upgrades no longer require code merges.
app.json is the extension manifest: ID, name, publisher, version, dependencies, ID ranges, and runtime. launch.json, on the other hand, defines where to publish and debug (sandbox, container, on-prem server).
5. What are symbols in AL development?
Symbols are the metadata of dependent apps (base application, system app) that the compiler needs. You download them via AL: Download symbols, and they are stored in the .alpackages folder.
6. What is the object ID range for custom (dual-use rights) objects?
50,000–99,999 for per-tenant/customer objects. AppSource apps, in contrast, use ranges assigned by Microsoft (100,000+ in the partner range).
7. Explain the difference between a Table and a Table Extension.
A Table creates a brand-new table with its own data. A Table Extension adds fields, keys (with limits), and trigger code to an existing table. However, you cannot change existing field types or delete base fields.
8. What are FlowFields and FlowFilters?
FlowFields are calculated fields (Sum, Count, Lookup, Exist, Min, Max, Average) computed on the fly via a CalcFormula; they store no data and need CalcFields in code. FlowFilters are filter fields that feed those calculations, applied with SetRange/SetFilter.
Code is automatically uppercased and trimmed, intended for keys and identifiers. Text preserves case and spacing, intended for descriptions.
11. What are the main table triggers?
OnInsert, OnModify, OnDelete, OnRename at table level, plus OnValidate and OnLookup at field level. Importantly, business logic in these triggers runs only when the record operations pass true (e.g., Insert(true)).
12. What is the difference between Insert(true) and Insert(false)?
Insert(true) runs the OnInsert trigger (and related event subscribers); Insert(false) or Insert() skips the trigger. The same pattern applies to Modify, Delete, and Rename. Skipping triggers is therefore common in data migration but risky in business logic.
13. Explain Get, Find, FindFirst, FindLast, and FindSet.
Get fetches by primary key values. FindFirst/FindLast fetch one record within current filters. FindSet, in contrast, is optimized for looping with repeat..until Next() = 0. Avoid Find('-') in new code.
14. What does SetRange vs SetFilter do?
SetRange filters a field to a single value or a from..to range. SetFilter accepts filter expressions with operators ('>%1&<%2', 'A*|B*') and placeholders. SetRange is faster to read and less error-prone; therefore prefer it when possible.
15. What is a Codeunit and what is the SingleInstance property?
A Codeunit is a container for procedures (business logic). SingleInstance = true keeps one instance alive per session, so its global variables persist between calls, which is useful for caching and state.
16. What are the Page types you use most?
Card, List, ListPart, CardPart, Document, Worksheet, RoleCenter, API, ConfirmationDialog, NavigatePage (wizard), and PromptDialog (Copilot). Each type controls layout behavior and where the page can be used.
17. How do you add a field to a standard page?
Create a Page Extension and use layout anchors: addlast(General), addafter(FieldName), addbefore, or addfirst, then define the field referencing the (table-extended) source field.
18. What is an Enum and why did it replace Option?
An Enum is a named, reusable value list that is extensible via Enum Extensions. Options, in contrast, are fixed text strings on a field and cannot be extended by other apps. Consequently, new development should use Enums with Extensible = true where needed.
19. What is the DataClassification property?
It tags fields for privacy/GDPR compliance: CustomerContent, EndUserIdentifiableInformation, AccountData, SystemMetadata, etc. It is mandatory on new fields.
20. What is the ApplicationArea property?
It controls field/action visibility per experience tier (Basic, Suite, All, custom areas). Controls without an ApplicationArea do not show in the client; therefore every visible control needs one.
Reports, Queries and XMLports Interview Questions
21. What layout types can an AL report have?
RDLC (pixel-perfect documents), Word (user-editable layouts), and Excel (analysis-friendly). Additionally, one report can ship multiple layouts, selectable per company/user via the rendering section.
22. What is a Report Extension?
A Report Extension adds dataset columns, request page fields, and trigger code to an existing base report without copying it. However, you cannot modify the base layout itself; you add new layouts instead.
23. When would you use a Query object?
For joined, aggregated reads across tables in a single server call (like SQL views). Queries power fast reporting, APIs (API queries), and replacing nested loops. However, they are read-only.
24. What is an XMLport used for?
Importing/exporting XML or flat files (CSV/fixed) with mapping between file elements and table fields, including per-record trigger logic. For modern integrations, however, APIs are usually preferred.
25. How do you run business logic on a schedule?
Via Job Queue Entries pointing at a codeunit (or report), with recurrence settings. The codeunit’s OnRun executes in the background under the job queue user’s permissions.
26. What are Media and MediaSet data types?
They store images/files in system Media storage with automatic client caching and thumbnails, replacing legacy BLOB usage for pictures. BLOBs via InStream/OutStream remain for raw file handling.
27. What is the difference between a Normal key and a SIFT key (SumIndexFields)?
A normal key aids sorting/filtering. Adding SumIndexFields creates a SIFT index that pre-aggregates sums, making FlowField totals nearly instant on large tables.
28. How do you debug AL code?
Set breakpoints in VS Code and press F5 (publish + debug) or attach to a session (Ctrl+Shift+F5, snapshot debugging for SaaS production). Inspect variables, call stack, and use conditional breakpoints.
29. What is Rec and xRec on pages and tables?
Rec is the current record; xRec holds the previous values before modification. Comparing them in OnModify logic detects which fields changed.
30. What does the TableRelation property do?
It creates a lookup relation from a field to another table, enabling drill-down selection and validation, optionally with conditional relations via where() clauses.
Deployment and Environment Basics
31. How do you publish an extension to a SaaS sandbox vs production?
Sandbox: directly from VS Code (F5) or via Admin Center. Production: upload the .app through the Extension Management page (per-tenant extension) or, for AppSource apps, install from AppSource. Production publishing from VS Code is not allowed.
32. What is a Per-Tenant Extension (PTE) vs an AppSource app?
PTE is customer-specific, uses the 50,000–99,999 range, and is uploaded per tenant. AppSource apps are published globally through Microsoft validation, use assigned ranges, and must pass technical validation (AppSourceCop).
33. What are the code analyzers in AL?
CodeCop (general style), UICop (web client rules), PerTenantExtensionCop (PTE rules), and AppSourceCop (marketplace rules, breaking-change detection). Enable them in settings to catch issues at compile time.
34. What is the OnCompany- vs OnInstall- vs OnUpgrade- logic placement?
Install codeunits (Subtype = Install) run on first install/reinstall for seeding data. Upgrade codeunits (Subtype = Upgrade) run on version upgrades for data transformation, guarded by upgrade tags.
35. What are Labels and how do you handle translations?
Use Label data types/properties with locked or translatable text. Setting the TranslationFile feature generates XLIFF (.xlf) files, which you translate per language and ship inside the app.
36. What is the difference between Error, Message, and Confirm?
Error stops execution and rolls back the transaction. Message shows non-blocking info. Confirm asks yes/no and returns a boolean. Additionally, modern code prefers ErrorInfo for actionable errors.
37. What is a TryFunction?
A procedure with [TryFunction] attribute traps errors and returns false instead of failing. However, database writes inside a failed try are not rolled back automatically in all contexts, so use it carefully around posting logic.
38. What does Commit do and why is it dangerous?
Commitends the current transaction, making writes permanent. It is dangerous inside posting routines because a later error cannot roll back committed data, thereby causing inconsistent states. Avoid it unless architecturally required (e.g., before a modal dialog).
39. How do you call one object’s function from another?
Declare a variable of type Codeunit/Page/etc. and call its public procedures. Internal/local procedures are not accessible; access modifiers (local, internal, protected) control the API surface of your app.
40. What is the purpose of the idRanges and ranges in app.json?
They declare which object/field ID ranges the app may use. The compiler blocks objects outside the range, thereby preventing ID conflicts between apps.
💡 Tip: For beginner Business Central technical interview questions, panels often ask you to live-code a table + page extension. Therefore, practice scaffolding a field, adding it to a page with addafter, and publishing to a sandbox until it takes under 5 minutes.
🟠 Experienced Business Central Technical Interview Questions (2–6 Years)
These mid-level Business Central technical interview questions test events, integration, performance, and upgrade-safe patterns. Furthermore, expect live scenarios: “the client reports X is slow, what do you do?” If you have shipped 2+ extensions to production, you should be comfortable here.
Mid-level questions focus heavily on the event model, APIs, and performance patterns.
Events and Extensibility Interview Questions
41. Explain the event model in AL.
Publishers declare events ([IntegrationEvent] or [BusinessEvent]); subscribers ([EventSubscriber]) react to them. This decouples extensions from base code. Consequently, most customization hooks into base app events like OnAfterPostSalesDoc.
42. Difference between IntegrationEvent and BusinessEvent?
IntegrationEvents are technical hooks that may change between versions. BusinessEvents, in contrast, are a stable contract representing business milestones, with stronger backward-compatibility guarantees (and external delivery via the business events feature).
43. What does the IsolatedEvent attribute (isolated event subscribers) solve?
Errors in one subscriber normally abort the whole operation. Isolated events run each subscriber in its own error scope, so one failing extension cannot break another’s flow.
44. What are handled patterns in event design?
The publisher passes a var IsHandled: Boolean; a subscriber sets it true to replace default logic, and the publisher skips its standard code. This is the standard way base app allows behavior override.
45. What are Interfaces in AL and when do you use them?
An interface declares procedure signatures that implementing codeunits must provide. Combined with enums (implements), they enable polymorphism: e.g., a payment provider enum where each value maps to a different implementation. Therefore they are ideal for pluggable strategies.
46. How do you extend a report’s dataset AND its printed layout?
Use a Report Extension to add dataset columns, then add a new layout (RDLC/Word/Excel) in the rendering section that includes the new columns. Users select the layout via Report Layouts.
47. How do you replace a base report with a custom one?
Subscribe to OnAfterSubstituteReport in codeunit ReportManagement and swap the ReportId. As a result, all calls to the base report run yours instead.
API and Integration Interview Questions
48. How do you build a custom API in Business Central?
Create a page (or query) with PageType = API, setting APIPublisher, APIGroup, APIVersion, EntityName/EntitySetName, and ODataKeyFields. It is then exposed at /api/<publisher>/<group>/<version>/ with full OData v4 support.
49. Standard APIs vs custom APIs vs UI pages as web services?
Standard APIs (v2.0) are Microsoft-maintained and stable. Custom APIs give tailored contracts with the same performance profile. Exposing UI pages as OData web services, however, is discouraged: they run UI triggers and are slow and brittle.
50. How does authentication work for BC SaaS APIs?
OAuth 2.0 via Microsoft Entra ID: app registration, delegated or client-credentials (service-to-service) flow, with the BC Admin Center Entra app registration for S2S. Basic auth (web service access keys) is removed in SaaS.
51. How do you call an external REST service from AL?
Use HttpClient, HttpRequestMessage, HttpResponseMessage, HttpContent, HttpHeaders, plus JsonObject/JsonArray/JsonToken for payloads. Additionally, wrap calls with error handling and timeouts, and never block posting routines on external calls.
52. What are webhooks in Business Central?
Subscriptions on API entities that push change notifications to an external endpoint (with handshake validation), enabling event-driven integration instead of polling.
53. How do you run code in the background from AL?
Options include StartSession (new background session), Job Queue (scheduled), TaskScheduler (one-off tasks with retry), and Page Background Tasks (read-only compute for page updates). Choose per lifetime and UI needs.
54. What is a Page Background Task (PBT)?
A read-only child session started from a page (EnqueueBackgroundTask) that computes data and returns results to OnPageBackgroundTaskCompleted, keeping the UI responsive for slow calculations like cues.
⚠️ Warning: Performance questions (Q55–Q61) decide most mid-level Business Central technical interviews. If you cannot explain SetLoadFields and locking behavior confidently, stop and learn them first. They come up in nearly every panel.
Performance and Data Handling Questions
55. What is SetLoadFields and why does it matter?
SetLoadFields enables partial records: only listed fields are fetched from SQL. On wide tables (Item, Customer) this dramatically cuts I/O. Therefore it is the first optimization for loops that read few fields.
56. How do you avoid locking issues in AL?
Keep transactions short, read before write, use ReadIsolation (ReadCommitted/ReadUncommitted) for reporting reads, avoid LockTable unless required, order writes consistently to prevent deadlocks, and move heavy work to background sessions.
57. FindSet vs FindSet(true) vs repeat-until patterns?
FindSet() for read loops; FindSet(true) when you will modify records in the loop (takes update lock up front). Always pair with repeat .. until Next() = 0 and never Get inside a loop when the set already has the data.
58. When do you use temporary records?
Temporary records live in memory per session, with no SQL writes: perfect for staging, calculations, and page sources for computed lists. However, remember triggers still run if called with true, and they are not shared across sessions.
59. What are List, Dictionary, and TextBuilder used for?
Modern collection types: List of [Text] for ordered values, Dictionary of [Key, Value] for O(1) lookups (caching), and TextBuilder for efficient string concatenation in loops instead of repeated += on Text.
60. How do you bulk-delete or bulk-modify efficiently?
DeleteAll/ModifyAll issue set-based SQL when triggers are skipped (false). With true they loop per record. Consequently, for pure data cleanup prefer trigger-less set operations, understanding subscribers will not fire.
61. What tools do you use to find performance problems?
Performance Profiler (in-client, per session), AL profiler in VS Code, telemetry to Application Insights (long running SQL, lock timeouts KQL queries), and the Database Locks / Sessions pages for live triage.
Upgrade, Testing and DevOps Questions
62. How do upgrade codeunits and upgrade tags work?
Upgrade codeunits run per-company/per-database on version change. Upgrade tags guard each migration block so it runs exactly once, even across retries, via UpgradeTag.HasUpgradeTag/SetUpgradeTag.
63. How do you rename/remove a field safely in a released app?
You cannot delete directly. Instead, mark it ObsoleteState = Pending (with ObsoleteReason/Tag), release, then later move to Removed. Data-bearing changes require a new field plus upgrade code to migrate values.
64. What breaks schema synchronization on publish?
Destructive changes: changing field types, shrinking lengths, deleting fields/keys with data. Sandbox allows ForceSync (data loss); production does not. Therefore design schema forward-compatibly and use obsoletion.
65. How do you write automated tests in AL?
Test codeunits (Subtype = Test) with [Test] procedures, Library codeunits for data setup, Assert, handler functions ([MessageHandler], [ConfirmHandler], [RequestPageHandler]) to intercept UI, and TestIsolation to roll back between tests. Run via Test Tool or pipeline.
66. What is AL-Go for GitHub?
Microsoft’s ready-made CI/CD template for AL: workflows for build, test in containers, versioning, release, AppSource submission, and dependency handling. It is the de-facto standard pipeline for BC apps.
67. What is BcContainerHelper used for?
A PowerShell module to create and manage local BC Docker containers: specific versions/localizations, publishing apps, running tests, and backing CI builds.
68. How do you store secrets in AL safely?
Use Isolated Storage (scoped per app/company/user) and the SecretText type for handling credentials without exposing them in debug/telemetry. Never hardcode keys or store them in normal fields.
69. How do you emit custom telemetry from your extension?
Session.LogMessage with a custom event ID, dimensions dictionary, verbosity, and DataClassification, flowing to the tenant’s or the app’s (app.json applicationInsightsConnectionString) Application Insights.
70. What are Feature Keys / feature management from a dev perspective?
Feature flags Microsoft (or you, via feature key pattern) use to stage functionality. Dev impact: test both states before waves, and subscribe to feature data update interfaces when your app must migrate data when a feature turns on.
71. Difference between internal, local, protected and public procedures?
local: same object only. internal: same app (or apps granted internalsVisibleTo). protected: object + its extensions. public (default): any dependent app; it becomes your API surface, so keep it minimal.
72. What is NavigationPage/wizard pattern and Assisted Setup?
PageType = NavigatePage builds multi-step wizards; registering them in Assisted Setup (Guided Experience module) surfaces them in the setup list, the standard onboarding pattern for apps.
73. How do you handle number sequences vs No. Series in code?
Business documents use No. Series (NoSeriesManagement/No. Series codeunits) with setup pages. For high-throughput gap-tolerant counters, NumberSequence is faster since it avoids locking.
74. What is the Blob/InStream/OutStream pattern for files?
Create/read file content via Temp Blob codeunit: get OutStream to write, InStream to read, then DownloadFromStream/UploadIntoStream for client transfer. In SaaS there is no direct file system access.
75. A posting routine your subscriber hooks into is slow after your change. How do you diagnose?
First, reproduce with the Performance Profiler and check your subscriber’s share of time. Then look for classic sins: Get/CalcFields inside loops, missing SetLoadFields, unfiltered FindSet, external HTTP calls inline, or Commit-induced blocking. Finally, verify with telemetry (long running SQL) after the fix.
🔴 Expert Business Central Technical Interview Questions (6+ Years)
Senior-level Business Central technical interview questions focus on architecture, AppSource engineering, performance at scale, and modern AI extensibility. To answer well, you should therefore attach a real design decision and its measurable outcome to each answer. Additionally, expect whiteboard discussions rather than syntax quizzes.
Architecture and App Design Interview Questions
76. How do you structure a large solution into multiple apps?
Layered design: a foundation/library app (shared utilities, no UI), domain apps per module, and thin customer-layer apps. Dependencies flow one way. As a result, you get independent versioning, smaller blast radius, and reusable IP.
77. How do you design your app’s public API surface?
Default everything to internal/local, expose deliberate facade codeunits with public procedures, publish integration events at extension points, and document them. Breaking the public surface later requires obsoletion cycles, so keep it small from day one.
78. What are namespaces in AL and why adopt them?
Namespaces (runtime 12+) qualify object names (namespace Publisher.App.Module), preventing name collisions between apps and enabling cleaner using-directives. For new AppSource apps they are effectively mandatory hygiene.
79. Explain the Universal Code initiative and its impact.
Microsoft requires customizations to be cloud-ready extensions (no legacy code modifications); non-compliant on-prem solutions pay additional fees. Consequently, architecture must be extension-only and cloud-portable even for on-prem clients.
80. AppSource technical validation: what trips teams up most?
AppSourceCop breaking-change rules against the previous version, missing prefixes/affixes, ApplicationArea gaps, missing permission sets, obsolete-handling mistakes, and failing the automated install/upgrade validation across country localizations.
81. How do you manage object ID and affix governance across a team?
Central registry (or AL ObjectID Ninja style tooling), mandatory affix from AppSourceCop settings, ID ranges per module in app.json, and PR checks in the pipeline. This prevents merge-time collisions and marketplace rejections.
82. Interface + Enum factory pattern: describe a real use.
Example: shipping providers. An extensible enum “Ship. Provider” implements interface IShipProvider; each value maps to an implementation codeunit. New providers plug in via enum extension without touching core logic, achieving true open/closed design in AL.
Scale, Data and DevOps Strategy Questions
83. How do you design for multi-million-row tables?
Careful key design (covering keys for hot queries), SIFT only where needed (each SIFT costs write speed), partition-like archiving via retention policies, SetLoadFields everywhere, queries for aggregates, and moving analytics out (to Fabric/Power BI via APIs) instead of in-client reporting.
84. Describe a robust data upgrade strategy for a major schema refactor.
Ship transitional version: new schema added, old obsoleted-pending, upgrade codeunit with tags migrating data in chunks (avoid timeouts), telemetry on progress, verification queries, then a later version removing old fields. Rollback = staying on transitional version.
85. How do you build a zero-downtime-ish deployment practice for PTEs?
Deploy in update windows, backward-compatible schema (additive first), feature-flag new behavior, use Admin Center API to automate publish across environments, and smoke-test via automated post-deploy test app. Full zero-downtime is not possible; the goal is minutes with instant fallback.
86. What is your branching and release model with AL-Go?
Trunk-based with short-lived feature branches, PR builds (compile + tests in container), main auto-versioned CI, release branches per customer/AppSource submission, dependency probing for multi-app repos, and hotfix flow with cherry-picks. Versioning follows semver-like major.minor for breaking changes.
87. How do you make test automation actually pay off in BC projects?
Focus tests on posting-critical paths and your public API, use library patterns for arrange, run per-PR in containers, track coverage on changed code not global %, and gate releases on the suite. UI handler tests sparingly since they are brittle.
88. What KQL/telemetry signals do you monitor in production?
Long-running SQL (RT0005), lock timeouts/deadlocks (RT0010/12), web service latency and 429s, job queue failures, upgrade failures, and custom events for business KPIs. Alerts wired to Teams; dashboards per customer in Application Insights workbooks.
89. How do you approach performance of report generation at scale?
Dataset-first design (queries instead of nested dataitems), filter pushdown on request page, avoid CalcFields per row (join via query), pre-aggregate with SIFT, Excel layouts for analysis instead of 500-page RDLC, and background scheduling for heavy runs.
90. On-prem to SaaS technical migration: what is your checklist?
Universal Code compliance, replace file system/DotNet with SaaS-safe patterns (DotNet is on-prem only), cloud migration tool for data, event-based integrations replacing direct SQL, license/permission mapping to Entra security groups, and API rate-limit review for integrations.
Modern Extensibility, AI and Security Questions
91. How do you build Copilot experiences in AL?
Use PageType = PromptDialog plus the Copilot Toolkit modules: register a capability, call Azure OpenAI through the AOAI codeunits (system-managed or bring-your-own resource), handle prompt/response, and follow Responsible AI validation for AppSource.
92. What are Business Central Agents from a developer standpoint?
Microsoft ships prebuilt agents (Sales Order Agent, Payables Agent) that operate the UI autonomously and consume Copilot Credits. Developers extend around them: exposing clean pages/APIs the agent can operate, event hooks for validation, and telemetry on agent actions.
93. What is MCP (Model Context Protocol) relevance to BC?
MCP standardizes how external AI agents call tools over enterprise data. BC exposes MCP tooling for ERP scenarios, so agents built outside Copilot Studio can act on BC data with proper licensing. Architecturally, therefore, your clean API design becomes the AI-tool surface.
94. How do you design permission sets for an app properly?
Ship composed permission sets: an Objects set (execute), Read set, Edit set, Admin set, using IncludedPermissionSets. Assignable = false for building blocks. Consequently admins compose roles without SUPER, and AppSource validation passes.
95. SecretText, Isolated Storage, and app key vault: when each?
SecretText for handling secrets in memory/API calls without leakage. Isolated Storage for tenant-side stored credentials. App Key Vault (Azure) for publisher-owned secrets shipped with AppSource apps (e.g., your API keys), never stored in the tenant.
96. How do you harden an app against injection and data leaks?
Parameterize filters (SetFilter with %1 placeholders, never string-concatenated user input), validate JSON inputs, DataClassification correctness, redact telemetry dimensions, least-privilege permission sets, and review inherent permissions usage.
97. Explain inherent permissions and their risk.
[InherentPermissions] lets code operate on tables the user lacks permission to, for controlled scenarios. It is powerful but risky: scope it to the minimal operation and justify each use in review, since it bypasses the security model deliberately.
98. How do you integrate BC with Power Platform at an architectural level?
Dataverse virtual tables/sync for D365 Sales, Business Events → Dataverse/Power Automate for event-driven flows, custom connectors on your APIs, and careful API-limit budgeting. Keep BC the system of record; avoid bidirectional sync of the same field.
99. What is your code review standard for AL teams?
Analyzer-clean (all four cops), naming/affix rules, no Commit without justification, SetLoadFields on loops, events over direct calls, tests for new public procedures, obsoletion instead of deletion, and telemetry on new failure paths. Enforced via PR template and pipeline gates.
100. How do you obsolete an integration event without breaking partners?
Mark it ObsoletePending with reason and target version, introduce the replacement event in the same release, dual-raise both during transition, communicate in release notes, and remove after at least one major cycle per your support policy.
101. Multi-country AppSource app: how do you handle localization differences?
Core app + per-country extension layers for divergent features, translations via XLIFF per language, conditional code via localization-agnostic patterns (avoid hard references to W1-only objects), and validation runs against each targeted country version in the pipeline.
102. How do you debug a production-only SaaS issue you cannot reproduce?
Snapshot debugging on the production environment (with permission), telemetry correlation by operation ID, feature-flagged verbose logging, and copying production to a sandbox for safe reproduction. Never guess-fix production.
103. What is your strategy when a base app change breaks your subscriber in a new wave?
Preview-sandbox regression each wave catches it early. Fix options: adapt to the changed event signature, request an event via the BCIdeas/AL issues repo, or bridge via alternative hooks. Ship a compatibility release before the customer’s update window.
104. How do you decide between building a connector in AL vs middleware (Logic Apps/Functions)?
In AL when logic is data-proximate, low volume, and licensing-simple. Middleware when you need retries/queues, heavy transformation, fan-out, or protection from BC service limits. Cost, monitoring, and team skills complete the decision matrix.
105. What separates a great BC technical architect from a good AL developer?
Judgment: designing small public surfaces, choosing boring upgrade-safe patterns over clever ones, quantifying performance in telemetry not anecdotes, protecting the wave cadence, and explaining trade-offs to functional consultants and CFOs alike. This is ultimately the defining Business Central technical interview question at senior level.
❗ Important: At senior level, interviewers rarely want syntax. For every expert question above, prepare one real design story: the constraint, your decision, and the measurable outcome (ms saved, incidents avoided, upgrade hours cut). That is what separates a hire from a maybe.
🎯 Business Central Technical Interview Questions: Free Mock Exam
Ready to check your level? Attempt this 15-question timed mock exam covering all three levels of Business Central technical interview questions right here. You get 10 minutes, one question at a time, just like a real screening test. Your score and answer review appear at the end. No sign-up is needed, and your attempt is not stored anywhere.
📝 BC Technical (AL) Mock Exam10:00
Rules: 14 random questions (from a 56-question pool) · 10 minute limit · Pass mark 70% (10/14) · Options shuffled · Retake for a different set.
💡 Tip: Scored below 70%? Bookmark this page, revise one level of Business Central technical interview questions per day, and retake the exam before your interview. Three short sittings beat one long cram session.
Final Words on Business Central Technical Interview Questions
These 105 Business Central technical interview questions reflect what AL developers actually get asked in 2026, from language fundamentals to AI extensibility and DevOps strategy. Do not memorize; instead, understand the why behind each pattern and back it with code you have shipped. Interviewers can spot recitation instantly.
Which Business Central technical interview question stumped you in a real interview? Share it in the comments and I will add it (with the answer) to this list.
Trademarks & Screenshots: Microsoft, Dynamics 365, Business Central, Dynamics NAV, and related names are trademarks of Microsoft Corporation. LS Central and LS Retail are products of LS Retail. Screenshots are used for educational and illustrative purposes only. Navision Planet is an independent resource and is not affiliated with, endorsed by, or sponsored by Microsoft or LS Retail. All product names, logos, and brands are the property of their respective owners.
Jubel Thomas Joy, a 18+ year Microsoft Dynamics 365 Business Central/NAV/Navision expert, founded "Navision Planet" in 2009. Certified in Business Central , D365 - Commerce and many more. He blogs on the latest updates and various modules of Business Central & LS Central, showcasing expertise in SQL, Microsoft Power Platforms, and over 150 organizations of work experience.