Practical integration patterns for connecting Microsoft Power Platform, Dynamics 365, and Dataverse with external systems.
This repository focuses on architectural patterns commonly used in enterprise and government environments where Power Platform solutions must integrate with existing systems and cloud services.
flowchart LR
User[Power Apps or Portal] --> DV[Dataverse]
DV --> PA[Power Automate]
DV --> WH[Webhook]
DV --> FN[Azure Function]
FN --> SB[Service Bus]
SB --> EXT[External Systems]
PA --> EXT
WH --> EXT
This repo is organised around the main decisions in that flow: when to call directly, when to trigger asynchronously, and when to introduce messaging or a dedicated integration layer.
- Architecture Principles
- Dataverse Integration
- Azure Functions
- Service Bus
- Webhooks
- API Integration
- Event Driven Patterns
If you are deciding which pattern to use, start with Architecture Principles, then move to Dataverse Integration, and then choose the implementation style that best fits the requirement:
- API Integration for direct service calls
- Webhooks for lightweight synchronous notifications
- Azure Functions for integration logic and transformation
- Service Bus and Event Driven Patterns for resilient asynchronous processing
Power Platform solutions rarely exist in isolation. In real systems they often interact with:
- legacy enterprise systems
- government platforms
- external APIs
- messaging infrastructure
- Azure-based services
Well-designed integration patterns help ensure solutions are:
- secure
- maintainable
- scalable
- observable
- resilient
Common scenarios include:
- sending events from Dataverse to external systems
- processing asynchronous workloads
- integrating portal applications with backend services
- triggering workflows from external APIs
- synchronising data between enterprise platforms
- event-driven processing using Azure messaging services
Many of the patterns in this repo work better when teams standardise on a simple event contract:
{
"eventType": "account.updated",
"source": "dataverse",
"entityName": "account",
"recordId": "9b1d2c0f-1234-4c7d-98a0-123456789abc",
"occurredOn": "2026-03-17T09:42:00Z",
"correlationId": "6dd3f520-f4c3-4bc3-a6a3-2ac6fd31d1bb"
}Using a predictable envelope makes retries, observability, and downstream routing much easier.
This repo includes patterns involving:
- Dataverse Web API
- Power Automate
- Azure Functions
- Azure Service Bus
- REST APIs
- event-driven architectures
- Dynamics 365 developers
- Power Platform developers
- integration developers
- solution architects
- teams building enterprise Power Platform solutions
Maintained by Matthew Brunsdon.