http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/AttributableSearchTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/AttributableSearchTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/AttributableSearchTest.java
index 052143f..dc338b6 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/AttributableSearchTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/AttributableSearchTest.java
@@ -29,9 +29,9 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import org.apache.syncope.common.lib.types.SubjectType;
-import org.apache.syncope.core.persistence.api.RoleEntitlementUtil;
+import org.apache.syncope.core.persistence.api.GroupEntitlementUtil;
 import org.apache.syncope.core.persistence.api.dao.EntitlementDAO;
-import org.apache.syncope.core.persistence.api.dao.RoleDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.SubjectSearchDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.dao.search.AttributeCond;
@@ -40,7 +40,7 @@ import 
org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.api.dao.search.ResourceCond;
 import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.dao.search.SubjectCond;
-import org.apache.syncope.core.persistence.api.entity.role.Role;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.junit.Test;
@@ -54,7 +54,7 @@ public class AttributableSearchTest extends AbstractTest {
     private UserDAO userDAO;
 
     @Autowired
-    private RoleDAO roleDAO;
+    private GroupDAO groupDAO;
 
     @Autowired
     private SubjectSearchDAO searchDAO;
@@ -68,25 +68,25 @@ public class AttributableSearchTest extends AbstractTest {
         assertNotNull(user);
 
         MembershipCond membershipCond = new MembershipCond();
-        membershipCond.setRoleId(5L);
+        membershipCond.setGroupId(5L);
 
         assertFalse(searchDAO.matches(user, 
SearchCond.getLeafCond(membershipCond), SubjectType.USER));
 
-        membershipCond.setRoleId(1L);
+        membershipCond.setGroupId(1L);
 
         assertTrue(searchDAO.matches(user, 
SearchCond.getLeafCond(membershipCond), SubjectType.USER));
     }
 
     @Test
-    public void roleMatch() {
-        Role role = roleDAO.find(1L);
-        assertNotNull(role);
+    public void groupMatch() {
+        Group group = groupDAO.find(1L);
+        assertNotNull(group);
 
         AttributeCond attrCond = new AttributeCond();
         attrCond.setSchema("show");
         attrCond.setType(AttributeCond.Type.ISNOTNULL);
 
-        assertTrue(searchDAO.matches(role, SearchCond.getLeafCond(attrCond), 
SubjectType.ROLE));
+        assertTrue(searchDAO.matches(group, SearchCond.getLeafCond(attrCond), 
SubjectType.GROUP));
     }
 
     @Test
@@ -96,7 +96,7 @@ public class AttributableSearchTest extends AbstractTest {
         fullnameLeafCond.setExpression("%o%");
 
         MembershipCond membershipCond = new MembershipCond();
-        membershipCond.setRoleId(1L);
+        membershipCond.setGroupId(1L);
 
         AttributeCond loginDateCond = new AttributeCond(AttributeCond.Type.EQ);
         loginDateCond.setSchema("loginDate");
@@ -112,7 +112,7 @@ public class AttributableSearchTest extends AbstractTest {
         assertTrue(cond.isValid());
 
         List<User> users =
-                
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()), 
cond, SubjectType.USER);
+                
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()), 
cond, SubjectType.USER);
         assertNotNull(users);
         assertEquals(1, users.size());
     }
@@ -127,7 +127,7 @@ public class AttributableSearchTest extends AbstractTest {
         assertTrue(cond.isValid());
 
         List<User> users =
-                
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()), 
cond, SubjectType.USER);
+                
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()), 
cond, SubjectType.USER);
         assertNotNull(users);
         assertEquals(4, users.size());
 
@@ -149,7 +149,7 @@ public class AttributableSearchTest extends AbstractTest {
         assertTrue(cond.isValid());
 
         List<User> users =
-                
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()), 
cond, SubjectType.USER);
+                
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()), 
cond, SubjectType.USER);
         assertNotNull(users);
         assertEquals(1, users.size());
 
@@ -163,7 +163,7 @@ public class AttributableSearchTest extends AbstractTest {
         fullnameLeafCond.setExpression("%o%");
 
         MembershipCond membershipCond = new MembershipCond();
-        membershipCond.setRoleId(1L);
+        membershipCond.setGroupId(1L);
 
         AttributeCond loginDateCond = new AttributeCond(AttributeCond.Type.EQ);
         loginDateCond.setSchema("loginDate");
@@ -178,13 +178,13 @@ public class AttributableSearchTest extends AbstractTest {
 
         assertTrue(cond.isValid());
 
-        List<User> users = 
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()),
+        List<User> users = 
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()),
                 cond, 1, 2, Collections.<OrderByClause>emptyList(),
                 SubjectType.USER);
         assertNotNull(users);
         assertEquals(1, users.size());
 
-        users = 
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()),
+        users = 
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()),
                 cond, 2, 2, Collections.<OrderByClause>emptyList(),
                 SubjectType.USER);
         assertNotNull(users);
@@ -194,19 +194,17 @@ public class AttributableSearchTest extends AbstractTest {
     @Test
     public void searchByMembership() {
         MembershipCond membershipCond = new MembershipCond();
-        membershipCond.setRoleId(1L);
+        membershipCond.setGroupId(1L);
 
-        List<User> users = searchDAO.search(
-                RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()), 
SearchCond.getLeafCond(membershipCond),
+        List<User> users = 
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()), 
SearchCond.getLeafCond(membershipCond),
                 SubjectType.USER);
         assertNotNull(users);
         assertEquals(2, users.size());
 
         membershipCond = new MembershipCond();
-        membershipCond.setRoleId(5L);
+        membershipCond.setGroupId(5L);
 
-        users = searchDAO.search(
-                RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()), 
SearchCond.getNotLeafCond(membershipCond),
+        users = 
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()), 
SearchCond.getNotLeafCond(membershipCond),
                 SubjectType.USER);
         assertNotNull(users);
         assertEquals(5, users.size());
@@ -217,8 +215,7 @@ public class AttributableSearchTest extends AbstractTest {
         AttributeCond coolLeafCond = new 
AttributeCond(AttributeCond.Type.ISNULL);
         coolLeafCond.setSchema("cool");
 
-        List<User> users = searchDAO.search(
-                RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()), 
SearchCond.getLeafCond(coolLeafCond),
+        List<User> users = 
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()), 
SearchCond.getLeafCond(coolLeafCond),
                 SubjectType.USER);
         assertNotNull(users);
         assertEquals(4, users.size());
@@ -226,8 +223,7 @@ public class AttributableSearchTest extends AbstractTest {
         coolLeafCond = new AttributeCond(AttributeCond.Type.ISNOTNULL);
         coolLeafCond.setSchema("cool");
 
-        users = searchDAO.search(
-                RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()), 
SearchCond.getLeafCond(coolLeafCond),
+        users = 
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()), 
SearchCond.getLeafCond(coolLeafCond),
                 SubjectType.USER);
         assertNotNull(users);
         assertEquals(1, users.size());
@@ -245,8 +241,7 @@ public class AttributableSearchTest extends AbstractTest {
 
         assertTrue(searchCondition.isValid());
 
-        List<User> users = searchDAO.search(
-                RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()), 
searchCondition,
+        List<User> users = 
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()), 
searchCondition,
                 SubjectType.USER);
 
         assertNotNull(users);
@@ -261,10 +256,10 @@ public class AttributableSearchTest extends AbstractTest {
 
         SearchCond searchCondition = SearchCond.getLeafCond(booleanCond);
 
-        List<Role> matchingRoles = 
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()),
-                searchCondition, SubjectType.ROLE);
-        assertNotNull(matchingRoles);
-        assertFalse(matchingRoles.isEmpty());
+        List<Group> matchingGroups = 
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()),
+                searchCondition, SubjectType.GROUP);
+        assertNotNull(matchingGroups);
+        assertFalse(matchingGroups.isEmpty());
     }
 
     @Test
@@ -280,7 +275,7 @@ public class AttributableSearchTest extends AbstractTest {
         SearchCond searchCondition = 
SearchCond.getAndCond(SearchCond.getLeafCond(usernameLeafCond),
                 SearchCond.getLeafCond(idRightCond));
 
-        List<User> matchingUsers = 
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()),
+        List<User> matchingUsers = 
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()),
                 searchCondition, SubjectType.USER);
 
         assertNotNull(matchingUsers);
@@ -290,27 +285,27 @@ public class AttributableSearchTest extends AbstractTest {
     }
 
     @Test
-    public void searchByRolenameAndKey() {
-        SubjectCond rolenameLeafCond = new SubjectCond(SubjectCond.Type.EQ);
-        rolenameLeafCond.setSchema("name");
-        rolenameLeafCond.setExpression("root");
+    public void searchByGroupNameAndKey() {
+        SubjectCond groupNameLeafCond = new SubjectCond(SubjectCond.Type.EQ);
+        groupNameLeafCond.setSchema("name");
+        groupNameLeafCond.setExpression("root");
 
         SubjectCond idRightCond = new SubjectCond(SubjectCond.Type.LT);
         idRightCond.setSchema("key");
         idRightCond.setExpression("2");
 
-        SearchCond searchCondition = 
SearchCond.getAndCond(SearchCond.getLeafCond(rolenameLeafCond),
+        SearchCond searchCondition = 
SearchCond.getAndCond(SearchCond.getLeafCond(groupNameLeafCond),
                 SearchCond.getLeafCond(idRightCond));
 
         assertTrue(searchCondition.isValid());
 
-        List<Role> matchingRoles = 
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()),
-                searchCondition, SubjectType.ROLE);
+        List<Group> matchingGroups = 
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()),
+                searchCondition, SubjectType.GROUP);
 
-        assertNotNull(matchingRoles);
-        assertEquals(1, matchingRoles.size());
-        assertEquals("root", matchingRoles.iterator().next().getName());
-        assertEquals(1L, matchingRoles.iterator().next().getKey().longValue());
+        assertNotNull(matchingGroups);
+        assertEquals(1, matchingGroups.size());
+        assertEquals("root", matchingGroups.iterator().next().getName());
+        assertEquals(1L, 
matchingGroups.iterator().next().getKey().longValue());
     }
 
     @Test
@@ -327,7 +322,7 @@ public class AttributableSearchTest extends AbstractTest {
                 SearchCond.getLeafCond(idRightCond));
 
         List<User> matchingUsers =
-                
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()), 
searchCondition,
+                
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()), 
searchCondition,
                         SubjectType.USER);
 
         assertNotNull(matchingUsers);
@@ -344,7 +339,7 @@ public class AttributableSearchTest extends AbstractTest {
         assertTrue(searchCondition.isValid());
 
         List<User> users =
-                
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()), 
searchCondition,
+                
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()), 
searchCondition,
                         SubjectType.USER);
 
         assertNotNull(users);
@@ -358,7 +353,7 @@ public class AttributableSearchTest extends AbstractTest {
         searchCondition = SearchCond.getNotLeafCond(idLeafCond);
         assertTrue(searchCondition.isValid());
 
-        users = 
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()), 
searchCondition,
+        users = 
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()), 
searchCondition,
                 SubjectType.USER);
 
         assertNotNull(users);
@@ -393,16 +388,16 @@ public class AttributableSearchTest extends AbstractTest {
         orderByClause.setDirection(OrderByClause.Direction.ASC);
         orderByClauses.add(orderByClause);
 
-        List<User> users = 
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()),
+        List<User> users = 
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()),
                 searchCondition, Collections.singletonList(orderByClause),
                 SubjectType.USER);
-        
assertEquals(searchDAO.count(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()),
+        
assertEquals(searchDAO.count(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()),
                 searchCondition, SubjectType.USER),
                 users.size());
     }
 
     @Test
-    public void roleOrderBy() {
+    public void groupOrderBy() {
         SubjectCond idLeafCond = new SubjectCond(SubjectCond.Type.LIKE);
         idLeafCond.setSchema("name");
         idLeafCond.setExpression("%r");
@@ -412,11 +407,11 @@ public class AttributableSearchTest extends AbstractTest {
         OrderByClause orderByClause = new OrderByClause();
         orderByClause.setField("name");
 
-        List<Role> roles = 
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()),
-                searchCondition, Collections.singletonList(orderByClause), 
SubjectType.ROLE);
-        
assertEquals(searchDAO.count(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()),
-                searchCondition, SubjectType.ROLE),
-                roles.size());
+        List<Group> groups = 
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()),
+                searchCondition, Collections.singletonList(orderByClause), 
SubjectType.GROUP);
+        
assertEquals(searchDAO.count(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()),
+                searchCondition, SubjectType.GROUP),
+                groups.size());
     }
 
     @Test
@@ -431,7 +426,7 @@ public class AttributableSearchTest extends AbstractTest {
                 SearchCond.getAndCond(SearchCond.getNotLeafCond(ws2), 
SearchCond.getNotLeafCond(ws1));
         assertTrue(searchCondition.isValid());
 
-        List<User> users = 
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()),
+        List<User> users = 
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()),
                 searchCondition, SubjectType.USER);
         assertNotNull(users);
         assertEquals(2, users.size());
@@ -453,7 +448,7 @@ public class AttributableSearchTest extends AbstractTest {
         SearchCond searchCondition = SearchCond.getLeafCond(cond);
         assertTrue(searchCondition.isValid());
 
-        List<User> users = 
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()),
+        List<User> users = 
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()),
                 searchCondition, SubjectType.USER);
         assertNotNull(users);
         assertTrue(users.isEmpty());
@@ -468,7 +463,7 @@ public class AttributableSearchTest extends AbstractTest {
         SearchCond searchCondition = SearchCond.getLeafCond(cond);
         assertTrue(searchCondition.isValid());
 
-        List<User> users = 
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()),
+        List<User> users = 
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()),
                 searchCondition, SubjectType.USER);
         assertNotNull(users);
         assertEquals(1, users.size());
@@ -486,7 +481,7 @@ public class AttributableSearchTest extends AbstractTest {
         SearchCond searchCond = SearchCond.getOrCond(
                 SearchCond.getLeafCond(isNullCond), 
SearchCond.getLeafCond(likeCond));
 
-        Integer count = 
searchDAO.count(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()), 
searchCond,
+        Integer count = 
searchDAO.count(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()), 
searchCond,
                 SubjectType.USER);
         assertNotNull(count);
         assertTrue(count > 0);

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/DerAttrTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/DerAttrTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/DerAttrTest.java
index b1c6c91..67765b1 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/DerAttrTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/DerAttrTest.java
@@ -28,18 +28,18 @@ import java.util.List;
 import org.apache.syncope.core.persistence.api.dao.DerAttrDAO;
 import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.MembershipDAO;
-import org.apache.syncope.core.persistence.api.dao.RoleDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.membership.MDerAttr;
 import 
org.apache.syncope.core.persistence.api.entity.membership.MDerAttrTemplate;
 import org.apache.syncope.core.persistence.api.entity.membership.MDerSchema;
 import 
org.apache.syncope.core.persistence.api.entity.membership.MPlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.membership.Membership;
-import org.apache.syncope.core.persistence.api.entity.role.RDerAttr;
-import org.apache.syncope.core.persistence.api.entity.role.RDerAttrTemplate;
-import org.apache.syncope.core.persistence.api.entity.role.RDerSchema;
-import org.apache.syncope.core.persistence.api.entity.role.RPlainAttrValue;
-import org.apache.syncope.core.persistence.api.entity.role.Role;
+import org.apache.syncope.core.persistence.api.entity.group.GDerAttr;
+import org.apache.syncope.core.persistence.api.entity.group.GDerAttrTemplate;
+import org.apache.syncope.core.persistence.api.entity.group.GDerSchema;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttrValue;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.user.UDerAttr;
 import org.apache.syncope.core.persistence.api.entity.user.UDerSchema;
 import org.apache.syncope.core.persistence.api.entity.user.UPlainAttrValue;
@@ -62,7 +62,7 @@ public class DerAttrTest extends AbstractTest {
     private MembershipDAO membershipDAO;
 
     @Autowired
-    private RoleDAO roleDAO;
+    private GroupDAO groupDAO;
 
     @Autowired
     private DerSchemaDAO derSchemaDAO;
@@ -110,7 +110,7 @@ public class DerAttrTest extends AbstractTest {
 
         MDerAttr derAttr = entityFactory.newEntity(MDerAttr.class);
         derAttr.setOwner(owner);
-        
derAttr.setTemplate(owner.getRole().getAttrTemplate(MDerAttrTemplate.class, 
"mderiveddata"));
+        
derAttr.setTemplate(owner.getGroup().getAttrTemplate(MDerAttrTemplate.class, 
"mderiveddata"));
 
         derAttr = derAttrDAO.save(derAttr);
         assertNotNull(derAttr.getTemplate());
@@ -127,22 +127,22 @@ public class DerAttrTest extends AbstractTest {
 
     @Test
     public void saveRDerAttribute() {
-        Role owner = roleDAO.find(1L);
+        Group owner = groupDAO.find(1L);
         assertNotNull("did not get expected user", owner);
 
-        RDerAttr derAttr = entityFactory.newEntity(RDerAttr.class);
+        GDerAttr derAttr = entityFactory.newEntity(GDerAttr.class);
         derAttr.setOwner(owner);
-        derAttr.setTemplate(owner.getAttrTemplate(RDerAttrTemplate.class, 
"rderiveddata"));
+        derAttr.setTemplate(owner.getAttrTemplate(GDerAttrTemplate.class, 
"rderiveddata"));
 
         derAttr = derAttrDAO.save(derAttr);
         assertNotNull(derAttr.getTemplate());
 
-        RDerAttr actual = derAttrDAO.find(derAttr.getKey(), RDerAttr.class);
+        GDerAttr actual = derAttrDAO.find(derAttr.getKey(), GDerAttr.class);
         assertNotNull("expected save to work", actual);
         assertEquals(derAttr, actual);
 
-        RPlainAttrValue sx = 
owner.getPlainAttr("rderived_sx").getValues().iterator().next();
-        RPlainAttrValue dx = 
owner.getPlainAttr("rderived_dx").getValues().iterator().next();
+        GPlainAttrValue sx = 
owner.getPlainAttr("rderived_sx").getValues().iterator().next();
+        GPlainAttrValue dx = 
owner.getPlainAttr("rderived_dx").getValues().iterator().next();
 
         assertEquals(sx.getValue() + "-" + dx.getValue(), 
derAttr.getValue(owner.getPlainAttrs()));
     }
@@ -195,34 +195,34 @@ public class DerAttrTest extends AbstractTest {
     }
 
     @Test
-    public void issueSYNCOPE134Role() {
-        RDerSchema sderived = entityFactory.newEntity(RDerSchema.class);
+    public void issueSYNCOPE134Group() {
+        GDerSchema sderived = entityFactory.newEntity(GDerSchema.class);
         sderived.setKey("sderived");
         sderived.setExpression("name");
 
         sderived = derSchemaDAO.save(sderived);
         derSchemaDAO.flush();
 
-        RDerSchema actual = derSchemaDAO.find("sderived", RDerSchema.class);
+        GDerSchema actual = derSchemaDAO.find("sderived", GDerSchema.class);
         assertNotNull("expected save to work", actual);
         assertEquals(sderived, actual);
 
-        Role owner = roleDAO.find(7L);
-        assertNotNull("did not get expected role", owner);
+        Group owner = groupDAO.find(7L);
+        assertNotNull("did not get expected group", owner);
 
-        RDerAttrTemplate template = 
entityFactory.newEntity(RDerAttrTemplate.class);
+        GDerAttrTemplate template = 
entityFactory.newEntity(GDerAttrTemplate.class);
         template.setSchema(sderived);
-        owner.getAttrTemplates(RDerAttrTemplate.class).add(template);
+        owner.getAttrTemplates(GDerAttrTemplate.class).add(template);
 
-        RDerAttr derAttr = entityFactory.newEntity(RDerAttr.class);
+        GDerAttr derAttr = entityFactory.newEntity(GDerAttr.class);
         derAttr.setOwner(owner);
-        derAttr.setTemplate(owner.getAttrTemplate(RDerAttrTemplate.class, 
sderived.getKey()));
+        derAttr.setTemplate(owner.getAttrTemplate(GDerAttrTemplate.class, 
sderived.getKey()));
 
         derAttr = derAttrDAO.save(derAttr);
         assertNotNull(derAttr.getTemplate());
         derAttrDAO.flush();
 
-        derAttr = derAttrDAO.find(derAttr.getKey(), RDerAttr.class);
+        derAttr = derAttrDAO.find(derAttr.getKey(), GDerAttr.class);
         assertNotNull("expected save to work", derAttr);
 
         String value = derAttr.getValue(owner.getPlainAttrs());
@@ -249,13 +249,13 @@ public class DerAttrTest extends AbstractTest {
 
         MDerAttrTemplate template = 
entityFactory.newEntity(MDerAttrTemplate.class);
         template.setSchema(mderived);
-        owner.getRole().getAttrTemplates(MDerAttrTemplate.class).add(template);
+        
owner.getGroup().getAttrTemplates(MDerAttrTemplate.class).add(template);
 
         derSchemaDAO.flush();
 
         MDerAttr derAttr = entityFactory.newEntity(MDerAttr.class);
         derAttr.setOwner(owner);
-        
derAttr.setTemplate(owner.getRole().getAttrTemplate(MDerAttrTemplate.class, 
mderived.getKey()));
+        
derAttr.setTemplate(owner.getGroup().getAttrTemplate(MDerAttrTemplate.class, 
mderived.getKey()));
 
         derAttr = derAttrDAO.save(derAttr);
         assertNotNull(derAttr.getTemplate());

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/DerSchemaTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/DerSchemaTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/DerSchemaTest.java
index 5a65f13..e7f7533 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/DerSchemaTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/DerSchemaTest.java
@@ -30,7 +30,7 @@ import 
org.apache.syncope.common.lib.types.EntityViolationType;
 import 
org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
 import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
 import org.apache.syncope.core.persistence.api.entity.DerSchema;
-import org.apache.syncope.core.persistence.api.entity.role.RDerSchema;
+import org.apache.syncope.core.persistence.api.entity.group.GDerSchema;
 import org.apache.syncope.core.persistence.api.entity.user.UDerSchema;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.junit.Test;
@@ -79,12 +79,12 @@ public class DerSchemaTest extends AbstractTest {
         assertNull("delete did not work", actual);
 
         // ------------- //
-        RDerSchema rderiveddata = derSchemaDAO.find("rderiveddata", 
RDerSchema.class);
+        GDerSchema rderiveddata = derSchemaDAO.find("rderiveddata", 
GDerSchema.class);
         assertNotNull(rderiveddata);
 
-        derSchemaDAO.delete(rderiveddata.getKey(), 
attrUtilFactory.getInstance(AttributableType.ROLE));
+        derSchemaDAO.delete(rderiveddata.getKey(), 
attrUtilFactory.getInstance(AttributableType.GROUP));
 
-        actual = derSchemaDAO.find("rderiveddata", RDerSchema.class);
+        actual = derSchemaDAO.find("rderiveddata", GDerSchema.class);
         assertNull("delete did not work", actual);
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/GroupTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/GroupTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/GroupTest.java
new file mode 100644
index 0000000..2d14abe
--- /dev/null
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/GroupTest.java
@@ -0,0 +1,141 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.persistence.jpa.entity;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import java.util.List;
+import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
+import org.apache.syncope.core.persistence.api.entity.AccountPolicy;
+import org.apache.syncope.core.persistence.api.entity.PasswordPolicy;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
+import org.apache.syncope.core.persistence.jpa.AbstractTest;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class GroupTest extends AbstractTest {
+
+    @Autowired
+    private GroupDAO groupDAO;
+
+    @Autowired
+    private PolicyDAO policyDAO;
+
+    @Test
+    public void findAll() {
+        List<Group> list = groupDAO.findAll();
+        assertEquals("did not get expected number of groups ", 14, 
list.size());
+    }
+
+    @Test
+    public void findChildren() {
+        assertEquals(3, groupDAO.findChildren(groupDAO.find(4L)).size());
+    }
+
+    @Test
+    public void find() {
+        Group group = groupDAO.find("root", null);
+        assertNotNull("did not find expected group", group);
+        group = groupDAO.find(null, null);
+        assertNull("found group but did not expect it", group);
+    }
+
+    @Test
+    public void inheritedAttributes() {
+        Group director = groupDAO.find(7L);
+
+        assertEquals(1, director.findLastInheritedAncestorPlainAttrs().size());
+    }
+
+    @Test
+    public void inheritedDerivedAttributes() {
+        Group director = groupDAO.find(7L);
+
+        assertEquals(1, director.findLastInheritedAncestorDerAttrs().size());
+    }
+
+    @Test
+    public void inheritedVirtualAttributes() {
+        Group director = groupDAO.find(7L);
+
+        assertEquals(1, director.findLastInheritedAncestorVirAttrs().size());
+    }
+
+    @Test
+    public void inheritedPolicy() {
+        Group group = groupDAO.find(7L);
+        assertNotNull(group);
+
+        assertNotNull(group.getAccountPolicy());
+        assertNotNull(group.getPasswordPolicy());
+
+        assertEquals(4, group.getPasswordPolicy().getKey(), 0);
+
+        group = groupDAO.find(5L);
+
+        assertNotNull(group);
+
+        assertNull(group.getAccountPolicy());
+        assertNull(group.getPasswordPolicy());
+    }
+
+    @Test
+    public void save() {
+        Group group = entityFactory.newEntity(Group.class);
+        group.setName("secondChild");
+
+        // verify inheritance password and account policies
+        group.setInheritAccountPolicy(false);
+        // not inherited so setter execution shouldn't be ignored
+        group.setAccountPolicy((AccountPolicy) policyDAO.find(6L));
+
+        group.setInheritPasswordPolicy(true);
+        // inherited so setter execution should be ignored
+        group.setPasswordPolicy((PasswordPolicy) policyDAO.find(4L));
+
+        Group rootGroup = groupDAO.find("root", null);
+        group.setParent(rootGroup);
+
+        group = groupDAO.save(group);
+
+        Group actual = groupDAO.find(group.getKey());
+        assertNotNull("expected save to work", actual);
+
+        assertNull(group.getPasswordPolicy());
+        assertNotNull(group.getAccountPolicy());
+        assertEquals(Long.valueOf(6), group.getAccountPolicy().getKey());
+    }
+
+    @Test
+    public void delete() {
+        Group group = groupDAO.find(4L);
+        groupDAO.delete(group.getKey());
+
+        Group actual = groupDAO.find(4L);
+        assertNull("delete did not work", actual);
+
+        Group children = groupDAO.find(7L);
+        assertNull("delete of successors did not work", children);
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/MembershipTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/MembershipTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/MembershipTest.java
index c5693c8..a623b14 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/MembershipTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/MembershipTest.java
@@ -24,10 +24,10 @@ import static org.junit.Assert.assertNull;
 
 import java.util.List;
 import org.apache.syncope.core.persistence.api.dao.MembershipDAO;
-import org.apache.syncope.core.persistence.api.dao.RoleDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.membership.Membership;
-import org.apache.syncope.core.persistence.api.entity.role.Role;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.junit.Test;
@@ -44,7 +44,7 @@ public class MembershipTest extends AbstractTest {
     private UserDAO userDAO;
 
     @Autowired
-    private RoleDAO roleDAO;
+    private GroupDAO groupDAO;
 
     @Test
     public void findAll() {
@@ -61,11 +61,11 @@ public class MembershipTest extends AbstractTest {
     @Test
     public void save() {
         User user = userDAO.find(4L);
-        Role role = roleDAO.find(1L);
+        Group group = groupDAO.find(1L);
 
         Membership membership = entityFactory.newEntity(Membership.class);
         membership.setUser(user);
-        membership.setRole(role);
+        membership.setGroup(group);
 
         membership = membershipDAO.save(membership);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/NotificationTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/NotificationTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/NotificationTest.java
index 8da3c21..f162259 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/NotificationTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/NotificationTest.java
@@ -110,9 +110,9 @@ public class NotificationTest extends AbstractTest {
     @Test
     public void issueSYNCOPE446() {
         Notification notification = 
entityFactory.newEntity(Notification.class);
-        notification.addEvent("[REST]:[RoleController]:[]:[create]:[SUCCESS]");
+        notification.addEvent("[REST]:[GroupLogic]:[]:[create]:[SUCCESS]");
 
-        notification.setRoleAbout("fake search condition");
+        notification.setGroupAbout("fake search condition");
 
         notification.setRecipientAttrName("email");
         notification.setRecipientAttrType(IntMappingType.UserPlainSchema);

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/PlainSchemaTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/PlainSchemaTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/PlainSchemaTest.java
index ece0825..8fc29de 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/PlainSchemaTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/PlainSchemaTest.java
@@ -32,8 +32,8 @@ import org.apache.syncope.common.lib.types.AttributableType;
 import org.apache.syncope.common.lib.types.EntityViolationType;
 import 
org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
-import org.apache.syncope.core.persistence.api.entity.role.RPlainAttr;
-import org.apache.syncope.core.persistence.api.entity.role.RPlainSchema;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttr;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainSchema;
 import org.apache.syncope.core.persistence.api.entity.user.UPlainSchema;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.junit.Test;
@@ -51,8 +51,8 @@ public class PlainSchemaTest extends AbstractTest {
         List<UPlainSchema> userList = 
plainSchemaDAO.findAll(UPlainSchema.class);
         assertEquals(15, userList.size());
 
-        List<RPlainSchema> roleList = 
plainSchemaDAO.findAll(RPlainSchema.class);
-        assertEquals(5, roleList.size());
+        List<GPlainSchema> groupList = 
plainSchemaDAO.findAll(GPlainSchema.class);
+        assertEquals(5, groupList.size());
     }
 
     @Test
@@ -63,12 +63,12 @@ public class PlainSchemaTest extends AbstractTest {
 
     @Test
     public void findAttrs() {
-        List<RPlainSchema> schemas = 
plainSchemaDAO.findAll(RPlainSchema.class);
+        List<GPlainSchema> schemas = 
plainSchemaDAO.findAll(GPlainSchema.class);
         assertNotNull(schemas);
         assertFalse(schemas.isEmpty());
 
-        for (RPlainSchema schema : schemas) {
-            List<RPlainAttr> attrs = plainSchemaDAO.findAttrs(schema, 
RPlainAttr.class);
+        for (GPlainSchema schema : schemas) {
+            List<GPlainAttr> attrs = plainSchemaDAO.findAttrs(schema, 
GPlainAttr.class);
             assertNotNull(attrs);
             assertFalse(attrs.isEmpty());
         }
@@ -105,7 +105,7 @@ public class PlainSchemaTest extends AbstractTest {
 
     @Test
     public void checkForEnumType() {
-        RPlainSchema schema = entityFactory.newEntity(RPlainSchema.class);
+        GPlainSchema schema = entityFactory.newEntity(GPlainSchema.class);
         schema.setType(AttrSchemaType.Enum);
         schema.setKey("color");
 
@@ -122,7 +122,7 @@ public class PlainSchemaTest extends AbstractTest {
 
         plainSchemaDAO.save(schema);
 
-        RPlainSchema actual = plainSchemaDAO.find(schema.getKey(), 
RPlainSchema.class);
+        GPlainSchema actual = plainSchemaDAO.find(schema.getKey(), 
GPlainSchema.class);
         assertNotNull(actual);
         assertNotNull(actual.getEnumerationKeys());
         assertFalse(actual.getEnumerationKeys().isEmpty());

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/PolicyTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/PolicyTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/PolicyTest.java
index 304fde0..7c943bb 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/PolicyTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/PolicyTest.java
@@ -108,7 +108,7 @@ public class PolicyTest extends AbstractTest {
 
         SyncPolicySpec syncPolicySpec = new SyncPolicySpec();
         syncPolicySpec.setUserJavaRule(syncURuleName);
-        syncPolicySpec.setRoleJavaRule(syncRRuleName);
+        syncPolicySpec.setGroupJavaRule(syncRRuleName);
 
         policy.setSpecification(syncPolicySpec);
         policy.setDescription("Sync policy");
@@ -118,7 +118,7 @@ public class PolicyTest extends AbstractTest {
         assertNotNull(policy);
         assertEquals(PolicyType.SYNC, policy.getType());
         assertEquals(syncURuleName, 
(policy.getSpecification(SyncPolicySpec.class)).getUserJavaRule());
-        assertEquals(syncRRuleName, 
(policy.getSpecification(SyncPolicySpec.class)).getRoleJavaRule());
+        assertEquals(syncRRuleName, 
(policy.getSpecification(SyncPolicySpec.class)).getGroupJavaRule());
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/ResourceTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/ResourceTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/ResourceTest.java
index 103b9bb..a9340c3 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/ResourceTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/ResourceTest.java
@@ -189,7 +189,7 @@ public class ResourceTest extends AbstractTest {
     }
 
     @Test
-    public void saveWithRoleMappingType() {
+    public void saveWithGroupMappingType() {
         ExternalResource resource = 
entityFactory.newEntity(ExternalResource.class);
         resource.setKey("ws-target-resource-basic-save-invalid");
 
@@ -209,7 +209,7 @@ public class ResourceTest extends AbstractTest {
         item = entityFactory.newEntity(UMappingItem.class);
         item.setIntAttrName("icon");
         item.setExtAttrName("icon");
-        item.setIntMappingType(IntMappingType.RolePlainSchema);
+        item.setIntMappingType(IntMappingType.GroupPlainSchema);
         item.setPurpose(MappingPurpose.BOTH);
         mapping.addItem(item);
 
@@ -229,7 +229,7 @@ public class ResourceTest extends AbstractTest {
             items++;
 
             if ("icon".equals(mapItem.getIntAttrName())) {
-                assertTrue(IntMappingType.contains(AttributableType.ROLE,
+                assertTrue(IntMappingType.contains(AttributableType.GROUP,
                         mapItem.getIntMappingType().toString()));
             }
             if ("mderiveddata".equals(mapItem.getIntAttrName())) {
@@ -278,7 +278,7 @@ public class ResourceTest extends AbstractTest {
         final UMappingItem item = entityFactory.newEntity(UMappingItem.class);
         item.setIntAttrName("icon");
         item.setExtAttrName("icon");
-        item.setIntMappingType(IntMappingType.RolePlainSchema);
+        item.setIntMappingType(IntMappingType.GroupPlainSchema);
         item.setPurpose(MappingPurpose.BOTH);
         mapping.setAccountIdItem(item);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/RoleTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/RoleTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/RoleTest.java
deleted file mode 100644
index 7bab7d4..0000000
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/RoleTest.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.persistence.jpa.entity;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-import java.util.List;
-import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
-import org.apache.syncope.core.persistence.api.dao.RoleDAO;
-import org.apache.syncope.core.persistence.api.entity.AccountPolicy;
-import org.apache.syncope.core.persistence.api.entity.PasswordPolicy;
-import org.apache.syncope.core.persistence.api.entity.role.Role;
-import org.apache.syncope.core.persistence.jpa.AbstractTest;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-
-@Transactional
-public class RoleTest extends AbstractTest {
-
-    @Autowired
-    private RoleDAO roleDAO;
-
-    @Autowired
-    private PolicyDAO policyDAO;
-
-    @Test
-    public void findAll() {
-        List<Role> list = roleDAO.findAll();
-        assertEquals("did not get expected number of roles ", 14, list.size());
-    }
-
-    @Test
-    public void findChildren() {
-        assertEquals(3, roleDAO.findChildren(roleDAO.find(4L)).size());
-    }
-
-    @Test
-    public void find() {
-        Role role = roleDAO.find("root", null);
-        assertNotNull("did not find expected role", role);
-        role = roleDAO.find(null, null);
-        assertNull("found role but did not expect it", role);
-    }
-
-    @Test
-    public void inheritedAttributes() {
-        Role director = roleDAO.find(7L);
-
-        assertEquals(1, director.findLastInheritedAncestorPlainAttrs().size());
-    }
-
-    @Test
-    public void inheritedDerivedAttributes() {
-        Role director = roleDAO.find(7L);
-
-        assertEquals(1, director.findLastInheritedAncestorDerAttrs().size());
-    }
-
-    @Test
-    public void inheritedVirtualAttributes() {
-        Role director = roleDAO.find(7L);
-
-        assertEquals(1, director.findLastInheritedAncestorVirAttrs().size());
-    }
-
-    @Test
-    public void inheritedPolicy() {
-        Role role = roleDAO.find(7L);
-
-        assertNotNull(role);
-
-        assertNotNull(role.getAccountPolicy());
-        assertNotNull(role.getPasswordPolicy());
-
-        assertEquals(4, role.getPasswordPolicy().getKey(), 0);
-
-        role = roleDAO.find(5L);
-
-        assertNotNull(role);
-
-        assertNull(role.getAccountPolicy());
-        assertNull(role.getPasswordPolicy());
-    }
-
-    @Test
-    public void save() {
-        Role role = entityFactory.newEntity(Role.class);
-        role.setName("secondChild");
-
-        // verify inheritance password and account policies
-        role.setInheritAccountPolicy(false);
-        // not inherited so setter execution shouldn't be ignored
-        role.setAccountPolicy((AccountPolicy) policyDAO.find(6L));
-
-        role.setInheritPasswordPolicy(true);
-        // inherited so setter execution should be ignored
-        role.setPasswordPolicy((PasswordPolicy) policyDAO.find(4L));
-
-        Role rootRole = roleDAO.find("root", null);
-        role.setParent(rootRole);
-
-        role = roleDAO.save(role);
-
-        Role actual = roleDAO.find(role.getKey());
-        assertNotNull("expected save to work", actual);
-
-        assertNull(role.getPasswordPolicy());
-        assertNotNull(role.getAccountPolicy());
-        assertEquals(Long.valueOf(6), role.getAccountPolicy().getKey());
-    }
-
-    @Test
-    public void delete() {
-        Role role = roleDAO.find(4L);
-        roleDAO.delete(role.getKey());
-
-        Role actual = roleDAO.find(4L);
-        assertNull("delete did not work", actual);
-
-        Role children = roleDAO.find(7L);
-        assertNull("delete of successors did not work", children);
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/UserTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/UserTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/UserTest.java
index 38be1ac..f4a8298 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/UserTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/UserTest.java
@@ -27,7 +27,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.Set;
 import org.apache.syncope.common.lib.types.CipherAlgorithm;
-import org.apache.syncope.core.persistence.api.RoleEntitlementUtil;
+import org.apache.syncope.core.persistence.api.GroupEntitlementUtil;
 import 
org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
 import org.apache.syncope.core.persistence.api.dao.EntitlementDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
@@ -54,35 +54,35 @@ public class UserTest extends AbstractTest {
 
     @Test
     public void findAll() {
-        List<User> list = 
userDAO.findAll(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()), 1, 
100);
+        List<User> list = 
userDAO.findAll(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()), 1, 
100);
         assertEquals("did not get expected number of users ", 5, list.size());
     }
 
     @Test
     public void count() {
-        Integer count = 
userDAO.count(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()));
+        Integer count = 
userDAO.count(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()));
         assertNotNull(count);
         assertEquals(5, count.intValue());
     }
 
     @Test
     public void findAllByPageAndSize() {
-        Set<Long> allRoleIds = 
RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll());
+        Set<Long> allGroupKeys = 
GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll());
 
         // get first page
-        List<User> list = userDAO.findAll(allRoleIds, 1, 2);
+        List<User> list = userDAO.findAll(allGroupKeys, 1, 2);
         assertEquals("did not get expected number of users ", 2, list.size());
 
         // get second page
-        list = userDAO.findAll(allRoleIds, 2, 2);
+        list = userDAO.findAll(allGroupKeys, 2, 2);
         assertEquals("did not get expected number of users ", 2, list.size());
 
         // get second page with uncomplete set
-        list = userDAO.findAll(allRoleIds, 2, 3);
+        list = userDAO.findAll(allGroupKeys, 2, 3);
         assertEquals("did not get expected number of users ", 2, list.size());
 
         // get unexistent page
-        list = userDAO.findAll(allRoleIds, 3, 2);
+        list = userDAO.findAll(allGroupKeys, 3, 2);
         assertEquals("did not get expected number of users ", 1, list.size());
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/VirAttrTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/VirAttrTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/VirAttrTest.java
index 72c5509..9537d5e 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/VirAttrTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/VirAttrTest.java
@@ -24,16 +24,16 @@ import static org.junit.Assert.assertNull;
 
 import java.util.List;
 import org.apache.syncope.core.persistence.api.dao.MembershipDAO;
-import org.apache.syncope.core.persistence.api.dao.RoleDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.dao.VirAttrDAO;
 import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
 import org.apache.syncope.core.persistence.api.entity.membership.MVirAttr;
 import 
org.apache.syncope.core.persistence.api.entity.membership.MVirAttrTemplate;
 import org.apache.syncope.core.persistence.api.entity.membership.Membership;
-import org.apache.syncope.core.persistence.api.entity.role.RVirAttr;
-import org.apache.syncope.core.persistence.api.entity.role.RVirAttrTemplate;
-import org.apache.syncope.core.persistence.api.entity.role.Role;
+import org.apache.syncope.core.persistence.api.entity.group.GVirAttr;
+import org.apache.syncope.core.persistence.api.entity.group.GVirAttrTemplate;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.user.UVirAttr;
 import org.apache.syncope.core.persistence.api.entity.user.UVirSchema;
 import org.apache.syncope.core.persistence.api.entity.user.User;
@@ -52,7 +52,7 @@ public class VirAttrTest extends AbstractTest {
     private UserDAO userDAO;
 
     @Autowired
-    private RoleDAO roleDAO;
+    private GroupDAO groupDAO;
 
     @Autowired
     private MembershipDAO membershipDAO;
@@ -98,7 +98,7 @@ public class VirAttrTest extends AbstractTest {
 
         MVirAttr virAttr = entityFactory.newEntity(MVirAttr.class);
         virAttr.setOwner(owner);
-        
virAttr.setTemplate(owner.getRole().getAttrTemplate(MVirAttrTemplate.class, 
"mvirtualdata"));
+        
virAttr.setTemplate(owner.getGroup().getAttrTemplate(MVirAttrTemplate.class, 
"mvirtualdata"));
 
         virAttr = virAttrDAO.save(virAttr);
         assertNotNull(virAttr.getTemplate());
@@ -110,17 +110,17 @@ public class VirAttrTest extends AbstractTest {
 
     @Test
     public void saveRVirAttribute() {
-        Role owner = roleDAO.find(3L);
+        Group owner = groupDAO.find(3L);
         assertNotNull("did not get expected membership", owner);
 
-        RVirAttr virAttr = entityFactory.newEntity(RVirAttr.class);
+        GVirAttr virAttr = entityFactory.newEntity(GVirAttr.class);
         virAttr.setOwner(owner);
-        virAttr.setTemplate(owner.getAttrTemplate(RVirAttrTemplate.class, 
"rvirtualdata"));
+        virAttr.setTemplate(owner.getAttrTemplate(GVirAttrTemplate.class, 
"rvirtualdata"));
 
         virAttr = virAttrDAO.save(virAttr);
         assertNotNull(virAttr.getTemplate());
 
-        RVirAttr actual = virAttrDAO.find(virAttr.getKey(), RVirAttr.class);
+        GVirAttr actual = virAttrDAO.find(virAttr.getKey(), GVirAttr.class);
         assertNotNull("expected save to work", actual);
         assertEquals(virAttr, actual);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/VirSchemaTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/VirSchemaTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/VirSchemaTest.java
index b6738d4..f52e064 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/VirSchemaTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/entity/VirSchemaTest.java
@@ -30,7 +30,7 @@ import 
org.apache.syncope.common.lib.types.EntityViolationType;
 import 
org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
 import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
 import org.apache.syncope.core.persistence.api.entity.VirSchema;
-import org.apache.syncope.core.persistence.api.entity.role.RVirSchema;
+import org.apache.syncope.core.persistence.api.entity.group.GVirSchema;
 import org.apache.syncope.core.persistence.api.entity.user.UVirSchema;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.junit.Test;
@@ -78,12 +78,12 @@ public class VirSchemaTest extends AbstractTest {
         assertNull("delete did not work", actual);
 
         // ------------- //
-        RVirSchema rvirtualdata = virSchemaDAO.find("rvirtualdata", 
RVirSchema.class);
+        GVirSchema rvirtualdata = virSchemaDAO.find("rvirtualdata", 
GVirSchema.class);
         assertNotNull(rvirtualdata);
 
-        virSchemaDAO.delete(rvirtualdata.getKey(), 
attrUtilFactory.getInstance(AttributableType.ROLE));
+        virSchemaDAO.delete(rvirtualdata.getKey(), 
attrUtilFactory.getInstance(AttributableType.GROUP));
 
-        actual = virSchemaDAO.find("rvirtualdata", RVirSchema.class);
+        actual = virSchemaDAO.find("rvirtualdata", GVirSchema.class);
         assertNull("delete did not work", actual);
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/AttrTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/AttrTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/AttrTest.java
index bc1e4cd..7cb2196 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/AttrTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/AttrTest.java
@@ -33,14 +33,14 @@ import 
org.apache.syncope.core.persistence.api.dao.MembershipDAO;
 import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
 import org.apache.syncope.core.persistence.api.dao.PlainAttrValueDAO;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
-import org.apache.syncope.core.persistence.api.dao.RoleDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.membership.MPlainAttr;
 import 
org.apache.syncope.core.persistence.api.entity.membership.MPlainAttrTemplate;
 import org.apache.syncope.core.persistence.api.entity.membership.MPlainSchema;
 import org.apache.syncope.core.persistence.api.entity.membership.Membership;
-import org.apache.syncope.core.persistence.api.entity.role.RPlainAttrTemplate;
-import org.apache.syncope.core.persistence.api.entity.role.Role;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttrTemplate;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.user.UDerAttr;
 import org.apache.syncope.core.persistence.api.entity.user.UDerSchema;
 import org.apache.syncope.core.persistence.api.entity.user.UPlainAttr;
@@ -73,7 +73,7 @@ public class AttrTest extends AbstractTest {
     private MembershipDAO membershipDAO;
 
     @Autowired
-    private RoleDAO roleDAO;
+    private GroupDAO groupDAO;
 
     @Autowired
     private UserDAO userDAO;
@@ -119,7 +119,7 @@ public class AttrTest extends AbstractTest {
 
         MPlainAttrTemplate template = 
entityFactory.newEntity(MPlainAttrTemplate.class);
         template.setSchema(actualSchema);
-        
membership.getRole().getAttrTemplates(MPlainAttrTemplate.class).add(template);
+        
membership.getGroup().getAttrTemplates(MPlainAttrTemplate.class).add(template);
 
         MPlainAttr attr = entityFactory.newEntity(MPlainAttr.class);
         attr.setTemplate(template);
@@ -172,20 +172,20 @@ public class AttrTest extends AbstractTest {
     }
 
     @Test
-    public void unmatchedRoleAttr() {
-        Role role = roleDAO.find(1L);
-        assertNotNull(role);
+    public void unmatchedGroupAttr() {
+        Group group = groupDAO.find(1L);
+        assertNotNull(group);
 
-        assertNotNull(role.getAttrTemplate(RPlainAttrTemplate.class, "icon"));
-        assertNotNull(role.getPlainAttr("icon"));
+        assertNotNull(group.getAttrTemplate(GPlainAttrTemplate.class, "icon"));
+        assertNotNull(group.getPlainAttr("icon"));
 
-        assertTrue(role.getAttrTemplates(RPlainAttrTemplate.class).
-                remove(role.getAttrTemplate(RPlainAttrTemplate.class, 
"icon")));
+        assertTrue(group.getAttrTemplates(GPlainAttrTemplate.class).
+                remove(group.getAttrTemplate(GPlainAttrTemplate.class, 
"icon")));
 
-        role = roleDAO.save(role);
-        roleDAO.flush();
+        group = groupDAO.save(group);
+        groupDAO.flush();
 
-        assertNull(role.getAttrTemplate(RPlainAttrTemplate.class, "icon"));
-        assertNull(role.getPlainAttr("icon"));
+        assertNull(group.getAttrTemplate(GPlainAttrTemplate.class, "icon"));
+        assertNull(group.getPlainAttr("icon"));
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/AttributableSearchTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/AttributableSearchTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/AttributableSearchTest.java
index ba67807..34338ce 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/AttributableSearchTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/AttributableSearchTest.java
@@ -26,13 +26,13 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import org.apache.syncope.common.lib.types.SubjectType;
-import org.apache.syncope.core.persistence.api.RoleEntitlementUtil;
+import org.apache.syncope.core.persistence.api.GroupEntitlementUtil;
 import org.apache.syncope.core.persistence.api.dao.EntitlementDAO;
-import org.apache.syncope.core.persistence.api.dao.RoleDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.SubjectSearchDAO;
 import org.apache.syncope.core.persistence.api.dao.search.AttributeCond;
 import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
-import org.apache.syncope.core.persistence.api.entity.role.Role;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.junit.Test;
@@ -43,7 +43,7 @@ import 
org.springframework.transaction.annotation.Transactional;
 public class AttributableSearchTest extends AbstractTest {
 
     @Autowired
-    private RoleDAO roleDAO;
+    private GroupDAO groupDAO;
 
     @Autowired
     private SubjectSearchDAO searchDAO;
@@ -53,11 +53,11 @@ public class AttributableSearchTest extends AbstractTest {
 
     @Test
     public void issueSYNCOPE95() {
-        Set<Role> roles = new HashSet<>(roleDAO.findAll());
-        for (Role role : roles) {
-            roleDAO.delete(role.getKey());
+        Set<Group> groups = new HashSet<>(groupDAO.findAll());
+        for (Group group : groups) {
+            groupDAO.delete(group.getKey());
         }
-        roleDAO.flush();
+        groupDAO.flush();
 
         final AttributeCond coolLeafCond = new 
AttributeCond(AttributeCond.Type.EQ);
         coolLeafCond.setSchema("cool");
@@ -67,7 +67,7 @@ public class AttributableSearchTest extends AbstractTest {
         assertTrue(cond.isValid());
 
         final List<User> users =
-                
searchDAO.search(RoleEntitlementUtil.getRoleKeys(entitlementDAO.findAll()), 
cond, SubjectType.USER);
+                
searchDAO.search(GroupEntitlementUtil.getGroupKeys(entitlementDAO.findAll()), 
cond, SubjectType.USER);
         assertNotNull(users);
         assertEquals(1, users.size());
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/EntitlementTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/EntitlementTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/EntitlementTest.java
index 0e2321d..b1f2eb1 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/EntitlementTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/EntitlementTest.java
@@ -24,9 +24,9 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.List;
 import org.apache.syncope.core.persistence.api.dao.EntitlementDAO;
-import org.apache.syncope.core.persistence.api.dao.RoleDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.entity.Entitlement;
-import org.apache.syncope.core.persistence.api.entity.role.Role;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,19 +39,19 @@ public class EntitlementTest extends AbstractTest {
     private EntitlementDAO entitlementDAO;
 
     @Autowired
-    private RoleDAO roleDAO;
+    private GroupDAO groupDAO;
 
     @Test
     public void delete() {
         Entitlement entitlement = entitlementDAO.find("base");
         assertNotNull("did not find expected entitlement", entitlement);
 
-        List<Role> roles = roleDAO.findByEntitlement(entitlement);
-        assertEquals("expected two roles", 2, roles.size());
+        List<Group> groups = groupDAO.findByEntitlement(entitlement);
+        assertEquals("expected two groups", 2, groups.size());
 
         entitlementDAO.delete("base");
 
-        roles = roleDAO.findByEntitlement(entitlement);
-        assertTrue(roles.isEmpty());
+        groups = groupDAO.findByEntitlement(entitlement);
+        assertTrue(groups.isEmpty());
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/GroupTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/GroupTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/GroupTest.java
new file mode 100644
index 0000000..80a6f7e
--- /dev/null
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/GroupTest.java
@@ -0,0 +1,145 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.persistence.jpa.relationship;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+import 
org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
+import org.apache.syncope.core.persistence.api.dao.EntitlementDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainAttrValueDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
+import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
+import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.entity.PasswordPolicy;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttr;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainAttrValue;
+import org.apache.syncope.core.persistence.api.entity.group.GPlainSchema;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
+import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.persistence.jpa.AbstractTest;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class GroupTest extends AbstractTest {
+
+    @Autowired
+    private UserDAO userDAO;
+
+    @Autowired
+    private GroupDAO groupDAO;
+
+    @Autowired
+    private PlainSchemaDAO plainSchemaDAO;
+
+    @Autowired
+    private PlainAttrDAO plainAttrDAO;
+
+    @Autowired
+    private PlainAttrValueDAO plainAttrValueDAO;
+
+    @Autowired
+    private EntitlementDAO entitlementDAO;
+
+    @Autowired
+    private PolicyDAO policyDAO;
+
+    @Test(expected = InvalidEntityException.class)
+    public void saveWithTwoOwners() {
+        Group root = groupDAO.find("root", null);
+        assertNotNull("did not find expected group", root);
+
+        User user = userDAO.find(1L);
+        assertNotNull("did not find expected user", user);
+
+        Group group = entityFactory.newEntity(Group.class);
+        group.setName("error");
+        group.setUserOwner(user);
+        group.setGroupOwner(root);
+
+        groupDAO.save(group);
+    }
+
+    @Test
+    public void findByOwner() {
+        Group group = groupDAO.find(6L);
+        assertNotNull("did not find expected group", group);
+
+        User user = userDAO.find(5L);
+        assertNotNull("did not find expected user", user);
+
+        assertEquals(user, group.getUserOwner());
+
+        Group child1 = groupDAO.find(7L);
+        assertNotNull(child1);
+        assertEquals(group, child1.getParent());
+
+        Group child2 = groupDAO.find(10L);
+        assertNotNull(child2);
+        assertEquals(group, child2.getParent());
+
+        List<Group> ownedGroups = groupDAO.findOwnedByUser(user.getKey());
+        assertFalse(ownedGroups.isEmpty());
+        assertEquals(2, ownedGroups.size());
+        assertTrue(ownedGroups.contains(group));
+        assertTrue(ownedGroups.contains(child1));
+        assertFalse(ownedGroups.contains(child2));
+    }
+
+    public void createWithPasswordPolicy() {
+        PasswordPolicy policy = (PasswordPolicy) policyDAO.find(4L);
+        Group group = entityFactory.newEntity(Group.class);
+        group.setName("groupWithPasswordPolicy");
+        group.setPasswordPolicy(policy);
+
+        Group actual = groupDAO.save(group);
+        assertNotNull(actual);
+
+        actual = groupDAO.find(actual.getKey());
+        assertNotNull(actual);
+        assertNotNull(actual.getPasswordPolicy());
+
+        groupDAO.delete(actual.getKey());
+        assertNull(groupDAO.find(actual.getKey()));
+
+        assertNotNull(policyDAO.find(4L));
+    }
+
+    @Test
+    public void delete() {
+        groupDAO.delete(2L);
+
+        groupDAO.flush();
+
+        assertNull(groupDAO.find(2L));
+        assertEquals(1, 
groupDAO.findByEntitlement(entitlementDAO.find("base")).size());
+        assertEquals(userDAO.find(2L).getGroups().size(), 2);
+        assertNull(plainAttrDAO.find(700L, GPlainAttr.class));
+        assertNull(plainAttrValueDAO.find(41L, GPlainAttrValue.class));
+        assertNotNull(plainSchemaDAO.find("icon", GPlainSchema.class));
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/MembershipTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/MembershipTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/MembershipTest.java
index 3a73d02..18fa39b 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/MembershipTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/MembershipTest.java
@@ -21,9 +21,9 @@ package org.apache.syncope.core.persistence.jpa.relationship;
 import static org.junit.Assert.assertTrue;
 
 import org.apache.syncope.core.persistence.api.dao.MembershipDAO;
-import org.apache.syncope.core.persistence.api.dao.RoleDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.entity.membership.Membership;
-import org.apache.syncope.core.persistence.api.entity.role.Role;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.junit.Test;
@@ -37,13 +37,13 @@ public class MembershipTest extends AbstractTest {
     private MembershipDAO membershipDAO;
 
     @Autowired
-    private RoleDAO roleDAO;
+    private GroupDAO groupDAO;
 
     @Test
     public void delete() {
         Membership membership = membershipDAO.find(4L);
         User user = membership.getUser();
-        Role role = membership.getRole();
+        Group group = membership.getGroup();
 
         membershipDAO.delete(4L);
 
@@ -52,7 +52,7 @@ public class MembershipTest extends AbstractTest {
         for (Membership m : user.getMemberships()) {
             assertTrue(m.getKey() != 4L);
         }
-        for (Membership m : roleDAO.findMemberships(role)) {
+        for (Membership m : groupDAO.findMemberships(group)) {
             assertTrue(m.getKey() != 4L);
         }
     }
@@ -61,7 +61,7 @@ public class MembershipTest extends AbstractTest {
     public void deleteAndCreate() {
         Membership membership = membershipDAO.find(3L);
         User user = membership.getUser();
-        Role role = membership.getRole();
+        Group group = membership.getGroup();
 
         // 1. delete that membership
         membershipDAO.delete(membership.getKey());
@@ -71,10 +71,10 @@ public class MembershipTest extends AbstractTest {
         membershipDAO.flush();
 
         // 2. (in the same transaction) create new membership with same user
-        // and role (in order to check the UNIQE constraint on Membership)
+        // and group (in order to check the UNIQE constraint on Membership)
         membership = entityFactory.newEntity(Membership.class);
         membership.setUser(user);
-        membership.setRole(role);
+        membership.setGroup(group);
 
         membership = membershipDAO.save(membership);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/ResourceTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/ResourceTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/ResourceTest.java
index 9139804..89fe371 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/ResourceTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/ResourceTest.java
@@ -40,13 +40,13 @@ import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
 import org.apache.syncope.core.persistence.api.entity.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.PasswordPolicy;
-import org.apache.syncope.core.persistence.api.entity.role.RMappingItem;
+import org.apache.syncope.core.persistence.api.entity.group.GMappingItem;
 import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
 import org.apache.syncope.core.persistence.api.entity.user.UMapping;
 import org.apache.syncope.core.persistence.api.entity.user.UMappingItem;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
-import org.apache.syncope.core.persistence.jpa.entity.role.JPARMappingItem;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGMappingItem;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
@@ -252,17 +252,17 @@ public class ResourceTest extends AbstractTest {
         ExternalResource ldap = resourceDAO.find("resource-ldap");
         assertNotNull(ldap);
         assertNotNull(ldap.getUmapping());
-        assertNotNull(ldap.getRmapping());
+        assertNotNull(ldap.getGmapping());
 
-        List<? extends RMappingItem> items = ldap.getRmapping().getItems();
+        List<? extends GMappingItem> items = ldap.getGmapping().getItems();
         assertNotNull(items);
         assertFalse(items.isEmpty());
         List<Long> itemIds = new ArrayList<>(items.size());
-        for (RMappingItem item : items) {
+        for (GMappingItem item : items) {
             itemIds.add(item.getKey());
         }
 
-        ldap.setRmapping(null);
+        ldap.setGmapping(null);
 
         // need to avoid any class not defined in this Maven module
         ldap.getPropagationActionsClassNames().clear();
@@ -271,7 +271,7 @@ public class ResourceTest extends AbstractTest {
         resourceDAO.flush();
 
         for (Long itemId : itemIds) {
-            assertNull(entityManager.find(JPARMappingItem.class, itemId));
+            assertNull(entityManager.find(JPAGMappingItem.class, itemId));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/RoleTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/RoleTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/RoleTest.java
deleted file mode 100644
index db6bdb8..0000000
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/RoleTest.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.persistence.jpa.relationship;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.List;
-import 
org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
-import org.apache.syncope.core.persistence.api.dao.EntitlementDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainAttrValueDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
-import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
-import org.apache.syncope.core.persistence.api.dao.RoleDAO;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.persistence.api.entity.PasswordPolicy;
-import org.apache.syncope.core.persistence.api.entity.role.RPlainAttr;
-import org.apache.syncope.core.persistence.api.entity.role.RPlainAttrValue;
-import org.apache.syncope.core.persistence.api.entity.role.RPlainSchema;
-import org.apache.syncope.core.persistence.api.entity.role.Role;
-import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.apache.syncope.core.persistence.jpa.AbstractTest;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-
-@Transactional
-public class RoleTest extends AbstractTest {
-
-    @Autowired
-    private UserDAO userDAO;
-
-    @Autowired
-    private RoleDAO roleDAO;
-
-    @Autowired
-    private PlainSchemaDAO plainSchemaDAO;
-
-    @Autowired
-    private PlainAttrDAO plainAttrDAO;
-
-    @Autowired
-    private PlainAttrValueDAO plainAttrValueDAO;
-
-    @Autowired
-    private EntitlementDAO entitlementDAO;
-
-    @Autowired
-    private PolicyDAO policyDAO;
-
-    @Test(expected = InvalidEntityException.class)
-    public void saveWithTwoOwners() {
-        Role root = roleDAO.find("root", null);
-        assertNotNull("did not find expected role", root);
-
-        User user = userDAO.find(1L);
-        assertNotNull("did not find expected user", user);
-
-        Role role = entityFactory.newEntity(Role.class);
-        role.setName("error");
-        role.setUserOwner(user);
-        role.setRoleOwner(root);
-
-        roleDAO.save(role);
-    }
-
-    @Test
-    public void findByOwner() {
-        Role role = roleDAO.find(6L);
-        assertNotNull("did not find expected role", role);
-
-        User user = userDAO.find(5L);
-        assertNotNull("did not find expected user", user);
-
-        assertEquals(user, role.getUserOwner());
-
-        Role child1 = roleDAO.find(7L);
-        assertNotNull(child1);
-        assertEquals(role, child1.getParent());
-
-        Role child2 = roleDAO.find(10L);
-        assertNotNull(child2);
-        assertEquals(role, child2.getParent());
-
-        List<Role> ownedRoles = roleDAO.findOwnedByUser(user.getKey());
-        assertFalse(ownedRoles.isEmpty());
-        assertEquals(2, ownedRoles.size());
-        assertTrue(ownedRoles.contains(role));
-        assertTrue(ownedRoles.contains(child1));
-        assertFalse(ownedRoles.contains(child2));
-    }
-
-    public void createWithPasswordPolicy() {
-        PasswordPolicy policy = (PasswordPolicy) policyDAO.find(4L);
-        Role role = entityFactory.newEntity(Role.class);
-        role.setName("roleWithPasswordPolicy");
-        role.setPasswordPolicy(policy);
-
-        Role actual = roleDAO.save(role);
-        assertNotNull(actual);
-
-        actual = roleDAO.find(actual.getKey());
-        assertNotNull(actual);
-        assertNotNull(actual.getPasswordPolicy());
-
-        roleDAO.delete(actual.getKey());
-        assertNull(roleDAO.find(actual.getKey()));
-
-        assertNotNull(policyDAO.find(4L));
-    }
-
-    @Test
-    public void delete() {
-        roleDAO.delete(2L);
-
-        roleDAO.flush();
-
-        assertNull(roleDAO.find(2L));
-        assertEquals(1, 
roleDAO.findByEntitlement(entitlementDAO.find("base")).size());
-        assertEquals(userDAO.find(2L).getRoles().size(), 2);
-        assertNull(plainAttrDAO.find(700L, RPlainAttr.class));
-        assertNull(plainAttrValueDAO.find(41L, RPlainAttrValue.class));
-        assertNotNull(plainSchemaDAO.find("icon", RPlainSchema.class));
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/UserTest.java
----------------------------------------------------------------------
diff --git 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/UserTest.java
 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/UserTest.java
index e95f5c3..ccfa33d 100644
--- 
a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/UserTest.java
+++ 
b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/relationship/UserTest.java
@@ -26,7 +26,7 @@ import java.util.List;
 import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
 import org.apache.syncope.core.persistence.api.dao.PlainAttrValueDAO;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
-import org.apache.syncope.core.persistence.api.dao.RoleDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.membership.Membership;
 import org.apache.syncope.core.persistence.api.entity.user.UPlainAttr;
@@ -44,7 +44,7 @@ public class UserTest extends AbstractTest {
     private UserDAO userDAO;
 
     @Autowired
-    private RoleDAO roleDAO;
+    private GroupDAO groupDAO;
 
     @Autowired
     private PlainSchemaDAO plainSchemaDAO;
@@ -66,7 +66,7 @@ public class UserTest extends AbstractTest {
         assertNull(plainAttrValueDAO.find(22L, UPlainAttrValue.class));
         assertNotNull(plainSchemaDAO.find("loginDate", UPlainSchema.class));
 
-        List<Membership> memberships = 
roleDAO.findMemberships(roleDAO.find(7L));
+        List<Membership> memberships = 
groupDAO.findMemberships(groupDAO.find(7L));
         assertTrue(memberships.isEmpty());
     }
 }

Reply via email to