public void ProcessMessage(IHandlerContext <OrderCreatedEvent> context) { if (!context.TransportMessage.IsHandledHere()) { return; } var orderProcessId = new Guid(context.TransportMessage.CorrelationId); var orderProcess = new OrderProcess(orderProcessId); using (_databaseContextFactory.Create(ProcessManagementData.ConnectionStringName)) { var stream = _eventStore.Get(orderProcessId); if (stream.IsEmpty) { throw new ApplicationException( string.Format("Could not find an order process with correlation id '{0}'.", context.TransportMessage.CorrelationId)); } stream.Apply(orderProcess); stream.AddEvent(orderProcess.ChangeStatus("Order Created")); stream.AddEvent(orderProcess.AssignOrderId(context.Message.OrderId)); _eventStore.SaveEventStream(stream); } context.Send(orderProcess.CreateInvoiceCommand()); }