How does process manager keep track of the association between aggregates : <p>Does a process manager make use of correlation-ids or aggregate-specific identifies to keep track of the <em>process</em> it is managing?</p>

<p>To put it more clearly with an example, consider Figure 2 on <a href="https://msdn.microsoft.com/en-us/library/jj591569.aspx" rel="noreferrer">Saga on Sagas</a>:</p>

<p><a href="https://i.stack.imgur.com/YW3fM.png" rel="noreferrer"><img src="https://i.stack.imgur.com/YW3fM.png" alt="enter image description here"></a></p>

<p>First of all, Process Manager sending a <code>OrderConfirmed</code> event is wrong right? I (as a process manager) cannot send events, only issue commands. Or am I wrong?</p>

<p>Second, how does the process manager correlate the OrderCreated, SeatsReserved, PaymentReceived events from different aggregates? Is it correlation id that each aggregate honors (and copies over), or is it specific identifiers (e.g. SeatsReserved has an Order Id that refers to the Order Aggregate)?</p>

<p>Finally, if it is the case of correlation ids, who <em>creates</em> them? Is it the client who issues a command, like <code>PlaceOrder(order_id, correlation_id)</code>? Is it the Aggregate that accepts the command like <code>PlaceOrder(order_id)</code> and then emits <code>OrderCreated(order_id, corr_id)</code> event? Or, is it the process manager (in some way) that is responsible for this? Alternatively, perhaps correlation ids have nothing to do with this?</p>

<p>Thanks for any help.</p>
