Power Platform Custom Connectors and Azure Integration
Power Platform's 1,000-plus built-in connectors cover most scenarios. But every organization has systems that no pre-built connector supports — an in-house REST API, a partner's data feed, a government portal, a niche industry system. Custom connectors bridge this gap: you describe any HTTP-based API, and Power Platform treats it like any other connector — selectable in Power Apps and Power Automate with autocomplete support, proper authentication, and a clean interface. Azure services extend this even further, adding advanced AI, storage, messaging, and compute capabilities to your Power Platform solutions.
What Is a Custom Connector?
A custom connector is a reusable wrapper around an HTTP API. You define the API's base URL, its endpoints, the parameters each endpoint accepts, and how to authenticate. Once defined, the connector appears in Power Apps and Power Automate just like the SharePoint or Dataverse connector — you add it to your app or flow, sign in, and call its operations with no code.
CUSTOM CONNECTOR CONCEPT WITHOUT Custom Connector: Power Automate calls the API using HTTP action — complex setup every time, authentication must be configured manually in each flow, no documentation or parameter validation. WITH Custom Connector: Power Automate uses the connector like any other: Action: "Get Customer Details (Your Company API)" Customer ID: [dynamic content] → Returns: Name, Email, Orders, Balance — with autocomplete Authentication: configured once, reused everywhere.
Creating a Custom Connector
In Power Platform, go to make.powerapps.com → Dataverse → Custom connectors → New custom connector → Create from blank. (Or import from an OpenAPI/Swagger file, Postman collection, or Azure API Management instance.)
The Five Configuration Tabs
CUSTOM CONNECTOR TABS
1. GENERAL
├── Connector name: "Contoso ERP API"
├── Description: "Connects to Contoso's internal ERP system"
├── Host: api.contoso.internal (or your Azure API gateway URL)
└── Base URL: /v1
2. SECURITY
├── Authentication type:
│ No auth → Public APIs, open endpoints
│ API Key → Pass a key in header or query string
│ OAuth 2.0 → Microsoft, Google, Salesforce, etc.
│ Basic auth → Username + password in header
│ Windows auth → On-premises systems (requires gateway)
└── Configure the relevant credentials
3. DEFINITION
├── Actions (read/write operations) and Triggers (webhook events)
├── For each action:
│ Method: GET / POST / PUT / PATCH / DELETE
│ Path: /customers/{customerId}
│ Parameters: customerId (path param, required, text)
│ Request body (for POST/PUT): JSON schema
│ Response: define expected JSON schema for autocomplete
└── Import from Swagger/OpenAPI if available (automatic)
4. CODE (optional)
└── Write JavaScript to transform requests or responses
(for edge cases where the raw API doesn't match what flows expect)
5. TEST
└── Test each action with real credentials before publishing
Importing from an OpenAPI/Swagger File
If the API you want to connect to has an OpenAPI (Swagger) specification file — a JSON or YAML file that describes all the endpoints — import it directly. Click New custom connector → Import an OpenAPI file. Upload the file. Power Platform reads all endpoints and generates actions automatically. You review, adjust, and publish. This is the fastest way to create a custom connector when the API provider gives you a Swagger spec.
Sharing Custom Connectors
A custom connector created in one environment is available only in that environment by default. To share it across the organization, include it in a solution (Topic 20) and deploy it to other environments. To share it with the wider Microsoft ecosystem, you can submit it to Microsoft for certification and inclusion in the official connector library — useful for ISVs and product companies building Power Platform integrations.
Azure Integration: Extending Power Platform's Capabilities
Azure is Microsoft's cloud platform. It provides dozens of services that extend Power Platform beyond its native capabilities — serverless computing, AI models, message queues, API gateways, blob storage, and much more. Power Platform and Azure share the same Microsoft identity platform, making integration seamless.
Common Azure + Power Platform Integration Patterns
AZURE SERVICE HOW IT INTEGRATES WITH POWER PLATFORM
Azure Functions → Called from Power Automate via HTTP
(serverless code) Run complex calculations, data transformations,
or logic too advanced for flows alone.
Azure API Management → Create a managed gateway for your APIs;
(API gateway) import into custom connector automatically.
Adds throttling, versioning, analytics.
Azure Logic Apps → Sibling to Power Automate; enterprise-grade
(enterprise flows) flows running in Azure. Share connectors and
triggers with Power Automate.
Azure Service Bus → Decouple systems; Power Automate triggers
(message queue) on messages or sends messages without
direct system-to-system coupling.
Azure Blob Storage → Store and retrieve files; Power Automate
(file storage) reads/writes blobs; Power Apps displays
images from Azure CDN URLs.
Azure Key Vault → Store API keys and secrets securely;
(secret management) flows retrieve secrets at runtime instead of
hardcoding them in flow definitions.
Azure AI Services → Call AI models (vision, speech, language)
(cognitive services) from Power Automate; process images, extract
text, detect sentiment, translate languages.
Azure OpenAI → Use GPT models in flows for text generation,
(language models) summarization, classification, and answering
from documents.
Azure Functions: Running Custom Code from Power Automate
Sometimes a flow needs to perform complex logic that Power Automate expressions cannot handle cleanly — advanced calculations, data transformations, calling multiple APIs in a complex sequence, or interacting with .NET libraries. Azure Functions runs this code in the cloud when triggered, then returns the result to your flow.
AZURE FUNCTION INTEGRATION PATTERN
Power Automate flow:
TRIGGER: When a row is added (Dataverse — Invoice table)
│
▼
ACTION: HTTP (POST to Azure Function URL)
Body: { "invoiceData": [invoice rows from trigger] }
│
▼ (Azure Function runs C#/Python/Node.js code)
→ Validates invoice format
→ Applies complex tax calculation rules
→ Checks for duplicates in external system
→ Returns: { "isValid": true, "taxAmount": 2250, "totalDue": 14750 }
│
▼ (back in Power Automate)
ACTION: Update Dataverse row
Tax Amount: [taxAmount from function response]
Total Due: [totalDue from function response]
Status: "Validated"
Calling an Azure Function
In Power Automate, add an HTTP action. Set Method to POST (or GET). Set URI to the Azure Function's URL (found in Azure Portal → Function App → Functions → select function → Get Function URL). Add the function key as a header: x-functions-key: [your-function-key]. Set the body to the JSON data you want the function to process. The function's response appears as dynamic content for subsequent steps.
Azure API Management: The Gateway Layer
Azure API Management (APIM) sits between Power Platform and your backend APIs. It provides a managed gateway that handles authentication, throttling, versioning, transformation, and monitoring for all API calls flowing through it.
APIM IN THE ARCHITECTURE
Power Platform Apps and Flows
│
│ (calls)
▼
Azure API Management (Gateway)
├── Validates API keys
├── Enforces rate limits (prevent overload)
├── Routes to correct backend version
├── Logs all calls for analytics
└── Transforms request/response if needed
│
│ (routes to)
▼
Backend APIs (on-premises or Azure)
├── Inventory System
├── ERP API
└── Customer Database API
Import your APIM instance directly into Power Platform as a custom connector: in Custom connectors, choose New → Import from Azure (preview). Select your Azure subscription and APIM instance. Power Platform imports all APIs defined in APIM and creates connector actions for each endpoint automatically.
Azure Service Bus: Decoupling Systems Reliably
Direct API calls fail if the target system is temporarily down. Azure Service Bus solves this with message queues — Power Automate sends a message to the queue, and the target system processes it when it is ready, even if that is hours later. This decouples sender from receiver, making integrations resilient to outages.
SERVICE BUS DECOUPLING PATTERN
WITHOUT Service Bus (brittle):
Power Automate → ERP API → If ERP is down: FLOW FAILS
WITH Service Bus (resilient):
Power Automate → [Message to Service Bus Queue]
│ (message waits if ERP is down)
▼
[ERP System reads message when ready]
[Confirms processing when done]
Power Automate is finished immediately, regardless of ERP status.
Azure Key Vault: Storing Secrets Safely
Hardcoding API keys, passwords, and connection strings in flow definitions is a security risk — anyone with access to the flow can read the secret. Azure Key Vault stores secrets securely, and Power Automate retrieves them at runtime using the "Get secret" action from the Azure Key Vault connector.
KEY VAULT PATTERN
INSECURE (never do this):
HTTP connector URL: https://api.vendor.com/data
Headers: Authorization: Bearer ABCD1234SECRETKEY ← hardcoded!
SECURE (use Key Vault):
Step 1: ACTION: Get secret (Azure Key Vault)
Secret name: "VendorAPIKey"
→ Returns: [SecretValue] (the actual key, never stored in flow)
Step 2: HTTP connector URL: https://api.vendor.com/data
Headers: Authorization: Bearer [SecretValue from Step 1]
AI Builder: AI Without Data Science
AI Builder is Power Platform's built-in AI service. It provides pre-trained and custom AI models that non-data-scientists can use in Power Apps and Power Automate without any machine learning knowledge.
AI BUILDER MODEL TYPES Pre-built models (ready to use immediately): ├── Business card reader → Extract name, email, phone from photos ├── Receipt processing → Extract vendor, amount, date from receipts ├── Invoice processing → Extract invoice number, line items, totals ├── ID document reader → Extract data from passports, driving licences ├── Text recognition (OCR) → Extract any text from images ├── Sentiment analysis → Positive/negative/neutral in text ├── Language detection → Identify the language of any text └── Key phrase extraction → Pull main topics from a document Custom models (you train with your own data): ├── Document processing → Train on your specific form layouts ├── Object detection → Detect specific objects in photos ├── Text classification → Classify text into your categories └── Prediction → Predict outcomes from historical data
Using AI Builder in Power Automate
In a flow, search for "AI Builder" when adding an action. You see all available models. Select "Process and save information from documents" (receipt or invoice). Upload a file or pass binary content from a previous step. The action returns structured JSON with all extracted fields — vendor name, total amount, date, line items. Use this data to populate Dataverse records, approve invoices automatically, or flag anomalies for human review.
Key Points
- Custom connectors wrap any HTTP REST API into a reusable, authenticated connector that works exactly like built-in connectors in Power Apps and Power Automate.
- Import custom connectors from OpenAPI/Swagger files for rapid creation. Import from Azure API Management to manage all API access through a central gateway.
- Azure Functions run complex custom code triggered from Power Automate flows — use when flow expressions are insufficient for the logic required.
- Azure Service Bus decouples sender from receiver through message queues — flows deposit messages and target systems process them when available, making integrations resilient to outages.
- Azure Key Vault stores API keys and secrets securely. Retrieve them at runtime using the Key Vault connector — never hardcode secrets in flow definitions.
- AI Builder provides pre-trained and custom AI models for document processing, OCR, sentiment analysis, and prediction — usable in Power Apps and Power Automate with no data science skills.
- Azure API Management provides throttling, versioning, logging, and transformation for all API calls — import it as a custom connector to give Power Platform clean, governed API access.
