diff --git a/aria/modeling/service_template.py b/aria/modeling/service_template.py
index 1eb95a3..12195a1 100644
--- a/aria/modeling/service_template.py
+++ b/aria/modeling/service_template.py
@@ -211,10 +211,6 @@
         return relationship.one_to_many(cls, 'service', dict_key='name')
 
     @declared_attr
-    def operation_templates(cls):
-        return relationship.one_to_many(cls, 'operation_template')
-
-    @declared_attr
     def node_templates(cls):
         return relationship.one_to_many(cls, 'node_template', dict_key='name')
 
@@ -483,6 +479,22 @@
     def nodes(cls):
         return relationship.one_to_many(cls, 'node')
 
+    @declared_attr
+    def interface_templates(cls):
+        return relationship.one_to_many(cls, 'interface_template', dict_key='name')
+
+    @declared_attr
+    def artifact_templates(cls):
+        return relationship.one_to_many(cls, 'artifact_template', dict_key='name')
+
+    @declared_attr
+    def capability_templates(cls):
+        return relationship.one_to_many(cls, 'capability_template', dict_key='name')
+
+    @declared_attr
+    def requirement_templates(cls):
+        return relationship.one_to_many(cls, 'requirement_template', child_fk='node_template_fk')
+
     # endregion
 
     # region many_to_one relationships
@@ -507,22 +519,6 @@
     def attributes(cls):
         return relationship.many_to_many(cls, 'parameter', prefix='attributes', dict_key='name')
 
-    @declared_attr
-    def interface_templates(cls):
-        return relationship.one_to_many(cls, 'interface_template', dict_key='name')
-
-    @declared_attr
-    def artifact_templates(cls):
-        return relationship.one_to_many(cls, 'artifact_template', dict_key='name')
-
-    @declared_attr
-    def capability_templates(cls):
-        return relationship.one_to_many(cls, 'capability_template', dict_key='name')
-
-    @declared_attr
-    def requirement_templates(cls):
-        return relationship.one_to_many(cls, 'requirement_template', child_fk='node_template_fk')
-
     # endregion
 
     description = Column(Text)
@@ -1209,11 +1205,6 @@
     def relationships(cls):
         return relationship.one_to_many(cls, 'relationship')
 
-    @declared_attr
-    def target_node_type(cls):
-        return relationship.many_to_one(
-            cls, 'type', fk='target_node_type_fk', back_populates=relationship.NO_BACK_POP)
-
     # endregion
 
     # region many_to_one relationships
@@ -1222,6 +1213,11 @@
     def node_template(cls):
         return relationship.many_to_one(cls, 'node_template', fk='node_template_fk')
 
+    @declared_attr
+    def target_node_type(cls):
+        return relationship.many_to_one(
+            cls, 'type', fk='target_node_type_fk', back_populates=relationship.NO_BACK_POP)
+
     # endregion
 
     # region many_to_many relationships
@@ -1845,7 +1841,8 @@
 
     @declared_attr
     def service_template(cls):
-        return relationship.many_to_one(cls, 'service_template')
+        return relationship.many_to_one(cls, 'service_template',
+                                        back_populates='workflow_templates')
 
     @declared_attr
     def interface_template(cls):
