diff --git a/atdb/atdb/static/taskdatabase/style.css b/atdb/atdb/static/taskdatabase/style.css
index 37d988b1e6c50054db44b60a3216a3b10a530bb9..abaa979356a70d6a40c5ffac12ca958ef50d26c4 100644
--- a/atdb/atdb/static/taskdatabase/style.css
+++ b/atdb/atdb/static/taskdatabase/style.css
@@ -34,7 +34,7 @@ TD {
 }
 
 
-.error,.failed,.staging_failed,.processed_failed,.scrubbed_failed,.stored_failed,.archived_failed {
+.error,.failed,.staging_failed,.staged_failed,.processed_failed,.scrubbed_failed,.stored_failed,.archived_failed {
   color: red;
   font-weight: bold;
 }
diff --git a/atdb/taskdatabase/models.py b/atdb/taskdatabase/models.py
index 6d78b2b92dff08a1f6d37b42fa2edfe8e3912a05..68aee451a091e32a1ead889cca0a901b19c18938 100644
--- a/atdb/taskdatabase/models.py
+++ b/atdb/taskdatabase/models.py
@@ -101,12 +101,13 @@ class Task(models.Model):
 
     @property
     def has_quality(self):
-        # todo: check if there is a 'quality' structure in the 'task.outputs'?
+
         try:
             quality = self.outputs['quality']
             return True
         except:
             return False
+            # todo: check if there is a 'quality' structure in the 'task.outputs' at another level?
             try:
                 quality = self.outputs[0]['quality']
                 return True
@@ -115,11 +116,13 @@ class Task(models.Model):
 
     @property
     def quality_json(self):
-        # todo: check if there is a 'quality' structure in the 'task.outputs'?
+
         try:
             return self.outputs['quality']
         except:
             return None
+            # todo: check if there is a 'quality' structure in the 'task.outputs' at another level?
+
             try:
                 return self.outputs[0]['quality']
             except:
diff --git a/atdb/taskdatabase/services/algorithms.py b/atdb/taskdatabase/services/algorithms.py
index 69b58e5014466e92d5e186848d4eda41661d27e0..4ddf4499833ebcd74d06fcc3c096c1668f1f4526 100644
--- a/atdb/taskdatabase/services/algorithms.py
+++ b/atdb/taskdatabase/services/algorithms.py
@@ -8,7 +8,7 @@ from datetime import datetime, timedelta
 from django.db.models import Q, Sum
 import logging
 from .common import timeit
-from ..models import Task, LogEntry, Workflow
+from ..models import Task, LogEntry, Workflow, Configuration
 from django.conf import settings
 
 DATE_FORMAT = "%Y-%m-%d"
@@ -660,5 +660,31 @@ def construct_dashboard_html(request, selection):
 
 
 def unique_values_for_aggregation_key(queryset, aggregation_key):
+    return list(map(lambda x: x[aggregation_key], queryset.values(aggregation_key).distinct()))
 
-    return list(map(lambda x: x[aggregation_key], queryset.values(aggregation_key).distinct()))
\ No newline at end of file
+
+def construct_inspectionplots(task):
+    results = ""
+    quality_structure = task.quality_json
+
+    # translate the path to a url
+    try:
+        srm_to_url = Configuration.objects.get(key='dcache:srm_to_url').value
+    except:
+        srm_to_url = "srm://srm.grid.sara.nl/pnfs/grid.sara.nl/data::https://webdav.grid.surfsara.nl/pnfs/grid.sara.nl/data"
+
+    token = Configuration.objects.get(key='dcache:token').value
+    #token ="dcache-http-uuid=23f731bb-0ec4-4401-9176-3393cf2a3da1"
+    translation = srm_to_url.split("::")
+
+    # find the plots in the quality json structure
+    plots = task.quality_json["plots"]
+    for plot in plots:
+        basename = plot['basename']
+        surl = plot['surl'] + "?" + token
+
+        url = surl.replace(translation[0],translation[1])
+        results += '<tr><td><a href="' + url + '" target="_blank">'+ basename + '</a></td></tr>'
+
+
+    return results
diff --git a/atdb/taskdatabase/static/taskdatabase/style.css b/atdb/taskdatabase/static/taskdatabase/style.css
index 37d988b1e6c50054db44b60a3216a3b10a530bb9..abaa979356a70d6a40c5ffac12ca958ef50d26c4 100644
--- a/atdb/taskdatabase/static/taskdatabase/style.css
+++ b/atdb/taskdatabase/static/taskdatabase/style.css
@@ -34,7 +34,7 @@ TD {
 }
 
 
-.error,.failed,.staging_failed,.processed_failed,.scrubbed_failed,.stored_failed,.archived_failed {
+.error,.failed,.staging_failed,.staged_failed,.processed_failed,.scrubbed_failed,.stored_failed,.archived_failed {
   color: red;
   font-weight: bold;
 }
diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html
index c0027a5ff9a23ea9058bc867f84a36e77f83a3fe..f64f8cbaeb13063920d1685cd313e85e28cf793d 100644
--- a/atdb/taskdatabase/templates/taskdatabase/index.html
+++ b/atdb/taskdatabase/templates/taskdatabase/index.html
@@ -34,7 +34,7 @@
         {% include 'taskdatabase/pagination.html' %}
        </div>
     </div>
-    <p class="footer"> Version 1.0.0 (11 apr 2021 - 13:00)
+    <p class="footer"> Version 1.0.0 (12 apr 2021 - 8:00)
 
 </div>
 
diff --git a/atdb/taskdatabase/templates/taskdatabase/validation/inspection_plots.html b/atdb/taskdatabase/templates/taskdatabase/validation/inspection_plots.html
new file mode 100644
index 0000000000000000000000000000000000000000..ec082788b377d234e71fcdd700865fe2bfee897e
--- /dev/null
+++ b/atdb/taskdatabase/templates/taskdatabase/validation/inspection_plots.html
@@ -0,0 +1,20 @@
+
+{% block myBlock %}
+<div class="container-fluid details-container">
+
+
+  <div class="card">
+       <div class="card-body">
+           <h4>Inspection Plots</h4>
+           <table class="table table-striped">
+             {{ my_plots | safe }}
+           </table>
+
+       </div>
+  </div>
+</div>
+{% endblock %}
+
+
+{% include "taskdatabase/modal/modal_script.html" %}
+{% include "taskdatabase/modal/modal.html" %}
\ No newline at end of file
diff --git a/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html b/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html
index e04350d8d51b35f55fd1e54a2489184423790f23..f1baef81a9e02414afdefb66ff614bc7ec9caa74 100644
--- a/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html
+++ b/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html
@@ -35,9 +35,18 @@
                         <td>{{value}}</td>
                      {% endfor %}
                     <td>
-                      <a href=""
-                       class="btn btn-primary btn-sm" role="button" target="_blank"><img src="{% static 'taskdatabase/surfsara.jpg' %}"  height="20" alt="this is a placeholder, links to plots will follow"></a>&nbsp;
+                      <a class="btn btn-primary btn-sm" role="button"
+                         href="{% url 'inspection-plots' task.id my_tasks.number %}"
+                         target="_blank">
+                          <img src="{% static 'taskdatabase/surfsara.jpg' %}"  height="20" alt="inspection plots">
+                      </a>&nbsp;
+                      <a class="open-modal btn btn-secondary btn-sm"
+                         href="{% url 'inspection-plots' task.id my_tasks.number %}"
+                         data-popup-url="{% url 'inspection-plots' task.id my_tasks.number %}">
+                          <img src="{% static 'taskdatabase/surfsara.jpg' %}" height="20" alt="inspection plots">
+                      </a>&nbsp;
                     </td>
+
                 {% else %}
                         <td>-</td><td>-</td><td>-</td><td>-</td>
                 {% endif %}
diff --git a/atdb/taskdatabase/urls.py b/atdb/taskdatabase/urls.py
index b59a75812adf8eb9ad8b8ae7c762cfeabf87db02..d950d86cf0e76e08b1188b68f26d42bc2d5bd722 100644
--- a/atdb/taskdatabase/urls.py
+++ b/atdb/taskdatabase/urls.py
@@ -26,6 +26,7 @@ urlpatterns = [
     path('annotate_quality/<int:id>/<page>', views.AnnotateQuality, name='annotate-quality'),
     path('annotate_quality/<int:id>', views.AnnotateQuality, name='annotate-quality'),
     path('annotate_quality/', views.AnnotateQuality, name='annotate-quality'),
+    path('show_inspectionplots/<int:id>/<page>', views.ShowInspectionPlots, name='inspection-plots'),
 
     path('show-inputs/<int:id>/', views.ShowInputs, name='show-inputs'),
     path('show-outputs/<int:id>/', views.ShowOutputs, name='show-outputs'),
diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py
index cc0bf873787d15c46d323cc99c65af79292080d0..654b8cd028f96c4d344d4015ddba8e2e1a01f3b0 100644
--- a/atdb/taskdatabase/views.py
+++ b/atdb/taskdatabase/views.py
@@ -609,6 +609,18 @@ def AnnotateQuality(request, id=0, page=0, new_remark=""):
         return render(request, "taskdatabase/validation/annotate_quality.html", {'task': task, 'page': page, 'form':form})
 
 
+
+def ShowInspectionPlots(request, id=0, page=0):
+
+    # a GET means that the form should be presented to be filled in
+    task = Task.objects.get(id=id)
+
+    # convert the path to a url
+    plots_html = algorithms.construct_inspectionplots(task)
+
+    return render(request, "taskdatabase/validation/inspection_plots.html", {'task': task, 'my_plots': plots_html})
+
+
 def ShowInputs(request, id):
     task = Task.objects.get(id=id)
 
@@ -857,7 +869,7 @@ class JobDetailsViewAPI(generics.RetrieveUpdateDestroyAPIView):
     serializer_class = JobSerializer
 
 
-# example: /atdb/job/
+# example: /atdb/postprocessing/
 class PostProcessingRuleListViewAPI(generics.ListCreateAPIView):
     model = PostProcessingRule
     queryset = PostProcessingRule.objects.all()
@@ -867,7 +879,7 @@ class PostProcessingRuleListViewAPI(generics.ListCreateAPIView):
     filter_class = PostProcessingFilter
 
 
-# example: /atdb/job/5/
+# example: /atdb/postprocessing/5/
 class PostProcessingRuleDetailsViewAPI(generics.RetrieveUpdateDestroyAPIView):
     model = PostProcessingRule
     queryset = PostProcessingRule.objects.all()