diff --git a/LTA/LTAIngest/LTAIngestServer/LTAIngestAdminServer/lib/ingestjobmanagementserver.py b/LTA/LTAIngest/LTAIngestServer/LTAIngestAdminServer/lib/ingestjobmanagementserver.py
index cb78855588b32d717b1cf218fcbbba8e310b562d..72a2df25309cf62121853a69f289b0afb5776153 100644
--- a/LTA/LTAIngest/LTAIngestServer/LTAIngestAdminServer/lib/ingestjobmanagementserver.py
+++ b/LTA/LTAIngest/LTAIngestServer/LTAIngestAdminServer/lib/ingestjobmanagementserver.py
@@ -460,8 +460,10 @@ class IngestJobManager:
 
                     if next_retry_attempt < self.__max_num_retries:
                         if message and 'not on disk' in message:
-                            logger.info('job %s transfer failed because source data was not on disk, not retrying anymore',
-                                job_id)
+                            logger.info('job %s transfer failed because source data was not on disk, not retrying anymore', job_id)
+                            new_status = JobFailed
+                        elif message and 'invalid SIP' in message:
+                            logger.info('job %s transfer failed because the SIP is invalid, not retrying anymore', job_id)
                             new_status = JobFailed
                         else:
                             new_status = JobRetry
@@ -716,7 +718,7 @@ class IngestJobManager:
         try:
             with self.__jobs_for_transfer_queue_peeker:
                 num_scheduled = self.__jobs_for_transfer_queue_peeker.nr_of_messages_in_queue(0.01)
-                if num_scheduled == 0:
+                if num_scheduled <= 3:
                     scheduled_jads = self.getJobAdminDicts(status=JobScheduled)
                     return len(scheduled_jads) <= 3
                 return False