Sooner or later, Dynamics 365 Finance & Operations needs to share data: with Dynamics 365 Sales, a Power App, a warehouse partner or your analytics platform. Microsoft offers several ways to do it, and choosing the wrong one is a common cause of slow, fragile or expensive integrations. Here is how we decide.
The options at a glance
| Option | Where the data lives | Best for |
|---|---|---|
| Dual-write | Copied into Dataverse and kept in sync both ways | Dynamics 365 customer engagement apps that need F&O master data (customers, products, prices) |
| Virtual entities | Stays in F&O, shown in Dataverse on demand | Power Apps and Power Automate that read or update F&O data without duplicating it |
| Business events | Stays in F&O; a message announces a change | Notifying other systems when something happens (an invoice posted, an order confirmed) |
| OData and custom services | Stays in F&O; called through an API | Request-based integrations with external systems |
| Data management framework | Moved in batches (files or packages) | Bulk imports and exports, migrations and scheduled file-based exchanges |
Dual-write: one record in two places
Dual-write keeps tables in Finance & Operations and Dataverse synchronised in near real time, in both directions. When a salesperson creates a customer in Dynamics 365 Sales, it appears in Finance & Operations, and vice versa.
Choose it when the same business entities must be worked on in both applications and users expect them to match immediately: customers, contacts, products, price lists and sales documents.
Keep in mind that the data is physically copied, so it uses Dataverse storage, and every synchronised table needs mapping, initial synchronisation and monitoring of sync errors. Keep the list of synchronised tables to what users genuinely need.
Virtual entities: one record, viewed from two places
Virtual entities (virtual tables) expose Finance & Operations data entities inside Dataverse without copying the data. When a Power App reads a virtual entity, the request goes straight through to Finance & Operations.
Choose it when a Power App, Power Automate flow or Copilot experience needs F&O data on demand, such as checking stock or viewing open invoices, and you don’t want a second copy to maintain.
Keep in mind that performance depends on the live call to Finance & Operations, so they suit lookups and moderate volumes better than heavy reporting. Some Dataverse features behave differently for virtual tables.
Business events: tell, don’t ask
Business events let Finance & Operations announce that something happened, for example a vendor payment posted or a purchase order confirmed. Subscribers such as Power Automate, Azure Service Bus, Event Grid or your own endpoint then react.
Choose it when another system needs to act on a change promptly, without polling Finance & Operations every few minutes.
OData and custom services: ask when you need it
OData endpoints expose data entities over standard REST calls; custom services expose your own operations. They suit external systems that need to read or write specific records on request.
Keep in mind that OData is not designed for large volumes. For thousands of records, use the Data management framework instead.
The Data management framework: bulk and batch
For migrations, periodic bulk loads and file-based exchanges with partners, the Data management framework (including recurring integrations) is the most reliable choice. It is built for volume, supports staging and validation, and can run on a schedule.
And for analytics?
Avoid building reporting on top of transactional integrations. Use Microsoft’s supported options for exporting Finance & Operations data to a data lake or Microsoft Fabric, then report with Power BI. It is faster, cheaper and doesn’t load the live system.
A quick decision guide
- Do two Dynamics 365 apps need the same records, kept identical? Dual-write.
- Does a Power App need live F&O data without a copy? Virtual entities.
- Must another system react when something happens? Business events.
- Does an external system need specific records on request? OData or a custom service.
- Are you moving lots of records at once, or on a schedule? The Data management framework.
- Is it for reporting? Export to a data lake or Fabric, and use Power BI.
Most real projects use more than one of these, and that’s fine as long as each is used for what it does best.
Where we can help
We design and build Dynamics 365 Finance & Operations integrations across all of these options, and fix ones that have become slow or unreliable. If you are planning a new integration, we’re happy to recommend the right approach before you commit budget.


