Courseiva
hardMultiple ChoiceObjective-mapped

Optimizing Power Apps Canvas App Performance Using Delegation in Dataverse

You are the Power Platform administrator for Contoso Ltd., a retail company with 500 employees. The company uses Microsoft 365 and has recently adopted Power Platform. The IT department manages a Power Apps canvas app used by the sales team to track customer interactions. The app connects to a Microsoft Dataverse table named 'Customer Interactions' with columns: CustomerID (text), InteractionDate (date), Notes (text), and SalesPerson (text). The app was working fine for three months, but starting last week, users report that the app loads slowly, sometimes timing out, and the 'Customer Interactions' table shows duplicate records. Upon investigation, you find that the app uses a 'Patch' function to create records, and the 'OnStart' property loads all records from the table using 'Filter(Customer Interactions, SalesPerson = User().FullName)' to show only the current user's records. The Dataverse table has grown to 50,000 rows. Additionally, some users have accidentally created multiple submissions by double-clicking the submit button. You need to resolve the performance and duplicate issues with minimal disruption. What should you do?

Quick Answer

The correct answer is to modify the submit button to disable after the first click and index the SalesPerson column in Dataverse to enable delegation. This works because disabling the button prevents duplicate records from double-clicking, while indexing the column ensures the Filter function delegates—meaning the query runs server-side on Dataverse, returning only the current user’s rows instead of pulling all 50,000 records client-side, which eliminates the slow load and timeout. On the PL-900 exam, this tests your understanding of delegation as a core performance concept for canvas apps connecting to large data sources; a common trap is assuming all filters delegate by default, but only indexed columns on the server side allow it. Remember the mnemonic “D.I.D.”—Disable, Index, Delegate—to recall the three-part fix for slow, duplicate-prone apps.

⚠ Common exam trap

Many candidates think loading all data into a collection (Option C) or using a nightly cleanup flow (Option A) is acceptable, but they miss that delegation and preventing duplicates at the source are the correct, minimal-disruption solutions for performance and data integrity.

Answer choices

Why each option matters

Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.

Correct answer & explanation

Modify the 'Submit' button to set its 'DisplayMode' to 'Disabled' after the first click to prevent double submission, and change the 'OnStart' filter to delegate by ensuring the 'SalesPerson' column is indexed in Dataverse and using 'Filter(Customer Interactions, SalesPerson = User().FullName)' with delegation enabled.

It addresses both performance and duplicate issues directly. Disabling the submit button after the first click prevents double submissions, a common cause of duplicates in canvas apps. Indexing the SalesPerson column in Dataverse ensures the Filter function delegates, meaning the query runs on the server side and only returns relevant rows, drastically reducing data transfer and load times compared to pulling all 50,000 rows client-side.

Answer analysis

Option-by-option breakdown

For each option: why learners choose it and why it is or isn't the right answer here.

  • Replace the 'Patch' function with 'Collect' in the app and use the 'Distinct' function to remove duplicates from the table every night via a Power Automate flow.

    Why it's wrong here

    Using 'Collect' does not prevent duplicates at submission time; a nightly cleanup is reactive and does not resolve the performance issue.

  • Increase the 'Data row limit' for the 'Customer Interactions' table in the app settings to 500 and add a 'Remove duplicates' step in the app's 'OnStart'.

    Why it's wrong here

    Increasing the row limit may help load more records but does not prevent duplicate submissions; the 'Remove duplicates' step would be client-side and inefficient for 50,000 rows.

  • Remove the 'Filter' from 'OnStart' and load all records into a collection, then use 'Filter' on the collection to show current user's records.

    Why it's wrong here

    Loading all 50,000 records into a collection would cause performance issues and timeouts, and does not address duplicates.

  • Modify the 'Submit' button to set its 'DisplayMode' to 'Disabled' after the first click to prevent double submission, and change the 'OnStart' filter to delegate by ensuring the 'SalesPerson' column is indexed in Dataverse and using 'Filter(Customer Interactions, SalesPerson = User().FullName)' with delegation enabled.

    Why this is correct

    This directly addresses both issues: disabling the button prevents duplicates, and delegated filtering improves performance by only loading relevant records.

Visual reference

Client Recursive Resolver Root DNS (13 root servers) TLD DNS (.com, .org, …) Authoritative example.com query IP addr answer

About these practice questions

One of 904 original PL-900 practice questions on Courseiva, each with a full explanation and wrong-answer analysis — not exam dumps or protected exam content. Learn why practice questions differ from exam dumps →

How Courseiva writes practice questions · Editorial policy

Same concept, more angles

1 more way this is tested on PL-900

These questions test the same concept from different angles. Work through them to make sure you can recognise it however the exam phrases it.

Variation 1. A sales team uses a Canvas app to track leads. Users report that the app loads slowly when accessing on mobile devices. Which component should be optimized to improve performance?

medium
  • A.Update the app version number
  • B.Optimize data source connections and queries
  • C.Increase the app icon size
  • D.Change the app's background color

Why B: Optimizing data source connections and queries directly reduces the amount of data transferred and the number of round trips between the Canvas app and its data source (e.g., Dataverse, SharePoint, SQL). On mobile devices, network latency and bandwidth are often constrained, so inefficient queries (e.g., loading all records instead of using filters) cause significant slowdowns. This is the primary performance lever for Canvas apps, as per Microsoft's guidance on app optimization.

JA

Written by Johnson Ajibi, MSc IT Security

Senior Network & Security Engineer · founder of Courseiva

This PL-900 practice question is part of Courseiva's free Microsoft certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the PL-900 exam.