Dynamics 365 Plugin Execution Pipeline

2 Comments

In Dynamics 365, when a plugin is run, it executes based on a pipeline execution model.

Plugins can be triggered by:

  • A user action in the Dynamics 365 user interface, such as retrieving a record
  • Events triggered by the Organization Service or the WebAPI, such as retrieving a record

Post-Operation events in the pipeline are processed either:

  • synchronously – these plugins are are executed immediately and run in a specific order
  • asynchronously – these plugins are executed by the Queue Agent and run later by the async service

Other events are processed synchronously.

The event pipeline is as following:

EventStage nameStage numberDescriptionSync/Async
Pre-EventPre-validation10Executes before the main system operation and outside the database transaction.Sync
Pre-EventPre-operation20Executes before the main system operation and executed within the database transaction.Sync
Platform Core OperationMainOperation30This is the actual platform operation. No plugins registered here.
Post-EventPost-operation40Executes after the main operation and within the database transaction (if sync).Sync and Async

Plug-ins that execute during the database transaction and pass an exception back to the platform cancel the core operation.

The pipeline is detailed here.

 

THANKS FOR READING. BEFORE YOU LEAVE, I NEED YOUR HELP.
 

I AM SPENDING MORE TIME THESE DAYS CREATING YOUTUBE VIDEOS TO HELP PEOPLE LEARN THE MICROSOFT POWER PLATFORM.

IF YOU WOULD LIKE TO SEE HOW I BUILD APPS, OR FIND SOMETHING USEFUL READING MY BLOG, I WOULD REALLY APPRECIATE YOU SUBSCRIBING TO MY YOUTUBE CHANNEL.

THANK YOU, AND LET'S KEEP LEARNING TOGETHER.

CARL

https://www.youtube.com/carldesouza

 

ABOUT CARL DE SOUZA

Carl de Souza is a developer and architect focusing on Microsoft Dynamics 365, Power BI, Azure, and AI.

carldesouza.comLinkedIn Twitter | YouTube

 

2 Responses to Dynamics 365 Plugin Execution Pipeline

Leave a Reply

Your email address will not be published. Required fields are marked *