diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py
index c64eeacbcd0b1255a6f45a7be11e807264ec71d4..fa7a26739c06ec5f7c714fa88857aa007976bb99 100644
--- a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py
@@ -128,16 +128,26 @@ def _get_observation_hours_per_category(cycle: models.Cycle) -> {}:
     """
     from lofar.sas.tmss.tmss.workflowapp.models.schedulingunitflow import SchedulingUnitProcess
 
-    result = {'total_duration_failed': 0, 'total_duration_idle': 0}
+    result = {'total_duration_failed': 0, 'total_duration_idle': 0, 'DDT Com Rep': 0}
 
+    # Filter System Unavailability
+    # TODO: Maybe add some other case scenarios where the system is not up and running?
+    reservations_duration = models.Reservation.objects.filter(start_time__gte=cycle.start, stop_time__lte=cycle.stop).\
+        filter(specifications_doc__activity__type='maintenance').aggregate(duration=Sum(F('stop_time') - F('start_time')))['duration']
+    result['System Unavailability'] = reservations_duration.total_seconds() if reservations_duration else None
+
+    # Filter durations for each prio basing on SUBs and projects
     cycle_subs = models.SchedulingUnitBlueprint.objects.filter(draft__scheduling_set__project__cycles=cycle.pk)
-    # TODO: Filter also according to "DDT Com Rep", and "System Unavailability".
-    # Filter durations for each prio basing on SUBs states
     for prio in models.PriorityQueueType.Choices:
         result[f'total_duration_successful_{prio.name}'] = 0
         subs = cycle_subs.filter(priority_queue=prio.value)
         for sub in subs:
             if sub.observed_duration:
+                # Filter DDT Com Rep
+                project_categoy = sub.project.project_category
+                if project_categoy == 'ddt' or project_categoy == 'commissioning':  # TODO: Rep as repetition.
+                    result['DDT Com Rep'] += sub.observed_duration.total_seconds()
+                # Distinguish successful and failed
                 result['total_duration_idle'] += sub.observed_duration.total_seconds()
                 sup = SchedulingUnitProcess.objects.filter(su=sub).first()
                 result[f'total_duration_successful_{prio.name}'] += sub.observed_duration.total_seconds() if sup and sup.results_accepted else 0