diff --git a/LTA/LTAIngest/LTAIngestServer/LTAIngestAdminServer/lib/ingesttmssadapter.py b/LTA/LTAIngest/LTAIngestServer/LTAIngestAdminServer/lib/ingesttmssadapter.py
index 4dcf57e8dae0e610460d2c71b365d00470132266..3c59c8f6d7189d690788d164a81895ef833774aa 100644
--- a/LTA/LTAIngest/LTAIngestServer/LTAIngestAdminServer/lib/ingesttmssadapter.py
+++ b/LTA/LTAIngest/LTAIngestServer/LTAIngestAdminServer/lib/ingesttmssadapter.py
@@ -79,7 +79,7 @@ class IngestEventMessageHandlerForIngestTMSSAdapter(UsingToBusMixin, IngestEvent
 
     def onJobFailed(self, job_dict):
         if self.is_tmss_job(job_dict):
-            self.tmss_client.set_subtask_status(job_dict['export_id'], 'error')
+            self.tmss_client.set_subtask_status(job_dict['export_id'], 'error', 'Ingest job failed')
 
     def onJobFinished(self, job_dict):
         if self.is_tmss_job(job_dict):
diff --git a/QA/QA_Service/lib/qa_service.py b/QA/QA_Service/lib/qa_service.py
index b5a6c57dbb96d6ffe93db3172a166b9f655a5ce0..51233871f526f40e2399977cbdf29019060a8f03 100644
--- a/QA/QA_Service/lib/qa_service.py
+++ b/QA/QA_Service/lib/qa_service.py
@@ -234,7 +234,7 @@ class QAService:
             return hdf5_file_path
 
         if subtask_id:
-            self.tmsssession.set_subtask_status(subtask_id, 'error')
+            self.tmsssession.set_subtask_status(subtask_id, 'error', 'could not convert observation to a qa h5 file')
 
         return None
 
@@ -273,7 +273,7 @@ class QAService:
                                                   'plot_dir_path': plot_dir_path or ''})
         else:
             if subtask_id:
-                self.tmsssession.set_subtask_status(subtask_id, 'error')
+                self.tmsssession.set_subtask_status(subtask_id, 'error', 'could not create QA plots')
 
     def finalize_qa(self, otdb_id=None, subtask_id=None):
         '''
diff --git a/SAS/DataManagement/Cleanup/CleanupService/service.py b/SAS/DataManagement/Cleanup/CleanupService/service.py
index ac99a0035a6af0ea0e540f26fed7e1873f320295..ef65c57aa3ccb4108c6be8f76a34e13e41a00e52 100644
--- a/SAS/DataManagement/Cleanup/CleanupService/service.py
+++ b/SAS/DataManagement/Cleanup/CleanupService/service.py
@@ -520,7 +520,7 @@ class TMSSEventMessageHandlerForCleanup(TMSSEventMessageHandler):
             logger.info("cleanup subtask id=%s: %s", subtask['id'], result.get('message',""))
 
         if any([not r['deleted'] for r in results]):
-            self._tmss_client.set_subtask_status(subtask['id'], 'error')
+            self._tmss_client.set_subtask_status(subtask['id'], 'error', 'Error during cleanup: not all predecessor task data could be deleted.')
         else:
             self._tmss_client.set_subtask_status(subtask['id'], 'finishing')
             self._tmss_client.set_subtask_status(subtask['id'], 'finished')
@@ -550,7 +550,7 @@ class TMSSEventMessageHandlerForCleanup(TMSSEventMessageHandler):
             logger.info("cleanup subtask id=%s: %s", subtask['id'], result.get('message',""))
 
         if any([not r['deleted'] for r in results]):
-            self._tmss_client.set_subtask_status(subtask['id'], 'error')
+            self._tmss_client.set_subtask_status(subtask['id'], 'error', 'Error during cleanup: not all predecessor task data could be deleted.')
         else:
             self._tmss_client.set_subtask_status(subtask['id'], 'finishing')
             self._tmss_client.set_subtask_status(subtask['id'], 'finished')