public void ProcessMessage(IHandlerContext <InvoiceCreatedEvent> 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("Invoice Created")); stream.AddEvent(orderProcess.AssignInvoiceId(context.Message.InvoiceId)); _eventStore.Save(stream); } context.Send(orderProcess.SendEMailCommand()); }