Free Microsoft MB-820 Practice Test & Real Exam Questions

  • Exam Code/Number: MB-820
  • Exam Name/Title: Microsoft Dynamics 365 Business Central Developer
  • Certification Provider: Microsoft
  • Corresponding Certification: Microsoft Dynamics 365
  • Exam Questions: 124
  • Updated On: Jul 03, 2026
You need to create the Fabrikam Vendor API for the accounting department.
How should you complete the code segment? To answer, select the appropriate options in the answer area.
NOTE: Each correct selection is worth one point.
Correct Answer:

Explanation:
You need to assist the development department with setting up Visual Studio Code to design the purchase department extension, meeting the quality department requirements.
How should you complete the app.json file? To answer, select the appropriate options in the answer area.
NOTE: Each correct selection is worth one point.
Correct Answer:

Explanation:
A company uses Business Central.
The company plans to use a translation file in an extension. The extension has a caption that should not be translated.
You need to prevent the caption from being translated.
What should you do?
Correct Answer: C Vote an answer
Explanation: Only visible for Pass4Leader members. You can sign-up / login (it's free).
You are developing an app.
You plan to publish the app to Microsoft AppSource.
You need to assign an object range for the app.
Which object range should you use?
Correct Answer: D Vote an answer
Explanation: Only visible for Pass4Leader members. You can sign-up / login (it's free).
A company is setting up a custom telemetry trace signal to send traces on failed customer statement emails.

For each of the following statements, select Yes if the statement is true. Otherwise, select No.
Correct Answer:

Explanation:
* The telemetry trace sends custom signals to an Application Insights resource specified in the extension's app.json file and on the tenant. = YES
* Dictionary keys for the extension name and version must be specified to identify the extension during analysis. = YES
* The telemetry trace sends events to Application Insights resources set up on the tenant. = YES Telemetry in Business Central allows developers to collect custom telemetry for extensions using Application Insights. The telemetry trace is used to send custom signals to an Application Insights resource. This resource is typically specified in the app.json file of the extension and must be configured on the tenant where the extension is installed.
The use of dictionary keys for the extension name and version is a best practice to identify the extension during analysis in Application Insights. These keys can be added to the telemetry trace to ensure that when the data is collected, it's clear which extension the data is associated with.
Finally, it is correct that the telemetry trace sends events to Application Insights resources that are set up on the tenant, enabling the collection and analysis of telemetry at the tenant level.
Note: This question is part of a series of questions that present the same scenario. Each question in the series contains a unique solution that might meet the stated goals. Some question sets might have more than one correct solution, while others might not have a correct solution.
After you answer a question in this section, you will NOT be able to return to it. As a result these questions will not appear in the review screen.
A company plans to optimize its permission sets.
The company has the following permission sets:

You need to provide the following implementation for a third permission set:
* Create a new Permission Set C that is a composite of Permission Set A and Permission Set B.
* Assign Permission Set C to a user.
You need to ensure that the user has only read access to the Job table.
Solution: Set the IncludedPermissionSets property to Permission Set A and the Excluded PermissionSets property to Permission SetB.
Does the solution meet the goal?
Correct Answer: A Vote an answer
You are creating a new Business Central report.
You plan to use triggers and functions to dynamically create a dataset and control the report behavior.
You must provide the following implementation.
* Run when the report is loaded.
* Run when the data item is iterated for the last time.
* Skip the rest of the report.
You need to select the triggers and functions for the report.
Which triggers and functions should you use? To answer, select the appropriate options in the answer area.
NOTE: Each correct selection is worth one point.
Correct Answer:

Explanation:
* Runs when the report is loaded: OnInitReport
* Runs when the data item has been iterated for the last time: OnPostDataItem
* Use this function to skip the rest of the report: CurrReport.Quit()
1. Requirement: Runs when the report is loaded.
* Selection: OnInitReport
* Reasoning: The OnInitReport trigger is the very first event that fires when the report object is instantiated (loaded). It runs before the request page is displayed, making it the correct choice for
"when the report is loaded."
* Contrast: OnPreReport runs after the request page, just before the data processing starts.
2. Requirement: Runs when the data item has been iterated for the last time.
* Selection: OnPostDataItem
* Reasoning: The OnPostDataItem trigger executes immediately after the report has finished iterating through all records belonging to that specific data item.
* Contrast: OnPreDataItem runs before the loop starts, and OnAfterGetRecord runs repeatedly during the loop (for every record).
3. Requirement: Use this function to skip the rest of the report.
* Selection: CurrReport.Quit()
* Reasoning: The CurrReport.Quit() function completely aborts the execution of the report, effectively
"skipping" everything else remaining in the report logic.
* Contrast: CurrReport.Skip() only skips the current record processing and moves to the next record. CurrReport.Break() exits the current data item loop but proceeds to the next data item (if any) or finishes the report normally.
You create a query that contains a procedure to display the top customers.
The procedure breaks at runtime.

You need to fix the code.
For each of the following statements, select Yes if the statement is true. Otherwise, select No.
NOTE: Each correct selection is worth one point.
Correct Answer:

Explanation:
* Enclose line 08 into BEGIN .. END = NO
* Add TopCustomerOverview.Open(); before = YES
* TopCustomerOverview.SetFilter(Sales_LCY, '>10000'); in line 06.
* Add TopCustomerOverview.Open(); after TopCustomerOverview.SetFilter(Sales_LCY, '>10000'); in line 06. = YES
* Replace SetFilter in line 06 with SetRange. = NO
The code provided has a runtime error because the query TopCustomerOverview must be opened before it can be read from. Therefore, TopCustomerOverview.Open(); should be added before trying to read from the query, which is not present in the code.
Enclosing line 08 into a BEGIN .. END block is unnecessary because it is a single statement, and AL does not require a BEGIN .. END block for single statements within trigger or procedure bodies.
TopCustomerOverview.SetFilter(Sales_LCY, '>10000'); is a correct method to set a filter for the query, and using SetRange instead is not necessary unless the requirement is specifically to set a range of values, which is not indicated in the procedure's description.
In summary, for the procedure to run correctly, the query must be opened after setting the filter and before attempting to read from it. The SetFilter method is correct for the intended operation, and there's no requirement to use SetRange or to enclose the Message call in a BEGIN .. END block.