http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/report/RoleReportletConf.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/report/RoleReportletConf.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/report/RoleReportletConf.java
deleted file mode 100644
index 9f73d3d..0000000
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/report/RoleReportletConf.java
+++ /dev/null
@@ -1,109 +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.common.lib.report;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.util.ArrayList;
-import java.util.List;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElementWrapper;
-import javax.xml.bind.annotation.XmlEnum;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-import org.apache.syncope.common.lib.annotation.FormAttributeField;
-import org.apache.syncope.common.lib.types.IntMappingType;
-
-@XmlRootElement(name = "roleReportletConf")
-@XmlType
-public class RoleReportletConf extends AbstractReportletConf {
-
-    private static final long serialVersionUID = -8488503068032439699L;
-
-    @XmlEnum
-    @XmlType(name = "roleReportletConfFeature")
-    public enum Feature {
-
-        key,
-        name,
-        roleOwner,
-        userOwner,
-        entitlements,
-        users,
-        resources
-
-    }
-
-    @FormAttributeField(userSearch = true)
-    private String matchingCond;
-
-    @FormAttributeField(schema = IntMappingType.RolePlainSchema)
-    private final List<String> plainAttrs = new ArrayList<>();
-
-    @FormAttributeField(schema = IntMappingType.RoleDerivedSchema)
-    private final List<String> derAttrs = new ArrayList<>();
-
-    @FormAttributeField(schema = IntMappingType.RoleVirtualSchema)
-    private final List<String> virAttrs = new ArrayList<>();
-
-    private final List<Feature> features = new ArrayList<>();
-
-    public RoleReportletConf() {
-        super();
-    }
-
-    public RoleReportletConf(final String name) {
-        super(name);
-    }
-
-    @XmlElementWrapper(name = "plainAttributes")
-    @XmlElement(name = "plainAttribute")
-    @JsonProperty("plainAttributes")
-    public List<String> getPlainAttrs() {
-        return plainAttrs;
-    }
-
-    @XmlElementWrapper(name = "derivedAttributes")
-    @XmlElement(name = "attribute")
-    @JsonProperty("derivedAttributes")
-    public List<String> getDerAttrs() {
-        return derAttrs;
-    }
-
-    @XmlElementWrapper(name = "virtualAttributes")
-    @XmlElement(name = "attribute")
-    @JsonProperty("virtualAttributes")
-    public List<String> getVirAttrs() {
-        return virAttrs;
-    }
-
-    @XmlElementWrapper(name = "features")
-    @XmlElement(name = "feature")
-    @JsonProperty("features")
-    public List<Feature> getFeatures() {
-        return features;
-    }
-
-    public String getMatchingCond() {
-        return matchingCond;
-    }
-
-    public void setMatchingCond(final String matchingCond) {
-        this.matchingCond = matchingCond;
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/report/StaticReportletConf.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/report/StaticReportletConf.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/report/StaticReportletConf.java
index 9160089..6d867b2 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/report/StaticReportletConf.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/report/StaticReportletConf.java
@@ -60,7 +60,7 @@ public class StaticReportletConf extends 
AbstractReportletConf {
                 : new Date(dateField.getTime());
     }
 
-    public void setDateField(Date dateField) {
+    public void setDateField(final Date dateField) {
         this.dateField = dateField == null
                 ? null
                 : new Date(dateField.getTime());
@@ -70,7 +70,7 @@ public class StaticReportletConf extends 
AbstractReportletConf {
         return doubleField;
     }
 
-    public void setDoubleField(Double doubleField) {
+    public void setDoubleField(final Double doubleField) {
         this.doubleField = doubleField;
     }
 
@@ -85,7 +85,7 @@ public class StaticReportletConf extends 
AbstractReportletConf {
         return longField;
     }
 
-    public void setLongField(Long longField) {
+    public void setLongField(final Long longField) {
         this.longField = longField;
     }
 
@@ -93,7 +93,7 @@ public class StaticReportletConf extends 
AbstractReportletConf {
         return stringField;
     }
 
-    public void setStringField(String stringField) {
+    public void setStringField(final String stringField) {
         this.stringField = stringField;
     }
 
@@ -101,7 +101,7 @@ public class StaticReportletConf extends 
AbstractReportletConf {
         return traceLevel;
     }
 
-    public void setTraceLevel(TraceLevel traceLevel) {
+    public void setTraceLevel(final TraceLevel traceLevel) {
         this.traceLevel = traceLevel;
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/report/UserReportletConf.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/report/UserReportletConf.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/report/UserReportletConf.java
index 78735eb..ce783ff 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/report/UserReportletConf.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/report/UserReportletConf.java
@@ -21,18 +21,15 @@ package org.apache.syncope.common.lib.report;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import java.util.ArrayList;
 import java.util.List;
-
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlEnum;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
-import org.apache.syncope.common.lib.annotation.FormAttributeField;
-import org.apache.syncope.common.lib.types.IntMappingType;
 
 @XmlRootElement(name = "userReportletConf")
 @XmlType
-public class UserReportletConf extends AbstractReportletConf {
+public class UserReportletConf extends AbstractSubjectReportletConf {
 
     @XmlEnum
     @XmlType(name = "userReportletConfFeature")
@@ -54,18 +51,6 @@ public class UserReportletConf extends AbstractReportletConf 
{
 
     private static final long serialVersionUID = 6602717600064602764L;
 
-    @FormAttributeField(userSearch = true)
-    private String matchingCond;
-
-    @FormAttributeField(schema = IntMappingType.UserPlainSchema)
-    private final List<String> plainAttrs = new ArrayList<>();
-
-    @FormAttributeField(schema = IntMappingType.UserDerivedSchema)
-    private final List<String> derAttrs = new ArrayList<>();
-
-    @FormAttributeField(schema = IntMappingType.UserVirtualSchema)
-    private final List<String> virAttrs = new ArrayList<>();
-
     private final List<Feature> features = new ArrayList<>();
 
     public UserReportletConf() {
@@ -76,27 +61,6 @@ public class UserReportletConf extends AbstractReportletConf 
{
         super(name);
     }
 
-    @XmlElementWrapper(name = "plainAttributes")
-    @XmlElement(name = "plainAttribute")
-    @JsonProperty("plainAttributes")
-    public List<String> getPlainAttrs() {
-        return plainAttrs;
-    }
-
-    @XmlElementWrapper(name = "derivedAttributes")
-    @XmlElement(name = "attribute")
-    @JsonProperty("derivedAttributes")
-    public List<String> getDerAttrs() {
-        return derAttrs;
-    }
-
-    @XmlElementWrapper(name = "virtualAttributes")
-    @XmlElement(name = "attribute")
-    @JsonProperty("virtualAttributes")
-    public List<String> getVirAttrs() {
-        return virAttrs;
-    }
-
     @XmlElementWrapper(name = "features")
     @XmlElement(name = "feature")
     @JsonProperty("features")
@@ -104,11 +68,4 @@ public class UserReportletConf extends 
AbstractReportletConf {
         return features;
     }
 
-    public String getMatchingCond() {
-        return matchingCond;
-    }
-
-    public void setMatchingCond(final String matchingCond) {
-        this.matchingCond = matchingCond;
-    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/search/AbstractFiqlSearchConditionBuilder.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/AbstractFiqlSearchConditionBuilder.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/AbstractFiqlSearchConditionBuilder.java
new file mode 100644
index 0000000..9279e72
--- /dev/null
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/AbstractFiqlSearchConditionBuilder.java
@@ -0,0 +1,112 @@
+/*
+ * 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.common.lib.search;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.cxf.jaxrs.ext.search.SearchUtils;
+import org.apache.cxf.jaxrs.ext.search.client.CompleteCondition;
+import org.apache.cxf.jaxrs.ext.search.client.FiqlSearchConditionBuilder;
+import org.apache.cxf.jaxrs.ext.search.fiql.FiqlParser;
+
+public abstract class AbstractFiqlSearchConditionBuilder extends 
FiqlSearchConditionBuilder {
+
+    public static final Map<String, String> CONTEXTUAL_PROPERTIES = new 
HashMap<String, String>() {
+
+        private static final long serialVersionUID = 3109256773218160485L;
+
+        {
+            put(SearchUtils.LAX_PROPERTY_MATCH, "true");
+        }
+    };
+
+    protected AbstractFiqlSearchConditionBuilder() {
+        super();
+    }
+
+    protected AbstractFiqlSearchConditionBuilder(final Map<String, String> 
properties) {
+        super(properties);
+    }
+
+    @Override
+    protected Builder newBuilderInstance() {
+        return new Builder(properties);
+    }
+
+    public SyncopeProperty is(final String property) {
+        return newBuilderInstance().is(property);
+    }
+
+    public CompleteCondition isNull(final String property) {
+        return newBuilderInstance().is(property).nullValue();
+    }
+
+    public CompleteCondition isNotNull(final String property) {
+        return newBuilderInstance().is(property).notNullValue();
+    }
+
+    public CompleteCondition hasResources(final String resource, final 
String... moreResources) {
+        return 
newBuilderInstance().is(SpecialAttr.RESOURCES.toString()).hasResources(resource,
 moreResources);
+    }
+
+    public CompleteCondition hasNotResources(final String resource, final 
String... moreResources) {
+        return 
newBuilderInstance().is(SpecialAttr.RESOURCES.toString()).hasNotResources(resource,
 moreResources);
+    }
+
+    protected static class Builder extends FiqlSearchConditionBuilder.Builder
+            implements SyncopeProperty, CompleteCondition {
+
+        protected Builder(final Map<String, String> properties) {
+            super(properties);
+        }
+
+        protected Builder(final Builder parent) {
+            super(parent);
+        }
+
+        @Override
+        public SyncopeProperty is(final String property) {
+            Builder b = new Builder(this);
+            b.result = property;
+            return b;
+        }
+
+        @Override
+        public CompleteCondition nullValue() {
+            return condition(FiqlParser.EQ, SpecialAttr.NULL);
+        }
+
+        @Override
+        public CompleteCondition notNullValue() {
+            return condition(FiqlParser.NEQ, SpecialAttr.NULL);
+        }
+
+        @Override
+        public CompleteCondition hasResources(final String resource, final 
String... moreResources) {
+            this.result = SpecialAttr.RESOURCES.toString();
+            return condition(FiqlParser.EQ, resource, (Object[]) 
moreResources);
+        }
+
+        @Override
+        public CompleteCondition hasNotResources(final String resource, final 
String... moreResources) {
+            this.result = SpecialAttr.RESOURCES.toString();
+            return condition(FiqlParser.NEQ, resource, (Object[]) 
moreResources);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/search/GroupFiqlSearchConditionBuilder.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/GroupFiqlSearchConditionBuilder.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/GroupFiqlSearchConditionBuilder.java
new file mode 100644
index 0000000..4822d2a
--- /dev/null
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/GroupFiqlSearchConditionBuilder.java
@@ -0,0 +1,90 @@
+/*
+ * 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.common.lib.search;
+
+import java.util.Map;
+import org.apache.cxf.jaxrs.ext.search.client.CompleteCondition;
+import org.apache.cxf.jaxrs.ext.search.fiql.FiqlParser;
+
+/**
+ * Extends <tt>SyncopeFiqlSearchConditionBuilder</tt> by providing some 
additional facilities for searching
+ * groups in Syncope.
+ */
+public class GroupFiqlSearchConditionBuilder extends 
AbstractFiqlSearchConditionBuilder {
+
+    public GroupFiqlSearchConditionBuilder() {
+        super();
+    }
+
+    public GroupFiqlSearchConditionBuilder(final Map<String, String> 
properties) {
+        super(properties);
+    }
+
+    @Override
+    protected Builder newBuilderInstance() {
+        return new Builder(properties);
+    }
+
+    @Override
+    public GroupProperty is(final String property) {
+        return newBuilderInstance().is(property);
+    }
+
+    public CompleteCondition hasEntitlements(final String entitlement, final 
String... moreEntitlements) {
+        return newBuilderInstance().is(SpecialAttr.ENTITLEMENTS.toString()).
+                hasEntitlements(entitlement, moreEntitlements);
+    }
+
+    public CompleteCondition hasNotEntitlements(final String entitlement, 
final String... moreEntitlements) {
+        return newBuilderInstance().is(SpecialAttr.ENTITLEMENTS.toString()).
+                hasNotEntitlements(entitlement, moreEntitlements);
+    }
+
+    protected static class Builder extends 
AbstractFiqlSearchConditionBuilder.Builder
+            implements GroupProperty, CompleteCondition {
+
+        public Builder(final Map<String, String> properties) {
+            super(properties);
+        }
+
+        public Builder(final Builder parent) {
+            super(parent);
+        }
+
+        @Override
+        public GroupProperty is(final String property) {
+            Builder b = new Builder(this);
+            b.result = property;
+            return b;
+        }
+
+        @Override
+        public CompleteCondition hasEntitlements(final String entitlement, 
final String... moreEntitlements) {
+            this.result = SpecialAttr.ENTITLEMENTS.toString();
+            return condition(FiqlParser.EQ, entitlement, (Object[]) 
moreEntitlements);
+        }
+
+        @Override
+        public CompleteCondition hasNotEntitlements(final String entitlement, 
final String... moreEntitlements) {
+            this.result = SpecialAttr.ENTITLEMENTS.toString();
+            return condition(FiqlParser.NEQ, entitlement, (Object[]) 
moreEntitlements);
+        }
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/search/GroupProperty.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/GroupProperty.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/GroupProperty.java
new file mode 100644
index 0000000..7868016
--- /dev/null
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/GroupProperty.java
@@ -0,0 +1,29 @@
+/*
+ * 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.common.lib.search;
+
+import org.apache.cxf.jaxrs.ext.search.client.CompleteCondition;
+
+public interface GroupProperty extends SyncopeProperty {
+
+    CompleteCondition hasEntitlements(String entitlement, String... 
moreEntitlements);
+
+    CompleteCondition hasNotEntitlements(String entitlement, String... 
moreEntitlements);
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/search/RoleFiqlSearchConditionBuilder.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/RoleFiqlSearchConditionBuilder.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/RoleFiqlSearchConditionBuilder.java
deleted file mode 100644
index b6cbb6d..0000000
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/RoleFiqlSearchConditionBuilder.java
+++ /dev/null
@@ -1,90 +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.common.lib.search;
-
-import java.util.Map;
-import org.apache.cxf.jaxrs.ext.search.client.CompleteCondition;
-import org.apache.cxf.jaxrs.ext.search.fiql.FiqlParser;
-
-/**
- * Extends <tt>SyncopeFiqlSearchConditionBuilder</tt> by providing some 
additional facilities for searching
- * roles in Syncope.
- */
-public class RoleFiqlSearchConditionBuilder extends 
SyncopeFiqlSearchConditionBuilder {
-
-    public RoleFiqlSearchConditionBuilder() {
-        super();
-    }
-
-    public RoleFiqlSearchConditionBuilder(final Map<String, String> 
properties) {
-        super(properties);
-    }
-
-    @Override
-    protected Builder newBuilderInstance() {
-        return new Builder(properties);
-    }
-
-    @Override
-    public RoleProperty is(final String property) {
-        return newBuilderInstance().is(property);
-    }
-
-    public CompleteCondition hasEntitlements(final String entitlement, final 
String... moreEntitlements) {
-        return newBuilderInstance().is(SpecialAttr.ENTITLEMENTS.toString()).
-                hasEntitlements(entitlement, moreEntitlements);
-    }
-
-    public CompleteCondition hasNotEntitlements(final String entitlement, 
final String... moreEntitlements) {
-        return newBuilderInstance().is(SpecialAttr.ENTITLEMENTS.toString()).
-                hasNotEntitlements(entitlement, moreEntitlements);
-    }
-
-    protected static class Builder extends 
SyncopeFiqlSearchConditionBuilder.Builder
-            implements RoleProperty, CompleteCondition {
-
-        public Builder(final Map<String, String> properties) {
-            super(properties);
-        }
-
-        public Builder(final Builder parent) {
-            super(parent);
-        }
-
-        @Override
-        public RoleProperty is(final String property) {
-            Builder b = new Builder(this);
-            b.result = property;
-            return b;
-        }
-
-        @Override
-        public CompleteCondition hasEntitlements(final String entitlement, 
final String... moreEntitlements) {
-            this.result = SpecialAttr.ENTITLEMENTS.toString();
-            return condition(FiqlParser.EQ, entitlement, (Object[]) 
moreEntitlements);
-        }
-
-        @Override
-        public CompleteCondition hasNotEntitlements(final String entitlement, 
final String... moreEntitlements) {
-            this.result = SpecialAttr.ENTITLEMENTS.toString();
-            return condition(FiqlParser.NEQ, entitlement, (Object[]) 
moreEntitlements);
-        }
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/search/RoleProperty.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/RoleProperty.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/RoleProperty.java
deleted file mode 100644
index 433ed11..0000000
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/RoleProperty.java
+++ /dev/null
@@ -1,29 +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.common.lib.search;
-
-import org.apache.cxf.jaxrs.ext.search.client.CompleteCondition;
-
-public interface RoleProperty extends SyncopeProperty {
-
-    CompleteCondition hasEntitlements(String entitlement, String... 
moreEntitlements);
-
-    CompleteCondition hasNotEntitlements(String entitlement, String... 
moreEntitlements);
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/search/SearchableFields.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/SearchableFields.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/SearchableFields.java
index 4945cca..7a27a2b 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/SearchableFields.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/SearchableFields.java
@@ -26,23 +26,23 @@ import java.util.List;
 import java.util.Map;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.syncope.common.lib.to.AbstractAttributableTO;
-import org.apache.syncope.common.lib.to.RoleTO;
+import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.SubjectType;
 
-public class SearchableFields {
+public final class SearchableFields {
 
-    protected static final String[] ATTRIBUTES_NOTINCLUDED = {
+    private static final String[] ATTRIBUTES_NOTINCLUDED = {
         "serialVersionUID", "password"
     };
 
-    public static final List<String> get(final SubjectType subjectType) {
+    public static List<String> get(final SubjectType subjectType) {
         return get(subjectType == SubjectType.USER
                 ? UserTO.class
-                : RoleTO.class);
+                : GroupTO.class);
     }
 
-    public static final List<String> get(final Class<? extends 
AbstractAttributableTO> attributableRef) {
+    public static List<String> get(final Class<? extends 
AbstractAttributableTO> attributableRef) {
         final List<String> fieldNames = new ArrayList<>();
 
         // loop on class and all superclasses searching for field

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/search/SpecialAttr.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/SpecialAttr.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/SpecialAttr.java
index b4c2f21..22e339e 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/SpecialAttr.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/SpecialAttr.java
@@ -22,7 +22,7 @@ public enum SpecialAttr {
 
     NULL("$null"),
     RESOURCES("$resources"),
-    ROLES("$roles"),
+    GROUPS("$groups"),
     ENTITLEMENTS("$entitlements");
 
     private final String literal;

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeFiqlSearchConditionBuilder.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeFiqlSearchConditionBuilder.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeFiqlSearchConditionBuilder.java
deleted file mode 100644
index 6c710a2..0000000
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeFiqlSearchConditionBuilder.java
+++ /dev/null
@@ -1,110 +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.common.lib.search;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.cxf.jaxrs.ext.search.SearchUtils;
-import org.apache.cxf.jaxrs.ext.search.client.CompleteCondition;
-import org.apache.cxf.jaxrs.ext.search.client.FiqlSearchConditionBuilder;
-import org.apache.cxf.jaxrs.ext.search.fiql.FiqlParser;
-
-public abstract class SyncopeFiqlSearchConditionBuilder extends 
FiqlSearchConditionBuilder {
-
-    public static final Map<String, String> CONTEXTUAL_PROPERTIES;
-
-    static {
-        CONTEXTUAL_PROPERTIES = new HashMap<String, String>();
-        CONTEXTUAL_PROPERTIES.put(SearchUtils.LAX_PROPERTY_MATCH, "true");
-    }
-
-    protected SyncopeFiqlSearchConditionBuilder() {
-        super();
-    }
-
-    protected SyncopeFiqlSearchConditionBuilder(final Map<String, String> 
properties) {
-        super(properties);
-    }
-
-    @Override
-    protected Builder newBuilderInstance() {
-        return new Builder(properties);
-    }
-
-    public SyncopeProperty is(final String property) {
-        return newBuilderInstance().is(property);
-    }
-
-    public CompleteCondition isNull(final String property) {
-        return newBuilderInstance().is(property).nullValue();
-    }
-
-    public CompleteCondition isNotNull(final String property) {
-        return newBuilderInstance().is(property).notNullValue();
-    }
-
-    public CompleteCondition hasResources(final String resource, final 
String... moreResources) {
-        return 
newBuilderInstance().is(SpecialAttr.RESOURCES.toString()).hasResources(resource,
 moreResources);
-    }
-
-    public CompleteCondition hasNotResources(final String resource, final 
String... moreResources) {
-        return 
newBuilderInstance().is(SpecialAttr.RESOURCES.toString()).hasNotResources(resource,
 moreResources);
-    }
-
-    protected static class Builder extends FiqlSearchConditionBuilder.Builder
-            implements SyncopeProperty, CompleteCondition {
-
-        protected Builder(final Map<String, String> properties) {
-            super(properties);
-        }
-
-        protected Builder(final Builder parent) {
-            super(parent);
-        }
-
-        @Override
-        public SyncopeProperty is(final String property) {
-            Builder b = new Builder(this);
-            b.result = property;
-            return b;
-        }
-
-        @Override
-        public CompleteCondition nullValue() {
-            return condition(FiqlParser.EQ, SpecialAttr.NULL);
-        }
-
-        @Override
-        public CompleteCondition notNullValue() {
-            return condition(FiqlParser.NEQ, SpecialAttr.NULL);
-        }
-
-        @Override
-        public CompleteCondition hasResources(final String resource, final 
String... moreResources) {
-            this.result = SpecialAttr.RESOURCES.toString();
-            return condition(FiqlParser.EQ, resource, (Object[]) 
moreResources);
-        }
-
-        @Override
-        public CompleteCondition hasNotResources(final String resource, final 
String... moreResources) {
-            this.result = SpecialAttr.RESOURCES.toString();
-            return condition(FiqlParser.NEQ, resource, (Object[]) 
moreResources);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeProperty.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeProperty.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeProperty.java
index 0f833f8..7673b86 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeProperty.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeProperty.java
@@ -24,12 +24,12 @@ import org.apache.cxf.jaxrs.ext.search.client.Property;
 /**
  * Extension of fluent interface, for {@link 
SyncopeFiqlSearchConditionBuilder}.
  */
-public abstract interface SyncopeProperty extends Property {
+public interface SyncopeProperty extends Property {
 
     CompleteCondition nullValue();
 
     CompleteCondition notNullValue();
-    
+
     CompleteCondition hasResources(String resource, String... moreResources);
 
     CompleteCondition hasNotResources(String resource, String... 
moreResources);

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserFiqlSearchConditionBuilder.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserFiqlSearchConditionBuilder.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserFiqlSearchConditionBuilder.java
index ef16e3d..020866d 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserFiqlSearchConditionBuilder.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserFiqlSearchConditionBuilder.java
@@ -26,7 +26,7 @@ import org.apache.cxf.jaxrs.ext.search.fiql.FiqlParser;
  * Extends <tt>SyncopeFiqlSearchConditionBuilder</tt> by providing some 
additional facilities for searching
  * users in Syncope.
  */
-public class UserFiqlSearchConditionBuilder extends 
SyncopeFiqlSearchConditionBuilder {
+public class UserFiqlSearchConditionBuilder extends 
AbstractFiqlSearchConditionBuilder {
 
     public UserFiqlSearchConditionBuilder() {
         super();
@@ -46,12 +46,12 @@ public class UserFiqlSearchConditionBuilder extends 
SyncopeFiqlSearchConditionBu
         return newBuilderInstance().is(property);
     }
 
-    public CompleteCondition hasRoles(final Long role, final Long... 
moreRoles) {
-        return 
newBuilderInstance().is(SpecialAttr.ROLES.toString()).hasRoles(role, moreRoles);
+    public CompleteCondition inGroups(final Long group, final Long... 
moreGroups) {
+        return 
newBuilderInstance().is(SpecialAttr.GROUPS.toString()).inGroups(group, 
moreGroups);
     }
 
-    public CompleteCondition hasNotRoles(final Long role, final Long... 
moreRoles) {
-        return 
newBuilderInstance().is(SpecialAttr.ROLES.toString()).hasNotRoles(role, 
moreRoles);
+    public CompleteCondition notInGroups(final Long group, final Long... 
moreGroups) {
+        return 
newBuilderInstance().is(SpecialAttr.GROUPS.toString()).notInGroups(group, 
moreGroups);
     }
 
     public CompleteCondition hasResources(final String resource, final 
String... moreResources) {
@@ -62,7 +62,7 @@ public class UserFiqlSearchConditionBuilder extends 
SyncopeFiqlSearchConditionBu
         return 
newBuilderInstance().is(SpecialAttr.RESOURCES.toString()).hasNotResources(resource,
 moreResources);
     }
 
-    protected static class Builder extends 
SyncopeFiqlSearchConditionBuilder.Builder
+    protected static class Builder extends 
AbstractFiqlSearchConditionBuilder.Builder
             implements UserProperty, CompleteCondition {
 
         public Builder(final Map<String, String> properties) {
@@ -81,15 +81,15 @@ public class UserFiqlSearchConditionBuilder extends 
SyncopeFiqlSearchConditionBu
         }
 
         @Override
-        public CompleteCondition hasRoles(final Long role, final Long... 
moreRoles) {
-            this.result = SpecialAttr.ROLES.toString();
-            return condition(FiqlParser.EQ, role, (Object[]) moreRoles);
+        public CompleteCondition inGroups(final Long group, final Long... 
moreGroups) {
+            this.result = SpecialAttr.GROUPS.toString();
+            return condition(FiqlParser.EQ, group, (Object[]) moreGroups);
         }
 
         @Override
-        public CompleteCondition hasNotRoles(final Long role, final Long... 
moreRoles) {
-            this.result = SpecialAttr.ROLES.toString();
-            return condition(FiqlParser.NEQ, role, (Object[]) moreRoles);
+        public CompleteCondition notInGroups(final Long group, final Long... 
moreGroups) {
+            this.result = SpecialAttr.GROUPS.toString();
+            return condition(FiqlParser.NEQ, group, (Object[]) moreGroups);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserProperty.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserProperty.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserProperty.java
index 886f27f..fb4d7d6 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserProperty.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserProperty.java
@@ -22,8 +22,8 @@ import 
org.apache.cxf.jaxrs.ext.search.client.CompleteCondition;
 
 public interface UserProperty extends SyncopeProperty {
 
-    CompleteCondition hasRoles(Long role, Long... moreRoles);
+    CompleteCondition inGroups(Long group, Long... moreGroups);
 
-    CompleteCondition hasNotRoles(Long role, Long... moreRoles);
+    CompleteCondition notInGroups(Long group, Long... moreGroups);
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractExecTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractExecTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractExecTO.java
index 71b735f..eed8453 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractExecTO.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractExecTO.java
@@ -18,12 +18,10 @@
  */
 package org.apache.syncope.common.lib.to;
 
-import java.util.Date;
 import javax.xml.bind.annotation.XmlType;
-import org.apache.syncope.common.lib.AbstractBaseBean;
 
 @XmlType
-public class AbstractExecTO extends AbstractBaseBean {
+public class AbstractExecTO extends AbstractStartEndBean {
 
     private static final long serialVersionUID = -4621191979198357081L;
 
@@ -33,15 +31,11 @@ public class AbstractExecTO extends AbstractBaseBean {
 
     protected String message;
 
-    protected Date startDate;
-
-    protected Date endDate;
-
     public long getKey() {
         return key;
     }
 
-    public void setKey(long key) {
+    public void setKey(final long key) {
         this.key = key;
     }
 
@@ -60,28 +54,4 @@ public class AbstractExecTO extends AbstractBaseBean {
     public void setStatus(final String status) {
         this.status = status;
     }
-
-    public Date getStartDate() {
-        return startDate == null
-                ? null
-                : new Date(startDate.getTime());
-    }
-
-    public void setStartDate(final Date startDate) {
-        if (startDate != null) {
-            this.startDate = new Date(startDate.getTime());
-        }
-    }
-
-    public Date getEndDate() {
-        return endDate == null
-                ? null
-                : new Date(endDate.getTime());
-    }
-
-    public void setEndDate(final Date endDate) {
-        if (endDate != null) {
-            this.endDate = new Date(endDate.getTime());
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractPolicyTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractPolicyTO.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractPolicyTO.java
index 3851f4e..3ecb44f 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractPolicyTO.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractPolicyTO.java
@@ -46,13 +46,13 @@ public abstract class AbstractPolicyTO extends 
AbstractBaseBean {
 
     private final List<String> usedByResources = new ArrayList<>();
 
-    private final List<Long> usedByRoles = new ArrayList<>();
+    private final List<Long> usedByGroups = new ArrayList<>();
 
     public long getKey() {
         return key;
     }
 
-    public void setKey(long key) {
+    public void setKey(final long key) {
         this.key = key;
     }
 
@@ -79,11 +79,11 @@ public abstract class AbstractPolicyTO extends 
AbstractBaseBean {
         return usedByResources;
     }
 
-    @XmlElementWrapper(name = "usedByRoles")
-    @XmlElement(name = "role")
-    @JsonProperty("usedByRoles")
-    public List<Long> getUsedByRoles() {
-        return usedByRoles;
+    @XmlElementWrapper(name = "usedByGroups")
+    @XmlElement(name = "group")
+    @JsonProperty("usedByGroups")
+    public List<Long> getUsedByGroups() {
+        return usedByGroups;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractProvisioningTaskTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractProvisioningTaskTO.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractProvisioningTaskTO.java
index fe92877..c1dcf1c 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractProvisioningTaskTO.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractProvisioningTaskTO.java
@@ -50,13 +50,13 @@ public class AbstractProvisioningTaskTO extends SchedTaskTO 
{
 
     private MatchingRule matchingRule;
 
-    private List<String> actionsClassNames = new ArrayList<>();
+    private final List<String> actionsClassNames = new ArrayList<>();
 
     public String getResource() {
         return resource;
     }
 
-    public void setResource(String resource) {
+    public void setResource(final String resource) {
         this.resource = resource;
     }
 
@@ -64,7 +64,7 @@ public class AbstractProvisioningTaskTO extends SchedTaskTO {
         return performCreate;
     }
 
-    public void setPerformCreate(boolean performCreate) {
+    public void setPerformCreate(final boolean performCreate) {
         this.performCreate = performCreate;
     }
 
@@ -72,7 +72,7 @@ public class AbstractProvisioningTaskTO extends SchedTaskTO {
         return performUpdate;
     }
 
-    public void setPerformUpdate(boolean performUpdate) {
+    public void setPerformUpdate(final boolean performUpdate) {
         this.performUpdate = performUpdate;
     }
 
@@ -80,7 +80,7 @@ public class AbstractProvisioningTaskTO extends SchedTaskTO {
         return performDelete;
     }
 
-    public void setPerformDelete(boolean performDelete) {
+    public void setPerformDelete(final boolean performDelete) {
         this.performDelete = performDelete;
     }
 
@@ -88,7 +88,7 @@ public class AbstractProvisioningTaskTO extends SchedTaskTO {
         return syncStatus;
     }
 
-    public void setSyncStatus(boolean syncStatus) {
+    public void setSyncStatus(final boolean syncStatus) {
         this.syncStatus = syncStatus;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractStartEndBean.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractStartEndBean.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractStartEndBean.java
new file mode 100644
index 0000000..4f3749f
--- /dev/null
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractStartEndBean.java
@@ -0,0 +1,57 @@
+/*
+ * 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.common.lib.to;
+
+import java.util.Date;
+import javax.xml.bind.annotation.XmlType;
+import org.apache.syncope.common.lib.AbstractBaseBean;
+
+@XmlType
+public class AbstractStartEndBean extends AbstractBaseBean {
+
+    private static final long serialVersionUID = 2399577415544539917L;
+
+    protected Date startDate;
+
+    protected Date endDate;
+
+    public Date getStartDate() {
+        return startDate == null
+                ? null
+                : new Date(startDate.getTime());
+    }
+
+    public void setStartDate(final Date startDate) {
+        if (startDate != null) {
+            this.startDate = new Date(startDate.getTime());
+        }
+    }
+
+    public Date getEndDate() {
+        return endDate == null
+                ? null
+                : new Date(endDate.getTime());
+    }
+
+    public void setEndDate(final Date endDate) {
+        if (endDate != null) {
+            this.endDate = new Date(endDate.getTime());
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractTaskTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractTaskTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractTaskTO.java
index eb61493..21e1cb0 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractTaskTO.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractTaskTO.java
@@ -22,20 +22,18 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
 
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlSeeAlso;
 import javax.xml.bind.annotation.XmlType;
-import org.apache.syncope.common.lib.AbstractBaseBean;
 
 @XmlRootElement(name = "abstractTask")
 @XmlType
 @XmlSeeAlso({ PropagationTaskTO.class, SchedTaskTO.class, 
NotificationTaskTO.class })
 @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, 
property = "@class")
-public abstract class AbstractTaskTO extends AbstractBaseBean {
+public abstract class AbstractTaskTO extends AbstractStartEndBean {
 
     private static final long serialVersionUID = 386450127003321197L;
 
@@ -45,10 +43,6 @@ public abstract class AbstractTaskTO extends 
AbstractBaseBean {
 
     private final List<TaskExecTO> executions = new ArrayList<>();
 
-    private Date startDate;
-
-    private Date endDate;
-
     public long getKey() {
         return key;
     }
@@ -71,28 +65,4 @@ public abstract class AbstractTaskTO extends 
AbstractBaseBean {
     public List<TaskExecTO> getExecutions() {
         return executions;
     }
-
-    public Date getStartDate() {
-        return startDate == null
-                ? null
-                : new Date(startDate.getTime());
-    }
-
-    public void setStartDate(final Date startDate) {
-        if (startDate != null) {
-            this.startDate = new Date(startDate.getTime());
-        }
-    }
-
-    public Date getEndDate() {
-        return endDate == null
-                ? null
-                : new Date(endDate.getTime());
-    }
-
-    public void setEndDate(final Date endDate) {
-        if (endDate != null) {
-            this.endDate = new Date(endDate.getTime());
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/BulkActionResult.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/BulkActionResult.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/BulkActionResult.java
index dfe52de..fb34a73 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/BulkActionResult.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/BulkActionResult.java
@@ -111,6 +111,8 @@ public class BulkActionResult extends AbstractBaseBean {
         }
 
         public Result(final String key, final Status value) {
+            super();
+
             this.key = key;
             this.value = value;
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnBundleTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnBundleTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnBundleTO.java
index 87583a4..b62c353 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnBundleTO.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnBundleTO.java
@@ -44,7 +44,7 @@ public class ConnBundleTO extends AbstractBaseBean {
 
     private String version;
 
-    private List<ConnConfPropSchema> properties = new ArrayList<>();
+    private final List<ConnConfPropSchema> properties = new ArrayList<>();
 
     public String getDisplayName() {
         return displayName;

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnIdObjectClassTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnIdObjectClassTO.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnIdObjectClassTO.java
index fd4d0b7..14810bb 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnIdObjectClassTO.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnIdObjectClassTO.java
@@ -49,16 +49,18 @@ public class ConnIdObjectClassTO extends AbstractBaseBean {
         }
     }
 
-    public static ConnIdObjectClassTO ACCOUNT = new 
ConnIdObjectClassTO(DefaultType.ACCOUNT.getSpecialName());
+    public static final ConnIdObjectClassTO ACCOUNT = new 
ConnIdObjectClassTO(DefaultType.ACCOUNT.getSpecialName());
 
-    public static ConnIdObjectClassTO GROUP = new 
ConnIdObjectClassTO(DefaultType.GROUP.getSpecialName());
+    public static final ConnIdObjectClassTO GROUP = new 
ConnIdObjectClassTO(DefaultType.GROUP.getSpecialName());
 
     private String type;
 
     public ConnIdObjectClassTO() {
+        super();
     }
 
     public ConnIdObjectClassTO(final String type) {
+        super();
         this.type = type;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/EventCategoryTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/EventCategoryTO.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/EventCategoryTO.java
index 8e11686..918a4d6 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/EventCategoryTO.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/EventCategoryTO.java
@@ -40,19 +40,22 @@ public class EventCategoryTO extends AbstractBaseBean {
 
     private String subcategory;
 
-    private final List<String> events = new ArrayList<String>();
+    private final List<String> events = new ArrayList<>();
 
     /**
      * Constructor for Type.REST event category.
      */
     public EventCategoryTO() {
-        this.type = AuditElements.EventCategoryType.REST;
+        this(AuditElements.EventCategoryType.REST);
     }
 
     /**
      * Constructor for the given Type event category.
+     *
+     * @param type event category type
      */
     public EventCategoryTO(final AuditElements.EventCategoryType type) {
+        super();
         this.type = type;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupTO.java
new file mode 100644
index 0000000..12455c5
--- /dev/null
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupTO.java
@@ -0,0 +1,258 @@
+/*
+ * 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.common.lib.to;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlRootElement(name = "group")
+@XmlType
+@JsonIgnoreProperties({ "displayName" })
+public class GroupTO extends AbstractSubjectTO {
+
+    private static final long serialVersionUID = -7785920258290147542L;
+
+    private String name;
+
+    private long parent;
+
+    private Long userOwner;
+
+    private Long groupOwner;
+
+    private boolean inheritOwner;
+
+    private boolean inheritTemplates;
+
+    private boolean inheritPlainAttrs;
+
+    private boolean inheritDerAttrs;
+
+    private boolean inheritVirAttrs;
+
+    private boolean inheritPasswordPolicy;
+
+    private boolean inheritAccountPolicy;
+
+    private final List<String> entitlements = new ArrayList<>();
+
+    private final List<String> gPlainAttrTemplates = new ArrayList<>();
+
+    private final List<String> gDerAttrTemplates = new ArrayList<>();
+
+    private final List<String> gVirAttrTemplates = new ArrayList<>();
+
+    private final List<String> mPlainAttrTemplates = new ArrayList<>();
+
+    private final List<String> mDerAttrTemplates = new ArrayList<>();
+
+    private final List<String> mVirAttrTemplates = new ArrayList<>();
+
+    private Long passwordPolicy;
+
+    private Long accountPolicy;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(final String name) {
+        this.name = name;
+    }
+
+    public long getParent() {
+        return parent;
+    }
+
+    public void setParent(final long parent) {
+        this.parent = parent;
+    }
+
+    public Long getUserOwner() {
+        return userOwner;
+    }
+
+    public void setUserOwner(final Long userOwner) {
+        this.userOwner = userOwner;
+    }
+
+    public Long getGroupOwner() {
+        return groupOwner;
+    }
+
+    public void setGroupOwner(final Long groupOwner) {
+        this.groupOwner = groupOwner;
+    }
+
+    public boolean isInheritOwner() {
+        return inheritOwner;
+    }
+
+    public void setInheritOwner(final boolean inheritOwner) {
+        this.inheritOwner = inheritOwner;
+    }
+
+    public boolean isInheritTemplates() {
+        return inheritTemplates;
+    }
+
+    public void setInheritTemplates(final boolean inheritTemplates) {
+        this.inheritTemplates = inheritTemplates;
+    }
+
+    public boolean isInheritPlainAttrs() {
+        return inheritPlainAttrs;
+    }
+
+    public void setInheritPlainAttrs(final boolean inheritPlainAttrs) {
+        this.inheritPlainAttrs = inheritPlainAttrs;
+    }
+
+    public boolean isInheritDerAttrs() {
+        return inheritDerAttrs;
+    }
+
+    public void setInheritDerAttrs(final boolean inheritDerAttrs) {
+        this.inheritDerAttrs = inheritDerAttrs;
+    }
+
+    public boolean isInheritVirAttrs() {
+        return inheritVirAttrs;
+    }
+
+    public void setInheritVirAttrs(final boolean inheritVirAttrs) {
+        this.inheritVirAttrs = inheritVirAttrs;
+    }
+
+    @XmlElementWrapper(name = "entitlements")
+    @XmlElement(name = "entitlement")
+    @JsonProperty("entitlements")
+    public List<String> getEntitlements() {
+        return entitlements;
+    }
+
+    @XmlElementWrapper(name = "gPlainAttrTemplates")
+    @XmlElement(name = "gPlainAttrTemplate")
+    @JsonProperty("gPlainAttrTemplates")
+    public List<String> getGPlainAttrTemplates() {
+        return gPlainAttrTemplates;
+    }
+
+    @XmlElementWrapper(name = "gDerAttrTemplates")
+    @XmlElement(name = "gDerAttrTemplate")
+    @JsonProperty("gDerAttrTemplates")
+    public List<String> getGDerAttrTemplates() {
+        return gDerAttrTemplates;
+    }
+
+    @XmlElementWrapper(name = "gVirAttrTemplates")
+    @XmlElement(name = "gVirAttrTemplate")
+    @JsonProperty("gVirAttrTemplates")
+    public List<String> getGVirAttrTemplates() {
+        return gVirAttrTemplates;
+    }
+
+    @XmlElementWrapper(name = "mPlainAttrTemplates")
+    @XmlElement(name = "mPlainAttrTemplate")
+    @JsonProperty("mPlainAttrTemplates")
+    public List<String> getMPlainAttrTemplates() {
+        return mPlainAttrTemplates;
+    }
+
+    @XmlElementWrapper(name = "mDerAttrTemplates")
+    @XmlElement(name = "mDerAttrTemplate")
+    @JsonProperty("mDerAttrTemplates")
+    public List<String> getMDerAttrTemplates() {
+        return mDerAttrTemplates;
+    }
+
+    @XmlElementWrapper(name = "mVirAttrTemplates")
+    @XmlElement(name = "mVirAttrTemplate")
+    @JsonProperty("mVirAttrTemplates")
+    public List<String> getMVirAttrTemplates() {
+        return mVirAttrTemplates;
+    }
+
+    public Long getPasswordPolicy() {
+        return passwordPolicy;
+    }
+
+    public void setPasswordPolicy(final Long passwordPolicy) {
+        this.passwordPolicy = passwordPolicy;
+    }
+
+    public boolean isInheritPasswordPolicy() {
+        return inheritPasswordPolicy;
+    }
+
+    /**
+     * Specify if password policy must be inherited. In this case eventual 
passwordPolicy occurrence will be ignored.
+     *
+     * @param inheritPasswordPolicy 'true' to inherit policy, false otherwise.
+     */
+    public void setInheritPasswordPolicy(final boolean inheritPasswordPolicy) {
+        this.inheritPasswordPolicy = inheritPasswordPolicy;
+    }
+
+    public Long getAccountPolicy() {
+        return accountPolicy;
+    }
+
+    public void setAccountPolicy(final Long accountPolicy) {
+        this.accountPolicy = accountPolicy;
+    }
+
+    public boolean isInheritAccountPolicy() {
+        return inheritAccountPolicy;
+    }
+
+    /**
+     * Specify if account policy must be inherited. In this case eventual 
accountPolicy occurrence will be ignored.
+     *
+     * @param inheritAccountPolicy 'true' to inherit policy, false otherwise.
+     */
+    public void setInheritAccountPolicy(final boolean inheritAccountPolicy) {
+        this.inheritAccountPolicy = inheritAccountPolicy;
+    }
+
+    public String getDisplayName() {
+        return getKey() + " " + getName();
+    }
+
+    public static long fromDisplayName(final String displayName) {
+        long result = 0;
+        if (displayName != null && !displayName.isEmpty() && 
displayName.indexOf(' ') != -1) {
+            try {
+                result = Long.valueOf(displayName.split(" ")[0]);
+            } catch (NumberFormatException e) {
+                // just to avoid PMD warning about "empty catch block"
+                result = 0;
+            }
+        }
+
+        return result;
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/MappingTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/MappingTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/MappingTO.java
index aea9556..9ee378a 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/MappingTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/MappingTO.java
@@ -58,7 +58,7 @@ public class MappingTO extends AbstractBaseBean {
 
     protected boolean addAccountIdItem(final MappingItemTO accountIdItem) {
         if (IntMappingType.UserVirtualSchema == 
accountIdItem.getIntMappingType()
-                || IntMappingType.RoleVirtualSchema == 
accountIdItem.getIntMappingType()
+                || IntMappingType.GroupVirtualSchema == 
accountIdItem.getIntMappingType()
                 || IntMappingType.MembershipVirtualSchema == 
accountIdItem.getIntMappingType()
                 || IntMappingType.Password == 
accountIdItem.getIntMappingType()) {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/MembershipTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/MembershipTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/MembershipTO.java
index d53e20a..b3007c1 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/MembershipTO.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/MembershipTO.java
@@ -27,23 +27,23 @@ public class MembershipTO extends AbstractAttributableTO {
 
     private static final long serialVersionUID = 5992828670273935861L;
 
-    private long roleId;
+    private long groupId;
 
-    private String roleName;
+    private String groupName;
 
-    public long getRoleId() {
-        return roleId;
+    public long getGroupId() {
+        return groupId;
     }
 
-    public void setRoleId(final long roleId) {
-        this.roleId = roleId;
+    public void setGroupId(final long groupId) {
+        this.groupId = groupId;
     }
 
-    public String getRoleName() {
-        return roleName;
+    public String getGroupName() {
+        return groupName;
     }
 
-    public void setRoleName(final String roleName) {
-        this.roleName = roleName;
+    public void setGroupName(final String groupName) {
+        this.groupName = groupName;
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTO.java
index 51feffa..d56d2ea 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTO.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTO.java
@@ -41,7 +41,7 @@ public class NotificationTO extends AbstractBaseBean {
 
     private String userAbout;
 
-    private String roleAbout;
+    private String groupAbout;
 
     private String recipients;
 
@@ -71,12 +71,12 @@ public class NotificationTO extends AbstractBaseBean {
         this.userAbout = userAbout;
     }
 
-    public String getRoleAbout() {
-        return roleAbout;
+    public String getGroupAbout() {
+        return groupAbout;
     }
 
-    public void setRoleAbout(final String roleAbout) {
-        this.roleAbout = roleAbout;
+    public void setGroupAbout(final String groupAbout) {
+        this.groupAbout = groupAbout;
     }
 
     @XmlElementWrapper(name = "events")
@@ -97,7 +97,7 @@ public class NotificationTO extends AbstractBaseBean {
         return key;
     }
 
-    public void setKey(Long key) {
+    public void setKey(final Long key) {
         this.key = key;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTaskTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTaskTO.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTaskTO.java
index 48661f9..7e0e53d 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTaskTO.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTaskTO.java
@@ -91,7 +91,7 @@ public class NotificationTaskTO extends AbstractTaskTO {
         return executed;
     }
 
-    public void setExecuted(boolean executed) {
+    public void setExecuted(final boolean executed) {
         this.executed = executed;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/PasswordPolicyTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/PasswordPolicyTO.java
 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/PasswordPolicyTO.java
index 05c4e5a..5ea4ed7 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/PasswordPolicyTO.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/PasswordPolicyTO.java
@@ -35,7 +35,7 @@ public class PasswordPolicyTO extends AbstractPolicyTO {
         this(false);
     }
 
-    public PasswordPolicyTO(boolean global) {
+    public PasswordPolicyTO(final boolean global) {
         super();
 
         PolicyType type = global

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/PushTaskTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/PushTaskTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/PushTaskTO.java
index 13d2ff4..8ddf044 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/PushTaskTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/PushTaskTO.java
@@ -29,7 +29,7 @@ public class PushTaskTO extends AbstractProvisioningTaskTO {
 
     private String userFilter;
 
-    private String roleFilter;
+    private String groupFilter;
 
     public String getUserFilter() {
         return userFilter;
@@ -39,11 +39,11 @@ public class PushTaskTO extends AbstractProvisioningTaskTO {
         this.userFilter = filter;
     }
 
-    public String getRoleFilter() {
-        return roleFilter;
+    public String getGroupFilter() {
+        return groupFilter;
     }
 
-    public void setRoleFilter(final String roleFilter) {
-        this.roleFilter = roleFilter;
+    public void setGroupFilter(final String filter) {
+        this.groupFilter = filter;
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportExecTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportExecTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportExecTO.java
index ef92b3b..5d78c58 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportExecTO.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportExecTO.java
@@ -33,7 +33,7 @@ public class ReportExecTO extends AbstractExecTO {
         return report;
     }
 
-    public void setReport(long report) {
+    public void setReport(final long report) {
         this.report = report;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTO.java
index 3d4d4fc..80f74f3 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTO.java
@@ -26,12 +26,11 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
-import org.apache.syncope.common.lib.AbstractBaseBean;
 import org.apache.syncope.common.lib.report.AbstractReportletConf;
 
 @XmlRootElement(name = "report")
 @XmlType
-public class ReportTO extends AbstractBaseBean {
+public class ReportTO extends AbstractStartEndBean {
 
     private static final long serialVersionUID = 5274568072084814410L;
 
@@ -51,15 +50,11 @@ public class ReportTO extends AbstractBaseBean {
 
     private Date nextExec;
 
-    private Date startDate;
-
-    private Date endDate;
-
     public long getKey() {
         return key;
     }
 
-    public void setKey(long key) {
+    public void setKey(final long key) {
         this.key = key;
     }
 
@@ -101,6 +96,7 @@ public class ReportTO extends AbstractBaseBean {
         this.latestExecStatus = latestExecStatus;
     }
 
+    @SuppressWarnings("CPD-START")
     public Date getLastExec() {
         return lastExec == null
                 ? null
@@ -125,27 +121,4 @@ public class ReportTO extends AbstractBaseBean {
         }
     }
 
-    public Date getStartDate() {
-        return startDate == null
-                ? null
-                : new Date(startDate.getTime());
-    }
-
-    public void setStartDate(final Date startDate) {
-        if (startDate != null) {
-            this.startDate = new Date(startDate.getTime());
-        }
-    }
-
-    public Date getEndDate() {
-        return endDate == null
-                ? null
-                : new Date(endDate.getTime());
-    }
-
-    public void setEndDate(final Date endDate) {
-        if (endDate != null) {
-            this.endDate = new Date(endDate.getTime());
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/ResourceTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ResourceTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ResourceTO.java
index 98f33d2..43f5ff0 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ResourceTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ResourceTO.java
@@ -54,7 +54,7 @@ public class ResourceTO extends AbstractAnnotatedBean {
 
     private MappingTO umapping;
 
-    private MappingTO rmapping;
+    private MappingTO gmapping;
 
     private boolean propagationPrimary;
 
@@ -80,18 +80,17 @@ public class ResourceTO extends AbstractAnnotatedBean {
 
     private Long syncPolicy;
 
-    private Set<ConnConfProperty> connConfProperties;
+    private final Set<ConnConfProperty> connConfProperties = new HashSet<>();
 
     private String usyncToken;
 
     private String rsyncToken;
 
-    private List<String> propagationActionsClassNames = new ArrayList<>();
+    private final List<String> propagationActionsClassNames = new 
ArrayList<>();
 
     public ResourceTO() {
         super();
 
-        connConfProperties = new HashSet<>();
         propagationMode = PropagationMode.TWO_PHASES;
         propagationPriority = 0;
 
@@ -141,12 +140,12 @@ public class ResourceTO extends AbstractAnnotatedBean {
         this.umapping = umapping;
     }
 
-    public MappingTO getRmapping() {
-        return rmapping;
+    public MappingTO getGmapping() {
+        return gmapping;
     }
 
-    public void setRmapping(final MappingTO rmapping) {
-        this.rmapping = rmapping;
+    public void setGmapping(final MappingTO gmapping) {
+        this.gmapping = gmapping;
     }
 
     public boolean isPropagationPrimary() {

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/RoleTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/RoleTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/RoleTO.java
deleted file mode 100644
index 7f0f0af..0000000
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/RoleTO.java
+++ /dev/null
@@ -1,258 +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.common.lib.to;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlElementWrapper;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-@XmlRootElement(name = "role")
-@XmlType
-@JsonIgnoreProperties({ "displayName" })
-public class RoleTO extends AbstractSubjectTO {
-
-    private static final long serialVersionUID = -7785920258290147542L;
-
-    private String name;
-
-    private long parent;
-
-    private Long userOwner;
-
-    private Long roleOwner;
-
-    private boolean inheritOwner;
-
-    private boolean inheritTemplates;
-
-    private boolean inheritPlainAttrs;
-
-    private boolean inheritDerAttrs;
-
-    private boolean inheritVirAttrs;
-
-    private boolean inheritPasswordPolicy;
-
-    private boolean inheritAccountPolicy;
-
-    private final List<String> entitlements = new ArrayList<>();
-
-    private List<String> rPlainAttrTemplates = new ArrayList<>();
-
-    private List<String> rDerAttrTemplates = new ArrayList<>();
-
-    private List<String> rVirAttrTemplates = new ArrayList<>();
-
-    private List<String> mPlainAttrTemplates = new ArrayList<>();
-
-    private List<String> mDerAttrTemplates = new ArrayList<>();
-
-    private List<String> mVirAttrTemplates = new ArrayList<>();
-
-    private Long passwordPolicy;
-
-    private Long accountPolicy;
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(final String name) {
-        this.name = name;
-    }
-
-    public long getParent() {
-        return parent;
-    }
-
-    public void setParent(final long parent) {
-        this.parent = parent;
-    }
-
-    public Long getUserOwner() {
-        return userOwner;
-    }
-
-    public void setUserOwner(final Long userOwner) {
-        this.userOwner = userOwner;
-    }
-
-    public Long getRoleOwner() {
-        return roleOwner;
-    }
-
-    public void setRoleOwner(final Long roleOwner) {
-        this.roleOwner = roleOwner;
-    }
-
-    public boolean isInheritOwner() {
-        return inheritOwner;
-    }
-
-    public void setInheritOwner(final boolean inheritOwner) {
-        this.inheritOwner = inheritOwner;
-    }
-
-    public boolean isInheritTemplates() {
-        return inheritTemplates;
-    }
-
-    public void setInheritTemplates(boolean inheritTemplates) {
-        this.inheritTemplates = inheritTemplates;
-    }
-
-    public boolean isInheritPlainAttrs() {
-        return inheritPlainAttrs;
-    }
-
-    public void setInheritPlainAttrs(final boolean inheritPlainAttrs) {
-        this.inheritPlainAttrs = inheritPlainAttrs;
-    }
-
-    public boolean isInheritDerAttrs() {
-        return inheritDerAttrs;
-    }
-
-    public void setInheritDerAttrs(final boolean inheritDerAttrs) {
-        this.inheritDerAttrs = inheritDerAttrs;
-    }
-
-    public boolean isInheritVirAttrs() {
-        return inheritVirAttrs;
-    }
-
-    public void setInheritVirAttrs(final boolean inheritVirAttrs) {
-        this.inheritVirAttrs = inheritVirAttrs;
-    }
-
-    @XmlElementWrapper(name = "entitlements")
-    @XmlElement(name = "entitlement")
-    @JsonProperty("entitlements")
-    public List<String> getEntitlements() {
-        return entitlements;
-    }
-
-    @XmlElementWrapper(name = "rPlainAttrTemplates")
-    @XmlElement(name = "rPlainAttrTemplate")
-    @JsonProperty("rPlainAttrTemplates")
-    public List<String> getRPlainAttrTemplates() {
-        return rPlainAttrTemplates;
-    }
-
-    @XmlElementWrapper(name = "rDerAttrTemplates")
-    @XmlElement(name = "rDerAttrTemplate")
-    @JsonProperty("rDerAttrTemplates")
-    public List<String> getRDerAttrTemplates() {
-        return rDerAttrTemplates;
-    }
-
-    @XmlElementWrapper(name = "rVirAttrTemplates")
-    @XmlElement(name = "rVirAttrTemplate")
-    @JsonProperty("rVirAttrTemplates")
-    public List<String> getRVirAttrTemplates() {
-        return rVirAttrTemplates;
-    }
-
-    @XmlElementWrapper(name = "mPlainAttrTemplates")
-    @XmlElement(name = "mPlainAttrTemplate")
-    @JsonProperty("mPlainAttrTemplates")
-    public List<String> getMPlainAttrTemplates() {
-        return mPlainAttrTemplates;
-    }
-
-    @XmlElementWrapper(name = "mDerAttrTemplates")
-    @XmlElement(name = "mDerAttrTemplate")
-    @JsonProperty("mDerAttrTemplates")
-    public List<String> getMDerAttrTemplates() {
-        return mDerAttrTemplates;
-    }
-
-    @XmlElementWrapper(name = "mVirAttrTemplates")
-    @XmlElement(name = "mVirAttrTemplate")
-    @JsonProperty("mVirAttrTemplates")
-    public List<String> getMVirAttrTemplates() {
-        return mVirAttrTemplates;
-    }
-
-    public Long getPasswordPolicy() {
-        return passwordPolicy;
-    }
-
-    public void setPasswordPolicy(final Long passwordPolicy) {
-        this.passwordPolicy = passwordPolicy;
-    }
-
-    public boolean isInheritPasswordPolicy() {
-        return inheritPasswordPolicy;
-    }
-
-    /**
-     * Specify if password policy must be inherited. In this case eventual 
passwordPolicy occurrence will be ignored.
-     *
-     * @param inheritPasswordPolicy 'true' to inherit policy, false otherwise.
-     */
-    public void setInheritPasswordPolicy(final boolean inheritPasswordPolicy) {
-        this.inheritPasswordPolicy = inheritPasswordPolicy;
-    }
-
-    public Long getAccountPolicy() {
-        return accountPolicy;
-    }
-
-    public void setAccountPolicy(final Long accountPolicy) {
-        this.accountPolicy = accountPolicy;
-    }
-
-    public boolean isInheritAccountPolicy() {
-        return inheritAccountPolicy;
-    }
-
-    /**
-     * Specify if account policy must be inherited. In this case eventual 
accountPolicy occurrence will be ignored.
-     *
-     * @param inheritAccountPolicy 'true' to inherit policy, false otherwise.
-     */
-    public void setInheritAccountPolicy(final boolean inheritAccountPolicy) {
-        this.inheritAccountPolicy = inheritAccountPolicy;
-    }
-
-    public String getDisplayName() {
-        return getKey() + " " + getName();
-    }
-
-    public static long fromDisplayName(final String displayName) {
-        long result = 0;
-        if (displayName != null && !displayName.isEmpty() && 
displayName.indexOf(' ') != -1) {
-            try {
-                result = Long.valueOf(displayName.split(" ")[0]);
-            } catch (NumberFormatException e) {
-                // just to avoid PMD warning about "empty catch block"
-                result = 0;
-            }
-        }
-
-        return result;
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/SchedTaskTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/SchedTaskTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/SchedTaskTO.java
index 330a12d..abea52d 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/SchedTaskTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/SchedTaskTO.java
@@ -59,6 +59,7 @@ public class SchedTaskTO extends AbstractTaskTO {
         this.jobClassName = jobClassName;
     }
 
+    @SuppressWarnings("CPD-START")
     public Date getLastExec() {
         return lastExec == null
                 ? null
@@ -83,6 +84,8 @@ public class SchedTaskTO extends AbstractTaskTO {
         }
     }
 
+    @SuppressWarnings("CPD-END")
+
     public String getDescription() {
         return description;
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncTaskTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncTaskTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncTaskTO.java
index 9e33e96..175926a 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncTaskTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncTaskTO.java
@@ -29,7 +29,7 @@ public class SyncTaskTO extends AbstractProvisioningTaskTO {
 
     private UserTO userTemplate;
 
-    private RoleTO roleTemplate;
+    private GroupTO groupTemplate;
 
     private boolean fullReconciliation;
 
@@ -41,19 +41,19 @@ public class SyncTaskTO extends AbstractProvisioningTaskTO {
         this.userTemplate = userTemplate;
     }
 
-    public RoleTO getRoleTemplate() {
-        return roleTemplate;
+    public GroupTO getGroupTemplate() {
+        return groupTemplate;
     }
 
-    public void setRoleTemplate(final RoleTO roleTemplate) {
-        this.roleTemplate = roleTemplate;
+    public void setGroupTemplate(final GroupTO groupTemplate) {
+        this.groupTemplate = groupTemplate;
     }
 
     public boolean isFullReconciliation() {
         return fullReconciliation;
     }
 
-    public void setFullReconciliation(boolean fullReconciliation) {
+    public void setFullReconciliation(final boolean fullReconciliation) {
         this.fullReconciliation = fullReconciliation;
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncopeTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncopeTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncopeTO.java
index b7d767b..e4af2bb 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncopeTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncopeTO.java
@@ -47,11 +47,11 @@ public class SyncopeTO extends AbstractBaseBean {
 
     private String userWorkflowAdapter;
 
-    private String roleWorkflowAdapter;
+    private String groupWorkflowAdapter;
 
     private String userProvisioningManager;
 
-    private String roleProvisioningManager;
+    private String groupProvisioningManager;
 
     private final List<String> reportlets = new ArrayList<>();
 
@@ -102,16 +102,16 @@ public class SyncopeTO extends AbstractBaseBean {
         return userWorkflowAdapter;
     }
 
-    public String getRoleWorkflowAdapter() {
-        return roleWorkflowAdapter;
+    public String getGroupWorkflowAdapter() {
+        return groupWorkflowAdapter;
     }
 
     public String getUserProvisioningManager() {
         return userProvisioningManager;
     }
 
-    public String getRoleProvisioningManager() {
-        return roleProvisioningManager;
+    public String getGroupProvisioningManager() {
+        return groupProvisioningManager;
     }
 
     @XmlElementWrapper(name = "reportlets")
@@ -201,16 +201,16 @@ public class SyncopeTO extends AbstractBaseBean {
         this.userWorkflowAdapter = userWorkflowAdapter;
     }
 
-    public void setRoleWorkflowAdapter(final String roleWorkflowAdapter) {
-        this.roleWorkflowAdapter = roleWorkflowAdapter;
+    public void setGroupWorkflowAdapter(final String groupWorkflowAdapter) {
+        this.groupWorkflowAdapter = groupWorkflowAdapter;
     }
 
     public void setUserProvisioningManager(final String 
userProvisioningManager) {
         this.userProvisioningManager = userProvisioningManager;
     }
 
-    public void setRoleProvisioningManager(final String 
roleProvisioningManager) {
-        this.roleProvisioningManager = roleProvisioningManager;
+    public void setGroupProvisioningManager(final String 
groupProvisioningManager) {
+        this.groupProvisioningManager = groupProvisioningManager;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java
index aceefe1..786bfc9 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/UserTO.java
@@ -86,7 +86,7 @@ public class UserTO extends AbstractSubjectTO {
         } else {
             result = new HashMap<>(getMemberships().size());
             for (MembershipTO membership : getMemberships()) {
-                result.put(membership.getRoleId(), membership);
+                result.put(membership.getGroupId(), membership);
             }
             result = Collections.unmodifiableMap(result);
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/4095f1e8/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormTO.java
----------------------------------------------------------------------
diff --git 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormTO.java 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormTO.java
index 90dc7c2..0eed28e 100644
--- 
a/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormTO.java
+++ 
b/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormTO.java
@@ -58,7 +58,7 @@ public class WorkflowFormTO extends AbstractBaseBean {
         return userKey;
     }
 
-    public void setUserKey(long userKey) {
+    public void setUserKey(final long userKey) {
         this.userKey = userKey;
     }
 

Reply via email to