Microsoft

PL-400 Free Practice Questions

This is the free Microsoft PL-400 practice question bank — 210 of 406 total questions, each with a full explanation, free to read with no signup required. Updated 2026-04-24.

Every answer is verified against official Microsoft documentation — see our methodology.

Question 1

HOTSPOT - Users are directed to a form in a model-driven app through a special URL that passes values for three lookup columns. The form consists of three tabs: A, which is the default tab, B, and C. The form has JavaScript code registered on the OnLoad and OnSave events as follows: • OnLoad: A lookup column on each tab is used to retrieve data. The data is used to populate columns on that same tab. • OnSave: Data validation involves calculations of columns on the form. If a value is outside the acceptable range, the record must not be saved. Users report that loading and saving the form takes too long when they create a new record. You need to shorten the time it takes to load and save the form without losing functionality. Which new event registrations should you create? To answer, select the appropriate options in the answer area. NOTE: Each correct selection is worth one point.

Illustration for PL-400 question 1
Show Answer
Correct Answer: OnLoad: OnChange events for the lookup columns on tabs A, B, and C OnSave: OnChange events for the columns involved in the calculations
Explanation:
Moving lookup logic from OnLoad to OnChange prevents unnecessary data retrieval when the form first loads and ensures data is retrieved only when the lookup values (including those passed by URL) are set. Replacing heavy OnSave validation with OnChange validation performs calculations incrementally as users edit fields, so save processing is faster while still blocking invalid data.

Question 1

You create a custom API as part of a solution that will be made available on Microsoft AppSource. You need to prevent others from using Dataverse code generation tools that create classes and use the messages for your custom API. What should you do?

A. Set Is Private to Yes.
B. Set Is Function to Yes.
C. Set Allowed Custom Processing Step Type to None.
D. Set Allow Customizations to No.
Show Answer
Correct Answer: A
Explanation:
Setting **Is Private = Yes** prevents the custom API from being exposed in Dataverse metadata. Dataverse code generation tools rely on metadata to generate classes and messages, so marking the API as private stops others from generating and using code against it. The other options control behavior such as plugin extensibility or function semantics, not metadata visibility.

Question 2

HOTSPOT - You are implementing a Power Automate flow in a model-driven app. The flow will facilitate an approval process to increase customer credit limits. A user must be able to initiate the process from a customer record. The user must be prompted for the amount of the increase. Once the increase is approved, the customer record must update to reflect the new amount. You need to add a trigger to the flow and locate the ID of the record to update. The flow should be written to use the least number of steps. How should you create the flow? To answer, select the appropriate options in the answer area. NOTE: Each correct selection is worth one point.

Illustration for PL-400 question 2
Show Answer
Correct Answer: Trigger type: When a Dataverse record is selected Record ID to update: From the trigger
Explanation:
The flow must be started from a model-driven app record and prompt for input, which is supported by the Dataverse record-selected trigger. This trigger also provides the selected record’s ID, allowing the update step to use it directly with no extra actions.

Question 2

A company is testing a solution that you built by using access team templates. Users report that they are unable to access rows. You need to ensure that the solution works as expected. What should you do?

A. Assign the rows to the team.
B. Add the users to the Access Team Members subgrid.
C. Share the affected rows.
D. Assign a security role to the users.
Show Answer
Correct Answer: B
Explanation:
Access team templates grant record-level access through access teams, not through security roles or ownership. To make the solution work, users must be added to the Access Team Members subgrid on the record so the access team template can apply the intended privileges. Assigning roles, sharing, or reassigning records is not required for access teams.

Question 3

HOTSPOT - You are building a canvas app for a company to display data from a Microsoft SharePoint list named Tasks. The list stores project tasks, including due dates. A collection named projectTasks is already declared in the app. The company maintains over 100,000 tasks across projects When users navigate to the main screen of the app or manually refresh the list, the main screen must display a list of all tasks that are beyond their due date. Outbound network calls to SharePoint must be minimized. You need to implement the functionality. Which Power Fx formula should you use? To answer, select the appropriate options in the answer area. NOTE: Each correct selection is worth one point.

Illustration for PL-400 question 3
Show Answer
Correct Answer: ClearCollect( projectTasks, Filter(Tasks, 'DueDate' < Now()) )
Explanation:
ClearCollect refreshes the local collection in one operation. Filtering is delegated to SharePoint, returning only overdue tasks (DueDate earlier than Now), which minimizes outbound network calls even with large lists.

Question 3

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. You have two tables, account and contact, with a parent-child relationship. Records in the account table can be created in the UI or from an external system integrated with Dataverse by using an Azure Function. When a user creates a record in the account table, a default record in the contact table must be created automatically. You need to implement a process to create the contact records. Solution: Create a JavaScript function that runs when the account record form is saved. Use the Web API in the JavaScript function to create the contact record. Does the solution meet the goal?

A. Yes
B. No
Show Answer
Correct Answer: B
Explanation:
The JavaScript runs only in the model-driven app UI when a user saves a form. It will not execute for account records created by the external system via Dataverse/Azure Function, so the contact would not be created in those cases. Therefore, the solution does not meet the requirement for all account creation paths.

Question 4

You are writing C# code to create an alternate key in a table for two columns: Order ID and Order Date. The table has thousands of records. You use the CreateEntityKey message to create the key. When you retrieve EntityKeyMetadata.EntityKeyIndexStatus, it returns a value of Failed. You need to resolve the issue with the index creation. What should you do first?

A. Use the ReactivateEntityKey action.
B. Publish customizations.
C. Use the DeleteEntityKeyRequest message.
D. Delete duplicate combination values in Order ID and Order Date.
Show Answer
Correct Answer: D
Explanation:
An alternate key enforces uniqueness. If EntityKeyIndexStatus is Failed after creation, the most common and primary cause is existing duplicate data that violates the unique constraint. Before reactivating, publishing, or recreating the key, you must first remove or fix duplicate combinations of Order ID and Order Date so the index can be created successfully.

Question 4

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. You have two tables, account and contact, with a parent-child relationship. Records in the account table can be created in the UI or from an external system integrated with Dataverse by using an Azure Function. When a user creates a record in the account table, a default record in the contact table must be created automatically. You need to implement a process to create the contact records. Solution: Create a custom API bound to the account table that uses a plug-in. Use the Organization service to create the contact record. Does the solution meet the goal?

A. Yes
B. No
Show Answer
Correct Answer: B
Explanation:
A custom API bound to the account table would only run when explicitly called. It would not automatically execute when an account record is created through the UI or from an external integration unless those processes were modified to call the API. The requirement is for the contact to be created automatically on account creation, which is better met by a plug-in or cloud flow triggered on create of the account table. Therefore, the solution does not meet the goal.

Question 5

DRAG DROP - You have two custom tables that have a parent-child relationship. The parent table value is formed by the fixed prefix ABC followed by a six-digit, auto-incrementing number. Each child table value appends a three-digit sequence starting at 001 to its associated parent table value, incrementing with each new child record. Child records are always linked to a parent. Each table requires a column that has a unique value, Low-code functionality must be used when possible. You need to implement the method that will create each unique value. Which method should you use? To answer, move the appropriate methods to the correct tables. 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.

Illustration for PL-400 question 5
Show Answer
Correct Answer: Parent → Autonumber column Child → Business rule
Explanation:
The parent requires a fixed prefix with an auto-incrementing number, which is handled natively by an autonumber column. The child value depends on the parent value and must generate a sequential suffix per parent, which requires logic based on related records and is best implemented with a low-code business rule.

Question 5

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. You have two tables, account and contact, with a parent-child relationship. Records in the account table can be created in the UI or from an external system integrated with Dataverse by using an Azure Function. When a user creates a record in the account table, a default record in the contact table must be created automatically. You need to implement a process to create the contact records. Solution: Create a plug-in that runs when the account record is created. Use the Organization service to create the contact record. Does the solution meet the goal?

A. Yes
B. No
Show Answer
Correct Answer: B
Explanation:
A create plug-in runs for all account creations regardless of source (UI or external integration). The requirement is to create a contact only when a user creates an account. The proposed solution does not include logic to distinguish user-created records from those created by the Azure Function, so it does not meet the goal as stated.

$19

Get all 406 questions with detailed answers and explanations

  • Instant download HTML + PDF delivered the moment payment clears.
  • Secure Stripe checkout we never see or store your card details.
  • 7-day refund if files are defective see our refund policy.