diff --git a/SAS/ResourceAssignment/ResourceAssigner/lib/assignment.py b/SAS/ResourceAssignment/ResourceAssigner/lib/assignment.py
index 9344f5b7bba5c4aac28d9fc473e6ae1ce5d8f256..b0c49e4945929a52843b2432403ef679996d8bde 100755
--- a/SAS/ResourceAssignment/ResourceAssigner/lib/assignment.py
+++ b/SAS/ResourceAssignment/ResourceAssigner/lib/assignment.py
@@ -215,14 +215,27 @@ class ResourceAssigner():
 
             if predecessor_trees:
                 otdb_id = specification_tree['otdb_id']
+                pred_otdb_ids = [pt['otdb_id'] for pt in predecessor_trees]
+                logger.info('proccessing predecessors otdb_ids=%s for otdb_id=%s', pred_otdb_ids, otdb_id)
+
                 task = self.radbrpc.getTask(otdb_id=otdb_id)
 
-                for predecessor_tree in predecessor_trees:
-                    pred_otdb_id = predecessor_tree['otdb_id']
-                    predecessor_task = self.radbrpc.getTask(otdb_id=pred_otdb_id)
-                    if predecessor_task and predecessor_task['id'] not in task['predecessor_ids']:
-                        self.radbrpc.insertTaskPredecessor(task['id'], predecessor_task['id'])
-                    self.processPredecessors(predecessor_tree)
+                if task:
+                    for predecessor_tree in predecessor_trees:
+                        #first process the predecessor's predecessors
+                        self.processPredecessors(predecessor_tree)
+
+                        #then check if the predecessor needs to be linked to this task
+                        pred_otdb_id = predecessor_tree['otdb_id']
+                        predecessor_task = self.radbrpc.getTask(otdb_id=pred_otdb_id)
+                        if predecessor_task:
+                            if predecessor_task['id'] not in task['predecessor_ids']:
+                                logger.info('connecting predecessor task with otdb_id=%s to it\'s successor with otdb_id=%s', pred_otdb_id, otdb_id)
+                                self.radbrpc.insertTaskPredecessor(task['id'], predecessor_task['id'])
+                        else:
+                            logger.warning('could not find predecessor task with otdb_id=%s in radb for task otdb_id=%s', pred_otdb_id, otdb_id)
+            else:
+                logger.info('no predecessors for otdb_id=%s', specification_tree['otdb_id'])
 
         except Exception as e:
             logger.error(e)