MB-820

Free MB-820 Practice Questions (12 Scenario Questions)

One scenario per exam sub-skill, weighted to match the real domain percentages. Every option gets a rationale — not just the correct letter.

12 questions~20 minObjectives as of June 10, 2025

These 12 questions cover all six MB-820 domains in proportion to their real exam weight, so the domain with the most questions here (AL objects) is also the domain worth the most on test day. None of these are trivia recall — each poses a Business Central development scenario and asks what you'd actually build, the way the real MB-820 exam does. For the reasoning behind each domain's weighting, see the full MB-820 study guide, or review AL syntax fast with the MB-820 cheat sheet.

Read the scenario, commit to an answer, then expand the explanation. Every option — right and wrong — gets a reason, so a wrong guess tells you exactly which concept to review rather than just which letter to avoid next time.

Questions by domain (matches real exam weighting)

1
2
4
2
1
2
1: Describe BC2: Install/Deploy3: AL Objects4: AL Language5: Dev Tools6: Integration

Domain 1: Describe Business Central

Q1 • 10-15% of exam
1

Base App vs. Extension

A partner needs to add a custom field to the Customer table for one client, and the change must survive Business Central's automatic monthly updates without conflicts.

What should the partner do?

  • A)Create a table extension object that adds the field to the Customer table
  • B)Modify the base app's Customer table object directly in a local copy of the source
  • C)Add the field using page personalization only, with no table changes
  • D)Request that Microsoft add the field to the standard base app
Reveal answer & rationale

Correct: A. Table extension objects add fields without touching base app source, so automatic online updates apply cleanly around them. Modifying base app source directly isn't how the modern SaaS extension model works and would break on the next update. Page personalization changes what a user sees, not the underlying data model — there's no real field to store data in. Asking Microsoft to add a client-specific field to the standard app isn't a scalable or appropriate response to a one-client requirement.

Domain 2: Install, Develop, and Deploy

Q2-3 • 10-15% of exam
2

Missing Dependency Symbols

An AL project fails to compile with errors that it cannot resolve symbols for a dependency app declared in app.json.

What should the developer do first?

  • A)Download or refresh the .alpackages cache for that dependency
  • B)Delete launch.json and recreate it from scratch
  • C)Increase the debugger timeout value in launch.json
  • D)Remove the dependency entry from app.json to silence the errors
Reveal answer & rationale

Correct: A. Missing symbol errors mean the local .alpackages cache doesn't have the compiled symbols for a declared dependency — downloading or refreshing packages resolves it directly. launch.json governs the debug/publish connection to an environment, not compile-time symbol resolution. Increasing a debug timeout has nothing to do with compilation. Removing the dependency eliminates the integration the extension actually needs instead of fixing the environment.

3

Multi-Root Workspaces

A developer maintains a base AL extension and a related per-country localization extension, and wants Visual Studio Code to build and debug both together without switching windows.

What should the developer set up?

  • A)A multi-root workspace containing both AL projects
  • B)A single app.json file listing both extensions as one combined app
  • C)Two separate launch.json configurations run manually one at a time
  • D)A single .al file containing objects from both extensions
Reveal answer & rationale

Correct: A. Multi-root workspaces are the AL/VS Code mechanism explicitly named in the objectives for managing multiple AL extensions in one workspace. Merging into a single app.json misrepresents two independently versioned, dependency-linked apps as one app. Running two launch configurations manually, one at a time, doesn't satisfy working with both together. AL doesn't structure separate extensions as objects crammed into one file.

Domain 3: Develop by Using AL Objects

Q4-7 • 35-40% of exam — the largest domain
4

Choosing a Page Type

A requirement calls for a new grid-style overview of on-hand inventory by location. It isn't a modification of any existing page — it's a standalone view the extension introduces.

What is the best-fit approach?

  • A)A new List page object built independently, not extending an existing page
  • B)A page extension applied to the Item Card page
  • C)A report object with a request page
  • D)A Role Center page
Reveal answer & rationale

Correct: A. A brand-new, independent grid view over data — with no existing page to build on — calls for a List page object built from scratch. A page extension only makes sense when modifying an existing page, which this isn't. A report is oriented toward printing or exporting, not an interactive on-screen grid. A Role Center is a role's landing dashboard, not a general-purpose data grid.

5

Events Instead of Base App Changes

An extension must automatically create a follow-up task whenever a Sales Order is released in the base app, without modifying the base app's own posting logic.

What is the correct AL approach?

  • A)Subscribe to a publisher event raised when the Sales Order is released, and add the logic in the event subscriber
  • B)Copy the base app's Sales Order release codeunit into the extension and modify it there
  • C)Add a new field to the Sales Header table that triggers automatically on save
  • D)Create a scheduled job that polls Sales Orders every minute for status changes
Reveal answer & rationale

Correct: A. Event subscribers on publisher events are exactly the extensibility pattern the objectives name ("use events and triggers") for reacting to base app actions without touching its source. Copying and modifying base app code isn't how the extension model works and breaks on the next update. Adding a field doesn't create behavior by itself — it needs code behind it, which is the point being tested. Polling every minute is an inefficient workaround that ignores the native event model AL already provides.

6

Interfaces for Swappable Logic

A developer wants several different implementations of a shipping-cost calculation — one per carrier — that can be swapped without changing the code that calls the calculation.

Which AL construct best supports this?

  • A)Define an interface with a calculate-cost method, then implement it in a separate codeunit per carrier
  • B)Write one large codeunit with an if/case statement branching by carrier name
  • C)Create a separate table per carrier storing hardcoded shipping costs
  • D)Use a single procedure with an optional parameter identifying the carrier type
Reveal answer & rationale

Correct: A. AL interfaces — a named objective under "develop codeunits" — let you define a contract once and swap implementations (one codeunit per carrier) without ever changing the calling code. A branching case statement still requires editing the same codeunit every time a carrier is added. A table of hardcoded costs stores data, not calculation logic. A single procedure with a parameter still centralizes and couples every carrier's logic in one place, needing edits for each addition — the opposite of swappable.

7

Permission Sets for Feature Tiers

An AppSource app ships basic and advanced feature areas. The publisher wants customers who only need basic functionality to grant employees minimal access, while advanced users get broader access.

What should the extension define?

  • A)Two separate permission sets — one scoped to basic objects, one scoped to advanced objects
  • B)One permission set granting access to every object in the extension
  • C)An entitlement record with no corresponding permission set
  • D)A single entitlement covering both feature areas
Reveal answer & rationale

Correct: A. Permission sets are the mechanism for scoping object access at different granularities to different users — exactly what "create and extend permission sets" covers. A single blanket permission set can't support a minimal-access basic tier. Entitlements map licensed features to permission sets and grant inherent permissions; they don't replace the underlying access definition, so an entitlement alone doesn't solve the granularity requirement either way.

Domain 4: Develop by Using AL

Q8-9 • 15-20% of exam
8

Access Modifiers

A codeunit exposes a procedure that other extensions should be able to call, but a private helper procedure inside the same codeunit must not be callable from anywhere else — including other objects in the same extension.

Which access modifiers fit the callable procedure and the helper procedure, respectively?

  • A)public for the callable procedure; local for the helper procedure
  • B)internal for the callable procedure; local for the helper procedure
  • C)protected for the callable procedure; public for the helper procedure
  • D)public for both procedures
Reveal answer & rationale

Correct: A. public allows a procedure to be called from any extension — required here since other extensions must call it. local restricts a procedure to the object where it's defined, exactly right for a helper that must stay hidden even from other objects in the same extension. internal would restrict the callable procedure to the same extension only, which fails the requirement that other extensions can call it. Making both procedures public defeats the requirement to keep the helper hidden.

9

Blocking Validation with Error()

A validation must stop a user from posting an invoice with a negative quantity, show a clear message, and roll back the transaction cleanly.

What should the developer use inside the validation trigger?

  • A)An Error() call with a descriptive message
  • B)A Message() call with the same text
  • C)A Session.LogMessage() telemetry call
  • D)A Confirm() dialog asking the user to proceed
Reveal answer & rationale

Correct: A. Error() halts execution and rolls back the current transaction while showing the message to the user — the standard way to enforce a hard validation rule, under the "manage errors" objective. Message() only displays informational text without stopping anything. Session.LogMessage() writes a telemetry event, unrelated to blocking user action. Confirm() prompts for a yes/no choice; it doesn't itself enforce a stop or a rollback the way Error() does.

Domain 5: Work with Development Tools

Q10 • 10-15% of exam
10

Automated Testing with the Test Toolkit

A team wants to automatically verify that posting a sales invoice correctly reduces on-hand inventory, running the check as part of their CI pipeline rather than manually in the client every time.

What should they build?

  • A)A test codeunit with a test procedure using the Test Toolkit, asserting the inventory change after posting
  • B)A custom telemetry signal that logs inventory levels after each manual post
  • C)A manual review of the posted invoice in the Business Central client
  • D)An Azure Monitor alert rule on inventory value thresholds
Reveal answer & rationale

Correct: A. The Test Toolkit and test codeunits are the AL framework specifically built for automatable, pass/fail assertions runnable unattended in a CI/CD pipeline — directly the "implement semiautomated test processes, and run standard Business Central tests" objective. A telemetry signal observes production behavior after the fact; it isn't a functional pass/fail test. Manual review can't run unattended in CI. An Azure Monitor alert reacts to metric thresholds, not functional correctness after a code change.

Domain 6: Integrate with Other Applications

Q11-12 • 10-15% of exam
11

Exposing Data as an API

An external e-commerce platform needs to create and read Sales Orders in Business Central over a standard, discoverable web API, with no proprietary file format involved.

What should the developer expose?

  • A)An API page object exposing Sales Orders as an OData/REST endpoint
  • B)An XMLport scheduled to run nightly and email a file to the platform
  • C)A codeunit with a single hardcoded HTTP endpoint the platform must reverse-engineer
  • D)A report exported to PDF on demand
Reveal answer & rationale

Correct: A. API pages are AL's purpose-built object for exposing Business Central data as a standard OData/REST endpoint external systems can discover and consume directly — exactly "create and work with APIs." A nightly XMLport export is a batch file transfer, not real-time discoverable API access. A hardcoded, undocumented HTTP endpoint isn't a standard discoverable API. A PDF report isn't machine-readable for create operations at all.

12

Offloading Read Traffic

A high-traffic external reporting tool only ever reads data from Business Central. The team wants to stop that read traffic from slowing down the primary database used by interactive users.

What should they configure?

  • A)Read Scale-Out, routing the reporting tool's read-only queries to a replica
  • B)A bound OData action that writes a cached copy of the data
  • C)A tighter permission set for the reporting tool's login
  • D)An XMLport scheduled to run more frequently
Reveal answer & rationale

Correct: A. Read Scale-Out is the platform feature specifically for routing read-only report and API traffic to a secondary replica, reducing load on the primary database — directly the "use Read Scale-Out to improve performance" objective. A bound OData action triggers an operation on a record; it isn't a performance or replica mechanism. Tightening a permission set changes access rights, not database load or routing. Changing an XMLport's schedule doesn't address database contention — it just changes how often a batch job runs.

Want the full experience?

Try Free MB-820 Questions in the Actual Quiz Interface

Practice mode with instant explanations. No credit card required.

Start Free Practice →

Common Wrong-Answer Patterns in MB-820 Questions

Across these 12 questions, the wrong options aren't random — they cluster into a handful of repeat traps. Recognizing the pattern is faster than re-deriving the right answer from scratch every time.

Distractor patternWhy it's tempting — and wrong
Modifying base app source directlyThe extension model never touches base app source — the answer is always a table/page extension or event subscriber.
Informational dialogs mistaken for blocking callsMessage() and Confirm() display text or ask a question; only Error() halts execution and rolls back the transaction.
Telemetry mistaken for functional testingTelemetry signals monitor production after the fact; the Test Toolkit is the automatable, assertion-based mechanism.
Entitlements mistaken for permission setsEntitlements map licensed features to permission sets — they don't define object-level access by themselves.
internal mistaken for publicinternal scopes a procedure to its own extension; public is required whenever another extension must call it.

Got most of these right?

Take the free MB-820 readiness quiz for a personalized read on which domain needs more work, or jump straight into the full scenario-based question bank.

Common Questions

Are these questions the same difficulty as the real MB-820 exam?

They're built to the same scenario-based style Microsoft uses — describing a business requirement and asking what you'd build — rather than definition recall. The real exam draws from a much larger pool across the same six domains.

Why are there 4 AL Objects questions but only 1 for Describe Business Central?

The question count is weighted to match Microsoft's published domain percentages. AL Objects carries 35-40% of the real exam; Describe Business Central carries 10-15%. Practicing in the wrong proportion trains you for an exam that doesn't exist.

I got the interfaces question wrong — what should I review?

Review AL's interface syntax and the "implement interfaces" sub-objective under "develop codeunits" specifically — it's a named exam skill, not incidental content, and questions on swappable implementations come up more than once on the real exam.

Is MB-820 harder than MB-800?

They test different skills, so "harder" depends on your background. Developers comfortable writing code but unfamiliar with Business Central's configuration screens often find MB-800 harder, and vice versa for functional consultants facing AL syntax on MB-820.

About MSCertQuiz

MSCertQuiz sells a scenario-based MB-820 practice bank; these 12 free questions were written by the same team, grounded against Microsoft's official MB-820 study guide rather than generic AL tutorials. Start here, then decide whether the full bank is worth it.