diff --git a/atdb/taskdatabase/services/calculated_qualities.py b/atdb/taskdatabase/services/calculated_qualities.py
index da4c82b4ffc39d1ce3f2b45737f623653ee9fb09..fe83c0be14fc504c489a98bc748d045a5b0cddf7 100644
--- a/atdb/taskdatabase/services/calculated_qualities.py
+++ b/atdb/taskdatabase/services/calculated_qualities.py
@@ -27,7 +27,41 @@ def calculate_qualities(task, tasks_for_this_sasid, quality_thresholds):
     def calculate_quality_task(task):
         """
         calculate the quality of this task based on rfi_percent values
-        The threshold values are written from a configuration json blob
+        The threshold values are read from a configuration json blob
+
+        Using this algorithm from SDCO:
+                rfi_i <= 20 % is good
+                20% <= rfi_i <= 50 is moderate
+                rfi_i > 50 is poor.
+                except when rfi_percent	= 0
+        """
+        try:
+
+            summary = task.quality_json["summary"]
+
+            summary_flavour = get_summary_flavour(task)
+
+            if summary_flavour == SummaryFlavour.IMAGING_COMPRESSION.value:
+                rfi_percent = float(summary['details']['rfi_percent'])
+
+            if summary_flavour == SummaryFlavour.DEFAULT.value:
+                # summary is a dict, with (unknown) filenames as a key, look for 'rfi_percent' in them
+                for key in summary:
+                    record = summary[key]
+                    rfi_percent = float(record['rfi_percent'])
+
+            return rfi_percentage_to_quality(rfi_percent, quality_thresholds['moderate'], quality_thresholds['poor'])
+
+        except Exception as error:
+            # when rfi_percentage is missing, then the quality cannot be calculated.
+            # Just continue without it
+            pass
+
+
+    def calculate_quality_task_per_file(task):
+        """
+        calculate the quality of this task based on rfi_percent values per summary file
+        The threshold values are read from a configuration json blob
 
         Using this algorithm from SDCO:
                 rfi_i <= 20 % is good