Create a .NET class library implementing IPlugin with an Execute method; within Execute, retrieve the IOrganizationService and ITracingService from the service provider
Extract the target entity from the InputParameters collection (context.InputParameters["Target"] as Entity) and read the fields needed for the external callout
Use HttpClient (or WebClient in older plugin patterns) to POST to the external system from within Execute; wrap the callout in a try/catch and use ITracingService.Trace() to log request/response for debugging
Sign and register the plugin assembly using the Plug-in Registration Tool (part of Power Platform CLI or XrmToolBox); create a step on the Create message for the target table at the desired pipeline stage (Pre-Operation or Post-Operation)
For sandbox plugins (required in online environments), ensure the external URL is reachable from Dataverse's sandbox — private or on-premises endpoints are not reachable without a Dataverse-side outbound network configuration
Test by creating a record and inspecting the plugin trace log in the Power Platform admin center under Plug-in Trace Log settings
Known gotchas
Plugins running in the sandbox (online Dynamics 365) have a 2-minute execution timeout for the entire plugin chain; an external callout that is slow or unavailable will cause the triggering user operation to fail with a generic error
Synchronous Post-Operation plugins that throw an exception roll back the entire transaction including the triggering record creation — use asynchronous plugin steps for non-critical callouts that should not block the user
IOrganizationService obtained from the plugin context runs under the system user in some configurations, not the triggering user — impersonation via IOrganizationServiceFactory.CreateOrganizationService(context.InitiatingUserId) is needed if field-level security or team ownership matters
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp