Integration & Automation Blueprints
Connect Power Platform to the outside world. Learn how to design cloud flow automations, plan Dataverse-to-Azure integrations, and choose between synchronous and asynchronous patterns.
Connecting the dots
Think of integration as plumbing between buildings.
You have Dataverse (your main office), Azure (a processing plant), and external systems (suppliers and partners). Integration design is about laying the pipes — deciding what flows where, how fast it needs to arrive, and what happens when a pipe breaks.
Automations (cloud flows) are the valves and pumps — they trigger when something happens and move data through the system. Integrations are the permanent pipeline connections between systems.
Get the plumbing wrong and you flood the building. Get it right and everything flows invisibly.
Cloud flow design patterns
Power Automate cloud flows are the automation backbone of Power Platform. Good flow design follows these patterns:
Trigger selection
| Trigger Type | When to Use | Key Consideration |
|---|---|---|
| Dataverse — When a row is added | React to new records | Filter expression to limit which records trigger the flow |
| Dataverse — When a row is modified | React to field changes | Select specific columns to avoid triggering on every edit |
| Scheduled | Periodic batch processing | Consider time zones and business hours |
| HTTP request | External system calls into Power Automate | Secure with authentication (not just URL obscurity) |
| Manual | User-initiated actions | Useful for on-demand reports or approvals |
Flow structure best practices
- Keep flows small and focused — one flow, one job. Don’t build a 200-step monster.
- Use child flows for reusable logic (e.g., “send notification” used in 5 parent flows)
- Scope actions into groups — use Scope actions for try/catch patterns
- Filter triggers early — don’t trigger on every record change, then filter inside the flow
- Use environment variables for configurable values (email addresses, URLs, thresholds)
Scenario: Amara designs an order processing flow
Amara is designing an order processing automation for a healthcare supplies client:
- Trigger: When an Order record status changes to “Submitted” in Dataverse
- Validation child flow: Check stock availability (calls inventory system via custom connector)
- Branching: If stock available → approve and create shipment. If not → notify procurement team.
- Error handling: Scope wraps the entire flow. On failure, logs the error to a Dataverse “Integration Log” table and sends an alert to the IT team.
- Security: Uses a service principal connection (not Amara’s personal account) so the flow keeps running after she leaves the project.
This design follows all the best practices: focused trigger, child flows, error handling, and service principal identity.
Dataverse + Azure integration patterns
When Power Platform needs to communicate with Azure services (or vice versa), the choice of pattern depends on latency requirements, data volume, and reliability needs.
| Pattern | Direction | Timing | Azure Service | Best For |
|---|---|---|---|---|
| Webhook | Dataverse → External | Near real-time | Any HTTP endpoint | Simple event notification to external systems |
| Azure Service Bus | Dataverse → Azure | Async (queued) | Service Bus | Guaranteed delivery, decoupled processing, high volume |
| Azure Event Hub | Dataverse → Azure | Async (streaming) | Event Hub | Telemetry, analytics, massive event streams |
| Azure Functions (HTTP) | Both directions | Sync or async | Azure Functions | Custom processing, API endpoints, compute-heavy logic |
| Custom connector | Power Platform → External | Sync (per request) | Any REST API | User-initiated interactions with external APIs |
| Virtual table | External → Dataverse | Real-time (read) | OData provider | Display external data as Dataverse tables without copying |
Sync vs async: the critical decision
| Factor | Synchronous | Asynchronous |
|---|---|---|
| User experience | User waits for response | User continues working |
| Error handling | Immediate feedback | Retry logic, dead-letter queues |
| Reliability | Fails if the target is down | Queued — retries when target recovers |
| Use case | Credit check before order save | Generate report and email when ready |
| Dataverse example | Pre-operation plug-in calling Azure Function | Service Bus message triggering Azure Function |
Exam tip: When to use Service Bus vs Event Hub
This is a frequent exam question. The key difference:
- Service Bus = message queue. Messages are consumed once, order matters, guaranteed delivery. Think “work orders” — each message is processed by one consumer.
- Event Hub = event stream. Events can be consumed by multiple readers, massive throughput, no guaranteed order. Think “telemetry” — many systems reading the same stream.
Rule of thumb: if you need guaranteed, ordered, once-only processing → Service Bus. If you need high-throughput streaming with multiple consumers → Event Hub.
Designing for failure
Every integration will fail eventually. The design question is: what happens when it does?
Retry patterns:
- Exponential backoff — wait longer between each retry (1s, 2s, 4s, 8s…)
- Circuit breaker — stop calling a failing service after N failures, wait, then try again
- Dead-letter queue — if a message cannot be processed after all retries, move it to a separate queue for manual review
Idempotency:
- Design every integration endpoint so calling it twice with the same data produces the same result
- Use alternate keys or business identifiers to detect duplicates
- The UpsertRequest pattern (covered in Domain 6) is inherently idempotent
A logistics company needs to send order data from Dataverse to their warehouse management system every time an order is approved. The warehouse system occasionally goes offline for maintenance. What integration pattern should you recommend?
Amara is designing a flow that runs when a patient record is created in Dataverse. The flow must: (1) validate the patient's insurance, (2) create a case in the billing system, and (3) send a welcome email. Steps 1 and 2 can fail independently. What design pattern should she use?
🎬 Video coming soon
Next up: Environment Setup & Security Troubleshooting — configuring development environments and troubleshooting security issues.