[Update Sep 2025] How to pass Microsoft Dynamics 365 MB-820 exam

Before getting into how to pass the Microsoft MB-820 exam plan, let’s first understand Business Central’s certification:
As you know, Business Central’s certification is only Microsoft Certified: Dynamics 365 Business Central Functional Consultant Associate released in 2020. More details: Exam MB-800: Microsoft Dynamics 365 Business Central Functional Consultant
Starting in January 2024, Microsoft released the second Business Central certification exam: MB-820: Dynamics 365 Business Central Developer Associate
The new certification focuses on Dynamics 365 Business Central, a comprehensive business management solution for small and medium-sized organizations that automates and streamlines business processes and connects sales, service, finance, and operations. This helps organizations work smarter, adapt faster, and Improve performance. In this role, Business Central Developers create applications that extend the solution (whether developing new modules or modifying existing ones) and are responsible for troubleshooting and debugging issues in the system.

The exam consists of 6 main parts :
Tips: Current (after June 10, 2025) skill assessment areas and weights
This update does not change the overall skill areas and weight percentages, but does make adjustments to specific subsections: minor changes to the section on installing and configuring the Business Central development environment, and major changes to the section on implementing APIs. These changes primarily involve refinement or modification of objectives to reflect technological developments and actual application needs.
Here are the latest skill assessment details, including percentages and subsections (based on the official study guide):
- Describe Business Central (10–15%)
- Install, develop, and deploy for Business Central (10–15%)
- Develop by using AL objects (35–40%)
- Develop by using AL (15–20%)
- Work with development tools (10–15%)
- Integrate Business Central with other applications (10–15%)
I will share learning materials below the article. In addition to Programming in AL (MS Docs), you can also find some information on MS Learn.
Collection: Extend Business Central
- Get started with development in Microsoft Dynamics 365 Business Central
- Learn the application foundation with the AL programming language for Microsoft Dynamics 365 Business Central
- Discover the foundation of customizing Microsoft Dynamics 365 Business Central
- Build reports for Microsoft Dynamics 365 Business Central (Report)
- Learn about the data management foundation in Microsoft Dynamics 365 Business Central (XMLports & Query)
- Tailor roles and design the UI for Microsoft Dynamics 365 Business Central (Role, Assisted Setup, Notification, UI)
- Work with essential development standards for Microsoft Dynamics 365 Business Central
- Use application development best practices in Microsoft Dynamics 365 Business Central
- Develop using Power Apps and Power Automate for Dynamics 365 Business Central
- Interface with Microsoft Dynamics 365 Business Central
- Continuous integration with Azure DevOps for Microsoft Dynamics 365 Business Central
- Use Power BI in Microsoft Dynamics 365 Business Central
[Update Sep 2025] Latest Microsoft MB-820 Exam Practice Materials
From | Number of exam questions (Share for free) | Total Questions (real-time updates) | Related | Last Updated |
Leads4Pass | 15Q&As | 113 Q&A | Microsoft Dynamics 365 | MB-820 PDF |
Question 1:
You need to determine why the extension does not appear in the tenant.
What are two possible reasons for the disappearance? Each correct answer presents a complete solution.
NOTE: Each correct selection is worth one point.
A. The extension was published as a DEV extension.
B. The extension was not compatible with the new version within 60 days of the first notification.
C. The extension was published as PTE, and the Platform parameter was not updated in the app.json file.
D. The extension was published as PTE, and the Platform and Runtime parameters were not updated in the app.json file.
E. The extension was not compatible with the new version within 90 days of the first notification.
Correct Answer: AD
Explain
Scenario: Users report that one of the Contoso, Ltd. extensions disappeared from the tenant. The IT department confirms that the extension is still published.
A: The Extensions with “Published As” “Dev” usually gets disappeared after the Environment is upgraded.
D: When you start a new AL project, two JSON files; the app.json file and the launch.json file are generated automatically. The app.json file contains information about the extension that you\’re building, such as publisher information and specifies the minimum version of base application objects that the extension is built on. Often, the app.json file is referred to as the manifest.
Reference: https://www.linkedin.com/pulse/solved-my-extensions-getting-uninstalled-when-gets-updated-dayalani https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-json-files
Question 2:
HOTSPOT
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.
Hot Area:

Correct Answer:

Explain
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.
Question 3:
HOTSPOT
You create an \’AddltemsToJson” procedure and publish it.

The procedure fails to run.
You need to fix the errors in the code.
For each of the following statements, select Yes if the statement is true. Otherwise, select No.
Hot Area:

Correct Answer:

Explain
In line 13, replace the Add method with Insert. = NO In line 15, replace the WriteTo method with ReadFrom. = NO Change the ItemObject variable type from JsonObject to JsonToken. = NO Move line 08 in the beginning of REPEAT .. UNTIL.
= YES The provided code is intended to serialize a list of items from the Item table into a JSON array format. Here is a breakdown of the code and the necessary corrections:
In line 13, “ItemsArray.Add(ItemObject)”: This line is correctly using the Add method to add the ItemObject to the ItemsArray. The Add method is the correct method to use for adding items to a JsonArray. Therefore, there is no need to replace add with Insert.
In line 15, “ItemsArray.WriteTo(RequestText)”: The WriteTo method is used correctly to serialize the ItemsArray into a JSON formatted string and store it in the RequestText variable.
The ReadFrom method is used for the opposite operation, i.e., to deserialize a JSON formatted string into a JsonArray, which is not the goal in this context. Hence, no change is needed here.
Change the ItemObject variable type from JsonObject to JsonToken: The ItemObject variable is intended to hold JSON objects representing individual items, making JsonObject the appropriate type. JsonToken is not a type used in this context within AL for Business Central, and thus the variable type should remain as JsonObject.
Move line 08, “Clear(ItemObject)”: This line should be moved inside the repeat loop to ensure that the ItemObject is cleared for each item in the loop. Placing it before the repeat would only clear it once before the loop starts, which could lead to incorrect serialization as the previous item\’s properties would not be cleared from the ItemObject.
The logic for serializing records into JSON is a common operation when interfacing with APIs or web services in Business Central, and the pattern shown in the code is typical for such operations.
Question 4:
DRAG DROP
You are developing a test application to test the posting process of a sales order. You must provide the following implementation:
1.
Specify the value of post options (dialog: Ship, Invoice, Shipand; Invoice) as Invoice.
2.
Perform calculations and values checking.
You need to complete the development of the test codeunit.
Which methods should you use? To answer, move the appropriate methods to the correct implementation. You may use each method once, more than once, or not at all. You may need to move the split bar between panes or scroll to view content.
NOTE: Each correct selection is worth one point.
Select and Place:

Correct Answer:

Explain
Specify the value of the post options as Invoice:
Test
Perform calculations and values checking:
Handler
In the context of Microsoft Dynamics 365 Business Central testing, the \’Test\’ attribute is used to mark a method as a test method.
This is where you would specify the action or the behavior you\’re testing ?in this case, setting the post options as Invoice. It\’s within these test methods that you would simulate setting the posting option to “Invoice” programmatically.
For performing calculations and checking values, you would use \’Handler\’ methods to handle specific business events or conditions that occur within the system, such as before or after posting a document.
These handlers can ensure that calculations are done correctly and that all validation checks pass before the document is posted.
The \’Normal\’ method would be a standard method that could be involved in the posting process, ensuring that all business logic is correctly applied and that the calculations and value checks are as expected.
In a test codeunit, you would typically have test methods that call these handler and normal methods to verify the business logic in various scenarios, such as posting with different options or checking the results of calculations under different conditions.
Question 5:
You need to define the data types for the fields of the Non-conformity table.
Which two data types should you use? Each correct answer presents part of the solution.
NOTE: Each correct selection is worth one point.
A. Integer for the Non-conformity Number field
B. DateTime for the Non-conformity Date field
C. Char for the Non-conformity Number field
D. Date for the Non-conformity Date field
E. Code for the Non-conformity Number field
Correct Answer: CD
Explain
Scenario: When a purchase order with incorrect quantity or quality issues is received, the entity must create a non-conformity document in the system. The following information must be included in the document:
*
Non-conformity Number: must use the No. Series table from Business Central online to manage this field and use these features: Alphanumeric values Number format that includes “NC” and the year as part of the number; for example, NC24-001
*
Non-conformity Date: stores only the creation date
Question 6:
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 set 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 on the review screen.
A company creates a Business Central app and a table named MyTable to store records when sales orders are posted.
Users report the following issues:
1.
The users receive permission errors related to MyTable.
2.
Users are no longer able to post sales orders since installing the new app.
3.
The users cannot access the list page created in MyTable.
You need to resolve the user issues without creating new permission sets. You must use the principle of least privilege.
Solution: Decorate the event subscriber used for inserting data in MyTable by entering (lnherentPermissions(PermissionOb]ectType:TableData. Database:MyTable. \’R\’)]
Does the solution meet the goal?
A. Yes
B. No
Correct Answer: A
Explain
Using InherentPermissions in an event subscriber with the specified syntax could potentially resolve the permission issues related to MyTable, provided that the permissions specified (in this case, \’R\’ for Read) align with the minimum necessary for the users to perform their tasks.
This approach allows the app to grant permissions dynamically based on the context of the event subscriber, which in this case is involved with inserting data into MyTable.
By granting Read permission at the event level, it ensures that users have the necessary permissions to interact with MyTable in the context of the operations facilitated by the event subscriber, without needing to alter existing permission sets or grant broader permissions than necessary.
This solution adheres to the principle of least privilege by ensuring that permissions are granted only within the narrow scope needed for specific operations, thereby potentially resolving the reported user issues in a secure and controlled manner.
Question 7:
DRAG DROP
You create the following Vendor table and Item table in Business Central.

You require the following data set to assign vendors to items.

You need to create a query to assign the vendors.

Which three code blocks should you use to develop the solution? To answer, move the appropriate code blocks from the list of code blocks to the answer area and arrange them in the correct order. NOTE: More than one order of answer choices is correct. You will receive credit for any of the correct orders you select.
Select and Place:

Correct Answer:

Explain
To create a query that assigns vendors to items in Business Central, use the following code blocks in sequence:
dataitem(Vendor; Vendor)
dataitem(Item; Item)
DataItemLink = “Vendor No.” = Item.Vendor_No;
Creating a query: In Business Central, a query object is used to combine data from multiple tables. You start by specifying each table as a data item.
In this case, you would start with the Vendor table and then the Item table. After specifying the data items, you need to link them together.
The DataItemLink property is used to establish a relationship between two data items based on a common field. Here, you are linking the Vendor and Item tables on the “Vendor No.” field, which is present in both tables.
This link ensures that the query will return a dataset that includes related records from both tables based on the vendor number. The order of the code blocks ensures the logical flow and relationships between tables as required for the query.
Question 8:
A company has a Business Central online environment.
You are exporting a file from a client by using the DownloadFromStream method.
You need to create an InStream data type to send the data
Which solution should you use?
A. Use OeatelnStream method from codeunit “Temp Blob”.
B. Use OeatelnStream method for BLOB field of “TempBlob” table.
C. Use CreatelnStream method for File type variable.
Correct Answer: A
Explain
When exporting a file from a client using the DownloadFromStream method in a Business Central online environment, you need to create an InStream data type to send the data.
The solution is to use the CreateInStream method from codeunit “Temp Blob” (A). The Temp Blob codeunit provides temporary storage of BLOBs (Binary Large Objects) and is commonly used for handling files and streams in Business Central.
By using the CreateInStream method on a Temp Blob, you create an InStream that can then be used with the DownloadFromStream method to send the file data to the client.
This approach is efficient for file handling and transfer in Business Central, especially in scenarios involving data export or file manipulation.
Question 9:
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?
A. custom object within the range 50000 to 59999
B. custom object within the range 50000 to 99999
C. divided by countries and use specific a country within the range 100000 to 999999
D. an object range within the range of 7000000 to 74999999 that is requested from Microsoft
E. free object within the standard range 1 to 49999
Correct Answer: D
Explain
When developing an app for Microsoft AppSource, it is essential to use an object range that is specifically designated by Microsoft to avoid conflicts with other apps and the base application.
The correct object range to use is: An object range within the range of 70000000 to 74999999 that is requested from Microsoft (D): This range is reserved for AppSource apps.
Developers need to request this range from Microsoft to ensure that the objects used in their extension do not conflict with those used by other extensions or by the base application.
Using this reserved range helps maintain the integrity and compatibility of extensions published on AppSource. It\’s important to note that the other ranges mentioned (A, B, C, and E) are not suitable for apps intended for AppSource.
Ranges 50000 to 59999 and 50000 to 99999 are typically reserved for per-tenant customizations or partner solutions, not for distribution on AppSource.
The standard range 1 to 49999 is reserved for the base application objects, and using an object range divided by countries (C) is not a standard practice for AppSource apps.
Question 10:
HOTSPOT
You develop a test application.
You must meet the following requirements:
1.
Roll back changes to a test method after run time.
2.
Run an approve action on a test page named TestPageA.
You need to implement the given requirements on the test codeunit
Which actions should you perform? To answer, select the appropriate options in the answer area
NOTE: Each correct selection is worth one point.
Hot Area:

Correct Answer:

Explain
To roll back changes to a test method after run time, you should:
Set the TransactionModel attribute to AutoRollback. To run an approve action on a test page named TestPageA, you should:
Configure TestPageA.Approve.Invoke().
In Business Central\’s testing framework, the TransactionModel attribute can be set to AutoRollback. This ensures that any changes made during the test are rolled back after the test is complete, leaving the database in its original state.
For running an action on a test page, you would use the \’Invoke\’ method on the action you wish to perform. In this case, to run an approve action on TestPageA, you would use TestPageA.Approve.Invoke() within your test codeunit.
This simulates the user action of approving something on the page.
These actions ensure that the testing environment is properly set up to test specific functionalities without persisting test data and to invoke actions as part of the test scenarios.
Question 11:
You plan to write unit test functions to test newly developed functionality in an app.
You must create a test codeunit to write the functions.
You need to select the property to use for the test codeunit.
Which property should you use to ensure that the requirements are fulfilled?
A. SubType
B. Access
C. Description
Correct Answer: A
Explain
When creating a test codeunit in Microsoft Dynamics 365 Business Central to write unit test functions, the SubType property (A) of the codeunit should be set to Test.
This property is crucial for defining the codeunit\’s purpose and behavior within the application. By setting the SubType property to Test, you are indicating that the codeunit contains test functions intended to validate the functionality of other parts of the application, such as customizations or new developments.
This distinction ensures that the testing framework within Business Central recognizes the codeunit as a container for test functions, allowing it to execute these functions in a testing context, which can include setting up test data, running the tests, and cleaning up after the tests have completed.
Question 12:
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 on the review screen.
A company creates a Business Central app and a table named MyTable to store records when sales orders are posted.
Users report the following issues:
1.
The users receive permission errors related to MyTable.
2.
Users are no longer able to post sales orders since installing the new app.
3.
The users cannot access the list page created in MyTable.
You need to resolve the user issues without creating new permission sets. You must use the principle of least privilege.
Solution: Assign a SUPER permission set.
Does the solution meet the goal?
A. Yes
B. No
Correct Answer: B
Explain
Assigning a SUPER permission set to all users would indeed resolve the permission errors and access issues reported by the users, as it grants full permissions across all objects and data in Business Central.
However, this approach contradicts the principle of least privilege, which advocates for providing only the minimum levels of access necessary for users to perform their jobs.
The SUPER permission set would excessively elevate user privileges, potentially leading to security risks and unintended modifications to critical data.
Therefore, while assigning the SUPER permission set might technically resolve the immediate issues, it does not meet the goal of adhering to the principle of least privilege and is not a recommended solution.
Question 13:
You are creating an entitlement object in Business Central to enable transactability for AppSource apps.
You must map the entitlement object to a plan in Partner Center.
You need to select the value of the Type property to use in the entitlement object.
Which value should you use?
A. PerUserServicePlan
B. Implicit
C. Unlicensed
D. Role
Correct Answer: A
Explain
In Business Central, when creating an entitlement object to enable transactability for AppSource apps and mapping it to a plan in Partner Center, the Type property of the entitlement object should be set to PerUserServicePlan (A).
The PerUserServicePlan type is used to define an entitlement that is based on a service plan, which is typically how transactability features are managed for apps distributed through AppSource.
This type of entitlement allows for the mapping of specific features or capabilities of the app to a service plan in Partner Center, enabling granular control over what users are entitled to use based on their subscription.
The other values, such as Implicit (B), Unlicensed (C), and Role (D), are used in different contexts and do not apply to the scenario of mapping an entitlement object to a plan for AppSource apps.
Question 14:
DRAG DROP
You need to configure telemetry for the SaaS tenant and test whether the ingested signals are displayed.
Which three actions should you perform in sequence? To answer, move the appropriate actions from the list of actions to the answer area and arrange them in the correct order.
Select and Place:

Correct Answer:

Step 1: Create an Azure Application Insights instance by using the Azure Portal in the Partner\’s subscription.
Scenario: External business partner
The external business partner must add custom telemetry to an application created for Contoso, Ltd. to monitor a business process.
Custom telemetry signals for the application must be visible only on the partner\’s telemetry.
Step 2: Select the environment in the Admin Center and place the connection string in the Application Insights Connection String field.
Connection strings
Connection strings define where to send telemetry data.
Find your connection string
Your connection string appears in the Overview section of your Application Insights resource.
Note: When you create a custom telemetry trace signal, you can specify the scope of the event. The telemetry scope determines if the event is only sent to the Azure Application Insights resource specified in the extension\’s app.json or if the event is also sent to the Azure Application Insights resource of the environment where the extension is installed.
Step 3: Select the Application Insights instance, select Logs and then inspect the Traces table.
Custom events in Log Analytics
The telemetry is available in the customEvents table on the Application Insights Logs tab or usage experience.
Create a custom telemetry event
To create a custom telemetry event, use the LogMessage method in AL code where you want to trigger the signal. The LogMessage method defines the information that is sent to Azure Application Insights for a specific operation or activity.
There are two variations of the LogMessage method. The difference is that one method uses a dictionary object to define custom dimensions for the trace signal.
The other method includes two overloads so you don\’t have to construct a dictionary. You can use these methods in any object, trigger, or method.
Incorrect:
* Select the Sessions menu and then select Restart Environment.
Reference: https://learn.microsoft.com/en-us/azure/azure-monitor/app/api-custom-events-metrics https://learn.microsoft.com/en-us/azure/azure-monitor/app/sdk-connection-string
Question 15:
DRAG DROP
You are developing an XMLport to export data from the parent Item table and a related child “Item Unit of Measure\’ table. The XMLport configuration must provide the following:
1.
Link the child table to its parent.
2.
Display a confirmation message after the XMLport runs.
You need to generate the XMLport.
What should you do? To answer, move the appropriate triggers to the correct requirements. You may use each trigger once, more than once, or not at all. You may need to move the split bar between panes or scroll to view content.
NOTE: Each correct selection is worth one point.
Select and Place:

Correct Answer:

To meet the XMLport configuration requirements:
Link the child table to its parent: Use the OnAfterGetRecord trigger. Display a confirmation message after the XMLport runs: Use the OnPostXMLPort trigger.
In Business Central, when you are developing an XMLport for data export, triggers are used to perform actions at different stages of the XMLport\’s operation:
OnAfterGetRecord Trigger:This trigger fires after a record is retrieved from the database but before it is processed for output in the XMLport.
It is the ideal place to link child table records to their parent because you have access to the current record that can be used to set filters or modify data in the child table before it is written to the XML file.
OnPostXMLPort Trigger:This trigger fires after the XMLport has finished processing all records. It is the correct place to display a confirmation message because it ensures that the message will appear after the entire XMLport operation is complete.
Here, you can use application-specific functions to show the message, such as MESSAGE function in AL code.
By placing the appropriate triggers in these positions, you can ensure that the XMLport will link the child records to their parent records during the data export process and will notify the user with a confirmation message once the operation is successfully completed.
…
Register for the MB-820 exam
Select your country and click Schedule Exam. You will be redirected to the Microsoft certification page. You must log in with your Microsoft account, and if this is your first time, there will be pages where you will need to fill in your personal information to create your Microsoft Certification Identification Number (MCID). Once the MCID is generated, you can click “Schedule Exam” again and you will be redirected to the interactive setup wizard, just fill in all the required information and click Next. If you want to edit the information and fix the differences, you will be able to return to the wizard.
Before the exam, I recommend using Study Points to read the exam overview and study materials with official “Microsoft Learn” links, as well as practice with the latest Microsoft MB-820 Exam materials: https://www.leads4pass.com/mb-820.html.
If you have no exam experience, I recommend taking the exam sandbox provided by Microsoft so you can experience the look and feel of the exam beforehand. You will be able to interact with different types of questions within the same user interface you use during the exam.
Summarize
I collected all the information I could and hope to help you pass the MB-820 exam!
Although the MB-820 exam certificate is designed for intermediate AL developers, the difficulty level is also intermediate. You only need to make good use of all learning resources at your own pace to achieve success easily.
Finally, I wish you good luck in your exam!
Discover more from Collect the latest Microsoft (Azure, Dynamics 365, Microsoft 365, Fundamentals, MTA...) exam questions and answers-Advanced sharing with Cisco, CompTIA, Citrix
Subscribe to get the latest posts sent to your email.