AB-400 practice questions
Microsoft · AB-400 · 300 questions
Original practice questions for the Microsoft AB-400 exam (Extending Microsoft Power Platform Solutions with Code and AI), covering building Power Platform solutions, extending the user experience, extending Microsoft Power Platform with code, and developing integrations, written to the official AB-400 study guide.
This course contains the use of artificial intelligence.
About the AB-400 exam
- Time allowed
- 1 hour 40 minutes
- Questions
- not published (Microsoft associate exams typically 40-60)
- Passing score
- 700
- Format
- Microsoft role-based exam
Schedule this exam The certification this earns
Exam details published by the vendor, checked 7 October 2026. Vendors change fees and formats without notice — confirm on the vendor's own page before you book.
Practice Quizzes
Test your knowledge with standard 20-question practice sets.
Quiz 1
Quiz 2
Quiz 3
Quiz 4
Quiz 5
Quiz 6
Quiz 7
Quiz 8
Quiz 9
Quiz 10
Quiz 11
Quiz 12
Quiz 13
Quiz 14
Quiz 15
Browse by Domain
Study specific topics at your own pace.
Build Microsoft Power Platform solutions · 55 questions
- A requirements workshop for a field-inspection solution produced three items: inspectors capture results on tablets with no connectivity at remote sites, roughly 200,000 product rows arrive from an ERP system every night, and each failed inspection needs a two-stage manager approval with notifications. Which mapping of requirement to component type is the most appropriate design?
- A solution validates that a discount column never exceeds 30 percent by using a JavaScript web resource registered on the main form's OnSave event. An integration that creates rows through the Dataverse Web API keeps loading discounts above 30 percent without any error. What change gives the architecture the enforcement it needs?
- An Azure Functions app must read and update Dataverse rows every 15 minutes with no signed-in user. Security requires that the service not use any person's account, not consume a user license, and not store a user password. Which authentication design meets these requirements?
- A developer is building a custom connector for an internal REST API that is protected by Microsoft Entra ID. Auditors require every call to run with the identity of the person using the app or flow so that the API can apply that user's own permissions. Which security configuration should the connector use?
- A team configured server-to-server authentication: the Microsoft Entra ID app registration issues tokens for the correct environment URL, and an application user linked to the app exists in the environment. Every Web API request now returns an error stating that the principal is missing a privilege. What is the most likely fix?
- A requirement states that the Contract End Date column must have a value whenever a contract's status is Approved. The rule must apply on model-driven forms and must also stop rows that arrive through the Web API or data imports, and the team wants no custom code. Which design meets the requirement out of the box?
- A parent Project table must display the total of the Amount column across its related Expense rows. A developer proposes a plug-in on Expense create, update and delete to maintain the total. The business accepts that the total can lag by a few hours, and the team wants to avoid custom code. What should the developer use instead?
- A rule says a purchase order cannot be saved with a supplier that is on a blocked list. The rule must apply to users on forms, to integrations calling the Web API, and to bulk imports, and a violating save must leave no partial changes behind. Where should this logic be implemented?
- When a new support case is created, a message must be posted to a Teams channel and a ticket must be opened in an external service desk through its REST API. The user's save must not wait for either call, and citizen developers on the support team must be able to maintain the logic. Which approach fits best?
- Users of a model-driven app ask that the Competitor Name column appear only when the Lost Reason column is set to Competitor, and that it update instantly while they fill out the form. Which implementation approach is appropriate for this requirement?
- A manufacturer streams device telemetry into Dataverse, producing millions of short-lived rows per day. Ingestion must scale horizontally without slowing the transactional tables, and each row must disappear automatically a set number of days after its last change, without any scheduled cleanup job. Which table design fits?
- Customer order history must remain in an existing external SQL Server database, which stays the system of record. Users still need to see these orders as rows in model-driven views, open them on forms and select them in lookups, without copying the data into Dataverse. Which option meets the requirement?
- A solution cloud flow uses the Microsoft Dataverse connector and the HTTP connector. After a tenant administrator publishes a new data policy, the flow is suspended and can no longer be saved. What is the most likely cause?
- A plug-in registered to run in the context of the calling user retrieves open opportunities for a report. For some users the plug-in returns all open opportunities in the company, while for others it returns only those they own or those in their own business unit. What explains the difference?
- A cross-business-unit project team of eight people needs to read and update twelve specific account rows owned by another business unit. Their security roles must stay unchanged, and no one should gain access to any other accounts. Which approach meets the requirement?
- A finance solution calculates tax on invoices. Auditors require that the same invoice inputs always produce exactly the same tax amount and that the logic behind each result can be reviewed line by line. How should the developer implement the calculation?
- Incoming customer emails arrive in many languages and writing styles. Each must be summarized and assigned to one category from a fixed list of eight before a cloud flow routes it to a queue. Which design is most appropriate?
- A team owns a mature React single-page application with its own Vite build, component library and unit tests. They want it to run on Power Platform, call Dataverse and other connectors, and be governed by the platform's sharing and data policy controls, without rewriting the UI. Which option should they choose?
- A rich slider-and-gauge input must replace the standard number control for a Risk Score column on many model-driven forms across several tables. It must bind to the column, raise changes like a native control, and be configurable per form through properties. Which component type is the right fit?
- A maker wants to describe a complete page in natural language, for example a page that lists overdue invoices with filters and a summary panel, and have Power Apps produce that page inside an existing model-driven app for further refinement. Which capability matches this request?
- An HR team of business makers must build a question-and-answer agent over their policy documents, publish it to Microsoft Teams, and maintain its topics and knowledge sources themselves with minimal code. Which platform should they build the agent on?
- A pro-code engineering team is building an agent that must use a specific model deployment they choose, run custom orchestration logic written in Python, and be hosted and scaled under their own Azure governance. Power Platform data will be reached later through tools. Which platform best fits?
- An address-entry experience that shows suggestions in a dropdown as the user types is implemented as JavaScript copied onto twelve forms. The copies have drifted apart, and one copy injects its dropdown by editing the form's HTML. How should the developer redesign it as a reusable component?
- Several tables' forms need the same helper functions for formatting phone numbers and validating postal codes. The developer wants one maintainable client-scripting design that avoids global name collisions with other solutions' scripts. Which design should the developer use?
- Two requirements arrive for the same model-driven app: a full dashboard-style page that summarizes open work across several tables, and a star-rating control for the Satisfaction column on the case form. Which pairing of component types best matches the scope of each requirement?
- Makers across several departments need to call an internal REST API, which has an OpenAPI definition, from canvas apps and cloud flows. IT wants authentication configured once, the integration shipped in solutions, and its use governed by data policies. Which integration design should the developer deliver?
- An internal inventory API must be usable as tools by agents built in Microsoft Copilot Studio and by agents built in Microsoft Foundry. The team wants agents to discover the available operations and their inputs through a standard protocol rather than custom integration code in each agent. What should the team design?
- A new MCP server exposes six tools for order management. During testing, the Copilot Studio agent connected to it keeps calling the get-order-status tool when users ask to cancel an order, even though a cancel tool exists. What should the developer change first?
- A pricing operation must be callable from canvas apps, from cloud flows through the Dataverse connector, and from the Dataverse Web API as a named message with typed inputs and outputs. The developers want to define it in code, ship it in solutions, and prevent other solutions from registering steps that alter it. What should they design?
- A custom API recalculates the credit limit of exactly one account each time it runs, and callers always know which account they are targeting. The developer wants the Web API call to address that account directly and wants the plug-in to receive it without defining an extra parameter. Which binding should the developer choose?
- A custom API returns a risk summary for a supplier and never changes any data. It will be called only from TypeScript through the Dataverse Web API, and testers want to call it from a browser address bar. How should the developer define it?
- When a capital request row in Dataverse changes to Submitted, a two-stage approval must start: the department head approves first, then finance. Approvers must be notified in Microsoft Teams and Outlook, and the process can take several days. Which automation design should the developer use?
- A Copilot Studio agent helps employees request equipment. Fulfilment always follows the same five steps: check budget, create the order, reserve stock, notify the manager, and log the request. The business wants these steps to run identically every time the agent invokes them. How should the developer design this?
- Account changes in Dataverse must be delivered to three independent Azure consumers: a billing service, a data warehouse loader and an audit service. Each consumer must receive every change, even if it is offline for several hours, without slowing users' saves. Which outbound integration design meets this?
- Every night an external system delivers about 300,000 product price updates. The current design runs one cloud flow per record, which takes hours and regularly hits service protection limits. Which redesign best addresses throughput and reliability?
- A development team is deciding whether to run its new internal web interface as a Power Apps code app or to host it independently in Azure App Service. Which benefit does the code app option provide that independent hosting would not provide on its own?
- A developer has an existing TypeScript web app with its own component library. It must now read and write Dataverse rows and look up users through the Office 365 Users connector, and it must run on Power Platform under the environment's governance. What is the appropriate approach?
- A Copilot Studio agent must let employees update the status of their own Dataverse opportunity rows. Security requires that the agent never change a row the employee could not change in the model-driven app. How should the developer configure the agent's Dataverse action?
- A Copilot Studio agent tells sales staff the current stock level and price of products, but its answers come from facts pasted into its instructions months ago and are now wrong. The live values are maintained in Dataverse tables. What should the developer do?
- An operations team wants a single place to analyse telemetry from a production environment's model-driven apps, Dataverse plug-in executions and cloud flow runs, with their own retention and custom queries. The environment is a managed environment. What should the developer design?
- A support team wants an email when a production cloud flow's daily run success rate falls below 95 percent. The environment is a managed environment, the team has no Azure subscription, and they want to set this up as environment administrators. Which approach meets the requirement?
- A code app sends client-side telemetry to an Application Insights resource, and page views and dependency calls appear as expected. However, the same resource contains no Dataverse diagnostics or plug-in data for that environment. What is the most likely reason?
- Importing a managed solution into the test environment fails with a message that a required component is missing: a custom column on the account table that one of the solution's forms references. The column exists in the development environment. How should the developer resolve this?
- Before deleting a custom column from a table, a developer must know which forms, views and other solution components reference it, so that nothing breaks after the deletion. Which approach should the developer use?
- A large solution is being split into a core solution containing shared tables and security roles, and three feature solutions whose forms, views and flows use those tables. All solutions are deployed as managed. Which deployment rule must the team follow?
- A solution cloud flow calls an external API whose base URL is different in development, test and production. The URL must change per environment during deployment, without editing the flow, and the deployment tooling should prompt for or supply the value at import. What should the developer use?
- A developer updated an environment variable's default value from an old API URL to a new one and imported the updated managed solution into test. A flow in test still calls the old URL. The variable already had a value set in test from an earlier deployment. What is the cause?
- A custom connector needs an API secret that differs in each environment. The secret must not be stored in the solution, in the connector definition or as plain text in Dataverse, and it already lives in Azure Key Vault in the same tenant. What should the developer use?
- A bug fix to a form was shipped in an updated managed solution and imported into production without errors, but users still see the old form behaviour. Someone had previously edited that form directly in production. What should the developer do?
- Two managed solutions from different vendors are installed in an environment, and both change the maximum length of the same text column on the account table. Solution A was installed first and Solution B second, and nobody has made unmanaged changes. Which maximum length does the column use at run time?
- A team is setting up Power Platform Pipelines to move a solution from a development environment through test to production. The solution contains connection references and environment variables, and each target environment needs its own connection and variable values. Which setup meets the requirement?
- An organization uses Power Platform Pipelines. Every deployment to the production stage must pause after it is approved so that a change-management ticket can be validated by custom logic and a final approval collected before the solution is imported. How should a developer implement this?
- A developer is building an Azure DevOps pipeline with Microsoft Power Platform Build Tools that captures a solution from the development environment into a Git repository after each change. Which task order produces source-controlled solution files?
- A release pipeline in Azure DevOps uses Microsoft Power Platform Build Tools to import solutions into a production environment that enforces multifactor authentication for all interactive users. Which authentication approach should the pipeline's service connection use?
- A company wants its Azure DevOps release pipeline built with Microsoft Power Platform Build Tools to stop automatically when a solution contains code or configuration issues above an agreed severity, and to deploy only managed solutions to test and production. What should the developer configure?
Extend the user experience · 87 questions
- A developer inherits a model-driven app form script that reads and sets column values through Xrm.Page in an OnLoad handler. The script must be modernized to the supported Client API pattern. What change should be made?
- In a model-driven app, a form script sets the value of a column that is read-only on the form whenever another column changes. The new value appears on screen, but after saving, the stored value in Dataverse is unchanged. What should the developer add to the script?
- On the account form of a model-driven app, a whole tab named tabpartner must be hidden whenever the Account Type column is set to Partner. Which Client API call hides the tab?
- A developer writes formContext.getAttribute("telephone1").setVisible(false) to hide the Business Phone field on a form, and the browser console reports that setVisible is not a function. What is the cause?
- A JavaScript function must run whenever the Credit Limit column changes on the account form, and it needs the form context to read other columns. The team wants the registration to be visible to makers and deployed with the solution. Which approach meets these goals?
- A developer registers a new OnLoad handler, function onLoad(executionContext), on a model-driven form. When the form opens, the script throws because executionContext is undefined on the first line, which calls executionContext.getFormContext(). What is the most likely cause?
- On a model-driven form, an OnSave handler must call a Dataverse custom API to check for duplicate contracts and the save must wait for that server call to finish before it proceeds. Which implementation follows the supported Client API pattern?
- A model-driven form script calls formContext.getAttribute("revenue").addOnChange(recalc) inside a handler registered with formContext.data.addOnLoad. Users report that after they save the record, recalc runs twice for every change, and three times after a second save. What explains this?
- A form script on the account form must retrieve the active cases for the current account, returning only the case title, case number and priority. Which Client API call meets the requirement with the least data transferred?
- A model-driven app script must create a new account together with a new primary contact in one Xrm.WebApi request so that both rows are created in a single operation. How should the script do this?
- A form script calls Xrm.WebApi.updateRecord("opportunity", id, { "parentaccountid": "ACCOUNTGUID" }) to set the Account lookup, and the request fails with a bad request error. How should the data object be written?
- A JavaScript command in a model-driven app must call an unbound Dataverse custom API named contosoRecalculateTerms that takes a string parameter. The developer wants to use the Client API rather than building a raw HTTP request. What must the request object passed to Xrm.WebApi.online.execute provide?
- A modern command on the main grid of a model-driven app opens a review page for one selected account, and the button must be visible only when exactly one row is selected. Which Power Fx formula should the Visible property use?
- A modern command on the opportunity form must call a Dataverse custom API and then open a dialog based on the response, which the team cannot express in Power Fx. How should the developer configure the command's action?
- Users of a model-driven app need a button on the case grid that sets the Escalated column to Yes on every selected row. The team wants to avoid writing and maintaining JavaScript. Which OnSelect formula for a modern command meets the requirement?
- A developer adds a modern command with a Power Fx Visible formula to the contact table using the Main grid command bar location. The button works on the contact list, but it never appears on the Contacts subgrid on the account form, even when rows are selected. What is the cause?
- From a JavaScript command on the account form, a developer must open a custom page named contosocreditreview7b2c1 as a centered modal dialog that receives the current account's ID. Which Client API call does this?
- A model-driven app needs three kinds of message from script: a warning banner at the top of one record's form, an error next to the Credit Limit field, and an app-wide message that stays visible as users move between forms and views. Which combination of Client API methods is correct?
- A JavaScript command on the case form deletes all draft activities linked to the case. Before deleting anything, the script must ask the user to confirm and must proceed only if the user agrees. Which implementation is correct?
- From the account form, a developer must open a new contact form in which the Company Name lookup is already set to the current account so the user only fills in the remaining fields. Which Client API approach is correct?
- A developer is building a standard field code component with the Power Apps component framework. The component must create its input element once, attach event listeners to it, and keep a reference to the callback that tells the framework its outputs changed. In which lifecycle method should this setup happen?
- A code component bound to a numeric column updates its own display when the user drags a slider, but the column value on the form never changes and the record saves the old value. The component stores the new value in a private field and returns it from getOutputs. What is missing?
- A field code component renders a formatted value and also adapts its layout to the space the form gives it. A developer asks when the framework calls updateView and what the method should do. Which description is correct?
- Users report that a model-driven form with a custom code component becomes slower each time it is opened and closed during a session. Profiling shows window resize listeners and a polling interval created by the component are still running after the form closes. What should the developer change?
- A developer is configuring the manifest of a code component that will be placed on a text column in a model-driven form. The component must display the column's current value and write the user's edits back to that same column. How should the property be declared?
- A rating code component must be configurable on whole number, decimal, floating point and currency columns without maintaining four copies of the component. How should the manifest support this?
- A code component calls context.device.captureImage and context.webAPI.retrieveMultipleRecords. The TypeScript compiles and the component builds without warnings, but in the model-driven app both calls fail at runtime as unsupported or unavailable. What is the most likely fix?
- A team is building several React-based code components for a model-driven app. Each component currently bundles its own copy of React and Fluent UI, which makes the bundles large and slows form loading. What should the developer change in each manifest?
- A developer converts a standard code component to a React-based virtual component that uses the platform's React library. Which change to the component class is required?
- A dataset code component on a model-driven app view renders each row as a card. Users sort the view by Estimated Revenue, but the cards appear in a different, inconsistent order. How should the component read the rows?
- A dataset code component replaces a subgrid that can contain several hundred related rows, but it only ever shows the first page of rows. The developer wants users to be able to load more rows on demand. Which approach should the component use?
- A developer adds two new properties to the ControlManifest.Input.xml of a code component, but TypeScript reports that the properties do not exist on IInputs when the code references context.parameters for them. What should the developer do?
- A developer starts a new field code component from scratch and must ship it inside a solution that can be imported into a test environment. Which sequence of steps with the Microsoft Power Platform CLI is correct?
- A developer is changing a code component several times an hour and wants each build to appear in the shared development environment for testing on a real form without creating a solution project or importing zips. Which approach fits this need?
- A solution containing a new field code component has been imported into an environment. The component should now replace the default text box for the Account Number column on the account main form for web users. What must be done?
- A developer fixes a bug in a code component, rebuilds the solution and imports it into the test environment. The import succeeds, but forms in test still run the old behavior even after a browser refresh. What is the most likely cause?
- A field technician app built as a model-driven app needs a code component that lets users take a photo with the device camera and attach it to the current record. Which implementation is correct?
- A code component on a model-driven form must let users choose one or more existing contacts using the standard Dataverse lookup experience, with the same search and recent items that users see elsewhere in the app. Which framework API should the component call?
- A code component on the account form of a model-driven app must show the number of open opportunities for the current account. The developer wants the query to run as the signed-in user and respect their security roles. How should the component retrieve the data?
- A code component on the case form displays a small summary of the case's primary contact, and its labels must match the display names of the contact table's columns in the user's language, including any renamed columns. How should the component obtain the labels?
- A developer is building a Power Apps code app that must display the signed-in user's display name and job title from the Office 365 Users connector. The environment allows code apps and the developer is signed in with the Power Apps CLI. What is the correct approach?
- A code app that uses the Office 365 Users and SharePoint connectors works for the developer. A tester the app is shared with dismissed the connection prompt on first launch, and now every connector call in the app fails for that tester only. What is the most likely explanation and fix?
- A developer added a SQL table as a data source to a code app, and the CLI generated model and service files in the project. A teammate wants to add a custom validation method directly inside the generated service file and change a property type in the generated model. What should the developer advise?
- An administrator asks a developer whether the organization's data policies, which block combining business and non-business connectors, also govern Power Apps code apps that call connectors from JavaScript. Which answer is correct?
- A developer must add the Dataverse account table to a Power Apps code app and show a list of accounts in the USA with only the name, account number and city columns. Which approach follows the documented code app pattern?
- A code app lists rows from a Dataverse case table through its generated service. An administrator sees 480 rows, but a tester signed in with a restricted account sees only the 35 cases that the tester owns, and no error is raised. The code passes no filter to the query. What explains the difference?
- A developer adds a new column, cr5a2priorityscore, to a Dataverse table that a code app already uses as a data source. The column appears in the maker portal, but TypeScript reports that the property does not exist on the generated model. What should the developer do?
- A team is starting a code app for internal audit findings. Findings relate to departments and controls, each finding must be visible only to its owning team, and every field change must be recorded with who changed it and when. Which data platform best meets these requirements with the least custom code?
- A code app has the Dataverse account table added as a data source. The developer must let users create, edit and remove accounts from a React form without writing raw HTTP requests. Which approach fits the code app model?
- A code app list screen calls ContactsService.getAll() with no options and renders only full name, email and city for active contacts. The screen takes several seconds to load, and the network trace shows very large responses. What change best improves load time?
- A code app form shows captions for the columns of a Dataverse table. Users in France and Germany see English captions because the developer hard-coded them, and customizers rename column display names from time to time. How should the developer source the captions?
- A code app creates account rows and must set each account's primary contact. The developer sets primarycontactid to the contact's GUID string in the create payload, and Dataverse rejects the request. What is the correct way to set this lookup?
- A code app shows a grid of Dataverse invoice rows. When a user selects a row and clicks Recalculate, the app must run a bound custom action named cr5a2RecalculateInvoice on that row. How should the developer wire this up?
- A developer calls a custom message from a code app and reviews the traffic in the browser network trace. The message is defined as a custom API with IsFunction set to true, and it has no side effects. How is it invoked over the Dataverse Web API?
- A code app must stamp each new request row with the signed-in user's Dataverse systemuser ID and their business unit ID. The developer wants one Dataverse call that returns both values for the current caller. Which approach should be used?
- A code app calls a Dataverse custom API. Sales managers can run it, but other users receive a privilege error, even though all of them can read and write the tables the API touches. The custom API definition has ExecutePrivilegeName set. What should the developer check?
- A code app must start an approval process in Power Automate when a user submits a request and display the approval reference that the process returns. Which setup supports this from the code app?
- After a user clicks Submit in a code app, an order must be written to SAP through a gateway connector, a Teams message posted and an Outlook email sent. If the user closes the browser partway through, the remaining steps must still complete. What is the best design?
- A code app runs an instant cloud flow through its generated service. The flow's run history shows success and the expected value is computed, but result.data in the app is always empty. What is the most likely cause?
- A code app calls two instant cloud flows. The developer plans to move the app from development to test with Power Platform Pipelines. What must be true for the app and its flows to deploy together cleanly?
- A code app needs an Ask the assistant panel that sends a user's question to an existing, published Copilot Studio agent and shows the agent's reply. How should the developer connect the app to the agent?
- A code app must answer employees' free-text questions about HR policies. The HR team already maintains a published Copilot Studio agent grounded on those policy documents and updates its knowledge sources regularly. What is the best approach for the developer?
- A maker builds a Copilot Studio agent and confirms that it answers correctly in the Copilot Studio test pane. The developer adds the Copilot Studio connector to a code app and calls ExecuteCopilotAsyncV2 with the correct agent name, but the call returns no agent response. Which step was most likely missed?
- A developer is designing the data contract between a code app and a Copilot Studio agent that the app calls through ExecuteCopilotAsyncV2. Which description matches what the app sends and what it receives?
- A code app reads a SharePoint list as a data source. In development it must use the Dev site and list; after the solution is deployed to test and production, it must use each environment's own site and list without rebuilding the app. How should the developer configure the data source?
- A code app reads its SQL Server database name from a config.json file that Vite compiles into the bundle. Each move from test to production requires editing the file, rebuilding and pushing, and once the wrong database shipped. What change best removes this risk?
- A code app's data source references an environment variable through @envvar:. After the solution is imported into test, the app still points at the development SharePoint site. The variable's default value in the solution is the Dev site URL, and no other value was set. What is the fix?
- A code app's data sources use @envvar: references to two environment variables. The team deploys with Power Platform Pipelines from development to test. Which packaging keeps the deployment clean?
- A code app calls a partner REST API at https://api.fabrikam.com by using fetch. After deployment, the browser console reports that connecting to the URL violates a Content Security Policy directive. The environment uses the default code app CSP. What should an environment administrator change?
- Security requires the code app CSP in production to stay at its defaults, with connect-src left at 'none'. A code app still needs data from an external REST service that publishes an OpenAPI definition. Which approach meets both requirements?
- A code app loads a charting library from https://cdn.contoso.com through a script tag and also calls https://data.contoso.com with fetch. With CSP enforced at the environment defaults, both are blocked. Which CSP change allows both while following directive semantics?
- A code app calls an external API from the browser. It works in the development environment, where an administrator added the API origin to connect-src. After the solution is deployed to test with Power Platform Pipelines, the same calls fail with CSP violations. What explains this?
- Operations wants page views and unhandled browser exceptions from a production code app sent to Azure Monitor Application Insights. The team has already created an Application Insights resource. What must the developer add to the code app?
- Product owners want a daily count of how often users click Approve in a code app, with the request's region attached to each occurrence. Application Insights is already initialized in the app. What should the developer add?
- A code app initializes Application Insights with a valid connection string, yet the resource receives no telemetry from production. The browser console shows errors stating that connecting to the Application Insights ingestion URL violates a Content Security Policy directive. What should be done?
- Users report that one action in a code app is slow. The team wants to line up the app's Application Insights custom events with Power Platform's own telemetry for the same user session. Which value should the developer attach to every custom event?
- A developer has finished a React code app that was initialized with pa app init and wants to publish its first version to the environment. Which sequence is correct?
- A code app must be available to the 400 members of the Finance department, whose membership changes weekly. IT maintains a Microsoft Entra security group for Finance, and access must follow that membership without manual upkeep by the app team. What is the best way to grant access?
- A code app was shared with a group of warehouse users. Users who hold only Microsoft 365 E3 licenses cannot open it, while users assigned Power Apps Premium can. The tenant has no pay-as-you-go plan, and auto-claim is turned off. What is the cause?
- A team published a code app with pa app push to a development environment that has Dataverse. They now need a repeatable promotion path to test and production, with dependency and connection reference checks before each deployment. What is the supported approach?
- In a production code app, a SharePoint connector call fails for some users while working for others, and the app shows only a generic error message. The developer needs the actual status code and error body returned for an affected user. What should the developer do?
- A user reports that a code app shows empty grids. In the browser network trace, requests to the environment's dynamics.com endpoint return HTTP 401, while the app shell loads normally. How should the developer interpret this?
- An exception in a deployed code app shows a stack trace pointing into a single minified JavaScript file at line 1, column 48211. The developer needs to find the TypeScript line that threw. What is the most effective approach?
- A developer is restyling several screens in a code app and wants to see each change against real environment data within seconds, without publishing a new version for every edit. What should the developer do?
- A React and Vite code app has grown to 30 routes. Application Insights shows a high time to interactive because the browser downloads one 4 MB JavaScript bundle before showing the home screen. Which change most directly reduces initial load?
- Each row in a code app grid renders a dropdown of 60 cost centers, and every dropdown calls CostCentersService.getAll when it mounts. Cost centers change about once a quarter. The network trace shows hundreds of identical requests per screen. What is the best fix?
- A code app screen shows 200 orders. For each order, it loops over the rows and calls CustomersService.get with the order's customer ID to display the customer name, issuing 200 extra requests. What pattern should replace the loop?
Extend Microsoft Power Platform · 118 questions
- A synchronous plug-in must set cr5a2fullcode on an inspection row, combining two other columns, whenever the row is created. The value must be saved with the row in the same operation, without issuing a second update request. Which stage should the step use?
- A plug-in must block deletion of any account that still has open invoices, returning a clear message to the user. The check should run before the database transaction begins so that a rejected request never starts one. Which stage meets this requirement?
- When a project row is created, a plug-in must create five milestone rows, each with a lookup to the new project. Which stage gives the plug-in the new project's ID, and where does it read it?
- A synchronous PostOperation plug-in on Update of the case table sets Target["cr5a2lastreviewed"] to the current time. The plug-in runs without errors, but the column is never saved. What is the correct fix?
- A developer is writing one plug-in class registered on Create, Update and Delete of a table. How does the plug-in get the record being processed from IPluginExecutionContext for each of these messages?
- A synchronous PostOperation plug-in on Update of the opportunity table updates the same opportunity to set a calculated score. Saving any opportunity now runs repeatedly until Dataverse stops it with an infinite loop error. What is the appropriate guard in the plug-in?
- A PreOperation plug-in on Create of the order table calculates a pricing tier that a separate PostOperation plug-in on the same message must use. The tier must not be stored in a column. How should the value be passed between the two steps?
- A plug-in step is registered to run in the context of a dedicated integration user rather than the calling user. An audit row that the plug-in writes must record the human who saved the original record. Which execution context property gives that person's ID?
- A synchronous PreOperation plug-in on the opportunity Create message checks the estimated revenue against a discount policy. When the policy is violated, the save must be cancelled for every caller, including the Web API, and the person using the model-driven form must see a readable explanation instead of a generic error. What should the plug-in do?
- A developer is registering a synchronous PreOperation step on the Update message of the account table. The plug-in recalculates a risk score and must run only when the creditlimit column changes, not when a user edits the phone number, address or any other column. How should the step be configured?
- Users report that saving any change to a contact, even a single phone number edit, takes several seconds. The plug-in trace log shows a synchronous Update plug-in that validates the contact's parent account running on every save, although its code reads only the parentcustomerid column. What is the most likely cause?
- A synchronous PreOperation plug-in on the Update message of the invoice table must calculate a total from the quantity and unitprice columns. When a user changes only quantity, the code throws a KeyNotFoundException reading unitprice from the Target entity. What is the correct explanation and fix?
- An Update plug-in on the account table must write an audit note only when the creditlimit value actually changes, recording both the previous amount and the new amount. Some integrations send creditlimit in every update even when the value is the same. What should the developer register so the code can compare the two values?
- A developer plans plug-in steps on the Update message of the case table and wants to read the full row, including columns that were not part of the update, as it looks after the save has been applied. In which step registration can a post-image be configured and populated?
- A developer registers a pre-image named PreImage on a PostOperation Update step of the contact table and selects the emailaddress1 column. At runtime the code calls context.PreEntityImages["Before"] and throws a KeyNotFoundException even though the step fires correctly. What is the most likely cause?
- A developer registers a pre-image on a PreOperation step for the Create message of the lead table so the plug-in can see the lead's values before they are saved. At runtime the PreEntityImages collection is always empty. What explains this behavior?
- A plug-in on the Create of a service request must create a follow-up task. Business rules require that the task creation respect the security role of the user who submitted the request, so it fails if that user cannot create tasks. How should the plug-in obtain its IOrganizationService instance?
- A PostOperation plug-in on the account Update message must read the email address of every active contact whose parentcustomerid is the updated account, then flag the account if any address is missing. Some accounts have hundreds of contacts. Which approach should the developer use?
- A PostOperation plug-in on the order table creates one shipment line per order line. A developer proposes wrapping the line creations in an ExecuteMultipleRequest to reduce overhead, as they do in their nightly console import. What is the recommended guidance for this plug-in?
- A synchronous PostOperation plug-in on the expense report Create message creates a related approval record. It works for administrators, but salespeople receive an access-denied error when saving expense reports. Policy states that approval records must always be created, even though salespeople have no privileges on the approval table. What should the developer change?
- A plug-in intermittently fails in production with a generic business process error, and the team cannot attach a debugger there. The developer wants the plug-in to record its execution path and key values so the details can be reviewed after a failure. What should the developer implement?
- After a contract row is created in Dataverse, a plug-in must call a partner's REST API that sometimes takes many seconds to respond. Users must not wait for the call when they save, and the result is written back to the contract later. How should the developer register and code the plug-in?
- A plug-in class stores the current account's name in a private instance field during Execute and reads it later in the same method. Under load, the plug-in occasionally writes one user's account name onto another user's record. What is the cause, and how should the developer fix it?
- A synchronous plug-in on the case table retrieves the related customer account to read two columns, accountnumber and creditonhold, and profiling shows the retrieval is a large share of the save time. The code currently calls Retrieve with new ColumnSet(true). What change best improves performance without changing the logic?
- A developer is defining a custom API named contosoGetOrderStatus that callers invoke with the ID of an order and that returns the order's status as text. The order ID must always be supplied. How should the request parameter and response property be defined?
- A software vendor ships a custom API in a managed solution. Customers' developers must be able to react after the operation completes, for example by sending a notification, but must never be able to change its behavior or cancel it. Which AllowedCustomProcessingStepType value should the vendor set?
- An ISV builds a custom API that only its own model-driven app calls. The team does not want to support other developers taking a dependency on it, so it should not appear in the Web API $metadata document or in generated early-bound classes. Which setting should the team use before shipping the managed solution?
- A developer creates a custom API that recalculates priority for a set of case rows and should be invoked against the cases entity set in the Web API, as in /api/data/v9.2/incidents/Microsoft.Dynamics.CRM.contosoRecalcPriority. Which binding type should the developer select?
- A developer has built a plug-in class that must run synchronously in PostOperation when an account is updated, with access to the account's previous name. Using the Plug-in Registration Tool against a Dataverse environment, in what order should the developer register the components?
- A developer tries to register a single plug-in assembly, not a plug-in package, with the Plug-in Registration Tool. The project targets .NET Framework 4.6.2, the DLL is 2 MB, and it references only the Dataverse core assemblies. Registration is rejected. The project's Signing settings have never been configured. What is the cause?
- A team migrating from an on-premises deployment asks which isolation mode to select when registering plug-in assemblies in their new Dataverse online environment, because their old assemblies were registered with isolation set to None. Which isolation mode applies?
- A plug-in needs a third-party JSON library and an internal helper assembly at runtime, neither of which is present in the Dataverse sandbox. The team previously used ILMerge to combine them, but wants the supported approach. What should the developer do?
- A developer has created a custom API named contosoCalculateDiscount with a request parameter CustomerTier and a response property DiscountPercent. A plug-in class containing the calculation is already registered. How should the developer connect the plug-in to the custom API so it runs as the main operation and returns the result?
- A custom API named contosoCheckCredit defines a String response property with the unique name CreditStatus. Its main operation plug-in runs without errors and the trace log shows the calculated value, but the Web API response always returns CreditStatus as null. The plug-in sets context.OutputParameters["Status"]. What should the developer fix?
- A developer registers an assembly that contains a plug-in class and sets that plug-in type as the Plugin Type of a new custom API. A colleague says the developer must also register a step for the custom API message in the MainOperation stage, or the code will never run. How should the developer respond?
- An organization implements a credit check as a custom process action whose logic lives entirely in a plug-in registered on the action. Administrators have twice deactivated the action by mistake, and other teams have registered synchronous steps that changed its behavior. The developer wants a code-first replacement that avoids both problems. What should the developer build?
- A developer has a custom API named contosoOnOrderShipped that an ERP system calls after it ships an order. Makers must be able to build Power Automate flows that run whenever this happens, and nobody should be able to block or change the ERP's call. Which configuration exposes the event correctly?
- A developer has cataloged a custom API named contosoOnPaymentPosted as a Dataverse business event. A business analyst who does not write code needs to send an email to the finance team each time the event occurs. What should the analyst use?
- A partner system needs to be told when an insurance claim is approved. Approval involves several rule checks across multiple Dataverse rows, and the partner does not want to receive notifications for every field edit on the claim table. Which design best meets the requirement?
- A developer creates a custom API named contosoOnInventoryLow with Async Only processing steps and deploys it in a solution. A maker opens the Dataverse When an action is performed trigger in Power Automate, but the action does not appear in any catalog or category list. What is the most likely cause?
- A Dataverse plug-in must read a signing key from Azure Key Vault each time it runs. The security team prohibits client secrets or certificates stored in plug-in configuration, environment variables or code, and wants access granted through Microsoft Entra ID role assignments. Which approach should the developer use?
- A developer is setting up Power Platform managed identity so a plug-in assembly can call an Azure resource. The plug-in code already requests tokens through IManagedIdentityService. In which order should the remaining setup be completed?
- A plug-in that uses Power Platform managed identity acquires tokens successfully in the development environment. After the solution is imported into the test environment, token acquisition fails with AADSTS700213: No matching federated identity record found. The same signed assembly and Entra app registration are used. What is the most likely cause?
- A plug-in assembly has been linked to a Power Platform managed identity that has access to Azure Key Vault. Inside Execute, how should the plug-in code obtain an access token to call the Key Vault REST API?
- A TypeScript service calls the Dataverse Web API to list active accounts in Seattle, returning only the account name and revenue plus the full name of each account's primary contact, in a single request. Which request meets the requirement?
- An integration sends PATCH requests to the Dataverse Web API at accounts({id}) to update account rows by GUID. If a row has been deleted, the integration must receive an error instead of silently recreating the account with that ID. Which header should the request include?
- A developer creates a contact through the Dataverse Web API and tries to set the parent account by including "[email protected]": "/account(1f8d2c4e-0000-0000-0000-000000000001)" in the body. The request returns 400 Bad Request. What is wrong?
- A Python service uses the Dataverse Web API to create an order header, create three order lines that reference it, and update the customer's last order date. If any of the five operations fails, none of the changes may persist. How should the developer send the requests?
- A team is building a new .NET 8 console application that connects to Dataverse with a Microsoft Entra ID app registration and uses the Organization service programming model with Entity and IOrganizationService. Which client library should the team use?
- A .NET service using the Organization service must return the total estimated revenue of open opportunities grouped by owner, computed by Dataverse on the server rather than by downloading every opportunity row. Which approach meets the requirement?
- A .NET integration using ServiceClient must create a sales order and its order lines so that either all rows are created or none are, with each request executed in sequence. Which request should the developer use?
- A .NET job uses RetrieveMultiple with a QueryExpression to export all contacts from an environment that holds 60,000 of them, but the export file always contains exactly 5,000 rows. The code calls RetrieveMultiple once and writes the returned entities. What should the developer change?
- A nightly integration that updates thousands of Dataverse rows through the Web API starts failing partway through with HTTP 429 Too Many Requests. The code treats any non-success status as fatal and stops the job. What should the developer change?
- A developer writes a C# library that wraps HttpClient to call the Dataverse Web API for a high-volume integration. The developer wants a reusable retry policy for service protection errors. Which policy design follows Microsoft guidance?
- A developer migrates a .NET data loader from raw HttpClient calls to the Dataverse ServiceClient class and asks whether the custom retry code for service protection limit errors must be ported as well. What does ServiceClient do when Dataverse returns a service protection limit error?
- A one-time data migration into Dataverse runs 200 parallel threads under a single application user and constantly receives service protection errors, so total throughput is worse than with fewer threads. Which change best improves throughput?
- A .NET job must create about 400,000 rows in a custom standard Dataverse table as quickly as possible. Source data is validated beforehand, so failures are rare, and the table has a synchronous plug-in on Create. Which approach should the developer use?
- Two integrations update the same Dataverse account rows. Each reads a row, applies changes and writes it back, and they have been silently overwriting each other's edits. The developer wants an SDK for .NET update to fail if the row changed after it was read. What should the developer implement?
- A .NET service updates Dataverse account rows through the Web API. To avoid overwriting other people's edits, it retrieves each row, stores the @odata.etag value, and later sends a PATCH with an If-Match header carrying that value. Some PATCH requests now fail with HTTP 412 Precondition Failed. What does the 412 response indicate, and how should the service respond?
- A developer is running a one-time migration that creates two million contact rows in Dataverse through the SDK for .NET. The data is already validated, and the synchronous custom plug-ins registered on contact Create only enforce rules the source already meets. The migration must run as fast as possible without disabling the plug-in steps for other users. What should the developer do?
- A nightly daemon written in C# runs without any signed-in user and must call the Dataverse Web API for the environment https://contoso.crm.dynamics.com. The app registration has a client secret, and an application user exists in the environment. When the daemon requests a token with MSAL using the client credentials flow, which scope should it request?
- A team registers an application in Microsoft Entra ID and grants it the Dynamics CRM API permission. A background service acquires an app-only token for https://fabrikam.crm.dynamics.com, and the token's audience and issuer are correct, yet every Web API call returns 401 Unauthorized. Other apps work in the same environment. What is the most likely cause?
- A support engineer runs an internal Windows desktop tool that reads and updates Dataverse case rows. Every change must be audited as the person using the tool, and each user must see only the rows their own security roles allow. How should the tool authenticate to Dataverse?
- A developer copies the access token from a working Microsoft Graph call and uses it as the bearer token for a Dataverse Web API request to https://northwind.crm.dynamics.com. The Graph call succeeds, but Dataverse rejects the request as unauthorized. The user has a valid Dataverse security role. What is the cause?
- A client application calls a Dataverse custom API that generates a large export file, and the call often takes long enough that proxies drop the open HTTP connection. The team wants to submit the request, release the connection immediately, and collect the result later, without rewriting the custom API. Which approach should the developer use?
- A Python service submits a Dataverse custom API as a background operation and receives a 202 Accepted response. The service must later learn when the operation has finished and whether it succeeded, without keeping the original connection open. Which approach meets this requirement?
- A C# console app already builds an OrganizationRequest for a custom API named contosoRecalculateTerritories and sends it with IOrganizationService.Execute. The developer now wants Dataverse to process this same request in the background and return immediately. How should the developer change the code by using the SDK for .NET?
- A background operation submitted for a custom API shows a status reason of Failed when the developer retrieves its backgroundoperation row. The developer needs to understand why the operation failed in order to fix the custom API. Where should the developer look first?
- A data science team works entirely in Python notebooks. They need to read Dataverse rows into pandas DataFrames, write cleaned values back, and occasionally create a custom table, without learning C# or hand-building OData requests. Which option should the developer recommend?
- A Python job runs in an Azure container app and uses the Dataverse SDK for Python. The security team forbids storing passwords or client secrets in code or configuration, and the job must still authenticate to Dataverse. How should the developer supply credentials to the SDK client?
- A .NET plug-in project has grown to dozens of tables, and late-bound Entity code keeps breaking from misspelled logical names that only fail at run time. The team wants strongly typed classes for its tables, columns, and choices generated from the environment's metadata. Which Power Platform CLI command should the developer use?
- A team is building a .NET 8 worker service that performs thousands of Dataverse operations per hour. One developer proposes hand-writing HttpClient calls to the Web API, while another proposes the Dataverse ServiceClient from the SDK for .NET. The team wants less custom plumbing for authentication, token refresh, and throttling. Which reasoning supports choosing the SDK?
- When a project row's status changes to Approved, the solution must call three external services, aggregate their responses, and write results back to Dataverse. The processing can take several minutes, and the user saving the row must not wait for it. Which design should the developer choose?
- An onboarding process for Dataverse partner rows must call an external verification service, wait up to several days for a human approval delivered by an external event, and then provision accounts in two systems. Progress must survive restarts, and completed steps must not run twice. Which Azure Functions capability fits this requirement best?
- A Power Automate cloud flow calls an HTTP-triggered Azure Function that rebuilds a large price list in Dataverse. Small jobs finish quickly, but large jobs fail because the HTTP call times out before the function responds. How should the developer redesign the call?
- An asynchronous Dataverse plug-in enriches each new lead by calling a slow third-party data service, sometimes several times per lead. As volume grows, the plug-in increasingly fails with timeout errors and the system jobs pile up. The enrichment does not have to finish within any fixed time. What should the developer do?
- A reconciliation routine compares Dataverse invoices with an ERP system and must run automatically every night at 02:00 UTC. The team will host it in Azure Functions. Which trigger configuration should the developer use?
- Dataverse is configured with a service endpoint that posts the execution context to an Azure Service Bus queue whenever an order row is updated. The developer must process each message in an Azure Function with built-in retry and dead-lettering for poisoned messages. Which trigger should the function use?
- A telemetry platform must ingest every change to several high-volume Dataverse tables, hundreds of events per second at peak, so that multiple analytics consumers can each read the stream independently at their own pace. Dataverse will post the events through a service endpoint. Which design fits best?
- When a Dataverse support case is created, an external system must be notified immediately through an Azure Function. The team wants Dataverse to call the function directly without a queue, and the endpoint must reject callers that do not present a shared secret. How should the developer configure this?
- An Azure Function app hosted in Azure must create and update rows in Dataverse. The security team prohibits client secrets and certificates in app settings or Azure Key Vault for this workload. What should the developer configure so the function can call Dataverse?
- An Azure Function uses its system-assigned managed identity to read secrets from Azure Key Vault successfully. Using the same identity, it acquires a token for https://contoso.crm.dynamics.com/.default, but every Dataverse Web API call returns 401 Unauthorized. What is the most likely cause?
- A team's Azure Function currently authenticates to Dataverse with an app registration whose client secret is stored in app settings and expires every six months, causing outages when rotation is missed. The function runs only in Azure. Which change best removes the rotation burden?
- An Azure Function written in C# uses the Azure Identity library to get tokens for Dataverse. In Azure it runs with a managed identity; on developer laptops it must use the developer's own Azure CLI sign-in. The team wants the same code in both places with no secrets and no environment-specific branches. Which credential should the code use?
- A cloud flow's Dataverse trigger returns an order row whose discount column is sometimes null. A later step multiplies the price by the discount, and the flow must use 0 when the discount is null instead of failing. Which expression should the developer use for the discount value?
- A cloud flow receives a Dataverse createdon value in UTC and must write it into an email as local time for a team in the Eastern Standard Time zone, formatted as yyyy-MM-dd HH:mm. The result must stay correct when daylight saving time begins or ends. Which expression should the developer use?
- A flow is triggered by an HTTP request whose JSON body sometimes contains customer.address.city and sometimes omits the address object entirely. The flow must read the city when present and continue with a null value when it is missing, without the action failing. Which expression should the developer use?
- A cloud flow reads a quantity field from a SharePoint list column of type text and compares it with 10 in an expression using greater(). Values such as 9 and 15 produce results that are inconsistent or raise type errors. The developer must compare the values numerically. What should the developer change?
- A cloud flow creates a Dataverse row, calls an external API, and updates the row. If any of these steps fails or times out, the flow must log the error to a table and notify an administrator, similar to try/catch in code. How should the developer structure the flow?
- In a cloud flow, a Catch scope runs after a Try scope fails. The administrator notification must include the name and error message of every action inside the Try scope that failed. Which expression should the developer use as the starting point to collect those details?
- A cloud flow uses Try and Catch scopes. When the Try scope fails, the Catch scope logs the error and sends an email, and the run then shows Succeeded in run history. Operations staff need failed runs to show as Failed so their monitoring alerts fire. What should the developer add?
- An Apply to each loop in a cloud flow processes 500 Dataverse rows one at a time and takes too long. Each iteration calls an API and also increments a shared counter variable that is used after the loop. The developer wants iterations to run in parallel without producing wrong results. What should the developer do?
- A cloud flow uses the Dataverse trigger When a row is added, modified or deleted on the case table. It should start only for cases whose priority is High (prioritycode value 1), and the team wants Dataverse to evaluate the filter so that no flow run is created for other cases. How should the developer configure the trigger?
- A cloud flow uses the SharePoint trigger When an item is created or modified on a documents list. The flow should start only when the item's Title contains the text INVOICE, and runs for other items must not be created. The trigger has no built-in filter for column values. What should the developer configure?
- A cloud flow's HTTP action calls a partner API that occasionally returns HTTP 503 during short outages. The developer wants the action itself to retry a limited number of times, waiting longer between each attempt so the partner can recover, before the action fails. How should the developer configure the action?
- A cloud flow uses the Dataverse trigger When a row is added, modified or deleted with Change type set to Modified on the account table. It should react only when the credit limit changes, but it currently runs every time any column on the account is updated. What should the developer change?
- Several cloud flows in a solution need the same customer-matching logic, and the solution is deployed from development to test to production through managed solutions. The developer wants one copy of the logic that every flow can call, with no URLs to update after each import. What should the developer build?
- A parent cloud flow in a solution fails at its Run a Child Flow action with an error stating that the flow can't be used as a child workflow because child workflows only support embedded connections. The child flow uses the SharePoint and Office 365 Outlook connectors. What should the developer change?
- A team notices that the same ten actions, which validate an address, look up a tax region in Dataverse, and format the result, are copied into five different cloud flows. A recent fix had to be applied five times, and one copy was missed. All flows live in one solution. Which change best addresses this?
- A developer is building a child flow that calculates a shipping quote. The parent flow must pass a weight and a destination to the child, and the child must return the quote amount and carrier name to the parent for use in later steps. How should the developer define these inputs and outputs?
- A solution's production cloud flows use a Dataverse connection reference that currently signs in as the developer who built them. The team wants the Dataverse connector connection to authenticate as an application identity instead. What should the developer set up?
- A production solution's cloud flows run their Dataverse actions through a connection reference that uses the personal account of a developer who is leaving the company next month. When the account is disabled, the flows will start failing. Which identity should the connection reference use going forward?
- A developer creates a Dataverse connector connection using service principal authentication with a valid client ID, secret, and tenant ID. When a flow using the connection runs, its List rows action fails with an error indicating the caller has no access to the environment or lacks privileges. What is the most likely cause?
- A cloud flow in production updates opportunity rows through a Dataverse connection reference that uses service principal authentication. An auditor reviewing the rows asks whose name appears in the Modified By column after the flow writes to them. What will the Modified By column show?
- A team is building an agent in Microsoft Foundry that must look up and update Dataverse rows on request, using standard tools rather than custom code for each operation. Copilot Studio is not involved. Which configuration should the developer use?
- A Foundry agent must answer questions across dozens of Dataverse tables whose columns change every sprint. One developer proposes writing and maintaining a custom OpenAPI tool definition for each query the agent needs; another proposes connecting the agent to the Dataverse MCP server. Which reasoning favors the MCP server?
- A developer adds an MCP tool to a Microsoft Foundry agent that points to a Dataverse environment's MCP endpoint. When the agent runs, it reports that no tools are available from the server, and no Dataverse calls succeed. Copilot Studio agents in the same environment use the Dataverse MCP server successfully. What should the developer check first?
- A Foundry agent connected to the Dataverse MCP server should only read data: it may search, describe, and query tables, but it must never create, update, or delete rows or tables. The control must be enforced in configuration, not left to the model's judgment. How should the developer configure the agent's MCP tool?
- A pro-code team is building an internal employee assistant in Microsoft Foundry. The HR department already maintains a published Copilot Studio agent that answers benefits and leave questions from topics and knowledge that HR makers update every week. The assistant must give the same HR answers, and the developers must not take over HR content. What should the developers do?
- A developer will call a Copilot Studio agent from a custom agent's backend by using the Copilot Studio client library with a signed-in user's token. The agent's authentication is set to Authenticate with Microsoft, it was created yesterday, and so far it has only been tried in the Copilot Studio test pane. What must be done on the Copilot Studio side before the calls can reach the agent?
- A custom agent's background service calls a published Copilot Studio agent through the Copilot Studio client library. The service obtains its token with the client credentials flow from an app registration that has a client secret, and every call is rejected as unauthorized. The Copilot Studio agent uses Authenticate with Microsoft. What is the most likely fix?
- A company wants one employee assistant that answers HR, IT and finance questions. Each department already owns a published Copilot Studio agent and must keep releasing it on its own schedule. Developers will build the assistant in Microsoft Foundry and need one entry point for employees. Which design meets the requirements?
- A developer is extending a Microsoft Foundry agent that helps account managers. The architect proposes Work IQ so the agent can draw on the user's emails, meetings and business records, including Dataverse data, without the team building its own indexing pipeline. What does Work IQ provide to the agent?
- A Foundry agent answers sellers' open-ended questions such as which accounts they own have stalled opportunities and what was discussed in recent meetings with those customers. The current plan is to write a dedicated Dataverse Web API query for each expected question. Answers must respect each seller's access and the team wants minimal custom retrieval code. What should the developer do instead?
- A Foundry agent uses Work IQ to answer questions that combine a user's meetings with Dataverse records. During testing, a regional manager and a sales representative ask the same question and get different results. The Work IQ connection was created by a developer, and a Global Administrator granted tenant-wide admin consent for the Work IQ permission. Whose permissions determine what the agent can retrieve?
- A developer is adding chat with an existing Copilot Studio agent to an internal .NET web app. Employees already sign in to the app with Microsoft Entra ID, and the agent uses Authenticate with Microsoft. The developer wants a supported, code-first integration that sends the employee's identity to the agent. Which approach should the developer use?
- A console app uses the Copilot Studio client library. The app registration has the delegated Copilot Studio invoke permission with admin consent, and the user signs in successfully. Starting a conversation fails with an error that the agent cannot be found. The settings file contains the correct environment ID and the agent name exactly as it appears in the Copilot Studio agent list. What should the developer change?
- A developer is writing the message loop for an app that talks to a Copilot Studio agent through the Copilot Studio client library in .NET. The agent sends a greeting when a conversation begins, and the user then asks several follow-up questions that rely on earlier context. In which order should the code exchange messages with the agent?
Develop integrations · 40 questions
- A plug-in on the opportunity table must post the execution context to an Azure Service Bus queue already registered as a service endpoint, but only when the estimated revenue exceeds a threshold stored in an environment variable. The team wants the platform's own posting mechanism rather than custom HTTP calls. How should the developer implement this?
- Two integration requirements arrive. Every contact update must be posted unchanged to a Service Bus queue. Opportunity data may leave Dataverse only when the opportunity's probability is above a value that the business can change, so no other opportunity data may reach Azure. Both use the same registered service endpoint. What is the best implementation?
- A step that posts account updates to an Azure Service Bus endpoint is registered as synchronous. During a Service Bus outage, users saving accounts receive an error and their changes are lost. The business says saves must succeed even when Azure is unavailable, and a short delay in delivery is acceptable. What should the developer change?
- An integration team wants every update to an account row published to an existing Azure Service Bus queue. They will use the Plug-in Registration Tool and do not want to write or deploy any plug-in code. Which sequence accomplishes this?
- A Service Bus queue receives Dataverse execution contexts from a registered service endpoint. The new consumer is a Node.js service that must read the context, including the target row's columns, without .NET assemblies. The current endpoint uses the default message format. What should the developer configure?
- An asynchronous step posts account changes to an Azure Service Bus topic. The namespace is unreachable for 20 minutes because of a network problem, and several accounts are updated during that time. What happens to those account events?
- A team registers a webhook in Dataverse that posts to an HTTPS endpoint they host. Their receiver validates every request by reading a custom header named x-contoso-signature and comparing it with a shared secret. How should the developer register the webhook?
- Dataverse must publish invoice changes to downstream systems. A billing service, a data warehouse loader and a notification service each need every message, and more subscribers will be added later without changing anything in Dataverse. Which service endpoint design should the developer register?
- An analytics team wants a continuous stream of changes from several high-volume Dataverse tables, millions of updates a day, fed into a streaming analytics pipeline that reads in parallel partitions. Which service endpoint type best fits this requirement?
- A maker who does not write code wants a notification and an approval to start whenever a row in a custom Dataverse table is created or its status column changes. No developer is available to build or register anything. Which option should the maker use to listen for the Dataverse events?
- A small company wants Dataverse to notify its existing order API whenever a sales order is created. The API is an always-on HTTPS endpoint they already run, volume is low, and the company has no Azure subscription and does not want to operate messaging infrastructure. Which listening option should the developer recommend?
- A downstream ERP connector processes Dataverse case updates. Every Sunday the connector is taken offline for several hours of maintenance, and no case update may be lost. The connector team can host a Service Bus listener or a webhook receiver. Which design should the developer recommend?
- A nightly job copies Dataverse product rows to an external catalog database. It currently reads every row each night, which is slow. The job must fetch only rows created, updated or deleted since its last run, without building any custom components in Dataverse. What should the developer implement?
- A developer is building an incremental synchronization against the Dataverse Web API for the account table, which already has change tracking enabled. How should the first request and later requests be made so that each later run receives only the changes since the previous one?
- A synchronization job uses Web API delta links to keep an external table in step with Dataverse accounts. New and updated accounts arrive correctly, but accounts deleted in Dataverse never disappear from the external table. The job's code skips any entry in the response that has no account columns. What is the cause?
- An external billing system identifies customers by a customer number that it stores in a text column on the Dataverse account table. The integration code must create, retrieve and update accounts by that customer number without first looking up the Dataverse GUID. What should the developer configure on the table?
- A developer created an alternate key on a text column of a custom table that holds 400,000 rows migrated from a legacy system that never enforced uniqueness. The key saved without errors, but a few hours later its index status shows Failed. What is the most likely cause, and what should the developer do?
- The contact table has an active alternate key on the column named employeeid, and an integration must retrieve the contact whose employee ID is E-1042 by using the Dataverse Web API without knowing the row's GUID. Which request should the integration send?
- A scheduled integration sends the same batch of product records from an ERP system to Dataverse every hour. A product may or may not already exist in Dataverse, and the job must be safe to rerun after a failure without creating duplicates. The ERP product code is an active alternate key. Rows must be written without a separate existence check. What should the developer use?
- A C# integration sends UpsertRequest messages for supplier rows identified by an alternate key. For reporting, the code must count how many suppliers each run created and how many it updated. How can the code tell which happened for each request?
- A sync job calls Upsert for every customer from an external system. Instead of updating existing accounts, each run creates a new account for every customer. The code builds each entity as new Entity("account"), sets the external customer number in its Attributes, and no alternate key has been defined on that column. What should the developer do?
- A developer is creating a custom connector for an internal REST API that is protected by Microsoft Entra ID. Each maker's calls must carry their own Entra identity, and the API's app registration exposes an application ID URI. How should the developer configure the connector's security?
- A partner exposes a REST API and issues a separate API key to each of its customers, sent in a request header named X-Partner-Key. Several business units, each a different partner customer, will use one custom connector, and each unit must use its own key. Which authentication type should the developer configure?
- A developer configured a custom connector with OAuth 2.0 and the Microsoft Entra ID identity provider. When a maker tries to create a connection, the Microsoft sign-in page shows an error that the redirect URI in the request does not match the redirect URIs configured for the application. What should the developer do?
- A SaaS vendor hosts each customer on a regional host such as eu.api.contoso.com or us.api.contoso.com. One custom connector must serve all regions: the maker picks the region as a connection parameter when creating a connection, and every operation must be sent to that region's host. What should the developer configure?
- A backend API requires every request to include a header named X-Api-Version with the value 2024-10. Makers should never see or set it, and the requirement must also cover operations that are added to the connector later, without editing each operation's definition or writing code. What should the developer configure?
- A legacy API returns customer attributes as an array of objects, each with a name property and a value property. Makers using the custom connector need to pick individual attributes, such as tier or region, directly as dynamic content. The team does not want to write or maintain code. What should the developer use?
- An API team provides an OpenAPI 2.0 definition file for its REST service, already describing the operations, parameters, responses and security scheme. A developer must create a custom connector from it with minimal manual entry. How should the developer start?
- A company publishes its line-of-business APIs through Azure API Management. Makers in a specific Power Platform environment should get a custom connector for one of those APIs, and the API developers want to create it from the API Management side without hand-writing a definition. What should the developers do?
- A developer at a small company needs to expose an internal REST API as a custom connector in Power Automate. No OpenAPI definition or Postman collection exists for the API, and the developer would rather describe each action by hand in the wizard than write one first. Which way of starting the custom connector does Microsoft document for this situation?
- Makers want to call the Azure AI Language sentiment API from flows and apps through a custom connector. The Azure resource authenticates callers with a resource key sent in the Ocp-Apim-Subscription-Key header, and each team will use its own Azure resource and key. How should the developer configure the connector's general and security settings?
- A team exposes an Azure-hosted web API to makers through a custom connector. The API runs in Azure App Service, and the security team requires every call to carry the calling maker's Microsoft Entra ID identity, with no shared keys stored in connections. How should the developer secure the connector and the API?
- A custom connector for an Azure Function app worked in testing. The function app was then redeployed to a new app with a different host name, and the old app was deleted. Since then, every operation in flows fails with a host not found error, even though the connections are still valid. What should the developer do?
- A developer is building an Azure Function that will back a custom connector so makers can call a pricing calculation from flows and apps. The connector should be created from a definition rather than built by hand. How should the developer build the function and describe it for the connector?
- An HTTP-triggered Azure Function backs a custom connector used by many makers. The compliance team requires the function to log which individual user made each call and to reject callers who are not signed in to the company tenant, and it does not want a shared secret distributed to makers. Which authentication approach should the developer choose?
- A custom connector for an HTTP-triggered Azure Function uses API Key authentication with the parameter name api-key in the header, and the maker entered the function's default key when creating the connection. The function's authorization level is Function. Every test returns 401 Unauthorized. What should the developer change?
- In a custom connector's OpenAPI definition, an operation has a parameter named custref that makers must fill in and that should appear in the designer as Customer reference, and another parameter named tracemode that the connector always sends with a default value and that makers should never see. Which OpenAPI extensions should the developer use?
- A custom connector has a Create ticket action with a project parameter. Makers should choose the project from a dropdown filled at design time by calling the connector's own List projects operation, which returns an array of objects with id and name properties. Which OpenAPI extension should the developer add to the project parameter?
- A custom connector's Get orders operation returns dates in a legacy text format and deeply nested totals. Before makers see the response, it must be reshaped with logic that converts each date and calculates a summary total, which no policy template supports. Where and how should the developer implement this transformation?
- A team building a custom connector is reviewing four requirements and wants to use policy templates wherever possible and custom code only where it is truly needed. Which requirement can only be met by custom code on the connector?
These questions are original practice material and are NOT actual exam questions or brain-dump content. All vendor marks are trademarks of their respective owners. This site is not affiliated with, endorsed by, or sponsored by Microsoft Corporation.