diff --git a/SAS/TMSS/src/tmss/tmssapp/migrations/0001_initial.py b/SAS/TMSS/src/tmss/tmssapp/migrations/0001_initial.py
index defc347b991c9bacb5b76da03d1755e68afb44e1..2ac93b356e68a70ef8a50bc221c21e7009b7fb25 100644
--- a/SAS/TMSS/src/tmss/tmssapp/migrations/0001_initial.py
+++ b/SAS/TMSS/src/tmss/tmssapp/migrations/0001_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 3.0.9 on 2020-12-18 07:08
+# Generated by Django 3.0.9 on 2021-01-08 13:46
 
 from django.conf import settings
 import django.contrib.postgres.fields
diff --git a/SAS/TMSS/test/t_tmssapp_specification_REST_API.py b/SAS/TMSS/test/t_tmssapp_specification_REST_API.py
index 2d51f1861ed5aae0f529117a30a73f6c92f024b0..a40f9ce7c189cdfe27b75dfd8ca3aad6a675fae5 100755
--- a/SAS/TMSS/test/t_tmssapp_specification_REST_API.py
+++ b/SAS/TMSS/test/t_tmssapp_specification_REST_API.py
@@ -2439,8 +2439,14 @@ class TaskSchedulingRelationBlueprintTestCase(unittest.TestCase):
 
     @classmethod
     def setUpClass(cls) -> None:
-        cls.first_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskBlueprint(), '/task_blueprint/')
-        cls.second_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskBlueprint(), '/task_blueprint/')
+        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/')
 
     def test_task_scheduling_relation_blueprint_list_apiformat(self):
         r = requests.get(BASE_URL + '/task_scheduling_relation_blueprint/?format=api', auth=AUTH)
@@ -2451,19 +2457,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=None, second_url=None, placement="after")
+        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")
         # 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")
+        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=None, second_url=None, placement="after")
+        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")
         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=None, second_url=None, placement="after")
-        tsrb_test_data2 = test_data_creator.TaskSchedulingRelationBlueprint(first_url=None, second_url=None, placement="after")
+        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")
 
         # 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)
@@ -2475,7 +2487,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=None, second_url=None, placement="after")
+        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")
         # 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']
@@ -2490,7 +2502,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=None, second_url=None, placement="after")
+        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")
         # 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']
@@ -2500,7 +2512,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=None, second_url=None, placement="after")
+        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")
         # test data
         test_data = dict(tsrb_test_data)
         test_data['time_offset'] = None
@@ -2510,7 +2522,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=None, second_url=None, placement="after")
+        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")
 
         # test data
         test_data = dict(tsrb_test_data)
@@ -2521,7 +2533,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=None, second_url=None, placement="after")
+        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")
 
         # test data
         test_data = dict(tsrb_test_data)
@@ -2532,7 +2544,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=None, second_url=None, placement="after")
+        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")
 
         # test data
         test_data = dict(tsrb_test_data)
@@ -2544,7 +2556,8 @@ class TaskSchedulingRelationBlueprintTestCase(unittest.TestCase):
 
     def test_task_scheduling_relation_blueprint_CASCADE_behavior_on_task_blueprint_deleted(self):
         #Create test data
-        tsrb_test_data = test_data_creator.TaskSchedulingRelationBlueprint(first_url=None, second_url=None, placement="after")
+        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")
 
         # POST new item
         url = POST_and_assert_expected_response(self, BASE_URL + '/task_scheduling_relation_blueprint/',  tsrb_test_data, 201, tsrb_test_data)['url']
@@ -2552,12 +2565,8 @@ class TaskSchedulingRelationBlueprintTestCase(unittest.TestCase):
         # verify
         GET_OK_and_assert_equal_expected_response(self, url, tsrb_test_data)
 
-        #Get the URL of first task blueprint
-        test_data = dict(tsrb_test_data)
-        task_blueprint_url=test_data['first']
-
         # DELETE dependency
-        DELETE_and_assert_gone(self, task_blueprint_url)
+        DELETE_and_assert_gone(self, first_task_blueprint_url)
 
         # assert
         GET_and_assert_equal_expected_code(self, url, 404)
@@ -2585,8 +2594,14 @@ class TaskSchedulingRelationDraftTestCase(unittest.TestCase):
 
     @classmethod
     def setUpClass(cls) -> None:
-        cls.first_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskDraft(), '/task_draft/')
-        cls.second_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskDraft(), '/task_draft/')
+        cls.task_draft = test_data_creator.post_data_and_get_response_as_json_object(test_data_creator.TaskDraft(), '/task_draft/')
+
+    @classmethod
+    def fast_create_new_task_draft_url(cls):
+        '''create a new task_draft object, based on existing one, with only new name, returning new url'''
+        tbp = dict(cls.task_draft)
+        tbp['name'] = str(uuid.uuid4())
+        return test_data_creator.post_data_and_get_url(tbp, '/task_draft/')
 
     def test_task_scheduling_relation_draft_list_apiformat(self):
         r = requests.get(BASE_URL + '/task_scheduling_relation_draft/?format=api', auth=AUTH)
@@ -2597,19 +2612,19 @@ class TaskSchedulingRelationDraftTestCase(unittest.TestCase):
         GET_and_assert_equal_expected_code(self, BASE_URL + '/task_scheduling_relation_draft/1234321/', 404)
 
     def test_task_scheduling_relation_draft_POST_and_GET(self):
-        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft( first_url=None, second_url=None, placement="after")
+        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft( first_url=self.fast_create_new_task_draft_url(), second_url=self.fast_create_new_task_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_draft/', tsrd_test_data, 201, tsrd_test_data)
         url = r_dict['url']
         GET_OK_and_assert_equal_expected_response(self, url, tsrd_test_data)
 
     def test_task_scheduling_relation_draft_PUT_invalid_raises_error(self):
-        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft( first_url=None, second_url=None, placement="after")
+        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft( first_url=self.fast_create_new_task_draft_url(), second_url=self.fast_create_new_task_draft_url(), placement="after")
         PUT_and_assert_expected_response(self, BASE_URL + '/task_scheduling_relation_draft/9876789876/', tsrd_test_data, 404, {})
 
     def test_task_scheduling_relation_draft_PUT(self):
-        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft( first_url=None, second_url=None, placement="after")
-        tsrd_test_data2 = test_data_creator.TaskSchedulingRelationDraft( first_url=None, second_url=None, placement="after")
+        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft( first_url=self.fast_create_new_task_draft_url(), second_url=self.fast_create_new_task_draft_url(), placement="after")
+        tsrd_test_data2 = test_data_creator.TaskSchedulingRelationDraft( first_url=self.fast_create_new_task_draft_url(), second_url=self.fast_create_new_task_draft_url(), placement="after")
 
         # POST new item, verify
         r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_scheduling_relation_draft/', tsrd_test_data, 201, tsrd_test_data)
@@ -2621,7 +2636,7 @@ class TaskSchedulingRelationDraftTestCase(unittest.TestCase):
         GET_OK_and_assert_equal_expected_response(self, url, tsrd_test_data2)
 
     def test_task_scheduling_relation_draft_PATCH(self):
-        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft(first_url=None, second_url=None, placement="after")
+        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft(first_url=self.fast_create_new_task_draft_url(), second_url=self.fast_create_new_task_draft_url(), placement="after")
         # POST new item, verify
         r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_scheduling_relation_draft/', tsrd_test_data, 201, tsrd_test_data)
         url = r_dict['url']
@@ -2636,7 +2651,7 @@ class TaskSchedulingRelationDraftTestCase(unittest.TestCase):
         GET_OK_and_assert_equal_expected_response(self, url, expected_data)
 
     def test_task_scheduling_relation_draft_DELETE(self):
-        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft( first_url=None, second_url=None, placement="after")
+        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft( first_url=self.fast_create_new_task_draft_url(), second_url=self.fast_create_new_task_draft_url(), placement="after")
         # POST new item, verify
         r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_scheduling_relation_draft/', tsrd_test_data, 201, tsrd_test_data)
         url = r_dict['url']
@@ -2646,7 +2661,7 @@ class TaskSchedulingRelationDraftTestCase(unittest.TestCase):
         DELETE_and_assert_gone(self, url)
 
     def test_task_scheduling_relation_draft_prevents_missing_time_offset(self):
-        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft( first_url=None, second_url=None, placement="after")
+        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft( first_url=self.fast_create_new_task_draft_url(), second_url=self.fast_create_new_task_draft_url(), placement="after")
         # test data
         test_data = dict(tsrd_test_data)
         test_data['time_offset'] = None
@@ -2656,7 +2671,7 @@ class TaskSchedulingRelationDraftTestCase(unittest.TestCase):
         self.assertTrue('This field may not be null' in str(r_dict['time_offset']))
 
     def test_task_scheduling_relation_draft_prevents_missing_time_first(self):
-        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft( first_url=None, second_url=None, placement="after")
+        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft( first_url=self.fast_create_new_task_draft_url(), second_url=self.fast_create_new_task_draft_url(), placement="after")
 
         # test data
         test_data = dict(tsrd_test_data)
@@ -2667,7 +2682,7 @@ class TaskSchedulingRelationDraftTestCase(unittest.TestCase):
         self.assertTrue('This field may not be null' in str(r_dict['first']))
 
     def test_task_scheduling_relation_draft_prevents_missing_second(self):
-        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft( first_url=None, second_url=None, placement="after")
+        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft( first_url=self.fast_create_new_task_draft_url(), second_url=self.fast_create_new_task_draft_url(), placement="after")
 
         # test data
         test_data = dict(tsrd_test_data)
@@ -2678,7 +2693,7 @@ class TaskSchedulingRelationDraftTestCase(unittest.TestCase):
         self.assertTrue('This field may not be null' in str(r_dict['second']))
 
     def test_task_scheduling_relation_draft_prevents_missing_placement(self):
-        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft( first_url=None, second_url=None, placement="after")
+        tsrd_test_data = test_data_creator.TaskSchedulingRelationDraft( first_url=self.fast_create_new_task_draft_url(), second_url=self.fast_create_new_task_draft_url(), placement="after")
 
         # test data
         test_data = dict(tsrd_test_data)
@@ -2845,7 +2860,6 @@ class ExtendedViewTestCase(unittest.TestCase):
 
 
 if __name__ == "__main__":
-    logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s',
-                        level=logging.INFO)
+    logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO)
     unittest.main()