Practice Free MB-820 Exam Online Questions
HOTSPOT
You need to write an Upgrade codeunit and use the DataTransfer object to handle the data upgrade.
Which solution should you use for each requirement? To answer, select the appropriate options in the answer area. NOTE: Each correct selection is worth one point.

Explanation:
Upgrade codeunit trigger: OnValidateUpgradePerDatabase
Since the question specifies that you are handling data upgrades, and you need to use validation before upgrading at the database level, the correct choice is OnValidateUpgradePerDatabase. This method ensures that the upgrade process is validated before applying to the entire database, making it more efficient when data affects multiple companies or structures. DataTransfer method to use: CopyRows
CopyRows is the appropriate method when you are handling large data transfers between tables, especially in an upgrade scenario where you are migrating or transferring data from one table to another. It copies entire rows of data and is optimal for bulk data operations during upgrades.
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:
• The users receive permission errors related lo MyTable.
• Users are no longer able to post sales orders since installing the new app.
• 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: In the MyTable object add the property InherentPermissions = Rl.
Does the solution meet the goal?
- A . Yes
- B . No
B
Explanation:
The property InherentPermissions is used to automatically grant permissions to the table object it is applied to, but setting it to Rl (which seems to be a typo and should likely be ‘RL’ for Read and Insert permissions) is not sufficient in this scenario. The issues reported by the users suggest that they need more than just read and insert permissions on MyTable. Since users are unable to post sales orders, they likely need Modify, Delete, or Execute permissions on certain tables or objects related to the sales order process. Additionally, the inability to access the list page created in MyTable could be due to lacking Read permissions on other related objects or pages. Therefore, merely setting InherentPermissions = RL on MyTable does not comprehensively address the users’ permission issues, especially when considering the principle of least privilege. A more tailored approach to permissions, potentially involving adjustments to the app’s code or configuration to ensure proper permissions are applied where necessary, would be needed.
DRAG DROP
A company has the following custom permission set:
You need to make the permission set visible on the Permission Sets page.
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. NOTE: More than one order of answer choices is correct. You will receive credit for any of the correct orders you select.

Explanation:
To make the permission set visible on the Permission Sets page, perform the following actions in sequence:
Change the Assignable property value to true.
Add the ObsoleteState = No property.
Publish the app with the permission set to an environment.
Process for making permission sets visible:
In Business Central, the Assignable property determines whether a permission set is shown in the user interface for assigning to users. By default, if Assignable is set to false, the permission set is hidden. Therefore, it should be set to true to make the permission set visible.
The ObsoleteState property indicates whether an object is outdated (Obsolete) or not (No). If an object is marked as obsolete, it is typically hidden from the user interface. Therefore, setting ObsoleteState = No ensures that the permission set is not treated as outdated and remains visible. Finally, publishing the app with the permission set to an environment updates the environment with the new or modified objects, including permission sets, making them available for assignment to users.
HOTSPOT
You create a procedure to check if a purchase order has lines.
The procedure returns false for purchase order PO-00001 even though it has purchase lines.
You need to fix the code to get the correct result.
For each of the following statements, select Yes if the statement is true Otherwise, select No. NOTE: Each correct selection is worth one point.

Explanation:
Add Clear(PurchaseLine); as a line before line 01 of the code: No
Add PurchaseLine.SetFilter("Line No."; ‘>0’) as a line after line 06: Yes
Change the filter on line 06 from a "No." field to a "Document No." field: No
Remove "not" in line 07: No
Add Clear(PurchaseLine); as a line before line 01 of the code.
No
You do not need to clear the PurchaseLine record before running the query, because the SetRange filters will take care of setting the correct context.
Add PurchaseLine.SetFilter("Line No."; ‘>0’) as a line after line 06. Yes
Adding a SetFilter on the "Line No." field ensures that you’re checking for actual purchase lines greater than 0, which are valid lines. This would fix the issue where the check might return false even when lines exist.
Change the filter on line 06 from a "No." field to a "Document No." field.
No
The filter on the No. field is correct, as it’s filtering based on the purchase order number. Changing
this to Document No. is unnecessary.
Remove "not" in line 07.
No
The not in line 07 is necessary because IsEmpty() returns true when no lines are found. To correctly return a boolean indicating whether the purchase order has lines, you need to negate the result of IsEmpty().
HOTSPOT
You need to define the properties for the Receipt No. field in the Non-conformity table when storing the information to the purchasing 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.

Explanation:
field(3; "Receipt No."; Code[20])
{
DataClassification = CustomerContent;
TableRelation = "Purch. Rcpt. Header"."No." where ("Buy-from Vendor No." = field("Vendor No."));
}
Field Declaration:
The field(3; "Receipt No."; Code[20]) part defines the field in the table with ID 3 and type Code with a length of 20. This field will hold the receipt number. DataClassification:
CustomerContent is selected for the DataClassification property, which categorizes the data for privacy and compliance management. This aligns with Business Central’s recommendations for handling sensitive data in customer-related tables. TableRelation Property:
The TableRelation property links the "Receipt No." field to another table, which in this case is the "Purch. Rcpt. Header" table. This ensures that only valid receipt numbers from the Purchase Receipt Header table can be selected or entered in this field. Relation Filter:
The filter condition is applied using the where clause. It ensures that the Receipt No. is only from the Purchase Receipt Header records where the "Buy-from Vendor No." matches the "Vendor No." of the current record.
The condition field("Vendor No.") is selected from the drop-down as shown in the image. This links the vendor information in the non-conformity table to the receipt in the Purchase Receipt Header table.
By linking the "Vendor No." fields, you ensure that only receipt numbers from the correct vendor are available, which improves data consistency and reduces errors during data entry.
DRAG DROP to AL Language:
The TableRelation property is frequently used to create references between tables in Business Central. In this case, the correct relationship between the "Purch. Rcpt. Header" and the Non-conformity table is established using the TableRelation and filter. Reference Documentation:
AL TableRelation Property
AL Field Syntax
You create a Business Central report.
You need to insert values on the Request page to be saved for the next time the report is run.
What should you do?
- A . Set the Transact! on Type property to Update.
- B . Declare a Savevalues’ variable and assign it to true on the OnOpenPage () trigger.
- C . Set the Use Request Page property to true.
- D . Set the SaveValues property to true.
B
Explanation:
To ensure that the values inserted on the Request page of a Business Central report are saved for the next time the report is run, the SaveValues property (D) should be set to true. This property is available on the Request page of the report and, when set to true, allows the system to remember the values entered by the user, so they do not have to re-enter them each time they run the report. This feature enhances user experience by reducing repetitive data entry and ensuring consistency in report parameters across multiple executions. The other options mentioned, such as setting the Transaction Type property to Update (A) or declaring a Savevalues variable in the OnOpenPage trigger (B), are not directly related to saving user input on a report’s Request page.
HOTSPOT
You have a per tenant extension that contains the following 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.

Explanation:
Codeunit "Discount Mgmt." compiles successfully. = NO
VariantLine in line 17 must be changed to Line and the DiscountAmount removed for the codeunit to compile. = NO
The DiscountIsValid method must be defined in the interface for the code to compile. = YES
The codeunit "Discount Mgmt." will not compile successfully as is because the DiscountIsValid method is not defined in the "IDiscount Calculation" interface, yet it is being declared in the codeunit
which implements this interface. AL requires that all procedures in the codeunit that implements an interface must be defined in the interface itself.
The VariantLine in line 17 does not need to be changed to Line, nor does the DiscountAmount need to be removed for the codeunit to compile. These are valid declarations in AL and they are correctly implemented in the codeunit. The Variant data type in AL is used to handle various data types and DiscountAmount is a valid return type for a procedure.
For the code to compile successfully, the DiscountIsValid method must be included in the interface because AL enforces that any codeunit implementing an interface must implement all the methods defined in that interface.
A company uses Business Central.
You plan to help users through the installation process by using Assisted Setup.
You need to create a wizard page.
Which two actions should you perform? Each correct answer presents a complete solution. NOTE: Each correct selection is worth one point.
- A . Set the PageType property to NavigatePage.
- B . For each step needed in the guide, add a group0 control to the root-level of the layout > area (Content) control
- C . Set the PageType property to Worksheet
- D . For each step needed in the guide, add a repeater!) control to the root-level of the layout > area (Content) control.
A, B
Explanation:
A: In Business Central, wizard pages are created using the NavigatePage type because it allows step-by-step navigation, which is perfect for wizard-like user experiences.
B: The group control organizes the content for each step in the guide, and it’s essential to add these
controls to the layout’s Content area for each step of the wizard.
C: Worksheet is used for pages designed to handle larger datasets, not for wizard or step-by-step flows.
D: Repeater controls are used for displaying multiple records, not for guiding users through steps, so it’s incorrect for this scenario.
For more information, you can refer to Assisted Setup in Business Central.
A company is deploying Business Central on-premises.
The company plans to use a single-tenant deployment architecture.
You need to describe how the data is stored and how the Business Central Server is configured.
In which two ways should you describe the single-tenant architecture? Each correct answer presents a complete solution. NOTE: Each correct selection is worth one point.
- A . Each customer has their own Business Central Server.
- B . The application and the business data are stored in the same database.
- C . Multiple customers share a single Business Central Server.
- D . The application and business data are stored in separate databases.
- E . Multiple customers share multiple Business Central Server instances.
A, B
Explanation:
In a single-tenant deployment architecture of Business Central on-premises, the following characteristics describe how the data is stored and how the Business Central Server is configured: The application and the business data are stored in the same database (B): In a single-tenant architecture, each tenant (which typically corresponds to a single customer) has its own dedicated database. This database contains both the application objects (such as pages, reports, codeunits, etc.) and the business data (such as customer, vendor, and transaction records). This setup ensures that each tenant’s data is isolated and can be managed independently.
The application and business data are stored in separate databases (D): While (B) is a characteristic of a single-tenant deployment, it’s important to clarify that in some configurations, the application objects can be stored in a separate database from the business data. This approach can be used for easier maintenance and upgrades of the application code without affecting the business data. However, each tenant still has its own set of databases, maintaining the single-tenancy model.
The other options provided do not accurately describe a single-tenant architecture:
Each customer has their own Business Central Server (A): This statement might be misleading. In a single-tenant deployment, while each customer has their own database, they do not necessarily have their own Business Central Server instance. Multiple databases (tenants) can be hosted on a single server instance, although they are not shared across customers.
Multiple customers share a single Business Central Server (C) and Multiple customers share multiple Business Central Server instances (E): These options describe a multi-tenant architecture rather than
a single-tenant one. In a multi-tenant setup, multiple customers (tenants) can share the same server instance and even the same application database, with data isolation ensured at the application level.
HOTSPOT
You need to create the codeunit to read the POS terminal APIs.
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.

Explanation:
codeunit 52102 "POS API Management"
{
Access = Public;
Permissions = TableData "POS Information" = rwdx;
trigger OnRun()
begin
readAPI();
end;
procedure readAPI()
begin
// Your code here to read from the POS API
end;
}