You can build a Power App directly on your Dynamics 365 data because Dynamics 365 Sales, Customer Service and Customer Insights all store their data in Microsoft Dataverse, the same data platform Power Apps uses. There is no integration to build. You add Dataverse as a data source, pick the Dynamics tables you need, such as Accounts or Contacts, and then read and write records with Power Fx or with Power Automate flows.
This article was written by one of our Dynamics 365 consultants for people implementing Dynamics 365, so it assumes some familiarity with the platform.
Dynamics 365 customer engagement apps such as Sales and Customer Service are model-driven apps running on Dataverse, so a custom Power App can work against exactly the same Account, Contact, Case or Opportunity records your users see in Dynamics, with the same Dataverse security roles applied.
Dataverse is part of the wider Power Platform, alongside Power Apps, Power Automate, Power BI and Copilot Studio (which replaced Power Virtual Agents for building chat agents).
There are two main types of app to choose from:
You can also combine the two by adding a canvas-based custom page into a model-driven app, which is the supported way to bring a canvas experience inside Dynamics 365.
Once Dataverse is added as a data source, each Dynamics table behaves like a table in your app and you work with it using Power Fx formulas. Using the Accounts table as an example:
Filter, Search or LookUp, for example LookUp(Accounts, 'Account Name' = "Contoso") to return a single record.Patch(Accounts, Defaults(Accounts), { 'Account Name': "Contoso" }), where Defaults provides a new record with the table's default values.Patch with an existing record and only the columns you want to change. Choice and lookup columns take a specific shape, so a lookup such as Primary Contact is set by passing in the related Contact record.Remove for a specific record or RemoveIf for every record matching a condition.Wrap writes in IfError so users see a sensible message if a save fails, and watch for delegation warnings when you filter large Dynamics tables, because a non-delegable query only works on the first batch of records rather than the whole table.
If the work needs to happen in the background, such as sending a notification when a case is updated or writing records to another system, a cloud flow is usually a better fit than putting the logic in the app. The Microsoft Dataverse connector in Power Automate provides these triggers:
It also provides actions to add a new row, list rows, get a row by ID, update a row, delete a row, search rows with relevance search, relate and unrelate rows, perform bound and unbound actions, run a changeset request, and upload or download a file or image. List rows lets you choose columns, filter and sort rows and set a row count, while Get a row by ID, Update a row and Delete a row all use the row ID as the key.
Use filter columns on the "added, modified or deleted" trigger so the flow only runs when the columns you care about change, otherwise every edit to the row will start a run.
It can give you a good head start. Copilot in Power Apps lets you describe what you want to track in plain language and generates Dataverse tables and a canvas app from that description. Plans in Power Apps goes further: you describe a business process, optionally with screenshots or process diagrams, and it proposes a full solution that can include Dataverse tables, canvas and model-driven apps, Power Pages sites, Power Automate flows and Copilot Studio agents. Both need an environment with a Dataverse database, and availability depends on your region. On a Dynamics project, check what it produces against your existing data model so you use the standard Dynamics tables rather than duplicates.
If you are newer to Power Apps, our step-by-step guide to building a Power App covers planning, testing and launch, and we also offer Dynamics 365 support if you need help with the platform underneath.
Yes, in most cases. Apps that use Dataverse are premium, so each user needs a premium entitlement such as a Power Apps licence. Qualifying Dynamics 365 licences include Power Apps rights, but only in the context of the licensed Dynamics 365 app, so check your licences against Microsoft's licensing guide.
Use the Microsoft Dataverse connector for Dynamics 365 Sales, Customer Service, Field Service and the other customer engagement apps. The older Dynamics 365 connector is deprecated. For Business Central or finance and operations apps, Microsoft points you to their own dedicated connectors.
A model-driven app suits users who live in Dynamics and want a familiar, form-based experience on a subset of tables. A canvas app suits mobile or task-focused scenarios, or apps that need data from outside Dataverse. You can embed a canvas custom page inside a model-driven app to get some of both.
We build canvas and model-driven apps on Dataverse and Dynamics 365, from small task apps to line-of-business systems. Have a look at our Power Apps services or get in touch to talk through what you need.