diff --git a/SAS/TMSS/backend/services/scheduling/lib/constraints.py b/SAS/TMSS/backend/services/scheduling/lib/constraints.py
index ade76fdf3b763aade818c1bb6f0b0c3571fe0880..e262904770496fc295dfd670743d10d6deec03c5 100644
--- a/SAS/TMSS/backend/services/scheduling/lib/constraints.py
+++ b/SAS/TMSS/backend/services/scheduling/lib/constraints.py
@@ -1818,6 +1818,11 @@ def get_earliest_possible_start_time_taking_used_stations_into_account(schedulin
         try:
             # check for any overlapping units...
             blocking_units = get_blocking_scheduled_or_observing_units(scheduling_unit, earliest_possible_start_time)
+
+            if scheduling_unit.priority_queue.value == models.PriorityQueueType.Choices.A.value:
+                # A-prio units are never hindered/blocked by B-prio
+                blocking_units = blocking_units.exclude(priority_queue__value=models.PriorityQueueType.Choices.B.value)
+
             if blocking_units.exists():
                 blocking_observing_units = blocking_units.filter(status__value=models.SchedulingUnitStatus.Choices.OBSERVING.value).all()
                 blocking_scheduled_units = blocking_units.filter(status__value=models.SchedulingUnitStatus.Choices.SCHEDULED.value).all()
@@ -1828,15 +1833,15 @@ def get_earliest_possible_start_time_taking_used_stations_into_account(schedulin
                                  scheduling_unit.id, ','.join(str(u.id) for u in blocking_scheduled_units))
 
                     blocking_scheduled_units_with_start_time = compute_start_times_for_units(list(blocking_scheduled_units), lower_bound, upper_bound, gridder, raise_if_interruped)
-                    scored_units = compute_scores_for_units_with_start_time(blocking_scheduled_units_with_start_time+[SchedulingUnitAndStartTime(scheduling_unit, earliest_possible_start_time)], lower_bound, upper_bound, gridder, raise_if_interruped)
+                    rescored_units = compute_scores_for_units_with_start_time(blocking_scheduled_units_with_start_time+[SchedulingUnitAndStartTime(scheduling_unit, earliest_possible_start_time)], lower_bound, upper_bound, gridder, raise_if_interruped)
                     try:
-                        scored_candidate = [su for su in scored_units if su.scheduling_unit.id==scheduling_unit.id][0]
-                        scored_blocking_units = [su for su in scored_units if su.scheduling_unit.id!=scheduling_unit.id]
+                        rescored_candidate = [su for su in rescored_units if su.scheduling_unit.id==scheduling_unit.id][0]
+                        rescored_blocking_units = [su for su in rescored_units if su.scheduling_unit.id!=scheduling_unit.id]
 
                         # if the candidate has a higher score, then it can override and unschedule the already scheduled units.
                         # so, in that case, ignore the overlap with the blocking scheduled units.
                         # else, the blocking units cannot/willnot be unscheduled, so advance the lower_bound until after the blocking units
-                        better_scoring_blocking_units = [scored_blocking_unit for scored_blocking_unit in scored_blocking_units if scored_candidate.weighted_score < scored_blocking_unit.weighted_score]
+                        better_scoring_blocking_units = [scored_blocking_unit for scored_blocking_unit in rescored_blocking_units if rescored_candidate.weighted_score < scored_blocking_unit.weighted_score]
                     except:
                         logger.debug("get_earliest_possible_start_time_taking_used_stations_into_account: could not re-score candidate unit id=%s and blocking units %s",
                                      scheduling_unit.id, ','.join(str(u.id) for u in blocking_scheduled_units))
@@ -1863,9 +1868,9 @@ def get_earliest_possible_start_time_taking_used_stations_into_account(schedulin
                                         scheduling_unit.id, advanced_earliest_possible_start_time, advanced_lower_bound, upper_bound)
                             return advanced_earliest_possible_start_time
 
-                logger.debug("get_earliest_possible_start_time_taking_used_stations_into_account: SUB id=%s is blocked by units %s at earliest_possible_start_time='%s'",
-                             scheduling_unit.id, ','.join(str(u.id) for u in blocking_units), earliest_possible_start_time)
-                return None
+                    logger.info("get_earliest_possible_start_time_taking_used_stations_into_account: SUB id=%s is blocked by units %s at earliest_possible_start_time='%s'",
+                                 scheduling_unit.id, ','.join(str(u.id) for u in blocking_units), earliest_possible_start_time)
+                    return None
         except Exception as e:
             logger.exception(e)
 
@@ -2029,8 +2034,9 @@ def compute_start_times_for_units(scheduling_units: [models.SchedulingUnitBluepr
 
             if result is not None and result.start_time is not None:
                 units_with_start_time.append(result)
-                logger.info("compute_start_times_for_units: unit [%d/%d] %.1f%% %s",
-                            i+1, len(scheduling_units), 100.0 * (i+1) / len(scheduling_units), result)
+                logger.info("compute_start_times_for_units: %s%s",
+                            "unit [%d/%d] %.1f%%" % (i+1, len(scheduling_units), 100.0 * (i+1) / len(scheduling_units)) if len(scheduling_units)>1 else "",
+                            result)
             else:
                 logger.info("compute_start_times_for_units: no start_time for unit [%d/%d] %.1f%% %s between ['%s', '%s']",
                             i+1, len(scheduling_units), 100.0 * (i+1) / len(scheduling_units), result or su.id, lower_bound, upper_bound)