public void Handle(InsertDocumentIntoRemoteBackOfficeCommand insertCommand) { //note: using commands so that the remote bus does not need a persistence layer if (messageStore.MessageExists(insertCommand.Id)) { bus.Send(new SendAcknowledgementCommand { CorrelationId = insertCommand.CorrelationId, Success = true }); return; } using (var transactionScope = new TransactionScope()) { messageStore.AddMessageId(insertCommand.Id); var result = backOfficeService.InsertDocument(); if (result) { bus.Send(new SendAcknowledgementCommand { CorrelationId = insertCommand.CorrelationId, Success = true }); //commit messageid to message store if successfully inserted to back office. transactionScope.Complete(); return; } } bus.Send( new SendAcknowledgementCommand { CorrelationId = insertCommand.CorrelationId, Success = false, ErrorMessage = "Failed to write to back office with error code xyz" }); }