diff --git a/nomad/processing/data.py b/nomad/processing/data.py
index 8912a950d053c4bc1c6ab7048a53575aca3b950a..9dacca24e9a430d4bca5a69b7afb8e9734c58082 100644
--- a/nomad/processing/data.py
+++ b/nomad/processing/data.py
@@ -73,7 +73,8 @@ class Calc(Proc):
             ('upload_id', 'mainfile'),
             ('upload_id', 'parser'),
             ('upload_id', 'tasks_status'),
-            ('upload_id', 'process_status')
+            ('upload_id', 'process_status'),
+            ('upload_id', 'metadata.nomad_version')
         ]
     }
 
@@ -633,7 +634,10 @@ class Upload(Proc):
 
         self._continue_with('parse_all')
         try:
-            for calc in Calc.objects(upload_id=self.upload_id):
+            # we use a copy of the mongo queryset; reasons are cursor timeouts and
+            # changing results on modifying the calc entries
+            calcs = list(Calc.objects(upload_id=self.upload_id))
+            for calc in calcs:
                 if calc.process_running:
                     if calc.current_process == 're_process_calc':
                         logger.warn('re_process_calc is already running', calc_id=calc.calc_id)
diff --git a/nomad/search.py b/nomad/search.py
index 4209e25ec5f4713d1c8ec837de05e11a41fd2e62..921b4abd180b2826c0c998c2fdbde6c7afcec2a8 100644
--- a/nomad/search.py
+++ b/nomad/search.py
@@ -64,7 +64,7 @@ class Dataset(InnerDoc):
     def from_dataset_popo(cls, dataset):
         return cls(
             id=dataset.id,
-            doi=dataset.doi.value if dataset.doi is not None else None,
+            doi=dataset.doi['value'] if dataset.doi is not None else None,
             name=dataset.name)
 
     id = Keyword()