diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineUser.java b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineUser.java
index 41c0e10..849439a 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineUser.java
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineUser.java
@@ -75,27 +75,5 @@
         setEntityName(v);
 
     }
-    
-    /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$HretrieveAttachedObjects(java.sql.Connection, , Boolean lazy)
-     */
-    @Override
-	public void retrieveAttachedObjects(Connection con, Boolean lazy) throws TorqueException
-    {
-        Set<TurbineUserGroupRole> userGroupRoleSet = new HashSet<TurbineUserGroupRole>();
-
-        List<${package}.om.TurbineUserGroupRole> ugrs = getTurbineUserGroupRoles();
-
-        for (${package}.om.TurbineUserGroupRole ttugr : ugrs)
-        {
-            TurbineUserGroupRole ugr = new TurbineUserGroupRole();
-            ugr.setUser(this);
-            ugr.setRole(ttugr.getTurbineRole());
-            ugr.setGroup(ttugr.getTurbineGroup(con));
-            userGroupRoleSet.add(ugr);
-        }
-
-        setUserGroupRoleSet(userGroupRoleSet);
-    }
 
 }
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineUserGroupRole.java b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineUserGroupRole.java
new file mode 100644
index 0000000..1e41b24
--- /dev/null
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineUserGroupRole.java
@@ -0,0 +1,23 @@
+package ${package}.om;
+
+
+/**
+ * The skeleton for this class was autogenerated by Torque on:
+ *
+ * [Fri Jan 12 15:33:37 CET 2018]
+ *
+ * You should add additional methods to this class to meet the
+ * application requirements.  This class will only be generated as
+ * long as it does not already exist in the output directory.
+ */
+
+public  class TurbineUserGroupRole
+    extends ${package}.om.BaseTurbineUserGroupRole
+    implements org.apache.fulcrum.security.torque.peer.TurbineUserGroupRoleModelPeerMapper
+{
+    /** Serial version */
+    private static final long serialVersionUID = 1515767617070L;
+
+
+
+}
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineUserGroupRolePeerImpl.java b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineUserGroupRolePeerImpl.java
new file mode 100644
index 0000000..036bf71
--- /dev/null
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineUserGroupRolePeerImpl.java
@@ -0,0 +1,23 @@
+package ${package}.om;
+
+import org.apache.fulcrum.security.torque.peer.TorqueTurbineUserGroupRolePeer;
+
+/**
+ * The skeleton for this class was autogenerated by Torque on:
+ *
+ * [Mon Nov 27 14:37:43 CET 2017]
+ *
+ * You should add additional methods to this class to meet the
+ * application requirements.  This class will only be generated as
+ * long as it does not already exist in the output directory.
+ */
+
+public class TurbineUserGroupRolePeerImpl
+    extends ${package}.om.BaseTurbineUserGroupRolePeerImpl
+    implements TorqueTurbineUserGroupRolePeer
+{
+    /** Serial version */
+    private static final long serialVersionUID = 1511789863339L;
+
+
+}
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/torque-schema/torque-security-schema.xml b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/torque-schema/torque-security-schema.xml
index 8b51af0..a4901fe 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/torque-schema/torque-security-schema.xml
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/torque-schema/torque-security-schema.xml
@@ -104,7 +104,7 @@
 
   </table>
 
-  <table name="TURBINE_USER_GROUP_ROLE">
+  <table name="TURBINE_USER_GROUP_ROLE" interface="org.apache.fulcrum.security.torque.peer.TurbineUserGroupRoleModelPeerMapper">
     <column name="USER_ID" required="true" primaryKey="true" type="INTEGER"/>
     <column name="GROUP_ID" required="true" primaryKey="true" type="INTEGER"/>
     <column name="ROLE_ID" required="true" primaryKey="true" type="INTEGER"/>
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/conf/componentConfiguration.xml b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/conf/componentConfiguration.xml
index bed2c7d..1abb6d8 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/conf/componentConfiguration.xml
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/conf/componentConfiguration.xml
@@ -130,8 +130,12 @@
      -->
      
      <userManager>
-     <className>${package}.om.TurbineUser</className>
+        <className>${package}.om.TurbineUser</className>
         <peerClassName>${package}.om.TurbineUserPeerImpl</peerClassName>
+        <userGroupRoleManager>
+	        <!-- className>org.apache.fulcrum.security.torque.om.TurbineUserGroupRole</className-->
+	        <peerClassName>${package}.om.TurbineUserGroupRolePeerImpl</peerClassName>
+	    </userGroupRoleManager>
     </userManager>
     <groupManager>
         <className>${package}.om.TurbineGroup</className>
