What's changed: Created PL-400 Chapter 3 (domain: Extend the platform, part 1 = plug-ins): Dataverse plug-ins (pipeline stages pre-validation/pre-operation/post-operation, sync/async, execution context IPluginExecutionContext, Pre/Post Images, Organization service CRUD, sandbox/performance, Plug-in Registration Tool) and custom APIs and business events (custom API message bound/unbound, Dataverse business events, plug-in implementation).
3.2Custom APIs and business events
Understand custom API messages (bound/unbound), Dataverse business events, registration/publishing, and invocation from plug-ins.
Bundle repeated server operations into a custom API as a custom message, reusable from multiple clients/plug-ins.
3.2.1Custom API and bound/unbound
A custom API defines a reusable custom operation (message) in Dataverse with input/output parameters, implemented by a plug-in. Choose bound (operates on a specific table’s record) or unbound (table-independent, global). It is distinct from a custom connector (which ingests an external REST API)—a custom API is an in-server custom operation.
3.2.2Dataverse business events
Dataverse business events publish business occurrences (e.g., order confirmed) as events that subscribers react to. Unlike CRUD table-operation events, you can define/publish semantically meaningful business events. Combine with custom APIs to compose extensible logic.
Cues: "reusable in-server custom operation" = custom API. "tied to a specific table" = bound; "table-independent global" = unbound. "publish a business occurrence as an event" = Dataverse business events. Custom API (own message) vs custom connector (ingest external API) differ.
Watch the mix-ups: (1) Custom API (in-server message) vs custom connector (ingest external API). (2) Bound (table-tied) vs unbound (global). (3) Business events (business) vs CRUD table events. (4) A custom API is implemented by a plug-in.
3.2.3Section summary
- Custom API = reusable custom message; bound (table)/unbound (global)
- Dataverse business events publish business occurrences as events
- A custom API is implemented by a plug-in; distinct from a custom connector
Sign in to track progress — Log in.
Quick check
(just a quick review)Q1. You want a reusable custom operation (message) in Dataverse callable from multiple clients/plug-ins. Best?
Q2. You want a custom API that operates on a specific table’s record. Which kind?
Q3. You want a global custom API not tied to any table. Which kind?
Q4. You want to publish a business occurrence like "order confirmed" as an event for subscribers to react. Best?
Q5. Which correctly distinguishes a custom API from a custom connector?

