Difference between Enlisting, Starting, Stopping, and Unenlisting subscribers (Ports, Orchestration) in BizTalk Server

Introduction -

Hi Everyone, In this post I will explore the different states a subscriber like Port, Orchestration etc can be have.
I had to do a lot of research, to write this post and also it took me considerable time to write.

Description -

Publishers like Receive ports can be enabled or disabled, where as
Subscribers like Send ports, Orchestration can be enlisted, started, unelisted or stopped.
Enlist means Create Subscription in MessageBox.
Unenlist means Remove Subscription from MessageBox.

Let’s look into the functionality by taking a Subscriber

Scenario 1) Started - When a subscriber is Started, the subscriber is enlisted also this means that the message box can receive any messages on behalf of the subscriber. Hence the message flows smoothly through the Message box.

Scenario 2) Stopped but Enlisted When a Subscriber is stopped, the Subscriber will not be Unenlisted, it will be Enlisted – here  the Subscriber is available, Message box can receive messages on behalf of Subscriber, but the subscriber is not ready to process the messages because the subscriber is stopped.
I.e. Messages come into the Message box and will be waiting inside the Message box in Suspended (Resumable) state till the subscriber is started,

Scenario 3) Unelisted - When we are unenlisting a Subscriber, it will be stopped also – means that the Subscriber is unavailable hence the message box cannot receive any messages on behalf of subscriber.
An error occurs with the following description
Error details: “The published message could not be routed because no subscribers were found. This error occurs if the subscribing orchestration or send port has not been enlisted, or if some of the message properties necessary for subscription evaluation have not been promoted. Please use the BizTalk Administration console to troubleshoot this failure. “

Based on the above behavior we can say that the subscriber can have the following state at any given point of time
1) Started
2) Stopped & Enlisted
3) Unenlisted

When a subscriber is Started – we can either Stop or Unenlist
When a subscriber is Stopped - we can either Start or Unenlist.
When a subscriber is Unenlisted – we can either Start or Enlist.
  
Note – 1) Although Orchestration is a subscriber as well as receiver, the orchestration can have states as listed above.

2) We can never unenlist a send port that has a dependency with an orchestration that is started,
But we can stop the send port when the orchestration is in started state.

3) When we stop an orchestration the message will be in suspended state and has to be manually resumed, whereas when a send port is in stopped state the message will resume flowing automatically after the send port is started.