diff --git a/SAS/TMSS/client/lib/populate.py b/SAS/TMSS/client/lib/populate.py
index 098b957a6697322d8e8ca87032ecb2ecf97b2038..be4eb888dd0830e456ca028afe53e884e05d6800 100644
--- a/SAS/TMSS/client/lib/populate.py
+++ b/SAS/TMSS/client/lib/populate.py
@@ -152,7 +152,7 @@ def populate_schemas(schema_dir: str=None, dbcreds_name: str=None, parallel: boo
             try:
                 template_type_name = template.pop('template_type_name')
                 try:
-                    known_template = client._get_template(template_type_name=template_type_name, name=template['name'], version=template['version'])
+                    known_template = client._get_schema_template(template_type_name=template_type_name, name=template['name'], version=template['version'])
                     if known_template['schema'] == template['schema']:
                         logger.info("Skipping template with name='%s' version='%s' because it is already known and the contents did not change: url='%s'",
                                     template['name'], template['version'], known_template['url'])
@@ -198,7 +198,7 @@ def populate_schemas(schema_dir: str=None, dbcreds_name: str=None, parallel: boo
 
                 strategy_template_type = template.pop('template_type_name')
                 try:
-                    known_template = client._get_template(template_type_name=strategy_template_type, name=template['name'], version=template['version'])
+                    known_template = client._get_schema_template(template_type_name=strategy_template_type, name=template['name'], version=template['version'])
                     if known_template['template'] == template['template']:
                         logger.info("Skipping strategy template with name='%s' version='%s' because it is already known and the contents did not change: url='%s'", template['name'], template['version'], known_template['url'])
                     else:
diff --git a/SAS/TMSS/client/lib/tmss_http_rest_client.py b/SAS/TMSS/client/lib/tmss_http_rest_client.py
index a2e9a81f531710a724a629c5da3750b8d2e57365..540376489a6b2d7c6d349f186933c2d79a7767d9 100644
--- a/SAS/TMSS/client/lib/tmss_http_rest_client.py
+++ b/SAS/TMSS/client/lib/tmss_http_rest_client.py
@@ -343,8 +343,8 @@ class TMSSsession(object):
                                                        response.elapsed.total_seconds()*1000, ' SLOW!' if response.elapsed > timedelta(seconds=1) else '',
                                                        response.request.url))
 
-    def _get_template(self, template_type_name: str, name: str, version: int=None) -> dict:
-        '''get the template of the given type as dict for the given name (and version)'''
+    def _get_schema_template(self, template_type_name: str, name: str, version: int=None) -> dict:
+        '''get the schema template of the given type as dict for the given name (and version)'''
         clauses = {}
         if name is not None:
             clauses["name"] = name
@@ -372,19 +372,19 @@ class TMSSsession(object):
 
     def get_schedulingunit_template(self, name: str, version: int=None) -> dict:
         '''get the schedulingunit_template as dict for the given name (and version)'''
-        return self._get_template('scheduling_unit_template', name, version)
+        return self._get_schema_template('scheduling_unit_template', name, version)
 
     def get_task_template(self, name: str, version: int=None) -> dict:
         '''get the task_template as dict for the given name (and version)'''
-        return self._get_template('task_template', name, version)
+        return self._get_schema_template('task_template', name, version)
 
     def get_subtask_template(self, name: str, version: int=None) -> dict:
         '''get the subtask_template as dict for the given name (and version)'''
-        return self._get_template('subtask_template', name, version)
+        return self._get_schema_template('subtask_template', name, version)
 
     def get_scheduling_constraints_template(self, name: str='constraints', version: int=None) -> dict:
         '''get the scheduling_constraints_template as dict for the given name (and version)'''
-        return self._get_template('scheduling_constraints_template', name, version)
+        return self._get_schema_template('scheduling_constraints_template', name, version)
 
     def get_schedulingunit_template_default_specification(self, name: str, version: int=None) -> dict:
         template = self.get_schedulingunit_template(name=name, version=version)
@@ -400,7 +400,7 @@ class TMSSsession(object):
 
     def get_dataproduct_specifications_template(self, name: str, version: int=None) -> dict:
         '''get the subtask_template as dict for the given name (and version)'''
-        return self._get_template('dataproduct_specifications_template', name, version)
+        return self._get_schema_template('dataproduct_specifications_template', name, version)
 
     def get_dataproduct_specifications_template_default_specification(self, name: str, version: int=None) -> dict:
         '''get the subtask_template as dict for the given name (and version)'''
@@ -702,7 +702,31 @@ class TMSSsession(object):
 
     def get_scheduling_unit_observing_strategy_template(self, name: str, version: int=None) -> dict:
         '''get the scheduling_unit_observing_strategy_template as dict for the given name (and version)'''
-        return self._get_template('scheduling_unit_observing_strategy_template', name, version)
+        clauses = {}
+        if name is not None:
+            clauses["name"] = name
+        if version is not None:
+            clauses["version"] = version
+        else:
+            # try to determine the latest version
+            if name is not None:
+                try:
+                    templates = self.get_path_as_json_object('/scheduling_unit_observing_strategy_template', params={'name':name})
+                    if templates:
+                        templates = sorted(templates, key=lambda t: t['version'])
+                        clauses["version"] = templates[-1]['version']
+                except Exception as e:
+                    # could not determine latest version
+                    pass
+
+        result = self.get_path_as_json_object('/scheduling_unit_observing_strategy_template', clauses)
+        if isinstance(result, list):
+            if len(result) > 1:
+                raise ValueError("Found more then one scheduling_unit_observing_strategy_template for clauses: %s" % (clauses,))
+            elif len(result) == 1:
+                return result[0]
+            raise ValueError("Could not find any template of type='scheduling_unit_observing_strategy_template' and clauses='%s'" % (clauses,))
+        return result
 
     def get_scheduling_unit_observing_strategy_template_default_specification(self, name: str, version: int=None) -> dict:
         '''get the scheduling_unit_observing_strategy_template as dict for the given name (and version) with completely filled in with all defaults'''