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 423c148756a1c3a025b31c4fba1edce594ea1a91..917158fd804fb534db802f2ffb7c5db4d6d12ace 100755
--- a/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py
+++ b/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py
@@ -2168,15 +2168,16 @@ class TaskBlueprintTestCase(unittest.TestCase):
         r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_blueprint/', test_data, 400, {})
         self.assertTrue('This field may not be null' in str(r_dict['specifications_template']))
 
-    def test_task_blueprint_allows_missing_draft(self):
+    def test_task_blueprint_prevents_missing_draft(self):
         tb_test_data = test_data_creator.TaskBlueprint(draft_url=self.draft_url, template_url=self.template_url, scheduling_unit_blueprint_url=self.scheduling_unit_blueprint_url)
 
         # test data
         test_data = dict(tb_test_data)
         test_data['draft'] = None
 
-        # POST data and assert response
-        r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_blueprint/', test_data, 201, {})
+        # POST invalid data and assert response
+        r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_blueprint/', test_data, 400, {})
+        self.assertTrue('This field may not be null' in str(r_dict['draft']))
 
     def test_task_blueprint_prevents_missing_scheduling_unit_blueprint(self):
         tb_test_data = test_data_creator.TaskBlueprint(draft_url=self.draft_url, template_url=self.template_url, scheduling_unit_blueprint_url=self.scheduling_unit_blueprint_url)
@@ -2205,7 +2206,7 @@ class TaskBlueprintTestCase(unittest.TestCase):
         # assert
         GET_and_assert_equal_expected_code(self, url, 404)
 
-    def test_task_blueprint_SETNULL_behavior_on_task_draft_deleted(self):
+    def test_task_blueprint_PROTECT_behavior_on_task_draft_deleted(self):
         draft_data = test_data_creator.TaskDraft()
         draft_url = test_data_creator.post_data_and_get_url(draft_data, '/task_draft/')
         tb_test_data = test_data_creator.TaskBlueprint(draft_url=draft_url, template_url=self.template_url, scheduling_unit_blueprint_url=self.scheduling_unit_blueprint_url)
@@ -2219,9 +2220,11 @@ class TaskBlueprintTestCase(unittest.TestCase):
         # refresh draft_data, because it now has a reference to the blueprint
         draft_data = test_data_creator.get_response_as_json_object(draft_url)
 
-        # Try to DELETE dependency, verify that was successful
+        # Try to DELETE dependency, verify that was not successful
+        # Unfortunately we don't get a nice error in json, but a Django debug page on error 500...
         response = requests.delete(draft_url, auth=AUTH)
-        self.assertEqual(204, response.status_code)
+        self.assertEqual(500, response.status_code)
+        self.assertTrue("ProtectedError" in str(response.content))
 
     def test_task_blueprint_CASCADE_behavior_on_scheduling_unit_blueprint_deleted(self):
         scheduling_unit_blueprint_url = test_data_creator.post_data_and_get_url(test_data_creator.SchedulingUnitBlueprint(), '/scheduling_unit_blueprint/')
@@ -2506,15 +2509,16 @@ class TaskRelationBlueprintTestCase(unittest.TestCase):
         r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_relation_blueprint/', test_data, 400, {})
         self.assertTrue('This field may not be null' in str(r_dict['selection_template']))
 
-    def test_task_relation_blueprint_allows_missing_draft(self):
-        trb_test_data = test_data_creator.TaskRelationBlueprint(draft_url=self.draft_url, template_url=self.template_url, input_role_url=self.input_role_url, consumer_url=self.consumer_url, producer_url=self.producer_url)
+    def test_task_relation_blueprint_prevents_missing_draft(self):
+        trb_test_data = test_data_creator.TaskRelationBlueprint(draft_url=self.draft_url, template_url=self.template_url, input_role_url=self.input_role_url, consumer_url=self.consumer_url)
 
         # test data
         test_data = dict(trb_test_data)
         test_data['draft'] = None
 
         # POST invalid data and assert response
-        r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_relation_blueprint/', test_data, 201, {})
+        r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_relation_blueprint/', test_data, 400, {})
+        self.assertTrue('This field may not be null' in str(r_dict['draft']))
 
     def test_task_relation_blueprint_prevents_missing_producer(self):
         trb_test_data = test_data_creator.TaskRelationBlueprint(draft_url=self.draft_url, template_url=self.template_url, input_role_url=self.input_role_url, consumer_url=self.consumer_url, producer_url=self.producer_url)
@@ -2691,14 +2695,11 @@ class TaskSchedulingRelationBlueprintTestCase(unittest.TestCase):
 
     @classmethod
     def setUpClass(cls) -> None:
-        cls.task_blueprint = test_data_creator.post_data_and_get_response_as_json_object(test_data_creator.TaskBlueprint(), '/task_blueprint/')
-
-    @classmethod
-    def fast_create_new_task_blueprint_url(cls):
-        '''create a new task_blueprint object, based on existing one, with only new name, returning new url'''
-        tbp = dict(cls.task_blueprint)
-        tbp['name'] = str(uuid.uuid4())
-        return test_data_creator.post_data_and_get_url(tbp, '/task_blueprint/')
+        cls.task_draft1_url = test_data_creator.post_data_and_get_response_as_json_object(test_data_creator.TaskDraft(), '/task_draft/')['url']
+        cls.task_draft2_url = test_data_creator.post_data_and_get_response_as_json_object(test_data_creator.TaskDraft(), '/task_draft/')['url']
+        cls.sr_draft_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskSchedulingRelationDraft(first_url=cls.task_draft1_url, second_url=cls.task_draft2_url), '/task_scheduling_relation_draft/')
+        cls.task_blueprint1_url = test_data_creator.post_data_and_get_response_as_json_object(test_data_creator.TaskBlueprint(draft_url=cls.task_draft1_url), '/task_blueprint/')['url']
+        cls.task_blueprint2_url = test_data_creator.post_data_and_get_response_as_json_object(test_data_creator.TaskBlueprint(draft_url=cls.task_draft2_url), '/task_blueprint/')['url']
 
     def test_task_scheduling_relation_blueprint_list_apiformat(self):
         r = requests.get(BASE_URL + '/task_scheduling_relation_blueprint/?format=api', auth=AUTH)
@@ -2709,25 +2710,25 @@ class TaskSchedulingRelationBlueprintTestCase(unittest.TestCase):
         GET_and_assert_equal_expected_code(self, BASE_URL + '/task_scheduling_relation_blueprint/1234321/', 404)
 
     def test_task_scheduling_relation_blueprint_POST_and_GET(self):
-        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.fast_create_new_task_blueprint_url(), second_url=self.fast_create_new_task_blueprint_url(), placement="after")
+        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.task_blueprint1_url, second_url=test_data_creator.post_data_and_get_response_as_json_object(test_data_creator.TaskBlueprint(draft_url=self.task_draft2_url), '/task_blueprint/')['url'], draft_url=self.sr_draft_url, placement="after")
         # POST and GET a new item and assert correctness
         r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_scheduling_relation_blueprint/', tsrb_test_data, 201, tsrb_test_data)
         url = r_dict['url']
         GET_OK_and_assert_equal_expected_response(self, url, tsrb_test_data)
 
     def test_task_scheduling_relation_blueprint_unique_constraint(self):
-        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.fast_create_new_task_blueprint_url(), second_url=self.fast_create_new_task_blueprint_url(), placement="after")
+        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.task_blueprint1_url, second_url=test_data_creator.post_data_and_get_response_as_json_object(test_data_creator.TaskBlueprint(draft_url=self.task_draft2_url), '/task_blueprint/')['url'], draft_url=self.sr_draft_url, placement="after")
         POST_and_assert_expected_response(self, BASE_URL + '/task_scheduling_relation_blueprint/', tsrb_test_data, 201, tsrb_test_data)
         #  again should raise a unique constraint error, resulting in http 500
         POST_and_assert_expected_response(self, BASE_URL + '/task_scheduling_relation_blueprint/', tsrb_test_data, 500, tsrb_test_data)
 
     def test_task_scheduling_relation_blueprint_PUT_invalid_raises_error(self):
-        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.fast_create_new_task_blueprint_url(), second_url=self.fast_create_new_task_blueprint_url(), placement="after")
+        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.task_blueprint1_url, second_url=self.task_blueprint2_url, draft_url=self.sr_draft_url, placement="after")
         PUT_and_assert_expected_response(self, BASE_URL + '/task_scheduling_relation_blueprint/9876789876/', tsrb_test_data, 404, {})
 
     def test_task_scheduling_relation_blueprint_PUT(self):
-        tsrb_test_data1 = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.fast_create_new_task_blueprint_url(), second_url=self.fast_create_new_task_blueprint_url(), placement="after")
-        tsrb_test_data2 = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.fast_create_new_task_blueprint_url(), second_url=self.fast_create_new_task_blueprint_url(), placement="after")
+        tsrb_test_data1 = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.task_blueprint1_url, second_url=test_data_creator.post_data_and_get_response_as_json_object(test_data_creator.TaskBlueprint(draft_url=self.task_draft2_url), '/task_blueprint/')['url'], draft_url=self.sr_draft_url, placement="after")
+        tsrb_test_data2 = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.task_blueprint1_url, second_url=test_data_creator.post_data_and_get_response_as_json_object(test_data_creator.TaskBlueprint(draft_url=self.task_draft2_url), '/task_blueprint/')['url'], draft_url=self.sr_draft_url, placement="after")
 
         # POST new item, verify
         r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_scheduling_relation_blueprint/', tsrb_test_data1, 201, tsrb_test_data1)
@@ -2739,7 +2740,7 @@ class TaskSchedulingRelationBlueprintTestCase(unittest.TestCase):
         GET_OK_and_assert_equal_expected_response(self, url, tsrb_test_data2)
 
     def test_task_scheduling_relation_blueprint_PATCH(self):
-        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.fast_create_new_task_blueprint_url(), second_url=self.fast_create_new_task_blueprint_url(), placement="after")
+        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.task_blueprint1_url, second_url=self.task_blueprint2_url, draft_url=self.sr_draft_url, placement="after")
         # POST new item, verify
         r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_scheduling_relation_blueprint/', tsrb_test_data, 201, tsrb_test_data)
         url = r_dict['url']
@@ -2754,7 +2755,7 @@ class TaskSchedulingRelationBlueprintTestCase(unittest.TestCase):
         GET_OK_and_assert_equal_expected_response(self, url, expected_data)
 
     def test_task_scheduling_relation_blueprint_DELETE(self):
-        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.fast_create_new_task_blueprint_url(), second_url=self.fast_create_new_task_blueprint_url(), placement="after")
+        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.task_blueprint1_url, second_url=self.task_blueprint2_url, draft_url=self.sr_draft_url, placement="after")
         # POST new item, verify
         r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_scheduling_relation_blueprint/', tsrb_test_data, 201, tsrb_test_data)
         url = r_dict['url']
@@ -2764,7 +2765,7 @@ class TaskSchedulingRelationBlueprintTestCase(unittest.TestCase):
         DELETE_and_assert_gone(self, url)
 
     def test_task_scheduling_relation_blueprint_prevents_missing_time_offset(self):
-        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.fast_create_new_task_blueprint_url(), second_url=self.fast_create_new_task_blueprint_url(), placement="after")
+        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.task_blueprint1_url, second_url=self.task_blueprint2_url, draft_url=self.sr_draft_url, placement="after")
         # test data
         test_data = dict(tsrb_test_data)
         test_data['time_offset'] = None
@@ -2774,7 +2775,7 @@ class TaskSchedulingRelationBlueprintTestCase(unittest.TestCase):
         self.assertTrue('This field may not be null' in str(r_dict['time_offset']))
 
     def test_task_scheduling_relation_blueprint_prevents_missing_time_first(self):
-        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.fast_create_new_task_blueprint_url(), second_url=self.fast_create_new_task_blueprint_url(), placement="after")
+        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.task_blueprint1_url, second_url=self.task_blueprint2_url, draft_url=self.sr_draft_url, placement="after")
 
         # test data
         test_data = dict(tsrb_test_data)
@@ -2785,7 +2786,7 @@ class TaskSchedulingRelationBlueprintTestCase(unittest.TestCase):
         self.assertTrue('This field may not be null' in str(r_dict['first']))
 
     def test_task_scheduling_relation_blueprint_prevents_missing_second(self):
-        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.fast_create_new_task_blueprint_url(), second_url=self.fast_create_new_task_blueprint_url(), placement="after")
+        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.task_blueprint1_url, second_url=self.task_blueprint2_url, draft_url=self.sr_draft_url, placement="after")
 
         # test data
         test_data = dict(tsrb_test_data)
@@ -2796,7 +2797,7 @@ class TaskSchedulingRelationBlueprintTestCase(unittest.TestCase):
         self.assertTrue('This field may not be null' in str(r_dict['second']))
 
     def test_task_scheduling_relation_blueprint_prevents_missing_placement(self):
-        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.fast_create_new_task_blueprint_url(), second_url=self.fast_create_new_task_blueprint_url(), placement="after")
+        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=self.task_blueprint1_url, second_url=self.task_blueprint2_url, draft_url=self.sr_draft_url, placement="after")
 
         # test data
         test_data = dict(tsrb_test_data)
@@ -2809,7 +2810,7 @@ class TaskSchedulingRelationBlueprintTestCase(unittest.TestCase):
     def test_task_scheduling_relation_blueprint_CASCADE_behavior_on_task_blueprint_deleted(self):
         #Create test data
         first_task_blueprint_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskBlueprint(), '/task_blueprint/')
-        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=first_task_blueprint_url, second_url=self.fast_create_new_task_blueprint_url(), placement="after")
+        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=first_task_blueprint_url, second_url=self.task_blueprint2_url, draft_url=self.sr_draft_url, placement="after")
 
         # POST new item
         url = POST_and_assert_expected_response(self, BASE_URL + '/task_scheduling_relation_blueprint/',  tsrb_test_data, 201, tsrb_test_data)['url']
@@ -2823,24 +2824,6 @@ class TaskSchedulingRelationBlueprintTestCase(unittest.TestCase):
         # assert
         GET_and_assert_equal_expected_code(self, url, 404)
 
-    def test_GET_TaskSchedulingRelationBlueprint_list_view_shows_entry(self):
-
-        test_data_1 = TaskSchedulingRelationBlueprint_test_data()
-        models.TaskSchedulingRelationBlueprint.objects.create(**test_data_1)
-        nbr_results = models.TaskSchedulingRelationBlueprint.objects.count()
-        GET_and_assert_in_expected_response_result_list(self, BASE_URL + '/task_scheduling_relation_blueprint/', test_data_1, nbr_results)
-
-    def test_GET_TaskSchedulingRelationBlueprint_view_returns_correct_entry(self):
-
-        # setup
-        test_data_1 = TaskSchedulingRelationBlueprint_test_data()
-        test_data_2 = TaskSchedulingRelationBlueprint_test_data()
-        id1 = models.TaskSchedulingRelationBlueprint.objects.create(**test_data_1).id
-        id2 = models.TaskSchedulingRelationBlueprint.objects.create(**test_data_2).id
-        # assert
-        GET_OK_and_assert_equal_expected_response(self, BASE_URL + '/task_scheduling_relation_blueprint/%s/' % id1, test_data_1)
-        GET_OK_and_assert_equal_expected_response(self, BASE_URL + '/task_scheduling_relation_blueprint/%s/' % id2, test_data_2)
-
 
 class TaskSchedulingRelationDraftTestCase(unittest.TestCase):
 
diff --git a/SAS/TMSS/backend/test/t_tmssapp_specification_django_API.py b/SAS/TMSS/backend/test/t_tmssapp_specification_django_API.py
index 3a0ca74d9d48e9bcff090432026020fbe7cf8e0a..a8b240cf27f2de37e89120a6e13f9d8302289df4 100755
--- a/SAS/TMSS/backend/test/t_tmssapp_specification_django_API.py
+++ b/SAS/TMSS/backend/test/t_tmssapp_specification_django_API.py
@@ -874,18 +874,17 @@ class TaskBlueprintTest(unittest.TestCase):
         with self.assertRaises(IntegrityError):
             models.TaskBlueprint.objects.create(**test_data)
 
-    def test_TaskBlueprint_allows_missing_draft(self):
+    def test_TaskBlueprint_prevents_missing_scheduling_unit_blueprint(self):
 
         # setup
         test_data = dict(TaskBlueprint_test_data(task_draft=self.task_draft, scheduling_unit_blueprint=self.scheduling_unit_blueprint))
         test_data['draft'] = None
 
-        trb = models.TaskBlueprint.objects.create(**test_data)
         # assert
-        self.assertIsNotNone(trb)
-        self.assertIsNone(trb.draft)
+        with self.assertRaises(IntegrityError):
+            models.TaskBlueprint.objects.create(**test_data)
 
-    def test_TaskBlueprint_allows_draft_deletion(self):
+    def test_TaskBlueprint_prevents_draft_deletion(self):
         # setup
         test_data = dict(TaskBlueprint_test_data())
         blueprint = models.TaskBlueprint.objects.create(**test_data)
@@ -893,10 +892,9 @@ class TaskBlueprintTest(unittest.TestCase):
         self.assertIsNotNone(blueprint.draft)
 
         draft = blueprint.draft
-        draft.delete()
+        with self.assertRaises(IntegrityError):
+            draft.delete()
 
-        blueprint.refresh_from_db()
-        self.assertIsNone(blueprint.draft)
 
     def test_TaskBlueprint_prevents_missing_scheduling_unit_blueprint(self):
 
@@ -993,14 +991,14 @@ class TaskRelationBlueprintTest(unittest.TestCase):
         with self.assertRaises(IntegrityError):
             models.TaskRelationBlueprint.objects.create(**test_data)
 
-    def test_TaskRelationBlueprint_allows_missing_draft(self):
+    def test_TaskRelationBlueprint_prevents_missing_draft(self):
         # setup
         test_data = dict(TaskRelationBlueprint_test_data(producer=self.producer, consumer=self.consumer))
         test_data['draft'] = None
 
-        trb = models.TaskRelationBlueprint.objects.create(**test_data)
-        self.assertIsNotNone(trb)
-        self.assertIsNone(trb.draft)
+        # assert
+        with self.assertRaises(IntegrityError):
+            models.TaskRelationBlueprint.objects.create(**test_data)
 
     def test_TaskRelationBlueprint_prevents_missing_producer(self):
         # setup
diff --git a/SAS/TMSS/backend/test/tmss_test_data_rest.py b/SAS/TMSS/backend/test/tmss_test_data_rest.py
index 2965cb508e6192723e43f595e4a7f68dc21d9888..9e8e2178803461d2b9801e02799312267a431eca 100644
--- a/SAS/TMSS/backend/test/tmss_test_data_rest.py
+++ b/SAS/TMSS/backend/test/tmss_test_data_rest.py
@@ -555,15 +555,18 @@ class TMSSRESTTestDataCreator():
             return self._subtask_template_url
 
 
-    def TaskSchedulingRelationBlueprint(self, first_url=None, second_url=None, placement="after"):
-        
+    def TaskSchedulingRelationBlueprint(self, first_url=None, second_url=None, placement="after", draft_url=None):
         if first_url is None:
             first_url = self.cached_task_blueprint_url
     
         if second_url is None:
             second_url = self.cached_task_blueprint_url
 
+        if draft_url is None:
+            self.draft_url = self.post_data_and_get_url(self.TaskSchedulingRelationDraft(), '/task_scheduling_relation_draft/')
+
         return {"tags": [],
+                "draft": draft_url,
                 "first": first_url,
                 "second": second_url,
                 "placement": self.django_api_url + '/scheduling_relation_placement/%s'%placement,
@@ -576,6 +579,7 @@ class TMSSRESTTestDataCreator():
         if second_url is None:
             second_url = self.cached_task_draft_url
         return {"tags": [],
+                "blueprints": [],
                 "blueprints": [],
                 "first": first_url,
                 "second": second_url,