🔒 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 3 of 9 33%
17 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 ⏱ ~12 min read

Custom APIs & Business Events

Create your own Dataverse endpoints that any app, flow, or external system can call. Learn custom API messages, custom API plug-ins, and business events for real-time event publishing.

Creating your own Dataverse operations

☕ Simple explanation

Think of custom APIs as adding new buttons to a universal remote control.

Dataverse comes with built-in operations: Create, Update, Delete, Retrieve. These are like the standard buttons on a TV remote — power, volume, channel. But what if you need a “Calculate Shipping” button or a “Validate Insurance” button? You create a custom API.

A custom API is a new operation you define on Dataverse. You name it, declare what inputs it accepts and what outputs it returns, and wire it to a plug-in that does the actual work. Then anyone — apps, flows, external systems — can call your API just like they call the built-in Create or Update.

Business events are the flip side: instead of something calling IN to Dataverse, business events let Dataverse push events OUT to other systems when something important happens.

Custom APIs extend the Dataverse platform by defining new messages (endpoints) with typed request parameters and response properties. They are backed by C# plug-in logic and are fully solution-aware. Unlike custom process actions (the older approach), custom APIs support richer data types and are the modern recommended approach.

Business events enable Dataverse to publish events that external systems can subscribe to. They use the same event infrastructure as the plug-in pipeline but are designed for cross-system communication — triggering Azure Service Bus messages, Event Hub events, or webhooks when specific business operations occur.

Custom API anatomy

A custom API consists of three parts:

  1. The API definition — name, binding type, request parameters, response properties
  2. Request parameters — typed inputs the caller sends
  3. Response properties — typed outputs the API returns

Creating a custom API

SettingWhat It ControlsExample
Unique NameAPI identifier (used in SDK/Web API calls)nova_CalculateShipping
Display NameHuman-readable nameCalculate Shipping Cost
Binding TypeGlobal (no entity) or Entity-boundGlobal — not tied to a specific table
Is FunctionGET (read-only) or POST (action)No (POST — it performs a calculation)
Is PrivateHidden from external callersNo — ISVs and external systems can call it
Allowed Custom Processing Step TypeSync only, Async only, or BothSync only (caller waits for result)
Plugin TypeThe plug-in that implements the logicNovaSoft.ShippingCalculator

Defining parameters and response

Request Parameters:
  - Weight (Decimal, required)
  - DestinationCode (String, required)
  - Priority (Integer, optional)

Response Properties:
  - Cost (Decimal)
  - EstimatedDays (Integer)
  - TrackingPrefix (String)

Implementing the plug-in

public class CalculateShipping : IPlugin
{
    public void Execute(IServiceProvider serviceProvider)
    {
        var context = (IPluginExecutionContext)
            serviceProvider.GetService(typeof(IPluginExecutionContext));
        
        // Read custom API request parameters
        decimal weight = (decimal)context.InputParameters["Weight"];
        string destination = (string)context.InputParameters["DestinationCode"];
        int priority = context.InputParameters.Contains("Priority") 
            ? (int)context.InputParameters["Priority"] : 1;
        
        // Business logic
        decimal baseCost = weight * 2.5m;
        decimal priorityMultiplier = priority == 1 ? 1.0m : priority == 2 ? 1.5m : 2.0m;
        decimal cost = baseCost * priorityMultiplier;
        int estimatedDays = priority == 3 ? 1 : priority == 2 ? 3 : 5;
        
        // Set custom API response properties
        context.OutputParameters["Cost"] = cost;
        context.OutputParameters["EstimatedDays"] = estimatedDays;
        context.OutputParameters["TrackingPrefix"] = "TRK-" + destination;
    }
}

Calling the custom API

From the Web API (any HTTP client):

POST /api/data/v9.2/nova_CalculateShipping
Content-Type: application/json

{
    "Weight": 25.5,
    "DestinationCode": "NZ-AKL",
    "Priority": 2
}

From a cloud flow: Use the “Perform an unbound action” Dataverse connector action.

From C# SDK: service.Execute(new OrganizationRequest("nova_CalculateShipping") { ... });

Business events

Business events let Dataverse broadcast events to external systems when specific operations occur.

How they work

  1. Define a business event on a table (e.g., “Order Approved” on the Order table)
  2. Configure the trigger — which message and stage fires the event
  3. Subscribe external systems — Azure Service Bus, Event Hub, webhooks
  4. Events publish automatically when the trigger condition is met

Business events vs plug-ins

Business events push outward; plug-ins process internally
FeatureBusiness EventPlug-in
PurposeNotify external systemsExecute custom logic in Dataverse
DirectionOutbound (Dataverse → external)Internal (within Dataverse pipeline)
Custom codeNo code needed for basic eventsC# code required
SubscribersService Bus, Event Hub, webhooksN/A — plug-in runs internally
Solution-awareYesYes
Use whenExternal systems need to react to Dataverse changesYou need to validate, enrich, or process data within Dataverse
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 with typed request parameters and response properties. It is backed by a C# plug-in and can be called from apps, flows, Web API, or SDK. It is the modern replacement for custom process actions.

Click to flip back

Question

How do you read request parameters in a custom API plug-in?

Click or press Enter to reveal answer

Answer

Through context.InputParameters: decimal weight = (decimal)context.InputParameters['Weight']. Set response values through context.OutputParameters: context.OutputParameters['Cost'] = calculatedCost. The parameter names must match what you defined in the custom API configuration.

Click to flip back

Question

What is a Dataverse business event?

Click or press Enter to reveal answer

Answer

A business event broadcasts an event to external subscribers (Service Bus, Event Hub, webhooks) when a specific Dataverse operation occurs. No custom C# code is needed — you define the event trigger and subscribers. External systems react to the published event.

Click to flip back

Knowledge Check

Elena needs to create an operation that accepts an employee ID and returns their accrued leave balance. The operation must be callable from canvas apps, cloud flows, and an external HR system via REST API. What should she build?

🎬 Video coming soon

Next up: Custom Connectors: OpenAPI & Authentication — wrapping external APIs for Power Platform consumption.

← Previous

Writing Plug-ins: Business Logic, Service & Registration

Next →

Custom Connectors: OpenAPI & Authentication

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.