You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2017/08/07 13:50:10 UTC

[2/4] syncope git commit: Cleaning up utility methods to find resource keys

Cleaning up utility methods to find resource keys


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/892778cf
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/892778cf
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/892778cf

Branch: refs/heads/2_0_X
Commit: 892778cf85710b0037484bee3b2bb99f5a604c9d
Parents: 031ab3c
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Aug 7 15:49:31 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Aug 7 15:49:31 2017 +0200

----------------------------------------------------------------------
 .../core/persistence/api/dao/AnyDAO.java        |  3 +++
 .../core/persistence/api/dao/AnyObjectDAO.java  |  1 -
 .../core/persistence/api/dao/UserDAO.java       |  2 --
 .../core/persistence/api/entity/Any.java        |  2 --
 .../core/persistence/jpa/dao/JPAGroupDAO.java   |  7 ++++++
 .../persistence/jpa/entity/AbstractAny.java     | 11 ---------
 .../persistence/jpa/entity/conf/JPAConf.java    |  5 ----
 .../java/DefaultGroupProvisioningManager.java   |  2 +-
 .../java/data/AnyObjectDataBinderImpl.java      | 14 +++++------
 .../java/data/GroupDataBinderImpl.java          |  2 +-
 .../java/data/UserDataBinderImpl.java           | 12 ++++-----
 .../GroupMemberProvisionTaskJobDelegate.java    | 10 +++++---
 .../AbstractPropagationTaskExecutor.java        |  2 +-
 .../LDAPMembershipPropagationActions.java       |  2 +-
 .../propagation/PropagationManagerImpl.java     | 26 ++++++--------------
 .../pushpull/AbstractPushResultHandler.java     | 11 +++------
 .../activiti/ActivitiUserWorkflowAdapter.java   |  5 +---
 .../workflow/activiti/task/PasswordReset.java   |  4 +--
 .../flowable/FlowableUserWorkflowAdapter.java   |  5 +---
 .../workflow/flowable/task/PasswordReset.java   |  4 +--
 .../java/DefaultGroupWorkflowAdapter.java       |  2 +-
 .../java/DefaultUserWorkflowAdapter.java        |  4 +--
 .../camel/producer/DeprovisionProducer.java     |  2 +-
 .../client/ElasticsearchUtils.java              |  2 +-
 24 files changed, 51 insertions(+), 89 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyDAO.java
index c161ee7..60f865f 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyDAO.java
@@ -18,6 +18,7 @@
  */
 package org.apache.syncope.core.persistence.api.dao;
 
+import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
@@ -84,4 +85,6 @@ public interface AnyDAO<A extends Any<?>> extends DAO<A> {
     void delete(A any);
 
     List<String> findDynRealms(String key);
+
+    Collection<String> findAllResourceKeys(String key);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyObjectDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyObjectDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyObjectDAO.java
index 8a10f0b..6368da5 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyObjectDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnyObjectDAO.java
@@ -53,5 +53,4 @@ public interface AnyObjectDAO extends AnyDAO<AnyObject> {
 
     Collection<ExternalResource> findAllResources(AnyObject anyObject);
 
-    Collection<String> findAllResourceKeys(String key);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/UserDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/UserDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/UserDAO.java
index 2a5d76d..92ba692 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/UserDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/UserDAO.java
@@ -56,7 +56,5 @@ public interface UserDAO extends AnyDAO<User> {
 
     Collection<ExternalResource> findAllResources(User user);
 
-    Collection<String> findAllResourceKeys(String key);
-
     Pair<Boolean, Boolean> enforcePolicies(User user);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Any.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Any.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Any.java
index e041a6d..9896e73 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Any.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Any.java
@@ -49,8 +49,6 @@ public interface Any<P extends PlainAttr<?>> extends AnnotatedEntity {
 
     boolean add(ExternalResource resource);
 
-    List<String> getResourceKeys();
-
     List<? extends ExternalResource> getResources();
 
     boolean add(AnyTypeClass auxClass);

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
index 9d833ea..0bc491a 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.core.persistence.jpa.dao;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
@@ -68,6 +69,7 @@ import org.apache.syncope.core.persistence.jpa.entity.user.JPAUDynGroupMembershi
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAUMembership;
 import org.apache.syncope.core.provisioning.api.event.AnyCreatedUpdatedEvent;
 import org.apache.syncope.core.provisioning.api.event.AnyDeletedEvent;
+import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.springframework.aop.support.AopUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -536,4 +538,9 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO {
         }
     }
 
+    @Transactional(readOnly = true)
+    @Override
+    public Collection<String> findAllResourceKeys(final String key) {
+        return CollectionUtils.collect(authFind(key).getResources(), EntityUtils.keyTransformer());
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAny.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAny.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAny.java
index bd5a108..e77fb7d 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAny.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractAny.java
@@ -18,18 +18,13 @@
  */
 package org.apache.syncope.core.persistence.jpa.entity;
 
-import java.util.ArrayList;
-import java.util.List;
 import javax.persistence.Column;
 import javax.persistence.FetchType;
 import javax.persistence.ManyToOne;
 import javax.persistence.MappedSuperclass;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
 import org.apache.syncope.core.persistence.api.entity.Realm;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.jpa.validation.entity.AnyCheck;
 
 @AnyCheck
@@ -76,10 +71,4 @@ public abstract class AbstractAny<P extends PlainAttr<?>> extends AbstractAnnota
     public void setStatus(final String status) {
         this.status = status;
     }
-
-    @Override
-    public List<String> getResourceKeys() {
-        return CollectionUtils.collect(
-                getResources(), EntityUtils.<ExternalResource>keyTransformer(), new ArrayList<String>());
-    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/conf/JPAConf.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/conf/JPAConf.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/conf/JPAConf.java
index a2ca038..d592394 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/conf/JPAConf.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/conf/JPAConf.java
@@ -86,11 +86,6 @@ public class JPAConf extends AbstractProvidedKeyEntity implements Conf {
     }
 
     @Override
-    public List<String> getResourceKeys() {
-        return Collections.emptyList();
-    }
-
-    @Override
     public List<? extends ExternalResource> getResources() {
         return Collections.emptyList();
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java
index d794e61..31a2833 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java
@@ -220,7 +220,7 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
                 AnyTypeKind.GROUP,
                 key,
                 propByRes,
-                CollectionUtils.removeAll(groupDAO.authFind(key).getResourceKeys(), resources));
+                CollectionUtils.removeAll(groupDAO.findAllResourceKeys(key), resources));
         PropagationReporter propagationReporter = taskExecutor.execute(tasks, nullPriorityAsync);
 
         return propagationReporter.getStatuses();

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java
index 523d165..501ebf4 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyObjectDataBinderImpl.java
@@ -271,8 +271,7 @@ public class AnyObjectDataBinderImpl extends AbstractAnyDataBinder implements An
 
         SyncopeClientCompositeException scce = SyncopeClientException.buildComposite();
 
-        Collection<String> currentResources = CollectionUtils.collect(
-                anyObjectDAO.findAllResources(anyObject), EntityUtils.keyTransformer());
+        Collection<String> currentResources = anyObjectDAO.findAllResourceKeys(anyObject.getKey());
 
         // fetch connObjectKeys before update
         Map<String, String> oldConnObjectKeys = getConnObjectKeys(anyObject);
@@ -282,7 +281,7 @@ public class AnyObjectDataBinderImpl extends AbstractAnyDataBinder implements An
 
         // name
         if (anyObjectPatch.getName() != null && StringUtils.isNotBlank(anyObjectPatch.getName().getValue())) {
-            propByRes.addAll(ResourceOperation.UPDATE, anyObject.getResourceKeys());
+            propByRes.addAll(ResourceOperation.UPDATE, anyObjectDAO.findAllResourceKeys(anyObject.getKey()));
 
             anyObject.setName(anyObjectPatch.getName().getValue());
         }
@@ -311,7 +310,8 @@ public class AnyObjectDataBinderImpl extends AbstractAnyDataBinder implements An
                         anyObject.getRelationships().remove(relationship);
                         relationship.setLeftEnd(null);
 
-                        toBeDeprovisioned.addAll(relationship.getRightEnd().getResourceKeys());
+                        toBeDeprovisioned.addAll(
+                                anyObjectDAO.findAllResourceKeys(relationship.getRightEnd().getKey()));
                     }
 
                     if (patch.getOperation() == PatchOperation.ADD_REPLACE) {
@@ -336,7 +336,7 @@ public class AnyObjectDataBinderImpl extends AbstractAnyDataBinder implements An
 
                                 anyObject.add(relationship);
 
-                                toBeProvisioned.addAll(otherEnd.getResourceKeys());
+                                toBeProvisioned.addAll(anyObjectDAO.findAllResourceKeys(otherEnd.getKey()));
                             } else {
                                 LOG.error("{} cannot be assigned to {}", otherEnd, anyObject);
 
@@ -370,7 +370,7 @@ public class AnyObjectDataBinderImpl extends AbstractAnyDataBinder implements An
                         attr.setOwner(null);
                     }
 
-                    toBeDeprovisioned.addAll(membership.getRightEnd().getResourceKeys());
+                    toBeDeprovisioned.addAll(groupDAO.findAllResourceKeys(membership.getRightEnd().getKey()));
                 }
 
                 if (membPatch.getOperation() == PatchOperation.ADD_REPLACE) {
@@ -412,7 +412,7 @@ public class AnyObjectDataBinderImpl extends AbstractAnyDataBinder implements An
                             scce.addException(invalidValues);
                         }
 
-                        toBeProvisioned.addAll(group.getResourceKeys());
+                        toBeProvisioned.addAll(groupDAO.findAllResourceKeys(group.getKey()));
                     } else {
                         LOG.error("{} cannot be assigned to {}", group, anyObject);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/GroupDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/GroupDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/GroupDataBinderImpl.java
index 1d25c08..467874d 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/GroupDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/GroupDataBinderImpl.java
@@ -199,7 +199,7 @@ public class GroupDataBinderImpl extends AbstractAnyDataBinder implements GroupD
 
         // name
         if (groupPatch.getName() != null && StringUtils.isNotBlank(groupPatch.getName().getValue())) {
-            propByRes.addAll(ResourceOperation.UPDATE, group.getResourceKeys());
+            propByRes.addAll(ResourceOperation.UPDATE, groupDAO.findAllResourceKeys(group.getKey()));
 
             group.setName(groupPatch.getName().getValue());
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
index e9369c7..3721371 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/UserDataBinderImpl.java
@@ -315,8 +315,7 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
 
         SyncopeClientCompositeException scce = SyncopeClientException.buildComposite();
 
-        Collection<String> currentResources = CollectionUtils.collect(
-                userDAO.findAllResources(user), EntityUtils.keyTransformer());
+        Collection<String> currentResources = userDAO.findAllResourceKeys(user.getKey());
 
         // fetch connObjectKeys before update
         Map<String, String> oldConnObjectKeys = getConnObjectKeys(user);
@@ -413,7 +412,8 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
                         user.getRelationships().remove(relationship);
                         relationship.setLeftEnd(null);
 
-                        toBeDeprovisioned.addAll(relationship.getRightEnd().getResourceKeys());
+                        toBeDeprovisioned.addAll(
+                                anyObjectDAO.findAllResourceKeys(relationship.getRightEnd().getKey()));
                     }
 
                     if (patch.getOperation() == PatchOperation.ADD_REPLACE) {
@@ -428,7 +428,7 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
 
                             user.add(relationship);
 
-                            toBeProvisioned.addAll(otherEnd.getResourceKeys());
+                            toBeProvisioned.addAll(anyObjectDAO.findAllResourceKeys(otherEnd.getKey()));
                         } else {
                             LOG.error("{} cannot be assigned to {}", otherEnd, user);
 
@@ -462,7 +462,7 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
                         attr.setMembership(null);
                     }
 
-                    toBeDeprovisioned.addAll(membership.getRightEnd().getResourceKeys());
+                    toBeDeprovisioned.addAll(groupDAO.findAllResourceKeys(membership.getRightEnd().getKey()));
                 }
 
                 if (membPatch.getOperation() == PatchOperation.ADD_REPLACE) {
@@ -504,7 +504,7 @@ public class UserDataBinderImpl extends AbstractAnyDataBinder implements UserDat
                             scce.addException(invalidValues);
                         }
 
-                        toBeProvisioned.addAll(group.getResourceKeys());
+                        toBeProvisioned.addAll(groupDAO.findAllResourceKeys(group.getKey()));
 
                         // SYNCOPE-686: if password is invertible and we are adding resources with password mapping,
                         // ensure that they are counted for password propagation

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/GroupMemberProvisionTaskJobDelegate.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/GroupMemberProvisionTaskJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/GroupMemberProvisionTaskJobDelegate.java
index f324359..4868bbc 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/GroupMemberProvisionTaskJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/GroupMemberProvisionTaskJobDelegate.java
@@ -18,6 +18,7 @@
  */
 package org.apache.syncope.core.provisioning.java.job;
 
+import java.util.Collection;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.to.PropagationStatus;
@@ -84,10 +85,11 @@ public class GroupMemberProvisionTaskJobDelegate extends AbstractSchedTaskJobDel
         MembershipCond membershipCond = new MembershipCond();
         membershipCond.setGroup(groupKey);
         List<User> users = searchDAO.search(SearchCond.getLeafCond(membershipCond), AnyTypeKind.USER);
+        Collection<String> groupResourceKeys = groupDAO.findAllResourceKeys(groupKey);
         for (User user : users) {
             List<PropagationStatus> statuses = actionType == BulkMembersActionType.DEPROVISION
-                    ? userProvisioningManager.deprovision(user.getKey(), group.getResourceKeys(), false)
-                    : userProvisioningManager.provision(user.getKey(), true, null, group.getResourceKeys(), false);
+                    ? userProvisioningManager.deprovision(user.getKey(), groupResourceKeys, false)
+                    : userProvisioningManager.provision(user.getKey(), true, null, groupResourceKeys, false);
             for (PropagationStatus status : statuses) {
                 result.append("User ").append(user.getKey()).append('\t').
                         append("Resource ").append(status.getResource()).append('\t').
@@ -105,8 +107,8 @@ public class GroupMemberProvisionTaskJobDelegate extends AbstractSchedTaskJobDel
         List<AnyObject> anyObjects = searchDAO.search(SearchCond.getLeafCond(membershipCond), AnyTypeKind.ANY_OBJECT);
         for (AnyObject anyObject : anyObjects) {
             List<PropagationStatus> statuses = actionType == BulkMembersActionType.DEPROVISION
-                    ? anyObjectProvisioningManager.deprovision(anyObject.getKey(), group.getResourceKeys(), false)
-                    : anyObjectProvisioningManager.provision(anyObject.getKey(), group.getResourceKeys(), false);
+                    ? anyObjectProvisioningManager.deprovision(anyObject.getKey(), groupResourceKeys, false)
+                    : anyObjectProvisioningManager.provision(anyObject.getKey(), groupResourceKeys, false);
 
             for (PropagationStatus status : statuses) {
                 result.append(anyObject.getType().getKey()).append(' ').append(anyObject.getKey()).append('\t').

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
index 762c78b..395a5a8 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/AbstractPropagationTaskExecutor.java
@@ -323,7 +323,7 @@ public abstract class AbstractPropagationTaskExecutor implements PropagationTask
 
                     case GROUP:
                         try {
-                            resources = groupDAO.authFind(task.getEntityKey()).getResourceKeys();
+                            resources = groupDAO.findAllResourceKeys(task.getEntityKey());
                         } catch (Exception e) {
                             LOG.error("Could not read group {}", task.getEntityKey(), e);
                         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java
index d5f8d3d..c392db2 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/LDAPMembershipPropagationActions.java
@@ -86,7 +86,7 @@ public class LDAPMembershipPropagationActions extends DefaultPropagationActions
                 List<String> groupConnObjectLinks = new ArrayList<>();
                 for (String groupKey : userDAO.findAllGroupKeys(user)) {
                     Group group = groupDAO.find(groupKey);
-                    if (group != null && group.getResourceKeys().contains(task.getResource().getKey())) {
+                    if (group != null && groupDAO.findAllResourceKeys(groupKey).contains(task.getResource().getKey())) {
                         LOG.debug("Evaluating connObjectLink for {}", group);
 
                         JexlContext jexlContext = new MapContext();

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java
index 6b459d5..fdeb848 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PropagationManagerImpl.java
@@ -53,15 +53,11 @@ import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
 import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.persistence.api.entity.VirSchema;
-import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
-import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
 import org.apache.syncope.core.persistence.api.entity.resource.OrgUnit;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
-import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.MappingManager;
-import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
 import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 import org.identityconnectors.framework.common.objects.Attribute;
 import org.identityconnectors.framework.common.objects.AttributeBuilder;
@@ -118,7 +114,7 @@ public class PropagationManagerImpl implements PropagationManager {
     @Autowired
     protected AnyUtilsFactory anyUtilsFactory;
 
-    protected Any<?> find(final AnyTypeKind kind, final String key) {
+    protected AnyDAO<? extends Any<?>> dao(final AnyTypeKind kind) {
         AnyDAO<? extends Any<?>> dao;
         switch (kind) {
             case ANY_OBJECT:
@@ -134,7 +130,7 @@ public class PropagationManagerImpl implements PropagationManager {
                 dao = userDAO;
         }
 
-        return dao.authFind(key);
+        return dao;
     }
 
     @Override
@@ -145,7 +141,7 @@ public class PropagationManagerImpl implements PropagationManager {
             final Collection<AttrTO> vAttrs,
             final Collection<String> noPropResourceKeys) {
 
-        return getCreateTasks(find(kind, key), null, null, propByRes, vAttrs, noPropResourceKeys);
+        return getCreateTasks(dao(kind).authFind(key), null, null, propByRes, vAttrs, noPropResourceKeys);
     }
 
     @Override
@@ -189,7 +185,7 @@ public class PropagationManagerImpl implements PropagationManager {
             final Collection<AttrTO> vAttrs,
             final Collection<String> noPropResourceKeys) {
 
-        return getUpdateTasks(find(kind, key), null, changePwd, enable, propByRes, vAttrs, noPropResourceKeys);
+        return getUpdateTasks(dao(kind).authFind(key), null, changePwd, enable, propByRes, vAttrs, noPropResourceKeys);
     }
 
     @Override
@@ -288,12 +284,12 @@ public class PropagationManagerImpl implements PropagationManager {
             final PropagationByResource propByRes,
             final Collection<String> noPropResourceKeys) {
 
-        Any<?> any = find(kind, key);
+        Any<?> any = dao(kind).authFind(key);
 
         PropagationByResource localPropByRes = new PropagationByResource();
 
         if (propByRes == null || propByRes.isEmpty()) {
-            localPropByRes.addAll(ResourceOperation.DELETE, any.getResourceKeys());
+            localPropByRes.addAll(ResourceOperation.DELETE, dao(kind).findAllResourceKeys(key));
         } else {
             localPropByRes.merge(propByRes);
         }
@@ -340,15 +336,7 @@ public class PropagationManagerImpl implements PropagationManager {
         Set<String> virtualResources = new HashSet<>();
         virtualResources.addAll(propByRes.get(ResourceOperation.CREATE));
         virtualResources.addAll(propByRes.get(ResourceOperation.UPDATE));
-        if (any instanceof User) {
-            virtualResources.addAll(CollectionUtils.collect(
-                    userDAO.findAllResources((User) any), EntityUtils.keyTransformer()));
-        } else if (any instanceof AnyObject) {
-            virtualResources.addAll(CollectionUtils.collect(
-                    anyObjectDAO.findAllResources((AnyObject) any), EntityUtils.keyTransformer()));
-        } else {
-            virtualResources.addAll(((Group) any).getResourceKeys());
-        }
+        virtualResources.addAll(dao(any.getType().getKind()).findAllResourceKeys(any.getKey()));
 
         Map<String, Set<Attribute>> vAttrMap = new HashMap<>();
         for (AttrTO vAttr : CollectionUtils.emptyIfNull(vAttrs)) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java
index 7fbfe4e..7095739 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPushResultHandler.java
@@ -24,7 +24,6 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.syncope.common.lib.patch.AnyPatch;
 import org.apache.syncope.common.lib.patch.StringPatchItem;
@@ -44,7 +43,6 @@ import org.apache.syncope.core.provisioning.api.pushpull.PushActions;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.AnyUtils;
 import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
-import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.resource.Item;
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
@@ -56,7 +54,6 @@ import org.apache.syncope.core.provisioning.api.notification.NotificationManager
 import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter;
 import org.apache.syncope.core.provisioning.api.pushpull.IgnoreProvisionException;
 import org.apache.syncope.core.provisioning.api.pushpull.SyncopePushResultHandler;
-import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
 import org.apache.syncope.core.provisioning.java.job.AfterHandlingJob;
 import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 import org.identityconnectors.framework.common.objects.AttributeBuilder;
@@ -103,15 +100,13 @@ public abstract class AbstractPushResultHandler extends AbstractSyncopeResultHan
         Collection<String> resourceKeys;
         if (any instanceof User) {
             changepwd = true;
-            resourceKeys = CollectionUtils.collect(
-                    userDAO.findAllResources((User) any), EntityUtils.keyTransformer());
+            resourceKeys = userDAO.findAllResourceKeys(any.getKey());
         } else if (any instanceof AnyObject) {
             changepwd = false;
-            resourceKeys = CollectionUtils.collect(
-                    anyObjectDAO.findAllResources((AnyObject) any), EntityUtils.keyTransformer());
+            resourceKeys = anyObjectDAO.findAllResourceKeys(any.getKey());
         } else {
             changepwd = false;
-            resourceKeys = ((Group) any).getResourceKeys();
+            resourceKeys = groupDAO.findAllResourceKeys(any.getKey());
         }
 
         List<String> noPropResources = new ArrayList<>(resourceKeys);

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java
index 8d8d566..3ad12eb 100644
--- a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java
+++ b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java
@@ -73,7 +73,6 @@ import org.apache.syncope.core.persistence.api.attrvalue.validation.ParsingValid
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.WorkflowResult;
-import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
 import org.apache.syncope.core.workflow.activiti.spring.DomainProcessEngine;
 import org.apache.syncope.core.workflow.api.WorkflowDefinitionFormat;
 import org.apache.syncope.core.workflow.api.WorkflowException;
@@ -418,9 +417,7 @@ public class ActivitiUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
         doExecuteTask(user, "delete", null);
 
         PropagationByResource propByRes = new PropagationByResource();
-        propByRes.set(
-                ResourceOperation.DELETE,
-                CollectionUtils.collect(userDAO.findAllResources(user), EntityUtils.keyTransformer()));
+        propByRes.set(ResourceOperation.DELETE, userDAO.findAllResourceKeys(user.getKey()));
 
         saveForFormSubmit(user, null, propByRes);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/task/PasswordReset.java
----------------------------------------------------------------------
diff --git a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/task/PasswordReset.java b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/task/PasswordReset.java
index d3caac6..8a33bfb 100644
--- a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/task/PasswordReset.java
+++ b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/task/PasswordReset.java
@@ -18,14 +18,12 @@
  */
 package org.apache.syncope.core.workflow.activiti.task;
 
-import org.apache.commons.collections4.CollectionUtils;
 import org.apache.syncope.common.lib.patch.PasswordPatch;
 import org.apache.syncope.common.lib.patch.UserPatch;
 import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
-import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
 import org.apache.syncope.core.workflow.api.WorkflowException;
 import org.apache.syncope.core.workflow.activiti.ActivitiUserWorkflowAdapter;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -59,7 +57,7 @@ public class PasswordReset extends AbstractActivitiServiceTask {
         userPatch.setKey(user.getKey());
         userPatch.setPassword(new PasswordPatch.Builder().
                 onSyncope(true).
-                resources(CollectionUtils.collect(userDAO.findAllResources(user), EntityUtils.keyTransformer())).
+                resources(userDAO.findAllResourceKeys(user.getKey())).
                 value(password).build());
 
         PropagationByResource propByRes = dataBinder.update(user, userPatch);

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java
index ab1766d..6552449 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java
@@ -73,7 +73,6 @@ import org.apache.syncope.core.persistence.api.attrvalue.validation.ParsingValid
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.WorkflowResult;
-import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
 import org.apache.syncope.core.workflow.flowable.spring.DomainProcessEngine;
 import org.apache.syncope.core.workflow.api.WorkflowDefinitionFormat;
 import org.apache.syncope.core.workflow.api.WorkflowException;
@@ -418,9 +417,7 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
         doExecuteTask(user, "delete", null);
 
         PropagationByResource propByRes = new PropagationByResource();
-        propByRes.set(
-                ResourceOperation.DELETE,
-                CollectionUtils.collect(userDAO.findAllResources(user), EntityUtils.keyTransformer()));
+        propByRes.set(ResourceOperation.DELETE, userDAO.findAllResourceKeys(user.getKey()));
 
         saveForFormSubmit(user, null, propByRes);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/PasswordReset.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/PasswordReset.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/PasswordReset.java
index 61d9d17..017fcc6 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/PasswordReset.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/PasswordReset.java
@@ -18,14 +18,12 @@
  */
 package org.apache.syncope.core.workflow.flowable.task;
 
-import org.apache.commons.collections4.CollectionUtils;
 import org.apache.syncope.common.lib.patch.PasswordPatch;
 import org.apache.syncope.common.lib.patch.UserPatch;
 import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
-import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
 import org.apache.syncope.core.workflow.api.WorkflowException;
 import org.apache.syncope.core.workflow.flowable.FlowableUserWorkflowAdapter;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -59,7 +57,7 @@ public class PasswordReset extends AbstractFlowableServiceTask {
         userPatch.setKey(user.getKey());
         userPatch.setPassword(new PasswordPatch.Builder().
                 onSyncope(true).
-                resources(CollectionUtils.collect(userDAO.findAllResources(user), EntityUtils.keyTransformer())).
+                resources(userDAO.findAllResourceKeys(user.getKey())).
                 value(password).build());
 
         PropagationByResource propByRes = dataBinder.update(user, userPatch);

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java
index 19949eb..86a7330 100644
--- a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java
+++ b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java
@@ -49,7 +49,7 @@ public class DefaultGroupWorkflowAdapter extends AbstractGroupWorkflowAdapter {
         group = groupDAO.save(group);
 
         PropagationByResource propByRes = new PropagationByResource();
-        propByRes.set(ResourceOperation.CREATE, group.getResourceKeys());
+        propByRes.set(ResourceOperation.CREATE, groupDAO.findAllResourceKeys(group.getKey()));
 
         return new WorkflowResult<>(group.getKey(), propByRes, "create");
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java
index f1cf759..de689d6 100644
--- a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java
+++ b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java
@@ -21,7 +21,6 @@ package org.apache.syncope.core.workflow.java;
 import java.io.OutputStream;
 import java.util.Collections;
 import java.util.List;
-import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.patch.PasswordPatch;
@@ -34,7 +33,6 @@ import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.core.persistence.api.dao.ConfDAO;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.WorkflowResult;
-import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
 import org.apache.syncope.core.workflow.api.WorkflowDefinitionFormat;
 import org.apache.syncope.core.workflow.api.WorkflowException;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -151,7 +149,7 @@ public class DefaultUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
         userPatch.setKey(user.getKey());
         userPatch.setPassword(new PasswordPatch.Builder().
                 onSyncope(true).
-                resources(CollectionUtils.collect(userDAO.findAllResources(user), EntityUtils.keyTransformer())).
+                resources(userDAO.findAllResourceKeys(user.getKey())).
                 value(password).build());
 
         return doUpdate(user, userPatch);

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/DeprovisionProducer.java
----------------------------------------------------------------------
diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/DeprovisionProducer.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/DeprovisionProducer.java
index 5b20d11..8d99fdb 100644
--- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/DeprovisionProducer.java
+++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/DeprovisionProducer.java
@@ -82,7 +82,7 @@ public class DeprovisionProducer extends AbstractProducer {
                             AnyTypeKind.GROUP,
                             key,
                             propByRes,
-                            CollectionUtils.removeAll(groupDAO.authFind(key).getResourceKeys(), resources));
+                            CollectionUtils.removeAll(groupDAO.findAllResourceKeys(key), resources));
                     propagationReporter = getPropagationTaskExecutor().execute(tasks, nullPriorityAsync);
                     exchange.getOut().setBody(propagationReporter.getStatuses());
                     break;

http://git-wip-us.apache.org/repos/asf/syncope/blob/892778cf/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchUtils.java
----------------------------------------------------------------------
diff --git a/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchUtils.java b/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchUtils.java
index d9ce84f..9bcea18 100644
--- a/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchUtils.java
+++ b/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchUtils.java
@@ -103,7 +103,7 @@ public class ElasticsearchUtils {
                                 ? userDAO.findAllResourceKeys(any.getKey())
                                 : any instanceof AnyObject
                                         ? anyObjectDAO.findAllResourceKeys(any.getKey())
-                                        : any.getResourceKeys()).
+                                        : groupDAO.findAllResourceKeys(any.getKey())).
                 field("dynRealms",
                         any instanceof User
                                 ? userDAO.findDynRealms(any.getKey())