Domain 1 β€” Module 4 of 5 80%
4 of 26 overall
Domain 1: Create a Technical Design Free ⏱ ~12 min read

Designing Platform Extensions: Connectors, Plug-ins & APIs

When out-of-the-box features are not enough, you extend the platform. Learn how to design custom connectors, Dataverse plug-ins, custom APIs, and Power Fx functions β€” and when each approach fits.

Extending the platform’s brain

Simple explanation

Think of Power Platform as a smartphone.

Out of the box, it does calls, texts, and web browsing. But the real power comes from the app store (connectors to external services), custom apps (plug-ins that add new capabilities), and APIs (ways for other systems to talk to your phone).

This module covers four ways to extend the platform beyond what it can do natively: custom connectors (bridge to external APIs), plug-ins (C# code that runs inside Dataverse), custom APIs (new endpoints you create for Dataverse), and Power Fx functions (reusable low-code logic).

Custom connector design

A custom connector bridges Power Platform to any REST API. Design decisions include authentication, actions, triggers, and policies.

When to build a custom connector

  • The external API does not have a built-in Power Platform connector
  • You need to expose specific API operations to makers (not the full API surface)
  • You want to standardise how your organisation connects to a particular service
  • An ISV wants to publish a connector for their service

Design considerations

Design AreaQuestions to Answer
AuthenticationOAuth 2.0, API Key, or Basic? Who manages the credentials? Per-user or shared?
ActionsWhich API endpoints to expose? How to name them clearly for makers?
TriggersDoes the API support webhooks for real-time triggers? Or polling?
Data transformationDo responses need to be reshaped? Are there pagination patterns?
DLP classificationWhich DLP group should this connector be in? (Custom connectors default to Non-business)
Error handlingHow does the API report errors? Do you need policy templates to standardise responses?
Scenario: Marcus designs a connector for NovaSoft's product API

Marcus Chen at NovaSoft Solutions builds a custom connector for NovaSoft’s product catalogue API. His design decisions:

  • Auth: OAuth 2.0 (each user authenticates with their NovaSoft account β€” per-user, not shared credentials)
  • Actions: GetProducts, GetProductById, UpdateInventory β€” only 3 of the API’s 20 endpoints, keeping it simple for makers
  • Triggers: Webhook-based trigger for β€œproduct price changed” events
  • Data transform: API returns nested JSON; Marcus adds a policy template to flatten the response for easier use in Power Automate
  • DLP: Requests the admin classify it as Business (it handles business inventory data)

Plug-in vs custom API vs Power Fx function

These three all add server-side logic to Dataverse, but they serve different purposes.

Three approaches to server-side logic β€” choose based on trigger, audience, and complexity
FactorPlug-inCustom APIPower Fx Function
LanguageC#C# (backed by plug-in)Power Fx (low-code)
TriggerDataverse events (create, update, delete, etc.)On-demand (called explicitly)On-demand (called from apps/flows)
Callable from outside?No β€” event-driven onlyYes β€” Web API, SDK, flows, appsYes β€” flows and apps
Transaction contextRuns within the Dataverse pipeline transactionCan run in or outside a transactionRuns within platform context
ComplexityFull C# β€” any logic, Organisation serviceFull C# β€” plus custom request/responsePower Fx β€” limited to supported functions
Solution-awareYesYesYes
Best forIntercepting data events, validation, enrichmentReusable business operations, external-facing endpointsSimple server-side logic accessible to makers

Decision guide

  • Need to react to a data event (record created, updated, deleted)? β†’ Plug-in
  • Need a reusable operation that apps, flows, or external systems can call? β†’ Custom API
  • Need server-side logic but want makers to maintain it? β†’ Power Fx function
  • Need a plug-in AND want it callable on demand? β†’ Custom API backed by a plug-in (best of both)
Question

What is a custom API in Dataverse?

Click or press Enter to reveal answer

Answer

A custom API defines a new message (endpoint) on Dataverse that can be called from apps, flows, Web API, or SDK. It has defined request parameters and response properties. It is backed by a plug-in that implements the business logic. Unlike standard plug-ins, custom APIs are callable on demand, not just triggered by data events.

Click to flip back

Question

What is a Power Fx low-code plug-in?

Click or press Enter to reveal answer

Answer

A Power Fx function that runs server-side in Dataverse. It allows makers to write business logic using Power Fx formulas instead of C#. It is more limited than C# plug-ins but accessible to low-code developers who cannot write C#. It can be triggered from apps and flows.

Click to flip back

Question

When should you choose a custom connector over a direct API call?

Click or press Enter to reveal answer

Answer

Use a custom connector when: (1) you want the API available to makers in canvas apps and Power Automate, (2) you need to standardise authentication and error handling, (3) you want the connection to be manageable through the admin centre, (4) multiple apps and flows will use the same API.

Click to flip back

Knowledge Check

Amara needs to implement a 'Calculate shipping cost' operation for a logistics client. The operation takes package dimensions, weight, and destination as input and returns a cost. It must be callable from canvas apps, cloud flows, and external ERP systems via API. Which approach should she use?

Knowledge Check

A developer builds a Dataverse plug-in that validates order data before save. The product team also wants the same validation logic to be available as an API endpoint for the company's external web portal. What is the best approach?

Next up: Integration & Automation Blueprints β€” designing cloud flows and Dataverse-to-Azure integration patterns.