diff --git a/.idea/atdb-ldv.iml b/.idea/atdb-ldv.iml
index c5bb47a1a1a1d8c0039b4f576ed3937c8f73ed81..50cd9802969dbff18202a1559545995747dc6f91 100644
--- a/.idea/atdb-ldv.iml
+++ b/.idea/atdb-ldv.iml
@@ -1,8 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module type="PYTHON_MODULE" version="4">
   <component name="NewModuleRootManager">
-    <content url="file://$MODULE_DIR$" />
-    <orderEntry type="jdk" jdkName="Python 3.7 (atdb-ldv)" jdkType="Python SDK" />
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/venv" />
+    </content>
+    <orderEntry type="jdk" jdkName="Python 3.7 (atdb-ldv) (2)" jdkType="Python SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
   </component>
   <component name="PyDocumentationSettings">
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 1a05b2d07f9d11e19baeef94a071df4617accd44..85a13228f61fdf15b7da46a1323a30d1df6bcb2c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (atdb-ldv)" project-jdk-type="Python SDK" />
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (atdb-ldv) (2)" project-jdk-type="Python SDK" />
   <component name="PyCharmProfessionalAdvertiser">
     <option name="shown" value="true" />
   </component>
diff --git a/atdb/taskdatabase/models.py b/atdb/taskdatabase/models.py
index c6eedf595612dbba0d1fecd959258494d396014f..8fa8af5b69107c9d079c156dea2dda799124a7c2 100644
--- a/atdb/taskdatabase/models.py
+++ b/atdb/taskdatabase/models.py
@@ -115,7 +115,6 @@ class DataProduct(TaskObject):
     description = models.CharField(max_length=255, default="unknown")
     dataproduct_type = models.CharField('type', default=TYPE_VISIBILITY, max_length=50)
     size = models.BigIntegerField(default=0)
-    #quality = models.CharField(max_length=30, default="unknown")
 
     # relationships
     parent = models.ForeignKey(Observation, related_name='generated_dataproducts', on_delete=models.CASCADE, null=False)
diff --git a/atdb/taskdatabase/serializers.py b/atdb/taskdatabase/serializers.py
index 9698770316c3d543b53acfcabb289621926669fd..39040fcd1196f42f143b2f816e32679a346679b0 100644
--- a/atdb/taskdatabase/serializers.py
+++ b/atdb/taskdatabase/serializers.py
@@ -29,9 +29,9 @@ class DataProductSerializer(serializers.ModelSerializer):
     class Meta:
         model = DataProduct
         fields = ('id','task_type','name','filename','description',
-                  'taskID','creationTime','size','quality',
+                  'taskID','creationTime','size',
                   'my_status','new_status','status_history','parent',
-                  'data_location','node')
+                  'data_location','node','quality','metadata')
 
 
 class ObservationSerializer(serializers.ModelSerializer):
diff --git a/atdb/taskdatabase/services/algorithms.py b/atdb/taskdatabase/services/algorithms.py
index ba27357b3432c6ce1803f1a43592d9d27c1afc11..5e61721adb643d22d8042d3d2f2f5232106d657c 100644
--- a/atdb/taskdatabase/services/algorithms.py
+++ b/atdb/taskdatabase/services/algorithms.py
@@ -115,22 +115,26 @@ def get_next_observation(my_status, observing_mode, datawriter):
     return taskID,minutes_left
 
 
-# /atdb/post_dataproducts?taskid=190405001
-@timeit
-def add_dataproducts(taskID, dataproducts):
+# /atdb/post_dataproducts
+def add_dataproducts(dataproducts):
     """
     :param taskID: taskid of the observation
     :param dataproducts: json list of dataproducts to be added to the provided taskid
     :return:
     """
-    number_of_dataproducts = len(dataproducts)
-    logger.info("add_dataproducts("+taskID+','+str(number_of_dataproducts)+")")
 
-    # get the common fields from the observation based on the given taskid
-    parent = Observation.objects.get(taskID=taskID)
-    parent_data_location = parent.data_location
+    taskID = None
+    dps = dataproducts.get('dps')
+    number_of_dataproducts = len(dps)
+
+    logger.info("add_dataproducts("+str(number_of_dataproducts)+")")
+
+    for dp in dps:
+        # get the common fields from the observation based on the given taskid
+        taskID = dp.get('taskID')
+        parent = Observation.objects.get(taskID=taskID)
+        parent_data_location = parent.data_location
 
-    for dp in dataproducts:
         node=dp.get('node',None)
         new_status = dp.get('new_status','defined')
         data_location = dp.get('data_dir',parent_data_location)
@@ -141,6 +145,8 @@ def add_dataproducts(taskID, dataproducts):
                                     filename=dp['filename'],
                                     name=dp['filename'],
                                     description=dp['filename'],
+                                    quality=dp['quality'],
+                                    metadata=dp['metadata'],
                                     task_type='dataproduct',
                                     new_status=new_status,
                                     parent=parent,
@@ -150,4 +156,4 @@ def add_dataproducts(taskID, dataproducts):
         logger.info('addding dataproduct: '+str(myDataProduct))
         myDataProduct.save()
 
-
+    return taskID
diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html
index cbe91a7a127f2525f2c85bd71ea518344fb14293..44440253db63505bfc7d4f92c5b28ab92629265d 100644
--- a/atdb/taskdatabase/templates/taskdatabase/index.html
+++ b/atdb/taskdatabase/templates/taskdatabase/index.html
@@ -46,7 +46,7 @@
     </div>
     {% include 'taskdatabase/pagination.html' %}
 </div>
-    <p class="footer"> Version 1.0.0 (22 dec 2020 - 14:30)
+    <p class="footer"> Version 1.0.0 (23 dec 2020 - 08:00)
     <script type="text/javascript">
         (function(seconds) {
             var refresh,
diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py
index 8c44ff2340c8cda61467a3c93da8cbefff8d05d5..5d41f6f511a55e3183bc91b9ceb788c2b3530765 100644
--- a/atdb/taskdatabase/views.py
+++ b/atdb/taskdatabase/views.py
@@ -452,19 +452,15 @@ class PostDataproductsView(generics.CreateAPIView):
     pagination_class = DataProductsPagination
 
     def post(self, request, *args, **kwargs):
-        # read the arguments from the request
-        try:
-            taskID = self.request.query_params['taskID']
-        except:
-            taskID = None
 
         try:
             body_unicode = request.body.decode('utf-8')
             dataproducts = json.loads(body_unicode)
-        except:
+        except Exception as e:
+            print(e)
             dataproducts = None
 
-        taskID = algorithms.add_dataproducts(taskID, dataproducts)
+        taskID = algorithms.add_dataproducts(dataproducts)
 
         # return a response
         return Response({