diff --git a/SAS/TMSS/src/tmss/tmssapp/models/specification.py b/SAS/TMSS/src/tmss/tmssapp/models/specification.py
index 36de6dcf04d2dd87ef4d1eb89270e51ec58ecfb0..3dc05281234430e3e3d20546c271de7abcf6a9eb 100644
--- a/SAS/TMSS/src/tmss/tmssapp/models/specification.py
+++ b/SAS/TMSS/src/tmss/tmssapp/models/specification.py
@@ -276,6 +276,7 @@ class Template(NamedCommon):
         # this template's schema has a schema of its own (usually the draft-06 meta schema). Validate it.
         validate_json_against_its_schema(self.schema)
 
+    @property
     def is_used(self) -> bool:
         '''Is this template used by any of its related objects?'''
         for rel_obj in self._meta.related_objects:
@@ -291,7 +292,7 @@ class Template(NamedCommon):
             self.version = self.__class__.objects.filter(name=self.name).count() + 1
         else:
             # this is a known template. Check if it is being used.
-            if self.is_used():
+            if self.is_used:
                 # yes, this template is used by others, so "editing"/updating is forbidden,
                 # so create new instance (by setting pk=None) and assign new unique version number
                 self.pk = None
diff --git a/SAS/TMSS/test/t_tmssapp_scheduling_REST_API.py b/SAS/TMSS/test/t_tmssapp_scheduling_REST_API.py
index 03b0c48e5214770da21e13156fbebffaad2fdd02..f05754d0dd0d858904f7701e73fd2e5c30d47c86 100755
--- a/SAS/TMSS/test/t_tmssapp_scheduling_REST_API.py
+++ b/SAS/TMSS/test/t_tmssapp_scheduling_REST_API.py
@@ -100,7 +100,6 @@ class SubtaskTemplateTestCase(unittest.TestCase):
         test_patch = {"name": "new_name",
                       "description": "better description",
                       "type": BASE_URL + '/subtask_type/inspection',
-                      "version": 'v6.28318530718',
                       "schema": minimal_json_schema(properties={"mykey": {"type":"string", "default":"my better value"}})
                       }
 
@@ -196,7 +195,6 @@ class DataproductSpecificationsTemplateTestCase(unittest.TestCase):
 
         test_patch = {"name": "new_name",
                       "description": "better description",
-                      "version": 'v6.28318530718',
                       "schema": minimal_json_schema(properties={"mykey": {"type":"string", "default":"my better value"}})
                       }
 
diff --git a/SAS/TMSS/test/t_tmssapp_specification_REST_API.py b/SAS/TMSS/test/t_tmssapp_specification_REST_API.py
index 7fe03a0eb7f0dcea2f15b976983b1e8f25e7ed4a..d6ca8bf9a3706116ea2c997bcd12ab23e65ef2a9 100755
--- a/SAS/TMSS/test/t_tmssapp_specification_REST_API.py
+++ b/SAS/TMSS/test/t_tmssapp_specification_REST_API.py
@@ -105,7 +105,6 @@ class GeneratorTemplateTestCase(unittest.TestCase):
 
         test_patch = {"name": "new_name",
                       "description": "better description",
-                      "version": 'v6.28318530718',
                       "schema": minimal_json_schema(properties={"mykey": {"type":"string", "default":"my better value"}})}
 
         # PATCH item and verify
@@ -176,7 +175,6 @@ class SchedulingUnitTemplateTestCase(unittest.TestCase):
 
         test_patch = {"name": "new_name",
                       "description": "better description",
-                      "version": 'v6.28318530718',
                       "schema": minimal_json_schema(properties={"mykey": {"type":"string", "default":"my better value"}})}
 
         # PATCH item and verify
@@ -245,7 +243,6 @@ class TaskTemplateTestCase(unittest.TestCase):
 
         test_patch = {"name": "new_name",
                       "description": "better description",
-                      "version": 'v6.28318530718',
                       "schema": minimal_json_schema(properties={"mykey": {"type":"string", "default":"my better value"}})}
 
         # PATCH item and verify
@@ -345,7 +342,6 @@ class TaskRelationSelectionTemplateTestCase(unittest.TestCase):
 
         test_patch = {"name": "new_name",
                       "description": "better description",
-                      "version": 'v6.28318530718',
                       "schema": minimal_json_schema(properties={"mykey": {"type":"string", "default":"my better value"}})}
 
         # PATCH item and verify
diff --git a/SAS/TMSS/test/t_tmssapp_specification_django_API.py b/SAS/TMSS/test/t_tmssapp_specification_django_API.py
index c052cd53e66463b4fbf0d3e6167d13d160228952..7b7db2f1cbf6fc142a0486431db926152ed649f3 100755
--- a/SAS/TMSS/test/t_tmssapp_specification_django_API.py
+++ b/SAS/TMSS/test/t_tmssapp_specification_django_API.py
@@ -132,19 +132,22 @@ class TaskTemplateTest(unittest.TestCase):
         self.assertGreater(after, entry.updated_at)
 
     def test_TaskTemplate_name_version_unique(self):
-        test_data = TaskTemplate_test_data(name="my_name", version="1")
+        test_data = TaskTemplate_test_data(name=str(uuid.uuid4()))
+        # save data twice
         entry1 = models.TaskTemplate.objects.create(**test_data)
+        entry2 = models.TaskTemplate.objects.create(**test_data)
 
-        with self.assertRaises(IntegrityError):
-            entry2 = models.TaskTemplate.objects.create(**test_data)
-
-        test_data2 = dict(**test_data)
-        test_data2['version'] = "2"
-        entry2 = models.TaskTemplate.objects.create(**test_data2)
+        self.assertEqual(1, entry1.version)
+        self.assertEqual(2, entry2.version) #version is autoincremented
 
+        # try to modify version... should be allowed, cause the template is not used, but should raise IntegrityError (unique constraint)
         with self.assertRaises(IntegrityError):
-            entry2.version = '1'
+            entry2.version = 1
             entry2.save()
+        entry2.refresh_from_db()
+
+        self.assertEqual(1, entry1.version)
+        self.assertEqual(2, entry2.version)
 
 
 class TaskRelationSelectionTemplateTest(unittest.TestCase):
diff --git a/SAS/TMSS/test/tmss_test_data_django_models.py b/SAS/TMSS/test/tmss_test_data_django_models.py
index c9b2556759ac555b8591ee65fcd7a60050328757..bf2c1edfa4531f319a6aa426acc5f2734b43d88e 100644
--- a/SAS/TMSS/test/tmss_test_data_django_models.py
+++ b/SAS/TMSS/test/tmss_test_data_django_models.py
@@ -36,13 +36,9 @@ import uuid
 import json
 
 
-def GeneratorTemplate_test_data(name="my_GeneratorTemplate", version:str=None) -> dict:
-    if version is None:
-        version = str(uuid.uuid4())
-
+def GeneratorTemplate_test_data(name="my_GeneratorTemplate") -> dict:
     return {"name": name,
             "description": 'My one observation',
-            "version": version,
             "schema": minimal_json_schema(),
             "create_function": 'Funky',
             "tags": ["TMSS", "TESTING"]}
@@ -52,25 +48,18 @@ def DefaultGeneratorTemplate_test_data(name=None, template=None) -> dict:
             'template': template,
             'tags':[]}
 
-def SchedulingUnitTemplate_test_data(name="my_SchedulingUnitTemplate", version:str=None, schema:dict=None) -> dict:
-    if version is None:
-        version = str(uuid.uuid4())
-
+def SchedulingUnitTemplate_test_data(name="my_SchedulingUnitTemplate", schema:dict=None) -> dict:
     if schema is None:
         schema = minimal_json_schema(properties={ "foo" : { "type": "string", "default": "bar" } }, required=["foo"])
 
     return {"name": name,
             "description": 'My SchedulingUnitTemplate description',
-            "version": version,
             "schema": schema,
             "tags": ["TMSS", "TESTING"]}
 
-def SchedulingUnitObservingStrategyTemplate_test_data(name="my_SchedulingUnitObservingStrategyTemplate", version:str=None,
+def SchedulingUnitObservingStrategyTemplate_test_data(name="my_SchedulingUnitObservingStrategyTemplate",
                                                       scheduling_unit_template:models.SchedulingUnitTemplate=None,
                                                       template:dict=None) -> dict:
-    if version is None:
-        version = str(uuid.uuid4())
-
     if scheduling_unit_template is None:
         scheduling_unit_template = models.SchedulingUnitTemplate.objects.create(**SchedulingUnitTemplate_test_data())
 
@@ -79,30 +68,21 @@ def SchedulingUnitObservingStrategyTemplate_test_data(name="my_SchedulingUnitObs
 
     return {"name": name,
             "description": 'My SchedulingUnitTemplate description',
-            "version": version,
             "template": template,
             "scheduling_unit_template": scheduling_unit_template,
             "tags": ["TMSS", "TESTING"]}
 
-def TaskTemplate_test_data(name="my TaskTemplate", version:str=None) -> dict:
-    if version is None:
-        version = str(uuid.uuid4())
-
+def TaskTemplate_test_data(name="my TaskTemplate") -> dict:
     return {"type": models.TaskType.objects.get(value='observation'),
             "validation_code_js":"",
             "name": name,
             "description": 'My TaskTemplate description',
-            "version": version,
             "schema": minimal_json_schema(properties={"mykey": {}}),
             "tags": ["TMSS", "TESTING"]}
 
-def TaskRelationSelectionTemplate_test_data(name="my_TaskRelationSelectionTemplate", version:str=None) -> dict:
-    if version is None:
-        version = str(uuid.uuid4())
-
+def TaskRelationSelectionTemplate_test_data(name="my_TaskRelationSelectionTemplate") -> dict:
     return  {"name": name,
                "description": 'My TaskRelationSelectionTemplate description',
-               "version": version,
                "schema": minimal_json_schema(),
                "tags": ["TMSS", "TESTING"]}
 
@@ -270,17 +250,13 @@ def TaskRelationBlueprint_test_data(producer: models.TaskBlueprint = None, consu
             "consumer": consumer}
 
 
-def SubtaskTemplate_test_data(schema: object=None, version:str=None) -> dict:
+def SubtaskTemplate_test_data(schema: object=None) -> dict:
     if schema is None:
         schema = minimal_json_schema()
 
-    if version is None:
-        version = str(uuid.uuid4())
-
     return {"type": models.SubtaskType.objects.get(value='copy'),
             "name": "observation",
             "description": 'My one observation',
-            "version": version,
             "schema": schema,
             "realtime": True,
             "queue": False,
@@ -311,23 +287,15 @@ def TaskSchedulingRelationBlueprint_test_data(first: models.TaskBlueprint = None
             "placement": models.SchedulingRelationPlacement.objects.get(value='after'),
             "time_offset":60}
 
-def DataproductSpecificationsTemplate_test_data(version:str=None) -> dict:
-    if version is None:
-        version = str(uuid.uuid4())
-
+def DataproductSpecificationsTemplate_test_data() -> dict:
     return {"name": "data",
             "description": 'My one date',
-            "version": version,
             "schema": minimal_json_schema(),
             "tags": ["TMSS", "TESTING"]}
 
-def DataproductFeedbackTemplate_test_data(version:str=None) -> dict:
-    if version is None:
-        version = str(uuid.uuid4())
-
+def DataproductFeedbackTemplate_test_data() -> dict:
     return {"name": "data",
             "description": 'My one date',
-            "version": version,
             "schema": minimal_json_schema(),
             "tags": ["TMSS", "TESTING"]}
 
diff --git a/SAS/TMSS/test/tmss_test_data_rest.py b/SAS/TMSS/test/tmss_test_data_rest.py
index d3e091124418e7cd138bc46095df73b8eb499eec..318544301150f11b89bc208fe31334ed66bc66ad 100644
--- a/SAS/TMSS/test/tmss_test_data_rest.py
+++ b/SAS/TMSS/test/tmss_test_data_rest.py
@@ -94,36 +94,25 @@ class TMSSRESTTestDataCreator():
     #######################################################
     
     
-    def GeneratorTemplate(self, name="generatortemplate", version:str=None) -> dict:
-        if version is None:
-            version = str(uuid.uuid4())
-
+    def GeneratorTemplate(self, name="generatortemplate") -> dict:
         return {"name": name,
                 "description": 'My one observation',
-                "version": version,
                 "schema": minimal_json_schema(properties={"foo": {"type": "string", "default": "bar"}}),
                 "create_function": 'Funky',
                 "tags": ["TMSS", "TESTING"]}
     
-    def SchedulingUnitTemplate(self, name="schedulingunittemplate1", version:str=None, schema:dict=None) -> dict:
-        if version is None:
-            version = str(uuid.uuid4())
-
+    def SchedulingUnitTemplate(self, name="schedulingunittemplate1", schema:dict=None) -> dict:
         if schema is None:
             schema = minimal_json_schema(properties={"foo": {"type": "string", "default": "bar"}})
 
         return { "name": name,
                  "description": 'My description',
-                 "version": version,
                  "schema": schema,
                  "tags": ["TMSS", "TESTING"]}
 
-    def SchedulingUnitObservingStrategyTemplate(self, name="my_SchedulingUnitObservingStrategyTemplate", version:str=None,
+    def SchedulingUnitObservingStrategyTemplate(self, name="my_SchedulingUnitObservingStrategyTemplate",
                                                       scheduling_unit_template_url=None,
                                                       template:dict=None) -> dict:
-        if version is None:
-            version = str(uuid.uuid4())
-
         if scheduling_unit_template_url is None:
             scheduling_unit_template_url = self.post_data_and_get_url(self.SchedulingUnitTemplate(), '/scheduling_unit_template/')
 
@@ -132,33 +121,24 @@ class TMSSRESTTestDataCreator():
 
         return {"name": name,
                 "description": 'My SchedulingUnitTemplate description',
-                "version": version,
                 "template": template,
                 "scheduling_unit_template": scheduling_unit_template_url,
                 "tags": ["TMSS", "TESTING"]}
 
-    def TaskTemplate(self, name="tasktemplate1", task_type_url: str = None, version: str = None) -> dict:
-        if version is None:
-            version = str(uuid.uuid4())
-
+    def TaskTemplate(self, name="tasktemplate1", task_type_url: str = None) -> dict:
         if task_type_url is None:
             task_type_url = self.django_api_url + '/task_type/observation'
 
         return {"name": name,
                 "description": 'My one observation',
-                "version": version,
                 "schema": minimal_json_schema(),
                 "tags": ["TMSS", "TESTING"],
                 "type": task_type_url,
                 "validation_code_js": "???"}
     
-    def TaskRelationSelectionTemplate(self, name="taskrelationselectiontemplate1", version:str=None) -> dict:
-        if version is None:
-            version = str(uuid.uuid4())
-
+    def TaskRelationSelectionTemplate(self, name="taskrelationselectiontemplate1") -> dict:
         return {"name": name,
                 "description": 'My one observation',
-                "version": version,
                 "schema": minimal_json_schema(),
                 "tags": ["TMSS", "TESTING"]}
     
@@ -408,10 +388,7 @@ class TMSSRESTTestDataCreator():
                 "producer": producer_url,
                 "consumer": consumer_url}
     
-    def SubtaskTemplate(self, name="subtask_template_1", schema=None, subtask_type_url: str=None, version:str=None) -> dict:
-        if version is None:
-            version = str(uuid.uuid4())
-
+    def SubtaskTemplate(self, name="subtask_template_1", schema=None, subtask_type_url: str=None) -> dict:
         if schema is None:
             schema = minimal_json_schema()
 
@@ -421,7 +398,6 @@ class TMSSRESTTestDataCreator():
         return {"type": subtask_type_url,
                        "name": name,
                        "description": 'My one observation',
-                       "version": version,
                        "schema": schema,
                        "realtime": True,
                        "queue": False,
@@ -453,23 +429,15 @@ class TMSSRESTTestDataCreator():
                 "placement": self.django_api_url + '/scheduling_relation_placement/%s'%placement,
                 "time_offset":60}
 
-    def DataproductSpecificationsTemplate(self, name="my_DataproductSpecificationsTemplate", version:str=None) -> dict:
-        if version is None:
-            version = str(uuid.uuid4())
-
+    def DataproductSpecificationsTemplate(self, name="my_DataproductSpecificationsTemplate") -> dict:
         return  {"name": name,
                  "description": 'My one date',
-                 "version": version,
                  "schema": minimal_json_schema(),
                  "tags": ["TMSS", "TESTING"]}
     
-    def DataproductFeedbackTemplate(self, name="my_DataproductFeedbackTemplate", version:str=None) -> dict:
-        if version is None:
-            version = str(uuid.uuid4())
-
+    def DataproductFeedbackTemplate(self, name="my_DataproductFeedbackTemplate") -> dict:
         return  {"name": name,
                  "description": 'My one date',
-                 "version": version,
                  "schema": minimal_json_schema(),
                  "tags": ["TMSS", "TESTING"]}