πŸ”’ Guided

Pre-launch preview. Authorised access only.

Incorrect code

Guided by A Guide to Cloud
Explore AB-900 AI-901
Guided PL-400 Domain 5
Domain 5 β€” Module 7 of 9 78%
21 of 26 overall

PL-400 Study Guide

Domain 1: Create a Technical Design

  • Solution Architecture: What Goes Where Free
  • Security by Design: Auth, Roles & DLP Free
  • Designing UX Components: Canvas, PCF & Client Scripts Free
  • Designing Platform Extensions: Connectors, Plug-ins & APIs Free
  • Integration & Automation Blueprints Free

Domain 2: Build Power Platform Solutions

  • Environment Setup & Security Troubleshooting
  • Solutions & Layers: ALM Foundations
  • CI/CD Pipelines for Power Platform

Domain 3: Implement Power Apps Improvements

  • Advanced Power Fx & Canvas Components
  • Troubleshoot & Optimise Apps

Domain 4: Extend the User Experience

  • Client Scripting: Form Events & the Client API
  • Commands, Buttons & Custom Page Navigation
  • PCF Components: Build & Lifecycle
  • PCF Components: Package, Deploy & Advanced Features

Domain 5: Extend the Platform

  • The Plug-in Pipeline: How Dataverse Processes Events Free
  • Writing Plug-ins: Business Logic, Service & Registration
  • Custom APIs & Business Events
  • Custom Connectors: OpenAPI & Authentication
  • Custom Connectors: Azure, Policies & Code
  • Dataverse APIs: Web API & Organisation Service
  • Azure Functions for Power Platform
  • Cloud Flows: Dataverse Triggers & Expressions
  • Cloud Flows: Security, Errors & Child Flows

Domain 6: Develop Integrations

  • Publishing Dataverse Events
  • Service Endpoints: Webhooks, Service Bus & Event Hub
  • Data Sync: Change Tracking, Alternate Keys & Upsert

PL-400 Study Guide

Domain 1: Create a Technical Design

  • Solution Architecture: What Goes Where Free
  • Security by Design: Auth, Roles & DLP Free
  • Designing UX Components: Canvas, PCF & Client Scripts Free
  • Designing Platform Extensions: Connectors, Plug-ins & APIs Free
  • Integration & Automation Blueprints Free

Domain 2: Build Power Platform Solutions

  • Environment Setup & Security Troubleshooting
  • Solutions & Layers: ALM Foundations
  • CI/CD Pipelines for Power Platform

Domain 3: Implement Power Apps Improvements

  • Advanced Power Fx & Canvas Components
  • Troubleshoot & Optimise Apps

Domain 4: Extend the User Experience

  • Client Scripting: Form Events & the Client API
  • Commands, Buttons & Custom Page Navigation
  • PCF Components: Build & Lifecycle
  • PCF Components: Package, Deploy & Advanced Features

Domain 5: Extend the Platform

  • The Plug-in Pipeline: How Dataverse Processes Events Free
  • Writing Plug-ins: Business Logic, Service & Registration
  • Custom APIs & Business Events
  • Custom Connectors: OpenAPI & Authentication
  • Custom Connectors: Azure, Policies & Code
  • Dataverse APIs: Web API & Organisation Service
  • Azure Functions for Power Platform
  • Cloud Flows: Dataverse Triggers & Expressions
  • Cloud Flows: Security, Errors & Child Flows

Domain 6: Develop Integrations

  • Publishing Dataverse Events
  • Service Endpoints: Webhooks, Service Bus & Event Hub
  • Data Sync: Change Tracking, Alternate Keys & Upsert
Domain 5: Extend the Platform Premium ⏱ ~11 min read

Azure Functions for Power Platform

Offload heavy processing to Azure Functions. Learn how to handle long-running operations, configure triggers, and authenticate to Power Platform using managed identities.

When Power Platform needs more power

β˜• Simple explanation

Think of Azure Functions as a specialist workshop behind your factory.

Your factory (Power Platform) handles most production. But some jobs are too heavy for the main line β€” generating a 500-page PDF, processing 10,000 images, or running a complex algorithm. You send those jobs to the specialist workshop (Azure Function), which has the tools and time to handle them.

The workshop communicates with the factory through defined channels: HTTP triggers (call the Function directly), timer triggers (scheduled jobs), and event triggers (react when something happens). And the workshop uses a managed identity badge to access factory resources without storing passwords.

Azure Functions provide serverless compute for Power Platform scenarios that exceed plug-in limitations: long-running operations (plug-ins have a 2-minute timeout), complex computations, external API orchestration, and batch data processing. Functions support multiple triggers (HTTP, timer, Service Bus, Event Grid) and can authenticate to Dataverse using managed identities (no stored credentials).

When to use Azure Functions

ScenarioWhy Not Plug-in/Flow?Azure Function Solution
Generate a complex PDF reportPlug-in: 2-min timeout, sandbox limits. Flow: no PDF generationHTTP-triggered Function with PDF library
Nightly data cleanup (3+ hours)Plug-in: timeout. Flow: action limitsTimer-triggered Function with batch processing
React to Service Bus messagesPlug-in: cannot listen to Service BusService Bus-triggered Function
Complex ML model inferencePlug-in: cannot load ML modelsHTTP-triggered Function with ML libraries
Call 10 APIs and aggregate resultsPlug-in: sandbox networking limitsHTTP-triggered Function with parallel API calls

Trigger types for Power Platform

HTTP triggers are the most common for Power Platform integration
TriggerHow It FiresPower Platform Use Case
HTTPExternal HTTP requestPlug-in or flow calls the Function via HTTP
TimerCRON scheduleNightly sync, hourly cleanup, weekly reports
Service BusMessage arrives in queue/topicProcess events published by Dataverse business events
Event GridAzure event publishedReact to Azure resource events (blob created, etc.)
Blob StorageFile uploaded to containerProcess uploaded documents (OCR, classification)

Common pattern: Async plug-in β†’ Azure Function

User saves record
  β†’ Post-operation async plug-in fires (does not block user)
  β†’ Plug-in sends record ID to Azure Function via HTTP or Service Bus
  β†’ Function performs heavy processing (external APIs, computation)
  β†’ Function writes results back to Dataverse via Web API

Important: Do NOT call Azure Functions synchronously from a pre-operation plug-in for long-running work β€” this blocks the user and risks the 2-minute timeout. For short, bounded lookups (under 5 seconds), a synchronous HTTP call is acceptable. For anything heavier, use async patterns.

Managed identity authentication

A managed identity lets your Azure Function authenticate to Dataverse without storing credentials in code or configuration.

How it works

  1. Enable managed identity on the Azure Function App (System-assigned or User-assigned)
  2. Create an application user in Dataverse for the managed identity’s client ID
  3. Assign a security role to the application user (least privilege)
  4. The Function acquires a token from Entra ID using the managed identity β€” no secrets needed
// Authenticate to Dataverse using managed identity
var credential = new DefaultAzureCredential(); // Uses managed identity automatically
var token = await credential.GetTokenAsync(
    new TokenRequestContext(new[] { "https://orgname.crm.dynamics.com/.default" })
);

var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = 
    new AuthenticationHeaderValue("Bearer", token.Token);

// Now call Dataverse Web API
var response = await client.GetAsync(
    "https://orgname.crm.dynamics.com/api/data/v9.2/contacts?$top=10");

Why managed identity over client secrets?

FeatureManaged IdentityClient Secret
Credentials stored in code?No β€” handled by AzureYes β€” must be stored securely
Rotation needed?No β€” automaticYes β€” manual rotation
Risk of credential leak?NoneYes β€” if code/config is exposed
Works from Azure only?YesWorks from anywhere
πŸ’‘ Scenario: Amara offloads PDF generation

Amara’s healthcare client needs to generate patient discharge summaries β€” 20-page PDFs with charts, images, and medical data. A plug-in cannot do this (sandbox restrictions, 2-minute timeout).

Solution:

  1. Post-operation async plug-in fires when a Discharge record is created
  2. Plug-in sends the record ID to an Azure Function via HTTP trigger
  3. Function authenticates to Dataverse using managed identity
  4. Function retrieves patient data via Web API
  5. Function generates the PDF using a C# library (iText, QuestPDF)
  6. Function uploads the PDF as a Dataverse annotation (note attachment)
  7. Function sends a notification email via SendGrid

Total processing time: 45 seconds. No timeout issues, no sandbox restrictions.

Question

Why use Azure Functions instead of Dataverse plug-ins for long-running operations?

Click or press Enter to reveal answer

Answer

Dataverse plug-ins have a 2-minute execution timeout and run in a sandboxed environment with limited access to external resources. Azure Functions have configurable timeouts (5 minutes default on Consumption plan, max 10 minutes; 30 minutes default on Premium plan, max unbounded), full .NET library access, and unrestricted network access.

Click to flip back

Question

What is a managed identity in Azure?

Click or press Enter to reveal answer

Answer

A managed identity is an Entra ID identity assigned to an Azure resource (like a Function App). It authenticates automatically β€” no passwords or secrets to manage. System-assigned identities are tied to the resource lifecycle. User-assigned identities can be shared across resources.

Click to flip back

Question

How does an Azure Function authenticate to Dataverse using managed identity?

Click or press Enter to reveal answer

Answer

Enable managed identity on the Function App, create an application user in Dataverse with the managed identity's client ID, assign a security role. In code, use DefaultAzureCredential to get a token for the Dataverse resource URL, then include the token as a Bearer token in Web API requests.

Click to flip back

Knowledge Check

A developer needs to process 50,000 records nightly β€” updating each record based on data from an external API. The process takes approximately 2 hours. What is the best architecture?

🎬 Video coming soon

Next up: Cloud Flows: Dataverse Triggers & Expressions β€” configuring Dataverse connector triggers and writing complex flow expressions.

← Previous

Dataverse APIs: Web API & Organisation Service

Next β†’

Cloud Flows: Dataverse Triggers & Expressions

Guided

I learn, I simplify, I share.

A Guide to Cloud YouTube Feedback

© 2026 Sutheesh. All rights reserved.

Guided is an independent study resource and is not affiliated with, endorsed by, or officially connected to Microsoft. Microsoft, Azure, and related trademarks are property of Microsoft Corporation. Always verify information against Microsoft Learn.