diff --git a/atdb/taskdatabase/models.py b/atdb/taskdatabase/models.py
index 4e661494319e8a9b45212b7b9a1a4bf2c03c352b..0ed582db0146a09bbff16cf1bfb0a7058536fb65 100644
--- a/atdb/taskdatabase/models.py
+++ b/atdb/taskdatabase/models.py
@@ -272,8 +272,8 @@ class Task(models.Model):
         # make sure that every task has an activity (also for backward compatibility)
         associate_task_with_activity(self)
 
-        # when a task comes in as DEFINING some validation needs to be done.
-        if (self.status != State.DEFINING.value) & (self.new_status == State.DEFINING.value):
+        # when a task becomes DEFINING or DEFINED some validation needs to be done.
+        if self.new_status in [State.DEFINING.value, State.DEFINED.value]:
             validate_inputs(self)
 
         # when a task goes to PROCESSED... handle the (potential) aggregation functionality
diff --git a/atdb/taskdatabase/tests/test_input_validation.py b/atdb/taskdatabase/tests/test_input_validation.py
index f847fc72e25c9fd7510982b0a00f9a2cc5fed69c..21e7f0803d8742624facffd5553a8d78e4eb3051 100644
--- a/atdb/taskdatabase/tests/test_input_validation.py
+++ b/atdb/taskdatabase/tests/test_input_validation.py
@@ -13,7 +13,7 @@ class TestInputValidation(TestCase):
         self.workflow = Workflow(id=22, workflow_uri="psrfits_requantisation")
         self.workflow.save()
 
-        self.inputs_in = [
+        self.inputs_with_duplicate = [
         {
             "size": 100,
             "surl": "srm://srm.grid.sara.nl:8443/pnfs/grid.sara.nl/data/lofar/ops/projects/lc5_020/432340/L432340_SB000_uv.dppp.MS_caf35c3d.tar",
@@ -33,16 +33,7 @@ class TestInputValidation(TestCase):
             "location": "srm.grid.sara.nl"
         }]
 
-
-        self.task = Task.objects.create(sas_id='5432', status='defining', new_status='defining',
-                                         size_to_process = 100, workflow=self.workflow, inputs = self.inputs_in)
-        self.task.save()
-
-    def test_validate_inputs(self):
-
-        # arrange
-        expected_size = 300
-        expected_inputs = [
+        self.inputs_validated = [
         {
             "size": 100,
             "surl": "srm://srm.grid.sara.nl:8443/pnfs/grid.sara.nl/data/lofar/ops/projects/lc5_020/432340/L432340_SB000_uv.dppp.MS_caf35c3d.tar",
@@ -56,14 +47,62 @@ class TestInputValidation(TestCase):
             "location": "srm.grid.sara.nl"
         }]
 
+        self.task = Task.objects.create(sas_id='5432', status='defining', new_status='defining',
+                                        size_to_process = 100, workflow=self.workflow, inputs = self.inputs_with_duplicate)
+        self.task.save()
+
+    def test_validate_inputs(self):
+        """
+        run the validates_inputs function with a task.inputs that contains a duplicate.
+        The duplicate should be removed, and the size recalculated
+        """
+
+        # arrange
+        expected_size = 300
+        expected_inputs = self.inputs_validated
+
         # act
         input_validation.validate_inputs(self.task)
-        inputs = self.task.inputs
-        size = self.task.size_to_process
 
         # assert
-        self.assertEqual(inputs, expected_inputs)
-        self.assertEqual(size, expected_size)
+        self.assertEqual(self.task.inputs, expected_inputs)
+        self.assertEqual(self.task.size_to_process, expected_size)
 
 
+    def test_trigger_on_defined(self):
+        """
+        test that the functionality (also) triggers on 'defined'
+        """
 
+        # arrange
+        expected_size = 300
+        expected_inputs = self.inputs_validated
+
+        # set to 'wrong' inputs containing a duplicate
+        self.task.inputs = self.inputs_with_duplicate
+
+        # act
+        self.task.new_status="defined"
+        self.task.save()
+
+        # assert
+        self.assertEqual(self.task.inputs, expected_inputs)
+        self.assertEqual(self.task.size_to_process, expected_size)
+
+    def test_no_trigger_on_staged(self):
+        """
+        test that the functionality does not trigger on other statusses, like 'staged'
+        """
+
+        # arrange
+        expected_inputs = self.inputs_with_duplicate
+
+        # set to 'wrong' inputs containing a duplicate
+        self.task.inputs = self.inputs_with_duplicate
+
+        # act
+        self.task.new_status="staged"
+        self.task.save()
+
+        # assert
+        self.assertEqual(self.task.inputs, expected_inputs)