diff --git a/atdb/taskdatabase/models.py b/atdb/taskdatabase/models.py
index 4d51bcf255c5254f11551fadcc2b305fb455b43c..607a9f36f9e8721caaae6fbf1585efd6c2c88f60 100644
--- a/atdb/taskdatabase/models.py
+++ b/atdb/taskdatabase/models.py
@@ -36,6 +36,20 @@ def convert_quality_to_list_for_template(task):
     return list
 
 
+def convert_quality_to_shortlist_for_template(task):
+    list = []
+
+    try:
+        list.append(str(task.quality['uv-coverage']))
+        list.append(str(task.quality['sensitivity']))
+        list.append(str(task.quality['observing-conditions']))
+
+    except Exception as err:
+        pass
+
+    return list
+
+
 class Task(models.Model):
 
     # Task control properties
@@ -92,18 +106,25 @@ class Task(models.Model):
     def has_quality(self):
         # todo: check if there is a 'quality' structure in the 'task.outputs'
         try:
-            quality = self.outputs[0]['quality']
+            quality = self.outputs['quality']
             return True
         except:
-            return False
+            try:
+                quality = self.outputs[0]['quality']
+                return True
+            except:
+                return False
 
     @property
     def quality(self):
         # todo: check if there is a 'quality' structure in the 'task.outputs'
         try:
-            return self.outputs[0]['quality']
+            return self.outputs['quality']
         except:
-            return None
+            try:
+                return self.outputs[0]['quality']
+            except:
+                return None
 
     @property
     def quality_as_list(self):
@@ -113,6 +134,14 @@ class Task(models.Model):
         except:
             return None
 
+    @property
+    def quality_as_shortlist(self):
+        try:
+            q = convert_quality_to_shortlist_for_template(self)
+            return q
+        except:
+            return None
+
 class LogEntry(models.Model):
     cpu_cycles = models.IntegerField(null=True,blank=True)
     wall_clock_time = models.IntegerField(null=True,blank=True)
diff --git a/atdb/taskdatabase/templates/taskdatabase/quality/quality_page.html b/atdb/taskdatabase/templates/taskdatabase/quality/quality_page.html
index e8511c0ba6645f16b8a57d6bc6799dd31b06ba8d..6d3b8881cef4dc1a1a301f1dd9ad9e1609b3543c 100644
--- a/atdb/taskdatabase/templates/taskdatabase/quality/quality_page.html
+++ b/atdb/taskdatabase/templates/taskdatabase/quality/quality_page.html
@@ -9,7 +9,7 @@
         <div class="row">
             <div class="col-8">
                 <h3>Quality Diagnostics</h3>
-                This overview shows the Quality Diagnostics of all the task that have this information'.
+                This overview shows the Quality Diagnostics of all the task that have this information.
                 <hr>
             </div>
         </div>
diff --git a/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html b/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html
index 75c461e2296df90e3092b03e3231195942ff4ff4..e589a047527954e808536924de8af1ec615e0e1e 100644
--- a/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html
+++ b/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html
@@ -15,29 +15,35 @@
                            data-popup-url="{% url 'task-details' task.id my_tasks.number %}"
                            ><i class="fas fa-list"></i> Details
                         </a>&nbsp;
+                        {% if task.has_quality %}
+                            <a class="open-modal btn btn-primary btn-sm"
+                               href="{% url 'task-quality' task.id my_tasks.number %}"
+                               data-popup-url="{% url 'task-quality' task.id my_tasks.number %}"
+                               ><i class="fas fa-balance-scale-right"></i> Quality
+                            </a>&nbsp;
+                        {% endif %}
                     {% endif %}
                 </td>
 
-                {% if task.resume  %}
-                    <td class="bigger">{{ task.status }}</td>
-                {% endif %}
-                {% if not task.resume  %}
-                    <td class="bigger">{{ task.status }} (holding)</td>
-                {% endif %}
-
                 <td>{{ task.project }}</td>
                 <td>{{ task.sas_id }}</td>
 
                 <td>{{ task.filter }} </td>
 
                 {% if task.has_quality %}
-                {% for value in task.quality_as_list %}
-                    <td>{{value}}</td>
-                 {% endfor %}
+                    {% for value in task.quality_as_shortlist %}
+                        <td>{{value}}</td>
+                     {% endfor %}
+                {% else %}
+                        <td>-</td><td>-</td><td>-</td>
                 {% endif %}
 
-
                 <td>
+                    <a href="{% url 'task-validate-view' task.pk 'poor' 'validated' my_tasks.number %}" class="btn btn-danger btn-sm" role="button"><i class="fas fa-check"></i> Poor</a>
+                    <a href="{% url 'task-validate-view' task.pk 'moderate' 'validated' my_tasks.number %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-check"></i> Moderate</a>
+                    <a href="{% url 'task-validate-view' task.pk 'good' 'validated' my_tasks.number %}" class="btn btn-success btn-sm" role="button"><i class="fas fa-check"></i> Good</a>
+
+                </td>
 
                 </tr>
             </div>
diff --git a/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation_headers.html b/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation_headers.html
index cd699a598401ff3848aa79ade6099795e5574dc3..bb346737bf9c7a53182045cb295e7ce74b87df17 100644
--- a/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation_headers.html
+++ b/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation_headers.html
@@ -2,15 +2,11 @@
     <th>ID</th>
     <th>Details</th>
 
-    <th>Status</th>
     <th>Project</th>
     <th>SAS_ID</th>
     <th>filter</th>
     <th>uv-coverage</th>
     <th>Sensitivity</th>
     <th>Conditions</th>
-    <th>Diagnostic plots</th>
-    <th>Summary parset</th>
-    <th>Summary logs</th>
-    <th>Summary hf5</th>
+    <th>Choose a Quality</th>
 </tr>
\ No newline at end of file
diff --git a/atdb/taskdatabase/templates/taskdatabase/validation/validation_page.html b/atdb/taskdatabase/templates/taskdatabase/validation/validation_page.html
index 7382e4c58f9c29af36438efde0853c9e78758475..ad60380d51bacdc879330f0e43bf1f68582ee9ea 100644
--- a/atdb/taskdatabase/templates/taskdatabase/validation/validation_page.html
+++ b/atdb/taskdatabase/templates/taskdatabase/validation/validation_page.html
@@ -10,6 +10,9 @@
             <div class="col-8">
                 <h3>Validation</h3>
                 These are the tasks in status 'stored' that can be validated. Click one of the quality buttons to validate.
+                <td>
+                     {% include 'taskdatabase/filter/search.html' %}
+                 </td>
                 <hr>
             </div>
         </div>
diff --git a/atdb/taskdatabase/urls.py b/atdb/taskdatabase/urls.py
index d69f7d87f110aa0a586ba61c09c4ace6016568c9..ad825a43387d0a773a0659b8a3691ee5c5a266ac 100644
--- a/atdb/taskdatabase/urls.py
+++ b/atdb/taskdatabase/urls.py
@@ -81,6 +81,8 @@ urlpatterns = [
     path('tasks/<int:pk>/setstatus/<new_status>/<page>', views.TaskSetStatus, name='task-setstatus-view'),
     path('tasks/<int:pk>/setstatus/<new_status>', views.TaskSetStatus, name='task-details-setstatus'),
 
+    path('tasks/<int:pk>/validate/<quality>/<new_status>/<page>', views.TaskValidate, name='task-validate-view'),
+
     path('tasks/<int:pk>/change_priority/<priority_change>/<page>', views.ChangePriority, name='task-change-priority'),
     path('tasks/<int:pk>/change_priority/<priority_change>', views.ChangePriority, name='task-change-priority'),
     path('tasks/sort-tasks/<sort>', views.SortTasks, name='sort-tasks'),
diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py
index 2597e4ee233dc793ce9efb63bf568033d6cbac12..e13381a8c5a33cbca9f9d53e511a7d2d1eee4531 100644
--- a/atdb/taskdatabase/views.py
+++ b/atdb/taskdatabase/views.py
@@ -337,7 +337,6 @@ class ShowQualityPage(ListView):
     context_object_name = 'my_tasks'
 
     def get_queryset(self):
-        status = self.request.GET.get('status')
         search_box = self.request.GET.get('search_box', None)
 
         # get the sort variable from the session or use default
@@ -399,7 +398,6 @@ class ShowValidationPage(ListView):
     context_object_name = 'my_tasks'
 
     def get_queryset(self):
-        status = self.request.GET.get('status')
         search_box = self.request.GET.get('search_box', None)
 
         # get the sort variable from the session or use default
@@ -408,7 +406,7 @@ class ShowValidationPage(ListView):
         except:
             sort = '-creationTime'
 
-        tasks = Task.objects.order_by(sort)
+        tasks = Task.objects.filter(status__icontains='stored').order_by(sort)
 
         # check if there is a 'task_filter' put on the session
         try:
@@ -422,8 +420,8 @@ class ShowValidationPage(ListView):
             tasks = get_searched_tasks(search_box, sort)
 
         # exclude the tasks without quality information
-        tasks = tasks.exclude(outputs__isnull=True)
-        tasks = tasks.exclude(outputs__0__quality__isnull=True)
+        tasks = tasks.exclude(status__icontains="failed")
+        #tasks = tasks.exclude(outputs__0__quality__isnull=True)
 
 
         paginator = Paginator(tasks, config.TASKS_PER_PAGE)  # Show 50 tasks per page
@@ -916,6 +914,25 @@ def TaskSetStatus(request, pk, new_status, page=0):
         return redirect('/atdb/?page=' + page)
 
 
+@login_required
+def TaskValidate(request, pk, quality, new_status, page=0):
+    model = Task
+    task = Task.objects.get(pk=pk)
+    task.new_status = new_status
+
+    #todo: database change
+    #task.quality = quality
+
+    task.save()
+
+    if page == 0:
+        # redirect to details screen
+        return redirect('/atdb/validation')
+    else:
+        # redirect to tasks list
+        return redirect('/atdb/validation?page=' + page)
+
+
 # set a filter value in the session, used later by the 'get_searched_tasks' mechanism
 def TaskSetFilter(request, filter):
     request.session['task_filter'] = filter