public void HandleMessage(VehicleActivityReportCommand command) { Logger.DebugFormat("Received message command of type {0} ", command.GetType()); var statusReport = new ReportStatus(); try { NHibernateHelper.CreateSession(); Logger.Debug("Nhibernate session created"); ProcessGenerateVehicleActivityReportCommand(command, statusReport); NHibernateHelper.CloseSession(); Logger.Debug("Nhibernate close session"); } catch (Exception e) { statusReport.Error = true; Logger.Error(e); ReportService.NotifyError(command, e.Message); throw; } finally { ReportService.LogReportExecution(command.ReportId, statusReport); } }