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 d7515c0afdd7169c391097f628cff0248a99bf1c..76f1c85550e153605820b4743f585d6094baa3c0 100755
--- a/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py
+++ b/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py
@@ -644,8 +644,9 @@ class TaskConnectorTestCase(unittest.TestCase):
         PUT_and_assert_expected_response(self, BASE_URL + '/task_connector_type/9876789876/', test_data_creator.TaskConnectorType(task_template_url=self.task_template_url), 404, {})
 
     def test_task_connector_PUT(self):
-        tc_test_data1 = test_data_creator.TaskConnectorType(role="correlator", task_template_url=self.task_template_url)
-        tc_test_data2 = test_data_creator.TaskConnectorType(role="beamformer", task_template_url=self.task_template_url)
+        task_template_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskTemplate(), '/task_template/')
+        tc_test_data1 = test_data_creator.TaskConnectorType(role="correlator", task_template_url=task_template_url)
+        tc_test_data2 = test_data_creator.TaskConnectorType(role="beamformer", task_template_url=task_template_url)
 
         # POST new item, verify
         r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_connector_type/', tc_test_data1, 201, tc_test_data1)
@@ -1734,8 +1735,9 @@ class TaskRelationDraftTestCase(unittest.TestCase):
         cls.producer_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskDraft(), '/task_draft/')
         cls.consumer_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskDraft(), '/task_draft/')
         cls.template_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskRelationSelectionTemplate(), '/task_relation_selection_template/')
-        cls.input_role_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(), '/task_connector_type/')
-        cls.output_role_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(), '/task_connector_type/')
+        cls.task_template_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskTemplate(), '/task_template/')
+        cls.input_role_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(iotype="input", task_template_url=cls.task_template_url), '/task_connector_type/')
+        cls.output_role_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(iotype="output", task_template_url=cls.task_template_url), '/task_connector_type/')
 
     def test_task_relation_draft_list_apiformat(self):
         r = requests.get(BASE_URL + '/task_relation_draft/?format=api', auth=AUTH)
@@ -1746,7 +1748,7 @@ class TaskRelationDraftTestCase(unittest.TestCase):
         GET_and_assert_equal_expected_code(self, BASE_URL + '/task_relation_draft/1234321/', 404)
 
     def test_task_relation_draft_POST_and_GET(self):
-        trd_test_data = test_data_creator.TaskRelationDraft(producer_url=self.producer_url, consumer_url=self.consumer_url, template_url=self.template_url, input_role_url=self.input_role_url)
+        trd_test_data = test_data_creator.TaskRelationDraft(producer_url=self.producer_url, consumer_url=self.consumer_url, template_url=self.template_url)
 
         # POST and GET a new item and assert correctness
         r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_relation_draft/', trd_test_data, 201, trd_test_data)
@@ -1758,7 +1760,9 @@ class TaskRelationDraftTestCase(unittest.TestCase):
         PUT_and_assert_expected_response(self, BASE_URL + '/task_relation_draft/9876789876/', trd_test_data, 404, {})
 
     def test_task_relation_draft_PUT(self):
-        trd_test_data1 = test_data_creator.TaskRelationDraft(producer_url=self.producer_url, consumer_url=self.consumer_url, template_url=self.template_url, input_role_url=self.input_role_url)
+        task_template_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskTemplate(), '/task_template/')
+        input_role_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(iotype="input", task_template_url=task_template_url), '/task_connector_type/')
+        trd_test_data1 = test_data_creator.TaskRelationDraft(producer_url=self.producer_url, consumer_url=self.consumer_url, template_url=self.template_url, input_role_url=input_role_url)
 
         # POST new item, verify
         r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_relation_draft/', trd_test_data1, 201, trd_test_data1)
@@ -1766,7 +1770,10 @@ class TaskRelationDraftTestCase(unittest.TestCase):
         GET_OK_and_assert_equal_expected_response(self, url, trd_test_data1)
 
         # PUT new values, verify
-        trd_test_data2 = test_data_creator.TaskRelationDraft(producer_url=self.producer_url, consumer_url=test_data_creator.post_data_and_get_url(test_data_creator.TaskDraft(),'/task_draft/'), template_url=self.template_url, input_role_url=self.input_role_url)
+        task_template_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskTemplate(), '/task_template/')
+        input_role_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(iotype="input", task_template_url=task_template_url), '/task_connector_type/')
+        new_consumer_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskDraft(), '/task_draft/')
+        trd_test_data2 = test_data_creator.TaskRelationDraft(producer_url=self.producer_url, consumer_url=new_consumer_url, template_url=self.template_url, input_role_url=input_role_url)
         PUT_and_assert_expected_response(self, url, trd_test_data2, 200, trd_test_data2)
         GET_OK_and_assert_equal_expected_response(self, url, trd_test_data2)
 
@@ -1848,7 +1855,8 @@ class TaskRelationDraftTestCase(unittest.TestCase):
         GET_and_assert_equal_expected_code(self, url, 404)
 
     def test_task_relation_draft_CASCADE_behavior_on_input_deleted(self):
-        input_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(), '/task_connector_type/')
+        task_template_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskTemplate(), '/task_template/')
+        input_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(task_template_url=task_template_url), '/task_connector_type/')
         trd_test_data = test_data_creator.TaskRelationDraft(input_role_url=input_url, producer_url=self.producer_url, consumer_url=self.consumer_url, template_url=self.template_url)
 
         # POST new item
@@ -1865,7 +1873,8 @@ class TaskRelationDraftTestCase(unittest.TestCase):
         GET_and_assert_equal_expected_code(self, url, 404)
 
     def test_task_relation_draft_CASCADE_behavior_on_output_deleted(self):
-        output_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(), '/task_connector_type/')
+        task_template_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskTemplate(), '/task_template/')
+        output_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(task_template_url=task_template_url), '/task_connector_type/')
         trd_test_data = test_data_creator.TaskRelationDraft(output_role_url=output_url, producer_url=self.producer_url, consumer_url=self.consumer_url, template_url=self.template_url, input_role_url=self.input_role_url)
 
         # POST new item with dependency
@@ -2320,8 +2329,9 @@ class TaskRelationBlueprintTestCase(unittest.TestCase):
         cls.producer_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskBlueprint(), '/task_blueprint/')
         cls.consumer_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskBlueprint(), '/task_blueprint/')
         cls.template_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskRelationSelectionTemplate(), '/task_relation_selection_template/')
-        cls.input_role_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(), '/task_connector_type/')
-        cls.output_role_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(), '/task_connector_type/')
+        cls.task_template_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskTemplate(), '/task_template/')
+        cls.input_role_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(iotype="input", task_template_url=cls.task_template_url), '/task_connector_type/')
+        cls.output_role_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(iotype="output", task_template_url=cls.task_template_url), '/task_connector_type/')
 
     def test_task_relation_blueprint_list_apiformat(self):
         r = requests.get(BASE_URL + '/task_relation_blueprint/?format=api', auth=AUTH)
@@ -2332,7 +2342,7 @@ class TaskRelationBlueprintTestCase(unittest.TestCase):
         GET_and_assert_equal_expected_code(self, BASE_URL + '/task_relation_blueprint/1234321/', 404)
 
     def test_task_relation_blueprint_POST_and_GET(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)
+        trb_test_data = test_data_creator.TaskRelationBlueprint(draft_url=self.draft_url, producer_url=self.producer_url, consumer_url=self.consumer_url, template_url=self.template_url, input_role_url=self.input_role_url, output_role_url=self.output_role_url)
 
         # POST and GET a new item and assert correctness
         r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_relation_blueprint/', trb_test_data, 201, trb_test_data)
@@ -2344,20 +2354,25 @@ class TaskRelationBlueprintTestCase(unittest.TestCase):
         PUT_and_assert_expected_response(self, BASE_URL + '/task_relation_blueprint/9876789876/', trb_test_data, 404, {})
 
     def test_task_relation_blueprint_PUT(self):
-        trb_test_data1 = 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)
+        task_template_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskTemplate(), '/task_template/')
+        input_role_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(iotype="input", task_template_url=task_template_url), '/task_connector_type/')
+        trd_test_data1 = test_data_creator.TaskRelationBlueprint(draft_url=self.draft_url, producer_url=self.producer_url, consumer_url=self.consumer_url, template_url=self.template_url, input_role_url=input_role_url)
 
         # POST new item, verify
-        r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_relation_blueprint/', trb_test_data1, 201, trb_test_data1)
+        r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_relation_blueprint/', trd_test_data1, 201, trd_test_data1)
         url = r_dict['url']
-        GET_OK_and_assert_equal_expected_response(self, url, trb_test_data1)
+        GET_OK_and_assert_equal_expected_response(self, url, trd_test_data1)
 
         # PUT new values, verify
-        trb_test_data2 = test_data_creator.TaskRelationBlueprint(draft_url=self.draft_url, template_url=self.template_url, input_role_url=self.input_role_url, consumer_url=test_data_creator.post_data_and_get_url(test_data_creator.TaskBlueprint(),'/task_blueprint/'), producer_url=self.producer_url)
-        PUT_and_assert_expected_response(self, url, trb_test_data2, 200, trb_test_data2)
-        GET_OK_and_assert_equal_expected_response(self, url, trb_test_data2)
+        task_template_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskTemplate(), '/task_template/')
+        input_role_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(iotype="input", task_template_url=task_template_url), '/task_connector_type/')
+        new_consumer_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskBlueprint(), '/task_blueprint/')
+        trd_test_data2 = test_data_creator.TaskRelationBlueprint(draft_url=self.draft_url, producer_url=self.producer_url, consumer_url=new_consumer_url, template_url=self.template_url, input_role_url=input_role_url)
+        PUT_and_assert_expected_response(self, url, trd_test_data2, 200, trd_test_data2)
+        GET_OK_and_assert_equal_expected_response(self, url, trd_test_data2)
 
     def test_task_relation_blueprint_PATCH(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)
+        trb_test_data = test_data_creator.TaskRelationBlueprint(draft_url=self.draft_url, producer_url=self.producer_url, consumer_url=self.consumer_url, template_url=self.template_url)
 
         # POST new item, verify
         r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_relation_blueprint/', trb_test_data, 201, trb_test_data)
@@ -2373,7 +2388,7 @@ class TaskRelationBlueprintTestCase(unittest.TestCase):
         GET_OK_and_assert_equal_expected_response(self, url, expected_data)
 
     def test_task_relation_blueprint_DELETE(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)
+        trb_test_data = test_data_creator.TaskRelationBlueprint(draft_url=self.draft_url, producer_url=self.producer_url, consumer_url=self.consumer_url, template_url=self.template_url)
 
         # POST new item, verify
         r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_relation_blueprint/', trb_test_data, 201, trb_test_data)
@@ -2451,7 +2466,7 @@ class TaskRelationBlueprintTestCase(unittest.TestCase):
 
     def test_task_relation_blueprint_CASCADE_behavior_on_task_relation_selection_template_deleted(self):
         template_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskRelationSelectionTemplate(), '/task_relation_selection_template/')
-        trb_test_data = test_data_creator.TaskRelationBlueprint(draft_url=self.draft_url, template_url=template_url, input_role_url=self.input_role_url, consumer_url=self.consumer_url, producer_url=self.producer_url)
+        trb_test_data = test_data_creator.TaskRelationBlueprint(draft_url=self.draft_url, template_url=template_url, producer_url=self.producer_url, consumer_url=self.consumer_url)
 
         # POST new item
         url = POST_and_assert_expected_response(self, BASE_URL + '/task_relation_blueprint/',  trb_test_data, 201, trb_test_data)['url']
@@ -2500,8 +2515,9 @@ class TaskRelationBlueprintTestCase(unittest.TestCase):
         GET_and_assert_equal_expected_code(self, url, 404)
 
     def test_task_relation_blueprint_CASCADE_behavior_on_input_deleted(self):
-        input_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(), '/task_connector_type/')
-        trb_test_data = test_data_creator.TaskRelationBlueprint(draft_url=self.draft_url, template_url=self.template_url, input_role_url=input_url, consumer_url=self.consumer_url, producer_url=self.producer_url)
+        task_template_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskTemplate(), '/task_template/')
+        input_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(task_template_url=task_template_url), '/task_connector_type/')
+        trb_test_data = test_data_creator.TaskRelationBlueprint(draft_url=self.draft_url, input_role_url=input_url, producer_url=self.producer_url, consumer_url=self.consumer_url, template_url=self.template_url)
 
         # POST new item
         url = POST_and_assert_expected_response(self, BASE_URL + '/task_relation_blueprint/',
@@ -2517,8 +2533,9 @@ class TaskRelationBlueprintTestCase(unittest.TestCase):
         GET_and_assert_equal_expected_code(self, url, 404)
 
     def test_task_relation_blueprint_CASCADE_behavior_on_output_deleted(self):
-        output_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(), '/task_connector_type/')
-        trb_test_data = test_data_creator.TaskRelationBlueprint(draft_url=self.draft_url, template_url=self.template_url, input_role_url=self.input_role_url, output_role_url=output_url, consumer_url=self.consumer_url, producer_url=self.producer_url)
+        task_template_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskTemplate(), '/task_template/')
+        output_url = test_data_creator.post_data_and_get_url(test_data_creator.TaskConnectorType(task_template_url=task_template_url), '/task_connector_type/')
+        trb_test_data = test_data_creator.TaskRelationBlueprint(draft_url=self.draft_url, output_role_url=output_url, producer_url=self.producer_url, consumer_url=self.consumer_url, template_url=self.template_url, input_role_url=self.input_role_url)
 
         # POST new item with dependency
         url = POST_and_assert_expected_response(self, BASE_URL + '/task_relation_blueprint/',
diff --git a/SAS/TMSS/backend/test/tmss_test_data_rest.py b/SAS/TMSS/backend/test/tmss_test_data_rest.py
index 4b74a99f08e150ac3dd61c17157696fb048bf5c9..b0264d53860e2ac374fc822cddaa56f3032f811b 100644
--- a/SAS/TMSS/backend/test/tmss_test_data_rest.py
+++ b/SAS/TMSS/backend/test/tmss_test_data_rest.py
@@ -432,11 +432,19 @@ class TMSSRESTTestDataCreator():
             selection_doc = self.get_response_as_json_object(template_url+'/default')
 
         if input_role_url is None:
-            input_role_url = self.post_data_and_get_url(self.TaskConnectorType(iotype="input"), '/task_connector_type/')
-    
+            try:
+                input_role_url = self.post_data_and_get_url(self.TaskConnectorType(iotype="input"), '/task_connector_type/')
+            except:
+                # duplicate connector created... pick first random input connector
+                input_role_url = next(c for c in self.get_response_as_json_object(self.django_api_url+'/task_connector_type')['results'] if c['iotype_value']=='input')['url']
+
         if output_role_url is None:
-            output_role_url = self.post_data_and_get_url(self.TaskConnectorType(iotype="output"), '/task_connector_type/')
-    
+            try:
+                output_role_url = self.post_data_and_get_url(self.TaskConnectorType(iotype="output"), '/task_connector_type/')
+            except:
+                # duplicate connector created... pick first random output connector
+                output_role_url = next(c for c in self.get_response_as_json_object(self.django_api_url+'/task_connector_type')['results'] if c['iotype_value']=='output')['url']
+
         return {"tags": [],
                 "selection_doc": selection_doc,
                 "producer": producer_url,
@@ -530,11 +538,19 @@ class TMSSRESTTestDataCreator():
             selection_doc = self.get_response_as_json_object(template_url+'/default')
 
         if input_role_url is None:
-            input_role_url = self.post_data_and_get_url(self.TaskConnectorType(iotype="input"), '/task_connector_type/')
-    
+            try:
+                input_role_url = self.post_data_and_get_url(self.TaskConnectorType(iotype="input"), '/task_connector_type/')
+            except:
+                # duplicate connector created... pick first random input connector
+                input_role_url = next(c for c in self.get_response_as_json_object(self.django_api_url+'/task_connector_type')['results'] if c['iotype_value']=='input')['url']
+
         if output_role_url is None:
-            output_role_url = self.post_data_and_get_url(self.TaskConnectorType(iotype="output"), '/task_connector_type/')
-    
+            try:
+                output_role_url = self.post_data_and_get_url(self.TaskConnectorType(iotype="output"), '/task_connector_type/')
+            except:
+                # duplicate connector created... pick first random output connector
+                output_role_url = next(c for c in self.get_response_as_json_object(self.django_api_url+'/task_connector_type')['results'] if c['iotype_value']=='output')['url']
+
         # test data
         return {"tags": [],
                 "selection_doc": selection_doc,