diff --git a/atdb/atdb/static/taskdatabase/style.css b/atdb/atdb/static/taskdatabase/style.css
index 5a9474dc821e986f99447d450413324c3d2bf9b7..5e4bce6b5f3f230602792cbd6eddbac6d8018acd 100644
--- a/atdb/atdb/static/taskdatabase/style.css
+++ b/atdb/atdb/static/taskdatabase/style.css
@@ -3,12 +3,12 @@ TD {
   font-size: 12pt;
 }
 
-.defining,.staging,.fetching,.processing,.storing,.scrub,.scrubbing,.archiving,.discarding,.pre_archiving {
+.defining,.staging,.fetching,.processing,.storing,.scrub,.scrubbing,.archiving,.aggregating {
   font-style: italic;
   color: green;
 }
 
-.defined,.staged,.fetched,.processed,.stored,.validated,.scrubbed,.archived,.pre_archived,.finished {
+.defined,.staged,.fetched,.processed,.stored,.validated,.scrubbed,.archived,.finished,.aggregated {
   background-color: lemonchiffon;
   color: blue;
 }
@@ -32,10 +32,9 @@ TD {
   background-color: lightgreen;
 }
 
-.aggregate_failed {
-  font-weight: bold;
+.aggregate_failed,.aggregating_failed {
   color: red;
-  background-color: lightgreen;
+  font-weight: bold;
 }
 
 
@@ -149,3 +148,8 @@ p.title {
   display: inline-block;
   vertical-align: middle;
 }
+
+.img {
+    color: white;
+    font-family: "Courier New";
+}
\ No newline at end of file
diff --git a/atdb/taskdatabase/models.py b/atdb/taskdatabase/models.py
index daf9ce301ead8a54105c35f53e0068be9c9665d1..46809a3f7953dbc70354aaa105a8bb8681e2d2a1 100644
--- a/atdb/taskdatabase/models.py
+++ b/atdb/taskdatabase/models.py
@@ -239,7 +239,9 @@ class Task(models.Model):
 
                     # if so, temporarily put it on hold so that the ancillary service can grab it with it
                     if self.is_summary:
-                        self.resume = False
+                        #TODO: uncomment to enable aggregator
+                        #self.resume = False
+                        pass
 
             except Exception as error:
                 # this should never happen
diff --git a/atdb/taskdatabase/services/activities_handler.py b/atdb/taskdatabase/services/activities_handler.py
index 0df9e790862d6d6633c333ee3746de1a70843329..68b1666bb6b1a171878b441bfd36a04a4697dd73 100644
--- a/atdb/taskdatabase/services/activities_handler.py
+++ b/atdb/taskdatabase/services/activities_handler.py
@@ -136,16 +136,24 @@ def update_activity(task):
     if task.status in processed_statusses:
         current_is_processed = activity.is_processed
         activity.is_processed = True
+        non_discarded_found = False
         for t in Task.objects.filter(sas_id=task.sas_id):
             if t.status not in processed_statusses:
                 activity.is_processed = False
                 break
 
+            # at least one of the tasks should NOT be in discarded,
+            # otherwise a fully discarded SAS_ID will also register as 'is_processed' and ready to 'AGGREGATE'
+            if t.status != State.DISCARDED.value:
+                non_discarded_found = True
+
         # only save when changed
         if activity.is_processed != current_is_processed:
             # if the whole activity has become processed, then set the status of this activity to 'AGGREGATE'
-            if activity.is_processed:
-                activity.status = State.AGGREGATE.value
+            if (activity.is_processed & non_discarded_found):
+                # TODO: uncomment to enable aggregator
+                # activity.status = State.AGGREGATE.value
+                pass
 
             activity.save()
 
diff --git a/atdb/taskdatabase/static/taskdatabase/style.css b/atdb/taskdatabase/static/taskdatabase/style.css
index 6ca2e94521d94a8ec94f9977d1fc8facfd3efcb7..5e4bce6b5f3f230602792cbd6eddbac6d8018acd 100644
--- a/atdb/taskdatabase/static/taskdatabase/style.css
+++ b/atdb/taskdatabase/static/taskdatabase/style.css
@@ -3,12 +3,12 @@ TD {
   font-size: 12pt;
 }
 
-.defining,.staging,.fetching,.processing,.storing,.scrub,.scrubbing,.archiving {
+.defining,.staging,.fetching,.processing,.storing,.scrub,.scrubbing,.archiving,.aggregating {
   font-style: italic;
   color: green;
 }
 
-.defined,.staged,.fetched,.processed,.stored,.validated,.scrubbed,.archived,.finished {
+.defined,.staged,.fetched,.processed,.stored,.validated,.scrubbed,.archived,.finished,.aggregated {
   background-color: lemonchiffon;
   color: blue;
 }
@@ -32,10 +32,9 @@ TD {
   background-color: lightgreen;
 }
 
-.aggregate_failed {
-  font-weight: bold;
+.aggregate_failed,.aggregating_failed {
   color: red;
-  background-color: lightgreen;
+  font-weight: bold;
 }
 
 
diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html
index 9bbf7bceb3fb2528fb24653e79f0d49cc6191d68..35df7c2ab88f7b2c6d3d17f6a154226f7173dbe3 100644
--- a/atdb/taskdatabase/templates/taskdatabase/index.html
+++ b/atdb/taskdatabase/templates/taskdatabase/index.html
@@ -31,7 +31,7 @@
             {% include 'taskdatabase/pagination.html' %}
         </div>
     </div>
-    <p class="footer"> Version 15 Apr 2024
+    <p class="footer"> Version 19 Apr 2024 (a)
 </div>
 
 {% include 'taskdatabase/refresh.html' %}
diff --git a/atdb/taskdatabase/tests/test_models_processed_summary.py b/atdb/taskdatabase/tests/test_models_processed_summary.py
index 706e3acf3c77daa925b34d2e80fc14ccbeef80ed..3b996d524a57a6f7ed8e945eff0b75931e3c559e 100644
--- a/atdb/taskdatabase/tests/test_models_processed_summary.py
+++ b/atdb/taskdatabase/tests/test_models_processed_summary.py
@@ -32,14 +32,16 @@ class TestProcessedSummary(TestCase):
         actual = self.task1.resume
         self.assertEqual(actual,  True)
 
-    def test_processed_on_hold(self):
-        """
-        task 2 is processed, and a summary dataproduct. Should go on hold
-        """
+    # TODO: uncomment to enable aggregator
+    # def test_processed_on_hold(self):
+    #     """
+    #     task 2 is processed, and a summary dataproduct. Should go on hold
+    #     """
+    #
+    #     actual = self.task2.resume
+    #     # this test fails, because "self.resume = False" is still commented out in models.py L249
+    #     self.assertEqual(actual,  False)
 
-        actual = self.task2.resume
-        # this test fails, because "self.resume = False" is still commented out in models.py L249
-        self.assertEqual(actual,  False)
 
     def test_activity_is_processed(self):
         """
diff --git a/atdb/taskdatabase/tests/test_summary_tasks.py b/atdb/taskdatabase/tests/test_summary_tasks.py
index 6aaafde8fde60a35eaef82a3b34b1a9a932b364b..667f837a66b2b65f0f13aec05ea0e059ee0ed6b7 100644
--- a/atdb/taskdatabase/tests/test_summary_tasks.py
+++ b/atdb/taskdatabase/tests/test_summary_tasks.py
@@ -51,12 +51,13 @@ class TestSummaryTasks(TestCase):
         self.summary_task_processed_77777.save()
         self.assertTrue(self.summary_task_processed_77777.is_summary)
 
-    def test_summary_task_processed_goes_on_halt(self):
-        """
-        test summary task, at 'stored' it should know that it is a summary task and return True)
-        """
-        self.summary_task_processed_88888.save()
-        self.assertFalse(self.summary_task_processed_88888.resume)
+    # TODO: uncomment to enable aggregator
+    # def test_summary_task_processed_goes_on_hold(self):
+    #     """
+    #     test summary task, at 'stored' it should know that it is a summary task and return True)
+    #     """
+    #     self.summary_task_processed_88888.save()
+    #     self.assertFalse(self.summary_task_processed_88888.resume)
 
     def test_activity_77777_not_is_processed(self):
         """
diff --git a/atdb/taskdatabase/tests/test_update_activity.py b/atdb/taskdatabase/tests/test_update_activity.py
index 212534490838495f3c448467d48e2667ca019396..35501e48afc23c9b7aec77d6a8478abbf1c19a18 100644
--- a/atdb/taskdatabase/tests/test_update_activity.py
+++ b/atdb/taskdatabase/tests/test_update_activity.py
@@ -185,16 +185,17 @@ class TestUpdateActivity(TestCase):
         actual = activity.is_processed
         self.assertEqual(actual,  False)
 
-    def test_is_processed(self):
-        """
-        task 6, 7 and 8 are processed,
-        activity.is_processed should be true and activity status should go to 'aggregate'
-        """
-
-        activity = self.task6.activity
-
-        actual = activity.is_processed
-        self.assertEqual(actual, True)
-
-        actual = activity.status
-        self.assertEqual(actual, State.AGGREGATE.value)
\ No newline at end of file
+    # TODO: uncomment to enable aggregator
+    # def test_is_processed(self):
+    #     """
+    #     task 6, 7 and 8 are processed,
+    #     activity.is_processed should be true and activity status should go to 'aggregate'
+    #     """
+    #
+    #     activity = self.task6.activity
+    #
+    #     actual = activity.is_processed
+    #     self.assertEqual(actual, True)
+    #
+    #     actual = activity.status
+    #     self.assertEqual(actual, State.AGGREGATE.value)
\ No newline at end of file