diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py
index df3ad8fd6f368667d392a03c8f0be4d60741dba5..823ce7ae1e14aedce2ea6ac1fc38bea13f9f3982 100644
--- a/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/viewsets/specification.py
@@ -1221,9 +1221,9 @@ class TaskBlueprintPropertyFilter(property_filters.PropertyFilterSet):
     start_time = property_filters.PropertyIsoDateTimeFromToRangeFilter(field_name='start_time')
     stop_time = property_filters.PropertyIsoDateTimeFromToRangeFilter(field_name='stop_time')
     status = property_filters.PropertyChoiceFilter(field_name='status', choices=tuple((i.value, i.value) for i in models.SubtaskState.Choices), lookup_expr='iexact')
-    subtask_id = NumberInFilter(field_name='subtasks__id', lookup_expr='in')
-    subtask_id_min = filters.NumberFilter(field_name='subtasks__id', lookup_expr='gte')
-    subtask_id_max = filters.NumberFilter(field_name='subtasks__id', lookup_expr='lte')
+    subtasks = filters.ModelMultipleChoiceFilter(field_name='subtasks', queryset=models.Subtask.objects.all())
+    subtasks_min = filters.NumberFilter(field_name='subtasks__id', lookup_expr='gte')
+    subtasks_max = filters.NumberFilter(field_name='subtasks__id', lookup_expr='lte')
 
     class Meta:
         model = models.TaskBlueprint
diff --git a/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py b/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py
index 70a2c5eed405fc3d406ba705e624e21288a1c705..33efd0f079e851f83e3a300b22032f4ec09e98d0 100755
--- a/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py
+++ b/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py
@@ -2621,9 +2621,48 @@ class TaskBlueprintTestCase(unittest.TestCase):
         self.assertNotIn(task_blueprint_2.name, str(response_3))
         self.assertIn(task_blueprint_3.name, str(response_3))
 
-    # todo: control ID
+    def test_TaskBlueprint_filters_for_Subtask(self):
 
-    # todo: status
+        # setup
+        task_blueprint_1 = models.TaskBlueprint.objects.create(**TaskBlueprint_test_data(name="tb_%s" % uuid.uuid4()))
+        task_blueprint_2 = models.TaskBlueprint.objects.create(**TaskBlueprint_test_data(name="tb_%s" % uuid.uuid4()))
+        task_blueprint_3 = models.TaskBlueprint.objects.create(**TaskBlueprint_test_data(name="tb_%s" % uuid.uuid4()))
+        subtask_1 = models.Subtask.objects.create(**Subtask_test_data())
+        subtask_2 = models.Subtask.objects.create(**Subtask_test_data())
+        subtask_3 = models.Subtask.objects.create(**Subtask_test_data())
+        subtask_1.task_blueprints.set([task_blueprint_1])
+        subtask_2.task_blueprints.set([task_blueprint_2])
+        subtask_3.task_blueprints.set([task_blueprint_3])
+        subtask_1.save()
+        subtask_2.save()
+        subtask_3.save()
+
+        #  assert
+        response_1 = GET_and_assert_equal_expected_code(self, BASE_URL + '/task_blueprint/?subtasks=%s' % subtask_1.id, 200)
+        response_2 = GET_and_assert_equal_expected_code(self, BASE_URL + '/task_blueprint/?subtasks_min=%s&subtasks_max=%s' % (subtask_2.id, subtask_2.id), 200)
+        response_3 = GET_and_assert_equal_expected_code(self, BASE_URL + '/task_blueprint/?subtasks=%s&subtasks=%s' % (subtask_1.id, subtask_3.id), 200)
+        GET_and_assert_equal_expected_code(self, BASE_URL + '/task_blueprint/?subtasks=%s' % 9999999, 400)
+        self.assertIn(task_blueprint_1.name, str(response_1))
+        self.assertNotIn(task_blueprint_2.name, str(response_1))
+        self.assertNotIn(task_blueprint_3.name, str(response_1))
+        self.assertNotIn(task_blueprint_1.name, str(response_2))
+        self.assertIn(task_blueprint_2.name, str(response_2))
+        self.assertNotIn(task_blueprint_3.name, str(response_2))
+        self.assertIn(task_blueprint_1.name, str(response_3))
+        self.assertNotIn(task_blueprint_2.name, str(response_3))
+        self.assertIn(task_blueprint_3.name, str(response_3))
+
+    def test_TaskBlueprint_filters_for_status(self):
+
+        # setup
+        task_blueprint_1 = models.TaskBlueprint.objects.create(**TaskBlueprint_test_data(name="tb_%s" % uuid.uuid4()))
+
+        #  assert
+        response_1 = GET_and_assert_equal_expected_code(self, BASE_URL + '/task_blueprint/?status=defined', 200)
+        response_2 = GET_and_assert_equal_expected_code(self, BASE_URL + '/task_blueprint/?status=obsolete', 200)
+        GET_and_assert_equal_expected_code(self, BASE_URL + '/task_blueprint/?status=gibberish', 400)
+        self.assertGreater(response_1['count'], 0)
+        self.assertEqual(response_2['count'], 0)
 
 
 class TaskRelationBlueprintTestCase(unittest.TestCase):