PL-400 study materials
PL-400 study resources

PL-400: Develop integrations

PL-400 · Work through your exam, one topic at a time.

All guide sections

Develop integrations

Interfaces and protocols

Dataverse exposes an OData v4 Web API at /api/data/v9.2 for CRUD, FetchXML, actions and batch requests. Paging returns up to 5,000 records per page and you follow @odata.nextLink rather than assuming an offset. Use $select to limit columns, $expand sparingly, and conditional requests with ETag/If-Match to avoid lost updates on concurrent edits.

Authentication

Server-to-server integrations use an Entra ID app registration with the client-credentials flow, and in Dataverse you create an application user with a security role. Never embed a licensed user's password. Delegated connections run as the connection owner, which changes the audit trail and record ownership, so choose deliberately.

Patterns

  • Synchronous request/response: the caller waits; keep it short and expect throttling.
  • Webhooks: JSON push of the plug-in context with at-least-once delivery, so make the receiver idempotent.
  • Azure Service Bus: durable queue or topic, dead-lettering and sessions - best when the endpoint can be offline.
  • Event Grid: lightweight near real-time notification with retries.
  • Change tracking: enabled on tables so you query only deltas instead of full scans.
  • Virtual tables with the OData v4 provider: read external data without copying it.
  • Dual-write: near real-time bidirectional sync with finance and operations apps.

Traps

Service protection limits produce HTTP 429 with a Retry-After header - implement exponential backoff and never retry in a tight loop. A batch is not a transaction across all its requests unless they are inside a changeset. Long-running work must not sit in a synchronous plug-in, where you will hit the timeout.

Rule of thumb

Choose by delivery guarantee: must not be lost, use Service Bus; must notify quickly with retry, use a webhook or Event Grid; must be visible to the user immediately, use a tightly scoped synchronous call.