diff --git a/arkindex/dataimport/api.py b/arkindex/dataimport/api.py
index 74bbee906aab91889f9de707d5598298038213a0..c9d4654d1748d8278369c081e46441663c7ae944 100644
--- a/arkindex/dataimport/api.py
+++ b/arkindex/dataimport/api.py
@@ -431,7 +431,7 @@ class CorpusWorkflow(SelectionMixin, CorpusACLMixin, CreateAPIView):
             use_cache=use_cache,
         )
 
-        # Ensure process elements do exists
+        # Ensure process elements do exist
         if selection:
             elements = self.get_selection(corpus.id)
             if not elements.exists():
@@ -439,10 +439,6 @@ class CorpusWorkflow(SelectionMixin, CorpusACLMixin, CreateAPIView):
                     '__all__': ['No element match those filters.']
                 })
             process.elements.set(elements)
-        elif not process.list_elements().exists():
-            raise ValidationError({
-                '__all__': ['No element match those filters.']
-            })
 
         return Response(
             status=status.HTTP_201_CREATED,
diff --git a/arkindex/dataimport/tests/test_workflows_api.py b/arkindex/dataimport/tests/test_workflows_api.py
index 80110ed2eaf96331b7fab8d21527f2d0b5463af1..f298e311c84320afab902ba7a486edaddc44dc44 100644
--- a/arkindex/dataimport/tests/test_workflows_api.py
+++ b/arkindex/dataimport/tests/test_workflows_api.py
@@ -267,8 +267,11 @@ class TestWorkflows(FixtureAPITestCase):
         self.assertEqual(dataimport.element_type.slug, 'volume')
 
     def test_create_element_workflow_empty_queryset(self):
+        """
+        An empty QuerySet is ignored: the user can change the element filtering later,
+        and running a process on no elements at all is harmless.
+        """
         self.client.force_login(self.user)
-        process_count = DataImport.objects.count()
         response = self.client.post(
             reverse('api:corpus-workflow'),
             {
@@ -278,15 +281,13 @@ class TestWorkflows(FixtureAPITestCase):
             },
             format='json'
         )
-        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
+        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
         data = response.json()
-        self.assertIn('__all__', data)
-        self.assertListEqual(
-            data['__all__'],
-            ['No element match those filters.']
-        )
-        # Ensure the process creation is atomic when elements count test fail
-        self.assertEqual(DataImport.objects.count(), process_count)
+        dataimport = DataImport.objects.get(id=data['id'])
+        self.assertEqual(dataimport.corpus, self.corpus)
+        self.assertEqual(dataimport.element_type.slug, 'volume')
+        self.assertEqual(dataimport.name_contains, 'ahahah')
+        self.assertFalse(dataimport.list_elements().exists())
 
     def test_create_element_workflow_empty_selection(self):
         self.client.force_login(self.user)