Checkstyle improvements: import ordering and test code (#352)

diff --git a/client/am/console/src/main/java/org/apache/syncope/client/console/pages/SRA.java b/client/am/console/src/main/java/org/apache/syncope/client/console/pages/SRA.java
index 721a014..9dc948c 100644
--- a/client/am/console/src/main/java/org/apache/syncope/client/console/pages/SRA.java
+++ b/client/am/console/src/main/java/org/apache/syncope/client/console/pages/SRA.java
@@ -24,9 +24,9 @@
 import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.annotations.AMPage;
+import org.apache.syncope.client.console.panels.AMSessionPanel;
 import org.apache.syncope.client.console.panels.SRARouteDirectoryPanel;
 import org.apache.syncope.client.console.panels.SRAStatisticsPanel;
-import org.apache.syncope.client.console.panels.AMSessionPanel;
 import org.apache.syncope.client.console.rest.SRARouteRestClient;
 import org.apache.syncope.client.console.rest.SRASessionRestClient;
 import org.apache.syncope.client.ui.commons.Constants;
diff --git a/client/am/console/src/main/java/org/apache/syncope/client/console/pages/WA.java b/client/am/console/src/main/java/org/apache/syncope/client/console/pages/WA.java
index 5f40a7f..3771ea5 100644
--- a/client/am/console/src/main/java/org/apache/syncope/client/console/pages/WA.java
+++ b/client/am/console/src/main/java/org/apache/syncope/client/console/pages/WA.java
@@ -33,12 +33,12 @@
 import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.console.annotations.AMPage;
 import org.apache.syncope.client.console.authprofiles.AuthProfileDirectoryPanel;
-import org.apache.syncope.client.console.panels.AuthModuleDirectoryPanel;
 import org.apache.syncope.client.console.clientapps.ClientApps;
+import org.apache.syncope.client.console.panels.AMSessionPanel;
+import org.apache.syncope.client.console.panels.AuthModuleDirectoryPanel;
 import org.apache.syncope.client.console.panels.OIDC;
 import org.apache.syncope.client.console.panels.SAML2;
 import org.apache.syncope.client.console.panels.WAConfigDirectoryPanel;
-import org.apache.syncope.client.console.panels.AMSessionPanel;
 import org.apache.syncope.client.console.rest.WAConfigRestClient;
 import org.apache.syncope.client.console.rest.WASessionRestClient;
 import org.apache.syncope.client.ui.commons.Constants;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/SyncopeIdMConsoleContext.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/SyncopeIdMConsoleContext.java
index bafd990..38d8681 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/SyncopeIdMConsoleContext.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/SyncopeIdMConsoleContext.java
@@ -18,11 +18,12 @@
  */
 package org.apache.syncope.client.console;
 
+import org.apache.syncope.client.console.commons.AnyDirectoryPanelAdditionalActionLinksProvider;
 import org.apache.syncope.client.console.commons.AnyDirectoryPanelAdditionalActionsProvider;
 import org.apache.syncope.client.console.commons.AnyWizardBuilderAdditionalSteps;
 import org.apache.syncope.client.console.commons.ExternalResourceProvider;
-import org.apache.syncope.client.console.commons.IdMAnyDirectoryPanelAdditionalActionsProvider;
 import org.apache.syncope.client.console.commons.IdMAnyDirectoryPanelAdditionalActionLinksProvider;
+import org.apache.syncope.client.console.commons.IdMAnyDirectoryPanelAdditionalActionsProvider;
 import org.apache.syncope.client.console.commons.IdMAnyWizardBuilderAdditionalSteps;
 import org.apache.syncope.client.console.commons.IdMExternalResourceProvider;
 import org.apache.syncope.client.console.commons.IdMImplementationInfoProvider;
@@ -33,11 +34,10 @@
 import org.apache.syncope.client.console.commons.PolicyTabProvider;
 import org.apache.syncope.client.console.commons.StatusProvider;
 import org.apache.syncope.client.console.commons.VirSchemaDetailsPanelProvider;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.apache.syncope.client.console.commons.AnyDirectoryPanelAdditionalActionLinksProvider;
 import org.apache.syncope.client.console.init.ClassPathScanImplementationContributor;
 import org.apache.syncope.client.console.init.IdMClassPathScanImplementationContributor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
 
 @Configuration(proxyBeanMethods = false)
 public class SyncopeIdMConsoleContext {
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/ConnectorDataProvider.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/ConnectorDataProvider.java
index f7a3718..dc21b11 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/ConnectorDataProvider.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/ConnectorDataProvider.java
@@ -18,6 +18,13 @@
  */
 package org.apache.syncope.client.console.commons;
 
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.pages.BasePage;
@@ -33,13 +40,6 @@
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Collectors;
 
 public class ConnectorDataProvider extends DirectoryDataProvider<Serializable> {
 
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/IdMAnyWizardBuilderAdditionalSteps.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/IdMAnyWizardBuilderAdditionalSteps.java
index 961c667..528dda8 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/IdMAnyWizardBuilderAdditionalSteps.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/IdMAnyWizardBuilderAdditionalSteps.java
@@ -18,10 +18,10 @@
  */
 package org.apache.syncope.client.console.commons;
 
+import org.apache.syncope.client.console.wizards.any.Resources;
 import org.apache.syncope.client.ui.commons.layout.AbstractAnyFormLayout;
 import org.apache.syncope.client.ui.commons.wizards.any.AnyForm;
 import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
-import org.apache.syncope.client.console.wizards.any.Resources;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.wicket.extensions.wizard.WizardModel;
 
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/IdMStatusProvider.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/IdMStatusProvider.java
index 7e2d7b0..9766b7f 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/IdMStatusProvider.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/IdMStatusProvider.java
@@ -26,9 +26,9 @@
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.commons.lang3.tuple.Triple;
 import org.apache.syncope.client.console.panels.ListViewPanel;
-import org.apache.syncope.client.ui.commons.status.ConnObjectWrapper;
 import org.apache.syncope.client.console.status.ReconStatusUtils;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.ui.commons.status.ConnObjectWrapper;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.types.IdMEntitlement;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/ResourceDataProvider.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/ResourceDataProvider.java
index 04a2109..2b78445 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/ResourceDataProvider.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/ResourceDataProvider.java
@@ -18,6 +18,13 @@
  */
 package org.apache.syncope.client.console.commons;
 
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.pages.BasePage;
@@ -33,13 +40,6 @@
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Collectors;
 
 public class ResourceDataProvider extends DirectoryDataProvider<Serializable> {
 
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/status/AbstractStatusBeanProvider.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/status/AbstractStatusBeanProvider.java
index ce21c9c..53b9f1d 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/status/AbstractStatusBeanProvider.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/commons/status/AbstractStatusBeanProvider.java
@@ -18,11 +18,11 @@
  */
 package org.apache.syncope.client.console.commons.status;
 
-import org.apache.syncope.client.ui.commons.status.StatusBean;
 import java.util.Iterator;
 import java.util.List;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
+import org.apache.syncope.client.ui.commons.status.StatusBean;
 import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
 import org.apache.wicket.model.IModel;
 
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Connectors.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Connectors.java
index c66e17d..57cb4a3 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Connectors.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Connectors.java
@@ -18,6 +18,7 @@
  */
 package org.apache.syncope.client.console.pages;
 
+import java.io.Serializable;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.panels.ConnectorDirectoryPanel;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
@@ -32,7 +33,6 @@
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.Model;
-import java.io.Serializable;
 
 public class Connectors extends Panel {
 
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Resources.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Resources.java
index 197e95b..a51441b 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Resources.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/pages/Resources.java
@@ -18,6 +18,7 @@
  */
 package org.apache.syncope.client.console.pages;
 
+import java.io.Serializable;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.panels.ResourceDirectoryPanel;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
@@ -32,7 +33,6 @@
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.Model;
-import java.io.Serializable;
 
 public class Resources extends Panel {
 
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.java
index 17499d3..f06eacb 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.java
@@ -46,12 +46,12 @@
 import org.apache.syncope.client.ui.commons.status.StatusUtils;
 import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
 import org.apache.syncope.common.lib.Attr;
-import org.apache.syncope.common.lib.to.ConnObjectTO;
-import org.apache.syncope.common.lib.types.IdMEntitlement;
 import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.to.ReconStatus;
 import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.IdMEntitlement;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.MatchType;
 import org.apache.syncope.common.rest.api.beans.ConnObjectTOQuery;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java
index af00066..c59e49a 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java
@@ -20,10 +20,10 @@
 
 import java.util.List;
 import java.util.stream.Collectors;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
 import org.apache.syncope.client.console.status.ReconTaskPanel;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.client.ui.commons.panels.ModalPanel;
 import org.apache.syncope.common.lib.SyncopeConstants;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorDirectoryPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorDirectoryPanel.java
index e446898..445083e 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorDirectoryPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnectorDirectoryPanel.java
@@ -19,21 +19,27 @@
 package org.apache.syncope.client.console.panels;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import java.io.Serializable;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.audit.AuditHistoryModal;
 import org.apache.syncope.client.console.commons.ConnectorDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.rest.ConnectorRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
 import org.apache.syncope.client.console.wizards.resources.ConnectorWizardBuilder;
 import org.apache.syncope.client.console.wizards.resources.ResourceWizardBuilder;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.to.ResourceTO;
@@ -50,12 +56,6 @@
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import java.io.Serializable;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
 
 public class ConnectorDirectoryPanel extends
         DirectoryPanel<Serializable, Serializable, ConnectorDataProvider, ConnectorRestClient> {
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnidLocations.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnidLocations.java
index 63dce39..1a9de82 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnidLocations.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ConnidLocations.java
@@ -27,20 +27,21 @@
 import java.util.Iterator;
 import java.util.List;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.console.wizards.resources.ConnectorWizardBuilder;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.rest.RestClient;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
-import org.apache.syncope.client.console.wizards.WizardMgtPanel;
-import org.apache.syncope.client.console.wizards.resources.ConnectorWizardBuilder;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.types.IdMEntitlement;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
 import org.apache.wicket.markup.html.basic.Label;
@@ -49,7 +50,6 @@
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
 
 public class ConnidLocations extends
         DirectoryPanel<Serializable, Serializable, ConnidLocations.ConnidLocationsDataProvider, RestClient> {
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/RemediationDirectoryPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/RemediationDirectoryPanel.java
index d9d6d75..aa06eef 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/RemediationDirectoryPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/RemediationDirectoryPanel.java
@@ -26,8 +26,6 @@
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdMConstants;
 import org.apache.syncope.client.console.layout.AnyLayoutUtils;
 import org.apache.syncope.client.console.layout.AnyObjectFormLayoutInfo;
@@ -45,11 +43,13 @@
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.any.AnyObjectWizardBuilder;
-import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.client.console.wizards.any.GroupWizardBuilder;
 import org.apache.syncope.client.console.wizards.any.UserWizardBuilder;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
+import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.common.lib.AnyOperations;
 import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.SyncopeClientException;
@@ -67,9 +67,9 @@
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyEntitlement;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.common.lib.types.IdMEntitlement;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ResourceDirectoryPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ResourceDirectoryPanel.java
index a270735..751b226 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ResourceDirectoryPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/ResourceDirectoryPanel.java
@@ -19,11 +19,16 @@
 package org.apache.syncope.client.console.panels;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import java.io.Serializable;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.audit.AuditHistoryModal;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.commons.ResourceDataProvider;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.rest.ConnectorRestClient;
@@ -35,10 +40,11 @@
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
 import org.apache.syncope.client.console.wizards.resources.ResourceProvisionPanel;
 import org.apache.syncope.client.console.wizards.resources.ResourceWizardBuilder;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.to.ResourceTO;
@@ -56,12 +62,6 @@
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.StringResourceModel;
-import java.io.Serializable;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
 
 public class ResourceDirectoryPanel extends
         DirectoryPanel<Serializable, Serializable, ResourceDataProvider, ResourceRestClient> {
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/VirSchemaDetails.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/VirSchemaDetails.java
index 2cfed81..f2b6d1d 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/VirSchemaDetails.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/panels/VirSchemaDetails.java
@@ -24,9 +24,9 @@
 import java.util.Map;
 import java.util.stream.Collectors;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.rest.ConnectorRestClient;
 import org.apache.syncope.client.console.rest.ResourceRestClient;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxCheckBoxPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/policies/ProvisioningPolicyModalPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/policies/ProvisioningPolicyModalPanel.java
index f5db9e5..2c245b0 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/policies/ProvisioningPolicyModalPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/policies/ProvisioningPolicyModalPanel.java
@@ -29,18 +29,18 @@
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.panels.AbstractModalPanel;
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
 import org.apache.syncope.client.console.rest.ImplementationRestClient;
 import org.apache.syncope.client.console.rest.PolicyRestClient;
 import org.apache.syncope.client.console.rest.SchemaRestClient;
-import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.console.wicket.markup.html.form.MultiPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxCheckBoxPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.MultiPanel;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
 import org.apache.syncope.common.lib.policy.AbstractCorrelationRuleConf;
 import org.apache.syncope.common.lib.policy.DefaultPullCorrelationRuleConf;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/policies/PullPolicyDirectoryPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/policies/PullPolicyDirectoryPanel.java
index 9f5eb90..3f29986 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/policies/PullPolicyDirectoryPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/policies/PullPolicyDirectoryPanel.java
@@ -22,8 +22,8 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.common.lib.policy.PullPolicyTO;
-import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/policies/PushPolicyDirectoryPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/policies/PushPolicyDirectoryPanel.java
index 0cc829e..0f0faa4 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/policies/PushPolicyDirectoryPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/policies/PushPolicyDirectoryPanel.java
@@ -22,8 +22,8 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.common.lib.policy.PushPolicyTO;
-import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/status/AnyStatusDirectoryPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/status/AnyStatusDirectoryPanel.java
index 29796ba..cfb516e 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/status/AnyStatusDirectoryPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/status/AnyStatusDirectoryPanel.java
@@ -23,15 +23,10 @@
 import java.util.List;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.tuple.Pair;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdMConstants;
 import org.apache.syncope.client.console.commons.status.AbstractStatusBeanProvider;
-import org.apache.syncope.client.ui.commons.status.Status;
-import org.apache.syncope.client.ui.commons.status.StatusBean;
-import org.apache.syncope.client.ui.commons.status.StatusUtils;
-import org.apache.syncope.client.console.panels.DirectoryPanel;
 import org.apache.syncope.client.console.panels.AjaxDataTablePanel;
+import org.apache.syncope.client.console.panels.DirectoryPanel;
 import org.apache.syncope.client.console.panels.LinkedAccountsStatusModalPanel;
 import org.apache.syncope.client.console.panels.MultilevelPanel;
 import org.apache.syncope.client.console.rest.AbstractAnyRestClient;
@@ -42,7 +37,12 @@
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.panels.ModalPanel;
+import org.apache.syncope.client.ui.commons.status.Status;
+import org.apache.syncope.client.ui.commons.status.StatusBean;
+import org.apache.syncope.client.ui.commons.status.StatusUtils;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.EntityTO;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/status/AnyStatusModal.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/status/AnyStatusModal.java
index d785e9d..6bb17a6 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/status/AnyStatusModal.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/status/AnyStatusModal.java
@@ -18,12 +18,12 @@
  */
 package org.apache.syncope.client.console.status;
 
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
-import org.apache.syncope.client.ui.commons.status.StatusBean;
 import org.apache.syncope.client.console.panels.DirectoryPanel;
 import org.apache.syncope.client.console.panels.MultilevelPanel;
 import org.apache.syncope.client.console.rest.AbstractAnyRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
+import org.apache.syncope.client.ui.commons.status.StatusBean;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.wicket.PageReference;
 
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ReconStatusPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ReconStatusPanel.java
index a7f2360..3a92e56 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ReconStatusPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ReconStatusPanel.java
@@ -20,9 +20,9 @@
 
 import java.util.List;
 import org.apache.commons.lang3.tuple.Pair;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.panels.RemoteObjectPanel;
 import org.apache.syncope.client.console.wizards.any.ConnObjectPanel;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.to.ReconStatus;
 import org.apache.wicket.model.IModel;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ReconTaskPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ReconTaskPanel.java
index fd2dfc4..be3f991 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ReconTaskPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ReconTaskPanel.java
@@ -24,7 +24,6 @@
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.commons.RealmsUtils;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.MultilevelPanel;
@@ -32,6 +31,7 @@
 import org.apache.syncope.client.console.rest.RealmRestClient;
 import org.apache.syncope.client.console.rest.ReconciliationRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxSearchFieldPanel;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxCheckBoxPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel;
@@ -40,8 +40,8 @@
 import org.apache.syncope.common.lib.to.ProvisioningTaskTO;
 import org.apache.syncope.common.lib.to.PullTaskTO;
 import org.apache.syncope.common.lib.to.PushTaskTO;
-import org.apache.syncope.common.lib.types.IdMImplementationType;
 import org.apache.syncope.common.lib.to.RealmTO;
+import org.apache.syncope.common.lib.types.IdMImplementationType;
 import org.apache.syncope.common.lib.types.MatchingRule;
 import org.apache.syncope.common.lib.types.UnmatchingRule;
 import org.apache.syncope.common.rest.api.beans.ReconQuery;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusDirectoryPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusDirectoryPanel.java
index b861878..3bb36d2 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusDirectoryPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusDirectoryPanel.java
@@ -24,13 +24,10 @@
 import java.util.Optional;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdMConstants;
 import org.apache.syncope.client.console.commons.status.AbstractStatusBeanProvider;
-import org.apache.syncope.client.ui.commons.status.StatusBean;
-import org.apache.syncope.client.ui.commons.status.StatusUtils;
-import org.apache.syncope.client.console.panels.DirectoryPanel;
 import org.apache.syncope.client.console.panels.AjaxDataTablePanel;
+import org.apache.syncope.client.console.panels.DirectoryPanel;
 import org.apache.syncope.client.console.panels.MultilevelPanel;
 import org.apache.syncope.client.console.rest.AbstractAnyRestClient;
 import org.apache.syncope.client.console.rest.AnyObjectRestClient;
@@ -41,7 +38,10 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.panels.ModalPanel;
+import org.apache.syncope.client.ui.commons.status.StatusBean;
+import org.apache.syncope.client.ui.commons.status.StatusUtils;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.search.AbstractFiqlSearchConditionBuilder;
 import org.apache.syncope.common.lib.to.AnyTO;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusModal.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusModal.java
index d30c385..e052cc2 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusModal.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/status/ResourceStatusModal.java
@@ -20,15 +20,15 @@
 
 import java.util.List;
 import java.util.stream.Collectors;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
-import org.apache.syncope.client.ui.commons.status.StatusBean;
 import org.apache.syncope.client.console.panels.DirectoryPanel;
 import org.apache.syncope.client.console.panels.MultilevelPanel;
 import org.apache.syncope.client.console.rest.AbstractAnyRestClient;
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
+import org.apache.syncope.client.ui.commons.status.StatusBean;
 import org.apache.syncope.common.lib.to.ProvisionTO;
 import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.wicket.PageReference;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/status/StatusModal.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/status/StatusModal.java
index e793bbd..7aaf079 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/status/StatusModal.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/status/StatusModal.java
@@ -18,13 +18,13 @@
  */
 package org.apache.syncope.client.console.status;
 
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
-import org.apache.syncope.client.ui.commons.status.StatusBean;
 import org.apache.syncope.client.console.panels.DirectoryPanel;
 import org.apache.syncope.client.console.panels.MultilevelPanel;
 import org.apache.syncope.client.console.rest.AbstractAnyRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.panels.ModalPanel;
+import org.apache.syncope.client.ui.commons.status.StatusBean;
 import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.markup.html.panel.Panel;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/topology/TabularTopology.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/topology/TabularTopology.java
index f979be3..946e5d4 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/topology/TabularTopology.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/topology/TabularTopology.java
@@ -20,23 +20,23 @@
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import de.agilecoders.wicket.core.markup.html.bootstrap.tabs.AjaxBootstrapTabbedPanel;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
 import org.apache.syncope.client.console.annotations.IdMPage;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.pages.Connectors;
 import org.apache.syncope.client.console.pages.Resources;
 import org.apache.syncope.client.console.panels.ConnidLocations;
 import org.apache.syncope.client.console.tasks.SchedTasks;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.common.lib.types.IdMEntitlement;
 import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
 import org.apache.wicket.extensions.markup.html.tabs.ITab;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.Model;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
 
 @IdMPage(label = "TabularTopology", icon = "fas fa-plug", listEntitlement = IdMEntitlement.RESOURCE_LIST, priority = 1)
 public class TabularTopology extends BasePage {
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java
index 96377e0..28b6e60 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/topology/Topology.java
@@ -31,16 +31,14 @@
 import java.util.Locale;
 import java.util.Map;
 import java.util.Optional;
-import java.util.stream.Collectors;
 import java.util.Set;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.annotations.IdMPage;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.BasePage;
-import org.apache.syncope.client.console.wizards.resources.AbstractResourceWizardBuilder.CreateEvent;
 import org.apache.syncope.client.console.rest.BaseRestClient;
 import org.apache.syncope.client.console.rest.ConnectorRestClient;
 import org.apache.syncope.client.console.rest.ResourceRestClient;
@@ -48,6 +46,8 @@
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.console.wizards.resources.AbstractResourceWizardBuilder.CreateEvent;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.types.IdMEntitlement;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java
index 44f2e25..6613f47 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/topology/TopologyNodePanel.java
@@ -19,10 +19,10 @@
 package org.apache.syncope.client.console.topology;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.rest.ConnectorRestClient;
 import org.apache.syncope.client.console.topology.TopologyNode.Kind;
 import org.apache.syncope.client.console.topology.TopologyTogglePanel.UpdateEvent;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.IAjaxIndicatorAware;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
index a50537a..1a85a91 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
@@ -26,24 +26,24 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.audit.AuditHistoryModal;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.panels.ConnObjects;
-import org.apache.syncope.client.console.wizards.resources.ConnectorWizardBuilder;
-import org.apache.syncope.client.console.wizards.resources.ResourceWizardBuilder;
 import org.apache.syncope.client.console.panels.TogglePanel;
 import org.apache.syncope.client.console.rest.ConnectorRestClient;
 import org.apache.syncope.client.console.rest.ResourceRestClient;
 import org.apache.syncope.client.console.status.ResourceStatusModal;
 import org.apache.syncope.client.console.tasks.PropagationTasks;
+import org.apache.syncope.client.console.tasks.PullTasks;
 import org.apache.syncope.client.console.tasks.PushTasks;
 import org.apache.syncope.client.console.tasks.SchedTasks;
-import org.apache.syncope.client.console.tasks.PullTasks;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.IndicatingOnConfirmAjaxLink;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
+import org.apache.syncope.client.console.wizards.resources.ConnectorWizardBuilder;
 import org.apache.syncope.client.console.wizards.resources.ResourceProvision;
 import org.apache.syncope.client.console.wizards.resources.ResourceProvisionPanel;
+import org.apache.syncope.client.console.wizards.resources.ResourceWizardBuilder;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.to.ItemTO;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/ConnConfPropertyListView.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/ConnConfPropertyListView.java
index 0a105c5..59bd19b 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/ConnConfPropertyListView.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/list/ConnConfPropertyListView.java
@@ -25,12 +25,12 @@
 import org.apache.commons.lang3.ClassUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.commons.IdMConstants;
+import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
 import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.markup.html.form.AbstractFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxCheckBoxPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPasswordFieldPanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxSpinnerFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/widgets/RemediationsWidget.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/widgets/RemediationsWidget.java
index 085a4ef..ba66c69 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/widgets/RemediationsWidget.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/widgets/RemediationsWidget.java
@@ -26,10 +26,10 @@
 import java.util.List;
 import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.annotations.ExtWidget;
 import org.apache.syncope.client.console.pages.Remediations;
 import org.apache.syncope.client.console.rest.RemediationRestClient;
 import org.apache.syncope.client.console.wicket.ajax.IndicatorAjaxTimerBehavior;
+import org.apache.syncope.client.ui.commons.annotations.ExtWidget;
 import org.apache.syncope.common.lib.to.RemediationTO;
 import org.apache.syncope.common.lib.types.IdMEntitlement;
 import org.apache.wicket.PageReference;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountCredentialsPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountCredentialsPanel.java
index 64c13bf..ea364f1 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountCredentialsPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountCredentialsPanel.java
@@ -22,7 +22,6 @@
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.checkbox.bootstraptoggle.BootstrapToggleConfig;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.common.lib.to.LinkedAccountTO;
 import org.apache.syncope.client.console.commons.LinkedAccountPlainAttrProperty;
 import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
@@ -30,6 +29,7 @@
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
 import org.apache.syncope.client.ui.commons.wizards.any.EntityWrapper;
+import org.apache.syncope.common.lib.to.LinkedAccountTO;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.wizard.WizardStep;
 import org.apache.wicket.markup.ComponentTag;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountDetailsPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountDetailsPanel.java
index 4d79dc3..7b4d93c 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountDetailsPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountDetailsPanel.java
@@ -21,6 +21,7 @@
 import java.time.Duration;
 import java.time.temporal.ChronoUnit;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Pair;
@@ -47,7 +48,6 @@
 import org.apache.wicket.model.PropertyModel;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import java.util.concurrent.atomic.AtomicReference;
 
 public class LinkedAccountDetailsPanel extends WizardStep {
 
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountPlainAttrsPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountPlainAttrsPanel.java
index e4cdef8..402567e 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountPlainAttrsPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountPlainAttrsPanel.java
@@ -18,7 +18,6 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
-import org.apache.syncope.client.ui.commons.wizards.any.EntityWrapper;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.checkbox.bootstraptoggle.BootstrapToggle;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.checkbox.bootstraptoggle.BootstrapToggleConfig;
 import java.util.ArrayList;
@@ -28,21 +27,22 @@
 import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
+import org.apache.syncope.client.console.commons.LinkedAccountPlainAttrProperty;
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
-import org.apache.syncope.common.lib.EntityTOUtils;
-import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.to.LinkedAccountTO;
-import org.apache.syncope.common.lib.to.PlainSchemaTO;
-import org.apache.syncope.common.lib.to.UserTO;
-import org.apache.syncope.client.console.commons.LinkedAccountPlainAttrProperty;
 import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.markup.html.form.AbstractFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
 import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
+import org.apache.syncope.client.ui.commons.wizards.any.EntityWrapper;
 import org.apache.syncope.common.lib.Attr;
+import org.apache.syncope.common.lib.EntityTOUtils;
+import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.syncope.common.lib.to.LinkedAccountTO;
+import org.apache.syncope.common.lib.to.PlainSchemaTO;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountWizardBuilder.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountWizardBuilder.java
index 9d430d7..705fa0f 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountWizardBuilder.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/LinkedAccountWizardBuilder.java
@@ -18,7 +18,6 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
-import org.apache.syncope.client.ui.commons.wizards.any.EntityWrapper;
 import java.io.Serializable;
 import java.util.HashSet;
 import java.util.Set;
@@ -29,6 +28,7 @@
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal.ModalEvent;
 import org.apache.syncope.client.console.wizards.BaseAjaxWizardBuilder;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
+import org.apache.syncope.client.ui.commons.wizards.any.EntityWrapper;
 import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.request.LinkedAccountUR;
 import org.apache.syncope.common.lib.request.UserUR;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsWizardBuilder.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsWizardBuilder.java
index 7f3e4a7..fffe259 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsWizardBuilder.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsWizardBuilder.java
@@ -19,8 +19,8 @@
 package org.apache.syncope.client.console.wizards.any;
 
 import com.fasterxml.jackson.databind.json.JsonMapper;
-import java.util.List;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import javax.ws.rs.HttpMethod;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsWizardModel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsWizardModel.java
index 46c80cc..14adcbf 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsWizardModel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/MergeLinkedAccountsWizardModel.java
@@ -18,11 +18,10 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
+import java.io.Serializable;
 import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.to.UserTO;
 
-import java.io.Serializable;
-
 public class MergeLinkedAccountsWizardModel implements Serializable {
     private static final long serialVersionUID = -2420343164344634869L;
 
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
index 6c12556..ac1d1e1 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/any/Resources.java
@@ -18,9 +18,9 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
-import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.ui.commons.wizards.any.AbstractResources;
+import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.types.IdMEntitlement;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.ActionPermissions;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel.java
index 1ba7d8b..ee230b7 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/AbstractConnConfPanel.java
@@ -21,9 +21,9 @@
 import java.util.List;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.wicket.markup.html.list.ConnConfPropertyListView;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.types.ConnConfProperty;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.java
index d41143c..e18dc91 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.java
@@ -26,9 +26,9 @@
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.RealmsUtils;
 import org.apache.syncope.client.console.rest.ConnectorRestClient;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.rest.RealmRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxSearchFieldPanel;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxSpinnerFieldPanel;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvision.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvision.java
index 01eebb5..747a383 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvision.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvision.java
@@ -18,6 +18,9 @@
  */
 package org.apache.syncope.client.console.wizards.resources;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
 import org.apache.syncope.client.console.panels.ToggleableTarget;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.ItemTO;
@@ -25,10 +28,6 @@
 import org.apache.syncope.common.lib.to.OrgUnitTO;
 import org.apache.syncope.common.lib.to.ProvisionTO;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-
 public class ResourceProvision implements ToggleableTarget {
 
     private static final long serialVersionUID = 1103991919577739952L;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
index e6fb804..01f6dd2 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
@@ -25,7 +25,6 @@
 import java.util.Optional;
 import java.util.stream.Collectors;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.panels.AbstractModalPanel;
 import org.apache.syncope.client.console.panels.ListViewPanel;
 import org.apache.syncope.client.console.panels.ListViewPanel.ListViewReload;
@@ -34,9 +33,10 @@
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksTogglePanel;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.ItemTO;
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceSecurityPanel.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceSecurityPanel.java
index f23862e..ef9dae0 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceSecurityPanel.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceSecurityPanel.java
@@ -22,8 +22,8 @@
 import java.util.Map;
 import java.util.stream.Collectors;
 import org.apache.syncope.client.console.rest.PolicyRestClient;
-import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.PolicyRenderer;
+import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.common.lib.policy.PolicyTO;
 import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.types.PolicyType;
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/ApplicationContextProvider.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/ApplicationContextProvider.java
index 9ab56ef..a3334c5 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/ApplicationContextProvider.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/ApplicationContextProvider.java
@@ -18,13 +18,12 @@
  */
 package org.apache.syncope.client.ui.commons;
 
+import java.util.Optional;
 import org.springframework.beans.factory.support.DefaultListableBeanFactory;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.context.ConfigurableApplicationContext;
 
-import java.util.Optional;
-
 public class ApplicationContextProvider implements ApplicationContextAware {
 
     private static ConfigurableApplicationContext CTX;
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/BaseLogin.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/BaseLogin.java
index f67bdd9..bc0f008 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/BaseLogin.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/BaseLogin.java
@@ -25,11 +25,11 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.stream.Collectors;
+import javax.ws.rs.core.HttpHeaders;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.ui.commons.panels.NotificationPanel;
 import org.apache.syncope.common.keymaster.client.api.DomainOps;
 import org.apache.syncope.common.keymaster.client.api.model.Domain;
-import javax.ws.rs.core.HttpHeaders;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/ajax/markup/html/LabelInfo.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/ajax/markup/html/LabelInfo.java
index ce17bb6..102dcdd 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/ajax/markup/html/LabelInfo.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/ajax/markup/html/LabelInfo.java
@@ -20,7 +20,6 @@
 
 import java.util.Collection;
 import java.util.Optional;
-
 import org.apache.commons.lang3.StringUtils;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.basic.Label;
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/layout/AbstractAnyFormBaseLayout.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/layout/AbstractAnyFormBaseLayout.java
index ce8d6b0..8cba248 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/layout/AbstractAnyFormBaseLayout.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/layout/AbstractAnyFormBaseLayout.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.client.ui.commons.layout;
 
-import org.apache.syncope.client.ui.commons.wizards.any.AnyForm;
 import java.io.Serializable;
+import org.apache.syncope.client.ui.commons.wizards.any.AnyForm;
 import org.apache.syncope.common.lib.to.AnyTO;
 
 public abstract class AbstractAnyFormBaseLayout<A extends AnyTO, F extends AnyForm<A>> implements Serializable {
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/layout/AbstractAnyFormLayout.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/layout/AbstractAnyFormLayout.java
index 871bab6..8746225 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/layout/AbstractAnyFormLayout.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/layout/AbstractAnyFormLayout.java
@@ -18,9 +18,9 @@
  */
 package org.apache.syncope.client.ui.commons.layout;
 
-import org.apache.syncope.client.ui.commons.wizards.any.AnyForm;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.syncope.client.ui.commons.wizards.any.AnyForm;
 import org.apache.syncope.common.lib.to.AnyTO;
 
 public abstract class AbstractAnyFormLayout<A extends AnyTO, F extends AnyForm<A>>
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxDropDownChoicePanel.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxDropDownChoicePanel.java
index 0281bc8..b87f89e 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxDropDownChoicePanel.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxDropDownChoicePanel.java
@@ -18,10 +18,10 @@
  */
 package org.apache.syncope.client.ui.commons.markup.html.form;
 
-import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import java.io.Serializable;
 import java.util.List;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.form.ChoiceRenderer;
 import org.apache.wicket.markup.html.form.DropDownChoice;
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxPasswordFieldPanel.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxPasswordFieldPanel.java
index 91588fc..3dbadf0 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxPasswordFieldPanel.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxPasswordFieldPanel.java
@@ -19,8 +19,8 @@
 package org.apache.syncope.client.ui.commons.markup.html.form;
 
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.password.strength.PasswordStrengthBehavior;
-import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.form.PasswordTextField;
 import org.apache.wicket.model.IModel;
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxTextFieldPanel.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxTextFieldPanel.java
index 19edf02..270f6fb 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxTextFieldPanel.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/AjaxTextFieldPanel.java
@@ -18,13 +18,12 @@
  */
 package org.apache.syncope.client.ui.commons.markup.html.form;
 
-import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import de.agilecoders.wicket.core.markup.html.bootstrap.components.TooltipConfig;
-
 import java.util.Iterator;
 import java.util.List;
 import java.util.regex.Pattern;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAutoCompleteBehavior;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/EncryptedFieldPanel.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/EncryptedFieldPanel.java
index a26302e..fa220fe 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/EncryptedFieldPanel.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/EncryptedFieldPanel.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.client.ui.commons.markup.html.form;
 
-import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.model.IModel;
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/preview/BinaryCertPreviewer.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/preview/BinaryCertPreviewer.java
index 1b2ed20..7e2c241 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/preview/BinaryCertPreviewer.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/markup/html/form/preview/BinaryCertPreviewer.java
@@ -24,8 +24,8 @@
 import javax.naming.ldap.LdapName;
 import javax.naming.ldap.Rdn;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.ui.commons.annotations.BinaryPreview;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.annotations.BinaryPreview;
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.model.Model;
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/status/StatusUtils.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/status/StatusUtils.java
index 40ceae5..6bf24ad 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/status/StatusUtils.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/status/StatusUtils.java
@@ -25,9 +25,9 @@
 import org.apache.syncope.client.ui.commons.ConnIdSpecialName;
 import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.panels.LabelPanel;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.request.StatusR;
 import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.types.ExecStatus;
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/AjaxWizard.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/AjaxWizard.java
index 3119be0..5011e9d 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/AjaxWizard.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/AjaxWizard.java
@@ -30,7 +30,16 @@
 import java.util.concurrent.TimeoutException;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
+import org.apache.syncope.client.ui.commons.panels.SubmitableModalPanel;
+import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
+import org.apache.syncope.client.ui.commons.wizards.exception.CaptchaNotMatchingException;
+import org.apache.wicket.Application;
 import org.apache.wicket.Component;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.Session;
+import org.apache.wicket.ThreadContext;
+import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.event.Broadcast;
 import org.apache.wicket.event.IEventSink;
@@ -39,22 +48,13 @@
 import org.apache.wicket.extensions.wizard.Wizard;
 import org.apache.wicket.extensions.wizard.WizardModel;
 import org.apache.wicket.extensions.wizard.WizardStep;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
-import org.apache.syncope.client.ui.commons.panels.SubmitableModalPanel;
-import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
-import org.apache.syncope.client.ui.commons.wizards.exception.CaptchaNotMatchingException;
-import org.apache.wicket.Application;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.Session;
-import org.apache.wicket.ThreadContext;
-import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
-import org.apache.wicket.model.IModel;
 
 public abstract class AjaxWizard<T extends Serializable> extends Wizard
         implements SubmitableModalPanel, WizardModalPanel<T> {
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/ModalPanelBuilder.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/ModalPanelBuilder.java
index e44afe9..3cbb67c 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/ModalPanelBuilder.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/ModalPanelBuilder.java
@@ -19,8 +19,8 @@
 package org.apache.syncope.client.ui.commons.wizards;
 
 import java.io.Serializable;
-import org.apache.wicket.PageReference;
 import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
+import org.apache.wicket.PageReference;
 import org.apache.wicket.event.IEventSink;
 
 public interface ModalPanelBuilder<T extends Serializable> extends Serializable {
diff --git a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/any/AbstractGroups.java b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/any/AbstractGroups.java
index 668a89b..17ea3f1 100644
--- a/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/any/AbstractGroups.java
+++ b/client/idrepo/common-ui/src/main/java/org/apache/syncope/client/ui/commons/wizards/any/AbstractGroups.java
@@ -22,8 +22,8 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.ui.commons.ajax.markup.html.LabelInfo;
 import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.wicket.extensions.wizard.WizardStep;
 import org.apache.wicket.extensions.wizard.WizardModel.ICondition;
+import org.apache.wicket.extensions.wizard.WizardStep;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
index f1b3630..efb33df 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
@@ -25,8 +25,8 @@
 import org.apache.syncope.client.console.commons.AnyDirectoryPanelAdditionalActionsProvider;
 import org.apache.syncope.client.console.commons.AnyWizardBuilderAdditionalSteps;
 import org.apache.syncope.client.console.commons.ExternalResourceProvider;
-import org.apache.syncope.client.console.commons.IdRepoAnyDirectoryPanelAdditionalActionsProvider;
 import org.apache.syncope.client.console.commons.IdRepoAnyDirectoryPanelAdditionalActionLinksProvider;
+import org.apache.syncope.client.console.commons.IdRepoAnyDirectoryPanelAdditionalActionsProvider;
 import org.apache.syncope.client.console.commons.IdRepoAnyWizardBuilderAdditionalSteps;
 import org.apache.syncope.client.console.commons.IdRepoExternalResourceProvider;
 import org.apache.syncope.client.console.commons.IdRepoImplementationInfoProvider;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeWebApplication.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeWebApplication.java
index 4c4ec81..6919048 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeWebApplication.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeWebApplication.java
@@ -24,14 +24,28 @@
 import de.agilecoders.wicket.core.settings.IBootstrapSettings;
 import de.agilecoders.wicket.core.settings.SingleThemeProvider;
 import java.util.Collection;
-import org.apache.syncope.client.ui.commons.annotations.Resource;
 import org.apache.syncope.client.console.commons.AnyDirectoryPanelAdditionalActionLinksProvider;
 import org.apache.syncope.client.console.commons.AnyDirectoryPanelAdditionalActionsProvider;
 import org.apache.syncope.client.console.commons.AnyWizardBuilderAdditionalSteps;
+import org.apache.syncope.client.console.commons.ExternalResourceProvider;
+import org.apache.syncope.client.console.commons.ImplementationInfoProvider;
+import org.apache.syncope.client.console.commons.PolicyTabProvider;
+import org.apache.syncope.client.console.commons.StatusProvider;
+import org.apache.syncope.client.console.commons.VirSchemaDetailsPanelProvider;
 import org.apache.syncope.client.console.init.ClassPathScanImplementationLookup;
+import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.pages.Dashboard;
 import org.apache.syncope.client.console.pages.Login;
+import org.apache.syncope.client.console.pages.MustChangePassword;
+import org.apache.syncope.client.lib.AnonymousAuthenticationHandler;
+import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.SyncopeUIRequestCycleListener;
+import org.apache.syncope.client.ui.commons.annotations.Resource;
+import org.apache.syncope.client.ui.commons.themes.AdminLTE;
+import org.apache.syncope.common.keymaster.client.api.ServiceOps;
+import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.apache.wicket.Page;
 import org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSession;
 import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
@@ -39,32 +53,18 @@
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.protocol.http.servlet.XForwardedRequestWrapperFactory;
+import org.apache.wicket.protocol.ws.WebSocketAwareResourceIsolationRequestCycleListener;
 import org.apache.wicket.protocol.ws.api.WebSocketResponse;
+import org.apache.wicket.request.component.IRequestablePage;
+import org.apache.wicket.request.cycle.IRequestCycleListener;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.http.WebResponse;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.AbstractResource;
 import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.request.resource.ResourceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.syncope.client.console.commons.ExternalResourceProvider;
-import org.apache.syncope.client.console.commons.ImplementationInfoProvider;
-import org.apache.syncope.client.console.commons.PolicyTabProvider;
-import org.apache.syncope.client.console.commons.StatusProvider;
-import org.apache.syncope.client.console.commons.VirSchemaDetailsPanelProvider;
-import org.apache.syncope.client.console.pages.BasePage;
-import org.apache.syncope.client.console.pages.MustChangePassword;
-import org.apache.syncope.client.lib.AnonymousAuthenticationHandler;
-import org.apache.syncope.client.lib.SyncopeClient;
-import org.apache.syncope.client.ui.commons.themes.AdminLTE;
-import org.apache.syncope.client.ui.commons.SyncopeUIRequestCycleListener;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
-import org.apache.syncope.common.keymaster.client.api.ServiceOps;
-import org.apache.wicket.protocol.ws.WebSocketAwareResourceIsolationRequestCycleListener;
-import org.apache.wicket.request.component.IRequestablePage;
-import org.apache.wicket.request.cycle.IRequestCycleListener;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/batch/BatchContent.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/batch/BatchContent.java
index c30b89c..4ed8488 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/batch/BatchContent.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/batch/BatchContent.java
@@ -29,19 +29,19 @@
 import java.util.Set;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.status.StatusBean;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.MultilevelPanel;
 import org.apache.syncope.client.console.rest.AbstractAnyRestClient;
 import org.apache.syncope.client.console.rest.AnyObjectRestClient;
 import org.apache.syncope.client.console.rest.GroupRestClient;
-import org.apache.syncope.client.ui.commons.rest.RestClient;
 import org.apache.syncope.client.console.rest.UserRestClient;
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.BatchResponseColumn;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.lib.batch.BatchRequest;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.rest.RestClient;
+import org.apache.syncope.client.ui.commons.status.StatusBean;
 import org.apache.syncope.common.lib.request.BooleanReplacePatchItem;
 import org.apache.syncope.common.lib.request.StatusR;
 import org.apache.syncope.common.lib.request.UserUR;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/batch/BatchModal.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/batch/BatchModal.java
index 8d5b8d9..9b8915c 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/batch/BatchModal.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/batch/BatchModal.java
@@ -23,9 +23,9 @@
 import java.util.List;
 import java.util.Map;
 import org.apache.syncope.client.console.panels.AbstractModalPanel;
-import org.apache.syncope.client.ui.commons.rest.RestClient;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.ui.commons.rest.RestClient;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/chartjs/ChartOptions.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/chartjs/ChartOptions.java
index 942f683..e463209 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/chartjs/ChartOptions.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/chartjs/ChartOptions.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.client.console.chartjs;

 

 import com.fasterxml.jackson.annotation.JsonRawValue;

-

 import java.io.Serializable;

 

 /**

diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/SortableAnyProviderComparator.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/SortableAnyProviderComparator.java
index 5c623b4..fb2ad10 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/SortableAnyProviderComparator.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/commons/SortableAnyProviderComparator.java
@@ -22,8 +22,8 @@
 import java.util.Optional;
 import java.util.Set;
 import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.Attr;
+import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
 import org.apache.wicket.model.IModel;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/init/ClassPathScanImplementationLookup.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/init/ClassPathScanImplementationLookup.java
index 11e6edb..1ef8e21 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/init/ClassPathScanImplementationLookup.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/init/ClassPathScanImplementationLookup.java
@@ -34,17 +34,20 @@
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.syncope.client.console.ConsoleProperties;
 import org.apache.syncope.client.console.annotations.AMPage;
-import org.apache.syncope.client.ui.commons.annotations.ExtPage;
-import org.apache.syncope.client.console.pages.BaseExtPage;
-import org.apache.syncope.client.ui.commons.annotations.BinaryPreview;
-import org.apache.syncope.client.ui.commons.annotations.ExtWidget;
 import org.apache.syncope.client.console.annotations.IdMPage;
-import org.apache.syncope.client.ui.commons.annotations.Resource;
+import org.apache.syncope.client.console.annotations.UserFormFinalize;
+import org.apache.syncope.client.console.pages.BaseExtPage;
 import org.apache.syncope.client.console.pages.BasePage;
-import org.apache.syncope.client.ui.commons.panels.BaseSSOLoginFormPanel;
-import org.apache.syncope.client.ui.commons.markup.html.form.preview.BinaryPreviewer;
 import org.apache.syncope.client.console.widgets.BaseExtWidget;
 import org.apache.syncope.client.console.widgets.ExtAlertWidget;
+import org.apache.syncope.client.console.wizards.any.UserFormFinalizer;
+import org.apache.syncope.client.ui.commons.annotations.BinaryPreview;
+import org.apache.syncope.client.ui.commons.annotations.ExtPage;
+import org.apache.syncope.client.ui.commons.annotations.ExtWidget;
+import org.apache.syncope.client.ui.commons.annotations.Resource;
+import org.apache.syncope.client.ui.commons.markup.html.form.preview.BinaryPreviewer;
+import org.apache.syncope.client.ui.commons.panels.BaseSSOLoginFormPanel;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.policy.AccountRuleConf;
 import org.apache.syncope.common.lib.policy.PasswordRuleConf;
 import org.apache.syncope.common.lib.report.ReportletConf;
@@ -57,9 +60,6 @@
 import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
 import org.springframework.core.type.filter.AssignableTypeFilter;
 import org.springframework.util.ClassUtils;
-import org.apache.syncope.client.console.wizards.any.UserFormFinalizer;
-import org.apache.syncope.client.console.annotations.UserFormFinalize;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 
 public class ClassPathScanImplementationLookup {
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/layout/AnyObjectFormLayoutInfo.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/layout/AnyObjectFormLayoutInfo.java
index cb622a6..2012e63 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/layout/AnyObjectFormLayoutInfo.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/layout/AnyObjectFormLayoutInfo.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.client.console.layout;
 
-import org.apache.syncope.client.ui.commons.layout.AbstractAnyFormLayout;
 import org.apache.syncope.client.console.wizards.any.AnyObjectWizardBuilder;
+import org.apache.syncope.client.ui.commons.layout.AbstractAnyFormLayout;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 
 public class AnyObjectFormLayoutInfo extends AbstractAnyFormLayout<AnyObjectTO, AnyObjectForm> {
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/layout/GroupFormLayoutInfo.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/layout/GroupFormLayoutInfo.java
index 5d7ef29..722b6b4 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/layout/GroupFormLayoutInfo.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/layout/GroupFormLayoutInfo.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.client.console.layout;
 
-import org.apache.syncope.client.ui.commons.layout.AbstractAnyFormLayout;
 import org.apache.syncope.client.console.wizards.any.GroupWizardBuilder;
+import org.apache.syncope.client.ui.commons.layout.AbstractAnyFormLayout;
 import org.apache.syncope.common.lib.to.GroupTO;
 
 public class GroupFormLayoutInfo extends AbstractAnyFormLayout<GroupTO, GroupForm> {
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java
index 4088e90..24e1069 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java
@@ -25,22 +25,27 @@
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.commons.TemplateContent;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
+import org.apache.syncope.client.console.commons.TemplateContent;
 import org.apache.syncope.client.console.notifications.MailTemplateDirectoryPanel.MailTemplateProvider;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.DirectoryPanel;
 import org.apache.syncope.client.console.rest.NotificationRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.XMLEditorPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
+import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
+import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
 import org.apache.syncope.client.ui.commons.wizards.AbstractModalPanelBuilder;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.MailTemplateTO;
-import org.apache.syncope.common.lib.types.MailTemplateFormat;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.MailTemplateFormat;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
@@ -48,14 +53,9 @@
 import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.StringResourceModel;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.XMLEditorPanel;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
-import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
-import org.apache.wicket.model.PropertyModel;
 
 public class MailTemplateDirectoryPanel
         extends DirectoryPanel<MailTemplateTO, MailTemplateTO, MailTemplateProvider, NotificationRestClient> {
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationDirectoryPanel.java
index 2e10c15..8bdf599 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationDirectoryPanel.java
@@ -24,7 +24,6 @@
 import java.util.Iterator;
 import java.util.List;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.notifications.NotificationDirectoryPanel.NotificationProvider;
@@ -38,6 +37,7 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.NotificationTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWizardBuilder.java
index ecc23d1..f13fd11 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWizardBuilder.java
@@ -33,8 +33,8 @@
 import org.apache.syncope.client.console.panels.search.SearchClause;
 import org.apache.syncope.client.console.panels.search.UserSearchPanel;
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
-import org.apache.syncope.client.console.rest.ImplementationRestClient;
 import org.apache.syncope.client.console.rest.AuditRestClient;
+import org.apache.syncope.client.console.rest.ImplementationRestClient;
 import org.apache.syncope.client.console.rest.NotificationRestClient;
 import org.apache.syncope.client.console.rest.SchemaRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
index 4915075..e29dbe7 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
@@ -29,15 +29,15 @@
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.console.annotations.AMPage;
-import org.apache.syncope.client.ui.commons.annotations.ExtPage;
 import org.apache.syncope.client.console.annotations.IdMPage;
 import org.apache.syncope.client.console.panels.DelegationSelectionPanel;
-import org.apache.syncope.client.ui.commons.HttpResourceStream;
 import org.apache.syncope.client.console.rest.SyncopeRestClient;
 import org.apache.syncope.client.console.wicket.markup.head.MetaHeaderItem;
 import org.apache.syncope.client.console.wicket.markup.html.form.IndicatingOnConfirmAjaxLink;
 import org.apache.syncope.client.console.widgets.ExtAlertWidget;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.HttpResourceStream;
+import org.apache.syncope.client.ui.commons.annotations.ExtPage;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
 import org.apache.syncope.client.ui.commons.rest.ResponseHolder;
 import org.apache.syncope.common.lib.SyncopeConstants;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/Login.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/Login.java
index a1244fe..4fbaeee 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/Login.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/Login.java
@@ -21,8 +21,8 @@
 import java.security.AccessControlException;
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.ui.commons.BaseLogin;
 import org.apache.syncope.client.ui.commons.BaseSession;
 import org.apache.syncope.client.ui.commons.panels.BaseSSOLoginFormPanel;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
index 706fd73..b191865 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/pages/Realms.java
@@ -21,20 +21,20 @@
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import java.io.Serializable;
 import java.util.List;
+import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.panels.Realm;
 import org.apache.syncope.client.console.panels.RealmChoicePanel;
 import org.apache.syncope.client.console.panels.RealmChoicePanel.ChosenRealm;
+import org.apache.syncope.client.console.rest.AnyTypeRestClient;
 import org.apache.syncope.client.console.rest.RealmRestClient;
 import org.apache.syncope.client.console.tasks.TemplatesTogglePanel;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.any.ResultPage;
-import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
-import org.apache.syncope.client.console.rest.AnyTypeRestClient;
 import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
 import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java
index 7e04028..ccb7d0b 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java
@@ -18,11 +18,11 @@
  */
 package org.apache.syncope.client.console.panels;
 
-import org.apache.syncope.client.ui.commons.panels.SubmitableModalPanel;
 import java.io.Serializable;
 import org.apache.syncope.client.console.wicket.markup.head.MetaHeaderItem;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
+import org.apache.syncope.client.ui.commons.panels.SubmitableModalPanel;
 import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AccessTokenDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AccessTokenDirectoryPanel.java
index b0b2630..96d8c50 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AccessTokenDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AccessTokenDirectoryPanel.java
@@ -27,8 +27,6 @@
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.AccessTokenDirectoryPanel.AccessTokenDataProvider;
@@ -38,6 +36,8 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.AccessTokenTO;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ActionDataTablePanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ActionDataTablePanel.java
index 65de0f2..33d7a26 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ActionDataTablePanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ActionDataTablePanel.java
@@ -22,13 +22,13 @@
 import java.util.Collection;
 import java.util.List;
 import org.apache.syncope.client.console.commons.ActionTableCheckGroup;
-import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormChoiceComponentUpdatingBehavior;
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.AjaxFallbackDataTable;
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.CheckGroupColumn;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormChoiceComponentUpdatingBehavior;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
index 96faad2..2f9c72c 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
@@ -24,19 +24,19 @@
 import java.util.Collection;
 import java.util.List;
 import java.util.Optional;
-import org.apache.syncope.client.console.rest.BaseRestClient;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
-import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormChoiceComponentUpdatingBehavior;
-import org.apache.syncope.client.console.batch.BatchModal;
 import org.apache.syncope.client.console.batch.BatchContent;
+import org.apache.syncope.client.console.batch.BatchModal;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.DirectoryPanel.EventDataWrapper;
-import org.apache.syncope.client.ui.commons.rest.RestClient;
-import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.CheckGroupColumn;
+import org.apache.syncope.client.console.rest.BaseRestClient;
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.AjaxFallbackDataTable;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.CheckGroupColumn;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksTogglePanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormChoiceComponentUpdatingBehavior;
+import org.apache.syncope.client.ui.commons.rest.RestClient;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
index 079bf86..7ac0909 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyObjectDirectoryPanel.java
@@ -21,11 +21,10 @@
 import java.io.Serializable;
 import java.util.List;
 import org.apache.commons.lang3.SerializationUtils;
-import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.commons.IdRepoConstants;
-import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.console.audit.AuditHistoryModal;
+import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.notifications.NotificationTasks;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.rest.AnyObjectRestClient;
@@ -33,8 +32,9 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.common.lib.AnyOperations;
 import org.apache.syncope.common.lib.SyncopeClientException;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
index fcc1700..1de68b3 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
@@ -27,8 +27,6 @@
 import java.util.Map;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.pages.BasePage;
@@ -36,9 +34,11 @@
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.BooleanPropertyColumn;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
+import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
 import org.apache.syncope.client.ui.commons.wizards.AbstractModalPanelBuilder;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
-import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
 import org.apache.syncope.common.lib.to.AnyTypeClassTO;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.wicket.PageReference;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java
index 4f5db2f..56e76ed 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java
@@ -27,8 +27,6 @@
 import java.util.Map;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.pages.BasePage;
@@ -36,10 +34,12 @@
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.BooleanPropertyColumn;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
+import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
 import org.apache.syncope.client.ui.commons.wizards.AbstractModalPanelBuilder;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
-import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.wicket.PageReference;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.java
index 10be40f..36bdede 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationDirectoryPanel.java
@@ -25,8 +25,6 @@
 import java.util.List;
 import java.util.stream.Collectors;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.panels.ApplicationDirectoryPanel.ApplicationDataProvider;
@@ -35,6 +33,8 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.ApplicationTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationModalPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationModalPanel.java
index f77fed3..2003415 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationModalPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ApplicationModalPanel.java
@@ -19,10 +19,10 @@
 package org.apache.syncope.client.console.panels;
 
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.rest.ApplicationRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.common.lib.to.ApplicationTO;
 import org.apache.wicket.PageReference;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/BeanPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/BeanPanel.java
index 7ff6dd2..f4649f9 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/BeanPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/BeanPanel.java
@@ -35,17 +35,17 @@
 import org.apache.syncope.client.console.panels.search.SearchUtils;
 import org.apache.syncope.client.console.panels.search.UserSearchPanel;
 import org.apache.syncope.client.console.rest.SchemaRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
+import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.client.ui.commons.DateOps;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxCheckBoxPanel;
+import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDateTimeFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
+import org.apache.syncope.client.ui.commons.markup.html.form.AjaxGridFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxSpinnerFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
-import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDateTimeFieldPanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
-import org.apache.syncope.client.lib.SyncopeClient;
-import org.apache.syncope.client.ui.commons.DateOps;
-import org.apache.syncope.client.ui.commons.markup.html.form.AjaxGridFieldPanel;
 import org.apache.syncope.common.lib.Schema;
 import org.apache.syncope.common.lib.report.SearchCondition;
 import org.apache.syncope.common.lib.search.AbstractFiqlSearchConditionBuilder;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DashboardExtensionsPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DashboardExtensionsPanel.java
index c384377..0becf2e 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DashboardExtensionsPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DashboardExtensionsPanel.java
@@ -21,8 +21,8 @@
 import java.lang.reflect.Constructor;
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.syncope.client.ui.commons.annotations.ExtWidget;
 import org.apache.syncope.client.console.widgets.BaseExtWidget;
+import org.apache.syncope.client.ui.commons.annotations.ExtWidget;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.markup.html.WebMarkupContainer;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
index a6b1963..3f1692e 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
@@ -25,17 +25,17 @@
 import java.util.List;
 import java.util.Optional;
 import org.apache.syncope.client.console.PreferenceManager;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.pages.BasePage;
-import org.apache.syncope.client.ui.commons.rest.RestClient;
-import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksTogglePanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
+import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
+import org.apache.syncope.client.ui.commons.rest.RestClient;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DisplayAttributesModalPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DisplayAttributesModalPanel.java
index d682061..d270749 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DisplayAttributesModalPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DisplayAttributesModalPanel.java
@@ -26,9 +26,9 @@
 import java.util.stream.Collectors;
 import org.apache.syncope.client.console.PreferenceManager;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel;
 import org.apache.syncope.common.lib.search.SearchableFields;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DomainDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DomainDirectoryPanel.java
index 69ccf4b..58f90b6 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DomainDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DomainDirectoryPanel.java
@@ -24,7 +24,6 @@
 import java.util.Iterator;
 import java.util.List;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.panels.DomainDirectoryPanel.DomainProvider;
@@ -33,6 +32,7 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
 import org.apache.syncope.common.keymaster.client.api.DomainOps;
 import org.apache.syncope.common.keymaster.client.api.KeymasterException;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java
index 676347d..8b26080 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmDirectoryPanel.java
@@ -24,8 +24,6 @@
 import java.util.Iterator;
 import java.util.List;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.pages.BasePage;
@@ -35,6 +33,8 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.console.wizards.DynRealmWrapper;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.DynRealmTO;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmModalPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmModalPanel.java
index e3d5f41..cd3438c 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmModalPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/DynRealmModalPanel.java
@@ -21,7 +21,6 @@
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.search.AnyObjectSearchPanel;
 import org.apache.syncope.client.console.panels.search.GroupSearchPanel;
@@ -30,9 +29,10 @@
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
 import org.apache.syncope.client.console.rest.DynRealmRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
-import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.console.wizards.DynRealmWrapper;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java
index 4eea733..925749a 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationDirectoryPanel.java
@@ -24,8 +24,6 @@
 import java.util.Iterator;
 import java.util.List;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.pages.BasePage;
@@ -34,10 +32,12 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksTogglePanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.ImplementationTO;
-import org.apache.syncope.common.lib.types.ImplementationEngine;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.ImplementationEngine;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationModalPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationModalPanel.java
index ff434d5..1e61853 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationModalPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ImplementationModalPanel.java
@@ -25,11 +25,11 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.SyncopeWebApplication;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.commons.ImplementationInfoProvider.ViewMode;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.rest.ImplementationRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.common.lib.to.ImplementationTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java
index 029bafb..db77482 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java
@@ -26,13 +26,13 @@
 import java.util.List;
 import java.util.Optional;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormChoiceComponentUpdatingBehavior;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksTogglePanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormChoiceComponentUpdatingBehavior;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.PageReference;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/LogsPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/LogsPanel.java
index 866b853..6726fa1 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/LogsPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/LogsPanel.java
@@ -23,9 +23,9 @@
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.rest.LoggerConf;
 import org.apache.syncope.client.console.rest.LoggerConfOp;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/NetworkServiceDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/NetworkServiceDirectoryPanel.java
index cd21fad..9855f30 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/NetworkServiceDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/NetworkServiceDirectoryPanel.java
@@ -23,14 +23,14 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.panels.NetworkServiceDirectoryPanel.NetworkServiceProvider;
 import org.apache.syncope.client.console.rest.SyncopeRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.common.keymaster.client.api.ServiceOps;
+import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDirectoryPanel.java
index 40704f7..0edcc04 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDirectoryPanel.java
@@ -25,19 +25,19 @@
 import java.util.List;
 import java.util.stream.Collectors;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.panels.ParametersDirectoryPanel.ParametersProvider;
 import org.apache.syncope.client.console.rest.SyncopeRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.client.ui.commons.wizards.AbstractModalPanelBuilder;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
 import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
+import org.apache.syncope.client.ui.commons.wizards.AbstractModalPanelBuilder;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.keymaster.client.api.ConfParamOps;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.PageReference;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ParametersWizardAttrStep.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ParametersWizardAttrStep.java
index 5f83d17..8ce551c 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ParametersWizardAttrStep.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ParametersWizardAttrStep.java
@@ -22,12 +22,12 @@
 import javax.ws.rs.core.MediaType;
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.time.DateFormatUtils;
+import org.apache.syncope.client.console.wicket.markup.html.form.BinaryFieldPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
+import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDateTimeFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxSpinnerFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
-import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDateTimeFieldPanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.BinaryFieldPanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ParametersWizardSchemaStep.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ParametersWizardSchemaStep.java
index 4c1f984..50fe4ce 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ParametersWizardSchemaStep.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/ParametersWizardSchemaStep.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.client.console.panels;
 
 import java.util.List;
-
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxCheckBoxPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/PlainSchemaDetails.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/PlainSchemaDetails.java
index 80d9244..ecefcbb 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/PlainSchemaDetails.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/PlainSchemaDetails.java
@@ -25,10 +25,10 @@
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.commons.PropertyList;
 import org.apache.syncope.client.console.rest.ImplementationRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.MIMETypesLoader;
 import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxCheckBoxPanel;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.java
index 9cdaa59..ffcacb7 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeDirectoryPanel.java
@@ -23,8 +23,6 @@
 import java.util.Iterator;
 import java.util.List;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.rest.ApplicationRestClient;
@@ -32,9 +30,11 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.ui.commons.panels.ModalPanel;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.ApplicationTO;
 import org.apache.syncope.common.lib.to.PrivilegeTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeWizardBuilder.java
index a3aa1b3..6087ec7 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/PrivilegeWizardBuilder.java
@@ -20,10 +20,10 @@
 
 import java.io.Serializable;
 import org.apache.syncope.client.console.rest.ApplicationRestClient;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.JsonEditorPanel;
 import org.apache.syncope.client.console.wizards.BaseAjaxWizardBuilder;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.common.lib.to.ApplicationTO;
 import org.apache.syncope.common.lib.to.PrivilegeTO;
 import org.apache.wicket.PageReference;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
index 8ce7769..d99ed22 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/Realm.java
@@ -27,16 +27,16 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.client.console.SyncopeWebApplication;
-import org.apache.syncope.client.ui.commons.ConnIdSpecialName;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.commons.ITabComponent;
-import org.apache.syncope.client.ui.commons.status.StatusUtils;
 import org.apache.syncope.client.console.layout.AnyLayout;
 import org.apache.syncope.client.console.layout.AnyLayoutUtils;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
 import org.apache.syncope.client.console.wizards.any.ConnObjectPanel;
+import org.apache.syncope.client.ui.commons.ConnIdSpecialName;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.status.StatusUtils;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
 import org.apache.syncope.common.lib.to.ConnObjectTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java
index 23c86dc..f92ddcc 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java
@@ -27,8 +27,6 @@
 import java.util.Map;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.pages.BasePage;
@@ -37,9 +35,11 @@
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.BooleanPropertyColumn;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
+import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
 import org.apache.syncope.client.ui.commons.wizards.AbstractModalPanelBuilder;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
-import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
 import org.apache.syncope.common.lib.to.RelationshipTypeTO;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.wicket.PageReference;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java
index cacdc8f..cf7a1b2 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/RoleDirectoryPanel.java
@@ -26,13 +26,11 @@
 import java.util.List;
 import org.apache.commons.lang3.SerializationUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.layout.AnyLayout;
-import org.apache.syncope.client.console.layout.AnyLayoutWrapper;
 import org.apache.syncope.client.console.layout.AnyLayoutUtils;
+import org.apache.syncope.client.console.layout.AnyLayoutWrapper;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.RoleDirectoryPanel.RoleDataProvider;
 import org.apache.syncope.client.console.rest.AnyTypeClassRestClient;
@@ -42,11 +40,13 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.JsonEditorPanel;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
 import org.apache.syncope.client.console.wizards.role.RoleWrapper;
 import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.panels.ModalPanel;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
index 45aefb9..889cfc9 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
@@ -27,8 +27,6 @@
 import java.util.Map;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.pages.BasePage;
@@ -38,10 +36,12 @@
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.to.SchemaTO;
-import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypeWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypeWizardBuilder.java
index 121ea04..292ccff 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypeWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypeWizardBuilder.java
@@ -39,8 +39,8 @@
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
 import org.apache.syncope.common.lib.to.SchemaTO;
 import org.apache.syncope.common.lib.to.VirSchemaTO;
-import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemasPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemasPanel.java
index 4b558e2..4cfcb57 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemasPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SchemasPanel.java
@@ -21,8 +21,8 @@
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
 import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsModalPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsModalPanel.java
index d04a484..3430110 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsModalPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsModalPanel.java
@@ -19,10 +19,10 @@
 package org.apache.syncope.client.console.panels;
 
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.rest.SecurityQuestionRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.common.lib.to.SecurityQuestionTO;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
index 024c9c2..c349a15 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
@@ -24,8 +24,6 @@
 import java.util.Iterator;
 import java.util.List;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.pages.BasePage;
@@ -34,10 +32,12 @@
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.KeyPropertyColumn;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
+import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
 import org.apache.syncope.client.ui.commons.wizards.AbstractModalPanelBuilder;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
-import org.apache.syncope.client.console.wizards.WizardMgtPanel;
-import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
 import org.apache.syncope.common.lib.to.SecurityQuestionTO;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.wicket.PageReference;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/StartAtTogglePanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/StartAtTogglePanel.java
index 9bffe50..35acde0 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/StartAtTogglePanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/StartAtTogglePanel.java
@@ -22,9 +22,9 @@
 import java.util.Date;
 import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.rest.ExecutionRestClient;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxCheckBoxPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDateTimeFieldPanel;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java
index 84c6fbe..0f44989 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/TogglePanel.java
@@ -20,13 +20,12 @@
 
 import java.io.Serializable;
 import java.util.Optional;
-
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.status.StatusBean;
 import org.apache.syncope.client.console.policies.PolicyRuleWrapper;
 import org.apache.syncope.client.console.reports.ReportletWrapper;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.status.StatusBean;
 import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.common.keymaster.client.api.model.Domain;
 import org.apache.syncope.common.lib.Attr;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java
index 51d8e2c..fdead33 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java
@@ -18,7 +18,6 @@
  */
 package org.apache.syncope.client.console.panels;
 
-import org.apache.syncope.client.ui.commons.panels.SubmitableModalPanel;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -26,8 +25,6 @@
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.TypeExtensionDirectoryPanel.TypeExtensionDataProvider;
@@ -36,8 +33,11 @@
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.any.TypeExtensionWizardBuilder;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
+import org.apache.syncope.client.ui.commons.panels.SubmitableModalPanel;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.request.GroupUR;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.TypeExtensionTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java
index 956c726..dfdca7a 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/UserDirectoryPanel.java
@@ -24,11 +24,10 @@
 import java.util.Collection;
 import java.util.List;
 import org.apache.commons.lang3.SerializationUtils;
-import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.commons.IdRepoConstants;
-import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.console.audit.AuditHistoryModal;
+import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.notifications.NotificationTasks;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.rest.UserRestClient;
@@ -37,8 +36,9 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
 import org.apache.syncope.common.lib.AnyOperations;
@@ -46,8 +46,8 @@
 import org.apache.syncope.common.lib.info.PlatformInfo;
 import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.AnyTypeClassTO;
-import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.AuditElements;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java
index 1b624b5..3a3b7b1 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java
@@ -24,8 +24,8 @@
 import java.util.Map;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.tuple.Pair;
-import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.console.rest.AnyTypeClassRestClient;
 import org.apache.syncope.client.console.rest.GroupRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/AnySelectionDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/AnySelectionDirectoryPanel.java
index 672287e..77b5ef6 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/AnySelectionDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/AnySelectionDirectoryPanel.java
@@ -27,8 +27,8 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.common.lib.to.AnyTypeClassTO;
 import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.syncope.common.lib.to.AnyTypeClassTO;
 import org.apache.syncope.common.lib.types.AnyEntitlement;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java
index 1996a97..e0e4e6f 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/search/SearchClausePanel.java
@@ -35,21 +35,21 @@
 import org.apache.commons.lang3.time.DateFormatUtils;
 import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.commons.lang3.tuple.Pair;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.panels.search.SearchClause.Comparator;
 import org.apache.syncope.client.console.panels.search.SearchClause.Operator;
 import org.apache.syncope.client.console.panels.search.SearchClause.Type;
 import org.apache.syncope.client.console.rest.GroupRestClient;
 import org.apache.syncope.client.console.rest.RelationshipTypeRestClient;
 import org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxEventBehavior;
+import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.SchemaUtils;
 import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
+import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDateTimeFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
+import org.apache.syncope.client.ui.commons.markup.html.form.AjaxSpinnerFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
-import org.apache.syncope.client.lib.SyncopeClient;
-import org.apache.syncope.client.ui.commons.SchemaUtils;
-import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDateTimeFieldPanel;
-import org.apache.syncope.client.ui.commons.markup.html.form.AjaxSpinnerFieldPanel;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/AccountPolicyDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/AccountPolicyDirectoryPanel.java
index dd5747c..b78e9e3 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/AccountPolicyDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/AccountPolicyDirectoryPanel.java
@@ -24,8 +24,8 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.common.lib.policy.AccountPolicyTO;
-import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PasswordPolicyDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PasswordPolicyDirectoryPanel.java
index 409e0bc..7f4127b 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PasswordPolicyDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PasswordPolicyDirectoryPanel.java
@@ -23,8 +23,8 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.common.lib.policy.PasswordPolicyTO;
-import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java
index db1a5f4..f462663 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyDirectoryPanel.java
@@ -25,8 +25,6 @@
 import java.util.List;
 import org.apache.commons.lang3.SerializationUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.panels.DirectoryPanel;
@@ -37,11 +35,13 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.policy.PolicyTO;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyModalPanelBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyModalPanelBuilder.java
index 7778556..f3b8a5e 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyModalPanelBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyModalPanelBuilder.java
@@ -25,12 +25,12 @@
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
-import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.console.panels.AbstractModalPanel;
 import org.apache.syncope.client.console.rest.PolicyRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxCheckBoxPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
@@ -38,9 +38,9 @@
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxSpinnerFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
+import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
 import org.apache.syncope.client.ui.commons.wizards.AbstractModalPanelBuilder;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
-import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
 import org.apache.syncope.common.lib.policy.PolicyTO;
 import org.apache.syncope.common.lib.types.BackOffStrategy;
 import org.apache.syncope.common.lib.types.ConflictResolutionAction;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java
index ea32aae..48904d3 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleDirectoryPanel.java
@@ -25,8 +25,6 @@
 import java.util.List;
 import java.util.stream.Collectors;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.panels.DirectoryPanel;
@@ -36,15 +34,17 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.ui.commons.panels.ModalPanel;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.policy.ComposablePolicy;
 import org.apache.syncope.common.lib.policy.PolicyTO;
 import org.apache.syncope.common.lib.policy.RuleConf;
 import org.apache.syncope.common.lib.to.ImplementationTO;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.IdRepoImplementationType;
 import org.apache.syncope.common.lib.types.ImplementationEngine;
 import org.apache.syncope.common.lib.types.PolicyType;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleWizardBuilder.java
index 46b96f0..f79dc64 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/policies/PolicyRuleWizardBuilder.java
@@ -23,14 +23,14 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.panels.BeanPanel;
 import org.apache.syncope.client.console.rest.ImplementationRestClient;
 import org.apache.syncope.client.console.rest.PolicyRestClient;
 import org.apache.syncope.client.console.wizards.BaseAjaxWizardBuilder;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
-import org.apache.syncope.common.lib.policy.PolicyTO;
 import org.apache.syncope.common.lib.policy.ComposablePolicy;
+import org.apache.syncope.common.lib.policy.PolicyTO;
 import org.apache.syncope.common.lib.policy.RuleConf;
 import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.ImplementationTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java
index d90efdf..c322182 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java
@@ -27,8 +27,6 @@
 import java.util.List;
 import org.apache.commons.lang3.SerializationUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.pages.BasePage;
@@ -43,11 +41,13 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.console.widgets.JobActionPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.JobTO;
 import org.apache.syncope.common.lib.to.ReportTO;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.wicket.Component;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java
index bd4f3ed..0ab4c6a 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java
@@ -25,21 +25,28 @@
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.commons.TemplateContent;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
+import org.apache.syncope.client.console.commons.TemplateContent;
 import org.apache.syncope.client.console.notifications.TemplateModal;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.DirectoryPanel;
+import org.apache.syncope.client.console.reports.ReportTemplateDirectoryPanel.ReportTemplateProvider;
+import org.apache.syncope.client.console.rest.ReportRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.XMLEditorPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
+import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
+import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
 import org.apache.syncope.client.ui.commons.wizards.AbstractModalPanelBuilder;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.ReportTemplateTO;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.ReportTemplateFormat;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
@@ -47,16 +54,9 @@
 import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.StringResourceModel;
-import org.apache.syncope.client.console.reports.ReportTemplateDirectoryPanel.ReportTemplateProvider;
-import org.apache.syncope.client.console.rest.ReportRestClient;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.XMLEditorPanel;
-import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
-import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
-import org.apache.syncope.common.lib.types.ReportTemplateFormat;
-import org.apache.wicket.model.PropertyModel;
 
 public class ReportTemplateDirectoryPanel
         extends DirectoryPanel<ReportTemplateTO, ReportTemplateTO, ReportTemplateProvider, ReportRestClient> {
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportletDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportletDirectoryPanel.java
index cf9ac9a..2bfe0d0 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportletDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportletDirectoryPanel.java
@@ -26,8 +26,6 @@
 import java.util.Objects;
 import java.util.stream.Collectors;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.panels.DirectoryPanel;
@@ -37,14 +35,16 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.ui.commons.panels.ModalPanel;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.report.ReportletConf;
 import org.apache.syncope.common.lib.to.ImplementationTO;
 import org.apache.syncope.common.lib.to.ReportTO;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.IdRepoImplementationType;
 import org.apache.syncope.common.lib.types.ImplementationEngine;
 import org.apache.wicket.PageReference;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportletWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportletWizardBuilder.java
index 191a5ec..601dd8e 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportletWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/reports/ReportletWizardBuilder.java
@@ -21,12 +21,12 @@
 import com.fasterxml.jackson.databind.json.JsonMapper;
 import java.io.Serializable;
 import java.util.stream.Collectors;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.panels.BeanPanel;
 import org.apache.syncope.client.console.panels.search.SearchUtils;
 import org.apache.syncope.client.console.rest.ImplementationRestClient;
 import org.apache.syncope.client.console.rest.ReportRestClient;
 import org.apache.syncope.client.console.wizards.BaseAjaxWizardBuilder;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.common.lib.report.ReportletConf;
 import org.apache.syncope.common.lib.to.EntityTO;
@@ -40,8 +40,8 @@
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.wizard.WizardModel;
 import org.apache.wicket.extensions.wizard.WizardStep;
-import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.wicket.model.PropertyModel;
 import org.springframework.beans.BeanWrapper;
 import org.springframework.beans.PropertyAccessorFactory;
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java
index ce29816..7fec2ba 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/AbstractAnyRestClient.java
@@ -30,9 +30,9 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.cxf.jaxrs.client.Client;
 import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.syncope.client.lib.batch.BatchRequest;
 import org.apache.syncope.client.ui.commons.status.StatusBean;
 import org.apache.syncope.client.ui.commons.status.StatusUtils;
-import org.apache.syncope.client.lib.batch.BatchRequest;
 import org.apache.syncope.common.lib.request.ResourceAR;
 import org.apache.syncope.common.lib.request.ResourceDR;
 import org.apache.syncope.common.lib.request.StatusR;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/AuditRestClient.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/AuditRestClient.java
index 3cf291f..cf6d10d 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/AuditRestClient.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/AuditRestClient.java
@@ -31,8 +31,8 @@
 import org.apache.syncope.common.lib.types.AuditElements;
 import org.apache.syncope.common.lib.types.AuditLoggerName;
 import org.apache.syncope.common.rest.api.beans.AuditQuery;
-import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 import org.apache.syncope.common.rest.api.service.AuditService;
+import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 
 public class AuditRestClient extends BaseRestClient {
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java
index 979d173..7522046 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java
@@ -20,12 +20,11 @@
 
 import java.net.URI;
 import java.util.Optional;
-
 import javax.ws.rs.core.HttpHeaders;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.rest.RestClient;
 import org.apache.syncope.common.lib.search.OrderByClauseBuilder;
 import org.apache.syncope.common.lib.types.ExecStatus;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/ExecutionRestClient.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/ExecutionRestClient.java
index 75b7224..61e8a30 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/ExecutionRestClient.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/ExecutionRestClient.java
@@ -19,10 +19,10 @@
 package org.apache.syncope.client.console.rest;
 
 import java.util.Date;
-import org.apache.syncope.client.ui.commons.rest.RestClient;
 import java.util.List;
 import java.util.Map;
 import org.apache.syncope.client.lib.batch.BatchRequest;
+import org.apache.syncope.client.ui.commons.rest.RestClient;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/SchemaRestClient.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/SchemaRestClient.java
index adfe707..2167146 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/SchemaRestClient.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/SchemaRestClient.java
@@ -23,11 +23,11 @@
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.SchemaTO;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
 import org.apache.syncope.common.lib.to.DerSchemaTO;
 import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
+import org.apache.syncope.common.lib.to.SchemaTO;
 import org.apache.syncope.common.lib.to.VirSchemaTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.SchemaType;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/SyncopeRestClient.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/SyncopeRestClient.java
index 47f7ef0..26131b3 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/SyncopeRestClient.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/SyncopeRestClient.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.client.console.rest;
 
-import javax.ws.rs.core.Response;
 import java.util.List;
+import javax.ws.rs.core.Response;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.rest.api.service.SyncopeService;
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
index e32c100..4719f33 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
@@ -27,15 +27,15 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.lib.batch.BatchRequest;
 import org.apache.syncope.client.ui.commons.DateOps;
-import org.apache.syncope.common.lib.to.TaskTO;
-import org.apache.syncope.common.lib.to.NotificationTaskTO;
-import org.apache.syncope.common.lib.to.PropagationTaskTO;
-import org.apache.syncope.common.lib.to.PushTaskTO;
-import org.apache.syncope.common.lib.to.SchedTaskTO;
-import org.apache.syncope.common.lib.to.PullTaskTO;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.JobTO;
+import org.apache.syncope.common.lib.to.NotificationTaskTO;
 import org.apache.syncope.common.lib.to.PagedResult;
+import org.apache.syncope.common.lib.to.PropagationTaskTO;
+import org.apache.syncope.common.lib.to.PullTaskTO;
+import org.apache.syncope.common.lib.to.PushTaskTO;
+import org.apache.syncope.common.lib.to.SchedTaskTO;
+import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.JobAction;
 import org.apache.syncope.common.lib.types.TaskType;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/TemplateRestClient.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/TemplateRestClient.java
index 214bb9a..ec14815 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/TemplateRestClient.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/rest/TemplateRestClient.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.client.console.rest;
 
-import org.apache.syncope.client.ui.commons.rest.RestClient;
 import java.util.List;
+import org.apache.syncope.client.ui.commons.rest.RestClient;
 
 public interface TemplateRestClient<T, F> extends RestClient {
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/status/ChangePasswordModal.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/status/ChangePasswordModal.java
index cfa53fd..ed7b42b 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/status/ChangePasswordModal.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/status/ChangePasswordModal.java
@@ -22,15 +22,15 @@
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.status.StatusBean;
 import org.apache.syncope.client.console.panels.AbstractModalPanel;
 import org.apache.syncope.client.console.panels.ListViewPanel;
 import org.apache.syncope.client.console.rest.UserRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.console.wizards.any.StatusPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.status.StatusBean;
 import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.client.ui.commons.wizards.any.PasswordPanel;
-import org.apache.syncope.client.console.wizards.any.StatusPanel;
 import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
 import org.apache.syncope.common.lib.request.PasswordPatch;
 import org.apache.syncope.common.lib.request.UserUR;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/CrontabPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/CrontabPanel.java
index 9f77d68..cb2d07d 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/CrontabPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/CrontabPanel.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.client.console.tasks;
 
 import java.util.List;
-
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java
index 0ae871c..a4873d1 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java
@@ -23,12 +23,10 @@
 import java.util.Iterator;
 import java.util.List;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
 import org.apache.syncope.client.console.pages.BasePage;
-import org.apache.syncope.client.console.panels.DirectoryPanel;
 import org.apache.syncope.client.console.panels.AjaxDataTablePanel;
+import org.apache.syncope.client.console.panels.DirectoryPanel;
 import org.apache.syncope.client.console.panels.MultilevelPanel;
 import org.apache.syncope.client.console.panels.MultilevelPanel.SecondLevel;
 import org.apache.syncope.client.console.rest.ExecutionRestClient;
@@ -38,6 +36,8 @@
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java
index 64dcb57..32506d3 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java
@@ -24,24 +24,24 @@
 import java.util.List;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
-import org.apache.syncope.client.console.rest.TaskRestClient;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.commons.TaskDataProvider;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.MultilevelPanel;
+import org.apache.syncope.client.console.rest.TaskRestClient;
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.CollectionPropertyColumn;
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.KeyPropertyColumn;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.panels.ModalPanel;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
-import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.NotificationTaskTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.MailTemplateFormat;
+import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java
index e5fd146..7d398f1 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java
@@ -24,23 +24,23 @@
 import java.util.List;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
-import org.apache.syncope.client.console.rest.TaskRestClient;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.commons.TaskDataProvider;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.MultilevelPanel;
+import org.apache.syncope.client.console.rest.TaskRestClient;
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.KeyPropertyColumn;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.panels.ModalPanel;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.PropagationTaskTO;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.TaskType;
-import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/ProvisioningTaskDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/ProvisioningTaskDirectoryPanel.java
index c83b50b..2fd8dc1 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/ProvisioningTaskDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/ProvisioningTaskDirectoryPanel.java
@@ -22,7 +22,6 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.panels.MultilevelPanel;
 import org.apache.syncope.client.console.rest.TaskRestClient;
 import org.apache.syncope.client.console.wicket.ajax.IndicatorAjaxTimerBehavior;
@@ -31,6 +30,7 @@
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.KeyPropertyColumn;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.widgets.JobActionPanel;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.common.lib.to.JobTO;
 import org.apache.syncope.common.lib.to.ProvisioningTaskTO;
 import org.apache.syncope.common.lib.to.PullTaskTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
index 8d6ec33..9a120c0 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
@@ -29,7 +29,6 @@
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.IdRepoConstants;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.commons.TaskDataProvider;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.MultilevelPanel;
@@ -42,16 +41,17 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
-import org.apache.syncope.client.ui.commons.panels.ModalPanel;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.client.console.widgets.JobActionPanel;
-import org.apache.syncope.common.lib.types.TaskType;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.panels.ModalPanel;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.JobTO;
 import org.apache.syncope.common.lib.to.SchedTaskTO;
 import org.apache.syncope.common.lib.to.TemplatableTO;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.wicket.Component;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java
index 0d0ff3a..7701412 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java
@@ -22,25 +22,25 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.stream.Collectors;
-import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.console.commons.RealmsUtils;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.rest.RealmRestClient;
 import org.apache.syncope.client.console.rest.TaskRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxSearchFieldPanel;
+import org.apache.syncope.client.console.wizards.BaseAjaxWizardBuilder;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxCheckBoxPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.AjaxSearchFieldPanel;
-import org.apache.syncope.client.console.wizards.BaseAjaxWizardBuilder;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.ProvisioningTaskTO;
-import org.apache.syncope.common.lib.to.SchedTaskTO;
 import org.apache.syncope.common.lib.to.PullTaskTO;
 import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.common.lib.to.RealmTO;
+import org.apache.syncope.common.lib.to.SchedTaskTO;
 import org.apache.syncope.common.lib.types.MatchingRule;
 import org.apache.syncope.common.lib.types.PullMode;
 import org.apache.syncope.common.lib.types.TaskType;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.java
index 26d20db..bf9d181 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.java
@@ -18,14 +18,14 @@
  */
 package org.apache.syncope.client.console.tasks;
 
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.TaskDataProvider;
-import org.apache.syncope.client.console.panels.DirectoryPanel;
 import org.apache.syncope.client.console.panels.AjaxDataTablePanel;
+import org.apache.syncope.client.console.panels.DirectoryPanel;
 import org.apache.syncope.client.console.panels.MultilevelPanel;
 import org.apache.syncope.client.console.rest.TaskRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.panels.ModalPanel;
 import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.types.TaskType;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/TaskStartAtTogglePanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/TaskStartAtTogglePanel.java
index 69ba77d..cbb726d 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/TaskStartAtTogglePanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/TaskStartAtTogglePanel.java
@@ -19,10 +19,10 @@
 package org.apache.syncope.client.console.tasks;
 
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.StartAtTogglePanel;
 import org.apache.syncope.client.console.rest.TaskRestClient;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/TemplatesTogglePanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/TemplatesTogglePanel.java
index 0b37166..8a0f0d5 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/TemplatesTogglePanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/TemplatesTogglePanel.java
@@ -28,15 +28,15 @@
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.TogglePanel;
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
-import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
-import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.any.AnyObjectTemplateWizardBuilder;
 import org.apache.syncope.client.console.wizards.any.AnyWizardBuilder;
-import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.client.console.wizards.any.GroupTemplateWizardBuilder;
 import org.apache.syncope.client.console.wizards.any.TemplateWizardBuilder;
 import org.apache.syncope.client.console.wizards.any.UserTemplateWizardBuilder;
+import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
+import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
+import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java
index 6a0628d..47bf626 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AjaxFallbackDataTable.java
@@ -21,11 +21,11 @@
 import java.io.Serializable;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.panels.AjaxDataTablePanel;
 import org.apache.syncope.client.console.wicket.ajax.markup.html.navigation.paging.AjaxDataNavigationToolbar;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksTogglePanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AttrColumn.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AttrColumn.java
index 6db2776..06a01a5 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AttrColumn.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/AttrColumn.java
@@ -20,6 +20,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.syncope.common.lib.Attributable;
 import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
@@ -27,7 +28,6 @@
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.syncope.common.lib.Attributable;
 
 public class AttrColumn<T extends Attributable> extends AbstractColumn<T, String> {
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/BatchResponseColumn.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/BatchResponseColumn.java
index 4cc4c96..1a801cc 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/BatchResponseColumn.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/BatchResponseColumn.java
@@ -21,7 +21,6 @@
 import java.lang.reflect.InvocationTargetException;
 import java.util.Map;
 import java.util.Objects;
-
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.wicket.Component;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/ConnObjectAttrColumn.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/ConnObjectAttrColumn.java
index 1cf45e6..0e00d6c 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/ConnObjectAttrColumn.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/ConnObjectAttrColumn.java
@@ -21,6 +21,7 @@
 import java.util.List;
 import java.util.Optional;
 import org.apache.syncope.common.lib.Attr;
+import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
@@ -28,7 +29,6 @@
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.syncope.common.lib.to.ConnObjectTO;
 
 public class ConnObjectAttrColumn extends AbstractColumn<ConnObjectTO, String> {
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/KeyPropertyColumn.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/KeyPropertyColumn.java
index fcae3b3..bad3a22 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/KeyPropertyColumn.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/extensions/markup/html/repeater/data/table/KeyPropertyColumn.java
@@ -18,6 +18,7 @@
  */
 package org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table;
 
+import java.util.Objects;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
@@ -29,8 +30,6 @@
 import org.springframework.beans.BeanWrapper;
 import org.springframework.beans.BeanWrapperImpl;
 
-import java.util.Objects;
-
 /**
  * Format column's UUID value.
  */
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/head/MetaHeaderItem.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/head/MetaHeaderItem.java
index f071ed3..6691027 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/head/MetaHeaderItem.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/head/MetaHeaderItem.java
@@ -20,7 +20,6 @@
 
 import java.io.Serializable;
 import java.util.List;
-
 import org.apache.wicket.markup.head.HeaderItem;
 import org.apache.wicket.request.Response;
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
index a99fe33..09f871e 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
@@ -25,12 +25,20 @@
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.syncope.client.console.panels.AbstractModalPanel;
+import org.apache.syncope.client.console.wicket.ajax.form.IndicatorModalCloseBehavior;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.buttons.DefaultModalCloseButton;
+import org.apache.syncope.client.ui.commons.panels.ModalPanel;
+import org.apache.syncope.client.ui.commons.panels.NotificationPanel;
+import org.apache.syncope.client.ui.commons.panels.SubmitableModalPanel;
 import org.apache.wicket.Component;
 import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.event.IEvent;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.list.ListItem;
@@ -38,17 +46,9 @@
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.util.io.IClusterable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.syncope.client.ui.commons.panels.SubmitableModalPanel;
-import org.apache.syncope.client.console.wicket.ajax.form.IndicatorModalCloseBehavior;
-import org.apache.syncope.client.ui.commons.panels.ModalPanel;
-import org.apache.syncope.client.ui.commons.panels.NotificationPanel;
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.event.IEvent;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
-import org.apache.wicket.util.io.IClusterable;
 
 public class BaseModal<T extends Serializable> extends Modal<T> {
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
index 75df2b6..a5eefe3 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksTogglePanel.java
@@ -23,32 +23,32 @@
 import java.util.UUID;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.panels.ConfParam;
-import org.apache.syncope.client.ui.commons.status.StatusBean;
 import org.apache.syncope.client.console.panels.TogglePanel;
+import org.apache.syncope.client.console.panels.ToggleableTarget;
 import org.apache.syncope.client.console.policies.PolicyRuleWrapper;
 import org.apache.syncope.client.console.reports.ReportletWrapper;
-import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.client.console.wizards.any.GroupWrapper;
+import org.apache.syncope.client.ui.commons.status.StatusBean;
+import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
-import org.apache.syncope.common.lib.to.AnyObjectTO;
-import org.apache.syncope.common.lib.to.EntityTO;
-import org.apache.syncope.common.lib.to.GroupTO;
-import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.syncope.common.keymaster.client.api.model.Domain;
 import org.apache.syncope.common.lib.Attr;
-import org.apache.syncope.common.lib.to.SecurityQuestionTO;
 import org.apache.syncope.common.lib.policy.PolicyTO;
 import org.apache.syncope.common.lib.to.AccessTokenTO;
+import org.apache.syncope.common.lib.to.AnyObjectTO;
+import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.ExecTO;
+import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.JobTO;
+import org.apache.syncope.common.lib.to.NamedEntityTO;
+import org.apache.syncope.common.lib.to.SecurityQuestionTO;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.event.IEvent;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.panel.Fragment;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.syncope.client.console.panels.ToggleableTarget;
-import org.apache.syncope.common.keymaster.client.api.model.Domain;
-import org.apache.syncope.common.lib.to.NamedEntityTO;
 
 public class ActionLinksTogglePanel<T extends Serializable> extends TogglePanel<Serializable> {
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
index 09250bb..4591590 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
@@ -21,9 +21,9 @@
 import java.io.Serializable;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
 import org.apache.syncope.client.console.wicket.markup.html.link.VeilPopupSettings;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
index 4fc58f5..d97928f 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/BinaryFieldPanel.java
@@ -18,8 +18,6 @@
  */
 package org.apache.syncope.client.console.wicket.markup.html.form;
 
-import org.apache.syncope.client.ui.commons.markup.html.form.BinaryFieldDownload;
-
 import static de.agilecoders.wicket.jquery.JQuery.$;
 
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.fileinput.BootstrapFileInputField;
@@ -38,12 +36,13 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.SyncopeWebApplication;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.commons.PreviewUtils;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.HttpResourceStream;
+import org.apache.syncope.client.ui.commons.markup.html.form.BaseBinaryFieldPanel;
+import org.apache.syncope.client.ui.commons.markup.html.form.BinaryFieldDownload;
 import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.preview.BinaryPreviewer;
-import org.apache.syncope.client.ui.commons.markup.html.form.BaseBinaryFieldPanel;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
 import org.apache.syncope.client.ui.commons.rest.ResponseHolder;
 import org.apache.wicket.Component;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.java
index cf2ce18..995f6fa 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/MultiFieldPanel.java
@@ -18,13 +18,13 @@
  */
 package org.apache.syncope.client.console.wicket.markup.html.form;
 
-import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
-import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import java.io.Serializable;
 import java.util.List;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.markup.html.form.AbstractMultiPanel;
+import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.panel.Panel;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/SelectableRecorder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/SelectableRecorder.java
index a156f93..5886bce 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/SelectableRecorder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/SelectableRecorder.java
@@ -22,7 +22,6 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.extensions.markup.html.form.palette.Palette;
 import org.apache.wicket.extensions.markup.html.form.palette.component.Recorder;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/JobActionPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/JobActionPanel.java
index 58e5b7c..2c852ea 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/JobActionPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/JobActionPanel.java
@@ -24,13 +24,13 @@
 import java.io.Serializable;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.rest.NotificationRestClient;
 import org.apache.syncope.client.console.rest.ReportRestClient;
 import org.apache.syncope.client.console.rest.TaskRestClient;
 import org.apache.syncope.client.console.wicket.ajax.markup.html.IndicatorAjaxLink;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.common.lib.to.JobTO;
 import org.apache.syncope.common.lib.types.JobAction;
 import org.apache.wicket.Component;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
index 12dde2d..9424c83 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
@@ -30,8 +30,6 @@
 import java.util.Optional;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.DirectoryPanel;
@@ -51,17 +49,19 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksTogglePanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.JobTO;
-import org.apache.syncope.common.lib.to.ReportTO;
 import org.apache.syncope.common.lib.to.ProvisioningTaskTO;
 import org.apache.syncope.common.lib.to.PullTaskTO;
+import org.apache.syncope.common.lib.to.ReportTO;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.JobAction;
 import org.apache.syncope.common.lib.types.JobType;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java
index dd69333..03bbf9d 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/NumberWidget.java
@@ -22,15 +22,15 @@
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.console.pages.BasePage;
+import org.apache.syncope.client.console.pages.Realms;
+import org.apache.syncope.client.console.pages.Security;
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.syncope.client.console.pages.Realms;
-import org.apache.syncope.client.console.pages.Security;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 
 public class NumberWidget extends BaseWidget {
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/ReconDetailsModalPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/ReconDetailsModalPanel.java
index 6333b19..37398f6 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/ReconDetailsModalPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/ReconDetailsModalPanel.java
@@ -23,8 +23,6 @@
 import java.util.Iterator;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.panels.AbstractModalPanel;
 import org.apache.syncope.client.console.panels.DirectoryPanel;
@@ -34,6 +32,8 @@
 import org.apache.syncope.client.console.widgets.reconciliation.Any;
 import org.apache.syncope.client.console.widgets.reconciliation.Misaligned;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/ReconciliationWidget.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/ReconciliationWidget.java
index 90307ca..ab82633 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/ReconciliationWidget.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/widgets/ReconciliationWidget.java
@@ -33,10 +33,8 @@
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Pair;
-import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
+import org.apache.syncope.client.console.SyncopeWebApplication;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.DirectoryPanel;
@@ -55,11 +53,13 @@
 import org.apache.syncope.client.console.widgets.reconciliation.ReconciliationReport;
 import org.apache.syncope.client.console.widgets.reconciliation.ReconciliationReportParser;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.ReportTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.common.lib.types.ReportExecExportFormat;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.ReportExecExportFormat;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.PageReference;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
index 72bab8c..86c5e6e 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
@@ -18,17 +18,22 @@
  */
 package org.apache.syncope.client.console.wizards;
 
-import org.apache.syncope.client.ui.commons.wizards.ModalPanelBuilder;
-import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksTogglePanel;
 import org.apache.syncope.client.console.wizards.any.ResultPage;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
+import org.apache.syncope.client.ui.commons.panels.NotificationPanel;
+import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
+import org.apache.syncope.client.ui.commons.wizards.AbstractWizardMgtPanel;
+import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
+import org.apache.syncope.client.ui.commons.wizards.ModalPanelBuilder;
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.PageReference;
@@ -37,6 +42,7 @@
 import org.apache.wicket.event.Broadcast;
 import org.apache.wicket.event.IEvent;
 import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.markup.html.panel.Fragment;
@@ -45,12 +51,6 @@
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.StringResourceModel;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksTogglePanel;
-import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
-import org.apache.syncope.client.ui.commons.panels.NotificationPanel;
-import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
-import org.apache.syncope.client.ui.commons.wizards.AbstractWizardMgtPanel;
-import org.apache.wicket.markup.html.basic.Label;
 
 public abstract class WizardMgtPanel<T extends Serializable> extends AbstractWizardMgtPanel<T> {
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrs.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrs.java
index 5f0c422..9b3459b 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrs.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrs.java
@@ -29,11 +29,11 @@
 import org.apache.syncope.client.console.rest.GroupRestClient;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
-import org.apache.syncope.common.lib.to.SchemaTO;
 import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
+import org.apache.syncope.common.lib.to.SchemaTO;
 import org.apache.syncope.common.lib.to.TypeExtensionTO;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.core.util.lang.PropertyResolver;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrsWizardStep.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrsWizardStep.java
index 64e551e..6e389f8 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrsWizardStep.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrsWizardStep.java
@@ -50,10 +50,10 @@
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.SyncopeConstants;
-import org.apache.syncope.common.lib.to.SchemaTO;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
+import org.apache.syncope.common.lib.to.SchemaTO;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
 import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.wicket.PageReference;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java
index e5de64e..714553b 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectDetails.java
@@ -19,8 +19,8 @@
 package org.apache.syncope.client.console.wizards.any;
 
 import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.model.PropertyModel;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java
index 5d081ba..186f7aa 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyObjectTemplateWizardBuilder.java
@@ -18,12 +18,12 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
-import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import java.util.List;
 import java.util.Optional;
 import org.apache.syncope.client.console.commons.RealmsUtils;
 import org.apache.syncope.client.console.layout.AnyObjectFormLayoutInfo;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
+import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.to.TemplatableTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
index 1edd671..02d9c14 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/AnyWizardBuilder.java
@@ -20,12 +20,12 @@
 
 import java.io.Serializable;
 import java.util.List;
+import java.util.Optional;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Future;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.SyncopeWebApplication;
-import java.util.Optional;
 import org.apache.syncope.client.console.layout.AnyObjectFormLayoutInfo;
 import org.apache.syncope.client.console.layout.GroupFormLayoutInfo;
 import org.apache.syncope.client.console.layout.UserFormLayoutInfo;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/ConnObjectPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/ConnObjectPanel.java
index 64ef8e5..e224c40 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/ConnObjectPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/ConnObjectPanel.java
@@ -27,12 +27,12 @@
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.ListUtils;
 import org.apache.commons.lang3.tuple.Pair;
+import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
 import org.apache.syncope.client.ui.commons.ConnIdSpecialName;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
 import org.apache.syncope.common.lib.Attr;
-import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.EntityTOUtils;
+import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.wicket.Component;
 import org.apache.wicket.behavior.Behavior;
 import org.apache.wicket.markup.ComponentTag;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/ConsoleAuxClasses.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/ConsoleAuxClasses.java
index 780b229..5f90b2f 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/ConsoleAuxClasses.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/ConsoleAuxClasses.java
@@ -18,10 +18,10 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
-import org.apache.syncope.client.ui.commons.wizards.any.AbstractAuxClasses;
-import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import java.util.List;
 import org.apache.syncope.client.console.rest.AnyTypeClassRestClient;
+import org.apache.syncope.client.ui.commons.wizards.any.AbstractAuxClasses;
+import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.AnyTypeClassTO;
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/DerAttrs.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/DerAttrs.java
index bb3082c..b19735e 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/DerAttrs.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/DerAttrs.java
@@ -25,13 +25,13 @@
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.to.DerSchemaTO;
 import org.apache.syncope.common.lib.to.GroupableRelatableTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java
index 032d1d3..0d21584 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupTemplateWizardBuilder.java
@@ -18,12 +18,12 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
-import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import java.util.List;
 import java.util.Optional;
 import org.apache.syncope.client.console.commons.RealmsUtils;
 import org.apache.syncope.client.console.layout.GroupFormLayoutInfo;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
+import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.to.TemplatableTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWrapper.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWrapper.java
index 5bc5cf2..649083e 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWrapper.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/GroupWrapper.java
@@ -18,7 +18,6 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
-import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -26,6 +25,7 @@
 import org.apache.syncope.client.console.panels.search.SearchClause;
 import org.apache.syncope.client.console.panels.search.SearchUtils;
 import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.common.lib.to.GroupTO;
 
 public class GroupWrapper extends AnyWrapper<GroupTO> {
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java
index b7fc8ce..a1130cb 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java
@@ -36,10 +36,10 @@
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
 import org.apache.syncope.client.console.rest.GroupRestClient;
 import org.apache.syncope.client.console.rest.UserRestClient;
-import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
-import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
+import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
 import org.apache.syncope.common.lib.to.GroupTO;
@@ -48,9 +48,9 @@
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.authroles.authorization.strategies.role.Roles;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.ActionPermissions;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
-import org.apache.wicket.authroles.authorization.strategies.role.Roles;
 import org.apache.wicket.event.Broadcast;
 import org.apache.wicket.event.IEvent;
 import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
index 8c3624b..9862f91 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java
@@ -25,8 +25,10 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
-import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
 import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
+import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
+import org.apache.syncope.common.lib.Attr;
+import org.apache.syncope.common.lib.Attributable;
 import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTO;
@@ -46,8 +48,6 @@
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.StringResourceModel;
 import org.apache.wicket.model.util.ListModel;
-import org.apache.syncope.common.lib.Attr;
-import org.apache.syncope.common.lib.Attributable;
 
 public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> {
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Relationships.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Relationships.java
index 91b84b4..61a6b38 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Relationships.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Relationships.java
@@ -18,8 +18,6 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
-import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
-import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -28,7 +26,6 @@
 import java.util.stream.Collectors;
 import org.apache.commons.collections4.ListUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.panels.AnyDirectoryPanel;
 import org.apache.syncope.client.console.panels.ListViewPanel;
 import org.apache.syncope.client.console.panels.ListViewPanel.ListViewReload;
@@ -40,15 +37,18 @@
 import org.apache.syncope.client.console.rest.AnyTypeClassRestClient;
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
 import org.apache.syncope.client.console.rest.RelationshipTypeRestClient;
-import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
-import org.apache.syncope.client.ui.commons.ajax.markup.html.LabelInfo;
-import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
 import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
+import org.apache.syncope.client.ui.commons.ajax.markup.html.LabelInfo;
+import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
+import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
+import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
+import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/ResultPage.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/ResultPage.java
index bee5573..c200e49 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/ResultPage.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/ResultPage.java
@@ -22,11 +22,11 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.panel.Panel;
 
 public abstract class ResultPage<T extends Serializable> extends Panel implements WizardModalPanel<T> {
 
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
index 18e856f..484acae 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/StatusPanel.java
@@ -27,16 +27,16 @@
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.commons.lang3.tuple.Triple;
 import org.apache.syncope.client.console.SyncopeWebApplication;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.status.ConnObjectWrapper;
-import org.apache.syncope.client.ui.commons.status.Status;
-import org.apache.syncope.client.ui.commons.status.StatusBean;
-import org.apache.syncope.client.ui.commons.status.StatusUtils;
 import org.apache.syncope.client.console.panels.ListViewPanel;
 import org.apache.syncope.client.console.panels.MultilevelPanel;
 import org.apache.syncope.client.console.panels.PropagationErrorPanel;
 import org.apache.syncope.client.console.panels.RemoteObjectPanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.status.ConnObjectWrapper;
+import org.apache.syncope.client.ui.commons.status.Status;
+import org.apache.syncope.client.ui.commons.status.StatusBean;
+import org.apache.syncope.client.ui.commons.status.StatusUtils;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.to.GroupTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/TemplateWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/TemplateWizardBuilder.java
index 3786497..d42a2b5 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/TemplateWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/TemplateWizardBuilder.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
-import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
+import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.common.lib.to.AnyTO;
 
 @FunctionalInterface
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/TypeExtensionWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/TypeExtensionWizardBuilder.java
index 66dce02..433790e 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/TypeExtensionWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/TypeExtensionWizardBuilder.java
@@ -23,9 +23,9 @@
 import java.util.stream.Collectors;
 import org.apache.syncope.client.console.rest.AnyTypeClassRestClient;
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
+import org.apache.syncope.client.console.wizards.BaseAjaxWizardBuilder;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel;
-import org.apache.syncope.client.console.wizards.BaseAjaxWizardBuilder;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.GroupTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java
index e067ef1..018373b 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserDetails.java
@@ -19,12 +19,12 @@
 package org.apache.syncope.client.console.wizards.any;
 
 import java.util.List;
-import org.apache.syncope.client.ui.commons.wizards.any.PasswordPanel;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.ajax.markup.html.LabelInfo;
-import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
+import org.apache.syncope.client.ui.commons.wizards.any.PasswordPanel;
 import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.wicket.Component;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java
index d29b57f..b31e0cb 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserTemplateWizardBuilder.java
@@ -18,13 +18,13 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
-import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
-import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import java.util.List;
 import java.util.Optional;
 import org.apache.syncope.client.console.commons.RealmsUtils;
 import org.apache.syncope.client.console.layout.UserFormLayoutInfo;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
+import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
+import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
 import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.to.TemplatableTO;
 import org.apache.syncope.common.lib.to.UserTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
index 766d8b7..48125da 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/UserWizardBuilder.java
@@ -22,10 +22,10 @@
 import java.util.List;
 import java.util.Optional;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.console.rest.UserRestClient;
-import org.apache.syncope.client.ui.commons.layout.UserForm;
 import org.apache.syncope.client.console.layout.UserFormLayoutInfo;
+import org.apache.syncope.client.console.rest.UserRestClient;
 import org.apache.syncope.client.ui.commons.ApplicationContextProvider;
+import org.apache.syncope.client.ui.commons.layout.UserForm;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/VirAttrs.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/VirAttrs.java
index 055703e..effdd9c 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/VirAttrs.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/VirAttrs.java
@@ -18,8 +18,6 @@
  */
 package org.apache.syncope.client.console.wizards.any;
 
-import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
-import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -29,13 +27,15 @@
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
 import org.apache.syncope.client.ui.commons.ajax.markup.html.LabelInfo;
-import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
 import org.apache.syncope.client.ui.commons.markup.html.form.AbstractFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
+import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
+import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.to.GroupableRelatableTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
 import org.apache.syncope.common.lib.to.VirSchemaTO;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/mapping/AbstractMappingPanel.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/mapping/AbstractMappingPanel.java
index 3543984..e0ae003 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/mapping/AbstractMappingPanel.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/mapping/AbstractMappingPanel.java
@@ -27,8 +27,8 @@
 import org.apache.syncope.client.console.rest.AnyTypeClassRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
-import org.apache.syncope.client.console.widgets.JEXLTransformerWidget;
 import org.apache.syncope.client.console.widgets.ItemTransformerWidget;
+import org.apache.syncope.client.console.widgets.JEXLTransformerWidget;
 import org.apache.syncope.client.ui.commons.ConnIdSpecialName;
 import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java
index cff14c1..c80f5f0 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/role/RoleWizardBuilder.java
@@ -28,11 +28,11 @@
 import org.apache.syncope.client.console.rest.DynRealmRestClient;
 import org.apache.syncope.client.console.rest.RealmRestClient;
 import org.apache.syncope.client.console.rest.RoleRestClient;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
-import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel;
 import org.apache.syncope.client.console.wizards.BaseAjaxWizardBuilder;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizardBuilder;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.EntityTO;
diff --git a/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java b/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java
index 71892b7..b21e205 100644
--- a/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java
+++ b/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java
@@ -35,7 +35,6 @@
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.commons.lang3.tuple.Triple;
 import org.apache.cxf.jaxrs.client.Client;
-import org.apache.syncope.client.console.AbstractTest.TestSyncopeWebApplication.SyncopeServiceClient;
 import org.apache.syncope.client.console.commons.AnyDirectoryPanelAdditionalActionLinksProvider;
 import org.apache.syncope.client.console.commons.AnyDirectoryPanelAdditionalActionsProvider;
 import org.apache.syncope.client.console.commons.AnyWizardBuilderAdditionalSteps;
@@ -62,13 +61,13 @@
 import org.apache.syncope.common.keymaster.client.api.DomainOps;
 import org.apache.syncope.common.keymaster.client.api.ServiceOps;
 import org.apache.syncope.common.keymaster.client.api.model.Domain;
-import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.info.NumbersInfo;
 import org.apache.syncope.common.lib.info.PlatformInfo;
 import org.apache.syncope.common.lib.info.SystemInfo;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
 import org.apache.syncope.common.rest.api.beans.SchemaQuery;
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
index 6faf88a..450807f 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
@@ -18,30 +18,6 @@
  */
 package org.apache.syncope.client.enduser;
 
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.exception.ExceptionUtils;
-import org.apache.cxf.jaxrs.client.WebClient;
-import org.apache.syncope.client.lib.SyncopeClient;
-import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
-import org.apache.syncope.client.ui.commons.BaseSession;
-import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.SyncopeConstants;
-import org.apache.syncope.common.lib.info.PlatformInfo;
-import org.apache.syncope.common.lib.info.SystemInfo;
-import org.apache.syncope.common.lib.to.UserTO;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
-import org.apache.syncope.common.rest.api.RESTHeaders;
-import org.apache.wicket.Session;
-import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
-import org.apache.wicket.authroles.authorization.strategies.role.Roles;
-import org.apache.wicket.request.Request;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import javax.ws.rs.BadRequestException;
-import javax.ws.rs.ForbiddenException;
-import javax.ws.rs.core.EntityTag;
-import javax.ws.rs.core.MediaType;
-import javax.xml.ws.WebServiceException;
 import java.security.AccessControlException;
 import java.text.DateFormat;
 import java.util.Collections;
@@ -51,9 +27,33 @@
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Future;
 import java.util.stream.Collectors;
+import javax.ws.rs.BadRequestException;
+import javax.ws.rs.ForbiddenException;
+import javax.ws.rs.core.EntityTag;
+import javax.ws.rs.core.MediaType;
+import javax.xml.ws.WebServiceException;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.commons.lang3.time.FastDateFormat;
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
+import org.apache.syncope.client.ui.commons.BaseSession;
 import org.apache.syncope.client.ui.commons.DateOps;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.info.PlatformInfo;
+import org.apache.syncope.common.lib.info.SystemInfo;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.wicket.Session;
+import org.apache.wicket.authroles.authentication.AuthenticatedWebSession;
+import org.apache.wicket.authroles.authorization.strategies.role.Roles;
+import org.apache.wicket.request.Request;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class SyncopeEnduserSession extends AuthenticatedWebSession implements BaseSession {
 
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeWebApplication.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeWebApplication.java
index 7592ee8..d11f1fc 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeWebApplication.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeWebApplication.java
@@ -42,8 +42,8 @@
 import org.apache.syncope.client.ui.commons.SyncopeUIRequestCycleListener;
 import org.apache.syncope.client.ui.commons.annotations.Resource;
 import org.apache.syncope.client.ui.commons.themes.AdminLTE;
-import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.apache.syncope.common.keymaster.client.api.ServiceOps;
+import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.apache.wicket.Page;
 import org.apache.wicket.Session;
 import org.apache.wicket.WicketRuntimeException;
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/layout/UserFormLayoutInfo.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/layout/UserFormLayoutInfo.java
index 9a24ac2..0ec64c4 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/layout/UserFormLayoutInfo.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/layout/UserFormLayoutInfo.java
@@ -22,8 +22,8 @@
 import java.util.Map;
 import org.apache.syncope.client.enduser.panels.UserFormPanel;
 import org.apache.syncope.client.ui.commons.layout.AbstractAnyFormBaseLayout;
-import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.client.ui.commons.layout.UserForm;
+import org.apache.syncope.common.lib.to.UserTO;
 
 public class UserFormLayoutInfo extends AbstractAnyFormBaseLayout<UserTO, UserForm> {
 
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/markup/html/form/BinaryFieldPanel.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/markup/html/form/BinaryFieldPanel.java
index 751e76e..2fb5f59 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/markup/html/form/BinaryFieldPanel.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/markup/html/form/BinaryFieldPanel.java
@@ -34,15 +34,15 @@
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
+import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.commons.PreviewUtils;
 import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.HttpResourceStream;
-import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
-import org.apache.syncope.client.ui.commons.markup.html.form.preview.BinaryPreviewer;
 import org.apache.syncope.client.ui.commons.markup.html.form.BaseBinaryFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.BinaryFieldDownload;
+import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
+import org.apache.syncope.client.ui.commons.markup.html.form.preview.BinaryPreviewer;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
 import org.apache.syncope.client.ui.commons.rest.ResponseHolder;
 import org.apache.wicket.Component;
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/markup/html/form/MultiFieldPanel.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/markup/html/form/MultiFieldPanel.java
index b4dda38..4d81398 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/markup/html/form/MultiFieldPanel.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/markup/html/form/MultiFieldPanel.java
@@ -18,13 +18,13 @@
  */
 package org.apache.syncope.client.enduser.markup.html.form;
 
-import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
-import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import java.io.Serializable;
 import java.util.List;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.markup.html.form.AbstractMultiPanel;
+import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.panel.Panel;
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/AbstractChangePassword.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/AbstractChangePassword.java
index 5944754..c350a16 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/AbstractChangePassword.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/AbstractChangePassword.java
@@ -20,9 +20,9 @@
 
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.SyncopeWebApplication;
-import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPasswordFieldPanel;
 import org.apache.syncope.client.enduser.panels.ChangePasswordPanel;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPasswordFieldPanel;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/BasePage.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/BasePage.java
index 98f65cf..36d371e 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/BasePage.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/BasePage.java
@@ -21,14 +21,14 @@
 import java.io.Serializable;
 import java.lang.reflect.InvocationTargetException;
 import java.util.List;
-import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
+import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.commons.EnduserConstants;
 import org.apache.syncope.client.enduser.init.ClassPathScanImplementationLookup;
+import org.apache.syncope.client.enduser.panels.Sidebar;
 import org.apache.syncope.client.enduser.wicket.markup.head.MetaHeaderItem;
 import org.apache.syncope.client.ui.commons.BaseSession;
 import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.enduser.panels.Sidebar;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Page;
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/EditChangePassword.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/EditChangePassword.java
index c834e8f..fe781a2 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/EditChangePassword.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/EditChangePassword.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.client.enduser.pages;
 
-import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
+import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.commons.EnduserConstants;
 import org.apache.syncope.client.enduser.rest.UserSelfRestClient;
 import org.apache.syncope.client.ui.commons.Constants;
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/EditUser.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/EditUser.java
index 5d9b6d7..e9cc787 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/EditUser.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/EditUser.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.client.enduser.pages;
 
-import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
+import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.layout.UserFormLayoutInfo;
 import org.apache.syncope.client.enduser.panels.UserFormPanel;
 import org.apache.syncope.common.lib.to.UserTO;
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/MustChangePassword.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/MustChangePassword.java
index ef9cb28..7807962 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/MustChangePassword.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/MustChangePassword.java
@@ -21,9 +21,9 @@
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.commons.EnduserConstants;
+import org.apache.syncope.client.enduser.rest.UserSelfRestClient;
 import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPasswordFieldPanel;
-import org.apache.syncope.client.enduser.rest.UserSelfRestClient;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/SelfPasswordReset.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/SelfPasswordReset.java
index 291645e..be4dcc5 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/SelfPasswordReset.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/SelfPasswordReset.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.client.enduser.pages;
 
-import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
+import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.commons.EnduserConstants;
 import org.apache.syncope.client.enduser.panels.captcha.CaptchaPanel;
 import org.apache.syncope.client.enduser.rest.UserSelfRestClient;
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/SelfRegistration.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/SelfRegistration.java
index dd9a075..e29ed6f 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/SelfRegistration.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/pages/SelfRegistration.java
@@ -20,8 +20,8 @@
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.json.JsonMapper;
-import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
+import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.layout.UserFormLayoutInfo;
 import org.apache.syncope.client.enduser.panels.UserSelfFormPanel;
 import org.apache.syncope.common.lib.SyncopeConstants;
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/AnyFormPanel.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/AnyFormPanel.java
index e48cf22..c29ff5e 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/AnyFormPanel.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/AnyFormPanel.java
@@ -18,8 +18,16 @@
  */
 package org.apache.syncope.client.enduser.panels;
 
+import java.util.List;
 import org.apache.syncope.client.enduser.SyncopeWebApplication;
+import org.apache.syncope.client.enduser.commons.EnduserConstants;
 import org.apache.syncope.client.enduser.layout.UserFormLayoutInfo;
+import org.apache.syncope.client.enduser.panels.any.DerAttrs;
+import org.apache.syncope.client.enduser.panels.any.Details;
+import org.apache.syncope.client.enduser.panels.any.Groups;
+import org.apache.syncope.client.enduser.panels.any.PlainAttrs;
+import org.apache.syncope.client.enduser.panels.any.Resources;
+import org.apache.syncope.client.enduser.panels.any.VirAttrs;
 import org.apache.syncope.client.enduser.panels.captcha.CaptchaPanel;
 import org.apache.syncope.client.ui.commons.panels.CardPanel;
 import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
@@ -28,14 +36,6 @@
 import org.apache.syncope.common.lib.to.GroupableRelatableTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.wicket.PageReference;
-import java.util.List;
-import org.apache.syncope.client.enduser.commons.EnduserConstants;
-import org.apache.syncope.client.enduser.panels.any.DerAttrs;
-import org.apache.syncope.client.enduser.panels.any.Details;
-import org.apache.syncope.client.enduser.panels.any.Groups;
-import org.apache.syncope.client.enduser.panels.any.PlainAttrs;
-import org.apache.syncope.client.enduser.panels.any.Resources;
-import org.apache.syncope.client.enduser.panels.any.VirAttrs;
 
 public abstract class AnyFormPanel extends AbstractAnyFormPanel<UserWrapper> {
 
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/Sidebar.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/Sidebar.java
index aed7750..b0b4459 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/Sidebar.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/Sidebar.java
@@ -21,8 +21,8 @@
 import java.util.List;
 import java.util.stream.StreamSupport;
 import org.apache.syncope.client.enduser.BookmarkablePageLinkBuilder;
-import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
+import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.pages.BasePage;
 import org.apache.syncope.client.enduser.pages.Dashboard;
 import org.apache.syncope.client.enduser.pages.EditChangePassword;
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/UserSelfFormPanel.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/UserSelfFormPanel.java
index 9d1583e..6bd2041 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/UserSelfFormPanel.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/UserSelfFormPanel.java
@@ -18,9 +18,11 @@
  */
 package org.apache.syncope.client.enduser.panels;
 
+import java.util.List;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
+import org.apache.syncope.client.enduser.SyncopeWebApplication;
+import org.apache.syncope.client.enduser.commons.EnduserConstants;
 import org.apache.syncope.client.enduser.layout.UserFormLayoutInfo;
 import org.apache.syncope.client.enduser.pages.BasePage;
 import org.apache.syncope.client.enduser.pages.Login;
@@ -44,8 +46,6 @@
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
-import java.util.List;
-import org.apache.syncope.client.enduser.commons.EnduserConstants;
 
 public class UserSelfFormPanel extends UserFormPanel {
 
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/AbstractAttrs.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/AbstractAttrs.java
index f49f68f..5b71682 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/AbstractAttrs.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/AbstractAttrs.java
@@ -18,6 +18,13 @@
  */
 package org.apache.syncope.client.enduser.panels.any;
 
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.syncope.client.enduser.layout.CustomizationOption;
@@ -36,13 +43,6 @@
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.util.ListModel;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 
 public abstract class AbstractAttrs<S extends SchemaTO> extends Panel {
 
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/DerAttrs.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/DerAttrs.java
index 68898f1..d25f077 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/DerAttrs.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/DerAttrs.java
@@ -22,6 +22,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.layout.CustomizationOption;
@@ -46,7 +47,6 @@
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.StringResourceModel;
 import org.apache.wicket.model.util.ListModel;
-import java.util.stream.Collectors;
 
 public class DerAttrs extends AbstractAttrs<DerSchemaTO> {
 
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/Groups.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/Groups.java
index 3c8fbca..d08d00e 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/Groups.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/Groups.java
@@ -18,29 +18,29 @@
  */
 package org.apache.syncope.client.enduser.panels.any;
 
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.enduser.rest.GroupRestClient;
-import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel;
-import org.apache.syncope.client.ui.commons.wizards.any.AbstractGroupsModel;
-import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.event.Broadcast;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.IChoiceRenderer;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.util.ListModel;
 import java.util.List;
 import java.util.stream.Collectors;
 import org.apache.commons.collections4.ListUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.enduser.rest.GroupRestClient;
 import org.apache.syncope.client.ui.commons.ajax.markup.html.LabelInfo;
+import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel;
+import org.apache.syncope.client.ui.commons.wizards.any.AbstractGroupsModel;
+import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
 import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.GroupableRelatableTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
 import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.event.Broadcast;
 import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.IChoiceRenderer;
 import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.util.ListModel;
 import org.danekja.java.util.function.serializable.SerializableFunction;
 
 public class Groups extends Panel {
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/PlainAttrs.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/PlainAttrs.java
index f3cca34..3b597b9 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/PlainAttrs.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/PlainAttrs.java
@@ -22,30 +22,15 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.time.DateFormatUtils;
 import org.apache.commons.lang3.time.FastDateFormat;
+import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.layout.CustomizationOption;
 import org.apache.syncope.client.enduser.markup.html.form.BinaryFieldPanel;
 import org.apache.syncope.client.enduser.markup.html.form.MultiFieldPanel;
 import org.apache.syncope.client.ui.commons.SchemaUtils;
-import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
-import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
-import org.apache.syncope.common.lib.Attr;
-import org.apache.syncope.common.lib.Attributable;
-import org.apache.syncope.common.lib.EntityTOUtils;
-import org.apache.syncope.common.lib.types.AttrSchemaType;
-import org.apache.syncope.common.lib.types.SchemaType;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.IChoiceRenderer;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
-import org.apache.wicket.model.util.ListModel;
-import java.util.stream.Collectors;
-import org.apache.commons.lang3.time.DateFormatUtils;
-import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.ui.commons.markup.html.form.AbstractFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxCheckBoxPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDateFieldPanel;
@@ -55,15 +40,30 @@
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.EncryptedFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
+import org.apache.syncope.client.ui.commons.wicket.markup.html.bootstrap.tabs.Accordion;
+import org.apache.syncope.client.ui.commons.wizards.any.UserWrapper;
+import org.apache.syncope.common.lib.Attr;
+import org.apache.syncope.common.lib.Attributable;
+import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.GroupableRelatableTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
+import org.apache.syncope.common.lib.types.AttrSchemaType;
+import org.apache.syncope.common.lib.types.SchemaType;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.IChoiceRenderer;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.LoadableDetachableModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.StringResourceModel;
+import org.apache.wicket.model.util.ListModel;
 
 public class PlainAttrs extends AbstractAttrs<PlainSchemaTO> {
 
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/VirAttrs.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/VirAttrs.java
index 3f08b36..2272f74 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/VirAttrs.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/panels/any/VirAttrs.java
@@ -22,6 +22,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.layout.CustomizationOption;
@@ -46,7 +47,6 @@
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.StringResourceModel;
 import org.apache.wicket.model.util.ListModel;
-import java.util.stream.Collectors;
 
 public class VirAttrs extends AbstractAttrs<VirSchemaTO> {
 
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/rest/GroupRestClient.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/rest/GroupRestClient.java
index 7994739..ed400fa 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/rest/GroupRestClient.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/rest/GroupRestClient.java
@@ -18,6 +18,9 @@
  */
 package org.apache.syncope.client.enduser.rest;
 
+import java.util.List;
+import javax.ws.rs.core.GenericType;
+import javax.ws.rs.core.Response;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.request.GroupCR;
@@ -28,9 +31,6 @@
 import org.apache.syncope.common.rest.api.service.AnyService;
 import org.apache.syncope.common.rest.api.service.GroupService;
 import org.apache.syncope.common.rest.api.service.SyncopeService;
-import javax.ws.rs.core.GenericType;
-import javax.ws.rs.core.Response;
-import java.util.List;
 
 /**
  * Console client for invoking Rest Group's services.
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/rest/SchemaRestClient.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/rest/SchemaRestClient.java
index 6391f0a..2a633f0 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/rest/SchemaRestClient.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/rest/SchemaRestClient.java
@@ -23,11 +23,11 @@
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.SchemaTO;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
 import org.apache.syncope.common.lib.to.DerSchemaTO;
 import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
+import org.apache.syncope.common.lib.to.SchemaTO;
 import org.apache.syncope.common.lib.to.VirSchemaTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.SchemaType;
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/rest/UserSelfRestClient.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/rest/UserSelfRestClient.java
index 4a56cba..14c78f6 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/rest/UserSelfRestClient.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/rest/UserSelfRestClient.java
@@ -18,12 +18,12 @@
  */
 package org.apache.syncope.client.enduser.rest;
 
+import javax.ws.rs.core.GenericType;
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.rest.api.service.UserSelfService;
-import javax.ws.rs.core.GenericType;
 
 public class UserSelfRestClient extends BaseRestClient {
 
diff --git a/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/AbstractTest.java b/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/AbstractTest.java
index 0ce331f..4c09395 100644
--- a/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/AbstractTest.java
+++ b/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/AbstractTest.java
@@ -41,13 +41,13 @@
 import org.apache.syncope.common.keymaster.client.api.DomainOps;
 import org.apache.syncope.common.keymaster.client.api.ServiceOps;
 import org.apache.syncope.common.keymaster.client.api.model.Domain;
-import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.info.NumbersInfo;
 import org.apache.syncope.common.lib.info.PlatformInfo;
 import org.apache.syncope.common.lib.info.SystemInfo;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
 import org.apache.syncope.common.rest.api.beans.SchemaQuery;
diff --git a/client/idrepo/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java b/client/idrepo/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
index 148c625..d4c304c 100644
--- a/client/idrepo/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
+++ b/client/idrepo/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
@@ -18,7 +18,6 @@
  */
 package org.apache.syncope.client.lib;
 
-import org.apache.syncope.client.lib.batch.BatchRequest;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.json.JsonMapper;
@@ -45,14 +44,15 @@
 import org.apache.cxf.transport.common.gzip.GZIPOutInterceptor;
 import org.apache.cxf.transport.http.HTTPConduit;
 import org.apache.cxf.transport.http.URLConnectionHTTPConduit;
+import org.apache.syncope.client.lib.batch.BatchRequest;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.info.NumbersInfo;
 import org.apache.syncope.common.lib.info.PlatformInfo;
 import org.apache.syncope.common.lib.info.SystemInfo;
 import org.apache.syncope.common.lib.search.AnyObjectFiqlSearchConditionBuilder;
 import org.apache.syncope.common.lib.search.ConnObjectTOFiqlSearchConditionBuilder;
-import org.apache.syncope.common.lib.search.OrderByClauseBuilder;
 import org.apache.syncope.common.lib.search.GroupFiqlSearchConditionBuilder;
+import org.apache.syncope.common.lib.search.OrderByClauseBuilder;
 import org.apache.syncope.common.lib.search.UserFiqlSearchConditionBuilder;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.rest.api.Preference;
diff --git a/common/am/lib/src/main/java/org/apache/syncope/common/lib/to/AuthProfileTO.java b/common/am/lib/src/main/java/org/apache/syncope/common/lib/to/AuthProfileTO.java
index 422a8c7..8904f04 100644
--- a/common/am/lib/src/main/java/org/apache/syncope/common/lib/to/AuthProfileTO.java
+++ b/common/am/lib/src/main/java/org/apache/syncope/common/lib/to/AuthProfileTO.java
@@ -20,10 +20,10 @@
 
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
-import javax.ws.rs.PathParam;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import javax.ws.rs.PathParam;
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.syncope.common.lib.wa.GoogleMfaAuthAccount;
diff --git a/common/am/lib/src/main/java/org/apache/syncope/common/lib/to/SAML2SPClientAppTO.java b/common/am/lib/src/main/java/org/apache/syncope/common/lib/to/SAML2SPClientAppTO.java
index 13c6afe..61a0f39 100644
--- a/common/am/lib/src/main/java/org/apache/syncope/common/lib/to/SAML2SPClientAppTO.java
+++ b/common/am/lib/src/main/java/org/apache/syncope/common/lib/to/SAML2SPClientAppTO.java
@@ -22,13 +22,12 @@
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.syncope.common.lib.types.XmlSecAlgorithm;
-import org.apache.syncope.common.lib.types.SAML2SPNameId;
-
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.syncope.common.lib.types.SAML2SPNameId;
+import org.apache.syncope.common.lib.types.XmlSecAlgorithm;
 
 @Schema(allOf = { ClientAppTO.class })
 public class SAML2SPClientAppTO extends ClientAppTO {
diff --git a/common/am/lib/src/main/java/org/apache/syncope/common/lib/wa/WebAuthnAccount.java b/common/am/lib/src/main/java/org/apache/syncope/common/lib/wa/WebAuthnAccount.java
index e601fb4..3c22a9c 100644
--- a/common/am/lib/src/main/java/org/apache/syncope/common/lib/wa/WebAuthnAccount.java
+++ b/common/am/lib/src/main/java/org/apache/syncope/common/lib/wa/WebAuthnAccount.java
@@ -22,11 +22,11 @@
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.syncope.common.lib.BaseBean;
-import java.util.List;
 
 public class WebAuthnAccount implements BaseBean {
 
diff --git a/common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AuthProfileService.java b/common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AuthProfileService.java
index 6971aa3..5479ccd 100644
--- a/common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AuthProfileService.java
+++ b/common/am/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AuthProfileService.java
@@ -24,23 +24,23 @@
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.responses.ApiResponse;
 import io.swagger.v3.oas.annotations.responses.ApiResponses;
-import javax.validation.constraints.NotNull;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
 import io.swagger.v3.oas.annotations.security.SecurityRequirement;
 import io.swagger.v3.oas.annotations.security.SecurityRequirements;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
 import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import org.apache.syncope.common.lib.to.AuthProfileTO;
 import org.apache.syncope.common.lib.to.PagedResult;
diff --git a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/policy/PasswordPolicyTO.java b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/policy/PasswordPolicyTO.java
index 7f2ef4f..a73fe92 100644
--- a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/policy/PasswordPolicyTO.java
+++ b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/policy/PasswordPolicyTO.java
@@ -21,9 +21,9 @@
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
 import java.util.ArrayList;
 import java.util.List;
-import io.swagger.v3.oas.annotations.media.Schema;
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
 
diff --git a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/report/GroupReportletConf.java b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/report/GroupReportletConf.java
index ad0aec3..15ff9cb 100644
--- a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/report/GroupReportletConf.java
+++ b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/report/GroupReportletConf.java
@@ -20,9 +20,9 @@
 
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
-import org.apache.syncope.common.lib.Schema;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.syncope.common.lib.Schema;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.SchemaType;
 
diff --git a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/request/UserUR.java b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/request/UserUR.java
index 3fa32da..dd57c97 100644
--- a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/request/UserUR.java
+++ b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/request/UserUR.java
@@ -22,8 +22,8 @@
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
-import java.util.Collection;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
diff --git a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeFiqlSearchCondition.java b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeFiqlSearchCondition.java
index 31fe477..027f31c 100644
--- a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeFiqlSearchCondition.java
+++ b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeFiqlSearchCondition.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.common.lib.search;
 
 import java.util.Map;
-
 import org.apache.cxf.jaxrs.ext.search.Beanspector;
 import org.apache.cxf.jaxrs.ext.search.ConditionType;
 import org.apache.cxf.jaxrs.ext.search.SimpleSearchCondition;
diff --git a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTO.java b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTO.java
index fbe5b14..071256f 100644
--- a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTO.java
+++ b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTO.java
@@ -18,7 +18,6 @@
  */
 package org.apache.syncope.common.lib.to;
 
-import org.apache.syncope.common.lib.Attr;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@@ -28,13 +27,14 @@
 import io.swagger.v3.oas.annotations.media.Schema;
 import java.time.OffsetDateTime;
 import java.util.ArrayList;
-import java.util.TreeSet;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
+import java.util.TreeSet;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.RealmMember;
 
 @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "_class")
diff --git a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/to/MembershipTO.java b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/to/MembershipTO.java
index 72477b2..c47cb7c 100644
--- a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/to/MembershipTO.java
+++ b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/to/MembershipTO.java
@@ -18,10 +18,6 @@
  */
 package org.apache.syncope.common.lib.to;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.syncope.common.lib.Attr;
-import org.apache.syncope.common.lib.Attributable;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
@@ -32,6 +28,10 @@
 import java.util.TreeSet;
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import org.apache.syncope.common.lib.Attr;
+import org.apache.syncope.common.lib.Attributable;
 import org.apache.syncope.common.lib.BaseBean;
 
 public class MembershipTO implements BaseBean, Attributable {
diff --git a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/types/SchemaType.java b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/types/SchemaType.java
index 3f75868..f972600 100644
--- a/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/types/SchemaType.java
+++ b/common/idrepo/lib/src/main/java/org/apache/syncope/common/lib/types/SchemaType.java
@@ -18,9 +18,9 @@
  */
 package org.apache.syncope.common.lib.types;
 
-import org.apache.syncope.common.lib.to.SchemaTO;
 import org.apache.syncope.common.lib.to.DerSchemaTO;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
+import org.apache.syncope.common.lib.to.SchemaTO;
 import org.apache.syncope.common.lib.to.VirSchemaTO;
 
 public enum SchemaType {
diff --git a/common/idrepo/lib/src/test/java/org/apache/syncope/common/lib/AttrTest.java b/common/idrepo/lib/src/test/java/org/apache/syncope/common/lib/AttrCompareToTest.java
similarity index 89%
rename from common/idrepo/lib/src/test/java/org/apache/syncope/common/lib/AttrTest.java
rename to common/idrepo/lib/src/test/java/org/apache/syncope/common/lib/AttrCompareToTest.java
index 7d21798..b9cc44c 100644
--- a/common/idrepo/lib/src/test/java/org/apache/syncope/common/lib/AttrTest.java
+++ b/common/idrepo/lib/src/test/java/org/apache/syncope/common/lib/AttrCompareToTest.java
@@ -22,17 +22,17 @@
 
 import org.junit.jupiter.api.Test;
 
-public class AttrTest {
+public class AttrCompareToTest {
 
     @Test
-    public void compareTo_equals() {
+    public void equals() {
         Attr first = new Attr.Builder("schema").value("value").build();
         Attr second = new Attr.Builder("schema").value("value").build();
         assertEquals(0, first.compareTo(second));
     }
 
     @Test
-    public void compareTo_different() {
+    public void different() {
         Attr first = new Attr.Builder("schema1").value("value1").build();
         Attr second = new Attr.Builder("schema2").value("value2").build();
         assertEquals(-1, first.compareTo(second));
@@ -40,14 +40,14 @@
     }
 
     @Test
-    public void compareTo_differentSchema_sameValue() {
+    public void differentSchemaSameValue() {
         Attr first = new Attr.Builder("schema1").value("value").build();
         Attr second = new Attr.Builder("schema2").value("value").build();
         assertEquals(-1, first.compareTo(second));
     }
 
     @Test
-    public void compareTo_sameSchema_differentValue() {
+    public void sameSchemaDifferentValue() {
         Attr first = new Attr.Builder("schema").value("value1").build();
         Attr second = new Attr.Builder("schema").value("value2").build();
         assertEquals(-1, first.compareTo(second));
diff --git a/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java b/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java
index 6a5ac61..4e7079b 100644
--- a/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java
+++ b/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/TaskQuery.java
@@ -20,6 +20,7 @@
 
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.media.Schema;
+import java.util.Optional;
 import javax.validation.constraints.NotNull;
 import javax.ws.rs.DefaultValue;
 import javax.ws.rs.PathParam;
@@ -28,8 +29,6 @@
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.rest.api.service.JAXRSService;
 
-import java.util.Optional;
-
 public class TaskQuery extends AbstractQuery {
 
     private static final long serialVersionUID = -8792519310029596796L;
diff --git a/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyService.java b/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyService.java
index 3452737..b601dba 100644
--- a/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyService.java
+++ b/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyService.java
@@ -40,10 +40,10 @@
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.request.ResourceAR;
 import org.apache.syncope.common.lib.request.ResourceDR;
 import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.types.ResourceAssociationAction;
diff --git a/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java b/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java
index bd8d708..47b6385 100644
--- a/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java
+++ b/common/idrepo/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java
@@ -44,9 +44,9 @@
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.SchedTaskTO;
+import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.rest.api.RESTHeaders;
diff --git a/common/keymaster/client-api/src/main/java/org/apache/syncope/common/keymaster/client/api/ServiceOps.java b/common/keymaster/client-api/src/main/java/org/apache/syncope/common/keymaster/client/api/ServiceOps.java
index 75dc3cb..1499bf3 100644
--- a/common/keymaster/client-api/src/main/java/org/apache/syncope/common/keymaster/client/api/ServiceOps.java
+++ b/common/keymaster/client-api/src/main/java/org/apache/syncope/common/keymaster/client/api/ServiceOps.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.common.keymaster.client.api;
 
-import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import java.util.List;
+import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 
 /**
  * Operations available for services.
diff --git a/common/keymaster/client-zookeeper/src/main/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperServiceDiscoveryOps.java b/common/keymaster/client-zookeeper/src/main/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperServiceDiscoveryOps.java
index 03e77f4..2618398 100644
--- a/common/keymaster/client-zookeeper/src/main/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperServiceDiscoveryOps.java
+++ b/common/keymaster/client-zookeeper/src/main/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperServiceDiscoveryOps.java
@@ -28,8 +28,8 @@
 import org.apache.curator.x.discovery.ServiceInstance;
 import org.apache.curator.x.discovery.ServiceProvider;
 import org.apache.syncope.common.keymaster.client.api.KeymasterException;
-import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.apache.syncope.common.keymaster.client.api.ServiceOps;
+import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.InitializingBean;
diff --git a/common/keymaster/client-zookeeper/src/main/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperServiceOps.java b/common/keymaster/client-zookeeper/src/main/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperServiceOps.java
index 175e2a5..a5b24c2 100644
--- a/common/keymaster/client-zookeeper/src/main/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperServiceOps.java
+++ b/common/keymaster/client-zookeeper/src/main/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperServiceOps.java
@@ -25,8 +25,8 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.syncope.common.keymaster.client.api.KeymasterException;
-import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.apache.syncope.common.keymaster.client.api.ServiceOps;
+import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.apache.zookeeper.CreateMode;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/common/keymaster/client-zookeeper/src/test/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperTestingServer.java b/common/keymaster/client-zookeeper/src/test/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperTestingServer.java
index 6fe69af..bd76826 100644
--- a/common/keymaster/client-zookeeper/src/test/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperTestingServer.java
+++ b/common/keymaster/client-zookeeper/src/test/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperTestingServer.java
@@ -30,7 +30,7 @@
 import org.apache.curator.test.InstanceSpec;
 import org.apache.curator.test.TestingServer;
 
-public class ZookeeperTestingServer {
+public final class ZookeeperTestingServer {
 
     private static TestingServer ZK_SERVER;
 
@@ -71,4 +71,8 @@
             ZK_SERVER = new TestingServer(spec, true);
         }
     }
+
+    private ZookeeperTestingServer() {
+        // private constructor for static utility class
+    }
 }
diff --git a/common/keymaster/self/client-self/src/main/java/org/apache/syncope/common/keymaster/client/self/SelfKeymasterDomainOps.java b/common/keymaster/self/client-self/src/main/java/org/apache/syncope/common/keymaster/client/self/SelfKeymasterDomainOps.java
index 8c9f268..92a2dd4 100644
--- a/common/keymaster/self/client-self/src/main/java/org/apache/syncope/common/keymaster/client/self/SelfKeymasterDomainOps.java
+++ b/common/keymaster/self/client-self/src/main/java/org/apache/syncope/common/keymaster/client/self/SelfKeymasterDomainOps.java
@@ -20,7 +20,6 @@
 
 import java.util.List;
 import java.util.Map;
-
 import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean;
 import org.apache.syncope.common.keymaster.client.api.DomainOps;
 import org.apache.syncope.common.keymaster.client.api.KeymasterException;
diff --git a/common/keymaster/self/client-self/src/main/java/org/apache/syncope/common/keymaster/client/self/SelfKeymasterServiceOps.java b/common/keymaster/self/client-self/src/main/java/org/apache/syncope/common/keymaster/client/self/SelfKeymasterServiceOps.java
index f5b8aa6..3ab4c83 100644
--- a/common/keymaster/self/client-self/src/main/java/org/apache/syncope/common/keymaster/client/self/SelfKeymasterServiceOps.java
+++ b/common/keymaster/self/client-self/src/main/java/org/apache/syncope/common/keymaster/client/self/SelfKeymasterServiceOps.java
@@ -27,8 +27,8 @@
 import javax.ws.rs.core.Response;
 import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean;
 import org.apache.syncope.common.keymaster.client.api.KeymasterException;
-import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.apache.syncope.common.keymaster.client.api.ServiceOps;
+import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.apache.syncope.common.keymaster.rest.api.service.NetworkServiceService;
 import org.apache.syncope.common.keymaster.rest.api.service.NetworkServiceService.Action;
 import org.slf4j.Logger;
diff --git a/core/am/logic/src/main/java/org/apache/syncope/core/logic/ClientAppLogic.java b/core/am/logic/src/main/java/org/apache/syncope/core/logic/ClientAppLogic.java
index 4f3a3cd..e534877 100644
--- a/core/am/logic/src/main/java/org/apache/syncope/core/logic/ClientAppLogic.java
+++ b/core/am/logic/src/main/java/org/apache/syncope/core/logic/ClientAppLogic.java
@@ -30,7 +30,6 @@
 import javax.ws.rs.InternalServerErrorException;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
-
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.cxf.transport.http.auth.DefaultBasicAuthSupplier;
@@ -46,16 +45,16 @@
 import org.apache.syncope.core.persistence.api.dao.auth.CASSPDAO;
 import org.apache.syncope.core.persistence.api.dao.auth.OIDCRPDAO;
 import org.apache.syncope.core.persistence.api.dao.auth.SAML2SPDAO;
+import org.apache.syncope.core.persistence.api.entity.auth.CASSPClientApp;
 import org.apache.syncope.core.persistence.api.entity.auth.ClientApp;
 import org.apache.syncope.core.persistence.api.entity.auth.ClientAppUtils;
 import org.apache.syncope.core.persistence.api.entity.auth.ClientAppUtilsFactory;
+import org.apache.syncope.core.persistence.api.entity.auth.OIDCRPClientApp;
+import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPClientApp;
 import org.apache.syncope.core.provisioning.api.data.ClientAppDataBinder;
+import org.apache.syncope.core.spring.security.SecurityProperties;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPClientApp;
-import org.apache.syncope.core.persistence.api.entity.auth.CASSPClientApp;
-import org.apache.syncope.core.persistence.api.entity.auth.OIDCRPClientApp;
-import org.apache.syncope.core.spring.security.SecurityProperties;
 
 public class ClientAppLogic extends AbstractTransactionalLogic<ClientAppTO> {
 
diff --git a/core/am/logic/src/main/java/org/apache/syncope/core/logic/SAML2IdPEntityLogic.java b/core/am/logic/src/main/java/org/apache/syncope/core/logic/SAML2IdPEntityLogic.java
index c8e7fe8..312cc8e 100644
--- a/core/am/logic/src/main/java/org/apache/syncope/core/logic/SAML2IdPEntityLogic.java
+++ b/core/am/logic/src/main/java/org/apache/syncope/core/logic/SAML2IdPEntityLogic.java
@@ -27,11 +27,11 @@
 import org.apache.syncope.common.lib.types.AMEntitlement;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.core.persistence.api.dao.auth.SAML2IdPEntityDAO;
+import org.apache.syncope.core.persistence.api.entity.auth.SAML2IdPEntity;
+import org.apache.syncope.core.provisioning.api.data.SAML2IdPEntityDataBinder;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.auth.SAML2IdPEntity;
-import org.apache.syncope.core.persistence.api.dao.auth.SAML2IdPEntityDAO;
-import org.apache.syncope.core.provisioning.api.data.SAML2IdPEntityDataBinder;
 
 public class SAML2IdPEntityLogic extends AbstractTransactionalLogic<SAML2IdPEntityTO> {
 
diff --git a/core/am/logic/src/main/java/org/apache/syncope/core/logic/SRARouteLogic.java b/core/am/logic/src/main/java/org/apache/syncope/core/logic/SRARouteLogic.java
index 5b1b23d..4c72164 100644
--- a/core/am/logic/src/main/java/org/apache/syncope/core/logic/SRARouteLogic.java
+++ b/core/am/logic/src/main/java/org/apache/syncope/core/logic/SRARouteLogic.java
@@ -36,8 +36,8 @@
 import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.apache.syncope.common.lib.to.SRARouteTO;
 import org.apache.syncope.common.lib.types.AMEntitlement;
-import org.apache.syncope.core.persistence.api.dao.SRARouteDAO;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.core.persistence.api.dao.SRARouteDAO;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.SRARoute;
 import org.apache.syncope.core.provisioning.api.data.SRARouteDataBinder;
diff --git a/core/am/logic/src/main/java/org/apache/syncope/core/logic/init/AMEntitlementLoader.java b/core/am/logic/src/main/java/org/apache/syncope/core/logic/init/AMEntitlementLoader.java
index cef967d..868285a 100644
--- a/core/am/logic/src/main/java/org/apache/syncope/core/logic/init/AMEntitlementLoader.java
+++ b/core/am/logic/src/main/java/org/apache/syncope/core/logic/init/AMEntitlementLoader.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.core.logic.init;
 
-import org.apache.syncope.common.lib.types.EntitlementsHolder;
 import org.apache.syncope.common.lib.types.AMEntitlement;
+import org.apache.syncope.common.lib.types.EntitlementsHolder;
 import org.apache.syncope.core.persistence.api.SyncopeCoreLoader;
 
 public class AMEntitlementLoader implements SyncopeCoreLoader {
diff --git a/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/GoogleMfaAuthAccountLogic.java b/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/GoogleMfaAuthAccountLogic.java
index cecaeaf..958ff37 100644
--- a/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/GoogleMfaAuthAccountLogic.java
+++ b/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/GoogleMfaAuthAccountLogic.java
@@ -21,8 +21,8 @@
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
-import org.apache.syncope.common.lib.wa.GoogleMfaAuthAccount;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.wa.GoogleMfaAuthAccount;
 import org.apache.syncope.core.logic.AbstractAuthProfileLogic;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.auth.AuthProfileDAO;
diff --git a/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/GoogleMfaAuthTokenLogic.java b/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/GoogleMfaAuthTokenLogic.java
index 1270381..5469bd4 100644
--- a/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/GoogleMfaAuthTokenLogic.java
+++ b/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/GoogleMfaAuthTokenLogic.java
@@ -22,8 +22,8 @@
 import java.util.List;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
-import org.apache.syncope.common.lib.wa.GoogleMfaAuthToken;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.wa.GoogleMfaAuthToken;
 import org.apache.syncope.core.logic.AbstractAuthProfileLogic;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.auth.AuthProfileDAO;
diff --git a/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/WAClientAppLogic.java b/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/WAClientAppLogic.java
index 3fc07d0..1c796b7 100644
--- a/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/WAClientAppLogic.java
+++ b/core/am/logic/src/main/java/org/apache/syncope/core/logic/wa/WAClientAppLogic.java
@@ -22,19 +22,19 @@
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-import org.apache.syncope.common.lib.wa.WAClientApp;
 import org.apache.syncope.common.lib.types.ClientAppType;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.wa.WAClientApp;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.auth.CASSPDAO;
 import org.apache.syncope.core.persistence.api.dao.auth.OIDCRPDAO;
 import org.apache.syncope.core.persistence.api.dao.auth.SAML2SPDAO;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.provisioning.api.data.wa.WAClientAppDataBinder;
-import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPClientApp;
 import org.apache.syncope.core.persistence.api.entity.auth.CASSPClientApp;
 import org.apache.syncope.core.persistence.api.entity.auth.OIDCRPClientApp;
+import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPClientApp;
+import org.apache.syncope.core.provisioning.api.data.wa.WAClientAppDataBinder;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.transaction.annotation.Transactional;
 
 public class WAClientAppLogic {
 
diff --git a/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AuthProfileServiceImpl.java b/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AuthProfileServiceImpl.java
index 48efd31..4ee5424 100644
--- a/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AuthProfileServiceImpl.java
+++ b/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AuthProfileServiceImpl.java
@@ -19,16 +19,15 @@
 package org.apache.syncope.core.rest.cxf.service;
 
 import java.net.URI;
-import org.apache.syncope.common.lib.to.AuthProfileTO;
-import org.apache.syncope.common.rest.api.service.AuthProfileService;
-import org.apache.syncope.core.logic.AuthProfileLogic;
-import org.springframework.stereotype.Service;
-
 import java.util.List;
 import javax.ws.rs.core.Response;
 import org.apache.commons.lang3.tuple.Pair;
+import org.apache.syncope.common.lib.to.AuthProfileTO;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.common.rest.api.service.AuthProfileService;
+import org.apache.syncope.core.logic.AuthProfileLogic;
+import org.springframework.stereotype.Service;
 
 @Service
 public class AuthProfileServiceImpl extends AbstractService implements AuthProfileService {
diff --git a/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/OIDCJWKSServiceImpl.java b/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/OIDCJWKSServiceImpl.java
index ded23ea..183ced7 100644
--- a/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/OIDCJWKSServiceImpl.java
+++ b/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/OIDCJWKSServiceImpl.java
@@ -22,9 +22,9 @@
 import javax.ws.rs.core.Response;
 import org.apache.syncope.common.lib.to.OIDCJWKSTO;
 import org.apache.syncope.common.lib.types.JWSAlgorithm;
+import org.apache.syncope.common.rest.api.service.OIDCJWKSService;
 import org.apache.syncope.core.logic.OIDCJWKSLogic;
 import org.springframework.stereotype.Service;
-import org.apache.syncope.common.rest.api.service.OIDCJWKSService;
 
 @Service
 public class OIDCJWKSServiceImpl extends AbstractService implements OIDCJWKSService {
diff --git a/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2IdPEntityServiceImpl.java b/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2IdPEntityServiceImpl.java
index 8edc01d..82d9b59 100644
--- a/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2IdPEntityServiceImpl.java
+++ b/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2IdPEntityServiceImpl.java
@@ -20,9 +20,9 @@
 
 import java.util.List;
 import org.apache.syncope.common.lib.to.SAML2IdPEntityTO;
+import org.apache.syncope.common.rest.api.service.SAML2IdPEntityService;
 import org.apache.syncope.core.logic.SAML2IdPEntityLogic;
 import org.springframework.stereotype.Service;
-import org.apache.syncope.common.rest.api.service.SAML2IdPEntityService;
 
 @Service
 public class SAML2IdPEntityServiceImpl extends AbstractService implements SAML2IdPEntityService {
diff --git a/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SPEntityServiceImpl.java b/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SPEntityServiceImpl.java
index 53f01ae..8d21a6b 100644
--- a/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SPEntityServiceImpl.java
+++ b/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SPEntityServiceImpl.java
@@ -20,9 +20,9 @@
 
 import java.util.List;
 import org.apache.syncope.common.lib.to.SAML2SPEntityTO;
+import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
 import org.apache.syncope.core.logic.SAML2SPEntityLogic;
 import org.springframework.stereotype.Service;
-import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
 
 @Service
 public class SAML2SPEntityServiceImpl extends AbstractService implements SAML2SPEntityService {
diff --git a/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/wa/WAConfigServiceImpl.java b/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/wa/WAConfigServiceImpl.java
index 8940377..390f409 100644
--- a/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/wa/WAConfigServiceImpl.java
+++ b/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/wa/WAConfigServiceImpl.java
@@ -21,9 +21,9 @@
 import java.util.List;
 import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.rest.api.service.wa.WAConfigService;
-import org.springframework.stereotype.Service;
 import org.apache.syncope.core.logic.wa.WAConfigLogic;
 import org.apache.syncope.core.rest.cxf.service.AbstractService;
+import org.springframework.stereotype.Service;
 
 @Service
 public class WAConfigServiceImpl extends AbstractService implements WAConfigService {
diff --git a/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java
index a7532c4..2168de9 100644
--- a/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java
+++ b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java
@@ -34,64 +34,64 @@
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.to.EntityTO;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.to.PullTaskTO;
 import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.common.lib.to.ReconStatus;
+import org.apache.syncope.common.lib.types.AnyEntitlement;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.lib.types.IdMEntitlement;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.MatchType;
+import org.apache.syncope.common.rest.api.beans.AbstractCSVSpec;
 import org.apache.syncope.common.rest.api.beans.CSVPullSpec;
+import org.apache.syncope.common.rest.api.beans.CSVPushSpec;
 import org.apache.syncope.core.persistence.api.dao.AnyDAO;
+import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
+import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
+import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
+import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
+import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
+import org.apache.syncope.core.persistence.api.entity.AnyUtils;
 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.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.persistence.api.entity.user.LinkedAccount;
+import org.apache.syncope.core.provisioning.api.ConnectorManager;
 import org.apache.syncope.core.provisioning.api.MappingManager;
 import org.apache.syncope.core.provisioning.api.VirAttrHandler;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
-import org.apache.syncope.common.lib.types.AnyEntitlement;
-import org.apache.syncope.common.lib.types.IdMEntitlement;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
-import org.apache.syncope.common.rest.api.beans.AbstractCSVSpec;
-import org.apache.syncope.common.rest.api.beans.CSVPushSpec;
-import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
-import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
-import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
-import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
-import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
-import org.apache.syncope.core.persistence.api.entity.AnyUtils;
-import org.apache.syncope.core.persistence.api.entity.Realm;
-import org.apache.syncope.core.persistence.api.entity.VirSchema;
-import org.apache.syncope.core.provisioning.api.ConnectorManager;
 import org.apache.syncope.core.provisioning.api.pushpull.ConstantReconFilterBuilder;
 import org.apache.syncope.core.provisioning.api.pushpull.KeyValueReconFilterBuilder;
 import org.apache.syncope.core.provisioning.api.pushpull.ReconFilterBuilder;
 import org.apache.syncope.core.provisioning.api.pushpull.SyncopeSinglePullExecutor;
-import org.apache.syncope.core.provisioning.java.pushpull.stream.CSVStreamConnector;
 import org.apache.syncope.core.provisioning.api.pushpull.SyncopeSinglePushExecutor;
 import org.apache.syncope.core.provisioning.api.pushpull.stream.SyncopeStreamPullExecutor;
-import org.apache.syncope.core.provisioning.java.pushpull.InboundMatcher;
-import org.apache.syncope.core.provisioning.java.pushpull.OutboundMatcher;
-import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils;
-import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
-import org.identityconnectors.framework.common.objects.Attribute;
-import org.identityconnectors.framework.common.objects.ConnectorObject;
 import org.apache.syncope.core.provisioning.api.pushpull.stream.SyncopeStreamPushExecutor;
 import org.apache.syncope.core.provisioning.api.utils.RealmUtils;
+import org.apache.syncope.core.provisioning.java.pushpull.InboundMatcher;
+import org.apache.syncope.core.provisioning.java.pushpull.OutboundMatcher;
 import org.apache.syncope.core.provisioning.java.pushpull.SinglePullJobDelegate;
 import org.apache.syncope.core.provisioning.java.pushpull.SinglePushJobDelegate;
+import org.apache.syncope.core.provisioning.java.pushpull.stream.CSVStreamConnector;
 import org.apache.syncope.core.provisioning.java.pushpull.stream.StreamPullJobDelegate;
 import org.apache.syncope.core.provisioning.java.pushpull.stream.StreamPushJobDelegate;
+import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils;
+import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
+import org.identityconnectors.framework.common.objects.Attribute;
+import org.identityconnectors.framework.common.objects.ConnectorObject;
 import org.identityconnectors.framework.common.objects.OperationOptions;
 import org.identityconnectors.framework.common.objects.SearchResult;
 import org.identityconnectors.framework.common.objects.SyncDeltaBuilder;
@@ -101,8 +101,8 @@
 import org.identityconnectors.framework.common.objects.filter.Filter;
 import org.identityconnectors.framework.spi.SearchResultsHandler;
 import org.quartz.JobExecutionException;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.support.AbstractBeanDefinition;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 
 public class ReconciliationLogic extends AbstractTransactionalLogic<EntityTO> {
diff --git a/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
index ed35249..3e264f6 100644
--- a/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
+++ b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
@@ -25,8 +25,8 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
@@ -34,16 +34,11 @@
 import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.IdMEntitlement;
+import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
+import org.apache.syncope.core.persistence.api.dao.ConnInstanceDAO;
 import org.apache.syncope.core.persistence.api.dao.DuplicateException;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
-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.provisioning.api.Connector;
-import org.apache.syncope.core.provisioning.api.data.ResourceDataBinder;
-import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils;
-import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
-import org.apache.syncope.core.persistence.api.dao.ConnInstanceDAO;
 import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.api.entity.Any;
@@ -51,13 +46,18 @@
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
 import org.apache.syncope.core.persistence.api.entity.VirSchema;
+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.Provision;
+import org.apache.syncope.core.provisioning.api.Connector;
 import org.apache.syncope.core.provisioning.api.ConnectorManager;
 import org.apache.syncope.core.provisioning.api.MappingManager;
 import org.apache.syncope.core.provisioning.api.VirAttrHandler;
 import org.apache.syncope.core.provisioning.api.data.ConnInstanceDataBinder;
+import org.apache.syncope.core.provisioning.api.data.ResourceDataBinder;
 import org.apache.syncope.core.provisioning.api.utils.RealmUtils;
 import org.apache.syncope.core.provisioning.java.pushpull.OutboundMatcher;
+import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils;
 import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.spring.security.DelegatedAdministrationException;
diff --git a/core/idm/logic/src/test/java/org/apache/syncope/core/logic/ReconciliationLogicTest.java b/core/idm/logic/src/test/java/org/apache/syncope/core/logic/ReconciliationLogicTest.java
index 174d347..af88fc0 100644
--- a/core/idm/logic/src/test/java/org/apache/syncope/core/logic/ReconciliationLogicTest.java
+++ b/core/idm/logic/src/test/java/org/apache/syncope/core/logic/ReconciliationLogicTest.java
@@ -34,11 +34,11 @@
 import java.util.Map;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.common.rest.api.beans.CSVPullSpec;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.rest.api.beans.CSVPushSpec;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.junit.jupiter.api.Test;
diff --git a/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReconciliationServiceImpl.java b/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReconciliationServiceImpl.java
index 3bf25f9..4cb2c10 100644
--- a/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReconciliationServiceImpl.java
+++ b/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReconciliationServiceImpl.java
@@ -21,8 +21,8 @@
 import java.io.InputStream;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 import java.util.Optional;
+import java.util.Set;
 import javax.validation.ValidationException;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.Response;
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java
index 7469722..c7a82a6 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java
@@ -31,7 +31,6 @@
 import org.apache.syncope.common.lib.to.PropagationStatus;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.core.provisioning.java.utils.TemplateUtils;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
@@ -39,6 +38,7 @@
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.provisioning.api.LogicActions;
+import org.apache.syncope.core.provisioning.java.utils.TemplateUtils;
 import org.apache.syncope.core.spring.ImplementationManager;
 
 public abstract class AbstractAnyLogic<TO extends AnyTO, C extends AnyCR, U extends AnyUR>
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeClassLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeClassLogic.java
index 6cd59ca..de0fcbe 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeClassLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeClassLogic.java
@@ -27,9 +27,9 @@
 import org.apache.syncope.common.lib.to.AnyTypeClassTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
-import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
 import org.apache.syncope.core.persistence.api.dao.DuplicateException;
+import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
 import org.apache.syncope.core.provisioning.api.data.AnyTypeClassDataBinder;
 import org.springframework.security.access.prepost.PreAuthorize;
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeLogic.java
index c414ce9..ece7004 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeLogic.java
@@ -28,9 +28,9 @@
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
-import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.DuplicateException;
+import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.provisioning.api.data.AnyTypeDataBinder;
 import org.springframework.dao.InvalidDataAccessApiUsageException;
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AuditLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AuditLogic.java
index 8f06029..ff45859 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AuditLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AuditLogic.java
@@ -32,27 +32,30 @@
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.config.LoggerConfig;
-import org.apache.syncope.common.lib.audit.AuditEntry;
 import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.audit.AuditEntry;
 import org.apache.syncope.common.lib.audit.EventCategory;
 import org.apache.syncope.common.lib.to.AuditConfTO;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.AuditElements;
 import org.apache.syncope.common.lib.types.AuditElements.EventCategoryType;
 import org.apache.syncope.common.lib.types.AuditLoggerName;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.MatchingRule;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.common.lib.types.UnmatchingRule;
-import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.common.lib.types.AuditElements;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.core.logic.init.AuditLoader;
+import org.apache.syncope.core.persistence.api.dao.AuditConfDAO;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
+import org.apache.syncope.core.persistence.api.entity.AuditConf;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.provisioning.api.AuditManager;
-import org.apache.syncope.core.provisioning.java.pushpull.PushJobDelegate;
+import org.apache.syncope.core.provisioning.api.data.AuditDataBinder;
 import org.apache.syncope.core.provisioning.java.pushpull.PullJobDelegate;
+import org.apache.syncope.core.provisioning.java.pushpull.PushJobDelegate;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.springframework.core.io.Resource;
 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
@@ -64,9 +67,6 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ClassUtils;
 import org.springframework.util.SystemPropertyUtils;
-import org.apache.syncope.core.provisioning.api.data.AuditDataBinder;
-import org.apache.syncope.core.persistence.api.entity.AuditConf;
-import org.apache.syncope.core.persistence.api.dao.AuditConfDAO;
 
 public class AuditLogic extends AbstractTransactionalLogic<AuditConfTO> {
 
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
index df16b30..5cbb506 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
@@ -38,13 +38,13 @@
 import org.apache.syncope.common.lib.to.PropagationStatus;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.common.lib.types.ProvisionAction;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.IdRepoImplementationType;
 import org.apache.syncope.common.lib.types.ImplementationEngine;
 import org.apache.syncope.common.lib.types.JobType;
 import org.apache.syncope.common.lib.types.PatchOperation;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.ProvisionAction;
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ImplementationLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ImplementationLogic.java
index 829bea4..6ad2c22 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ImplementationLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ImplementationLogic.java
@@ -27,9 +27,9 @@
 import org.apache.syncope.common.lib.to.ImplementationTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.IdMImplementationType;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.IdRepoImplementationType;
 import org.apache.syncope.common.lib.types.ImplementationTypesHolder;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.core.persistence.api.dao.DuplicateException;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/MailTemplateLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/MailTemplateLogic.java
index d53c539..3bda2de 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/MailTemplateLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/MailTemplateLogic.java
@@ -26,11 +26,11 @@
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.MailTemplateTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.common.lib.types.MailTemplateFormat;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
-import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.common.lib.types.MailTemplateFormat;
 import org.apache.syncope.core.persistence.api.dao.DuplicateException;
 import org.apache.syncope.core.persistence.api.dao.MailTemplateDAO;
+import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.NotificationDAO;
 import org.apache.syncope.core.persistence.api.entity.Entity;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/NotificationLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/NotificationLogic.java
index f43758e..1bf6e83 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/NotificationLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/NotificationLogic.java
@@ -25,9 +25,9 @@
 import org.apache.commons.lang3.tuple.Triple;
 import org.apache.syncope.common.lib.to.JobTO;
 import org.apache.syncope.common.lib.to.NotificationTO;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.JobAction;
 import org.apache.syncope.common.lib.types.JobType;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.NotificationDAO;
 import org.apache.syncope.core.persistence.api.entity.Notification;
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/PolicyLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/PolicyLogic.java
index 681b58e..cc92960 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/PolicyLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/PolicyLogic.java
@@ -25,8 +25,8 @@
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.policy.PolicyTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
 import org.apache.syncope.core.persistence.api.entity.policy.Policy;
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java
index 1f49db7..cef04bb 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java
@@ -32,9 +32,8 @@
 import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
-import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.DuplicateException;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
@@ -43,6 +42,7 @@
 import org.apache.syncope.core.persistence.api.dao.search.AttrCond;
 import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.entity.Realm;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.provisioning.api.data.RealmDataBinder;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationManager;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter;
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
index bfda1a4..4526424 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
@@ -47,11 +47,11 @@
 import org.apache.syncope.common.lib.to.JobTO;
 import org.apache.syncope.common.lib.to.ReportTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.JobAction;
 import org.apache.syncope.common.lib.types.JobType;
 import org.apache.syncope.common.lib.types.ReportExecExportFormat;
 import org.apache.syncope.common.lib.types.ReportExecStatus;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 import org.apache.syncope.common.rest.api.batch.BatchResponseItem;
 import org.apache.syncope.core.logic.cocoon.FopSerializer;
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportTemplateLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportTemplateLogic.java
index 4735c03..f1f68d6 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportTemplateLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportTemplateLogic.java
@@ -26,16 +26,16 @@
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.ReportTemplateTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.common.lib.types.ReportTemplateFormat;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
-import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.common.lib.types.ReportTemplateFormat;
 import org.apache.syncope.core.persistence.api.dao.DuplicateException;
-import org.apache.syncope.core.persistence.api.dao.ReportTemplateDAO;
+import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.ReportDAO;
+import org.apache.syncope.core.persistence.api.dao.ReportTemplateDAO;
 import org.apache.syncope.core.persistence.api.entity.Entity;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
-import org.apache.syncope.core.persistence.api.entity.ReportTemplate;
 import org.apache.syncope.core.persistence.api.entity.Report;
+import org.apache.syncope.core.persistence.api.entity.ReportTemplate;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RoleLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RoleLogic.java
index 70e0f78..c63212b 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RoleLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RoleLogic.java
@@ -25,8 +25,8 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.RoleTO;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.RoleDAO;
 import org.apache.syncope.core.persistence.api.entity.Role;
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/SchemaLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/SchemaLogic.java
index 3c110bd..0b03ace 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/SchemaLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/SchemaLogic.java
@@ -26,14 +26,14 @@
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.SchemaTO;
 import org.apache.syncope.common.lib.to.DerSchemaTO;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
+import org.apache.syncope.common.lib.to.SchemaTO;
 import org.apache.syncope.common.lib.to.VirSchemaTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
 import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.DuplicateException;
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
index f787d40..0b6e3e2 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
@@ -32,23 +32,23 @@
 import org.apache.commons.lang3.tuple.Triple;
 import org.apache.syncope.common.keymaster.client.api.ConfParamOps;
 import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.JobTO;
 import org.apache.syncope.common.lib.to.PropagationTaskTO;
 import org.apache.syncope.common.lib.to.SchedTaskTO;
+import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.ExecStatus;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.JobAction;
 import org.apache.syncope.common.lib.types.JobType;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 import org.apache.syncope.common.rest.api.batch.BatchResponseItem;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
-import org.apache.syncope.core.persistence.api.dao.NotificationDAO;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.core.persistence.api.dao.NotificationDAO;
 import org.apache.syncope.core.persistence.api.dao.TaskDAO;
 import org.apache.syncope.core.persistence.api.dao.TaskExecDAO;
 import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
@@ -62,8 +62,8 @@
 import org.apache.syncope.core.provisioning.api.data.TaskDataBinder;
 import org.apache.syncope.core.provisioning.api.job.JobManager;
 import org.apache.syncope.core.provisioning.api.job.JobNamer;
-import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
 import org.apache.syncope.core.provisioning.api.notification.NotificationJobDelegate;
+import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
 import org.apache.syncope.core.provisioning.api.utils.ExceptionUtils2;
 import org.apache.syncope.core.provisioning.java.job.TaskJob;
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
index 0e7db74..e0836a7 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
@@ -43,8 +43,8 @@
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.common.lib.types.PatchOperation;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.PatchOperation;
 import org.apache.syncope.core.persistence.api.dao.AccessTokenDAO;
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/audit/JdbcAuditAppender.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/audit/JdbcAuditAppender.java
index 896bd85..2229699 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/audit/JdbcAuditAppender.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/audit/JdbcAuditAppender.java
@@ -29,9 +29,9 @@
 import org.apache.logging.log4j.core.appender.db.jdbc.AbstractConnectionSource;
 import org.apache.logging.log4j.core.appender.db.jdbc.JdbcAppender;
 import org.apache.syncope.core.persistence.api.DomainHolder;
+import org.apache.syncope.core.persistence.api.dao.AuditConfDAO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.datasource.DataSourceUtils;
-import org.apache.syncope.core.persistence.api.dao.AuditConfDAO;
 
 public class JdbcAuditAppender extends DefaultAuditAppender {
 
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/cocoon/FopSerializer.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/cocoon/FopSerializer.java
index 5af1669..14124cd 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/cocoon/FopSerializer.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/cocoon/FopSerializer.java
@@ -20,7 +20,6 @@
 
 import java.io.File;
 import java.io.OutputStream;
-
 import org.apache.cocoon.pipeline.ProcessingException;
 import org.apache.cocoon.pipeline.caching.CacheKey;
 import org.apache.cocoon.pipeline.caching.SimpleCacheKey;
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/AuditAccessor.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/AuditAccessor.java
index 0e67a95..3aed0cc 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/AuditAccessor.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/AuditAccessor.java
@@ -25,10 +25,10 @@
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.config.LoggerConfig;
 import org.apache.syncope.common.lib.types.AuditLoggerName;
+import org.apache.syncope.core.persistence.api.dao.AuditConfDAO;
+import org.apache.syncope.core.persistence.api.entity.AuditConf;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.AuditConf;
-import org.apache.syncope.core.persistence.api.dao.AuditConfDAO;
 
 /**
  * Domain-sensible (via {@code @Transactional} access to audit data.
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/AuditLoader.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/AuditLoader.java
index 5b668f4..09ac732 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/AuditLoader.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/AuditLoader.java
@@ -32,10 +32,10 @@
 import org.apache.syncope.core.logic.LogicProperties;
 import org.apache.syncope.core.logic.audit.AuditAppender;
 import org.apache.syncope.core.logic.audit.JdbcAuditAppender;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.persistence.api.ImplementationLookup;
 import org.apache.syncope.core.persistence.api.SyncopeCoreLoader;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.support.AbstractBeanDefinition;
 
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/ClassPathScanImplementationLookup.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/ClassPathScanImplementationLookup.java
index 67cfb70..a673dae 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/ClassPathScanImplementationLookup.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/ClassPathScanImplementationLookup.java
@@ -41,19 +41,19 @@
 import org.apache.syncope.core.persistence.api.dao.AccountRuleConfClass;
 import org.apache.syncope.core.persistence.api.dao.PasswordRule;
 import org.apache.syncope.core.persistence.api.dao.PasswordRuleConfClass;
+import org.apache.syncope.core.persistence.api.dao.PullCorrelationRule;
+import org.apache.syncope.core.persistence.api.dao.PullCorrelationRuleConfClass;
+import org.apache.syncope.core.persistence.api.dao.PushCorrelationRule;
+import org.apache.syncope.core.persistence.api.dao.PushCorrelationRuleConfClass;
 import org.apache.syncope.core.persistence.api.dao.Reportlet;
 import org.apache.syncope.core.persistence.api.dao.ReportletConfClass;
 import org.apache.syncope.core.provisioning.api.LogicActions;
+import org.apache.syncope.core.provisioning.api.ProvisionSorter;
 import org.apache.syncope.core.provisioning.api.data.ItemTransformer;
 import org.apache.syncope.core.provisioning.api.job.SchedTaskJobDelegate;
 import org.apache.syncope.core.provisioning.api.notification.RecipientsProvider;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationActions;
 import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
-import org.apache.syncope.core.persistence.api.dao.PullCorrelationRule;
-import org.apache.syncope.core.persistence.api.dao.PullCorrelationRuleConfClass;
-import org.apache.syncope.core.persistence.api.dao.PushCorrelationRule;
-import org.apache.syncope.core.persistence.api.dao.PushCorrelationRuleConfClass;
-import org.apache.syncope.core.provisioning.api.ProvisionSorter;
 import org.apache.syncope.core.provisioning.api.pushpull.PushActions;
 import org.apache.syncope.core.provisioning.api.pushpull.ReconFilterBuilder;
 import org.apache.syncope.core.provisioning.java.data.JEXLItemTransformerImpl;
diff --git a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/JavaDocUtils.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/JavaDocUtils.java
index 43b14f4..1733170 100644
--- a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/JavaDocUtils.java
+++ b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/JavaDocUtils.java
@@ -23,7 +23,6 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
-
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.core.env.Environment;
 import org.springframework.util.ClassUtils;
diff --git a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java
index 189c98d..d2690d0 100644
--- a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java
+++ b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java
@@ -44,13 +44,13 @@
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.EntityViolationType;
 import org.apache.syncope.common.rest.api.RESTHeaders;
-import org.apache.syncope.core.spring.security.DelegatedAdministrationException;
 import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
 import org.apache.syncope.core.persistence.api.attrvalue.validation.ParsingValidationException;
 import org.apache.syncope.core.persistence.api.dao.DuplicateException;
 import org.apache.syncope.core.persistence.api.dao.MalformedPathException;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
+import org.apache.syncope.core.spring.security.DelegatedAdministrationException;
 import org.apache.syncope.core.workflow.api.WorkflowException;
 import org.identityconnectors.framework.common.exceptions.ConfigurationException;
 import org.identityconnectors.framework.common.exceptions.ConnectorException;
diff --git a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
index d37ab65..833edd68 100644
--- a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
+++ b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
@@ -28,16 +28,16 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.commons.lang3.tuple.Pair;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.request.AnyCR;
 import org.apache.syncope.common.lib.request.AnyUR;
-import org.apache.syncope.common.lib.request.ResourceAR;
 import org.apache.syncope.common.lib.request.AttrPatch;
+import org.apache.syncope.common.lib.request.ResourceAR;
 import org.apache.syncope.common.lib.request.ResourceDR;
 import org.apache.syncope.common.lib.search.SpecialAttr;
 import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
diff --git a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractService.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractService.java
index ac8a766..a207be6 100644
--- a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractService.java
+++ b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractService.java
@@ -36,9 +36,9 @@
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.common.rest.api.service.JAXRSService;
 import org.apache.syncope.common.rest.api.Preference;
 import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.common.rest.api.service.JAXRSService;
 import org.apache.syncope.core.persistence.api.dao.AnyDAO;
 import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.slf4j.Logger;
diff --git a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AccessTokenServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AccessTokenServiceImpl.java
index baff80d..0c4dd2d 100644
--- a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AccessTokenServiceImpl.java
+++ b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AccessTokenServiceImpl.java
@@ -27,9 +27,9 @@
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 import org.apache.syncope.common.rest.api.beans.AccessTokenQuery;
-import org.springframework.stereotype.Service;
 import org.apache.syncope.common.rest.api.service.AccessTokenService;
 import org.apache.syncope.core.logic.AccessTokenLogic;
+import org.springframework.stereotype.Service;
 
 @Service
 public class AccessTokenServiceImpl extends AbstractService implements AccessTokenService {
diff --git a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportServiceImpl.java
index 8f2de8b..998cb8c 100644
--- a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportServiceImpl.java
+++ b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportServiceImpl.java
@@ -21,7 +21,6 @@
 import java.net.URI;
 import java.util.List;
 import java.util.Optional;
-
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.StreamingOutput;
diff --git a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SyncopeServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SyncopeServiceImpl.java
index be2a2e7..956f26a 100644
--- a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SyncopeServiceImpl.java
+++ b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SyncopeServiceImpl.java
@@ -46,15 +46,15 @@
 import org.apache.syncope.common.rest.api.batch.BatchRequestItem;
 import org.apache.syncope.common.rest.api.service.SyncopeService;
 import org.apache.syncope.core.logic.SyncopeLogic;
-import org.apache.syncope.core.rest.cxf.batch.BatchProcess;
-import org.springframework.stereotype.Service;
 import org.apache.syncope.core.persistence.api.dao.BatchDAO;
 import org.apache.syncope.core.persistence.api.entity.Batch;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
+import org.apache.syncope.core.rest.cxf.batch.BatchProcess;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.stereotype.Service;
 
 @Service
 public class SyncopeServiceImpl extends AbstractService implements SyncopeService {
diff --git a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java
index 960bca9..579eb40 100644
--- a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java
+++ b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java
@@ -24,9 +24,9 @@
 import javax.ws.rs.BadRequestException;
 import javax.ws.rs.core.Response;
 import org.apache.commons.lang3.tuple.Pair;
-import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.SchedTaskTO;
+import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.rest.api.RESTHeaders;
diff --git a/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceTest.java b/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceTest.java
index 4ee8d0e..4afe059 100644
--- a/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceTest.java
+++ b/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceTest.java
@@ -62,6 +62,9 @@
 import org.apache.cxf.transport.local.LocalConduit;
 import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.EntityTOUtils;
+import org.apache.syncope.common.lib.jackson.SyncopeJsonMapper;
+import org.apache.syncope.common.lib.jackson.SyncopeXmlMapper;
+import org.apache.syncope.common.lib.jackson.SyncopeYAMLMapper;
 import org.apache.syncope.common.lib.request.AnyObjectCR;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.PagedResult;
@@ -75,9 +78,6 @@
 import org.apache.syncope.core.persistence.api.search.SearchCondVisitor;
 import org.apache.syncope.core.rest.cxf.AddETagFilter;
 import org.apache.syncope.core.rest.cxf.RestServiceExceptionMapper;
-import org.apache.syncope.common.lib.jackson.SyncopeJsonMapper;
-import org.apache.syncope.common.lib.jackson.SyncopeXmlMapper;
-import org.apache.syncope.common.lib.jackson.SyncopeYAMLMapper;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/IdRepoRESTCXFTestContext.java b/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/IdRepoRESTCXFTestContext.java
index add3f15..db8772f 100644
--- a/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/IdRepoRESTCXFTestContext.java
+++ b/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/IdRepoRESTCXFTestContext.java
@@ -26,12 +26,12 @@
 import org.apache.cxf.transport.common.gzip.GZIPInInterceptor;
 import org.apache.cxf.transport.common.gzip.GZIPOutInterceptor;
 import org.apache.cxf.validation.BeanValidationProvider;
-import org.apache.syncope.common.rest.api.DateParamConverterProvider;
-import org.apache.syncope.core.rest.cxf.AddETagFilter;
-import org.apache.syncope.core.rest.cxf.RestServiceExceptionMapper;
 import org.apache.syncope.common.lib.jackson.SyncopeJsonMapper;
 import org.apache.syncope.common.lib.jackson.SyncopeXmlMapper;
 import org.apache.syncope.common.lib.jackson.SyncopeYAMLMapper;
+import org.apache.syncope.common.rest.api.DateParamConverterProvider;
+import org.apache.syncope.core.rest.cxf.AddETagFilter;
+import org.apache.syncope.core.rest.cxf.RestServiceExceptionMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
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 63089a4..85dfa67 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
@@ -26,10 +26,10 @@
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.DerSchema;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.Schema;
+import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 
 public interface AnyDAO<A extends Any<?>> extends DAO<A> {
 
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/AuthModuleDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/AuthModuleDAO.java
index fc5e18c..b17f377 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/AuthModuleDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/AuthModuleDAO.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.core.persistence.api.dao.auth;
 
-import org.apache.syncope.core.persistence.api.dao.DAO;
 import java.util.List;
+import org.apache.syncope.core.persistence.api.dao.DAO;
 import org.apache.syncope.core.persistence.api.entity.auth.AuthModule;
 
 public interface AuthModuleDAO extends DAO<AuthModule> {
@@ -33,5 +33,4 @@
     void delete(String key);
 
     void delete(AuthModule authModule);
-
 }
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/CASSPDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/CASSPDAO.java
index 5f44953..b6f6f27 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/CASSPDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/CASSPDAO.java
@@ -18,9 +18,8 @@
  */
 package org.apache.syncope.core.persistence.api.dao.auth;
 
-import org.apache.syncope.core.persistence.api.dao.DAO;
-
 import java.util.List;
+import org.apache.syncope.core.persistence.api.dao.DAO;
 import org.apache.syncope.core.persistence.api.entity.auth.CASSPClientApp;
 
 public interface CASSPDAO extends DAO<CASSPClientApp> {
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/OIDCRPDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/OIDCRPDAO.java
index 412c6da..6f4fe0a 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/OIDCRPDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/OIDCRPDAO.java
@@ -18,9 +18,8 @@
  */
 package org.apache.syncope.core.persistence.api.dao.auth;
 
-import org.apache.syncope.core.persistence.api.dao.DAO;
-
 import java.util.List;
+import org.apache.syncope.core.persistence.api.dao.DAO;
 import org.apache.syncope.core.persistence.api.entity.auth.OIDCRPClientApp;
 
 public interface OIDCRPDAO extends DAO<OIDCRPClientApp> {
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/SAML2SPDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/SAML2SPDAO.java
index b173ab9..cc3aa27 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/SAML2SPDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/SAML2SPDAO.java
@@ -18,9 +18,8 @@
  */
 package org.apache.syncope.core.persistence.api.dao.auth;
 
-import org.apache.syncope.core.persistence.api.dao.DAO;
-
 import java.util.List;
+import org.apache.syncope.core.persistence.api.dao.DAO;
 import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPClientApp;
 
 public interface SAML2SPDAO extends DAO<SAML2SPClientApp> {
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/WAConfigDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/WAConfigDAO.java
index 3eb899d..a586ebe 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/WAConfigDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/auth/WAConfigDAO.java
@@ -18,11 +18,10 @@
  */
 package org.apache.syncope.core.persistence.api.dao.auth;
 
+import java.util.List;
 import org.apache.syncope.core.persistence.api.dao.DAO;
 import org.apache.syncope.core.persistence.api.entity.auth.WAConfigEntry;
 
-import java.util.List;
-
 public interface WAConfigDAO extends DAO<WAConfigEntry> {
 
     WAConfigEntry find(String key);
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/OrderByClause.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/OrderByClause.java
index b8509f0..7c5a8b3 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/OrderByClause.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/OrderByClause.java
@@ -20,7 +20,6 @@
 
 import java.io.Serializable;
 import java.util.Optional;
-
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.commons.lang3.builder.ToStringBuilder;
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 ef99a69..5ee01f9 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
@@ -19,8 +19,8 @@
 package org.apache.syncope.core.persistence.api.entity;
 
 import java.time.OffsetDateTime;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import java.util.List;
+import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 
 public interface Any<P extends PlainAttr<?>> extends Attributable<P>, Entity {
 
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Realm.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Realm.java
index 3e2b23b..8085472 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Realm.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Realm.java
@@ -18,14 +18,14 @@
  */
 package org.apache.syncope.core.persistence.api.entity;
 
-import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
-import org.apache.syncope.core.persistence.api.entity.policy.AttrReleasePolicy;
-import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import java.util.List;
 import java.util.Optional;
 import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
+import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
+import org.apache.syncope.core.persistence.api.entity.policy.AttrReleasePolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
+import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
+import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 
 public interface Realm extends Entity {
 
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Role.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Role.java
index 20e1521..0bb7bd8 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Role.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/Role.java
@@ -18,9 +18,9 @@
  */
 package org.apache.syncope.core.persistence.api.entity;
 
-import org.apache.syncope.core.persistence.api.entity.user.DynRoleMembership;
 import java.util.List;
 import java.util.Set;
+import org.apache.syncope.core.persistence.api.entity.user.DynRoleMembership;
 
 public interface Role extends ProvidedKeyEntity {
 
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/auth/WAConfigEntry.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/auth/WAConfigEntry.java
index 1b17fd8..bb575fc 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/auth/WAConfigEntry.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/auth/WAConfigEntry.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.core.persistence.api.entity.auth;
 
-import org.apache.syncope.core.persistence.api.entity.ProvidedKeyEntity;
 import java.util.List;
+import org.apache.syncope.core.persistence.api.entity.ProvidedKeyEntity;
 
 public interface WAConfigEntry extends ProvidedKeyEntity {
 
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/resource/ExternalResource.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/resource/ExternalResource.java
index 86fb038..8758cb6 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/resource/ExternalResource.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/resource/ExternalResource.java
@@ -24,11 +24,11 @@
 import org.apache.syncope.common.lib.types.ConnConfProperty;
 import org.apache.syncope.common.lib.types.ConnectorCapability;
 import org.apache.syncope.common.lib.types.TraceLevel;
-import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
 import org.apache.syncope.core.persistence.api.entity.ProvidedKeyEntity;
+import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PropagationPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/user/User.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/user/User.java
index 584b9f9..c7f2214 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/user/User.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/user/User.java
@@ -21,9 +21,9 @@
 import java.time.OffsetDateTime;
 import java.util.List;
 import java.util.Optional;
+import org.apache.syncope.core.persistence.api.entity.GroupableRelatable;
 import org.apache.syncope.core.persistence.api.entity.Role;
 import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
-import org.apache.syncope.core.persistence.api.entity.GroupableRelatable;
 
 public interface User extends Account, GroupableRelatable<User, UMembership, UPlainAttr, AnyObject, URelationship> {
 
@@ -54,11 +54,11 @@
     void setSecurityQuestion(SecurityQuestion securityQuestion);
 
     String getSecurityAnswer();
-    
+
     String getClearSecurityAnswer();
 
     void setEncodedSecurityAnswer(String securityAnswer);
-    
+
     void setSecurityAnswer(String securityAnswer);
 
     Integer getFailedLogins();
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java
index 85ddbc1..acc8658 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java
@@ -33,10 +33,6 @@
 import org.apache.syncope.common.lib.search.SpecialAttr;
 import org.apache.syncope.common.lib.search.SyncopeFiqlParser;
 import org.apache.syncope.common.lib.search.SyncopeFiqlSearchCondition;
-import org.apache.syncope.core.persistence.api.dao.search.MembershipCond;
-import org.apache.syncope.core.persistence.api.dao.search.ResourceCond;
-import org.apache.syncope.core.persistence.api.dao.search.RoleCond;
-import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.dao.search.AnyCond;
 import org.apache.syncope.core.persistence.api.dao.search.AnyTypeCond;
 import org.apache.syncope.core.persistence.api.dao.search.AssignableCond;
@@ -44,9 +40,13 @@
 import org.apache.syncope.core.persistence.api.dao.search.AuxClassCond;
 import org.apache.syncope.core.persistence.api.dao.search.DynRealmCond;
 import org.apache.syncope.core.persistence.api.dao.search.MemberCond;
+import org.apache.syncope.core.persistence.api.dao.search.MembershipCond;
 import org.apache.syncope.core.persistence.api.dao.search.PrivilegeCond;
 import org.apache.syncope.core.persistence.api.dao.search.RelationshipCond;
 import org.apache.syncope.core.persistence.api.dao.search.RelationshipTypeCond;
+import org.apache.syncope.core.persistence.api.dao.search.ResourceCond;
+import org.apache.syncope.core.persistence.api.dao.search.RoleCond;
+import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 
 /**
  * Visits CXF's {@link SearchBean} and produces {@link SearchCond}.
@@ -157,7 +157,7 @@
                             auxClassCond.setAuxClass(value);
                             leaf = SearchCond.getLeaf(auxClassCond);
                             break;
-                            
+
                         case RESOURCES:
                             ResourceCond resourceCond = new ResourceCond();
                             resourceCond.setResource(value);
diff --git a/core/persistence-api/src/test/java/org/apache/syncope/core/persistence/api/search/FilterConverterTest.java b/core/persistence-api/src/test/java/org/apache/syncope/core/persistence/api/search/FilterConverterTest.java
index 353ae27..eee355e 100644
--- a/core/persistence-api/src/test/java/org/apache/syncope/core/persistence/api/search/FilterConverterTest.java
+++ b/core/persistence-api/src/test/java/org/apache/syncope/core/persistence/api/search/FilterConverterTest.java
@@ -27,8 +27,8 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.search.SpecialAttr;
 import org.apache.syncope.common.lib.search.ConnObjectTOFiqlSearchConditionBuilder;
+import org.apache.syncope.common.lib.search.SpecialAttr;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.identityconnectors.framework.common.objects.AttributeBuilder;
 import org.identityconnectors.framework.common.objects.filter.AndFilter;
diff --git a/core/persistence-api/src/test/java/org/apache/syncope/core/persistence/api/search/SearchCondConverterTest.java b/core/persistence-api/src/test/java/org/apache/syncope/core/persistence/api/search/SearchCondConverterTest.java
index 5716642..f62d0d3 100644
--- a/core/persistence-api/src/test/java/org/apache/syncope/core/persistence/api/search/SearchCondConverterTest.java
+++ b/core/persistence-api/src/test/java/org/apache/syncope/core/persistence/api/search/SearchCondConverterTest.java
@@ -25,10 +25,6 @@
 import org.apache.syncope.common.lib.search.GroupFiqlSearchConditionBuilder;
 import org.apache.syncope.common.lib.search.SpecialAttr;
 import org.apache.syncope.common.lib.search.UserFiqlSearchConditionBuilder;
-import org.apache.syncope.core.persistence.api.dao.search.MembershipCond;
-import org.apache.syncope.core.persistence.api.dao.search.ResourceCond;
-import org.apache.syncope.core.persistence.api.dao.search.RoleCond;
-import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.dao.search.AnyCond;
 import org.apache.syncope.core.persistence.api.dao.search.AnyTypeCond;
 import org.apache.syncope.core.persistence.api.dao.search.AssignableCond;
@@ -36,9 +32,13 @@
 import org.apache.syncope.core.persistence.api.dao.search.AuxClassCond;
 import org.apache.syncope.core.persistence.api.dao.search.DynRealmCond;
 import org.apache.syncope.core.persistence.api.dao.search.MemberCond;
+import org.apache.syncope.core.persistence.api.dao.search.MembershipCond;
 import org.apache.syncope.core.persistence.api.dao.search.PrivilegeCond;
 import org.apache.syncope.core.persistence.api.dao.search.RelationshipCond;
 import org.apache.syncope.core.persistence.api.dao.search.RelationshipTypeCond;
+import org.apache.syncope.core.persistence.api.dao.search.ResourceCond;
+import org.apache.syncope.core.persistence.api.dao.search.RoleCond;
+import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.junit.jupiter.api.Test;
 
 public class SearchCondConverterTest {
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAJSONAnyObjectDAO.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAJSONAnyObjectDAO.java
index f4397de..48c61de 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAJSONAnyObjectDAO.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAJSONAnyObjectDAO.java
@@ -25,16 +25,16 @@
 import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.DynRealmDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
-import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
-import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
-import org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAJSONAnyObject;
 import org.apache.syncope.core.persistence.api.dao.JPAJSONAnyDAO;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
 import org.apache.syncope.core.persistence.api.entity.DerSchema;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
+import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
+import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
+import org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAJSONAnyObject;
 
 public class JPAJSONAnyObjectDAO extends JPAAnyObjectDAO {
 
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAJSONGroupDAO.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAJSONGroupDAO.java
index 1702103..281bef1 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAJSONGroupDAO.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAJSONGroupDAO.java
@@ -25,9 +25,6 @@
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.DynRealmDAO;
-import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
-import org.apache.syncope.core.persistence.api.entity.group.Group;
-import org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup;
 import org.apache.syncope.core.persistence.api.dao.JPAJSONAnyDAO;
 import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
@@ -35,8 +32,11 @@
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
 import org.apache.syncope.core.persistence.api.entity.DerSchema;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
+import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.search.SearchCondVisitor;
+import org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup;
 import org.springframework.context.ApplicationEventPublisher;
 
 public class JPAJSONGroupDAO extends JPAGroupDAO {
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAJSONUserDAO.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAJSONUserDAO.java
index 91b7a51..2a486d9 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAJSONUserDAO.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAJSONUserDAO.java
@@ -28,9 +28,6 @@
 import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.DynRealmDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
-import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
-import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.apache.syncope.core.persistence.jpa.entity.user.JPAJSONUser;
 import org.apache.syncope.core.persistence.api.dao.JPAJSONAnyDAO;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
@@ -38,7 +35,10 @@
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
 import org.apache.syncope.core.persistence.api.entity.DerSchema;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
+import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
+import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.persistence.jpa.entity.user.JPAJSONUser;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAUser;
 import org.apache.syncope.core.spring.security.SecurityProperties;
 
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MyJPAJSONAnyDAO.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MyJPAJSONAnyDAO.java
index 5555811..c26f7ea 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MyJPAJSONAnyDAO.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MyJPAJSONAnyDAO.java
@@ -24,12 +24,12 @@
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.entity.AnyUtils;
+import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
-import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 
 public class MyJPAJSONAnyDAO extends AbstractJPAJSONAnyDAO {
 
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MyJPAJSONAnySearchDAO.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MyJPAJSONAnySearchDAO.java
index d2ebd89..9d29051 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MyJPAJSONAnySearchDAO.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/MyJPAJSONAnySearchDAO.java
@@ -37,12 +37,12 @@
 import org.apache.syncope.core.persistence.api.entity.AnyUtils;
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
+import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
-import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 
 public class MyJPAJSONAnySearchDAO extends JPAAnySearchDAO {
 
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/PGJPAJSONAnyDAO.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/PGJPAJSONAnyDAO.java
index 1a32d6a..d356a87 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/PGJPAJSONAnyDAO.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/dao/PGJPAJSONAnyDAO.java
@@ -22,12 +22,12 @@
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.entity.AnyUtils;
+import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
-import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 
 public class PGJPAJSONAnyDAO extends AbstractJPAJSONAnyDAO {
 
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAJSONEntityFactory.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAJSONEntityFactory.java
index 078f5ab..24dcd06 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAJSONEntityFactory.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAJSONEntityFactory.java
@@ -47,10 +47,10 @@
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAJSONLAPlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAJSONLAPlainAttrValue;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAJSONLinkedAccount;
-import org.apache.syncope.core.persistence.jpa.entity.user.JPAJSONUser;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAJSONUPlainAttr;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAJSONUPlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAJSONUPlainAttrValue;
+import org.apache.syncope.core.persistence.jpa.entity.user.JPAJSONUser;
 import org.apache.syncope.core.spring.security.SecureRandomUtils;
 
 public abstract class JPAJSONEntityFactory extends JPAEntityFactory {
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAJSONEntityListener.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAJSONEntityListener.java
index 865f353..75dbaee 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAJSONEntityListener.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAJSONEntityListener.java
@@ -19,12 +19,12 @@
 package org.apache.syncope.core.persistence.jpa.entity;
 
 import java.util.List;
-import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.Any;
-import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.persistence.api.entity.JSONAttributable;
+import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.user.LAPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.user.LinkedAccount;
+import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 
 public abstract class JPAJSONEntityListener<A extends Any<?>> {
 
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAJSONAPlainAttr.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAJSONAPlainAttr.java
index a2768ee..7dcdf4d 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAJSONAPlainAttr.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAJSONAPlainAttr.java
@@ -27,8 +27,9 @@
 import java.util.List;
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
+import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
@@ -39,7 +40,6 @@
 import org.apache.syncope.core.persistence.jpa.entity.AbstractPlainAttr;
 import org.apache.syncope.core.persistence.jpa.entity.JPAPlainSchema;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
-import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 
 @JsonIgnoreProperties("valuesAsStrings")
 @JsonInclude(JsonInclude.Include.NON_EMPTY)
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAJSONAnyObject.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAJSONAnyObject.java
index 6b09c7d..5fc6eeb 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAJSONAnyObject.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAJSONAnyObject.java
@@ -28,12 +28,12 @@
 import javax.persistence.Lob;
 import javax.persistence.Table;
 import javax.persistence.Transient;
+import org.apache.syncope.core.persistence.api.entity.JSONAttributable;
+import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.Membership;
 import org.apache.syncope.core.persistence.api.entity.anyobject.AMembership;
 import org.apache.syncope.core.persistence.api.entity.anyobject.APlainAttr;
 import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
-import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
-import org.apache.syncope.core.persistence.api.entity.JSONAttributable;
 import org.apache.syncope.core.persistence.jpa.validation.entity.JPAJSONAttributableCheck;
 
 @Entity
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAJSONAnyObjectListener.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAJSONAnyObjectListener.java
index f554332..0770da0 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAJSONAnyObjectListener.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/anyobject/JPAJSONAnyObjectListener.java
@@ -25,10 +25,10 @@
 import javax.persistence.PostUpdate;
 import javax.persistence.PrePersist;
 import javax.persistence.PreUpdate;
+import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
 import org.apache.syncope.core.persistence.jpa.entity.JPAJSONEntityListener;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
-import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 
 public class JPAJSONAnyObjectListener extends JPAJSONEntityListener<AnyObject> {
 
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAJSONGPlainAttr.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAJSONGPlainAttr.java
index e783295..e464491 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAJSONGPlainAttr.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAJSONGPlainAttr.java
@@ -28,6 +28,7 @@
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
+import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
@@ -37,7 +38,6 @@
 import org.apache.syncope.core.persistence.jpa.entity.AbstractPlainAttr;
 import org.apache.syncope.core.persistence.jpa.entity.JPAPlainSchema;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
-import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 
 @JsonIgnoreProperties("valuesAsStrings")
 @JsonInclude(JsonInclude.Include.NON_EMPTY)
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAJSONGroup.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAJSONGroup.java
index f70bb9d..1366cb9 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAJSONGroup.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAJSONGroup.java
@@ -25,10 +25,10 @@
 import javax.persistence.Lob;
 import javax.persistence.Table;
 import javax.persistence.Transient;
+import org.apache.syncope.core.persistence.api.entity.JSONAttributable;
+import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.group.GPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.group.Group;
-import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
-import org.apache.syncope.core.persistence.api.entity.JSONAttributable;
 import org.apache.syncope.core.persistence.jpa.validation.entity.JPAJSONAttributableCheck;
 
 @Entity
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAJSONGroupListener.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAJSONGroupListener.java
index 0574898..2c9fb34 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAJSONGroupListener.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAJSONGroupListener.java
@@ -25,10 +25,10 @@
 import javax.persistence.PostUpdate;
 import javax.persistence.PrePersist;
 import javax.persistence.PreUpdate;
+import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.jpa.entity.JPAJSONEntityListener;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
-import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 
 public class JPAJSONGroupListener extends JPAJSONEntityListener<Group> {
 
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAJSONUPlainAttr.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAJSONUPlainAttr.java
index c8082a1..66eb91a 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAJSONUPlainAttr.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAJSONUPlainAttr.java
@@ -29,6 +29,7 @@
 import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
@@ -39,7 +40,6 @@
 import org.apache.syncope.core.persistence.jpa.entity.AbstractPlainAttr;
 import org.apache.syncope.core.persistence.jpa.entity.JPAPlainSchema;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
-import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 
 @JsonIgnoreProperties("valuesAsStrings")
 @JsonInclude(JsonInclude.Include.NON_EMPTY)
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAJSONUser.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAJSONUser.java
index 87e2ca2..4eb99cf 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAJSONUser.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAJSONUser.java
@@ -31,13 +31,13 @@
 import javax.persistence.Table;
 import javax.persistence.Transient;
 import javax.validation.Valid;
+import org.apache.syncope.core.persistence.api.entity.JSONAttributable;
+import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.Membership;
+import org.apache.syncope.core.persistence.api.entity.user.LinkedAccount;
 import org.apache.syncope.core.persistence.api.entity.user.UMembership;
 import org.apache.syncope.core.persistence.api.entity.user.UPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
-import org.apache.syncope.core.persistence.api.entity.JSONAttributable;
-import org.apache.syncope.core.persistence.api.entity.user.LinkedAccount;
 import org.apache.syncope.core.persistence.jpa.validation.entity.JPAJSONAttributableCheck;
 
 @Entity
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAJSONUserListener.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAJSONUserListener.java
index 1b924cc..a2dadab 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAJSONUserListener.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAJSONUserListener.java
@@ -25,10 +25,10 @@
 import javax.persistence.PostUpdate;
 import javax.persistence.PrePersist;
 import javax.persistence.PreUpdate;
+import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.entity.JPAJSONEntityListener;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
-import org.apache.syncope.core.persistence.api.entity.JSONPlainAttr;
 
 public class JPAJSONUserListener extends JPAJSONEntityListener<User> {
 
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/JPAJSONAttributableCheck.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/JPAJSONAttributableCheck.java
index 6921c32..07e6fd5 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/JPAJSONAttributableCheck.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/JPAJSONAttributableCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/JPAJSONAttributableValidator.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/JPAJSONAttributableValidator.java
index b8d1a08..aa72fd4 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/JPAJSONAttributableValidator.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/JPAJSONAttributableValidator.java
@@ -20,8 +20,8 @@
 
 import java.util.concurrent.atomic.AtomicReference;
 import javax.validation.ConstraintValidatorContext;
-import org.apache.syncope.core.persistence.api.entity.PlainAttr;
 import org.apache.syncope.core.persistence.api.entity.JSONAttributable;
+import org.apache.syncope.core.persistence.api.entity.PlainAttr;
 
 public class JPAJSONAttributableValidator extends AbstractValidator<JPAJSONAttributableCheck, JSONAttributable<?>> {
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/RuntimeDomainLoader.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/RuntimeDomainLoader.java
index bd2f90b..c40cc79 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/RuntimeDomainLoader.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/RuntimeDomainLoader.java
@@ -21,12 +21,12 @@
 import java.util.Comparator;
 import org.apache.syncope.common.keymaster.client.api.DomainWatcher;
 import org.apache.syncope.common.keymaster.client.api.model.Domain;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.apache.syncope.core.persistence.api.DomainHolder;
 import org.apache.syncope.core.persistence.api.DomainRegistry;
 import org.apache.syncope.core.persistence.api.SyncopeCoreLoader;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.aop.support.AopUtils;
 import org.springframework.beans.factory.ListableBeanFactory;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java
index 7958e17..008766b 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/content/XMLContentExporter.java
@@ -72,7 +72,6 @@
 import org.apache.openjpa.lib.util.collections.BidiMap;
 import org.apache.openjpa.lib.util.collections.DualHashBidiMap;
 import org.apache.syncope.core.persistence.api.DomainHolder;
-import org.apache.syncope.core.provisioning.api.utils.FormatUtils;
 import org.apache.syncope.core.persistence.api.content.ContentExporter;
 import org.apache.syncope.core.persistence.api.dao.AuditConfDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
@@ -92,6 +91,7 @@
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttrValue;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAURelationship;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAUser;
+import org.apache.syncope.core.provisioning.api.utils.FormatUtils;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultPullCorrelationRule.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultPullCorrelationRule.java
index 23caa5a..fac1e2f 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultPullCorrelationRule.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultPullCorrelationRule.java
@@ -26,14 +26,14 @@
 import java.util.stream.Collectors;
 import org.apache.syncope.common.lib.policy.DefaultPullCorrelationRuleConf;
 import org.apache.syncope.common.lib.policy.PullCorrelationRuleConf;
+import org.apache.syncope.core.persistence.api.dao.PullCorrelationRule;
+import org.apache.syncope.core.persistence.api.dao.PullCorrelationRuleConfClass;
 import org.apache.syncope.core.persistence.api.dao.search.AnyCond;
 import org.apache.syncope.core.persistence.api.dao.search.AttrCond;
 import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.entity.resource.Item;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.identityconnectors.framework.common.objects.Attribute;
-import org.apache.syncope.core.persistence.api.dao.PullCorrelationRule;
-import org.apache.syncope.core.persistence.api.dao.PullCorrelationRuleConfClass;
 import org.identityconnectors.framework.common.objects.SyncDelta;
 
 @PullCorrelationRuleConfClass(DefaultPullCorrelationRuleConf.class)
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultPushCorrelationRule.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultPushCorrelationRule.java
index 19ac31c..6cd5115 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultPushCorrelationRule.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/DefaultPushCorrelationRule.java
@@ -29,17 +29,17 @@
 import org.apache.syncope.common.lib.policy.PushCorrelationRuleConf;
 import org.apache.syncope.common.lib.search.ConnObjectTOFiqlSearchConditionBuilder;
 import org.apache.syncope.common.lib.types.MappingPurpose;
-import org.apache.syncope.core.persistence.api.entity.resource.Provision;
-import org.identityconnectors.framework.common.objects.Attribute;
 import org.apache.syncope.core.persistence.api.dao.PushCorrelationRule;
 import org.apache.syncope.core.persistence.api.dao.PushCorrelationRuleConfClass;
 import org.apache.syncope.core.persistence.api.entity.Any;
+import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.provisioning.api.AccountGetter;
 import org.apache.syncope.core.provisioning.api.MappingManager;
 import org.apache.syncope.core.provisioning.api.PlainAttrGetter;
 import org.identityconnectors.common.security.GuardedByteArray;
 import org.identityconnectors.common.security.GuardedString;
 import org.identityconnectors.common.security.SecurityUtil;
+import org.identityconnectors.framework.common.objects.Attribute;
 import org.identityconnectors.framework.common.objects.AttributeBuilder;
 import org.identityconnectors.framework.common.objects.ConnectorObject;
 import org.identityconnectors.framework.common.objects.filter.Filter;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyMatchDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyMatchDAO.java
index 8c0cbb2..add9784 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyMatchDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyMatchDAO.java
@@ -35,8 +35,10 @@
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
+import org.apache.syncope.core.persistence.api.dao.AnyMatchDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.dao.search.AnyCond;
@@ -56,16 +58,14 @@
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
 import org.apache.syncope.core.persistence.api.entity.GroupableRelatable;
 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
+import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
+import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.dao.AnyMatchDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
-import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
-import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.jpa.entity.JPAPlainSchema;
 import org.springframework.beans.BeanUtils;
+import org.springframework.transaction.annotation.Transactional;
 
 public class JPAAnyMatchDAO extends AbstractDAO<Any<?>> implements AnyMatchDAO {
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
index a49bd83..de1fab9 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
@@ -35,9 +35,6 @@
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.types.AnyEntitlement;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.core.persistence.api.entity.Entity;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
-import org.apache.syncope.core.spring.security.DelegatedAdministrationException;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.DynRealmDAO;
@@ -48,6 +45,7 @@
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.AnyUtils;
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
+import org.apache.syncope.core.persistence.api.entity.Entity;
 import org.apache.syncope.core.persistence.api.entity.Membership;
 import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.persistence.api.entity.Relationship;
@@ -62,6 +60,8 @@
 import org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAnyObject;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAURelationship;
 import org.apache.syncope.core.provisioning.api.utils.RealmUtils;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
+import org.apache.syncope.core.spring.security.DelegatedAdministrationException;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java
index 9475f39..c87e434 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java
@@ -41,22 +41,21 @@
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.provisioning.api.utils.RealmUtils;
-import org.apache.syncope.core.persistence.api.dao.search.AttrCond;
-import org.apache.syncope.core.persistence.api.dao.search.MembershipCond;
-import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
-import org.apache.syncope.core.persistence.api.dao.search.ResourceCond;
-import org.apache.syncope.core.persistence.api.dao.search.RoleCond;
-import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.dao.search.AnyCond;
 import org.apache.syncope.core.persistence.api.dao.search.AnyTypeCond;
 import org.apache.syncope.core.persistence.api.dao.search.AssignableCond;
+import org.apache.syncope.core.persistence.api.dao.search.AttrCond;
 import org.apache.syncope.core.persistence.api.dao.search.AuxClassCond;
 import org.apache.syncope.core.persistence.api.dao.search.DynRealmCond;
 import org.apache.syncope.core.persistence.api.dao.search.MemberCond;
+import org.apache.syncope.core.persistence.api.dao.search.MembershipCond;
+import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.api.dao.search.PrivilegeCond;
 import org.apache.syncope.core.persistence.api.dao.search.RelationshipCond;
 import org.apache.syncope.core.persistence.api.dao.search.RelationshipTypeCond;
+import org.apache.syncope.core.persistence.api.dao.search.ResourceCond;
+import org.apache.syncope.core.persistence.api.dao.search.RoleCond;
+import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 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.AnyUtilsFactory;
@@ -65,6 +64,7 @@
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.Realm;
+import org.apache.syncope.core.provisioning.api.utils.RealmUtils;
 
 /**
  * Search engine implementation for users, groups and any objects, based on self-updating SQL views.
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAuditConfDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAuditConfDAO.java
index cc30ead..6384a3d 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAuditConfDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAuditConfDAO.java
@@ -28,12 +28,12 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.audit.AuditEntry;
 import org.apache.syncope.common.lib.types.AuditElements;
+import org.apache.syncope.core.persistence.api.dao.AuditConfDAO;
 import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
+import org.apache.syncope.core.persistence.api.entity.AuditConf;
+import org.apache.syncope.core.persistence.jpa.entity.JPAAuditConf;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.jpa.entity.JPAAuditConf;
-import org.apache.syncope.core.persistence.api.entity.AuditConf;
-import org.apache.syncope.core.persistence.api.dao.AuditConfDAO;
 
 public class JPAAuditConfDAO extends AbstractDAO<AuditConf> implements AuditConfDAO {
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConnInstanceDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConnInstanceDAO.java
index e0a14e3..30baa57 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConnInstanceDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConnInstanceDAO.java
@@ -25,8 +25,8 @@
 import org.apache.syncope.common.lib.types.IdMEntitlement;
 import org.apache.syncope.core.persistence.api.dao.ConnInstanceDAO;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
-import org.apache.syncope.core.persistence.api.entity.Entity;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
+import org.apache.syncope.core.persistence.api.entity.Entity;
 import org.apache.syncope.core.persistence.jpa.entity.JPAConnInstance;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.spring.security.DelegatedAdministrationException;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADynRealmDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADynRealmDAO.java
index 411711a..a575ba5 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADynRealmDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADynRealmDAO.java
@@ -22,22 +22,22 @@
 import java.util.List;
 import javax.persistence.Query;
 import javax.persistence.TypedQuery;
+import org.apache.syncope.core.persistence.api.dao.AnyMatchDAO;
+import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.DynRealmDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
+import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.DynRealm;
 import org.apache.syncope.core.persistence.api.search.SearchCondConverter;
+import org.apache.syncope.core.persistence.api.search.SearchCondVisitor;
 import org.apache.syncope.core.persistence.jpa.entity.JPADynRealm;
+import org.apache.syncope.core.provisioning.api.event.AnyLifecycleEvent;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
+import org.identityconnectors.framework.common.objects.SyncDeltaType;
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.dao.AnyMatchDAO;
-import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
-import org.apache.syncope.core.persistence.api.dao.GroupDAO;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.persistence.api.search.SearchCondVisitor;
-import org.apache.syncope.core.provisioning.api.event.AnyLifecycleEvent;
-import org.identityconnectors.framework.common.objects.SyncDeltaType;
 
 public class JPADynRealmDAO extends AbstractDAO<DynRealm> implements DynRealmDAO {
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
index 769ca55..15221de 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
@@ -28,8 +28,8 @@
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
-import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
+import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.dao.TaskDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
@@ -38,17 +38,17 @@
 import org.apache.syncope.core.persistence.api.entity.Entity;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
 import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
-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.policy.PasswordPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.Policy;
 import org.apache.syncope.core.persistence.api.entity.policy.PropagationPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PushPolicy;
+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.Provision;
-import org.apache.syncope.core.persistence.jpa.entity.resource.JPAMappingItem;
 import org.apache.syncope.core.persistence.jpa.entity.resource.JPAExternalResource;
 import org.apache.syncope.core.persistence.jpa.entity.resource.JPAMapping;
+import org.apache.syncope.core.persistence.jpa.entity.resource.JPAMappingItem;
 import org.apache.syncope.core.persistence.jpa.entity.resource.JPAProvision;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.spring.security.DelegatedAdministrationException;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java
index 9fb6c1d..49f5835 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARealmDAO.java
@@ -29,18 +29,18 @@
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.dao.RoleDAO;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
-import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
 import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
+import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.AttrReleasePolicy;
+import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.Policy;
+import org.apache.syncope.core.persistence.api.entity.policy.PropagationPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.ProvisioningPolicy;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.jpa.entity.JPARealm;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
-import org.apache.syncope.core.persistence.api.entity.policy.PropagationPolicy;
 
 public class JPARealmDAO extends AbstractDAO<Realm> implements RealmDAO {
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java
index e2e2f11..a842326 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java
@@ -24,14 +24,14 @@
 import javax.persistence.TypedQuery;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.core.persistence.api.dao.AnyMatchDAO;
-import org.apache.syncope.core.persistence.api.search.SearchCondConverter;
-import org.apache.syncope.core.persistence.api.dao.RoleDAO;
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.DelegationDAO;
+import org.apache.syncope.core.persistence.api.dao.RoleDAO;
 import org.apache.syncope.core.persistence.api.entity.Privilege;
 import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.persistence.api.entity.Role;
 import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.persistence.api.search.SearchCondConverter;
 import org.apache.syncope.core.persistence.api.search.SearchCondVisitor;
 import org.apache.syncope.core.persistence.jpa.entity.JPARole;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAUser;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPASRARouteDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPASRARouteDAO.java
index 01d8d24..bd866b9 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPASRARouteDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPASRARouteDAO.java
@@ -20,10 +20,10 @@
 
 import java.util.List;
 import javax.persistence.TypedQuery;
+import org.apache.syncope.core.persistence.api.dao.SRARouteDAO;
+import org.apache.syncope.core.persistence.api.entity.SRARoute;
 import org.apache.syncope.core.persistence.jpa.entity.JPASRARoute;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.SRARoute;
-import org.apache.syncope.core.persistence.api.dao.SRARouteDAO;
 
 public class JPASRARouteDAO extends AbstractDAO<SRARoute> implements SRARouteDAO {
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
index 60ba6a3..9bff44b 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPATaskDAO.java
@@ -46,12 +46,12 @@
 import org.apache.syncope.core.persistence.api.entity.task.PushTask;
 import org.apache.syncope.core.persistence.api.entity.task.SchedTask;
 import org.apache.syncope.core.persistence.api.entity.task.Task;
+import org.apache.syncope.core.persistence.jpa.entity.task.AbstractTask;
 import org.apache.syncope.core.persistence.jpa.entity.task.JPANotificationTask;
 import org.apache.syncope.core.persistence.jpa.entity.task.JPAPropagationTask;
+import org.apache.syncope.core.persistence.jpa.entity.task.JPAPullTask;
 import org.apache.syncope.core.persistence.jpa.entity.task.JPAPushTask;
 import org.apache.syncope.core.persistence.jpa.entity.task.JPASchedTask;
-import org.apache.syncope.core.persistence.jpa.entity.task.JPAPullTask;
-import org.apache.syncope.core.persistence.jpa.entity.task.AbstractTask;
 import org.apache.syncope.core.persistence.jpa.entity.task.JPATaskExec;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
index 615d6ef..fd121db 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
@@ -36,8 +36,6 @@
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.EntityViolationType;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
-import org.apache.syncope.core.spring.security.DelegatedAdministrationException;
 import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
 import org.apache.syncope.core.persistence.api.dao.AccessTokenDAO;
 import org.apache.syncope.core.persistence.api.dao.DelegationDAO;
@@ -73,6 +71,8 @@
 import org.apache.syncope.core.spring.ImplementationManager;
 import org.apache.syncope.core.spring.policy.AccountPolicyException;
 import org.apache.syncope.core.spring.policy.PasswordPolicyException;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
+import org.apache.syncope.core.spring.security.DelegatedAdministrationException;
 import org.apache.syncope.core.spring.security.Encryptor;
 import org.apache.syncope.core.spring.security.SecurityProperties;
 import org.springframework.transaction.annotation.Propagation;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPAAuthModuleDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPAAuthModuleDAO.java
index 565ea5d..0d5d4aa 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPAAuthModuleDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPAAuthModuleDAO.java
@@ -23,9 +23,9 @@
 import org.apache.syncope.common.lib.policy.DefaultAuthPolicyConf;
 import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
 import org.apache.syncope.core.persistence.api.dao.auth.AuthModuleDAO;
-import org.apache.syncope.core.persistence.jpa.dao.AbstractDAO;
 import org.apache.syncope.core.persistence.api.entity.auth.AuthModule;
 import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
+import org.apache.syncope.core.persistence.jpa.dao.AbstractDAO;
 import org.apache.syncope.core.persistence.jpa.entity.auth.JPAAuthModule;
 import org.springframework.transaction.annotation.Transactional;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPACASSPDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPACASSPDAO.java
index 13ec6e1..46de166 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPACASSPDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPACASSPDAO.java
@@ -18,17 +18,15 @@
  */
 package org.apache.syncope.core.persistence.jpa.dao.auth;
 
+import java.util.List;
+import javax.persistence.NoResultException;
+import javax.persistence.TypedQuery;
 import org.apache.syncope.core.persistence.api.dao.auth.CASSPDAO;
+import org.apache.syncope.core.persistence.api.entity.auth.CASSPClientApp;
 import org.apache.syncope.core.persistence.jpa.dao.AbstractDAO;
 import org.apache.syncope.core.persistence.jpa.entity.auth.JPACASSPClientApp;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.persistence.NoResultException;
-import javax.persistence.TypedQuery;
-
-import java.util.List;
-import org.apache.syncope.core.persistence.api.entity.auth.CASSPClientApp;
-
 public class JPACASSPDAO extends AbstractDAO<CASSPClientApp> implements CASSPDAO {
 
     @Override
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPAOIDCJWKSDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPAOIDCJWKSDAO.java
index a95be9a..3c41b40 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPAOIDCJWKSDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPAOIDCJWKSDAO.java
@@ -18,15 +18,14 @@
  */
 package org.apache.syncope.core.persistence.jpa.dao.auth;
 
+import javax.persistence.NoResultException;
+import javax.persistence.TypedQuery;
 import org.apache.syncope.core.persistence.api.dao.auth.OIDCJWKSDAO;
 import org.apache.syncope.core.persistence.api.entity.auth.OIDCJWKS;
 import org.apache.syncope.core.persistence.jpa.dao.AbstractDAO;
 import org.apache.syncope.core.persistence.jpa.entity.auth.JPAOIDCJWKS;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.persistence.NoResultException;
-import javax.persistence.TypedQuery;
-
 public class JPAOIDCJWKSDAO extends AbstractDAO<OIDCJWKS> implements OIDCJWKSDAO {
 
     @Transactional(readOnly = true)
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPAOIDCRPDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPAOIDCRPDAO.java
index a744adc..1fe5c5f 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPAOIDCRPDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPAOIDCRPDAO.java
@@ -21,11 +21,11 @@
 import java.util.List;
 import javax.persistence.NoResultException;
 import javax.persistence.TypedQuery;
+import org.apache.syncope.core.persistence.api.dao.auth.OIDCRPDAO;
+import org.apache.syncope.core.persistence.api.entity.auth.OIDCRPClientApp;
 import org.apache.syncope.core.persistence.jpa.dao.AbstractDAO;
 import org.apache.syncope.core.persistence.jpa.entity.auth.JPAOIDCRPClientApp;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.dao.auth.OIDCRPDAO;
-import org.apache.syncope.core.persistence.api.entity.auth.OIDCRPClientApp;
 
 public class JPAOIDCRPDAO extends AbstractDAO<OIDCRPClientApp> implements OIDCRPDAO {
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPASAML2IdPEntityDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPASAML2IdPEntityDAO.java
index 08761df..cb416fa 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPASAML2IdPEntityDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPASAML2IdPEntityDAO.java
@@ -20,11 +20,11 @@
 
 import java.util.List;
 import javax.persistence.TypedQuery;
-import org.apache.syncope.core.persistence.jpa.dao.AbstractDAO;
-import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.jpa.entity.auth.JPASAML2IdPEntity;
-import org.apache.syncope.core.persistence.api.entity.auth.SAML2IdPEntity;
 import org.apache.syncope.core.persistence.api.dao.auth.SAML2IdPEntityDAO;
+import org.apache.syncope.core.persistence.api.entity.auth.SAML2IdPEntity;
+import org.apache.syncope.core.persistence.jpa.dao.AbstractDAO;
+import org.apache.syncope.core.persistence.jpa.entity.auth.JPASAML2IdPEntity;
+import org.springframework.transaction.annotation.Transactional;
 
 public class JPASAML2IdPEntityDAO extends AbstractDAO<SAML2IdPEntity> implements SAML2IdPEntityDAO {
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPASAML2SPDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPASAML2SPDAO.java
index 27b0e18..42732f1 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPASAML2SPDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPASAML2SPDAO.java
@@ -18,14 +18,14 @@
  */
 package org.apache.syncope.core.persistence.jpa.dao.auth;
 
+import java.util.List;
+import javax.persistence.NoResultException;
+import javax.persistence.TypedQuery;
+import org.apache.syncope.core.persistence.api.dao.auth.SAML2SPDAO;
+import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPClientApp;
 import org.apache.syncope.core.persistence.jpa.dao.AbstractDAO;
 import org.apache.syncope.core.persistence.jpa.entity.auth.JPASAML2SPClientApp;
 import org.springframework.transaction.annotation.Transactional;
-import javax.persistence.NoResultException;
-import javax.persistence.TypedQuery;
-import java.util.List;
-import org.apache.syncope.core.persistence.api.dao.auth.SAML2SPDAO;
-import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPClientApp;
 
 public class JPASAML2SPDAO extends AbstractDAO<SAML2SPClientApp> implements SAML2SPDAO {
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPASAML2SPEntityDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPASAML2SPEntityDAO.java
index f989456..1d53004 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPASAML2SPEntityDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPASAML2SPEntityDAO.java
@@ -20,11 +20,11 @@
 
 import java.util.List;
 import javax.persistence.TypedQuery;
+import org.apache.syncope.core.persistence.api.dao.auth.SAML2SPEntityDAO;
+import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPEntity;
 import org.apache.syncope.core.persistence.jpa.dao.AbstractDAO;
 import org.apache.syncope.core.persistence.jpa.entity.auth.JPASAML2SPEntity;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPEntity;
-import org.apache.syncope.core.persistence.api.dao.auth.SAML2SPEntityDAO;
 
 public class JPASAML2SPEntityDAO extends AbstractDAO<SAML2SPEntity> implements SAML2SPEntityDAO {
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPAWAConfigDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPAWAConfigDAO.java
index a419a4c..58083f5 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPAWAConfigDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/auth/JPAWAConfigDAO.java
@@ -18,13 +18,13 @@
  */
 package org.apache.syncope.core.persistence.jpa.dao.auth;
 
+import java.util.List;
+import javax.persistence.TypedQuery;
 import org.apache.syncope.core.persistence.api.dao.auth.WAConfigDAO;
 import org.apache.syncope.core.persistence.api.entity.auth.WAConfigEntry;
 import org.apache.syncope.core.persistence.jpa.dao.AbstractDAO;
 import org.apache.syncope.core.persistence.jpa.entity.auth.JPAWAConfigEntry;
 import org.springframework.transaction.annotation.Transactional;
-import javax.persistence.TypedQuery;
-import java.util.List;
 
 public class JPAWAConfigDAO extends AbstractDAO<WAConfigEntry> implements WAConfigDAO {
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractGroupableRelatable.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractGroupableRelatable.java
index 160ae07..0fd4b58 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractGroupableRelatable.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractGroupableRelatable.java
@@ -24,8 +24,8 @@
 import java.util.stream.Collectors;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.GroupablePlainAttr;
-import org.apache.syncope.core.persistence.api.entity.Membership;
 import org.apache.syncope.core.persistence.api.entity.GroupableRelatable;
+import org.apache.syncope.core.persistence.api.entity.Membership;
 import org.apache.syncope.core.persistence.api.entity.Relationship;
 import org.apache.syncope.core.persistence.api.entity.RelationshipType;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttrValue.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttrValue.java
index d535dba..878be34 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttrValue.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/AbstractPlainAttrValue.java
@@ -29,11 +29,11 @@
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
-import org.apache.syncope.core.provisioning.api.utils.FormatUtils;
 import org.apache.syncope.core.persistence.api.attrvalue.validation.ParsingValidationException;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.jpa.validation.entity.PlainAttrValueCheck;
+import org.apache.syncope.core.provisioning.api.utils.FormatUtils;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.apache.syncope.core.spring.security.Encryptor;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtilsFactory.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtilsFactory.java
index ed82942..e48d093 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtilsFactory.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAAnyUtilsFactory.java
@@ -24,7 +24,6 @@
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
 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.AnyUtilsFactory;
@@ -32,6 +31,7 @@
 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.user.User;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
 
 public class JPAAnyUtilsFactory implements AnyUtilsFactory {
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAConnInstance.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAConnInstance.java
index d44e081..a12f5d9 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAConnInstance.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAConnInstance.java
@@ -45,9 +45,9 @@
 import org.apache.syncope.core.persistence.api.entity.ConnPoolConf;
 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.entity.resource.JPAExternalResource;
 import org.apache.syncope.core.persistence.jpa.validation.entity.ConnInstanceCheck;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
-import org.apache.syncope.core.persistence.jpa.entity.resource.JPAExternalResource;
 
 @Entity
 @Table(name = JPAConnInstance.TABLE)
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAReportExec.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAReportExec.java
index f1abc06..b7203fd 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAReportExec.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAReportExec.java
@@ -18,6 +18,7 @@
  */
 package org.apache.syncope.core.persistence.jpa.entity;
 
+import java.util.Optional;
 import javax.persistence.Basic;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -29,8 +30,6 @@
 import org.apache.syncope.core.persistence.api.entity.Report;
 import org.apache.syncope.core.persistence.api.entity.ReportExec;
 
-import java.util.Optional;
-
 @Entity
 @Table(name = JPAReportExec.TABLE)
 public class JPAReportExec extends AbstractExec implements ReportExec {
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPARole.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPARole.java
index 1101039..e721436 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPARole.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPARole.java
@@ -39,13 +39,13 @@
 import javax.persistence.UniqueConstraint;
 import javax.validation.Valid;
 import org.apache.syncope.core.persistence.api.entity.Application;
-import org.apache.syncope.core.persistence.api.entity.user.DynRoleMembership;
-import org.apache.syncope.core.persistence.api.entity.Realm;
-import org.apache.syncope.core.persistence.api.entity.Role;
-import org.apache.syncope.core.persistence.jpa.entity.user.JPADynRoleMembership;
-import org.apache.syncope.core.persistence.jpa.validation.entity.RoleCheck;
 import org.apache.syncope.core.persistence.api.entity.DynRealm;
 import org.apache.syncope.core.persistence.api.entity.Privilege;
+import org.apache.syncope.core.persistence.api.entity.Realm;
+import org.apache.syncope.core.persistence.api.entity.Role;
+import org.apache.syncope.core.persistence.api.entity.user.DynRoleMembership;
+import org.apache.syncope.core.persistence.jpa.entity.user.JPADynRoleMembership;
+import org.apache.syncope.core.persistence.jpa.validation.entity.RoleCheck;
 
 @Entity
 @Table(name = JPARole.TABLE)
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASRARoute.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASRARoute.java
index cda8808..cfca0cf 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASRARoute.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASRARoute.java
@@ -21,7 +21,6 @@
 import java.net.URI;
 import java.util.List;
 import java.util.Optional;
-
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.EnumType;
@@ -33,9 +32,9 @@
 import org.apache.syncope.common.lib.types.SRARouteFilter;
 import org.apache.syncope.common.lib.types.SRARoutePredicate;
 import org.apache.syncope.common.lib.types.SRARouteType;
-import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.persistence.api.entity.SRARoute;
 import org.apache.syncope.core.persistence.jpa.validation.entity.SRARouteCheck;
+import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 
 @Entity
 @Table(name = JPASRARoute.TABLE)
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/AbstractClientApp.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/AbstractClientApp.java
index fb7ac7b..7d09484 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/AbstractClientApp.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/AbstractClientApp.java
@@ -21,22 +21,22 @@
 import com.fasterxml.jackson.core.type.TypeReference;
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.syncope.core.persistence.api.entity.Realm;
-import org.apache.syncope.core.persistence.api.entity.auth.ClientApp;
-import org.apache.syncope.core.persistence.api.entity.policy.AttrReleasePolicy;
-import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
-import org.apache.syncope.core.persistence.jpa.entity.AbstractGeneratedKeyEntity;
-import org.apache.syncope.core.persistence.jpa.entity.JPARealm;
-import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAttrReleasePolicy;
-import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAuthPolicy;
-import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAccessPolicy;
 import javax.persistence.Column;
 import javax.persistence.FetchType;
 import javax.persistence.Lob;
 import javax.persistence.ManyToOne;
 import javax.persistence.MappedSuperclass;
 import org.apache.syncope.common.lib.Attr;
+import org.apache.syncope.core.persistence.api.entity.Realm;
+import org.apache.syncope.core.persistence.api.entity.auth.ClientApp;
+import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
+import org.apache.syncope.core.persistence.api.entity.policy.AttrReleasePolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractGeneratedKeyEntity;
+import org.apache.syncope.core.persistence.jpa.entity.JPARealm;
+import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAccessPolicy;
+import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAttrReleasePolicy;
+import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAuthPolicy;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 
 @MappedSuperclass
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPAClientAppUtils.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPAClientAppUtils.java
index ff8a77f..ceacbb7 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPAClientAppUtils.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPAClientAppUtils.java
@@ -19,11 +19,11 @@
 package org.apache.syncope.core.persistence.jpa.entity.auth;
 
 import org.apache.syncope.common.lib.types.ClientAppType;
+import org.apache.syncope.core.persistence.api.entity.auth.CASSPClientApp;
 import org.apache.syncope.core.persistence.api.entity.auth.ClientApp;
 import org.apache.syncope.core.persistence.api.entity.auth.ClientAppUtils;
-import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPClientApp;
-import org.apache.syncope.core.persistence.api.entity.auth.CASSPClientApp;
 import org.apache.syncope.core.persistence.api.entity.auth.OIDCRPClientApp;
+import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPClientApp;
 
 public class JPAClientAppUtils implements ClientAppUtils {
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPAClientAppUtilsFactory.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPAClientAppUtilsFactory.java
index 35f6997..7fd135e 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPAClientAppUtilsFactory.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPAClientAppUtilsFactory.java
@@ -23,12 +23,12 @@
 import org.apache.syncope.common.lib.to.OIDCRPClientAppTO;
 import org.apache.syncope.common.lib.to.SAML2SPClientAppTO;
 import org.apache.syncope.common.lib.types.ClientAppType;
+import org.apache.syncope.core.persistence.api.entity.auth.CASSPClientApp;
 import org.apache.syncope.core.persistence.api.entity.auth.ClientApp;
 import org.apache.syncope.core.persistence.api.entity.auth.ClientAppUtils;
 import org.apache.syncope.core.persistence.api.entity.auth.ClientAppUtilsFactory;
-import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPClientApp;
-import org.apache.syncope.core.persistence.api.entity.auth.CASSPClientApp;
 import org.apache.syncope.core.persistence.api.entity.auth.OIDCRPClientApp;
+import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPClientApp;
 
 public class JPAClientAppUtilsFactory implements ClientAppUtilsFactory {
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPAOIDCRPClientApp.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPAOIDCRPClientApp.java
index 1ebbc9f..09dafc0 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPAOIDCRPClientApp.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPAOIDCRPClientApp.java
@@ -18,17 +18,17 @@
  */
 package org.apache.syncope.core.persistence.jpa.entity.auth;
 
+import java.util.HashSet;
+import java.util.Set;
 import javax.persistence.CollectionTable;
 import javax.persistence.Column;
 import javax.persistence.ElementCollection;
 import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
 import javax.persistence.FetchType;
 import javax.persistence.JoinColumn;
 import javax.persistence.Table;
-import java.util.HashSet;
-import java.util.Set;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
 import org.apache.syncope.common.lib.types.OIDCGrantType;
 import org.apache.syncope.common.lib.types.OIDCResponseType;
 import org.apache.syncope.common.lib.types.OIDCSubjectType;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPASAML2IdPEntity.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPASAML2IdPEntity.java
index c892e68..bdd1852 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPASAML2IdPEntity.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPASAML2IdPEntity.java
@@ -23,8 +23,8 @@
 import javax.persistence.Lob;
 import javax.persistence.Table;
 import org.apache.commons.lang3.ArrayUtils;
-import org.apache.syncope.core.persistence.jpa.entity.AbstractProvidedKeyEntity;
 import org.apache.syncope.core.persistence.api.entity.auth.SAML2IdPEntity;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractProvidedKeyEntity;
 
 @Entity
 @Table(name = JPASAML2IdPEntity.TABLE)
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPASAML2SPEntity.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPASAML2SPEntity.java
index 27c84ea..df04354 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPASAML2SPEntity.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/auth/JPASAML2SPEntity.java
@@ -23,8 +23,8 @@
 import javax.persistence.Lob;
 import javax.persistence.Table;
 import org.apache.commons.lang3.ArrayUtils;
-import org.apache.syncope.core.persistence.jpa.entity.AbstractProvidedKeyEntity;
 import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPEntity;
+import org.apache.syncope.core.persistence.jpa.entity.AbstractProvidedKeyEntity;
 
 @Entity
 @Table(name = JPASAML2SPEntity.TABLE)
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGroup.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGroup.java
index 5f1da30..36ee866 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGroup.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/group/JPAGroup.java
@@ -35,7 +35,6 @@
 import javax.persistence.UniqueConstraint;
 import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
@@ -49,10 +48,11 @@
 import org.apache.syncope.core.persistence.jpa.entity.AbstractAny;
 import org.apache.syncope.core.persistence.jpa.entity.JPAAnyTypeClass;
 import org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAADynGroupMembership;
-import org.apache.syncope.core.persistence.jpa.validation.entity.GroupCheck;
 import org.apache.syncope.core.persistence.jpa.entity.resource.JPAExternalResource;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAUDynGroupMembership;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAUser;
+import org.apache.syncope.core.persistence.jpa.validation.entity.GroupCheck;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
 
 @Entity
 @Table(name = JPAGroup.TABLE)
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPolicyUtils.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPolicyUtils.java
index c30361b..d6584d0 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPolicyUtils.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPolicyUtils.java
@@ -22,13 +22,13 @@
 import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.AttrReleasePolicy;
+import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.Policy;
 import org.apache.syncope.core.persistence.api.entity.policy.PolicyUtils;
+import org.apache.syncope.core.persistence.api.entity.policy.PropagationPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PushPolicy;
-import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
-import org.apache.syncope.core.persistence.api.entity.policy.PropagationPolicy;
 
 public class JPAPolicyUtils implements PolicyUtils {
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPullCorrelationRuleEntity.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPullCorrelationRuleEntity.java
index b3135c1..7737622 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPullCorrelationRuleEntity.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPullCorrelationRuleEntity.java
@@ -23,8 +23,8 @@
 import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
 import org.apache.syncope.common.lib.types.IdMImplementationType;
-import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PullCorrelationRuleEntity;
+import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
 
 @Entity
 @Table(name = JPAPullCorrelationRuleEntity.TABLE, uniqueConstraints =
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPullPolicy.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPullPolicy.java
index 076695a..d8b9010 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPullPolicy.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPullPolicy.java
@@ -27,8 +27,8 @@
 import javax.persistence.OneToMany;
 import javax.persistence.Table;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
-import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PullCorrelationRuleEntity;
+import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
 
 @Entity
 @Table(name = JPAPullPolicy.TABLE)
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPushCorrelationRuleEntity.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPushCorrelationRuleEntity.java
index aad1473..9febe90 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPushCorrelationRuleEntity.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPushCorrelationRuleEntity.java
@@ -23,8 +23,8 @@
 import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
 import org.apache.syncope.common.lib.types.IdMImplementationType;
-import org.apache.syncope.core.persistence.api.entity.policy.PushPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PushCorrelationRuleEntity;
+import org.apache.syncope.core.persistence.api.entity.policy.PushPolicy;
 
 @Entity
 @Table(name = JPAPushCorrelationRuleEntity.TABLE, uniqueConstraints =
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPushPolicy.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPushPolicy.java
index 5103647..9caded4 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPushPolicy.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/policy/JPAPushPolicy.java
@@ -27,8 +27,8 @@
 import javax.persistence.OneToMany;
 import javax.persistence.Table;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
-import org.apache.syncope.core.persistence.api.entity.policy.PushPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PushCorrelationRuleEntity;
+import org.apache.syncope.core.persistence.api.entity.policy.PushPolicy;
 
 @Entity
 @Table(name = JPAPushPolicy.TABLE)
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/AbstractAnyTemplate.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/AbstractAnyTemplate.java
index ce9dae3..58c18ab 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/AbstractAnyTemplate.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/AbstractAnyTemplate.java
@@ -22,12 +22,12 @@
 import javax.persistence.ManyToOne;
 import javax.persistence.MappedSuperclass;
 import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.persistence.api.entity.AnyTemplate;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
 import org.apache.syncope.core.persistence.jpa.entity.AbstractGeneratedKeyEntity;
 import org.apache.syncope.core.persistence.jpa.entity.JPAAnyType;
+import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
 
 @MappedSuperclass
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java
index d9efbda..816a5af 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAExternalResource.java
@@ -46,27 +46,27 @@
 import org.apache.syncope.common.lib.types.ConnectorCapability;
 import org.apache.syncope.common.lib.types.IdMImplementationType;
 import org.apache.syncope.common.lib.types.TraceLevel;
-import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
-import org.apache.syncope.core.persistence.api.entity.ConnInstance;
-import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
-import org.apache.syncope.core.persistence.jpa.validation.entity.ExternalResourceCheck;
-import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
+import org.apache.syncope.core.persistence.api.entity.ConnInstance;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
+import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
+import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PropagationPolicy;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
-import org.apache.syncope.core.persistence.api.entity.resource.Provision;
-import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAccountPolicy;
-import org.apache.syncope.core.persistence.jpa.entity.JPAConnInstance;
-import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPasswordPolicy;
-import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPullPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PushPolicy;
+import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 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.jpa.entity.AbstractProvidedKeyEntity;
+import org.apache.syncope.core.persistence.jpa.entity.JPAConnInstance;
 import org.apache.syncope.core.persistence.jpa.entity.JPAImplementation;
+import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAccountPolicy;
+import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPasswordPolicy;
 import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPropagationPolicy;
+import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPullPolicy;
 import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPushPolicy;
+import org.apache.syncope.core.persistence.jpa.validation.entity.ExternalResourceCheck;
+import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.identityconnectors.framework.common.objects.ObjectClass;
 
 /**
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAOrgUnit.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAOrgUnit.java
index f4768c1..b7e11de 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAOrgUnit.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAOrgUnit.java
@@ -31,8 +31,8 @@
 import javax.persistence.Table;
 import javax.validation.constraints.NotNull;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
-import org.apache.syncope.core.persistence.api.entity.resource.OrgUnitItem;
 import org.apache.syncope.core.persistence.api.entity.resource.OrgUnit;
+import org.apache.syncope.core.persistence.api.entity.resource.OrgUnitItem;
 import org.apache.syncope.core.persistence.jpa.entity.AbstractGeneratedKeyEntity;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.identityconnectors.framework.common.objects.ObjectClass;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAProvision.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAProvision.java
index e6adc46..34b963b 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAProvision.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/resource/JPAProvision.java
@@ -21,7 +21,6 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
-
 import javax.persistence.Basic;
 import javax.persistence.CascadeType;
 import javax.persistence.Entity;
@@ -36,7 +35,6 @@
 import javax.persistence.UniqueConstraint;
 import javax.validation.constraints.NotNull;
 import org.apache.commons.lang3.BooleanUtils;
-import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
@@ -47,6 +45,7 @@
 import org.apache.syncope.core.persistence.jpa.entity.JPAAnyType;
 import org.apache.syncope.core.persistence.jpa.entity.JPAAnyTypeClass;
 import org.apache.syncope.core.persistence.jpa.entity.JPAPlainSchema;
+import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.identityconnectors.framework.common.objects.ObjectClass;
 import org.identityconnectors.framework.common.objects.SyncToken;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/AbstractProvisioningTask.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/AbstractProvisioningTask.java
index 3b30375..1d7a0ba 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/AbstractProvisioningTask.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/AbstractProvisioningTask.java
@@ -27,8 +27,8 @@
 import org.apache.syncope.common.lib.types.UnmatchingRule;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.task.ProvisioningTask;
-import org.apache.syncope.core.persistence.jpa.validation.entity.ProvisioningTaskCheck;
 import org.apache.syncope.core.persistence.jpa.entity.resource.JPAExternalResource;
+import org.apache.syncope.core.persistence.jpa.validation.entity.ProvisioningTaskCheck;
 
 @MappedSuperclass
 @ProvisioningTaskCheck
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAAnyTemplatePullTask.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAAnyTemplatePullTask.java
index 3d72642..ab78b54 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAAnyTemplatePullTask.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAAnyTemplatePullTask.java
@@ -22,9 +22,9 @@
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
-import org.apache.syncope.core.persistence.jpa.entity.resource.AbstractAnyTemplate;
-import org.apache.syncope.core.persistence.api.entity.task.PullTask;
 import org.apache.syncope.core.persistence.api.entity.task.AnyTemplatePullTask;
+import org.apache.syncope.core.persistence.api.entity.task.PullTask;
+import org.apache.syncope.core.persistence.jpa.entity.resource.AbstractAnyTemplate;
 
 @Entity
 @Table(name = JPAAnyTemplatePullTask.TABLE, uniqueConstraints =
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPropagationTask.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPropagationTask.java
index d4438c2..b82ab70 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPropagationTask.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPropagationTask.java
@@ -32,8 +32,8 @@
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
-import org.apache.syncope.core.persistence.jpa.validation.entity.PropagationTaskCheck;
 import org.apache.syncope.core.persistence.jpa.entity.resource.JPAExternalResource;
+import org.apache.syncope.core.persistence.jpa.validation.entity.PropagationTaskCheck;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.identityconnectors.framework.common.objects.Attribute;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPullTask.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPullTask.java
index 2b5c678..28b3bbb 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPullTask.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPullTask.java
@@ -40,10 +40,10 @@
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
 import org.apache.syncope.core.persistence.api.entity.Realm;
-import org.apache.syncope.core.persistence.jpa.entity.JPARealm;
-import org.apache.syncope.core.persistence.api.entity.task.PullTask;
 import org.apache.syncope.core.persistence.api.entity.task.AnyTemplatePullTask;
+import org.apache.syncope.core.persistence.api.entity.task.PullTask;
 import org.apache.syncope.core.persistence.jpa.entity.JPAImplementation;
+import org.apache.syncope.core.persistence.jpa.entity.JPARealm;
 
 @Entity
 @DiscriminatorValue("PullTask")
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPushTask.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPushTask.java
index a4a3f4c..5c314db 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPushTask.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPushTask.java
@@ -30,8 +30,8 @@
 import javax.persistence.ManyToMany;
 import javax.persistence.ManyToOne;
 import javax.persistence.OneToMany;
-import org.apache.syncope.common.lib.types.IdMImplementationType;
 import javax.persistence.UniqueConstraint;
+import org.apache.syncope.common.lib.types.IdMImplementationType;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
 import org.apache.syncope.core.persistence.api.entity.Realm;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPushTaskAnyFilter.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPushTaskAnyFilter.java
index 434e921..0950b6d 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPushTaskAnyFilter.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPAPushTaskAnyFilter.java
@@ -25,9 +25,9 @@
 import javax.validation.constraints.NotNull;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.task.PushTask;
-import org.apache.syncope.core.persistence.jpa.entity.JPAAnyType;
 import org.apache.syncope.core.persistence.api.entity.task.PushTaskAnyFilter;
 import org.apache.syncope.core.persistence.jpa.entity.AbstractGeneratedKeyEntity;
+import org.apache.syncope.core.persistence.jpa.entity.JPAAnyType;
 
 @Entity
 @Table(name = JPAPushTaskAnyFilter.TABLE, uniqueConstraints =
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtils.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtils.java
index df23d08..74cd927 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtils.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtils.java
@@ -18,21 +18,21 @@
  */
 package org.apache.syncope.core.persistence.jpa.entity.task;
 
-import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.to.NotificationTaskTO;
 import org.apache.syncope.common.lib.to.PropagationTaskTO;
+import org.apache.syncope.common.lib.to.PullTaskTO;
 import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.common.lib.to.SchedTaskTO;
-import org.apache.syncope.common.lib.to.PullTaskTO;
+import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.task.NotificationTask;
 import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
+import org.apache.syncope.core.persistence.api.entity.task.PullTask;
 import org.apache.syncope.core.persistence.api.entity.task.PushTask;
 import org.apache.syncope.core.persistence.api.entity.task.SchedTask;
 import org.apache.syncope.core.persistence.api.entity.task.Task;
 import org.apache.syncope.core.persistence.api.entity.task.TaskUtils;
-import org.apache.syncope.core.persistence.api.entity.task.PullTask;
 
 @SuppressWarnings("unchecked")
 public final class JPATaskUtils implements TaskUtils {
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtilsFactory.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtilsFactory.java
index e073f76..1818093 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtilsFactory.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/task/JPATaskUtilsFactory.java
@@ -20,22 +20,22 @@
 
 import java.util.HashMap;
 import java.util.Map;
-import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.to.NotificationTaskTO;
 import org.apache.syncope.common.lib.to.PropagationTaskTO;
+import org.apache.syncope.common.lib.to.PullTaskTO;
 import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.common.lib.to.SchedTaskTO;
-import org.apache.syncope.common.lib.to.PullTaskTO;
+import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.task.NotificationTask;
 import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
+import org.apache.syncope.core.persistence.api.entity.task.PullTask;
 import org.apache.syncope.core.persistence.api.entity.task.PushTask;
 import org.apache.syncope.core.persistence.api.entity.task.SchedTask;
 import org.apache.syncope.core.persistence.api.entity.task.Task;
 import org.apache.syncope.core.persistence.api.entity.task.TaskUtils;
 import org.apache.syncope.core.persistence.api.entity.task.TaskUtilsFactory;
-import org.apache.syncope.core.persistence.api.entity.task.PullTask;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
 
 public class JPATaskUtilsFactory implements TaskUtilsFactory {
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPADynRoleMembership.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPADynRoleMembership.java
index d2a4480..56b05ad 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPADynRoleMembership.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPADynRoleMembership.java
@@ -21,8 +21,8 @@
 import javax.persistence.Entity;
 import javax.persistence.OneToOne;
 import javax.persistence.Table;
-import org.apache.syncope.core.persistence.api.entity.user.DynRoleMembership;
 import org.apache.syncope.core.persistence.api.entity.Role;
+import org.apache.syncope.core.persistence.api.entity.user.DynRoleMembership;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.entity.AbstractDynMembership;
 import org.apache.syncope.core.persistence.jpa.entity.JPARole;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUser.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUser.java
index 3ac88b2..003ce8e 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUser.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/user/JPAUser.java
@@ -45,14 +45,6 @@
 import javax.validation.constraints.NotNull;
 import org.apache.syncope.common.keymaster.client.api.ConfParamOps;
 import org.apache.syncope.common.lib.types.CipherAlgorithm;
-import org.apache.syncope.core.persistence.api.entity.user.SecurityQuestion;
-import org.apache.syncope.core.persistence.api.entity.user.UPlainAttr;
-import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.apache.syncope.core.persistence.jpa.entity.resource.JPAExternalResource;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
-import org.apache.syncope.core.spring.security.Encryptor;
-import org.apache.syncope.core.spring.security.SecureRandomUtils;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
@@ -61,11 +53,19 @@
 import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.user.LinkedAccount;
+import org.apache.syncope.core.persistence.api.entity.user.SecurityQuestion;
 import org.apache.syncope.core.persistence.api.entity.user.UMembership;
+import org.apache.syncope.core.persistence.api.entity.user.UPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.user.URelationship;
+import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.entity.AbstractGroupableRelatable;
 import org.apache.syncope.core.persistence.jpa.entity.JPAAnyTypeClass;
 import org.apache.syncope.core.persistence.jpa.entity.JPARole;
+import org.apache.syncope.core.persistence.jpa.entity.resource.JPAExternalResource;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
+import org.apache.syncope.core.spring.security.Encryptor;
+import org.apache.syncope.core.spring.security.SecureRandomUtils;
 
 @Entity
 @Table(name = JPAUser.TABLE)
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/openjpa/BooleanValueHandler.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/openjpa/BooleanValueHandler.java
index 68d498e..93ce1b1 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/openjpa/BooleanValueHandler.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/openjpa/BooleanValueHandler.java
@@ -18,6 +18,7 @@
  */
 package org.apache.syncope.core.persistence.jpa.openjpa;
 
+import java.util.Optional;
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.openjpa.jdbc.identifier.DBIdentifier;
 import org.apache.openjpa.jdbc.kernel.JDBCStore;
@@ -28,8 +29,6 @@
 import org.apache.openjpa.jdbc.sql.DBDictionary;
 import org.apache.openjpa.meta.JavaTypes;
 
-import java.util.Optional;
-
 public class BooleanValueHandler extends AbstractValueHandler {
 
     private static final long serialVersionUID = -6742506201236646294L;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/openjpa/LocaleValueHandler.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/openjpa/LocaleValueHandler.java
index eb25d35..b39646c 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/openjpa/LocaleValueHandler.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/openjpa/LocaleValueHandler.java
@@ -20,7 +20,6 @@
 
 import java.util.Locale;
 import java.util.Optional;
-
 import org.apache.commons.lang3.LocaleUtils;
 import org.apache.openjpa.jdbc.identifier.DBIdentifier;
 import org.apache.openjpa.jdbc.kernel.JDBCStore;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/spring/CommonEntityManagerFactoryConf.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/spring/CommonEntityManagerFactoryConf.java
index 35a014c..b7750f9 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/spring/CommonEntityManagerFactoryConf.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/spring/CommonEntityManagerFactoryConf.java
@@ -23,8 +23,8 @@
 import java.util.concurrent.ConcurrentHashMap;
 import javax.persistence.ValidationMode;
 import javax.sql.DataSource;
-import org.springframework.orm.jpa.persistenceunit.PersistenceUnitPostProcessor;
 import org.apache.syncope.core.persistence.api.DomainHolder;
+import org.springframework.orm.jpa.persistenceunit.PersistenceUnitPostProcessor;
 
 /**
  * Container for common configuration options among all EntityManagerFactory entities (one for each domain).
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/spring/MultiJarAwarePersistenceUnitPostProcessor.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/spring/MultiJarAwarePersistenceUnitPostProcessor.java
index c3e1d67..a442fd9 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/spring/MultiJarAwarePersistenceUnitPostProcessor.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/spring/MultiJarAwarePersistenceUnitPostProcessor.java
@@ -18,6 +18,7 @@
  */
 package org.apache.syncope.core.persistence.jpa.spring;
 
+import java.util.Objects;
 import javax.persistence.Entity;
 import org.apache.syncope.core.persistence.jpa.entity.AbstractEntity;
 import org.slf4j.Logger;
@@ -27,8 +28,6 @@
 import org.springframework.orm.jpa.persistenceunit.MutablePersistenceUnitInfo;
 import org.springframework.orm.jpa.persistenceunit.PersistenceUnitPostProcessor;
 
-import java.util.Objects;
-
 /**
  * Allows having JPA entities spread in several JAR files; this is needed in order to support the Syncope extensions.
  */
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/AnyCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/AnyCheck.java
index 57a84e7..b6ec4d1 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/AnyCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/AnyCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/AnyObjectCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/AnyObjectCheck.java
index 3962e42..55c623f 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/AnyObjectCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/AnyObjectCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/AnyTypeCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/AnyTypeCheck.java
index 957fd71..416b703 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/AnyTypeCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/AnyTypeCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/AnyTypeClassCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/AnyTypeClassCheck.java
index 01572b3..a4f1b11 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/AnyTypeClassCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/AnyTypeClassCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ApplicationCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ApplicationCheck.java
index 674a5b1..5bb52e5 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ApplicationCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ApplicationCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ConnInstanceCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ConnInstanceCheck.java
index b80ee19..58558b6 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ConnInstanceCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ConnInstanceCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ConnInstanceValidator.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ConnInstanceValidator.java
index decda4c..fea16f1 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ConnInstanceValidator.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ConnInstanceValidator.java
@@ -21,8 +21,8 @@
 import javax.validation.ConstraintValidatorContext;
 import org.apache.syncope.common.lib.types.EntityViolationType;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
-import org.apache.syncope.core.provisioning.api.utils.URIUtils;
 import org.apache.syncope.core.provisioning.api.utils.ConnPoolConfUtils;
+import org.apache.syncope.core.provisioning.api.utils.URIUtils;
 
 public class ConnInstanceValidator extends AbstractValidator<ConnInstanceCheck, ConnInstance> {
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/DelegationCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/DelegationCheck.java
index ffb8207..0b68967 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/DelegationCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/DelegationCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/DynRealmCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/DynRealmCheck.java
index 567dc74..3710130 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/DynRealmCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/DynRealmCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/EntityValidationListener.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/EntityValidationListener.java
index acde817..1fe52f2 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/EntityValidationListener.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/EntityValidationListener.java
@@ -25,7 +25,6 @@
 import javax.validation.Validator;
 import org.apache.commons.lang3.ClassUtils;
 import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.DynMembership;
 import org.apache.syncope.core.persistence.api.entity.Entity;
@@ -34,6 +33,7 @@
 import org.apache.syncope.core.persistence.api.entity.Schema;
 import org.apache.syncope.core.persistence.api.entity.policy.Policy;
 import org.apache.syncope.core.persistence.api.entity.task.Task;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceCheck.java
index 0ffec4a..76c33d9 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ExternalResourceCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/GroupCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/GroupCheck.java
index b7bd229..6db6eeb 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/GroupCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/GroupCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ImplementationCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ImplementationCheck.java
index a613f87..e230a27 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ImplementationCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ImplementationCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainAttrCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainAttrCheck.java
index 2613a22..4ae6eb5 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainAttrCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainAttrCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainAttrValueCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainAttrValueCheck.java
index a8488e0..ed37d61 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainAttrValueCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainAttrValueCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaCheck.java
index d06cb63..ec3325f 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PlainSchemaCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PolicyCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PolicyCheck.java
index 45873be..0132323 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PolicyCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PolicyCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PrivilegeCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PrivilegeCheck.java
index aabc552..de35f83 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PrivilegeCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PrivilegeCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PropagationTaskCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PropagationTaskCheck.java
index 8a0e08b..723ef1c 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PropagationTaskCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PropagationTaskCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PropagationTaskValidator.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PropagationTaskValidator.java
index 2abc2e9..007b8e4 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PropagationTaskValidator.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/PropagationTaskValidator.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.core.persistence.jpa.validation.entity;
 
 import java.util.List;
-
 import javax.validation.ConstraintValidatorContext;
 import org.apache.syncope.common.lib.types.EntityViolationType;
 import org.apache.syncope.common.lib.types.ExecStatus;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ProvisioningTaskCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ProvisioningTaskCheck.java
index e5c053c..2e1da06 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ProvisioningTaskCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ProvisioningTaskCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RealmCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RealmCheck.java
index a71417e..a284f5d 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RealmCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RealmCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeCheck.java
index 9574e53..d0a0610 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RelationshipTypeCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RemediationCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RemediationCheck.java
index 7a0a9c2..52635fb 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RemediationCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RemediationCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ReportCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ReportCheck.java
index d480262..5214df3 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ReportCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/ReportCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleCheck.java
index fbb5f0a..17676c3 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/RoleCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SRARouteCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SRARouteCheck.java
index d9a3214..72fe558 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SRARouteCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SRARouteCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchedTaskCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchedTaskCheck.java
index 5e1c535..d316afe 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchedTaskCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchedTaskCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchedTaskValidator.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchedTaskValidator.java
index 8699dd5..fd5cf78 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchedTaskValidator.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchedTaskValidator.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.core.persistence.jpa.validation.entity;
 
 import java.text.ParseException;
-
 import javax.validation.ConstraintValidatorContext;
 import org.apache.syncope.common.lib.types.EntityViolationType;
 import org.apache.syncope.core.persistence.api.entity.task.SchedTask;
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyCheck.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyCheck.java
index 1629114..af5b76e 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyCheck.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SchemaKeyCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/core/persistence-jpa/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaDialect.java b/core/persistence-jpa/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaDialect.java
index efeae69..a1d6da6 100644
--- a/core/persistence-jpa/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaDialect.java
+++ b/core/persistence-jpa/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaDialect.java
@@ -19,14 +19,12 @@
 import java.sql.SQLException;
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceException;
-
 import org.apache.commons.logging.LogFactory;
 import org.apache.openjpa.persistence.FetchPlan;
 import org.apache.openjpa.persistence.OpenJPAEntityManager;
 import org.apache.openjpa.persistence.OpenJPAPersistence;
 import org.apache.openjpa.persistence.jdbc.IsolationLevel;
 import org.apache.openjpa.persistence.jdbc.JDBCFetchPlan;
-
 import org.springframework.jdbc.datasource.ConnectionHandle;
 import org.springframework.jdbc.datasource.ConnectionHolder;
 import org.springframework.jdbc.support.JdbcUtils;
diff --git a/core/persistence-jpa/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaVendorAdapter.java b/core/persistence-jpa/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaVendorAdapter.java
index 2a2fb96..acb9da1 100644
--- a/core/persistence-jpa/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaVendorAdapter.java
+++ b/core/persistence-jpa/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaVendorAdapter.java
@@ -20,7 +20,6 @@
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.spi.PersistenceProvider;
-
 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
 import org.apache.openjpa.persistence.OpenJPAEntityManagerSPI;
 import org.apache.openjpa.persistence.PersistenceProviderImpl;
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/AbstractTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/AbstractTest.java
index a112e7f..e14d556 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/AbstractTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/AbstractTest.java
@@ -19,14 +19,14 @@
 package org.apache.syncope.core.persistence.jpa;
 
 import javax.persistence.EntityManager;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.jpa.dao.JPAPlainAttrDAO;
 import org.apache.syncope.core.persistence.jpa.dao.JPAPlainAttrValueDAO;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.orm.jpa.EntityManagerFactoryUtils;
 import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AbstractClientAppTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AbstractClientAppTest.java
index 7c30c79..fc98da5 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AbstractClientAppTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AbstractClientAppTest.java
@@ -23,10 +23,10 @@
 import org.apache.syncope.common.lib.policy.DefaultAccessPolicyConf;
 import org.apache.syncope.common.lib.policy.DefaultAttrReleasePolicyConf;
 import org.apache.syncope.common.lib.policy.DefaultAuthPolicyConf;
+import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
 import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.AttrReleasePolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
-import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.springframework.beans.factory.annotation.Autowired;
 
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnyMatchTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnyMatchTest.java
index dcdadf2..6b86355 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnyMatchTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnyMatchTest.java
@@ -22,9 +22,11 @@
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
+import org.apache.syncope.core.persistence.api.dao.AnyMatchDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.dao.search.AnyCond;
 import org.apache.syncope.core.persistence.api.dao.search.AttrCond;
 import org.apache.syncope.core.persistence.api.dao.search.MembershipCond;
 import org.apache.syncope.core.persistence.api.dao.search.RelationshipCond;
@@ -36,11 +38,9 @@
 import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
+import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.dao.AnyMatchDAO;
-import org.apache.syncope.core.persistence.api.dao.search.AnyCond;
-import org.junit.jupiter.api.Test;
 
 @Transactional("Master")
 public class AnyMatchTest extends AbstractTest {
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnySearchTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnySearchTest.java
index d29d8ed..935a898 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnySearchTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AnySearchTest.java
@@ -37,25 +37,25 @@
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
-import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.dao.RoleDAO;
-import org.apache.syncope.core.persistence.api.dao.search.AttrCond;
-import org.apache.syncope.core.persistence.api.dao.search.MembershipCond;
-import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
-import org.apache.syncope.core.persistence.api.dao.search.ResourceCond;
-import org.apache.syncope.core.persistence.api.dao.search.RoleCond;
-import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
+import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.dao.search.AnyCond;
 import org.apache.syncope.core.persistence.api.dao.search.AnyTypeCond;
 import org.apache.syncope.core.persistence.api.dao.search.AssignableCond;
+import org.apache.syncope.core.persistence.api.dao.search.AttrCond;
 import org.apache.syncope.core.persistence.api.dao.search.AuxClassCond;
 import org.apache.syncope.core.persistence.api.dao.search.MemberCond;
+import org.apache.syncope.core.persistence.api.dao.search.MembershipCond;
+import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.api.dao.search.PrivilegeCond;
 import org.apache.syncope.core.persistence.api.dao.search.RelationshipTypeCond;
+import org.apache.syncope.core.persistence.api.dao.search.ResourceCond;
+import org.apache.syncope.core.persistence.api.dao.search.RoleCond;
+import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.Entity;
 import org.apache.syncope.core.persistence.api.entity.anyobject.AMembership;
@@ -65,12 +65,12 @@
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.apache.syncope.core.provisioning.api.utils.FormatUtils;
-import org.junit.jupiter.api.BeforeEach;
 import org.apache.syncope.core.provisioning.api.utils.RealmUtils;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.spring.security.AuthDataAccessor;
 import org.apache.syncope.core.spring.security.SyncopeAuthenticationDetails;
 import org.apache.syncope.core.spring.security.SyncopeGrantedAuthority;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -168,7 +168,7 @@
     }
 
     @Test
-    public void searchWithNotCondition_AttrCond() {
+    public void searchWithNotAttrCond() {
         AttrCond fullnameLeafCond = new AttrCond(AttrCond.Type.EQ);
         fullnameLeafCond.setSchema("fullname");
         fullnameLeafCond.setExpression("Giuseppe Verdi");
@@ -186,7 +186,7 @@
     }
 
     @Test
-    public void searchWithNotCondition_AnyCond() {
+    public void searchWithNotAnyCond() {
         AnyCond usernameLeafCond = new AnyCond(AttrCond.Type.EQ);
         usernameLeafCond.setSchema("username");
         usernameLeafCond.setExpression("verdi");
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AuthModuleTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AuthModuleTest.java
index ca05bde..069028a 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AuthModuleTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/AuthModuleTest.java
@@ -40,12 +40,12 @@
 import org.apache.syncope.common.lib.auth.SyncopeAuthModuleConf;
 import org.apache.syncope.common.lib.auth.U2FAuthModuleConf;
 import org.apache.syncope.core.persistence.api.dao.auth.AuthModuleDAO;
+import org.apache.syncope.core.persistence.api.entity.auth.AuthModule;
+import org.apache.syncope.core.persistence.api.entity.auth.AuthModuleItem;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.auth.AuthModule;
-import org.apache.syncope.core.persistence.api.entity.auth.AuthModuleItem;
 
 @Transactional("Master")
 public class AuthModuleTest extends AbstractTest {
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/CASSPTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/CASSPTest.java
index 1dbf14f..80d527d 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/CASSPTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/CASSPTest.java
@@ -18,21 +18,19 @@
  */
 package org.apache.syncope.core.persistence.jpa.inner;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
+import java.util.UUID;
 import org.apache.syncope.core.persistence.api.dao.auth.CASSPDAO;
+import org.apache.syncope.core.persistence.api.entity.auth.CASSPClientApp;
 import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.UUID;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-import org.apache.syncope.core.persistence.api.entity.auth.CASSPClientApp;
-
 @Transactional("Master")
 public class CASSPTest extends AbstractClientAppTest {
 
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ConnInstanceTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ConnInstanceTest.java
index 4d1b103..d3f7d31 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ConnInstanceTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ConnInstanceTest.java
@@ -20,8 +20,8 @@
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/MultitenancyTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/MultitenancyTest.java
index d214f6a..02138dd 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/MultitenancyTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/MultitenancyTest.java
@@ -28,13 +28,13 @@
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.types.CipherAlgorithm;
 import org.apache.syncope.common.lib.types.IdMEntitlement;
-import org.apache.syncope.core.spring.security.SyncopeAuthenticationDetails;
-import org.apache.syncope.core.spring.security.SyncopeGrantedAuthority;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
+import org.apache.syncope.core.spring.security.SyncopeAuthenticationDetails;
+import org.apache.syncope.core.spring.security.SyncopeGrantedAuthority;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Tag;
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/OIDCJWKSTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/OIDCJWKSTest.java
index bd23665..9fdf77a 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/OIDCJWKSTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/OIDCJWKSTest.java
@@ -18,10 +18,13 @@
  */
 package org.apache.syncope.core.persistence.jpa.inner;
 
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
 import com.nimbusds.jose.jwk.JWKSet;
 import com.nimbusds.jose.jwk.KeyUse;
 import com.nimbusds.jose.jwk.RSAKey;
 import com.nimbusds.jose.jwk.gen.RSAKeyGenerator;
+import java.util.UUID;
 import org.apache.syncope.core.persistence.api.dao.auth.OIDCJWKSDAO;
 import org.apache.syncope.core.persistence.api.entity.auth.OIDCJWKS;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
@@ -29,10 +32,6 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.UUID;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
 @Transactional("Master")
 public class OIDCJWKSTest extends AbstractTest {
 
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/OIDCRPTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/OIDCRPTest.java
index 6207ae3..8b0f3fa 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/OIDCRPTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/OIDCRPTest.java
@@ -27,12 +27,12 @@
 import org.apache.syncope.common.lib.types.OIDCResponseType;
 import org.apache.syncope.common.lib.types.OIDCSubjectType;
 import org.apache.syncope.core.persistence.api.dao.auth.OIDCRPDAO;
+import org.apache.syncope.core.persistence.api.entity.auth.OIDCRPClientApp;
 import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.auth.OIDCRPClientApp;
 
 @Transactional("Master")
 public class OIDCRPTest extends AbstractClientAppTest {
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainAttrTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainAttrTest.java
index 6059bd0..b2c4cef 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainAttrTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainAttrTest.java
@@ -30,7 +30,6 @@
 import java.util.Base64;
 import java.util.Random;
 import javax.validation.ValidationException;
-
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
@@ -41,12 +40,12 @@
 import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.user.UPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.user.UPlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.apache.syncope.core.spring.security.Encryptor;
-import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.spring.security.SecureRandomUtils;
 import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.Test;
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/RealmTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/RealmTest.java
index b08fd37..1ae0764 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/RealmTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/RealmTest.java
@@ -33,9 +33,9 @@
 import org.apache.syncope.core.persistence.api.dao.MalformedPathException;
 import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
+import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
-import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ReportTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ReportTest.java
index 204e6bf..64364f7 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ReportTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ReportTest.java
@@ -33,8 +33,8 @@
 import org.apache.syncope.core.persistence.api.entity.Implementation;
 import org.apache.syncope.core.persistence.api.entity.Report;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
-import org.junit.jupiter.api.Test;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
+import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ResourceTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ResourceTest.java
index 9d213b7..297d2e9 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ResourceTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/ResourceTest.java
@@ -30,8 +30,8 @@
 import java.util.stream.Collectors;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.types.EntityViolationType;
-import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.common.lib.types.IdMEntitlement;
+import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SAML2IdPEntityTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SAML2IdPEntityTest.java
index 48bdeab..6c96001 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SAML2IdPEntityTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SAML2IdPEntityTest.java
@@ -24,12 +24,12 @@
 
 import java.nio.charset.StandardCharsets;
 import java.util.UUID;
+import org.apache.syncope.core.persistence.api.dao.auth.SAML2IdPEntityDAO;
+import org.apache.syncope.core.persistence.api.entity.auth.SAML2IdPEntity;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.auth.SAML2IdPEntity;
-import org.apache.syncope.core.persistence.api.dao.auth.SAML2IdPEntityDAO;
 
 @Transactional("Master")
 public class SAML2IdPEntityTest extends AbstractTest {
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SAML2SPEntityTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SAML2SPEntityTest.java
index d1da5f7..ba5978c 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SAML2SPEntityTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SAML2SPEntityTest.java
@@ -35,13 +35,9 @@
 import java.util.Date;
 import java.util.UUID;
 import org.apache.commons.io.IOUtils;
-import org.apache.syncope.core.persistence.jpa.AbstractTest;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPEntity;
 import org.apache.syncope.core.persistence.api.dao.auth.SAML2SPEntityDAO;
+import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPEntity;
+import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.bouncycastle.asn1.ASN1EncodableVector;
 import org.bouncycastle.asn1.ASN1Encoding;
 import org.bouncycastle.asn1.ASN1Integer;
@@ -55,6 +51,10 @@
 import org.bouncycastle.asn1.x509.TBSCertificate;
 import org.bouncycastle.asn1.x509.Time;
 import org.bouncycastle.asn1.x509.V3TBSCertificateGenerator;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.transaction.annotation.Transactional;
 
 @Transactional("Master")
 public class SAML2SPEntityTest extends AbstractTest {
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SAML2SPTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SAML2SPTest.java
index 7f77bcb..5978521 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SAML2SPTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SAML2SPTest.java
@@ -24,15 +24,15 @@
 import static org.junit.jupiter.api.Assertions.assertNull;
 
 import java.util.UUID;
-import org.apache.syncope.common.lib.types.XmlSecAlgorithm;
 import org.apache.syncope.common.lib.types.SAML2SPNameId;
+import org.apache.syncope.common.lib.types.XmlSecAlgorithm;
 import org.apache.syncope.core.persistence.api.dao.auth.SAML2SPDAO;
+import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPClientApp;
 import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPClientApp;
 
 @Transactional("Master")
 public class SAML2SPTest extends AbstractClientAppTest {
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SRARouteTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SRARouteTest.java
index f8c0ce4..e3505e1 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SRARouteTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SRARouteTest.java
@@ -26,17 +26,17 @@
 import java.util.List;
 import java.util.UUID;
 import javax.ws.rs.HttpMethod;
-import org.apache.syncope.common.lib.types.SRARouteFilterFactory;
 import org.apache.syncope.common.lib.types.SRARouteFilter;
+import org.apache.syncope.common.lib.types.SRARouteFilterFactory;
 import org.apache.syncope.common.lib.types.SRARoutePredicate;
-import org.apache.syncope.common.lib.types.SRARouteType;
 import org.apache.syncope.common.lib.types.SRARoutePredicateFactory;
+import org.apache.syncope.common.lib.types.SRARouteType;
+import org.apache.syncope.core.persistence.api.dao.SRARouteDAO;
+import org.apache.syncope.core.persistence.api.entity.SRARoute;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.SRARoute;
-import org.apache.syncope.core.persistence.api.dao.SRARouteDAO;
 
 @Transactional("Master")
 public class SRARouteTest extends AbstractTest {
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SecurityQuestionTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SecurityQuestionTest.java
index a93d6a8..005482d 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SecurityQuestionTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/SecurityQuestionTest.java
@@ -23,7 +23,6 @@
 import static org.junit.jupiter.api.Assertions.assertNull;
 
 import java.util.List;
-
 import org.apache.syncope.core.persistence.api.dao.SecurityQuestionDAO;
 import org.apache.syncope.core.persistence.api.entity.user.SecurityQuestion;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/UserTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/UserTest.java
index b69f426..f0463a8 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/UserTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/UserTest.java
@@ -35,17 +35,17 @@
 import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
+import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.dao.SecurityQuestionDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.entity.PlainSchema;
+import org.apache.syncope.core.persistence.api.entity.user.UMembership;
+import org.apache.syncope.core.persistence.api.entity.user.UPlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.api.entity.user.UPlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
 import org.apache.syncope.core.spring.security.Encryptor;
 import org.apache.syncope.core.spring.security.PasswordGenerator;
-import org.apache.syncope.core.persistence.api.dao.RealmDAO;
-import org.apache.syncope.core.persistence.api.entity.PlainSchema;
-import org.apache.syncope.core.persistence.api.entity.user.UMembership;
-import org.apache.syncope.core.persistence.api.entity.user.UPlainAttrUniqueValue;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnySearchTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnySearchTest.java
index 051ba55..04d963e 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnySearchTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/AnySearchTest.java
@@ -32,21 +32,21 @@
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.dao.RoleDAO;
-import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.dao.search.AnyCond;
 import org.apache.syncope.core.persistence.api.dao.search.AttrCond;
 import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.api.dao.search.RoleCond;
 import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
-import org.apache.syncope.core.persistence.api.entity.user.DynRoleMembership;
 import org.apache.syncope.core.persistence.api.entity.Role;
 import org.apache.syncope.core.persistence.api.entity.group.GPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.group.Group;
+import org.apache.syncope.core.persistence.api.entity.user.DynRoleMembership;
 import org.apache.syncope.core.persistence.api.entity.user.UMembership;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/DynRealmTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/DynRealmTest.java
index 912aea2..63e7b17 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/DynRealmTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/DynRealmTest.java
@@ -25,6 +25,7 @@
 
 import java.util.List;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.core.persistence.api.dao.AnyMatchDAO;
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.DynRealmDAO;
@@ -38,7 +39,6 @@
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.dao.AnyMatchDAO;
 
 @Transactional("Master")
 public class DynRealmTest extends AbstractTest {
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java
index 05ab3f0..807b6cb 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/GroupTest.java
@@ -38,8 +38,8 @@
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.anyobject.ADynGroupMembership;
@@ -183,8 +183,7 @@
                 : ((String) resultKey)).
                 forEach(actualKey -> {
                     Group group = groupDAO.find(actualKey.toString());
-                    if (group == null) {
-                    } else if (!result.contains(group)) {
+                    if (group != null && !result.contains(group)) {
                         result.add(group);
                     }
                 });
@@ -284,8 +283,7 @@
                 : ((String) resultKey)).
                 forEach(actualKey -> {
                     Group group = groupDAO.find(actualKey.toString());
-                    if (group == null) {
-                    } else if (!result.contains(group)) {
+                    if (group != null && !result.contains(group)) {
                         result.add(group);
                     }
                 });
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PolicyTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PolicyTest.java
index 98473d6..ddcd0f9 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PolicyTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/PolicyTest.java
@@ -18,9 +18,18 @@
  */
 package org.apache.syncope.core.persistence.jpa.outer;
 
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import java.util.UUID;
+import javax.persistence.PersistenceException;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
+import org.apache.syncope.core.persistence.api.dao.auth.OIDCRPDAO;
 import org.apache.syncope.core.persistence.api.entity.Realm;
+import org.apache.syncope.core.persistence.api.entity.auth.OIDCRPClientApp;
 import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.AttrReleasePolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
@@ -28,16 +37,6 @@
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import javax.persistence.PersistenceException;
-import java.util.UUID;
-import org.apache.syncope.core.persistence.api.dao.auth.OIDCRPDAO;
-
-import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-
-import org.apache.syncope.core.persistence.api.entity.auth.OIDCRPClientApp;
 
 @Transactional("Master")
 public class PolicyTest extends AbstractClientAppTest {
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
index cde0f36..6dbd8d2a 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/ResourceTest.java
@@ -37,8 +37,8 @@
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
+import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.resource.Mapping;
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RoleTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RoleTest.java
index 7825c19..a2a1c0c 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RoleTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/RoleTest.java
@@ -30,7 +30,6 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-
 import javax.persistence.Query;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
@@ -41,8 +40,8 @@
 import org.apache.syncope.core.persistence.api.dao.RoleDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.Delegation;
-import org.apache.syncope.core.persistence.api.entity.user.DynRoleMembership;
 import org.apache.syncope.core.persistence.api.entity.Role;
+import org.apache.syncope.core.persistence.api.entity.user.DynRoleMembership;
 import org.apache.syncope.core.persistence.api.entity.user.UPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
index b908a83..c60e245 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/TaskTest.java
@@ -32,12 +32,12 @@
 import java.util.UUID;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.common.lib.types.ImplementationEngine;
-import org.apache.syncope.common.lib.types.MatchingRule;
 import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.syncope.common.lib.types.IdMImplementationType;
-import org.apache.syncope.common.lib.types.ResourceOperation;
+import org.apache.syncope.common.lib.types.ImplementationEngine;
+import org.apache.syncope.common.lib.types.MatchingRule;
 import org.apache.syncope.common.lib.types.PullMode;
+import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.lib.types.UnmatchingRule;
 import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
@@ -49,19 +49,19 @@
 import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
+import org.apache.syncope.core.persistence.api.entity.task.AnyTemplatePullTask;
 import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
+import org.apache.syncope.core.persistence.api.entity.task.PullTask;
 import org.apache.syncope.core.persistence.api.entity.task.PushTask;
 import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.AbstractTest;
+import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
 import org.identityconnectors.framework.common.objects.Attribute;
 import org.identityconnectors.framework.common.objects.AttributeBuilder;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.task.PullTask;
-import org.apache.syncope.core.persistence.api.entity.task.AnyTemplatePullTask;
-import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
 
 @Transactional("Master")
 public class TaskTest extends AbstractTest {
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/UserTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/UserTest.java
index b3981d7..353e4d5 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/UserTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/outer/UserTest.java
@@ -37,8 +37,8 @@
 import org.apache.syncope.core.persistence.api.dao.DelegationDAO;
 import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.RelationshipTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.RoleDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
@@ -236,8 +236,8 @@
         assertNull(user.getPlainAttr("obscure").get().getMembership());
         assertEquals(2, user.getPlainAttrs("obscure").size());
         assertTrue(user.getPlainAttrs("obscure").contains(user.getPlainAttr("obscure").get()));
-        assertTrue(user.getPlainAttrs("obscure").stream().anyMatch(plainAttr -> plainAttr.getMembership() == null));
-        assertTrue(user.getPlainAttrs("obscure").stream().anyMatch(plainAttr -> newM.equals(plainAttr.getMembership())));
+        assertTrue(user.getPlainAttrs("obscure").stream().anyMatch(a -> a.getMembership() == null));
+        assertTrue(user.getPlainAttrs("obscure").stream().anyMatch(a -> newM.equals(a.getMembership())));
     }
 
     private LinkedAccount newLinkedAccount(final String connObjectKeyValue) {
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AuditManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AuditManager.java
index 70835c2..2fc5b5f 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AuditManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AuditManager.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.core.provisioning.api;
 
-import org.apache.syncope.core.provisioning.api.event.AfterHandlingEvent;
 import org.apache.syncope.common.lib.types.AuditElements;
+import org.apache.syncope.core.provisioning.api.event.AfterHandlingEvent;
 
 public interface AuditManager {
 
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java
index 8230397..dd2c702 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/Connector.java
@@ -31,14 +31,14 @@
 import org.identityconnectors.framework.common.objects.ObjectClassInfo;
 import org.identityconnectors.framework.common.objects.OperationOptions;
 import org.identityconnectors.framework.common.objects.OperationOptionsBuilder;
-import org.identityconnectors.framework.common.objects.SyncResultsHandler;
-import org.identityconnectors.framework.common.objects.SyncToken;
-import org.identityconnectors.framework.common.objects.Uid;
-import org.identityconnectors.framework.common.objects.filter.Filter;
 import org.identityconnectors.framework.common.objects.SearchResult;
 import org.identityconnectors.framework.common.objects.SortKey;
 import org.identityconnectors.framework.common.objects.SyncDeltaBuilder;
 import org.identityconnectors.framework.common.objects.SyncDeltaType;
+import org.identityconnectors.framework.common.objects.SyncResultsHandler;
+import org.identityconnectors.framework.common.objects.SyncToken;
+import org.identityconnectors.framework.common.objects.Uid;
+import org.identityconnectors.framework.common.objects.filter.Filter;
 import org.identityconnectors.framework.spi.SearchResultsHandler;
 
 /**
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/AnyObjectDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/AnyObjectDataBinder.java
index 2238a6e..6f29815 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/AnyObjectDataBinder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/AnyObjectDataBinder.java
@@ -21,8 +21,8 @@
 import org.apache.syncope.common.lib.request.AnyObjectCR;
 import org.apache.syncope.common.lib.request.AnyObjectUR;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 
 public interface AnyObjectDataBinder {
 
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/GroupDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/GroupDataBinder.java
index 1dea26b..6f0e7b6 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/GroupDataBinder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/GroupDataBinder.java
@@ -23,9 +23,9 @@
 import org.apache.syncope.common.lib.request.GroupUR;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.TypeExtensionTO;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.group.TypeExtension;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 
 public interface GroupDataBinder {
 
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/RealmDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/RealmDataBinder.java
index 59d2b2a..512876d 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/RealmDataBinder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/RealmDataBinder.java
@@ -19,8 +19,8 @@
 package org.apache.syncope.core.provisioning.api.data;
 
 import org.apache.syncope.common.lib.to.RealmTO;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.persistence.api.entity.Realm;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 
 public interface RealmDataBinder {
 
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/TaskDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/TaskDataBinder.java
index 9746031..383d09f 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/TaskDataBinder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/TaskDataBinder.java
@@ -18,9 +18,9 @@
  */
 package org.apache.syncope.core.provisioning.api.data;
 
-import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.SchedTaskTO;
+import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.core.persistence.api.entity.task.SchedTask;
 import org.apache.syncope.core.persistence.api.entity.task.Task;
 import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/UserDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/UserDataBinder.java
index b364f74..05987f4 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/UserDataBinder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/UserDataBinder.java
@@ -18,14 +18,14 @@
  */
 package org.apache.syncope.core.provisioning.api.data;
 
+import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.request.UserUR;
-import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.to.LinkedAccountTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.core.persistence.api.entity.user.LinkedAccount;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 
 public interface UserDataBinder {
 
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/jexl/JexlUtils.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/jexl/JexlUtils.java
index 1945dd8..ed8a5e5 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/jexl/JexlUtils.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/jexl/JexlUtils.java
@@ -41,15 +41,15 @@
 import org.apache.commons.lang3.ClassUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Pair;
-import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.Attr;
+import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.RealmTO;
-import org.apache.syncope.core.provisioning.api.utils.FormatUtils;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.DerSchema;
 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
 import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.provisioning.api.DerAttrHandler;
+import org.apache.syncope.core.provisioning.api.utils.FormatUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.util.ReflectionUtils;
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java
index 7cb3979..367b221 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java
@@ -23,17 +23,17 @@
 import java.util.Set;
 import java.util.stream.Stream;
 import org.apache.commons.lang3.tuple.Pair;
-import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.Attr;
+import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.core.persistence.api.entity.Any;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 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.api.entity.resource.Item;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.provisioning.api.DerAttrHandler;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.provisioning.api.UserWorkflowResult;
 import org.identityconnectors.framework.common.objects.Attribute;
 
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningProfile.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningProfile.java
index d03b45e..a4c319f 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningProfile.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningProfile.java
@@ -18,9 +18,9 @@
  */
 package org.apache.syncope.core.provisioning.api.pushpull;
 
-import org.apache.syncope.common.lib.to.ProvisioningReport;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.types.ConflictResolutionAction;
 import org.apache.syncope.core.persistence.api.entity.task.ProvisioningTask;
 import org.apache.syncope.core.provisioning.api.Connector;
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullActions.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullActions.java
index 0070836..3281f59 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullActions.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/PullActions.java
@@ -21,10 +21,10 @@
 import java.util.Set;
 import org.apache.syncope.common.lib.request.AnyCR;
 import org.apache.syncope.common.lib.request.AnyUR;
-import org.apache.syncope.common.lib.to.LinkedAccountTO;
-import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.to.EntityTO;
+import org.apache.syncope.common.lib.to.LinkedAccountTO;
 import org.apache.syncope.common.lib.to.ProvisioningReport;
+import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.core.persistence.api.entity.resource.OrgUnit;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.identityconnectors.framework.common.objects.SyncDelta;
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopePullResultHandler.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopePullResultHandler.java
index 8d8efc4..9b66ebc 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopePullResultHandler.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopePullResultHandler.java
@@ -18,9 +18,9 @@
  */
 package org.apache.syncope.core.provisioning.api.pushpull;
 
+import org.apache.syncope.core.persistence.api.entity.task.PullTask;
 import org.identityconnectors.framework.common.objects.SyncDelta;
 import org.identityconnectors.framework.common.objects.SyncResultsHandler;
-import org.apache.syncope.core.persistence.api.entity.task.PullTask;
 
 public interface SyncopePullResultHandler extends SyncopeResultHandler<PullTask, PullActions>, SyncResultsHandler {
 
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopeSinglePullExecutor.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopeSinglePullExecutor.java
index 4de8e3b..b396d99 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopeSinglePullExecutor.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopeSinglePullExecutor.java
@@ -18,9 +18,9 @@
  */
 package org.apache.syncope.core.provisioning.api.pushpull;
 
-import org.apache.syncope.common.lib.to.ProvisioningReport;
 import java.util.List;
 import java.util.Set;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.to.PullTaskTO;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.provisioning.api.Connector;
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopeSinglePushExecutor.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopeSinglePushExecutor.java
index 5e77dd1..3b2dccd 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopeSinglePushExecutor.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopeSinglePushExecutor.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.core.provisioning.api.pushpull;
 
-import org.apache.syncope.common.lib.to.ProvisioningReport;
 import java.util.List;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/stream/SyncopeStreamPullExecutor.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/stream/SyncopeStreamPullExecutor.java
index 831dd1f..cbcb78f 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/stream/SyncopeStreamPullExecutor.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/stream/SyncopeStreamPullExecutor.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.core.provisioning.api.pushpull.stream;
 
-import org.apache.syncope.common.lib.to.ProvisioningReport;
 import java.util.List;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.to.PullTaskTO;
 import org.apache.syncope.common.lib.types.ConflictResolutionAction;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenDeserializer.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenDeserializer.java
index fdf7fb0..413bbb6 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenDeserializer.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenDeserializer.java
@@ -26,7 +26,6 @@
 import java.io.IOException;
 import java.util.Base64;
 import java.util.Objects;
-
 import org.identityconnectors.framework.common.objects.SyncToken;
 
 class SyncTokenDeserializer extends JsonDeserializer<SyncToken> {
@@ -64,5 +63,4 @@
 
         return new SyncToken(Objects.requireNonNull(value));
     }
-
 }
diff --git a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/PropagationByResourceTest.java b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/PropagationByResourceTest.java
index 47aeb21..4723ab9 100644
--- a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/PropagationByResourceTest.java
+++ b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/PropagationByResourceTest.java
@@ -44,11 +44,11 @@
 
     @Test
     public void voidMethods(
-            @Mock Set<String> toBeCreated,
-            @Mock Set<String> toBeUpdated,
-            @Mock Set<String> toBeDeleted,
-            @Mock Map<String, String> oldConnObjectKeys,
-            @Mock PropagationByResource<String> propByRes) {
+            final @Mock Set<String> toBeCreated,
+            final @Mock Set<String> toBeUpdated,
+            final @Mock Set<String> toBeDeleted,
+            final @Mock Map<String, String> oldConnObjectKeys,
+            final @Mock PropagationByResource<String> propByRes) {
 
         ReflectionTestUtils.setField(propagationByResource, "toBeCreated", toBeCreated);
         ReflectionTestUtils.setField(propagationByResource, "toBeUpdated", toBeUpdated);
diff --git a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/WorkflowResultTest.java b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/WorkflowResultTest.java
index 7a4663a..429a554 100644
--- a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/WorkflowResultTest.java
+++ b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/WorkflowResultTest.java
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
 package org.apache.syncope.core.provisioning.api;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -29,24 +28,24 @@
 import org.mockito.Mock;
 
 public class WorkflowResultTest extends AbstractTest {
-    
+
     @Test
-    public void test(@Mock PropagationByResource<String> propByRes) {
+    public void test(final @Mock PropagationByResource<String> propByRes) {
         String result = "result";
         Set<String> performedTasks = new HashSet<>();
         performedTasks.add("TEST");
         WorkflowResult<String> workflowResult = new WorkflowResult<>(result, propByRes, performedTasks);
         WorkflowResult<String> workflowResult2 = new WorkflowResult<>(result, propByRes, performedTasks);
-        
+
         assertTrue(workflowResult.equals(workflowResult));
         assertTrue(workflowResult.equals(workflowResult2));
         assertFalse(workflowResult.equals(null));
         assertFalse(workflowResult.equals(String.class));
-        
+
         result = "newResult";
         workflowResult.setResult(result);
         assertEquals(result, workflowResult.getResult());
-        
+
         assertEquals(propByRes, workflowResult2.getPropByRes());
     }
 }
diff --git a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/event/AfterHandlingEventTest.java b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/event/AfterHandlingEventTest.java
index 547ac7a..be8c1e7 100644
--- a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/event/AfterHandlingEventTest.java
+++ b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/event/AfterHandlingEventTest.java
@@ -30,7 +30,7 @@
 
     @Test
     public void test() {
-     String who = "testUser";
+        String who = "testUser";
         AuditElements.EventCategoryType type = AuditElements.EventCategoryType.CUSTOM;
         String category = SyncopeConstants.REALM_ANYTYPE.toLowerCase();
         String subcategory = UUID.randomUUID().toString();
@@ -43,13 +43,13 @@
                 who,
                 type,
                 category,
-                subcategory, 
+                subcategory,
                 event,
                 condition,
-                before, 
-                output, 
+                before,
+                output,
                 input);
-        
+
         assertEquals(who, afterHandlingEvent.getWho());
         assertEquals(type, afterHandlingEvent.getType());
         assertEquals(category, afterHandlingEvent.getCategory());
diff --git a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/job/JobNamerTest.java b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/job/JobNamerTest.java
index 4d8a878..387b541 100644
--- a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/job/JobNamerTest.java
+++ b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/job/JobNamerTest.java
@@ -58,21 +58,21 @@
     }
 
     @Test
-    public void getJobKey(@Mock Task task) {
+    public void getJobKey(final @Mock Task task) {
         String uuid = UUID.randomUUID().toString();
         when(task.getKey()).thenReturn(uuid);
         assertTrue(EqualsBuilder.reflectionEquals(new JobKey("taskJob" + task.getKey(), Scheduler.DEFAULT_GROUP),
                 JobNamer.getJobKey(task)));
     }
-    
+
     @Test
-    public void getJobKey(@Mock Report report) {
+    public void getJobKey(final @Mock Report report) {
         String uuid = UUID.randomUUID().toString();
         when(report.getKey()).thenReturn(uuid);
         assertTrue(EqualsBuilder.reflectionEquals(new JobKey("reportJob" + report.getKey(), Scheduler.DEFAULT_GROUP),
                 JobNamer.getJobKey(report)));
     }
-    
+
     @Test
     public void getTriggerName() {
         String jobName = "testJobName";
diff --git a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskInfoTest.java b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskInfoTest.java
index 8e34e32..0a0013c 100644
--- a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskInfoTest.java
+++ b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/propagation/PropagationTaskInfoTest.java
@@ -45,7 +45,7 @@
     private PropagationTaskInfo propagationTaskInfo;
 
     @Test
-    public void test(@Mock Optional<ConnectorObject> beforeObj) {
+    public void test(final @Mock Optional<ConnectorObject> beforeObj) {
         PropagationTaskInfo propagationTaskInfo2 = new PropagationTaskInfo(externalResource);
         Object nullObj = null;
 
@@ -64,7 +64,7 @@
                 assertThrows(IllegalArgumentException.class, () -> propagationTaskInfo.setResource("testResource"));
         assertEquals(exception.getClass(), IllegalArgumentException.class);
         assertNull(propagationTaskInfo2.getResource());
-        
+
         propagationTaskInfo.setBeforeObj(beforeObj);
         assertEquals(beforeObj, propagationTaskInfo.getBeforeObj());
     }
diff --git a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningProfileTest.java b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningProfileTest.java
index 3220d0f..c973cae 100644
--- a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningProfileTest.java
+++ b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningProfileTest.java
@@ -31,11 +31,11 @@
 
 public class ProvisioningProfileTest extends AbstractTest {
 
-
     @Test
     public void test(
-            @Mock Connector connector,
-            @Mock PushTask pushTask) {
+            final @Mock Connector connector,
+            final @Mock PushTask pushTask) {
+
         boolean dryRun = false;
         ConflictResolutionAction conflictResolutionAction = ConflictResolutionAction.FIRSTMATCH;
         ProvisioningProfile<PushTask, PushActions> profile;
diff --git a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/serialization/AttributeSerializerTest.java b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/serialization/AttributeSerializerTest.java
index 0a62afd..954bcac 100644
--- a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/serialization/AttributeSerializerTest.java
+++ b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/serialization/AttributeSerializerTest.java
@@ -41,8 +41,12 @@
 public class AttributeSerializerTest extends AbstractTest {
 
     @Test
-    public void serialize(@Mock Attribute source, @Mock JsonGenerator jgen, @Mock SerializerProvider sp)
+    public void serialize(
+            final @Mock Attribute source,
+            final @Mock JsonGenerator jgen,
+            final @Mock SerializerProvider sp)
             throws IOException {
+
         AttributeSerializer serializer = new AttributeSerializer();
         when(source.getValue()).thenReturn(null);
         serializer.serialize(source, jgen, sp);
diff --git a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/serialization/GuardedStringSerializerTest.java b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/serialization/GuardedStringSerializerTest.java
index eca9489..e4e8056 100644
--- a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/serialization/GuardedStringSerializerTest.java
+++ b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/serialization/GuardedStringSerializerTest.java
@@ -39,13 +39,14 @@
     private static final String ENCRYPTED_BYTES = "encryptedBytes";
 
     private static final String BASE64_SHA1_HASH = "base64SHA1Hash";
-    
+
     private final GuardedStringSerializer serializer = new GuardedStringSerializer();
-    
+
     @Test
     public void serialize(
-            @Mock JsonGenerator jgen, 
-            @Mock SerializerProvider sp) throws IOException {
+            final @Mock JsonGenerator jgen,
+            final @Mock SerializerProvider sp) throws IOException {
+
         serializer.serialize(new GuardedString(), jgen, sp);
         verify(jgen).writeBooleanField(READONLY, false);
         verify(jgen).writeBooleanField(DISPOSED, false);
diff --git a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/serialization/POJOHelperTest.java b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/serialization/POJOHelperTest.java
index e3d83dd..28ac0eb 100644
--- a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/serialization/POJOHelperTest.java
+++ b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/serialization/POJOHelperTest.java
@@ -43,7 +43,7 @@
     }
 
     @Test
-    public void deserializeWithTypeReference(@Mock TypeReference<? extends Object> reference) {
+    public void deserializeWithTypeReference(final @Mock TypeReference<? extends Object> reference) {
         String serialized = "false";
 
         assertNull(POJOHelper.deserialize(serialized, reference));
diff --git a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenSerializerTest.java b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenSerializerTest.java
index 8423668..bae5e26 100644
--- a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenSerializerTest.java
+++ b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/serialization/SyncTokenSerializerTest.java
@@ -34,9 +34,10 @@
 public class SyncTokenSerializerTest extends AbstractTest {
 
     @Test
-    public void SyncTokenSerializer(
-            @Mock JsonGenerator jgen,
-            @Mock SerializerProvider sp) throws IOException {
+    public void syncTokenSerializer(
+            final @Mock JsonGenerator jgen,
+            final @Mock SerializerProvider sp) throws IOException {
+
         SyncTokenSerializer serializer = new SyncTokenSerializer();
         SyncToken source = new SyncToken(UUID.randomUUID().toString());
         serializer.serialize(source, jgen, sp);
diff --git a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/utils/ConnPoolConfUtilsTest.java b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/utils/ConnPoolConfUtilsTest.java
index 12f77bd..cbf4dbf 100644
--- a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/utils/ConnPoolConfUtilsTest.java
+++ b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/utils/ConnPoolConfUtilsTest.java
@@ -46,7 +46,7 @@
     }
 
     @Test
-    public void updateObjectPoolConfiguration(@Mock ObjectPoolConfiguration opc) {
+    public void updateObjectPoolConfiguration(final @Mock ObjectPoolConfiguration opc) {
         ConnPoolConfUtils.updateObjectPoolConfiguration(opc, cpc);
         verify(opc).setMaxIdle(anyInt());
         verify(opc).setMaxObjects(anyInt());
diff --git a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/utils/JexlUtilsTest.java b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/utils/JexlUtilsTest.java
index cb71c91..e9334be 100644
--- a/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/utils/JexlUtilsTest.java
+++ b/core/provisioning-api/src/test/java/org/apache/syncope/core/provisioning/api/utils/JexlUtilsTest.java
@@ -52,7 +52,7 @@
 public class JexlUtilsTest extends AbstractTest {
 
     @Mock
-    JexlContext context;
+    private JexlContext context;
 
     private String expression;
 
@@ -83,10 +83,11 @@
 
     @Test
     public void addFieldsToContext(
-            @Mock Any<?> any,
-            @Mock AnyTO anyTO,
-            @Mock Realm realm,
-            @Mock RealmTO realmTO) {
+            final @Mock Any<?> any,
+            final @Mock AnyTO anyTO,
+            final @Mock Realm realm,
+            final @Mock RealmTO realmTO) {
+
         JexlUtils.addFieldsToContext(new Exception(), context);
         verify(context, times(2)).set(eq("cause"), any());
 
@@ -132,16 +133,17 @@
     }
 
     @Test
-    public void addPlainAttrsToContext(@Mock Collection<? extends PlainAttr<?>> attrs) {
+    public void addPlainAttrsToContext(final @Mock Collection<? extends PlainAttr<?>> attrs) {
         JexlUtils.addPlainAttrsToContext(attrs, context);
         verify(context, times(0)).set(anyString(), any());
     }
 
     @Test
     public void addDerAttrsToContext(
-            @Mock DerAttrHandler derAttrHandler,
-            @Mock Any<?> any,
-            @Mock DerSchema derSchema) {
+            final @Mock DerAttrHandler derAttrHandler,
+            final @Mock Any<?> any,
+            final @Mock DerSchema derSchema) {
+
         Map<DerSchema, String> derAttrs = new HashMap<>();
         derAttrs.put(derSchema, expression);
 
@@ -152,10 +154,11 @@
 
     @Test
     public void evaluateMandatoryCondition(
-            @Mock DerAttrHandler derAttrHandler,
-            @Mock Any<?> any,
-            @Mock DerSchema derSchema,
-            @Mock Collection<? extends PlainAttr<?>> plainAttrs) {
+            final @Mock DerAttrHandler derAttrHandler,
+            final @Mock Any<?> any,
+            final @Mock DerSchema derSchema,
+            final @Mock Collection<? extends PlainAttr<?>> plainAttrs) {
+
         Map<DerSchema, String> derAttrs = new HashMap<>();
         derAttrs.put(derSchema, expression);
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
index d6ba13d..4b130e0 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorFacadeProxy.java
@@ -28,10 +28,10 @@
 import org.apache.syncope.common.lib.types.ConnectorCapability;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
 import org.apache.syncope.core.provisioning.api.ConnIdBundleManager;
-import org.apache.syncope.core.provisioning.api.utils.ConnPoolConfUtils;
 import org.apache.syncope.core.provisioning.api.Connector;
 import org.apache.syncope.core.provisioning.api.TimeoutException;
 import org.apache.syncope.core.provisioning.api.pushpull.ReconFilterBuilder;
+import org.apache.syncope.core.provisioning.api.utils.ConnPoolConfUtils;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.identityconnectors.common.CollectionUtil;
 import org.identityconnectors.common.security.GuardedByteArray;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java
index 9a5ef14..0707bea 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java
@@ -27,15 +27,15 @@
 import org.apache.syncope.common.lib.request.AnyObjectUR;
 import org.apache.syncope.common.lib.to.PropagationStatus;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.provisioning.api.AnyObjectProvisioningManager;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
+import org.apache.syncope.core.provisioning.api.VirAttrHandler;
 import org.apache.syncope.core.provisioning.api.WorkflowResult;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationManager;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
-import org.apache.syncope.core.provisioning.api.VirAttrHandler;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
 import org.apache.syncope.core.workflow.api.AnyObjectWorkflowAdapter;
 import org.springframework.transaction.annotation.Propagation;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAuditManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAuditManager.java
index 5c21976..e63bba1 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAuditManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAuditManager.java
@@ -26,20 +26,20 @@
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.UserTO;
-import org.apache.syncope.core.provisioning.api.AuditManager;
 import org.apache.syncope.common.lib.types.AuditElements;
 import org.apache.syncope.common.lib.types.AuditElements.Result;
 import org.apache.syncope.common.lib.types.AuditLoggerName;
-import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
+import org.apache.syncope.core.persistence.api.dao.AuditConfDAO;
+import org.apache.syncope.core.persistence.api.entity.AuditConf;
+import org.apache.syncope.core.provisioning.api.AuditManager;
 import org.apache.syncope.core.provisioning.api.event.AfterHandlingEvent;
+import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.provisioning.api.utils.ExceptionUtils2;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.AuditConf;
-import org.apache.syncope.core.persistence.api.dao.AuditConfDAO;
 
 @Transactional(readOnly = true)
 public class DefaultAuditManager implements AuditManager {
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultConnectorManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultConnectorManager.java
index db0f37c..27a3328 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultConnectorManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultConnectorManager.java
@@ -28,18 +28,18 @@
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.types.ConnConfProperty;
 import org.apache.syncope.common.lib.types.ConnectorCapability;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
+import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.provisioning.api.ConnIdBundleManager;
 import org.apache.syncope.core.provisioning.api.Connector;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.provisioning.api.ConnectorManager;
 import org.apache.syncope.core.provisioning.api.data.ConnInstanceDataBinder;
 import org.apache.syncope.core.provisioning.api.utils.ConnPoolConfUtils;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.identityconnectors.common.l10n.CurrentLocale;
 import org.identityconnectors.framework.api.ConnectorFacadeFactory;
 import org.slf4j.Logger;
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 c9b9ce8..7c6b519 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
@@ -19,9 +19,9 @@
 package org.apache.syncope.core.provisioning.java;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
-import java.util.Collection;
 import java.util.Set;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
@@ -34,12 +34,12 @@
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.provisioning.api.GroupProvisioningManager;
 import org.apache.syncope.core.provisioning.api.PropagationByResource;
+import org.apache.syncope.core.provisioning.api.VirAttrHandler;
 import org.apache.syncope.core.provisioning.api.WorkflowResult;
+import org.apache.syncope.core.provisioning.api.data.GroupDataBinder;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationManager;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
-import org.apache.syncope.core.provisioning.api.VirAttrHandler;
-import org.apache.syncope.core.provisioning.api.data.GroupDataBinder;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
 import org.apache.syncope.core.workflow.api.GroupWorkflowAdapter;
 import org.springframework.transaction.annotation.Propagation;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultMappingManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultMappingManager.java
index 30d5092..1d78e33 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultMappingManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultMappingManager.java
@@ -18,7 +18,6 @@
  */
 package org.apache.syncope.core.provisioning.java;
 
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
 import java.text.ParseException;
 import java.time.temporal.TemporalAccessor;
 import java.util.ArrayList;
@@ -35,9 +34,9 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.reflect.FieldUtils;
 import org.apache.commons.lang3.tuple.Pair;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.GroupableRelatableTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
@@ -83,11 +82,15 @@
 import org.apache.syncope.core.provisioning.api.AccountGetter;
 import org.apache.syncope.core.provisioning.api.DerAttrHandler;
 import org.apache.syncope.core.provisioning.api.IntAttrName;
+import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
 import org.apache.syncope.core.provisioning.api.MappingManager;
 import org.apache.syncope.core.provisioning.api.PlainAttrGetter;
 import org.apache.syncope.core.provisioning.api.VirAttrHandler;
 import org.apache.syncope.core.provisioning.api.cache.VirAttrCache;
 import org.apache.syncope.core.provisioning.api.cache.VirAttrCacheKey;
+import org.apache.syncope.core.provisioning.api.data.ItemTransformer;
+import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
+import org.apache.syncope.core.provisioning.api.utils.FormatUtils;
 import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils;
 import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 import org.apache.syncope.core.spring.security.Encryptor;
@@ -96,15 +99,12 @@
 import org.identityconnectors.framework.common.objects.Attribute;
 import org.identityconnectors.framework.common.objects.AttributeBuilder;
 import org.identityconnectors.framework.common.objects.AttributeUtil;
+import org.identityconnectors.framework.common.objects.Name;
 import org.identityconnectors.framework.common.objects.OperationalAttributes;
+import org.identityconnectors.framework.common.objects.Uid;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.provisioning.api.data.ItemTransformer;
-import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
-import org.apache.syncope.core.provisioning.api.utils.FormatUtils;
-import org.identityconnectors.framework.common.objects.Name;
-import org.identityconnectors.framework.common.objects.Uid;
 
 public class DefaultMappingManager implements MappingManager {
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
index ee80b0f..a6ce13a 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
@@ -30,21 +30,21 @@
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.PropagationStatus;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.PatchOperation;
-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.UserProvisioningManager;
-import org.apache.syncope.core.provisioning.api.UserWorkflowResult;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.common.lib.types.StatusRType;
+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.PropagationByResource;
+import org.apache.syncope.core.provisioning.api.UserProvisioningManager;
+import org.apache.syncope.core.provisioning.api.UserWorkflowResult;
+import org.apache.syncope.core.provisioning.api.VirAttrHandler;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationManager;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
-import org.apache.syncope.core.provisioning.api.VirAttrHandler;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.core.workflow.api.UserWorkflowAdapter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
index 20243d1..d4e4413 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
@@ -78,11 +78,11 @@
 import org.apache.syncope.core.provisioning.api.AccountGetter;
 import org.apache.syncope.core.provisioning.api.DerAttrHandler;
 import org.apache.syncope.core.provisioning.api.IntAttrName;
+import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
 import org.apache.syncope.core.provisioning.api.MappingManager;
 import org.apache.syncope.core.provisioning.api.PlainAttrGetter;
-import org.apache.syncope.core.provisioning.api.VirAttrHandler;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
 import org.apache.syncope.core.provisioning.api.PropagationByResource;
+import org.apache.syncope.core.provisioning.api.VirAttrHandler;
 import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
 import org.apache.syncope.core.provisioning.java.pushpull.OutboundMatcher;
 import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils;
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 56dfd75..0b72178 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
@@ -41,7 +41,6 @@
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
@@ -67,6 +66,7 @@
 import org.apache.syncope.core.provisioning.api.DerAttrHandler;
 import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
 import org.apache.syncope.core.provisioning.api.MappingManager;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.provisioning.api.VirAttrHandler;
 import org.apache.syncope.core.provisioning.api.data.AnyObjectDataBinder;
 import org.apache.syncope.core.provisioning.java.pushpull.OutboundMatcher;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyTypeClassDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyTypeClassDataBinderImpl.java
index 9d5a65f..4d9f489 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyTypeClassDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyTypeClassDataBinderImpl.java
@@ -25,10 +25,10 @@
 import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
-import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
 import org.apache.syncope.core.persistence.api.entity.DerSchema;
 import org.apache.syncope.core.persistence.api.entity.Entity;
+import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.VirSchema;
 import org.apache.syncope.core.provisioning.api.data.AnyTypeClassDataBinder;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyTypeDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyTypeDataBinderImpl.java
index 9b1c3aa..6301c95 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyTypeDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AnyTypeDataBinderImpl.java
@@ -28,15 +28,15 @@
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.CipherAlgorithm;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.lib.types.EntitlementsHolder;
 import org.apache.syncope.core.persistence.api.dao.AccessTokenDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.entity.AccessToken;
-import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
-import org.apache.syncope.common.lib.types.EntitlementsHolder;
 import org.apache.syncope.core.persistence.api.entity.Entity;
+import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.provisioning.api.data.AnyTypeDataBinder;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AuditDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AuditDataBinderImpl.java
index cba420a..944fa60 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AuditDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AuditDataBinderImpl.java
@@ -19,8 +19,8 @@
 package org.apache.syncope.core.provisioning.java.data;
 
 import org.apache.syncope.common.lib.to.AuditConfTO;
-import org.apache.syncope.core.provisioning.api.data.AuditDataBinder;
 import org.apache.syncope.core.persistence.api.entity.AuditConf;
+import org.apache.syncope.core.provisioning.api.data.AuditDataBinder;
 
 public class AuditDataBinderImpl implements AuditDataBinder {
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AuthModuleDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AuthModuleDataBinderImpl.java
index ac31c3a..5f223c6 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AuthModuleDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AuthModuleDataBinderImpl.java
@@ -20,11 +20,11 @@
 
 import org.apache.syncope.common.lib.SyncopeClientCompositeException;
 import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.common.lib.to.AuthModuleTO;
 import org.apache.syncope.common.lib.to.ItemTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.MappingPurpose;
+import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.auth.AuthModule;
 import org.apache.syncope.core.persistence.api.entity.auth.AuthModuleItem;
 import org.apache.syncope.core.provisioning.api.data.AuthModuleDataBinder;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ClientAppDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ClientAppDataBinderImpl.java
index f3eb189..431d419 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ClientAppDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ClientAppDataBinderImpl.java
@@ -26,15 +26,15 @@
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
+import org.apache.syncope.core.persistence.api.entity.auth.CASSPClientApp;
 import org.apache.syncope.core.persistence.api.entity.auth.ClientApp;
+import org.apache.syncope.core.persistence.api.entity.auth.OIDCRPClientApp;
+import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPClientApp;
 import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.AttrReleasePolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.Policy;
 import org.apache.syncope.core.provisioning.api.data.ClientAppDataBinder;
-import org.apache.syncope.core.persistence.api.entity.auth.SAML2SPClientApp;
-import org.apache.syncope.core.persistence.api.entity.auth.CASSPClientApp;
-import org.apache.syncope.core.persistence.api.entity.auth.OIDCRPClientApp;
 
 public class ClientAppDataBinderImpl implements ClientAppDataBinder {
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java
index 998455d..3d10cc2 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java
@@ -41,8 +41,8 @@
 import org.apache.syncope.core.provisioning.api.utils.ConnPoolConfUtils;
 import org.identityconnectors.framework.api.ConfigurationProperties;
 import org.identityconnectors.framework.api.ConfigurationProperty;
-import org.identityconnectors.framework.impl.api.ConfigurationPropertyImpl;
 import org.identityconnectors.framework.api.ConnectorInfo;
+import org.identityconnectors.framework.impl.api.ConfigurationPropertyImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/DynRealmDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/DynRealmDataBinderImpl.java
index 587d1a7..906ab11 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/DynRealmDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/DynRealmDataBinderImpl.java
@@ -26,9 +26,9 @@
 import org.apache.syncope.core.persistence.api.dao.DynRealmDAO;
 import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
-import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.DynRealm;
 import org.apache.syncope.core.persistence.api.entity.DynRealmMembership;
+import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.search.SearchCondConverter;
 import org.apache.syncope.core.persistence.api.search.SearchCondVisitor;
 import org.apache.syncope.core.provisioning.api.data.DynRealmDataBinder;
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 6ec503e..19ff495 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
@@ -37,11 +37,6 @@
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
-import org.apache.syncope.core.persistence.api.entity.group.Group;
-import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
-import org.apache.syncope.core.provisioning.api.data.GroupDataBinder;
-import org.apache.syncope.core.persistence.api.search.SearchCondConverter;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
@@ -63,13 +58,18 @@
 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.ADynGroupMembership;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.group.TypeExtension;
 import org.apache.syncope.core.persistence.api.entity.user.UDynGroupMembership;
+import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.persistence.api.search.SearchCondConverter;
 import org.apache.syncope.core.persistence.api.search.SearchCondVisitor;
 import org.apache.syncope.core.provisioning.api.DerAttrHandler;
 import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
 import org.apache.syncope.core.provisioning.api.MappingManager;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.provisioning.api.VirAttrHandler;
+import org.apache.syncope.core.provisioning.api.data.GroupDataBinder;
 import org.apache.syncope.core.provisioning.java.pushpull.OutboundMatcher;
 import org.springframework.transaction.annotation.Transactional;
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ImplementationDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ImplementationDataBinderImpl.java
index 31da17f..d5b6554 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ImplementationDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ImplementationDataBinderImpl.java
@@ -31,19 +31,19 @@
 import org.apache.syncope.core.persistence.api.attrvalue.validation.Validator;
 import org.apache.syncope.core.persistence.api.dao.AccountRule;
 import org.apache.syncope.core.persistence.api.dao.PasswordRule;
+import org.apache.syncope.core.persistence.api.dao.PullCorrelationRule;
+import org.apache.syncope.core.persistence.api.dao.PushCorrelationRule;
 import org.apache.syncope.core.persistence.api.dao.Reportlet;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
 import org.apache.syncope.core.provisioning.api.LogicActions;
+import org.apache.syncope.core.provisioning.api.ProvisionSorter;
 import org.apache.syncope.core.provisioning.api.data.ImplementationDataBinder;
 import org.apache.syncope.core.provisioning.api.data.ItemTransformer;
 import org.apache.syncope.core.provisioning.api.job.SchedTaskJobDelegate;
+import org.apache.syncope.core.provisioning.api.notification.RecipientsProvider;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationActions;
 import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
-import org.apache.syncope.core.persistence.api.dao.PullCorrelationRule;
-import org.apache.syncope.core.persistence.api.dao.PushCorrelationRule;
-import org.apache.syncope.core.provisioning.api.ProvisionSorter;
-import org.apache.syncope.core.provisioning.api.notification.RecipientsProvider;
 import org.apache.syncope.core.provisioning.api.pushpull.PushActions;
 import org.apache.syncope.core.provisioning.api.pushpull.ReconFilterBuilder;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java
index 997b7d6..0f2dd54 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/JEXLItemTransformerImpl.java
@@ -33,8 +33,8 @@
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.resource.Item;
 import org.apache.syncope.core.provisioning.api.DerAttrHandler;
-import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
 import org.apache.syncope.core.provisioning.api.data.JEXLItemTransformer;
+import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 
 public class JEXLItemTransformerImpl implements JEXLItemTransformer {
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/NotificationDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/NotificationDataBinderImpl.java
index 3e4f674..126a643 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/NotificationDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/NotificationDataBinderImpl.java
@@ -22,21 +22,21 @@
 import java.util.regex.Matcher;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.core.provisioning.api.data.NotificationDataBinder;
 import org.apache.syncope.common.lib.to.NotificationTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.core.persistence.api.entity.EntityFactory;
-import org.apache.syncope.core.persistence.api.entity.Notification;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
 import org.apache.syncope.core.persistence.api.dao.MailTemplateDAO;
 import org.apache.syncope.core.persistence.api.entity.AnyAbout;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.Entity;
+import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
 import org.apache.syncope.core.persistence.api.entity.MailTemplate;
+import org.apache.syncope.core.persistence.api.entity.Notification;
 import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
+import org.apache.syncope.core.provisioning.api.data.NotificationDataBinder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/PolicyDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/PolicyDataBinderImpl.java
index afbe9ca..db197f3 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/PolicyDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/PolicyDataBinderImpl.java
@@ -19,15 +19,15 @@
 package org.apache.syncope.core.provisioning.java.data;
 
 import java.util.stream.Collectors;
-import org.apache.syncope.common.lib.policy.AccountPolicyTO;
-import org.apache.syncope.common.lib.policy.PasswordPolicyTO;
-import org.apache.syncope.common.lib.policy.PolicyTO;
-import org.apache.syncope.common.lib.policy.PullPolicyTO;
-import org.apache.syncope.common.lib.policy.PushPolicyTO;
 import org.apache.syncope.common.lib.policy.AccessPolicyTO;
+import org.apache.syncope.common.lib.policy.AccountPolicyTO;
 import org.apache.syncope.common.lib.policy.AttrReleasePolicyTO;
 import org.apache.syncope.common.lib.policy.AuthPolicyTO;
+import org.apache.syncope.common.lib.policy.PasswordPolicyTO;
+import org.apache.syncope.common.lib.policy.PolicyTO;
 import org.apache.syncope.common.lib.policy.PropagationPolicyTO;
+import org.apache.syncope.common.lib.policy.PullPolicyTO;
+import org.apache.syncope.common.lib.policy.PushPolicyTO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java
index df5593d..d32bbbd 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RealmDataBinderImpl.java
@@ -21,9 +21,7 @@
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.common.lib.types.ResourceOperation;
-import org.apache.syncope.core.provisioning.java.utils.TemplateUtils;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
@@ -31,19 +29,21 @@
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.entity.AnyTemplateRealm;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
-import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
-import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
 import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
+import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.AttrReleasePolicy;
+import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
+import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.Policy;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.provisioning.api.data.RealmDataBinder;
+import org.apache.syncope.core.provisioning.java.utils.TemplateUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
 
 public class RealmDataBinderImpl implements RealmDataBinder {
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ReportDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ReportDataBinderImpl.java
index f266f25..85b0390 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ReportDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ReportDataBinderImpl.java
@@ -21,20 +21,20 @@
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.core.provisioning.api.data.ReportDataBinder;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.ReportTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.JobType;
 import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
 import org.apache.syncope.core.persistence.api.dao.ReportExecDAO;
-import org.apache.syncope.core.persistence.api.entity.Report;
-import org.apache.syncope.core.persistence.api.entity.ReportExec;
-import org.apache.syncope.core.provisioning.api.job.JobNamer;
 import org.apache.syncope.core.persistence.api.dao.ReportTemplateDAO;
 import org.apache.syncope.core.persistence.api.entity.Entity;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
+import org.apache.syncope.core.persistence.api.entity.Report;
+import org.apache.syncope.core.persistence.api.entity.ReportExec;
 import org.apache.syncope.core.persistence.api.entity.ReportTemplate;
+import org.apache.syncope.core.provisioning.api.data.ReportDataBinder;
+import org.apache.syncope.core.provisioning.api.job.JobNamer;
 import org.quartz.Scheduler;
 import org.quartz.SchedulerException;
 import org.quartz.Trigger;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
index 6cbf8cd..bc67580 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderImpl.java
@@ -40,36 +40,36 @@
 import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
-import org.apache.syncope.core.persistence.api.dao.ConnInstanceDAO;
-import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
-import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
-import org.apache.syncope.core.persistence.api.entity.ConnInstance;
-import org.apache.syncope.core.persistence.api.entity.EntityFactory;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
-import org.apache.syncope.core.persistence.api.entity.resource.Mapping;
-import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
-import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
-import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
+import org.apache.syncope.core.persistence.api.dao.ConnInstanceDAO;
 import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
+import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
 import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
+import org.apache.syncope.core.persistence.api.entity.ConnInstance;
 import org.apache.syncope.core.persistence.api.entity.Entity;
+import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.VirSchema;
+import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
+import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PropagationPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PullPolicy;
 import org.apache.syncope.core.persistence.api.entity.policy.PushPolicy;
+import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.resource.Item;
+import org.apache.syncope.core.persistence.api.entity.resource.Mapping;
+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.OrgUnitItem;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
 import org.apache.syncope.core.provisioning.api.IntAttrName;
+import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
 import org.apache.syncope.core.provisioning.api.data.ResourceDataBinder;
+import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
 import org.identityconnectors.framework.common.objects.ObjectClass;
 import org.slf4j.Logger;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RoleDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RoleDataBinderImpl.java
index bb6a867..6ac956e 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RoleDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/RoleDataBinderImpl.java
@@ -24,7 +24,6 @@
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.core.persistence.api.dao.ApplicationDAO;
 import org.apache.syncope.core.persistence.api.dao.DynRealmDAO;
-import org.apache.syncope.core.persistence.api.search.SearchCondConverter;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.dao.RoleDAO;
 import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
@@ -35,6 +34,7 @@
 import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.persistence.api.entity.Role;
 import org.apache.syncope.core.persistence.api.entity.user.DynRoleMembership;
+import org.apache.syncope.core.persistence.api.search.SearchCondConverter;
 import org.apache.syncope.core.persistence.api.search.SearchCondVisitor;
 import org.apache.syncope.core.provisioning.api.data.RoleDataBinder;
 import org.slf4j.Logger;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPEntityDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPEntityDataBinderImpl.java
index 8c4e178..f538b24 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPEntityDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPEntityDataBinderImpl.java
@@ -19,8 +19,8 @@
 package org.apache.syncope.core.provisioning.java.data;
 
 import java.util.Base64;
-import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.common.lib.to.SAML2IdPEntityTO;
+import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.auth.SAML2IdPEntity;
 import org.apache.syncope.core.provisioning.api.data.SAML2IdPEntityDataBinder;
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SchemaDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SchemaDataBinderImpl.java
index 702d322..9ab53fe 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SchemaDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SchemaDataBinderImpl.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.core.provisioning.java.data;
 
 import java.util.stream.Collectors;
-import org.apache.syncope.core.provisioning.api.data.SchemaDataBinder;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.SyncopeClientCompositeException;
 import org.apache.syncope.common.lib.SyncopeClientException;
@@ -29,28 +28,29 @@
 import org.apache.syncope.common.lib.to.VirSchemaTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
-import org.apache.syncope.core.persistence.api.entity.DerSchema;
-import org.apache.syncope.core.persistence.api.entity.PlainSchema;
-import org.apache.syncope.core.persistence.api.entity.VirSchema;
-import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
 import org.apache.syncope.core.persistence.api.entity.AnyUtils;
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
+import org.apache.syncope.core.persistence.api.entity.DerSchema;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
+import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.Schema;
 import org.apache.syncope.core.persistence.api.entity.SchemaLabel;
+import org.apache.syncope.core.persistence.api.entity.VirSchema;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
+import org.apache.syncope.core.provisioning.api.data.SchemaDataBinder;
+import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SecurityQuestionDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SecurityQuestionDataBinderImpl.java
index e55d165..f040d77 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SecurityQuestionDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SecurityQuestionDataBinderImpl.java
@@ -18,10 +18,10 @@
  */
 package org.apache.syncope.core.provisioning.java.data;
 
-import org.apache.syncope.core.provisioning.api.data.SecurityQuestionDataBinder;
 import org.apache.syncope.common.lib.to.SecurityQuestionTO;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.user.SecurityQuestion;
+import org.apache.syncope.core.provisioning.api.data.SecurityQuestionDataBinder;
 
 public class SecurityQuestionDataBinderImpl implements SecurityQuestionDataBinder {
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java
index 424e081..02778f9 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/TaskDataBinderImpl.java
@@ -20,17 +20,16 @@
 
 import java.util.Objects;
 import java.util.stream.Collectors;
-import org.apache.syncope.core.provisioning.api.data.TaskDataBinder;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.ProvisioningTaskTO;
-import org.apache.syncope.common.lib.to.TaskTO;
-import org.apache.syncope.common.lib.to.PropagationTaskTO;
-import org.apache.syncope.common.lib.to.PushTaskTO;
-import org.apache.syncope.common.lib.to.SchedTaskTO;
-import org.apache.syncope.common.lib.to.PullTaskTO;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.NotificationTaskTO;
+import org.apache.syncope.common.lib.to.PropagationTaskTO;
+import org.apache.syncope.common.lib.to.ProvisioningTaskTO;
+import org.apache.syncope.common.lib.to.PullTaskTO;
+import org.apache.syncope.common.lib.to.PushTaskTO;
+import org.apache.syncope.common.lib.to.SchedTaskTO;
+import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.IdRepoImplementationType;
 import org.apache.syncope.common.lib.types.ImplementationEngine;
@@ -38,31 +37,34 @@
 import org.apache.syncope.common.lib.types.MatchingRule;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.lib.types.UnmatchingRule;
-import org.apache.syncope.core.provisioning.java.utils.TemplateUtils;
-import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
-import org.apache.syncope.core.persistence.api.dao.NotFoundException;
-import org.apache.syncope.core.persistence.api.dao.TaskExecDAO;
-import org.apache.syncope.core.persistence.api.entity.task.NotificationTask;
-import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
-import org.apache.syncope.core.persistence.api.entity.task.ProvisioningTask;
-import org.apache.syncope.core.persistence.api.entity.task.PushTask;
-import org.apache.syncope.core.persistence.api.entity.task.SchedTask;
-import org.apache.syncope.core.persistence.api.entity.task.Task;
-import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
-import org.apache.syncope.core.persistence.api.entity.task.TaskUtils;
-import org.apache.syncope.core.provisioning.api.job.JobNamer;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
+import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
+import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
+import org.apache.syncope.core.persistence.api.dao.TaskExecDAO;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.Entity;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.task.AnyTemplatePullTask;
+import org.apache.syncope.core.persistence.api.entity.task.NotificationTask;
+import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
+import org.apache.syncope.core.persistence.api.entity.task.ProvisioningTask;
 import org.apache.syncope.core.persistence.api.entity.task.PullTask;
-import org.apache.syncope.core.provisioning.java.pushpull.PushJobDelegate;
+import org.apache.syncope.core.persistence.api.entity.task.PushTask;
+import org.apache.syncope.core.persistence.api.entity.task.PushTaskAnyFilter;
+import org.apache.syncope.core.persistence.api.entity.task.SchedTask;
+import org.apache.syncope.core.persistence.api.entity.task.Task;
+import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
+import org.apache.syncope.core.persistence.api.entity.task.TaskUtils;
+import org.apache.syncope.core.persistence.api.entity.task.TaskUtilsFactory;
+import org.apache.syncope.core.provisioning.api.data.TaskDataBinder;
+import org.apache.syncope.core.provisioning.api.job.JobNamer;
 import org.apache.syncope.core.provisioning.java.pushpull.PullJobDelegate;
+import org.apache.syncope.core.provisioning.java.pushpull.PushJobDelegate;
+import org.apache.syncope.core.provisioning.java.utils.TemplateUtils;
 import org.quartz.Scheduler;
 import org.quartz.SchedulerException;
 import org.quartz.Trigger;
@@ -70,8 +72,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.scheduling.quartz.SchedulerFactoryBean;
-import org.apache.syncope.core.persistence.api.entity.task.PushTaskAnyFilter;
-import org.apache.syncope.core.persistence.api.entity.task.TaskUtilsFactory;
 
 public class TaskDataBinderImpl extends AbstractExecutableDatabinder implements TaskDataBinder {
 
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 193a4d1..e4340a7 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
@@ -32,11 +32,11 @@
 import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.SyncopeClientCompositeException;
 import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.request.AttrPatch;
+import org.apache.syncope.common.lib.request.PasswordPatch;
 import org.apache.syncope.common.lib.request.StringPatchItem;
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.request.UserUR;
-import org.apache.syncope.common.lib.request.AttrPatch;
-import org.apache.syncope.common.lib.request.PasswordPatch;
 import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.to.LinkedAccountTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
@@ -49,14 +49,6 @@
 import org.apache.syncope.core.persistence.api.dao.AccessTokenDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
-import org.apache.syncope.core.persistence.api.dao.SecurityQuestionDAO;
-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.user.SecurityQuestion;
-import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
-import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.ApplicationDAO;
 import org.apache.syncope.core.persistence.api.dao.DelegationDAO;
@@ -68,6 +60,7 @@
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.dao.RelationshipTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.RoleDAO;
+import org.apache.syncope.core.persistence.api.dao.SecurityQuestionDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.AccessToken;
 import org.apache.syncope.core.persistence.api.entity.AnyUtils;
@@ -80,17 +73,24 @@
 import org.apache.syncope.core.persistence.api.entity.RelationshipType;
 import org.apache.syncope.core.persistence.api.entity.Role;
 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.Item;
 import org.apache.syncope.core.persistence.api.entity.user.LAPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.user.LinkedAccount;
+import org.apache.syncope.core.persistence.api.entity.user.SecurityQuestion;
 import org.apache.syncope.core.persistence.api.entity.user.UMembership;
 import org.apache.syncope.core.persistence.api.entity.user.UPlainAttr;
 import org.apache.syncope.core.persistence.api.entity.user.URelationship;
+import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.DerAttrHandler;
 import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
 import org.apache.syncope.core.provisioning.api.MappingManager;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.provisioning.api.VirAttrHandler;
+import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
 import org.apache.syncope.core.provisioning.java.pushpull.OutboundMatcher;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.spring.security.SecurityProperties;
 import org.springframework.transaction.annotation.Transactional;
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/wa/WAClientAppDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/wa/WAClientAppDataBinderImpl.java
index 2e25d26..23eb9a1 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/wa/WAClientAppDataBinderImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/wa/WAClientAppDataBinderImpl.java
@@ -27,9 +27,9 @@
 import org.apache.syncope.core.provisioning.api.data.AuthModuleDataBinder;
 import org.apache.syncope.core.provisioning.api.data.ClientAppDataBinder;
 import org.apache.syncope.core.provisioning.api.data.PolicyDataBinder;
+import org.apache.syncope.core.provisioning.api.data.wa.WAClientAppDataBinder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.syncope.core.provisioning.api.data.wa.WAClientAppDataBinder;
 
 public class WAClientAppDataBinderImpl implements WAClientAppDataBinder {
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java
index 7c6c25d..28bd894 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java
@@ -22,16 +22,16 @@
 import java.util.Optional;
 import java.util.concurrent.atomic.AtomicReference;
 import org.apache.syncope.common.lib.types.AuditElements;
-import org.apache.syncope.core.provisioning.api.job.JobManager;
-import org.apache.syncope.core.provisioning.api.utils.ExceptionUtils2;
 import org.apache.syncope.core.persistence.api.dao.TaskDAO;
 import org.apache.syncope.core.persistence.api.dao.TaskExecDAO;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.task.SchedTask;
 import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
 import org.apache.syncope.core.provisioning.api.AuditManager;
+import org.apache.syncope.core.provisioning.api.job.JobManager;
 import org.apache.syncope.core.provisioning.api.job.SchedTaskJobDelegate;
 import org.apache.syncope.core.provisioning.api.notification.NotificationManager;
+import org.apache.syncope.core.provisioning.api.utils.ExceptionUtils2;
 import org.apache.syncope.core.spring.security.SecurityProperties;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/TaskJob.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/TaskJob.java
index 6261933..ca21086 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/TaskJob.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/TaskJob.java
@@ -22,13 +22,13 @@
 import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
 import org.apache.syncope.core.provisioning.api.job.JobDelegate;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
+import org.apache.syncope.core.provisioning.api.job.JobManager;
 import org.apache.syncope.core.provisioning.api.job.SchedTaskJobDelegate;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
+import org.apache.syncope.core.spring.ImplementationManager;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
-import org.apache.syncope.core.provisioning.api.job.JobManager;
-import org.apache.syncope.core.spring.ImplementationManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/DefaultNotificationJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/DefaultNotificationJobDelegate.java
index f7f3b4f..969b4bd 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/DefaultNotificationJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/DefaultNotificationJobDelegate.java
@@ -26,7 +26,6 @@
 import org.apache.syncope.common.lib.types.AuditElements;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.lib.types.TraceLevel;
-import org.apache.syncope.core.provisioning.api.utils.ExceptionUtils2;
 import org.apache.syncope.core.persistence.api.dao.TaskDAO;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.task.NotificationTask;
@@ -34,6 +33,7 @@
 import org.apache.syncope.core.provisioning.api.AuditManager;
 import org.apache.syncope.core.provisioning.api.notification.NotificationJobDelegate;
 import org.apache.syncope.core.provisioning.api.notification.NotificationManager;
+import org.apache.syncope.core.provisioning.api.utils.ExceptionUtils2;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.quartz.JobExecutionException;
 import org.slf4j.Logger;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/NotificationJob.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/NotificationJob.java
index 3d0e124..634ef4a 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/NotificationJob.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/notification/NotificationJob.java
@@ -20,11 +20,11 @@
 
 import java.util.Optional;
 import org.apache.syncope.core.persistence.api.DomainHolder;
-import org.apache.syncope.core.provisioning.api.job.JobManager;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.provisioning.api.job.JobDelegate;
+import org.apache.syncope.core.provisioning.api.job.JobManager;
 import org.apache.syncope.core.provisioning.api.notification.NotificationJobDelegate;
 import org.apache.syncope.core.provisioning.java.job.AbstractInterruptableJob;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.spring.security.SecurityProperties;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/AbstractReportlet.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/AbstractReportlet.java
index cb52fd0..86f867c 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/AbstractReportlet.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/AbstractReportlet.java
@@ -19,8 +19,8 @@
 package org.apache.syncope.core.provisioning.java.job.report;
 
 import java.util.concurrent.atomic.AtomicReference;
-import org.apache.syncope.core.persistence.api.dao.Reportlet;
 import org.apache.syncope.common.lib.report.ReportletConf;
+import org.apache.syncope.core.persistence.api.dao.Reportlet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.transaction.annotation.Transactional;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/AuditReportlet.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/AuditReportlet.java
index 1d51975..2616191 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/AuditReportlet.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/AuditReportlet.java
@@ -27,15 +27,15 @@
 import org.apache.syncope.common.lib.report.AuditReportletConf;
 import org.apache.syncope.common.lib.report.ReportletConf;
 import org.apache.syncope.core.persistence.api.DomainHolder;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
-import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
+import org.apache.syncope.core.persistence.api.dao.AuditConfDAO;
 import org.apache.syncope.core.persistence.api.dao.ReportletConfClass;
+import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
 import org.xml.sax.helpers.AttributesImpl;
-import org.apache.syncope.core.persistence.api.dao.AuditConfDAO;
 
 @ReportletConfClass(AuditReportletConf.class)
 public class AuditReportlet extends AbstractReportlet {
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/GroupReportlet.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/GroupReportlet.java
index 29fb734..bf11408 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/GroupReportlet.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/GroupReportlet.java
@@ -23,23 +23,23 @@
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicReference;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.report.GroupReportletConf;
 import org.apache.syncope.common.lib.report.GroupReportletConf.Feature;
 import org.apache.syncope.common.lib.report.ReportletConf;
 import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.core.persistence.api.dao.AnyDAO;
-import org.apache.syncope.core.persistence.api.dao.GroupDAO;
-import org.apache.syncope.core.persistence.api.entity.group.Group;
-import org.apache.syncope.core.persistence.api.search.SearchCondConverter;
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.dao.ReportletConfClass;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.user.UMembership;
+import org.apache.syncope.core.persistence.api.search.SearchCondConverter;
 import org.apache.syncope.core.persistence.api.search.SearchCondVisitor;
 import org.apache.syncope.core.provisioning.api.data.GroupDataBinder;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReconciliationReportlet.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReconciliationReportlet.java
index 026cfbf..b3cd6b7 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReconciliationReportlet.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReconciliationReportlet.java
@@ -35,8 +35,6 @@
 import org.apache.syncope.common.lib.report.ReportletConf;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.core.persistence.api.dao.AnyDAO;
-import org.apache.syncope.core.persistence.api.search.SearchCondConverter;
-import org.apache.syncope.core.provisioning.api.utils.FormatUtils;
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
@@ -53,10 +51,12 @@
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
 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.persistence.api.search.SearchCondConverter;
 import org.apache.syncope.core.persistence.api.search.SearchCondVisitor;
 import org.apache.syncope.core.provisioning.api.Connector;
 import org.apache.syncope.core.provisioning.api.ConnectorManager;
 import org.apache.syncope.core.provisioning.api.MappingManager;
+import org.apache.syncope.core.provisioning.api.utils.FormatUtils;
 import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 import org.identityconnectors.framework.common.objects.Attribute;
 import org.identityconnectors.framework.common.objects.AttributeBuilder;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReportJob.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReportJob.java
index 7be8405..eb7bf91 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReportJob.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/ReportJob.java
@@ -20,16 +20,16 @@
 
 import java.util.Optional;
 import org.apache.syncope.core.provisioning.api.job.JobDelegate;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
-import org.apache.syncope.core.provisioning.java.job.AbstractInterruptableJob;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.apache.syncope.core.provisioning.api.job.JobManager;
 import org.apache.syncope.core.provisioning.api.job.report.ReportJobDelegate;
+import org.apache.syncope.core.provisioning.java.job.AbstractInterruptableJob;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.spring.security.SecurityProperties;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * Quartz job for executing a given report.
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/StaticReportlet.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/StaticReportlet.java
index 0047f07..f6d6f66 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/StaticReportlet.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/StaticReportlet.java
@@ -19,9 +19,9 @@
 package org.apache.syncope.core.provisioning.java.job.report;
 
 import java.util.concurrent.atomic.AtomicReference;
-import org.apache.syncope.core.persistence.api.dao.ReportletConfClass;
 import org.apache.syncope.common.lib.report.ReportletConf;
 import org.apache.syncope.common.lib.report.StaticReportletConf;
+import org.apache.syncope.core.persistence.api.dao.ReportletConfClass;
 import org.apache.syncope.core.provisioning.api.utils.FormatUtils;
 import org.springframework.util.StringUtils;
 import org.xml.sax.ContentHandler;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/UserReportlet.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/UserReportlet.java
index e4f24b5..018aca3 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/UserReportlet.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/report/UserReportlet.java
@@ -23,31 +23,31 @@
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicReference;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.report.ReportletConf;
 import org.apache.syncope.common.lib.report.UserReportletConf;
 import org.apache.syncope.common.lib.report.UserReportletConf.Feature;
 import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.to.MembershipTO;
 import org.apache.syncope.common.lib.to.RelationshipTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.core.persistence.api.dao.AnyDAO;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.apache.syncope.core.persistence.api.search.SearchCondConverter;
-import org.apache.syncope.core.provisioning.api.utils.FormatUtils;
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.dao.ReportletConfClass;
+import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.user.UMembership;
 import org.apache.syncope.core.persistence.api.entity.user.URelationship;
+import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.persistence.api.search.SearchCondConverter;
 import org.apache.syncope.core.persistence.api.search.SearchCondVisitor;
 import org.apache.syncope.core.provisioning.api.data.AnyObjectDataBinder;
 import org.apache.syncope.core.provisioning.api.data.GroupDataBinder;
 import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
+import org.apache.syncope.core.provisioning.api.utils.FormatUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.SAXException;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/DefaultNotificationManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/DefaultNotificationManager.java
index bcc7b44..5705deb 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/DefaultNotificationManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/notification/DefaultNotificationManager.java
@@ -66,15 +66,15 @@
 import org.apache.syncope.core.persistence.api.search.SearchCondVisitor;
 import org.apache.syncope.core.provisioning.api.DerAttrHandler;
 import org.apache.syncope.core.provisioning.api.IntAttrName;
+import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
 import org.apache.syncope.core.provisioning.api.VirAttrHandler;
 import org.apache.syncope.core.provisioning.api.data.AnyObjectDataBinder;
 import org.apache.syncope.core.provisioning.api.data.GroupDataBinder;
 import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
 import org.apache.syncope.core.provisioning.api.event.AfterHandlingEvent;
+import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
 import org.apache.syncope.core.provisioning.api.notification.NotificationManager;
 import org.apache.syncope.core.provisioning.api.notification.RecipientsProvider;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
-import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
 import org.apache.syncope.core.spring.ImplementationManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
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 31e95b8..eb22d2d 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
@@ -27,9 +27,9 @@
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
-import java.util.stream.Collectors;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.Function;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.types.AuditElements;
@@ -37,34 +37,34 @@
 import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.common.lib.types.TraceLevel;
+import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
+import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.TaskDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.persistence.api.entity.EntityFactory;
-import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
-import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
-import org.apache.syncope.core.provisioning.api.Connector;
-import org.apache.syncope.core.provisioning.api.TimeoutException;
-import org.apache.syncope.core.provisioning.api.propagation.PropagationActions;
-import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter;
-import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
-import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils;
-import org.apache.syncope.core.provisioning.api.utils.ExceptionUtils2;
-import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
-import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
+import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.resource.OrgUnit;
 import org.apache.syncope.core.persistence.api.entity.resource.OrgUnitItem;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
+import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
+import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
 import org.apache.syncope.core.persistence.api.entity.task.TaskUtilsFactory;
 import org.apache.syncope.core.provisioning.api.AuditManager;
+import org.apache.syncope.core.provisioning.api.Connector;
 import org.apache.syncope.core.provisioning.api.ConnectorManager;
+import org.apache.syncope.core.provisioning.api.TimeoutException;
 import org.apache.syncope.core.provisioning.api.data.TaskDataBinder;
 import org.apache.syncope.core.provisioning.api.notification.NotificationManager;
+import org.apache.syncope.core.provisioning.api.propagation.PropagationActions;
+import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter;
+import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
+import org.apache.syncope.core.provisioning.api.utils.ExceptionUtils2;
 import org.apache.syncope.core.provisioning.java.pushpull.OutboundMatcher;
+import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils;
 import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 import org.apache.syncope.core.spring.ImplementationManager;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationManager.java
index 56e0487..a03fa4f 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationManager.java
@@ -51,9 +51,9 @@
 import org.apache.syncope.core.provisioning.api.DerAttrHandler;
 import org.apache.syncope.core.provisioning.api.MappingManager;
 import org.apache.syncope.core.provisioning.api.PropagationByResource;
-import org.apache.syncope.core.provisioning.api.propagation.PropagationManager;
 import org.apache.syncope.core.provisioning.api.UserWorkflowResult;
 import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
+import org.apache.syncope.core.provisioning.api.propagation.PropagationManager;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationTaskCallable.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationTaskCallable.java
index 3418a7c..5310d7e 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationTaskCallable.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/DefaultPropagationTaskCallable.java
@@ -20,12 +20,12 @@
 
 import java.util.Collection;
 import java.util.stream.Collectors;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskCallable;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
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 1a4e5c4..2b0c1bf 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
@@ -28,16 +28,16 @@
 import org.apache.commons.jexl3.MapContext;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.persistence.api.entity.group.Group;
-import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
-import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
+import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
+import org.apache.syncope.core.persistence.api.entity.task.PropagationTask;
+import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.DerAttrHandler;
+import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationActions;
 import org.identityconnectors.framework.common.objects.Attribute;
 import org.identityconnectors.framework.common.objects.AttributeBuilder;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java
index 76fc6e7..36a263f 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/propagation/PriorityPropagationTaskExecutor.java
@@ -36,7 +36,6 @@
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.Exec;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
 import org.apache.syncope.core.persistence.api.entity.task.TaskUtilsFactory;
 import org.apache.syncope.core.provisioning.api.AuditManager;
@@ -49,6 +48,7 @@
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
 import org.apache.syncope.core.provisioning.java.pushpull.OutboundMatcher;
 import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.springframework.beans.factory.support.AbstractBeanDefinition;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractProvisioningJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractProvisioningJobDelegate.java
index 77de9bd..9d247ac 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractProvisioningJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractProvisioningJobDelegate.java
@@ -24,6 +24,7 @@
 import java.util.List;
 import java.util.Objects;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.TraceLevel;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
@@ -35,7 +36,6 @@
 import org.apache.syncope.core.persistence.api.entity.task.ProvisioningTask;
 import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
 import org.apache.syncope.core.provisioning.api.Connector;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.core.provisioning.api.ConnectorManager;
 import org.apache.syncope.core.provisioning.java.job.AbstractSchedTaskJobDelegate;
 import org.apache.syncope.core.provisioning.java.job.TaskJob;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java
index 81284f8..3365492 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractPullResultHandler.java
@@ -30,43 +30,43 @@
 import org.apache.syncope.common.lib.request.AnyUR;
 import org.apache.syncope.common.lib.request.StringPatchItem;
 import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.AuditElements;
 import org.apache.syncope.common.lib.types.AuditElements.Result;
 import org.apache.syncope.common.lib.types.MatchType;
 import org.apache.syncope.common.lib.types.MatchingRule;
 import org.apache.syncope.common.lib.types.PatchOperation;
-import org.apache.syncope.core.persistence.api.entity.AnyType;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.common.lib.types.PullMode;
 import org.apache.syncope.common.lib.types.ResourceOperation;
+import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.lib.types.UnmatchingRule;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.core.persistence.api.dao.PullMatch;
 import org.apache.syncope.core.persistence.api.dao.RemediationDAO;
+import org.apache.syncope.core.persistence.api.dao.TaskDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.provisioning.api.propagation.PropagationException;
-import org.apache.syncope.core.spring.security.DelegatedAdministrationException;
 import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
+import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.Remediation;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.persistence.api.entity.task.PullTask;
 import org.apache.syncope.core.provisioning.api.AuditManager;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.provisioning.api.ProvisioningManager;
 import org.apache.syncope.core.provisioning.api.cache.VirAttrCache;
+import org.apache.syncope.core.provisioning.api.cache.VirAttrCacheKey;
 import org.apache.syncope.core.provisioning.api.cache.VirAttrCacheValue;
 import org.apache.syncope.core.provisioning.api.notification.NotificationManager;
+import org.apache.syncope.core.provisioning.api.propagation.PropagationException;
 import org.apache.syncope.core.provisioning.api.pushpull.IgnoreProvisionException;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
-import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
-import org.apache.syncope.core.persistence.api.dao.PullMatch;
-import org.apache.syncope.core.persistence.api.dao.TaskDAO;
-import org.apache.syncope.core.provisioning.api.cache.VirAttrCacheKey;
 import org.apache.syncope.core.provisioning.api.pushpull.SyncopePullExecutor;
 import org.apache.syncope.core.provisioning.api.pushpull.SyncopePullResultHandler;
 import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils;
+import org.apache.syncope.core.spring.security.DelegatedAdministrationException;
 import org.identityconnectors.framework.common.objects.Attribute;
 import org.identityconnectors.framework.common.objects.SyncDelta;
 import org.identityconnectors.framework.common.objects.SyncDeltaType;
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 2f9445f..69cb22c 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
@@ -31,28 +31,28 @@
 import org.apache.syncope.common.lib.request.AnyUR;
 import org.apache.syncope.common.lib.request.StringPatchItem;
 import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.types.AuditElements;
 import org.apache.syncope.common.lib.types.AuditElements.Result;
+import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.syncope.common.lib.types.MatchingRule;
 import org.apache.syncope.common.lib.types.PatchOperation;
-import org.apache.syncope.common.lib.types.ExecStatus;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.common.lib.types.UnmatchingRule;
-import org.apache.syncope.core.persistence.api.entity.task.PushTask;
-import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
-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.Entity;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
+import org.apache.syncope.core.persistence.api.entity.task.PushTask;
+import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.AuditManager;
 import org.apache.syncope.core.provisioning.api.MappingManager;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.provisioning.api.event.AfterHandlingEvent;
 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.propagation.PropagationTaskInfo;
 import org.apache.syncope.core.provisioning.api.pushpull.IgnoreProvisionException;
+import org.apache.syncope.core.provisioning.api.pushpull.PushActions;
 import org.apache.syncope.core.provisioning.api.pushpull.SyncopePushResultHandler;
 import org.apache.syncope.core.provisioning.java.job.AfterHandlingJob;
 import org.apache.syncope.core.provisioning.java.propagation.DefaultPropagationReporter;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractSyncopeResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractSyncopeResultHandler.java
index e72983c..424e46d 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractSyncopeResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/AbstractSyncopeResultHandler.java
@@ -24,15 +24,15 @@
 import org.apache.syncope.core.persistence.api.entity.AnyUtils;
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
 import org.apache.syncope.core.persistence.api.entity.task.ProvisioningTask;
+import org.apache.syncope.core.provisioning.api.WorkflowResult;
+import org.apache.syncope.core.provisioning.api.data.AnyObjectDataBinder;
 import org.apache.syncope.core.provisioning.api.data.GroupDataBinder;
 import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationManager;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningActions;
 import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningProfile;
 import org.apache.syncope.core.provisioning.api.pushpull.SyncopeResultHandler;
-import org.apache.syncope.core.provisioning.api.WorkflowResult;
-import org.apache.syncope.core.provisioning.api.data.AnyObjectDataBinder;
-import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningActions;
 import org.apache.syncope.core.spring.security.SecurityProperties;
 import org.apache.syncope.core.workflow.api.AnyObjectWorkflowAdapter;
 import org.apache.syncope.core.workflow.api.GroupWorkflowAdapter;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActions.java
index 66b19a2..8d21a40 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActions.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.core.provisioning.java.pushpull;
 
 import java.util.Optional;
-
 import org.apache.syncope.common.lib.request.AbstractPatchItem;
 import org.apache.syncope.common.lib.request.AnyCR;
 import org.apache.syncope.common.lib.request.AnyUR;
@@ -27,6 +26,7 @@
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.EntityTO;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.CipherAlgorithm;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
@@ -34,7 +34,6 @@
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.Connector;
 import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningProfile;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
 import org.identityconnectors.framework.common.objects.SyncDelta;
 import org.quartz.JobExecutionException;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultAnyObjectPullResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultAnyObjectPullResultHandler.java
index ebb4e18..9de0422 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultAnyObjectPullResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultAnyObjectPullResultHandler.java
@@ -21,15 +21,15 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.request.AnyCR;
 import org.apache.syncope.common.lib.request.AnyObjectCR;
 import org.apache.syncope.common.lib.request.AnyObjectUR;
 import org.apache.syncope.common.lib.request.AnyUR;
+import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.PropagationStatus;
-import org.apache.syncope.common.lib.to.AnyObjectTO;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.AnyUtils;
@@ -37,9 +37,8 @@
 import org.apache.syncope.core.provisioning.api.AnyObjectProvisioningManager;
 import org.apache.syncope.core.provisioning.api.ProvisioningManager;
 import org.apache.syncope.core.provisioning.api.WorkflowResult;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
-import org.identityconnectors.framework.common.objects.SyncDelta;
 import org.apache.syncope.core.provisioning.api.pushpull.AnyObjectPullResultHandler;
+import org.identityconnectors.framework.common.objects.SyncDelta;
 import org.springframework.beans.factory.annotation.Autowired;
 
 public class DefaultAnyObjectPullResultHandler extends AbstractPullResultHandler implements AnyObjectPullResultHandler {
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultGroupPullResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultGroupPullResultHandler.java
index f8e54d5..ecda30e 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultGroupPullResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultGroupPullResultHandler.java
@@ -22,7 +22,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.request.AnyCR;
 import org.apache.syncope.common.lib.request.AnyUR;
@@ -30,8 +29,9 @@
 import org.apache.syncope.common.lib.request.GroupCR;
 import org.apache.syncope.common.lib.request.GroupUR;
 import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.to.PropagationStatus;
 import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.lib.to.PropagationStatus;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.PatchOperation;
 import org.apache.syncope.core.persistence.api.entity.Any;
@@ -40,9 +40,8 @@
 import org.apache.syncope.core.provisioning.api.GroupProvisioningManager;
 import org.apache.syncope.core.provisioning.api.ProvisioningManager;
 import org.apache.syncope.core.provisioning.api.WorkflowResult;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
-import org.identityconnectors.framework.common.objects.SyncDelta;
 import org.apache.syncope.core.provisioning.api.pushpull.GroupPullResultHandler;
+import org.identityconnectors.framework.common.objects.SyncDelta;
 import org.springframework.beans.factory.annotation.Autowired;
 
 public class DefaultGroupPullResultHandler extends AbstractPullResultHandler implements GroupPullResultHandler {
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultGroupPushResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultGroupPushResultHandler.java
index b5420fd..bf21513 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultGroupPushResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultGroupPushResultHandler.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.core.provisioning.java.pushpull;
 
-import org.apache.syncope.common.lib.request.GroupUR;
 import org.apache.syncope.common.lib.request.AnyUR;
+import org.apache.syncope.common.lib.request.GroupUR;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.core.persistence.api.entity.Any;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPullResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPullResultHandler.java
index c2d0931..baa72ab 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPullResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPullResultHandler.java
@@ -24,6 +24,7 @@
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.AuditElements;
@@ -44,7 +45,6 @@
 import org.apache.syncope.core.provisioning.api.propagation.PropagationException;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
 import org.apache.syncope.core.provisioning.api.pushpull.IgnoreProvisionException;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
 import org.apache.syncope.core.provisioning.api.pushpull.RealmPullResultHandler;
 import org.apache.syncope.core.provisioning.api.pushpull.SyncopePullExecutor;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPushResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPushResultHandler.java
index 6195b30..d9461dd 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPushResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultRealmPushResultHandler.java
@@ -26,12 +26,12 @@
 import java.util.stream.Stream;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.types.AuditElements;
 import org.apache.syncope.common.lib.types.AuditElements.Result;
-import org.apache.syncope.common.lib.types.MatchingRule;
 import org.apache.syncope.common.lib.types.ExecStatus;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
+import org.apache.syncope.common.lib.types.MatchingRule;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.common.lib.types.UnmatchingRule;
 import org.apache.syncope.core.persistence.api.entity.Realm;
@@ -40,12 +40,12 @@
 import org.apache.syncope.core.persistence.api.entity.resource.OrgUnitItem;
 import org.apache.syncope.core.persistence.api.entity.task.PushTask;
 import org.apache.syncope.core.provisioning.api.MappingManager;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.provisioning.api.TimeoutException;
 import org.apache.syncope.core.provisioning.api.event.AfterHandlingEvent;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
 import org.apache.syncope.core.provisioning.api.pushpull.IgnoreProvisionException;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.core.provisioning.api.pushpull.PushActions;
 import org.apache.syncope.core.provisioning.api.pushpull.RealmPushResultHandler;
 import org.apache.syncope.core.provisioning.java.job.AfterHandlingJob;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultUserPullResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultUserPullResultHandler.java
index 215c797..eccc428 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultUserPullResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultUserPullResultHandler.java
@@ -29,12 +29,13 @@
 import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.request.AnyCR;
 import org.apache.syncope.common.lib.request.AnyUR;
+import org.apache.syncope.common.lib.request.LinkedAccountUR;
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.request.UserUR;
-import org.apache.syncope.common.lib.request.LinkedAccountUR;
 import org.apache.syncope.common.lib.to.AnyTO;
 import org.apache.syncope.common.lib.to.LinkedAccountTO;
 import org.apache.syncope.common.lib.to.PropagationStatus;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.AuditElements;
@@ -55,11 +56,10 @@
 import org.apache.syncope.core.provisioning.api.UserProvisioningManager;
 import org.apache.syncope.core.provisioning.api.WorkflowResult;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationException;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
-import org.identityconnectors.framework.common.objects.SyncDelta;
 import org.apache.syncope.core.provisioning.api.pushpull.UserPullResultHandler;
 import org.identityconnectors.framework.common.objects.AttributeUtil;
+import org.identityconnectors.framework.common.objects.SyncDelta;
 import org.identityconnectors.framework.common.objects.SyncDeltaType;
 import org.quartz.JobExecutionException;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultUserPushResultHandler.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultUserPushResultHandler.java
index 948892f..0527147 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultUserPushResultHandler.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/DefaultUserPushResultHandler.java
@@ -28,10 +28,10 @@
 import org.apache.syncope.common.lib.request.AnyUR;
 import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.MatchType;
 import org.apache.syncope.common.lib.types.MatchingRule;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.common.lib.types.UnmatchingRule;
 import org.apache.syncope.core.persistence.api.entity.Any;
@@ -40,12 +40,12 @@
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.persistence.api.entity.user.LinkedAccount;
 import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.provisioning.api.UserWorkflowResult;
 import org.apache.syncope.core.provisioning.api.WorkflowResult;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
 import org.apache.syncope.core.provisioning.api.pushpull.IgnoreProvisionException;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.core.provisioning.api.pushpull.PushActions;
 import org.apache.syncope.core.provisioning.api.pushpull.UserPushResultHandler;
 import org.apache.syncope.core.provisioning.java.propagation.DefaultPropagationReporter;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/InboundMatcher.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/InboundMatcher.java
index 19026a2..05de65f 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/InboundMatcher.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/InboundMatcher.java
@@ -31,33 +31,33 @@
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.PullCorrelationRule;
-import org.apache.syncope.core.persistence.api.dao.RealmDAO;
-import org.apache.syncope.core.persistence.api.entity.AnyType;
-import org.apache.syncope.core.persistence.api.entity.Realm;
-import org.apache.syncope.core.persistence.api.entity.policy.PullCorrelationRuleEntity;
-import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
-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.provisioning.api.Connector;
-import org.apache.syncope.core.provisioning.api.IntAttrName;
-import org.apache.syncope.core.provisioning.api.data.ItemTransformer;
 import org.apache.syncope.core.persistence.api.dao.PullMatch;
+import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
 import org.apache.syncope.core.persistence.api.dao.search.AnyCond;
 import org.apache.syncope.core.persistence.api.dao.search.AttrCond;
 import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.entity.Any;
+import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.AnyUtils;
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
 import org.apache.syncope.core.persistence.api.entity.DerSchema;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
+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.policy.PullCorrelationRuleEntity;
+import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.resource.Item;
-import org.apache.syncope.core.provisioning.api.VirAttrHandler;
+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.provisioning.api.Connector;
+import org.apache.syncope.core.provisioning.api.IntAttrName;
 import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
+import org.apache.syncope.core.provisioning.api.VirAttrHandler;
+import org.apache.syncope.core.provisioning.api.data.ItemTransformer;
 import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 import org.apache.syncope.core.spring.ImplementationManager;
 import org.identityconnectors.framework.common.objects.Attribute;
@@ -65,12 +65,12 @@
 import org.identityconnectors.framework.common.objects.ConnectorObject;
 import org.identityconnectors.framework.common.objects.Name;
 import org.identityconnectors.framework.common.objects.SearchResult;
-import org.identityconnectors.framework.common.objects.filter.FilterBuilder;
 import org.identityconnectors.framework.common.objects.SyncDelta;
 import org.identityconnectors.framework.common.objects.SyncDeltaBuilder;
 import org.identityconnectors.framework.common.objects.SyncDeltaType;
 import org.identityconnectors.framework.common.objects.SyncToken;
 import org.identityconnectors.framework.common.objects.Uid;
+import org.identityconnectors.framework.common.objects.filter.FilterBuilder;
 import org.identityconnectors.framework.spi.SearchResultsHandler;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActions.java
index d29fd5f..04beb64 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActions.java
@@ -27,14 +27,15 @@
 import org.apache.syncope.common.lib.request.AnyUR;
 import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.GroupTO;
-import org.apache.syncope.core.persistence.api.dao.GroupDAO;
-import org.apache.syncope.core.provisioning.api.Connector;
-import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningProfile;
 import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.PullMatch;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
+import org.apache.syncope.core.provisioning.api.Connector;
 import org.apache.syncope.core.provisioning.api.job.JobManager;
+import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningProfile;
+import org.apache.syncope.core.provisioning.java.job.SetUMembershipsJob;
 import org.identityconnectors.framework.common.objects.Attribute;
 import org.identityconnectors.framework.common.objects.ConnectorObject;
 import org.identityconnectors.framework.common.objects.ObjectClass;
@@ -44,7 +45,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.apache.syncope.core.provisioning.java.job.SetUMembershipsJob;
 import org.springframework.transaction.annotation.Transactional;
 
 /**
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java
index 1796334..8c7b443 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActions.java
@@ -24,14 +24,14 @@
 import javax.xml.bind.DatatypeConverter;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.to.EntityTO;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.CipherAlgorithm;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
+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.pushpull.ProvisioningProfile;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
-import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
 import org.identityconnectors.common.security.GuardedString;
 import org.identityconnectors.common.security.SecurityUtil;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java
index b67aa53..6bd4160 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PullJobDelegate.java
@@ -28,10 +28,9 @@
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.common.lib.types.ConflictResolutionAction;
 import org.apache.commons.lang3.tuple.MutablePair;
+import org.apache.syncope.common.lib.types.ConflictResolutionAction;
 import org.apache.syncope.common.lib.types.ResourceOperation;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.PullMatch;
@@ -43,29 +42,30 @@
 import org.apache.syncope.core.persistence.api.entity.resource.Item;
 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.provisioning.api.Connector;
-import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningProfile;
-import org.quartz.JobExecutionException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.support.AbstractBeanDefinition;
 import org.apache.syncope.core.persistence.api.entity.task.PullTask;
 import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.provisioning.api.Connector;
 import org.apache.syncope.core.provisioning.api.ProvisionSorter;
 import org.apache.syncope.core.provisioning.api.pushpull.AnyObjectPullResultHandler;
-import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
 import org.apache.syncope.core.provisioning.api.pushpull.GroupPullResultHandler;
+import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningProfile;
+import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
 import org.apache.syncope.core.provisioning.api.pushpull.RealmPullResultHandler;
+import org.apache.syncope.core.provisioning.api.pushpull.ReconFilterBuilder;
 import org.apache.syncope.core.provisioning.api.pushpull.SyncopePullExecutor;
 import org.apache.syncope.core.provisioning.api.pushpull.SyncopePullResultHandler;
 import org.apache.syncope.core.provisioning.api.pushpull.UserPullResultHandler;
 import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
+import org.apache.syncope.core.spring.ImplementationManager;
 import org.identityconnectors.framework.common.objects.Name;
 import org.identityconnectors.framework.common.objects.ObjectClass;
 import org.identityconnectors.framework.common.objects.OperationOptions;
 import org.identityconnectors.framework.common.objects.SyncToken;
-import org.apache.syncope.core.provisioning.api.pushpull.ReconFilterBuilder;
-import org.apache.syncope.core.spring.ImplementationManager;
 import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.support.AbstractBeanDefinition;
 
 public class PullJobDelegate extends AbstractProvisioningJobDelegate<PullTask> implements SyncopePullExecutor {
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PushJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PushJobDelegate.java
index 333c482..fc827f1 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PushJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/PushJobDelegate.java
@@ -29,8 +29,6 @@
 import org.apache.commons.lang3.tuple.MutablePair;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.types.ConflictResolutionAction;
-import org.apache.syncope.core.persistence.api.search.SearchCondConverter;
-import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.apache.syncope.core.persistence.api.dao.AnyDAO;
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
@@ -45,6 +43,7 @@
 import org.apache.syncope.core.persistence.api.entity.task.PushTask;
 import org.apache.syncope.core.persistence.api.entity.task.PushTaskAnyFilter;
 import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.persistence.api.search.SearchCondConverter;
 import org.apache.syncope.core.persistence.api.search.SearchCondVisitor;
 import org.apache.syncope.core.provisioning.api.Connector;
 import org.apache.syncope.core.provisioning.api.ProvisionSorter;
@@ -55,6 +54,7 @@
 import org.apache.syncope.core.provisioning.api.pushpull.RealmPushResultHandler;
 import org.apache.syncope.core.provisioning.api.pushpull.SyncopePushResultHandler;
 import org.apache.syncope.core.provisioning.api.pushpull.UserPushResultHandler;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.apache.syncope.core.spring.ImplementationManager;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePullJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePullJobDelegate.java
index 3e5adfe..12f8154 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePullJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePullJobDelegate.java
@@ -33,8 +33,8 @@
 import org.apache.syncope.common.lib.types.UnmatchingRule;
 import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
-import org.apache.syncope.core.persistence.api.entity.Implementation;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
+import org.apache.syncope.core.persistence.api.entity.Implementation;
 import org.apache.syncope.core.persistence.api.entity.VirSchema;
 import org.apache.syncope.core.persistence.api.entity.resource.Item;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePushJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePushJobDelegate.java
index 699afce..448110d 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePushJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/SinglePushJobDelegate.java
@@ -20,6 +20,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.common.lib.types.ConflictResolutionAction;
 import org.apache.syncope.common.lib.types.IdMImplementationType;
@@ -33,7 +34,6 @@
 import org.apache.syncope.core.persistence.api.entity.user.LinkedAccount;
 import org.apache.syncope.core.provisioning.api.Connector;
 import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningProfile;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.core.provisioning.api.pushpull.PushActions;
 import org.apache.syncope.core.provisioning.api.pushpull.SyncopePushResultHandler;
 import org.apache.syncope.core.provisioning.api.pushpull.SyncopeSinglePushExecutor;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPullJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPullJobDelegate.java
index 67004b1..387951d 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPullJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPullJobDelegate.java
@@ -23,8 +23,10 @@
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Stream;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.to.PullTaskTO;
 import org.apache.syncope.common.lib.types.ConflictResolutionAction;
+import org.apache.syncope.common.lib.types.IdMImplementationType;
 import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.common.lib.types.PullMode;
 import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
@@ -43,21 +45,19 @@
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.persistence.api.entity.task.PullTask;
+import org.apache.syncope.core.provisioning.api.Connector;
 import org.apache.syncope.core.provisioning.api.pushpull.GroupPullResultHandler;
 import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningProfile;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
-import org.apache.syncope.common.lib.types.IdMImplementationType;
-import org.apache.syncope.core.provisioning.api.Connector;
 import org.apache.syncope.core.provisioning.api.pushpull.PullActions;
 import org.apache.syncope.core.provisioning.api.pushpull.SyncopePullResultHandler;
-import org.apache.syncope.core.spring.ImplementationManager;
-import org.quartz.JobExecutionException;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.apache.syncope.core.provisioning.api.pushpull.stream.SyncopeStreamPullExecutor;
 import org.apache.syncope.core.provisioning.java.pushpull.PullJobDelegate;
 import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
+import org.apache.syncope.core.spring.ImplementationManager;
 import org.apache.syncope.core.spring.security.SecureRandomUtils;
 import org.identityconnectors.framework.common.objects.ObjectClass;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
 
 public class StreamPullJobDelegate extends PullJobDelegate implements SyncopeStreamPullExecutor {
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPushJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPushJobDelegate.java
index 4973b2a..ad6d7bd 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPushJobDelegate.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPushJobDelegate.java
@@ -40,8 +40,8 @@
 import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningProfile;
 import org.apache.syncope.core.provisioning.api.pushpull.PushActions;
 import org.apache.syncope.core.provisioning.api.pushpull.SyncopePushResultHandler;
-import org.apache.syncope.core.provisioning.api.pushpull.stream.SyncopeStreamPushExecutor;
 import org.apache.syncope.core.provisioning.api.pushpull.UserPushResultHandler;
+import org.apache.syncope.core.provisioning.api.pushpull.stream.SyncopeStreamPushExecutor;
 import org.apache.syncope.core.provisioning.java.pushpull.PushJobDelegate;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.apache.syncope.core.spring.ImplementationManager;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
index 0582f89..9739ece 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/ConnObjectUtils.java
@@ -27,21 +27,20 @@
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.AnyOperations;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.request.AnyCR;
 import org.apache.syncope.common.lib.request.AnyUR;
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
+import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
 import org.apache.syncope.core.persistence.api.entity.Realm;
@@ -49,6 +48,7 @@
 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.task.PullTask;
+import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.MappingManager;
 import org.apache.syncope.core.spring.security.Encryptor;
 import org.apache.syncope.core.spring.security.PasswordGenerator;
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/MappingUtils.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/MappingUtils.java
index a08c998..c0d2c5d 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/MappingUtils.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/MappingUtils.java
@@ -31,8 +31,11 @@
 import org.apache.syncope.core.persistence.api.entity.resource.Mapping;
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
+import org.apache.syncope.core.provisioning.api.data.ItemTransformer;
+import org.apache.syncope.core.provisioning.api.data.JEXLItemTransformer;
 import org.apache.syncope.core.provisioning.java.data.JEXLItemTransformerImpl;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
+import org.apache.syncope.core.spring.ImplementationManager;
 import org.identityconnectors.framework.common.objects.Name;
 import org.identityconnectors.framework.common.objects.OperationOptions;
 import org.identityconnectors.framework.common.objects.OperationOptionsBuilder;
@@ -41,9 +44,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.support.AbstractBeanDefinition;
-import org.apache.syncope.core.provisioning.api.data.ItemTransformer;
-import org.apache.syncope.core.provisioning.api.data.JEXLItemTransformer;
-import org.apache.syncope.core.spring.ImplementationManager;
 
 public final class MappingUtils {
 
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/TemplateUtils.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/TemplateUtils.java
index 465c028..f118fec 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/TemplateUtils.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/utils/TemplateUtils.java
@@ -22,14 +22,14 @@
 import java.util.Optional;
 import org.apache.commons.jexl3.MapContext;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.EntityTOUtils;
+import org.apache.syncope.common.lib.RealmMember;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.request.GroupCR;
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.Attr;
-import org.apache.syncope.common.lib.RealmMember;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.GroupableRelatableTO;
 import org.apache.syncope.common.lib.to.UserTO;
diff --git a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/DefaultMappingManagerTest.java b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/DefaultMappingManagerTest.java
index 920b4b1..5fa5ed2 100644
--- a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/DefaultMappingManagerTest.java
+++ b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/DefaultMappingManagerTest.java
@@ -48,11 +48,11 @@
 import org.identityconnectors.common.security.SecurityUtil;
 import org.identityconnectors.framework.common.objects.Attribute;
 import org.identityconnectors.framework.common.objects.AttributeUtil;
+import org.identityconnectors.framework.common.objects.OperationalAttributes;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.util.ReflectionTestUtils;
 import org.springframework.transaction.annotation.Transactional;
-import org.identityconnectors.framework.common.objects.OperationalAttributes;
 
 @Transactional("Master")
 public class DefaultMappingManagerTest extends AbstractTest {
diff --git a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderTest.java b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderTest.java
index 68d381b..a28fdb0 100644
--- a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderTest.java
+++ b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/data/ResourceDataBinderTest.java
@@ -31,8 +31,8 @@
 import org.apache.syncope.common.lib.to.ProvisionTO;
 import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.common.lib.types.IdMEntitlement;
+import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
diff --git a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActionsTest.java b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActionsTest.java
index cd5372e..0f326bd 100644
--- a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActionsTest.java
+++ b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/DBPasswordPullActionsTest.java
@@ -143,7 +143,7 @@
     }
 
     @Test
-    public void after(@Mock User user) throws JobExecutionException {
+    public void after(final @Mock User user) throws JobExecutionException {
         when(userDAO.find(user.getKey())).thenReturn(user);
 
         dBPasswordPullActions.after(profile, syncDelta, userTO, result);
diff --git a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActionsTest.java b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActionsTest.java
index 68598e8..f16a868 100644
--- a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActionsTest.java
+++ b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPMembershipPullActionsTest.java
@@ -39,6 +39,7 @@
 import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.ConnConfPropSchema;
 import org.apache.syncope.common.lib.types.ConnConfProperty;
@@ -48,15 +49,14 @@
 import org.apache.syncope.core.persistence.api.dao.PullMatch;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.ConnInstance;
+import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
+import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.persistence.api.entity.task.ProvisioningTask;
 import org.apache.syncope.core.persistence.api.entity.user.UMembership;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.Connector;
 import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningProfile;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
-import org.apache.syncope.core.persistence.api.entity.EntityFactory;
-import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.provisioning.java.AbstractTest;
 import org.identityconnectors.framework.common.objects.Attribute;
 import org.identityconnectors.framework.common.objects.ConnectorObject;
@@ -188,7 +188,7 @@
     }
 
     @Test
-    public void afterWithEmptyAttributes(@Mock Attribute attribute) throws JobExecutionException {
+    public void afterWithEmptyAttributes(final @Mock Attribute attribute) throws JobExecutionException {
         entity = new GroupTO();
 
         when(connectorObj.getAttributeByName(anyString())).thenReturn(attribute);
@@ -220,9 +220,9 @@
 
     @Test
     public void afterAll(
-            @Mock Map<String, Object> jobMap,
-            @Mock SchedulerFactoryBean schedulerFactoryBean,
-            @Mock Scheduler scheduler) throws JobExecutionException, SchedulerException {
+            final @Mock Map<String, Object> jobMap,
+            final @Mock SchedulerFactoryBean schedulerFactoryBean,
+            final @Mock Scheduler scheduler) throws JobExecutionException, SchedulerException {
 
         ReflectionTestUtils.setField(ldapMembershipPullActions, "scheduler", schedulerFactoryBean);
         when(schedulerFactoryBean.getScheduler()).thenReturn(scheduler);
diff --git a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActionsTest.java b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActionsTest.java
index 736b678..60c29d4 100644
--- a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActionsTest.java
+++ b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/LDAPPasswordPullActionsTest.java
@@ -21,8 +21,8 @@
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.when;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -75,7 +75,7 @@
     }
 
     @Test
-    public void after(@Mock User user) throws JobExecutionException {
+    public void after(final @Mock User user) throws JobExecutionException {
         UserTO userTO = new UserTO();
         userTO.setKey(UUID.randomUUID().toString());
         when(userDAO.find(userTO.getKey())).thenReturn(user);
diff --git a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPullJobDelegateTest.java b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPullJobDelegateTest.java
index a47bb75..e0490fc 100644
--- a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPullJobDelegateTest.java
+++ b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/pushpull/stream/StreamPullJobDelegateTest.java
@@ -27,17 +27,17 @@
 import java.util.List;
 import java.util.stream.Collectors;
 import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.to.ProvisioningReport;
 import org.apache.syncope.common.lib.to.PullTaskTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ConflictResolutionAction;
 import org.apache.syncope.common.lib.types.MatchingRule;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.common.lib.types.UnmatchingRule;
+import org.apache.syncope.common.rest.api.beans.CSVPullSpec;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.apache.syncope.common.lib.to.ProvisioningReport;
-import org.apache.syncope.common.rest.api.beans.CSVPullSpec;
 import org.apache.syncope.core.provisioning.api.pushpull.stream.SyncopeStreamPullExecutor;
 import org.apache.syncope.core.provisioning.java.AbstractTest;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
diff --git a/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/keymaster/internal/SelfKeymasterInternalServiceOps.java b/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/keymaster/internal/SelfKeymasterInternalServiceOps.java
index b96444e..a6b76a8 100644
--- a/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/keymaster/internal/SelfKeymasterInternalServiceOps.java
+++ b/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/keymaster/internal/SelfKeymasterInternalServiceOps.java
@@ -21,8 +21,8 @@
 import java.util.List;
 import org.apache.syncope.common.keymaster.client.api.KeymasterException;
 import org.apache.syncope.common.keymaster.client.api.KeymasterProperties;
-import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.apache.syncope.common.keymaster.client.api.ServiceOps;
+import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.core.logic.NetworkServiceLogic;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
diff --git a/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/logic/NetworkServiceLogic.java b/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/logic/NetworkServiceLogic.java
index 09ff7e5..0391de8 100644
--- a/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/logic/NetworkServiceLogic.java
+++ b/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/logic/NetworkServiceLogic.java
@@ -24,12 +24,12 @@
 import org.apache.commons.lang3.RandomUtils;
 import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.apache.syncope.common.lib.to.EntityTO;
+import org.apache.syncope.core.persistence.api.dao.NetworkServiceDAO;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.core.persistence.api.entity.NetworkServiceEntity;
 import org.apache.syncope.core.persistence.api.entity.SelfKeymasterEntityFactory;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.dao.NetworkServiceDAO;
-import org.apache.syncope.core.persistence.api.entity.NetworkServiceEntity;
 
 public class NetworkServiceLogic extends AbstractTransactionalLogic<EntityTO> {
 
diff --git a/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPANetworkServiceDAO.java b/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPANetworkServiceDAO.java
index caa051a..babe9fe 100644
--- a/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPANetworkServiceDAO.java
+++ b/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPANetworkServiceDAO.java
@@ -21,10 +21,10 @@
 import java.util.List;
 import javax.persistence.TypedQuery;
 import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
-import org.apache.syncope.core.persistence.jpa.entity.JPANetworkService;
-import org.springframework.transaction.annotation.Transactional;
 import org.apache.syncope.core.persistence.api.dao.NetworkServiceDAO;
 import org.apache.syncope.core.persistence.api.entity.NetworkServiceEntity;
+import org.apache.syncope.core.persistence.jpa.entity.JPANetworkService;
+import org.springframework.transaction.annotation.Transactional;
 
 public class JPANetworkServiceDAO extends AbstractDAO<NetworkServiceEntity> implements NetworkServiceDAO {
 
diff --git a/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASelfKeymasterEntityFactory.java b/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASelfKeymasterEntityFactory.java
index 12e4fe0..0c85078 100644
--- a/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASelfKeymasterEntityFactory.java
+++ b/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASelfKeymasterEntityFactory.java
@@ -20,9 +20,9 @@
 
 import org.apache.syncope.core.persistence.api.entity.ConfParam;
 import org.apache.syncope.core.persistence.api.entity.DomainEntity;
+import org.apache.syncope.core.persistence.api.entity.NetworkServiceEntity;
 import org.apache.syncope.core.persistence.api.entity.SelfKeymasterEntityFactory;
 import org.apache.syncope.core.spring.security.SecureRandomUtils;
-import org.apache.syncope.core.persistence.api.entity.NetworkServiceEntity;
 
 public class JPASelfKeymasterEntityFactory implements SelfKeymasterEntityFactory {
 
diff --git a/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/starter/SelfKeymasterContext.java b/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/starter/SelfKeymasterContext.java
index fcdb84c..7bfabca 100644
--- a/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/starter/SelfKeymasterContext.java
+++ b/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/starter/SelfKeymasterContext.java
@@ -42,6 +42,7 @@
 import org.apache.syncope.core.keymaster.rest.cxf.service.ConfParamServiceImpl;
 import org.apache.syncope.core.keymaster.rest.cxf.service.DomainServiceImpl;
 import org.apache.syncope.core.keymaster.rest.cxf.service.NetworkServiceServiceImpl;
+import org.apache.syncope.core.keymaster.rest.security.SelfKeymasterUsernamePasswordAuthenticationProvider;
 import org.apache.syncope.core.logic.ConfParamLogic;
 import org.apache.syncope.core.logic.DomainLogic;
 import org.apache.syncope.core.logic.NetworkServiceLogic;
@@ -55,7 +56,6 @@
 import org.apache.syncope.core.persistence.jpa.entity.JPASelfKeymasterEntityFactory;
 import org.apache.syncope.core.provisioning.api.UserProvisioningManager;
 import org.apache.syncope.core.rest.cxf.RestServiceExceptionMapper;
-import org.apache.syncope.core.keymaster.rest.security.SelfKeymasterUsernamePasswordAuthenticationProvider;
 import org.apache.syncope.core.spring.security.AuthDataAccessor;
 import org.apache.syncope.core.spring.security.DefaultCredentialChecker;
 import org.apache.syncope.core.spring.security.SecurityProperties;
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/ApplicationContextProvider.java b/core/spring/src/main/java/org/apache/syncope/core/spring/ApplicationContextProvider.java
index c4c550c..6e5c388 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/ApplicationContextProvider.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/ApplicationContextProvider.java
@@ -18,13 +18,12 @@
  */
 package org.apache.syncope.core.spring;
 
+import java.util.Optional;
 import org.springframework.beans.factory.support.DefaultListableBeanFactory;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.context.ConfigurableApplicationContext;
 
-import java.util.Optional;
-
 public class ApplicationContextProvider implements ApplicationContextAware {
 
     private static ConfigurableApplicationContext CTX;
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/ImplementationManager.java b/core/spring/src/main/java/org/apache/syncope/core/spring/ImplementationManager.java
index 08b1b4b..7b69fee 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/ImplementationManager.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/ImplementationManager.java
@@ -18,11 +18,11 @@
  */
 package org.apache.syncope.core.spring;
 
+import groovy.lang.GroovyClassLoader;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
-import groovy.lang.GroovyClassLoader;
 import org.apache.syncope.common.lib.policy.AccountRuleConf;
 import org.apache.syncope.common.lib.policy.PasswordRuleConf;
 import org.apache.syncope.common.lib.policy.PullCorrelationRuleConf;
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java
index 484da7a..95de0ff 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java
@@ -42,9 +42,6 @@
 import org.apache.syncope.core.persistence.api.ImplementationLookup;
 import org.apache.syncope.core.persistence.api.dao.AccessTokenDAO;
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
-import org.apache.syncope.core.persistence.api.entity.AnyType;
-import org.apache.syncope.core.persistence.api.entity.resource.Provision;
-import org.apache.syncope.core.provisioning.api.utils.RealmUtils;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.DelegationDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
@@ -54,15 +51,18 @@
 import org.apache.syncope.core.persistence.api.dao.search.AttrCond;
 import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.entity.AccessToken;
+import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.Delegation;
 import org.apache.syncope.core.persistence.api.entity.DynRealm;
 import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.persistence.api.entity.Role;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
+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.AuditManager;
 import org.apache.syncope.core.provisioning.api.ConnectorManager;
 import org.apache.syncope.core.provisioning.api.MappingManager;
+import org.apache.syncope.core.provisioning.api.utils.RealmUtils;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.identityconnectors.framework.common.objects.Uid;
 import org.slf4j.Logger;
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/DelegatedAdministrationException.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/DelegatedAdministrationException.java
index e7ad93d..e2e044a 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/DelegatedAdministrationException.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/DelegatedAdministrationException.java
@@ -18,9 +18,8 @@
  */
 package org.apache.syncope.core.spring.security;
 
-import org.apache.syncope.common.lib.types.AnyTypeKind;
-
 import java.util.Optional;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
 
 public class DelegatedAdministrationException extends RuntimeException {
 
diff --git a/core/spring/src/test/java/org/apache/syncope/core/spring/ImplementationManagerTest.java b/core/spring/src/test/java/org/apache/syncope/core/spring/ImplementationManagerTest.java
index fa29231..7fe3fe9 100644
--- a/core/spring/src/test/java/org/apache/syncope/core/spring/ImplementationManagerTest.java
+++ b/core/spring/src/test/java/org/apache/syncope/core/spring/ImplementationManagerTest.java
@@ -21,11 +21,6 @@
 import static org.junit.jupiter.api.Assertions.assertTimeoutPreemptively;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf;
-import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
-import org.apache.syncope.core.spring.security.TestImplementation;
-import org.junit.jupiter.api.Test;
-import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
 import java.time.Duration;
 import java.util.Collections;
 import java.util.LinkedList;
@@ -33,6 +28,11 @@
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.stream.Collectors;
+import org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf;
+import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
+import org.apache.syncope.core.spring.security.TestImplementation;
+import org.junit.jupiter.api.Test;
+import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
 
 @SpringJUnitConfig(classes = { SpringTestConfiguration.class })
 public class ImplementationManagerTest {
diff --git a/core/spring/src/test/java/org/apache/syncope/core/spring/security/PasswordGeneratorTest.java b/core/spring/src/test/java/org/apache/syncope/core/spring/security/PasswordGeneratorTest.java
index fd96967..00abf27 100644
--- a/core/spring/src/test/java/org/apache/syncope/core/spring/security/PasswordGeneratorTest.java
+++ b/core/spring/src/test/java/org/apache/syncope/core/spring/security/PasswordGeneratorTest.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.core.spring.security;
 
-import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.List;
 import org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf;
diff --git a/core/spring/src/test/java/org/apache/syncope/core/spring/security/TestImplementation.java b/core/spring/src/test/java/org/apache/syncope/core/spring/security/TestImplementation.java
index 5b4db33..3a2bd79 100644
--- a/core/spring/src/test/java/org/apache/syncope/core/spring/security/TestImplementation.java
+++ b/core/spring/src/test/java/org/apache/syncope/core/spring/security/TestImplementation.java
@@ -44,7 +44,7 @@
     }
 
     @Override
-    public void setEngine(ImplementationEngine engine) {
+    public void setEngine(final ImplementationEngine engine) {
         // nothing to do
     }
 
@@ -54,7 +54,7 @@
     }
 
     @Override
-    public void setType(String type) {
+    public void setType(final String type) {
         // nothing to do
     }
 
@@ -67,5 +67,4 @@
     public void setBody(final String body) {
         this.body = body;
     }
-
 }
diff --git a/core/spring/src/test/java/org/apache/syncope/core/spring/security/TestPasswordPolicy.java b/core/spring/src/test/java/org/apache/syncope/core/spring/security/TestPasswordPolicy.java
index 521b98d..4e67cac 100644
--- a/core/spring/src/test/java/org/apache/syncope/core/spring/security/TestPasswordPolicy.java
+++ b/core/spring/src/test/java/org/apache/syncope/core/spring/security/TestPasswordPolicy.java
@@ -44,7 +44,7 @@
     }
 
     @Override
-    public void setName(String description) {
+    public void setName(final String description) {
         // nothing to do
     }
 
diff --git a/core/spring/src/test/java/org/apache/syncope/core/spring/security/TestPasswordRule.java b/core/spring/src/test/java/org/apache/syncope/core/spring/security/TestPasswordRule.java
index 41f9fbc..8ff7528 100644
--- a/core/spring/src/test/java/org/apache/syncope/core/spring/security/TestPasswordRule.java
+++ b/core/spring/src/test/java/org/apache/syncope/core/spring/security/TestPasswordRule.java
@@ -51,7 +51,7 @@
     }
 
     @Override
-    public void enforce(LinkedAccount account) {
+    public void enforce(final LinkedAccount account) {
         // nothing to do
     }
 }
diff --git a/core/starter/src/main/java/org/apache/syncope/core/starter/SyncopeCoreApplication.java b/core/starter/src/main/java/org/apache/syncope/core/starter/SyncopeCoreApplication.java
index 48f1e46..8e9db02 100644
--- a/core/starter/src/main/java/org/apache/syncope/core/starter/SyncopeCoreApplication.java
+++ b/core/starter/src/main/java/org/apache/syncope/core/starter/SyncopeCoreApplication.java
@@ -57,10 +57,10 @@
 import org.apache.syncope.core.provisioning.java.ProvisioningProperties;
 import org.apache.syncope.core.spring.security.PasswordGenerator;
 import org.apache.syncope.core.spring.security.SecurityProperties;
-import org.apache.syncope.core.starter.actuate.DomainsHealthIndicator;
-import org.apache.syncope.core.starter.actuate.ExternalResourcesHealthIndicator;
 import org.apache.syncope.core.starter.actuate.DefaultSyncopeCoreInfoContributor;
+import org.apache.syncope.core.starter.actuate.DomainsHealthIndicator;
 import org.apache.syncope.core.starter.actuate.EntityCacheEndpoint;
+import org.apache.syncope.core.starter.actuate.ExternalResourcesHealthIndicator;
 import org.apache.syncope.core.starter.actuate.SyncopeCoreInfoContributor;
 import org.apache.syncope.core.workflow.api.AnyObjectWorkflowAdapter;
 import org.apache.syncope.core.workflow.api.GroupWorkflowAdapter;
diff --git a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java
index dcdba39..f9c93bf 100644
--- a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java
+++ b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java
@@ -20,11 +20,11 @@
 
 import org.apache.syncope.common.lib.request.AnyObjectCR;
 import org.apache.syncope.common.lib.request.AnyObjectUR;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.provisioning.api.WorkflowResult;
 import org.apache.syncope.core.provisioning.api.data.AnyObjectDataBinder;
 import org.apache.syncope.core.provisioning.api.event.AnyLifecycleEvent;
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 f35a7ee..197f7b8 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
@@ -20,11 +20,11 @@
 
 import org.apache.syncope.common.lib.request.GroupCR;
 import org.apache.syncope.common.lib.request.GroupUR;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.group.Group;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.provisioning.api.WorkflowResult;
 import org.apache.syncope.core.provisioning.api.data.GroupDataBinder;
 import org.apache.syncope.core.provisioning.api.event.AnyLifecycleEvent;
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 ebeed5a..4b61290 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
@@ -23,18 +23,18 @@
 import org.apache.syncope.common.lib.request.PasswordPatch;
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.request.UserUR;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.provisioning.api.UserWorkflowResult;
 import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
-import org.springframework.context.ApplicationEventPublisher;
 import org.apache.syncope.core.provisioning.api.event.AnyLifecycleEvent;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.workflow.api.WorkflowException;
 import org.identityconnectors.framework.common.objects.SyncDeltaType;
+import org.springframework.context.ApplicationEventPublisher;
 
 /**
  * Simple implementation basically not involving any workflow engine.
diff --git a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/pages/CamelRoutes.java b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/pages/CamelRoutes.java
index 3362a8b..d46ac02 100644
--- a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/pages/CamelRoutes.java
+++ b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/pages/CamelRoutes.java
@@ -22,15 +22,15 @@
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
+import org.apache.syncope.client.console.panels.CamelRoutesDirectoryPanel;
 import org.apache.syncope.client.console.rest.CamelRoutesRestClient;
+import org.apache.syncope.client.ui.commons.annotations.ExtPage;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.CamelEntitlement;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.syncope.client.console.panels.CamelRoutesDirectoryPanel;
-import org.apache.syncope.client.ui.commons.annotations.ExtPage;
 import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
 import org.apache.wicket.extensions.markup.html.tabs.ITab;
+import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
diff --git a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesDirectoryPanel.java b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesDirectoryPanel.java
index 5479da1..251de8b 100644
--- a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesDirectoryPanel.java
+++ b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesDirectoryPanel.java
@@ -24,7 +24,6 @@
 import java.util.Iterator;
 import java.util.List;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.panels.CamelRoutesDirectoryPanel.CamelRoutesProvider;
 import org.apache.syncope.client.console.rest.CamelRoutesRestClient;
@@ -34,6 +33,7 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.XMLEditorPanel;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
 import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
 import org.apache.syncope.common.lib.to.CamelRouteTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
diff --git a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/widgets/CamelMetricsWidget.java b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/widgets/CamelMetricsWidget.java
index 5e622a8..582894e 100644
--- a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/widgets/CamelMetricsWidget.java
+++ b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/widgets/CamelMetricsWidget.java
@@ -23,12 +23,12 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
-import org.apache.syncope.client.ui.commons.annotations.ExtWidget;
 import org.apache.syncope.client.console.chartjs.Bar;
 import org.apache.syncope.client.console.chartjs.BarDataSet;
 import org.apache.syncope.client.console.chartjs.ChartJSPanel;
 import org.apache.syncope.client.console.rest.CamelRoutesRestClient;
 import org.apache.syncope.client.console.wicket.ajax.IndicatorAjaxTimerBehavior;
+import org.apache.syncope.client.ui.commons.annotations.ExtWidget;
 import org.apache.syncope.common.lib.to.CamelMetrics;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/ext/camel/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPACamelRoute.java b/ext/camel/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPACamelRoute.java
index 813cb9a..9dcf3f8 100644
--- a/ext/camel/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPACamelRoute.java
+++ b/ext/camel/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPACamelRoute.java
@@ -19,9 +19,9 @@
 package org.apache.syncope.core.persistence.jpa.entity;
 
 import javax.persistence.Entity;
-import javax.persistence.Lob;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
+import javax.persistence.Lob;
 import javax.persistence.Table;
 import javax.validation.constraints.NotNull;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/ConfirmPasswordResetProducer.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/ConfirmPasswordResetProducer.java
index c6eb70a..0d4d080 100644
--- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/ConfirmPasswordResetProducer.java
+++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/ConfirmPasswordResetProducer.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.core.provisioning.camel.producer;
 
 import java.util.List;
-
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.commons.lang3.tuple.Pair;
diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/SuspendProducer.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/SuspendProducer.java
index a669932..f49a5a1e 100644
--- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/SuspendProducer.java
+++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/producer/SuspendProducer.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.core.provisioning.camel.producer;
 
 import java.util.List;
-
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.commons.lang3.tuple.Pair;
diff --git a/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/ElasticsearchPersistenceContext.java b/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/ElasticsearchPersistenceContext.java
index d2232d3..8fba443 100644
--- a/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/ElasticsearchPersistenceContext.java
+++ b/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/ElasticsearchPersistenceContext.java
@@ -18,6 +18,7 @@
  */
 package org.apache.syncope.core.persistence.jpa;
 
+import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.DynRealmDAO;
@@ -30,7 +31,6 @@
 import org.apache.syncope.core.persistence.jpa.dao.ElasticsearchAnySearchDAO;
 import org.apache.syncope.ext.elasticsearch.client.ElasticsearchIndexManager;
 import org.apache.syncope.ext.elasticsearch.client.ElasticsearchUtils;
-import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
diff --git a/ext/elasticsearch/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAOTest.java b/ext/elasticsearch/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAOTest.java
index e08aed8..ab48f1c 100644
--- a/ext/elasticsearch/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAOTest.java
+++ b/ext/elasticsearch/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAOTest.java
@@ -88,7 +88,7 @@
     private ElasticsearchAnySearchDAO searchDAO;
 
     @Test
-    public void getAdminRealmsFilter_realm() throws IOException {
+    public void getAdminRealmsFilter4realm() throws IOException {
         // 1. mock
         Realm root = mock(Realm.class);
         when(root.getFullPath()).thenReturn(SyncopeConstants.ROOT_REALM);
@@ -112,7 +112,7 @@
     }
 
     @Test
-    public void getAdminRealmsFilter_dynRealm() {
+    public void getAdminRealmsFilter4dynRealm() {
         // 1. mock
         DynRealm dyn = mock(DynRealm.class);
         when(dyn.getKey()).thenReturn("dyn");
@@ -129,7 +129,7 @@
     }
 
     @Test
-    public void getAdminRealmsFilter_groupOwner() {
+    public void getAdminRealmsFilter4groupOwner() {
         Set<String> adminRealms = Set.of(RealmUtils.getGroupOwnerRealm("/any", "groupKey"));
         Triple<Optional<Query>, Set<String>, Set<String>> filter =
                 searchDAO.getAdminRealmsFilter(realmDAO.getRoot(), true, adminRealms, AnyTypeKind.USER);
@@ -139,7 +139,7 @@
     }
 
     @Test
-    public void searchRequest_groupOwner() throws IOException {
+    public void searchRequest4groupOwner() throws IOException {
         // 1. mock
         AnyUtils anyUtils = mock(AnyUtils.class);
         when(anyUtils.getField("id")).thenReturn(ReflectionUtils.findField(JPAUser.class, "id"));
diff --git a/ext/flowable/client-common-ui/src/main/java/org/apache/syncope/ext/client/common/ui/panels/UserRequestFormPanel.java b/ext/flowable/client-common-ui/src/main/java/org/apache/syncope/ext/client/common/ui/panels/UserRequestFormPanel.java
index 6a5a169..1231099 100644
--- a/ext/flowable/client-common-ui/src/main/java/org/apache/syncope/ext/client/common/ui/panels/UserRequestFormPanel.java
+++ b/ext/flowable/client-common-ui/src/main/java/org/apache/syncope/ext/client/common/ui/panels/UserRequestFormPanel.java
@@ -32,8 +32,8 @@
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxSpinnerFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.FieldPanel;
-import org.apache.syncope.common.lib.to.UserRequestFormProperty;
 import org.apache.syncope.common.lib.to.UserRequestForm;
+import org.apache.syncope.common.lib.to.UserRequestFormProperty;
 import org.apache.syncope.common.lib.to.UserRequestFormPropertyValue;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/pages/UserRequests.java b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/pages/UserRequests.java
index 401d085..c5599f3 100644
--- a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/pages/UserRequests.java
+++ b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/pages/UserRequests.java
@@ -22,8 +22,8 @@
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
-import org.apache.syncope.client.console.panels.UserRequestFormDirectoryPanel;
 import org.apache.syncope.client.console.panels.UserRequestDirectoryPanel;
+import org.apache.syncope.client.console.panels.UserRequestFormDirectoryPanel;
 import org.apache.syncope.client.console.panels.UserRequestsPanel;
 import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
 import org.apache.wicket.extensions.markup.html.tabs.ITab;
diff --git a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/BpmnProcessDirectoryPanel.java b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/BpmnProcessDirectoryPanel.java
index e1a2d61..2755144 100644
--- a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/BpmnProcessDirectoryPanel.java
+++ b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/BpmnProcessDirectoryPanel.java
@@ -32,8 +32,6 @@
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.SyncopeWebApplication;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.pages.ModelerPopupPage;
@@ -45,6 +43,8 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ImageModalPanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.XMLEditorPanel;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizardBuilder;
 import org.apache.syncope.common.lib.SyncopeClientException;
diff --git a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/NewBpmnProcess.java b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/NewBpmnProcess.java
index 5b4a196..29cb1d3 100644
--- a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/NewBpmnProcess.java
+++ b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/NewBpmnProcess.java
@@ -23,8 +23,8 @@
 import javax.ws.rs.core.MediaType;
 import org.apache.commons.io.IOUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.rest.BpmnProcessRestClient;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
diff --git a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestDirectoryPanel.java b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestDirectoryPanel.java
index bf2fe7c..6c28ec3 100644
--- a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestDirectoryPanel.java
+++ b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestDirectoryPanel.java
@@ -23,10 +23,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import org.apache.syncope.common.rest.api.service.UserRequestService;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.batch.BatchModal;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.UserRequestDirectoryPanel.UserRequestProvider;
@@ -37,9 +34,12 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.ConfirmBehavior;
 import org.apache.syncope.client.lib.batch.BatchRequest;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.UserRequest;
 import org.apache.syncope.common.lib.types.FlowableEntitlement;
+import org.apache.syncope.common.rest.api.service.UserRequestService;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
diff --git a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDetails.java b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDetails.java
index 1a28b6b..5773b78 100644
--- a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDetails.java
+++ b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDetails.java
@@ -23,8 +23,8 @@
 import org.apache.syncope.client.console.wizards.any.UserWizardBuilder;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.AnyOperations;
-import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.UserRequestForm;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.wicket.PageReference;
 
diff --git a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java
index cf67b6f..fcfcf3d 100644
--- a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java
+++ b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormDirectoryPanel.java
@@ -26,25 +26,25 @@
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
-import org.apache.syncope.client.console.rest.UserRequestRestClient;
-import org.apache.syncope.client.console.panels.UserRequestFormDirectoryPanel.UserRequestFormProvider;
 import org.apache.syncope.client.console.layout.AnyLayoutUtils;
 import org.apache.syncope.client.console.pages.BasePage;
+import org.apache.syncope.client.console.panels.UserRequestFormDirectoryPanel.UserRequestFormProvider;
 import org.apache.syncope.client.console.panels.UserRequestsPanel.UserRequestSearchEvent;
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
+import org.apache.syncope.client.console.rest.UserRequestRestClient;
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksTogglePanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.console.widgets.UserRequestFormsWidget;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.common.lib.AnyOperations;
 import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.UserRequestForm;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.FlowableEntitlement;
 import org.apache.wicket.PageReference;
diff --git a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormModal.java b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormModal.java
index e64a6e4..8ed2c86 100644
--- a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormModal.java
+++ b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestFormModal.java
@@ -19,9 +19,9 @@
 package org.apache.syncope.client.console.panels;
 
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.rest.UserRequestRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.pages.BaseWebPage;
 import org.apache.syncope.client.ui.commons.panels.SubmitableModalPanel;
 import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
diff --git a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/resources/AbstractBpmnProcessResource.java b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/resources/AbstractBpmnProcessResource.java
index 7e85f36..e8ca70a 100644
--- a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/resources/AbstractBpmnProcessResource.java
+++ b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/resources/AbstractBpmnProcessResource.java
@@ -19,8 +19,8 @@
 package org.apache.syncope.client.console.resources;
 
 import javax.ws.rs.NotFoundException;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.rest.BpmnProcessRestClient;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.common.lib.to.BpmnProcess;
 import org.apache.wicket.request.resource.AbstractResource;
 import org.apache.wicket.util.string.StringValue;
diff --git a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/rest/UserRequestRestClient.java b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/rest/UserRequestRestClient.java
index 2fd76c1..13d753d 100644
--- a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/rest/UserRequestRestClient.java
+++ b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/rest/UserRequestRestClient.java
@@ -33,8 +33,8 @@
 import org.apache.syncope.common.rest.api.batch.BatchRequestItem;
 import org.apache.syncope.common.rest.api.batch.BatchResponseItem;
 import org.apache.syncope.common.rest.api.beans.UserRequestQuery;
-import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 import org.apache.syncope.common.rest.api.service.UserRequestService;
+import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 
 public class UserRequestRestClient extends BaseRestClient {
 
diff --git a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/widgets/UserRequestFormsWidget.java b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/widgets/UserRequestFormsWidget.java
index 429af25..7dc0a28 100644
--- a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/widgets/UserRequestFormsWidget.java
+++ b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/widgets/UserRequestFormsWidget.java
@@ -27,10 +27,10 @@
 import java.util.List;
 import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.annotations.ExtWidget;
 import org.apache.syncope.client.console.pages.UserRequests;
 import org.apache.syncope.client.console.rest.UserRequestRestClient;
 import org.apache.syncope.client.console.wicket.ajax.IndicatorAjaxTimerBehavior;
+import org.apache.syncope.client.ui.commons.annotations.ExtWidget;
 import org.apache.syncope.common.lib.to.UserRequestForm;
 import org.apache.syncope.common.lib.types.FlowableEntitlement;
 import org.apache.wicket.PageReference;
diff --git a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/wizards/any/UserRequestFormFinalizer.java b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/wizards/any/UserRequestFormFinalizer.java
index 8d829bb..41ceb09 100644
--- a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/wizards/any/UserRequestFormFinalizer.java
+++ b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/wizards/any/UserRequestFormFinalizer.java
@@ -19,10 +19,10 @@
 package org.apache.syncope.client.console.wizards.any;
 
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.rest.UserRequestRestClient;
-import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.client.console.annotations.UserFormFinalize;
+import org.apache.syncope.client.console.rest.UserRequestRestClient;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
+import org.apache.syncope.common.lib.SyncopeClientException;
 
 @UserFormFinalize(mode = AjaxWizard.Mode.EDIT_APPROVAL)
 public class UserRequestFormFinalizer implements UserFormFinalizer {
diff --git a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/rest/BaseRestClient.java b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/rest/BaseRestClient.java
index 278d04b..6f9e4ff 100644
--- a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/rest/BaseRestClient.java
+++ b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/rest/BaseRestClient.java
@@ -20,10 +20,10 @@
 
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.client.ui.commons.rest.RestClient;
 import org.apache.syncope.common.lib.search.OrderByClauseBuilder;
 import org.apache.syncope.common.rest.api.service.SyncopeService;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
-import org.apache.syncope.client.ui.commons.rest.RestClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/rest/UserRequestRestClient.java b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/rest/UserRequestRestClient.java
index 316a72f..998f0a6 100644
--- a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/rest/UserRequestRestClient.java
+++ b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/rest/UserRequestRestClient.java
@@ -28,8 +28,8 @@
 import org.apache.syncope.common.lib.to.UserRequestForm;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.rest.api.beans.UserRequestQuery;
-import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 import org.apache.syncope.common.rest.api.service.UserRequestService;
+import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 
 public class UserRequestRestClient extends BaseRestClient {
 
diff --git a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableBpmnProcessManager.java b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableBpmnProcessManager.java
index 43d40be..8be0161 100644
--- a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableBpmnProcessManager.java
+++ b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableBpmnProcessManager.java
@@ -18,7 +18,6 @@
  */
 package org.apache.syncope.core.flowable.impl;
 
-import org.apache.syncope.core.flowable.api.BpmnProcessManager;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.json.JsonMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -30,6 +29,7 @@
 import org.apache.commons.io.IOUtils;
 import org.apache.syncope.common.lib.to.BpmnProcess;
 import org.apache.syncope.common.lib.types.BpmnProcessFormat;
+import org.apache.syncope.core.flowable.api.BpmnProcessManager;
 import org.apache.syncope.core.flowable.support.DomainProcessEngine;
 import org.apache.syncope.core.flowable.support.DropdownAwareJsonConverter;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
diff --git a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableDeployUtils.java b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableDeployUtils.java
index 8447c23..827e596 100644
--- a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableDeployUtils.java
+++ b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableDeployUtils.java
@@ -29,10 +29,10 @@
 import org.apache.syncope.core.workflow.api.WorkflowException;
 import org.flowable.bpmn.converter.BpmnXMLConverter;
 import org.flowable.bpmn.model.BpmnModel;
+import org.flowable.common.engine.api.FlowableException;
 import org.flowable.editor.constants.ModelDataJsonConstants;
 import org.flowable.editor.language.json.converter.BpmnJsonConverter;
 import org.flowable.engine.ProcessEngine;
-import org.flowable.common.engine.api.FlowableException;
 import org.flowable.engine.repository.Deployment;
 import org.flowable.engine.repository.Model;
 import org.flowable.engine.repository.ProcessDefinition;
diff --git a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableUserRequestHandler.java b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableUserRequestHandler.java
index efb237b..1ab1035 100644
--- a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableUserRequestHandler.java
+++ b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableUserRequestHandler.java
@@ -32,10 +32,10 @@
 import org.apache.syncope.common.lib.request.PasswordPatch;
 import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.UserRequest;
-import org.apache.syncope.common.lib.to.UserTO;
-import org.apache.syncope.common.lib.to.UserRequestFormProperty;
 import org.apache.syncope.common.lib.to.UserRequestForm;
+import org.apache.syncope.common.lib.to.UserRequestFormProperty;
 import org.apache.syncope.common.lib.to.UserRequestFormPropertyValue;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.WorkflowTaskExecInput;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.common.lib.types.UserRequestFormPropertyType;
diff --git a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableUserWorkflowAdapter.java b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableUserWorkflowAdapter.java
index 3453f49..5232b42 100644
--- a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableUserWorkflowAdapter.java
+++ b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/impl/FlowableUserWorkflowAdapter.java
@@ -31,24 +31,24 @@
 import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.WorkflowTask;
 import org.apache.syncope.common.lib.to.WorkflowTaskExecInput;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.core.flowable.api.UserRequestHandler;
 import org.apache.syncope.core.flowable.api.WorkflowTaskManager;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
-import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.apache.syncope.core.provisioning.api.UserWorkflowResult;
 import org.apache.syncope.core.flowable.support.DomainProcessEngine;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
+import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
+import org.apache.syncope.core.provisioning.api.UserWorkflowResult;
 import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
 import org.apache.syncope.core.provisioning.api.event.AnyLifecycleEvent;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.workflow.api.WorkflowException;
 import org.apache.syncope.core.workflow.java.AbstractUserWorkflowAdapter;
 import org.flowable.bpmn.model.FlowElement;
 import org.flowable.bpmn.model.Gateway;
-import org.flowable.bpmn.model.SequenceFlow;
 import org.flowable.bpmn.model.Process;
+import org.flowable.bpmn.model.SequenceFlow;
 import org.flowable.common.engine.api.FlowableException;
 import org.flowable.engine.runtime.ProcessInstance;
 import org.flowable.task.api.Task;
diff --git a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/support/DropdownFormType.java b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/support/DropdownFormType.java
index 0ffbd70..ec505bc 100644
--- a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/support/DropdownFormType.java
+++ b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/support/DropdownFormType.java
@@ -18,9 +18,8 @@
  */
 package org.apache.syncope.core.flowable.support;
 
-import org.flowable.engine.form.AbstractFormType;
-
 import java.util.Optional;
+import org.flowable.engine.form.AbstractFormType;
 
 /**
  * Extension to predefined Flowable form types relying on the provided
diff --git a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/support/SyncopeFormHandlerHelper.java b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/support/SyncopeFormHandlerHelper.java
index 9f6e751..fa8997e 100644
--- a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/support/SyncopeFormHandlerHelper.java
+++ b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/support/SyncopeFormHandlerHelper.java
@@ -19,8 +19,8 @@
 package org.apache.syncope.core.flowable.support;
 
 import org.flowable.bpmn.model.FlowElement;
-import org.flowable.bpmn.model.UserTask;
 import org.flowable.bpmn.model.Process;
+import org.flowable.bpmn.model.UserTask;
 import org.flowable.engine.impl.form.FormHandlerHelper;
 import org.flowable.engine.impl.form.TaskFormHandler;
 import org.flowable.engine.impl.persistence.entity.DeploymentEntity;
diff --git a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/AutoActivate.java b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/AutoActivate.java
index 4fe6a71..d107702 100644
--- a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/AutoActivate.java
+++ b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/AutoActivate.java
@@ -21,10 +21,10 @@
 import org.apache.syncope.common.lib.AnyOperations;
 import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.syncope.core.flowable.impl.FlowableRuntimeUtils;
 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.flowable.impl.FlowableRuntimeUtils;
 import org.flowable.engine.delegate.DelegateExecution;
 
 public class AutoActivate extends FlowableServiceTask {
diff --git a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Create.java b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Create.java
index 1017c1d..bff29453 100644
--- a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Create.java
+++ b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Create.java
@@ -19,10 +19,10 @@
 package org.apache.syncope.core.flowable.task;
 
 import org.apache.syncope.common.lib.request.UserCR;
+import org.apache.syncope.core.flowable.impl.FlowableRuntimeUtils;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
-import org.apache.syncope.core.flowable.impl.FlowableRuntimeUtils;
 import org.flowable.engine.delegate.DelegateExecution;
 
 public class Create extends FlowableServiceTask {
diff --git a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Delete.java b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Delete.java
index 46be387..b673a37 100644
--- a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Delete.java
+++ b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Delete.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.core.flowable.task;
 
-import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.flowable.impl.FlowableRuntimeUtils;
+import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.flowable.engine.delegate.DelegateExecution;
 
 public class Delete extends FlowableServiceTask {
diff --git a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/GenerateToken.java b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/GenerateToken.java
index a2f9a3c..8c6f091 100644
--- a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/GenerateToken.java
+++ b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/GenerateToken.java
@@ -19,8 +19,8 @@
 package org.apache.syncope.core.flowable.task;
 
 import org.apache.syncope.common.keymaster.client.api.ConfParamOps;
-import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.flowable.impl.FlowableRuntimeUtils;
+import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.flowable.engine.delegate.DelegateExecution;
 
diff --git a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Notify.java b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Notify.java
index 1654fc2..27ca813 100644
--- a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Notify.java
+++ b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Notify.java
@@ -21,9 +21,9 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AuditElements;
+import org.apache.syncope.core.flowable.impl.FlowableRuntimeUtils;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.notification.NotificationManager;
-import org.apache.syncope.core.flowable.impl.FlowableRuntimeUtils;
 import org.flowable.engine.delegate.DelegateExecution;
 
 /**
diff --git a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/PasswordReset.java b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/PasswordReset.java
index dbbb006..930ac9f 100644
--- a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/PasswordReset.java
+++ b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/PasswordReset.java
@@ -18,15 +18,15 @@
  */
 package org.apache.syncope.core.flowable.task;
 
+import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.request.PasswordPatch;
 import org.apache.syncope.common.lib.request.UserUR;
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
+import org.apache.syncope.core.flowable.impl.FlowableRuntimeUtils;
 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.PropagationByResource;
 import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
 import org.apache.syncope.core.workflow.api.WorkflowException;
-import org.apache.syncope.core.flowable.impl.FlowableRuntimeUtils;
 import org.flowable.engine.delegate.DelegateExecution;
 
 public class PasswordReset extends FlowableServiceTask {
diff --git a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Update.java b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Update.java
index 51fcbd8..0c151cd 100644
--- a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Update.java
+++ b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/task/Update.java
@@ -18,13 +18,13 @@
  */
 package org.apache.syncope.core.flowable.task;
 
-import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.commons.lang3.tuple.Pair;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
-import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
+import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.core.flowable.impl.FlowableRuntimeUtils;
+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.PropagationByResource;
+import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
 import org.flowable.engine.delegate.DelegateExecution;
 
 public class Update extends FlowableServiceTask {
diff --git a/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/BpmnProcessLogic.java b/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/BpmnProcessLogic.java
index 8ce5ac0..e09be56 100644
--- a/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/BpmnProcessLogic.java
+++ b/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/BpmnProcessLogic.java
@@ -22,11 +22,11 @@
 import java.lang.reflect.Method;
 import java.util.List;
 import org.apache.syncope.common.lib.to.BpmnProcess;
-import org.apache.syncope.common.lib.types.FlowableEntitlement;
 import org.apache.syncope.common.lib.types.BpmnProcessFormat;
+import org.apache.syncope.common.lib.types.FlowableEntitlement;
+import org.apache.syncope.core.flowable.api.BpmnProcessManager;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.flowable.api.BpmnProcessManager;
 
 public class BpmnProcessLogic extends AbstractTransactionalLogic<BpmnProcess> {
 
diff --git a/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/UserRequestLogic.java b/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/UserRequestLogic.java
index bbe0ccb..add8fae 100644
--- a/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/UserRequestLogic.java
+++ b/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/UserRequestLogic.java
@@ -27,23 +27,23 @@
 import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.to.UserRequest;
-import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.UserRequestForm;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.WorkflowTaskExecInput;
 import org.apache.syncope.common.lib.types.BpmnProcessFormat;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.FlowableEntitlement;
 import org.apache.syncope.core.flowable.api.BpmnProcessManager;
+import org.apache.syncope.core.flowable.api.UserRequestHandler;
+import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.apache.syncope.core.provisioning.api.propagation.PropagationManager;
-import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
-import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
-import org.apache.syncope.core.flowable.api.UserRequestHandler;
-import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.provisioning.api.UserWorkflowResult;
+import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
+import org.apache.syncope.core.provisioning.api.propagation.PropagationManager;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationReporter;
+import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.flowable.engine.runtime.ProcessInstance;
diff --git a/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowTaskLogic.java b/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowTaskLogic.java
index 4fce62e..d7bda31 100644
--- a/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowTaskLogic.java
+++ b/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/UserWorkflowTaskLogic.java
@@ -28,13 +28,13 @@
 import org.apache.syncope.common.lib.to.WorkflowTaskExecInput;
 import org.apache.syncope.common.lib.types.FlowableEntitlement;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.core.flowable.api.WorkflowTaskManager;
 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.UserWorkflowResult;
+import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationManager;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
-import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
-import org.apache.syncope.core.flowable.api.WorkflowTaskManager;
-import org.apache.syncope.core.provisioning.api.UserWorkflowResult;
 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
diff --git a/ext/flowable/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/BpmnProcessServiceImpl.java b/ext/flowable/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/BpmnProcessServiceImpl.java
index adace4d..27c3be3 100644
--- a/ext/flowable/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/BpmnProcessServiceImpl.java
+++ b/ext/flowable/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/BpmnProcessServiceImpl.java
@@ -25,9 +25,9 @@
 import org.apache.syncope.common.lib.to.BpmnProcess;
 import org.apache.syncope.common.lib.types.BpmnProcessFormat;
 import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.common.rest.api.service.BpmnProcessService;
 import org.apache.syncope.core.logic.BpmnProcessLogic;
 import org.springframework.stereotype.Service;
-import org.apache.syncope.common.rest.api.service.BpmnProcessService;
 
 @Service
 public class BpmnProcessServiceImpl extends AbstractService implements BpmnProcessService {
diff --git a/ext/flowable/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/UserRequestServiceImpl.java b/ext/flowable/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/UserRequestServiceImpl.java
index 328368e..78a1663 100644
--- a/ext/flowable/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/UserRequestServiceImpl.java
+++ b/ext/flowable/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/UserRequestServiceImpl.java
@@ -25,12 +25,12 @@
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.to.UserRequest;
-import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.UserRequestForm;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.WorkflowTaskExecInput;
 import org.apache.syncope.common.rest.api.beans.UserRequestQuery;
-import org.apache.syncope.core.logic.UserRequestLogic;
 import org.apache.syncope.common.rest.api.service.UserRequestService;
+import org.apache.syncope.core.logic.UserRequestLogic;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.springframework.stereotype.Service;
 
diff --git a/ext/flowable/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/UserWorkflowTaskServiceImpl.java b/ext/flowable/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/UserWorkflowTaskServiceImpl.java
index 81e41d2..cebdf6e 100644
--- a/ext/flowable/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/UserWorkflowTaskServiceImpl.java
+++ b/ext/flowable/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/UserWorkflowTaskServiceImpl.java
@@ -22,9 +22,9 @@
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.WorkflowTask;
 import org.apache.syncope.common.lib.to.WorkflowTaskExecInput;
+import org.apache.syncope.common.rest.api.service.UserWorkflowTaskService;
 import org.apache.syncope.core.logic.UserWorkflowTaskLogic;
 import org.springframework.stereotype.Service;
-import org.apache.syncope.common.rest.api.service.UserWorkflowTaskService;
 
 @Service
 public class UserWorkflowTaskServiceImpl extends AbstractService implements UserWorkflowTaskService {
diff --git a/ext/oidcc4ui/client-common-ui/src/main/java/org/apache/syncope/client/ui/commons/panels/AbstractOIDCSSOLoginFormPanel.java b/ext/oidcc4ui/client-common-ui/src/main/java/org/apache/syncope/client/ui/commons/panels/AbstractOIDCSSOLoginFormPanel.java
index 2b9cd33..51936a1 100644
--- a/ext/oidcc4ui/client-common-ui/src/main/java/org/apache/syncope/client/ui/commons/panels/AbstractOIDCSSOLoginFormPanel.java
+++ b/ext/oidcc4ui/client-common-ui/src/main/java/org/apache/syncope/client/ui/commons/panels/AbstractOIDCSSOLoginFormPanel.java
@@ -25,6 +25,7 @@
 import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.common.lib.to.OIDCC4UIProviderTO;
+import org.apache.syncope.common.rest.api.service.OIDCC4UIProviderService;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.markup.html.form.IChoiceRenderer;
@@ -35,7 +36,6 @@
 import org.apache.wicket.request.http.handler.RedirectRequestHandler;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.syncope.common.rest.api.service.OIDCC4UIProviderService;
 
 public abstract class AbstractOIDCSSOLoginFormPanel extends BaseSSOLoginFormPanel {
 
diff --git a/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/OIDCProvidersDirectoryPanel.java b/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/OIDCProvidersDirectoryPanel.java
index 7f71a99..8c17043 100644
--- a/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/OIDCProvidersDirectoryPanel.java
+++ b/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/OIDCProvidersDirectoryPanel.java
@@ -26,8 +26,6 @@
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.layout.UserFormLayoutInfo;
 import org.apache.syncope.client.console.pages.BasePage;
@@ -42,6 +40,8 @@
 import org.apache.syncope.client.console.wizards.OIDCProviderWizardBuilder;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
 import org.apache.syncope.client.console.wizards.any.UserTemplateWizardBuilder;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
@@ -52,16 +52,16 @@
 import org.apache.syncope.common.lib.types.OIDC4UIEntitlement;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
 import org.apache.wicket.event.Broadcast;
 import org.apache.wicket.event.IEvent;
 import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
+import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.StringResourceModel;
 
 public class OIDCProvidersDirectoryPanel extends DirectoryPanel<
diff --git a/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/OIDCSSOLoginFormPanel.java b/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/OIDCSSOLoginFormPanel.java
index 85d4647..fa04ade 100644
--- a/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/OIDCSSOLoginFormPanel.java
+++ b/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/OIDCSSOLoginFormPanel.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.client.console.panels;
 
-import org.apache.syncope.client.ui.commons.panels.AbstractOIDCSSOLoginFormPanel;
 import org.apache.syncope.client.ui.commons.BaseSession;
+import org.apache.syncope.client.ui.commons.panels.AbstractOIDCSSOLoginFormPanel;
 
 public class OIDCSSOLoginFormPanel extends AbstractOIDCSSOLoginFormPanel {
 
diff --git a/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/wizards/OIDCProviderWizardBuilder.java b/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/wizards/OIDCProviderWizardBuilder.java
index 42b82ef..c9a889d 100644
--- a/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/wizards/OIDCProviderWizardBuilder.java
+++ b/ext/oidcc4ui/client-console/src/main/java/org/apache/syncope/client/console/wizards/OIDCProviderWizardBuilder.java
@@ -27,13 +27,13 @@
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.SyncopeWebApplication;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.panels.OIDCProvidersDirectoryPanel;
 import org.apache.syncope.client.console.rest.ImplementationRestClient;
 import org.apache.syncope.client.console.rest.OIDCProviderRestClient;
 import org.apache.syncope.client.console.wizards.mapping.ItemTransformersTogglePanel;
 import org.apache.syncope.client.console.wizards.mapping.JEXLTransformersTogglePanel;
 import org.apache.syncope.client.console.wizards.mapping.OIDCProviderMappingPanel;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxCheckBoxPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxPalettePanel;
diff --git a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UILogic.java b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UILogic.java
index 893496b..1c5b6c5 100644
--- a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UILogic.java
+++ b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UILogic.java
@@ -32,9 +32,9 @@
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.EntityTO;
-import org.apache.syncope.common.lib.oidc.OIDCRequest;
 import org.apache.syncope.common.lib.oidc.OIDCLoginResponse;
+import org.apache.syncope.common.lib.oidc.OIDCRequest;
+import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.CipherAlgorithm;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
@@ -44,19 +44,19 @@
 import org.apache.syncope.core.logic.oidc.OIDCClientCache;
 import org.apache.syncope.core.logic.oidc.OIDCUserManager;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.core.persistence.api.dao.OIDCC4UIProviderDAO;
+import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProvider;
+import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProviderItem;
 import org.apache.syncope.core.provisioning.api.data.AccessTokenDataBinder;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.spring.security.AuthDataAccessor;
 import org.apache.syncope.core.spring.security.Encryptor;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProvider;
-import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProviderItem;
-import org.apache.syncope.core.persistence.api.dao.OIDCC4UIProviderDAO;
 import org.pac4j.core.exception.http.WithLocationAction;
 import org.pac4j.oidc.client.OidcClient;
 import org.pac4j.oidc.credentials.OidcCredentials;
 import org.pac4j.oidc.profile.OidcProfile;
+import org.springframework.security.access.prepost.PreAuthorize;
 
 public class OIDCC4UILogic extends AbstractTransactionalLogic<EntityTO> {
 
diff --git a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UIProviderLogic.java b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UIProviderLogic.java
index 6949732..5f51476 100644
--- a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UIProviderLogic.java
+++ b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UIProviderLogic.java
@@ -29,11 +29,11 @@
 import org.apache.syncope.common.lib.types.OIDC4UIEntitlement;
 import org.apache.syncope.core.logic.oidc.OIDCClientCache;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.core.persistence.api.dao.OIDCC4UIProviderDAO;
+import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProvider;
+import org.apache.syncope.core.provisioning.api.data.OIDCC4UIProviderDataBinder;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProvider;
-import org.apache.syncope.core.persistence.api.dao.OIDCC4UIProviderDAO;
-import org.apache.syncope.core.provisioning.api.data.OIDCC4UIProviderDataBinder;
 
 public class OIDCC4UIProviderLogic extends AbstractTransactionalLogic<OIDCC4UIProviderTO> {
 
diff --git a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/NoOpSessionStore.java b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/NoOpSessionStore.java
index b60a9ba..8aa0035 100644
--- a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/NoOpSessionStore.java
+++ b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/NoOpSessionStore.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.core.logic.oidc;
 
 import java.util.Optional;
-
 import org.pac4j.core.context.WebContext;
 import org.pac4j.core.context.session.SessionStore;
 
diff --git a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCUserManager.java b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCUserManager.java
index acf653a..d7d48c0 100644
--- a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCUserManager.java
+++ b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCUserManager.java
@@ -29,16 +29,19 @@
 import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.oidc.OIDCLoginResponse;
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.request.UserUR;
-import org.apache.syncope.common.lib.oidc.OIDCLoginResponse;
 import org.apache.syncope.common.lib.to.PropagationStatus;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProvider;
+import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProviderItem;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.IntAttrName;
 import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
+import org.apache.syncope.core.provisioning.api.OIDCC4UIProviderActions;
 import org.apache.syncope.core.provisioning.api.UserProvisioningManager;
 import org.apache.syncope.core.provisioning.api.data.ItemTransformer;
 import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
@@ -50,9 +53,6 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.provisioning.api.OIDCC4UIProviderActions;
-import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProvider;
-import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProviderItem;
 
 public class OIDCUserManager {
 
diff --git a/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAOIDCC4UIProviderDAO.java b/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAOIDCC4UIProviderDAO.java
index 3c1958c..dd1131c 100644
--- a/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAOIDCC4UIProviderDAO.java
+++ b/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAOIDCC4UIProviderDAO.java
@@ -21,10 +21,10 @@
 import java.util.List;
 import javax.persistence.NoResultException;
 import javax.persistence.TypedQuery;
+import org.apache.syncope.core.persistence.api.dao.OIDCC4UIProviderDAO;
+import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProvider;
 import org.apache.syncope.core.persistence.jpa.entity.JPAOIDCC4UIProvider;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProvider;
-import org.apache.syncope.core.persistence.api.dao.OIDCC4UIProviderDAO;
 
 public class JPAOIDCC4UIProviderDAO extends AbstractDAO<OIDCC4UIProvider> implements OIDCC4UIProviderDAO {
 
diff --git a/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCC4UIEntityFactory.java b/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCC4UIEntityFactory.java
index 852830f..89207c5 100644
--- a/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCC4UIEntityFactory.java
+++ b/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCC4UIEntityFactory.java
@@ -19,11 +19,11 @@
 package org.apache.syncope.core.persistence.jpa.entity;
 
 import org.apache.syncope.core.persistence.api.entity.Entity;
-import org.apache.syncope.core.spring.security.SecureRandomUtils;
 import org.apache.syncope.core.persistence.api.entity.OIDCC4UIEntityFactory;
 import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProvider;
 import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProviderItem;
 import org.apache.syncope.core.persistence.api.entity.OIDCC4UIUserTemplate;
+import org.apache.syncope.core.spring.security.SecureRandomUtils;
 
 public class JPAOIDCC4UIEntityFactory implements OIDCC4UIEntityFactory {
 
diff --git a/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCC4UIProvider.java b/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCC4UIProvider.java
index 48301e5..44972ee 100644
--- a/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCC4UIProvider.java
+++ b/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCC4UIProvider.java
@@ -35,10 +35,10 @@
 import javax.validation.constraints.NotNull;
 import org.apache.syncope.common.lib.types.OIDCClientImplementationType;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
-import org.apache.syncope.core.persistence.api.entity.resource.Item;
 import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProvider;
 import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProviderItem;
 import org.apache.syncope.core.persistence.api.entity.OIDCC4UIUserTemplate;
+import org.apache.syncope.core.persistence.api.entity.resource.Item;
 import org.apache.syncope.core.persistence.jpa.validation.entity.OIDCC4UIProviderCheck;
 
 @Entity
diff --git a/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCC4UIProviderItem.java b/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCC4UIProviderItem.java
index 85ee0a6..7344426 100644
--- a/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCC4UIProviderItem.java
+++ b/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCC4UIProviderItem.java
@@ -31,9 +31,9 @@
 import javax.persistence.UniqueConstraint;
 import org.apache.syncope.common.lib.types.IdRepoImplementationType;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
-import org.apache.syncope.core.persistence.jpa.entity.resource.AbstractItem;
 import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProvider;
 import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProviderItem;
+import org.apache.syncope.core.persistence.jpa.entity.resource.AbstractItem;
 
 @Entity
 @Table(name = JPAOIDCC4UIProviderItem.TABLE)
diff --git a/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCC4UIUserTemplate.java b/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCC4UIUserTemplate.java
index 303c409..e5abc89 100644
--- a/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCC4UIUserTemplate.java
+++ b/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPAOIDCC4UIUserTemplate.java
@@ -22,9 +22,9 @@
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
-import org.apache.syncope.core.persistence.jpa.entity.resource.AbstractAnyTemplate;
 import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProvider;
 import org.apache.syncope.core.persistence.api.entity.OIDCC4UIUserTemplate;
+import org.apache.syncope.core.persistence.jpa.entity.resource.AbstractAnyTemplate;
 
 @Entity
 @Table(name = JPAOIDCC4UIUserTemplate.TABLE, uniqueConstraints =
diff --git a/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/OIDCC4UIProviderCheck.java b/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/OIDCC4UIProviderCheck.java
index 41f9eed..9388f44 100644
--- a/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/OIDCC4UIProviderCheck.java
+++ b/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/OIDCC4UIProviderCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/OIDCC4UIProviderValidator.java b/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/OIDCC4UIProviderValidator.java
index 53560ad..387835f 100644
--- a/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/OIDCC4UIProviderValidator.java
+++ b/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/OIDCC4UIProviderValidator.java
@@ -21,9 +21,9 @@
 import javax.validation.ConstraintValidatorContext;
 import org.apache.syncope.common.lib.types.EntityViolationType;
 import org.apache.syncope.common.lib.types.ImplementationEngine;
+import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProvider;
 import org.apache.syncope.core.persistence.api.entity.resource.Item;
 import org.apache.syncope.core.provisioning.api.data.ItemTransformer;
-import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProvider;
 
 public class OIDCC4UIProviderValidator extends AbstractValidator<OIDCC4UIProviderCheck, OIDCC4UIProvider> {
 
diff --git a/ext/oidcc4ui/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/OIDCC4UIProviderActions.java b/ext/oidcc4ui/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/OIDCC4UIProviderActions.java
index d0e47a2..f4249db 100644
--- a/ext/oidcc4ui/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/OIDCC4UIProviderActions.java
+++ b/ext/oidcc4ui/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/OIDCC4UIProviderActions.java
@@ -18,9 +18,9 @@
  */
 package org.apache.syncope.core.provisioning.api;
 
+import org.apache.syncope.common.lib.oidc.OIDCLoginResponse;
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.request.UserUR;
-import org.apache.syncope.common.lib.oidc.OIDCLoginResponse;
 import org.apache.syncope.common.lib.to.UserTO;
 
 public interface OIDCC4UIProviderActions {
diff --git a/ext/oidcc4ui/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/OIDCC4UIProviderDataBinderImpl.java b/ext/oidcc4ui/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/OIDCC4UIProviderDataBinderImpl.java
index be18535..748077c 100644
--- a/ext/oidcc4ui/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/OIDCC4UIProviderDataBinderImpl.java
+++ b/ext/oidcc4ui/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/OIDCC4UIProviderDataBinderImpl.java
@@ -31,19 +31,19 @@
 import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
+import org.apache.syncope.core.persistence.api.dao.OIDCC4UIProviderDAO;
 import org.apache.syncope.core.persistence.api.entity.Entity;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
-import org.apache.syncope.core.provisioning.api.IntAttrName;
-import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
-import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.apache.syncope.core.persistence.api.entity.OIDCC4UIEntityFactory;
 import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProvider;
 import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProviderItem;
 import org.apache.syncope.core.persistence.api.entity.OIDCC4UIUserTemplate;
-import org.apache.syncope.core.persistence.api.dao.OIDCC4UIProviderDAO;
+import org.apache.syncope.core.provisioning.api.IntAttrName;
+import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
 import org.apache.syncope.core.provisioning.api.data.OIDCC4UIProviderDataBinder;
+import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class OIDCC4UIProviderDataBinderImpl implements OIDCC4UIProviderDataBinder {
 
diff --git a/ext/oidcc4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/OIDCC4UIProviderService.java b/ext/oidcc4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/OIDCC4UIProviderService.java
index 91d2bf0..93b6143 100644
--- a/ext/oidcc4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/OIDCC4UIProviderService.java
+++ b/ext/oidcc4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/OIDCC4UIProviderService.java
@@ -27,20 +27,20 @@
 import io.swagger.v3.oas.annotations.security.SecurityRequirement;
 import io.swagger.v3.oas.annotations.security.SecurityRequirements;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import java.util.List;
 import javax.validation.constraints.NotNull;
 import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import org.apache.syncope.common.lib.to.OIDCC4UIProviderTO;
-import java.util.List;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.PUT;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.core.HttpHeaders;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 
 /**
diff --git a/ext/oidcc4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/OIDCC4UIService.java b/ext/oidcc4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/OIDCC4UIService.java
index be1a1f0..7f29b13 100644
--- a/ext/oidcc4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/OIDCC4UIService.java
+++ b/ext/oidcc4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/OIDCC4UIService.java
@@ -27,8 +27,8 @@
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import org.apache.syncope.common.lib.oidc.OIDCConstants;
-import org.apache.syncope.common.lib.oidc.OIDCRequest;
 import org.apache.syncope.common.lib.oidc.OIDCLoginResponse;
+import org.apache.syncope.common.lib.oidc.OIDCRequest;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 
 /**
diff --git a/ext/oidcc4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/OIDCC4UIProviderServiceImpl.java b/ext/oidcc4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/OIDCC4UIProviderServiceImpl.java
index 33bf07b..60c9ccd 100644
--- a/ext/oidcc4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/OIDCC4UIProviderServiceImpl.java
+++ b/ext/oidcc4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/OIDCC4UIProviderServiceImpl.java
@@ -23,9 +23,9 @@
 import javax.ws.rs.core.Response;
 import org.apache.syncope.common.lib.to.OIDCC4UIProviderTO;
 import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.common.rest.api.service.OIDCC4UIProviderService;
 import org.apache.syncope.core.logic.OIDCC4UIProviderLogic;
 import org.springframework.stereotype.Service;
-import org.apache.syncope.common.rest.api.service.OIDCC4UIProviderService;
 
 @Service
 public class OIDCC4UIProviderServiceImpl extends AbstractService implements OIDCC4UIProviderService {
diff --git a/ext/oidcc4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/OIDCC4UIServiceImpl.java b/ext/oidcc4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/OIDCC4UIServiceImpl.java
index 02c7361..b57ccf0 100644
--- a/ext/oidcc4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/OIDCC4UIServiceImpl.java
+++ b/ext/oidcc4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/OIDCC4UIServiceImpl.java
@@ -20,11 +20,11 @@
 
 import java.util.Optional;
 import javax.ws.rs.core.HttpHeaders;
+import org.apache.syncope.common.lib.oidc.OIDCLoginResponse;
 import org.apache.syncope.common.lib.oidc.OIDCRequest;
+import org.apache.syncope.common.rest.api.service.OIDCC4UIService;
 import org.apache.syncope.core.logic.OIDCC4UILogic;
 import org.springframework.stereotype.Service;
-import org.apache.syncope.common.lib.oidc.OIDCLoginResponse;
-import org.apache.syncope.common.rest.api.service.OIDCC4UIService;
 
 @Service
 public class OIDCC4UIServiceImpl extends AbstractService implements OIDCC4UIService {
diff --git a/ext/saml2sp4ui/client-common-ui/src/main/java/org/apache/syncope/client/ui/commons/panels/AbstractSAMLSSOLoginFormPanel.java b/ext/saml2sp4ui/client-common-ui/src/main/java/org/apache/syncope/client/ui/commons/panels/AbstractSAMLSSOLoginFormPanel.java
index 97c5aa3..8f3d77a 100644
--- a/ext/saml2sp4ui/client-common-ui/src/main/java/org/apache/syncope/client/ui/commons/panels/AbstractSAMLSSOLoginFormPanel.java
+++ b/ext/saml2sp4ui/client-common-ui/src/main/java/org/apache/syncope/client/ui/commons/panels/AbstractSAMLSSOLoginFormPanel.java
@@ -26,6 +26,7 @@
 import org.apache.syncope.client.ui.commons.SAML2SP4UIConstants;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.common.lib.to.SAML2SP4UIIdPTO;
+import org.apache.syncope.common.rest.api.service.SAML2SP4UIIdPService;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.markup.html.form.IChoiceRenderer;
@@ -36,7 +37,6 @@
 import org.apache.wicket.request.http.handler.RedirectRequestHandler;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.syncope.common.rest.api.service.SAML2SP4UIIdPService;
 
 public abstract class AbstractSAMLSSOLoginFormPanel extends BaseSSOLoginFormPanel {
 
diff --git a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/SAML2SP4UI.java b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/SAML2SP4UI.java
index 68b38e3..574d9c7 100644
--- a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/SAML2SP4UI.java
+++ b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/SAML2SP4UI.java
@@ -22,9 +22,9 @@
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
-import org.apache.syncope.client.ui.commons.annotations.ExtPage;
 import org.apache.syncope.client.console.panels.SAML2IdPsDirectoryPanel;
 import org.apache.syncope.client.console.panels.SAML2SPPanel;
+import org.apache.syncope.client.ui.commons.annotations.ExtPage;
 import org.apache.syncope.common.lib.types.SAML2SP4UIEntitlement;
 import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
 import org.apache.wicket.extensions.markup.html.tabs.ITab;
diff --git a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/SAML2SPLogin.java b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/SAML2SPLogin.java
index 2d3ca44..d62bb72 100644
--- a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/SAML2SPLogin.java
+++ b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/pages/SAML2SPLogin.java
@@ -23,10 +23,10 @@
 import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.SAML2SP4UIConstants;
 import org.apache.wicket.authentication.IAuthenticationStrategy;
+import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.wicket.markup.html.WebPage;
 
 public class SAML2SPLogin extends WebPage {
 
diff --git a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/ImportMetadata.java b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/ImportMetadata.java
index 449795f..37237c9 100644
--- a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/ImportMetadata.java
+++ b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/ImportMetadata.java
@@ -24,9 +24,9 @@
 import java.util.ArrayList;
 import java.util.Locale;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.rest.SAML2IdPsRestClient;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
diff --git a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
index fc0735b..40470a3 100644
--- a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
+++ b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
@@ -26,10 +26,7 @@
 import java.util.Iterator;
 import java.util.List;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.console.wizards.SAML2IdPWizardBuilder;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.layout.UserFormLayoutInfo;
 import org.apache.syncope.client.console.pages.BasePage;
@@ -43,8 +40,11 @@
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksTogglePanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.XMLEditorPanel;
+import org.apache.syncope.client.console.wizards.SAML2IdPWizardBuilder;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
 import org.apache.syncope.client.console.wizards.any.UserTemplateWizardBuilder;
+import org.apache.syncope.client.ui.commons.Constants;
+import org.apache.syncope.client.ui.commons.DirectoryDataProvider;
 import org.apache.syncope.client.ui.commons.panels.WizardModalPanel;
 import org.apache.syncope.client.ui.commons.wizards.AjaxWizard;
 import org.apache.syncope.client.ui.commons.wizards.any.AnyWrapper;
diff --git a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAMLSSOLoginFormPanel.java b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAMLSSOLoginFormPanel.java
index 5fa2e93..e333983 100644
--- a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAMLSSOLoginFormPanel.java
+++ b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/panels/SAMLSSOLoginFormPanel.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.client.console.panels;
 
-import org.apache.syncope.client.ui.commons.panels.AbstractSAMLSSOLoginFormPanel;
 import org.apache.syncope.client.ui.commons.BaseSession;
+import org.apache.syncope.client.ui.commons.panels.AbstractSAMLSSOLoginFormPanel;
 
 public class SAMLSSOLoginFormPanel extends AbstractSAMLSSOLoginFormPanel {
 
diff --git a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/wizards/SAML2IdPWizardBuilder.java b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/wizards/SAML2IdPWizardBuilder.java
index 6c86b80..775c02b 100644
--- a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/wizards/SAML2IdPWizardBuilder.java
+++ b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/wizards/SAML2IdPWizardBuilder.java
@@ -31,8 +31,8 @@
 import org.apache.syncope.client.console.panels.SAML2IdPsDirectoryPanel;
 import org.apache.syncope.client.console.rest.ImplementationRestClient;
 import org.apache.syncope.client.console.rest.SAML2IdPsRestClient;
-import org.apache.syncope.client.console.wizards.mapping.JEXLTransformersTogglePanel;
 import org.apache.syncope.client.console.wizards.mapping.ItemTransformersTogglePanel;
+import org.apache.syncope.client.console.wizards.mapping.JEXLTransformersTogglePanel;
 import org.apache.syncope.client.console.wizards.mapping.SAML2IdPMappingPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxCheckBoxPanel;
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxDropDownChoicePanel;
diff --git a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/SAML2SP4UIIdPLogic.java b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/SAML2SP4UIIdPLogic.java
index 1518797..1f6d9f4 100644
--- a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/SAML2SP4UIIdPLogic.java
+++ b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/SAML2SP4UIIdPLogic.java
@@ -30,11 +30,11 @@
 import org.apache.syncope.core.logic.init.SAML2SP4UILoader;
 import org.apache.syncope.core.logic.saml2.SAML2ClientCache;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.core.persistence.api.dao.SAML2SP4UIIdPDAO;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
+import org.apache.syncope.core.provisioning.api.data.SAML2SP4UIIdPDataBinder;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
-import org.apache.syncope.core.persistence.api.dao.SAML2SP4UIIdPDAO;
-import org.apache.syncope.core.provisioning.api.data.SAML2SP4UIIdPDataBinder;
 
 public class SAML2SP4UIIdPLogic extends AbstractTransactionalLogic<SAML2SP4UIIdPTO> {
 
diff --git a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/SAML2SP4UILogic.java b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/SAML2SP4UILogic.java
index 49b1369..65fbe76 100644
--- a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/SAML2SP4UILogic.java
+++ b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/SAML2SP4UILogic.java
@@ -36,28 +36,26 @@
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.EntityTO;
-import org.apache.syncope.common.lib.saml2.SAML2Request;
 import org.apache.syncope.common.lib.saml2.SAML2LoginResponse;
+import org.apache.syncope.common.lib.saml2.SAML2Request;
 import org.apache.syncope.common.lib.saml2.SAML2Response;
+import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.CipherAlgorithm;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.common.lib.types.SAML2BindingType;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
 import org.apache.syncope.core.logic.init.SAML2SP4UILoader;
 import org.apache.syncope.core.logic.saml2.NoOpSessionStore;
 import org.apache.syncope.core.logic.saml2.SAML2ClientCache;
 import org.apache.syncope.core.logic.saml2.SAML2SP4UIContext;
 import org.apache.syncope.core.logic.saml2.SAML2SP4UIUserManager;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.core.persistence.api.dao.SAML2SP4UIIdPDAO;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdPItem;
 import org.apache.syncope.core.provisioning.api.RequestedAuthnContextProvider;
 import org.apache.syncope.core.provisioning.api.data.AccessTokenDataBinder;
-import org.opensaml.saml.saml2.core.LogoutResponse;
-import org.opensaml.saml.saml2.core.NameID;
-import org.opensaml.saml.saml2.core.StatusCode;
-import org.pac4j.core.context.session.SessionStore;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
 import org.apache.syncope.core.spring.ImplementationManager;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
@@ -65,11 +63,15 @@
 import org.apache.syncope.core.spring.security.Encryptor;
 import org.opensaml.saml.common.xml.SAMLConstants;
 import org.opensaml.saml.saml2.core.AuthnRequest;
+import org.opensaml.saml.saml2.core.LogoutResponse;
+import org.opensaml.saml.saml2.core.NameID;
 import org.opensaml.saml.saml2.core.RequestedAuthnContext;
+import org.opensaml.saml.saml2.core.StatusCode;
 import org.opensaml.saml.saml2.metadata.AssertionConsumerService;
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
 import org.opensaml.saml.saml2.metadata.impl.AssertionConsumerServiceBuilder;
 import org.pac4j.core.context.WebContext;
+import org.pac4j.core.context.session.SessionStore;
 import org.pac4j.core.exception.http.RedirectionAction;
 import org.pac4j.core.exception.http.WithContentAction;
 import org.pac4j.core.exception.http.WithLocationAction;
@@ -84,10 +86,8 @@
 import org.pac4j.saml.redirect.SAML2RedirectionActionBuilder;
 import org.pac4j.saml.sso.impl.SAML2AuthnRequestBuilder;
 import org.springframework.beans.BeanUtils;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.ResourceUtils;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdPItem;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
-import org.apache.syncope.core.persistence.api.dao.SAML2SP4UIIdPDAO;
 
 public class SAML2SP4UILogic extends AbstractTransactionalLogic<EntityTO> {
 
diff --git a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/NoOpSessionStore.java b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/NoOpSessionStore.java
index c3c1bd5..35b23d7 100644
--- a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/NoOpSessionStore.java
+++ b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/NoOpSessionStore.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.core.logic.saml2;
 
 import java.util.Optional;
-
 import org.pac4j.core.context.WebContext;
 import org.pac4j.core.context.session.SessionStore;
 
diff --git a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ClientCache.java b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ClientCache.java
index 5097bc8..be8295a 100644
--- a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ClientCache.java
+++ b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ClientCache.java
@@ -32,17 +32,17 @@
 import org.apache.syncope.common.lib.to.ItemTO;
 import org.apache.syncope.common.lib.to.SAML2SP4UIIdPTO;
 import org.apache.syncope.common.lib.types.SAML2BindingType;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
 import org.opensaml.saml.common.xml.SAMLConstants;
 import org.opensaml.saml.saml2.core.NameID;
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
 import org.pac4j.core.http.callback.NoParameterCallbackUrlResolver;
 import org.pac4j.saml.client.SAML2Client;
 import org.pac4j.saml.config.SAML2Configuration;
-import org.springframework.core.io.ByteArrayResource;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
 import org.pac4j.saml.metadata.SAML2IdentityProviderMetadataResolver;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.core.io.ByteArrayResource;
 
 /**
  * Basic in-memory cache for available {@link SAML2Client} instances.
diff --git a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2SP4UIUserManager.java b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2SP4UIUserManager.java
index ee39795..fd92cb7 100644
--- a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2SP4UIUserManager.java
+++ b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2SP4UIUserManager.java
@@ -32,14 +32,17 @@
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.request.UserUR;
-import org.apache.syncope.common.lib.to.PropagationStatus;
 import org.apache.syncope.common.lib.saml2.SAML2LoginResponse;
+import org.apache.syncope.common.lib.to.PropagationStatus;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.core.persistence.api.dao.SAML2SP4UIIdPDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.IntAttrName;
 import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
+import org.apache.syncope.core.provisioning.api.SAML2SP4UIIdPActions;
 import org.apache.syncope.core.provisioning.api.UserProvisioningManager;
 import org.apache.syncope.core.provisioning.api.data.ItemTransformer;
 import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
@@ -51,9 +54,6 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
-import org.apache.syncope.core.persistence.api.dao.SAML2SP4UIIdPDAO;
-import org.apache.syncope.core.provisioning.api.SAML2SP4UIIdPActions;
 
 public class SAML2SP4UIUserManager {
 
diff --git a/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPASAML2SP4UIIdPDAO.java b/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPASAML2SP4UIIdPDAO.java
index 98925cd..21726c9 100644
--- a/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPASAML2SP4UIIdPDAO.java
+++ b/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPASAML2SP4UIIdPDAO.java
@@ -21,10 +21,10 @@
 import java.util.List;
 import javax.persistence.NoResultException;
 import javax.persistence.TypedQuery;
+import org.apache.syncope.core.persistence.api.dao.SAML2SP4UIIdPDAO;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
 import org.apache.syncope.core.persistence.jpa.entity.JPASAML2SP4UIIdP;
 import org.springframework.transaction.annotation.Transactional;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
-import org.apache.syncope.core.persistence.api.dao.SAML2SP4UIIdPDAO;
 
 public class JPASAML2SP4UIIdPDAO extends AbstractDAO<SAML2SP4UIIdP> implements SAML2SP4UIIdPDAO {
 
diff --git a/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2SP4UIEntityFactory.java b/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2SP4UIEntityFactory.java
index 5133cbb..12b0489 100644
--- a/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2SP4UIEntityFactory.java
+++ b/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2SP4UIEntityFactory.java
@@ -19,11 +19,11 @@
 package org.apache.syncope.core.persistence.jpa.entity;
 
 import org.apache.syncope.core.persistence.api.entity.Entity;
-import org.apache.syncope.core.spring.security.SecureRandomUtils;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIUserTemplate;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdPItem;
 import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIEntityFactory;
 import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdPItem;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIUserTemplate;
+import org.apache.syncope.core.spring.security.SecureRandomUtils;
 
 public class JPASAML2SP4UIEntityFactory implements SAML2SP4UIEntityFactory {
 
diff --git a/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2SP4UIIdP.java b/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2SP4UIIdP.java
index c6647db..1f00bf6 100644
--- a/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2SP4UIIdP.java
+++ b/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2SP4UIIdP.java
@@ -39,10 +39,10 @@
 import org.apache.syncope.common.lib.types.SAML2BindingType;
 import org.apache.syncope.common.lib.types.SAML2SP4UIImplementationType;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
-import org.apache.syncope.core.persistence.api.entity.resource.Item;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIUserTemplate;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdPItem;
 import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdPItem;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIUserTemplate;
+import org.apache.syncope.core.persistence.api.entity.resource.Item;
 import org.apache.syncope.core.persistence.jpa.validation.entity.SAML2SP4UIIdPCheck;
 
 @Entity
diff --git a/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2SP4UIIdPItem.java b/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2SP4UIIdPItem.java
index b76b95e..a8b998a 100644
--- a/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2SP4UIIdPItem.java
+++ b/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2SP4UIIdPItem.java
@@ -31,9 +31,9 @@
 import javax.persistence.UniqueConstraint;
 import org.apache.syncope.common.lib.types.IdRepoImplementationType;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
-import org.apache.syncope.core.persistence.jpa.entity.resource.AbstractItem;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdPItem;
 import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdPItem;
+import org.apache.syncope.core.persistence.jpa.entity.resource.AbstractItem;
 
 @Entity
 @Table(name = JPASAML2SP4UIIdPItem.TABLE)
diff --git a/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2SP4UIUserTemplate.java b/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2SP4UIUserTemplate.java
index 154bfdf..f4ef807 100644
--- a/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2SP4UIUserTemplate.java
+++ b/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2SP4UIUserTemplate.java
@@ -22,9 +22,9 @@
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
-import org.apache.syncope.core.persistence.jpa.entity.resource.AbstractAnyTemplate;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIUserTemplate;
 import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIUserTemplate;
+import org.apache.syncope.core.persistence.jpa.entity.resource.AbstractAnyTemplate;
 
 @Entity
 @Table(name = JPASAML2SP4UIUserTemplate.TABLE, uniqueConstraints =
diff --git a/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SAML2SP4UIIdPCheck.java b/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SAML2SP4UIIdPCheck.java
index 938783e..ad27821 100644
--- a/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SAML2SP4UIIdPCheck.java
+++ b/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SAML2SP4UIIdPCheck.java
@@ -23,7 +23,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-
 import javax.validation.Constraint;
 import javax.validation.Payload;
 
diff --git a/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SAML2SP4UIIdPValidator.java b/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SAML2SP4UIIdPValidator.java
index 98ce392..f8f2661 100644
--- a/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SAML2SP4UIIdPValidator.java
+++ b/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/validation/entity/SAML2SP4UIIdPValidator.java
@@ -21,9 +21,9 @@
 import javax.validation.ConstraintValidatorContext;
 import org.apache.syncope.common.lib.types.EntityViolationType;
 import org.apache.syncope.common.lib.types.ImplementationEngine;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
 import org.apache.syncope.core.persistence.api.entity.resource.Item;
 import org.apache.syncope.core.provisioning.api.data.ItemTransformer;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
 
 public class SAML2SP4UIIdPValidator extends AbstractValidator<SAML2SP4UIIdPCheck, SAML2SP4UIIdP> {
 
diff --git a/ext/saml2sp4ui/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2SP4UIIdPDataBinderImpl.java b/ext/saml2sp4ui/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2SP4UIIdPDataBinderImpl.java
index 8d36ad2..93f9917 100644
--- a/ext/saml2sp4ui/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2SP4UIIdPDataBinderImpl.java
+++ b/ext/saml2sp4ui/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2SP4UIIdPDataBinderImpl.java
@@ -32,19 +32,19 @@
 import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
 import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
+import org.apache.syncope.core.persistence.api.dao.SAML2SP4UIIdPDAO;
 import org.apache.syncope.core.persistence.api.entity.Entity;
 import org.apache.syncope.core.persistence.api.entity.Implementation;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIEntityFactory;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdPItem;
+import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIUserTemplate;
 import org.apache.syncope.core.provisioning.api.IntAttrName;
 import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
+import org.apache.syncope.core.provisioning.api.data.SAML2SP4UIIdPDataBinder;
 import org.apache.syncope.core.provisioning.api.jexl.JexlUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIUserTemplate;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdPItem;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIEntityFactory;
-import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIIdP;
-import org.apache.syncope.core.persistence.api.dao.SAML2SP4UIIdPDAO;
-import org.apache.syncope.core.provisioning.api.data.SAML2SP4UIIdPDataBinder;
 
 public class SAML2SP4UIIdPDataBinderImpl implements SAML2SP4UIIdPDataBinder {
 
diff --git a/ext/saml2sp4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2SP4UIService.java b/ext/saml2sp4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2SP4UIService.java
index b709931..7047309 100644
--- a/ext/saml2sp4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2SP4UIService.java
+++ b/ext/saml2sp4ui/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2SP4UIService.java
@@ -31,8 +31,8 @@
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import org.apache.syncope.common.lib.saml2.SAML2Request;
 import org.apache.syncope.common.lib.saml2.SAML2LoginResponse;
+import org.apache.syncope.common.lib.saml2.SAML2Request;
 import org.apache.syncope.common.lib.saml2.SAML2Response;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 
diff --git a/ext/saml2sp4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SP4UIIdPServiceImpl.java b/ext/saml2sp4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SP4UIIdPServiceImpl.java
index ab1a01e..2773d61 100644
--- a/ext/saml2sp4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SP4UIIdPServiceImpl.java
+++ b/ext/saml2sp4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SP4UIIdPServiceImpl.java
@@ -23,9 +23,9 @@
 import javax.ws.rs.core.Response;
 import org.apache.syncope.common.lib.to.SAML2SP4UIIdPTO;
 import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.common.rest.api.service.SAML2SP4UIIdPService;
 import org.apache.syncope.core.logic.SAML2SP4UIIdPLogic;
 import org.springframework.stereotype.Service;
-import org.apache.syncope.common.rest.api.service.SAML2SP4UIIdPService;
 
 @Service
 public class SAML2SP4UIIdPServiceImpl extends AbstractService implements SAML2SP4UIIdPService {
diff --git a/ext/saml2sp4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SP4UIServiceImpl.java b/ext/saml2sp4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SP4UIServiceImpl.java
index a151b1d..8ee1844 100644
--- a/ext/saml2sp4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SP4UIServiceImpl.java
+++ b/ext/saml2sp4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SP4UIServiceImpl.java
@@ -24,8 +24,8 @@
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.StreamingOutput;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.common.lib.saml2.SAML2Request;
 import org.apache.syncope.common.lib.saml2.SAML2LoginResponse;
+import org.apache.syncope.common.lib.saml2.SAML2Request;
 import org.apache.syncope.common.lib.saml2.SAML2Response;
 import org.apache.syncope.common.rest.api.service.SAML2SP4UIService;
 import org.apache.syncope.core.logic.SAML2SP4UILogic;
diff --git a/ext/scimv2/common-lib/src/main/java/org/apache/syncope/common/lib/scim/SCIMGeneralConf.java b/ext/scimv2/common-lib/src/main/java/org/apache/syncope/common/lib/scim/SCIMGeneralConf.java
index 47131e0..20da7ca 100644
--- a/ext/scimv2/common-lib/src/main/java/org/apache/syncope/common/lib/scim/SCIMGeneralConf.java
+++ b/ext/scimv2/common-lib/src/main/java/org/apache/syncope/common/lib/scim/SCIMGeneralConf.java
@@ -22,7 +22,6 @@
 import java.io.Serializable;
 import java.time.OffsetDateTime;
 import java.util.Optional;
-
 import org.apache.commons.lang3.StringUtils;
 
 public class SCIMGeneralConf implements Serializable {
diff --git a/ext/scimv2/logic/src/test/java/org/apache/syncope/core/logic/scim/SCIMFilterTest.java b/ext/scimv2/logic/src/test/java/org/apache/syncope/core/logic/scim/SCIMFilterTest.java
index d29d383..7c7816d 100644
--- a/ext/scimv2/logic/src/test/java/org/apache/syncope/core/logic/scim/SCIMFilterTest.java
+++ b/ext/scimv2/logic/src/test/java/org/apache/syncope/core/logic/scim/SCIMFilterTest.java
@@ -160,7 +160,8 @@
 
     @Test
     public void type() {
-        SearchCond cond = SearchCondConverter.convert(VISITOR, "userType eq \"Employee\" and (emails.type eq \"work\")");
+        SearchCond cond = SearchCondConverter.convert(
+                VISITOR, "userType eq \"Employee\" and (emails.type eq \"work\")");
         assertNotNull(cond);
         assertEquals(SearchCond.Type.AND, cond.getType());
 
diff --git a/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/Group.java b/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/Group.java
index a80df59..5bddad1 100644
--- a/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/Group.java
+++ b/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/Group.java
@@ -22,9 +22,8 @@
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-import org.apache.syncope.ext.scimv2.api.type.Function;
-
 import java.util.Optional;
+import org.apache.syncope.ext.scimv2.api.type.Function;
 
 @JsonPropertyOrder({ "value", "$ref", "display", "type" })
 public class Group extends Reference {
diff --git a/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/Meta.java b/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/Meta.java
index 2e7c2bb..7c6d7a9 100644
--- a/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/Meta.java
+++ b/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/Meta.java
@@ -23,7 +23,6 @@
 import com.fasterxml.jackson.annotation.JsonProperty;
 import java.time.OffsetDateTime;
 import java.util.Optional;
-
 import javax.ws.rs.core.EntityTag;
 import org.apache.syncope.ext.scimv2.api.type.Resource;
 
diff --git a/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/SCIMError.java b/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/SCIMError.java
index 231cbce..f4f29e0 100644
--- a/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/SCIMError.java
+++ b/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/SCIMError.java
@@ -23,7 +23,6 @@
 import com.fasterxml.jackson.annotation.JsonFormat.Shape;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonPropertyOrder;
-
 import java.util.List;
 import javax.ws.rs.core.Response;
 import org.apache.syncope.ext.scimv2.api.BadRequestException;
diff --git a/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/SCIMSearchRequest.java b/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/SCIMSearchRequest.java
index 576667c..2322efa 100644
--- a/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/SCIMSearchRequest.java
+++ b/ext/scimv2/scim-rest-api/src/main/java/org/apache/syncope/ext/scimv2/api/data/SCIMSearchRequest.java
@@ -23,7 +23,6 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
-
 import org.apache.syncope.ext.scimv2.api.type.Resource;
 import org.apache.syncope.ext.scimv2.api.type.SortOrder;
 
diff --git a/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/service/UserServiceImpl.java b/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/service/UserServiceImpl.java
index f2390e8..23fb340 100644
--- a/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/service/UserServiceImpl.java
+++ b/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/service/UserServiceImpl.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.ext.scimv2.cxf.service;
 
 import java.util.List;
-
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.ResponseBuilder;
 import org.apache.commons.lang3.ArrayUtils;
diff --git a/fit/build-tools/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java b/fit/build-tools/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java
index d6d3e5a..3811dde 100644
--- a/fit/build-tools/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java
+++ b/fit/build-tools/src/main/java/org/apache/directory/server/core/normalization/NormalizationInterceptor.java
@@ -48,8 +48,8 @@
 import org.apache.directory.api.ldap.model.schema.normalizers.NameComponentNormalizer;
 import org.apache.directory.server.core.api.DirectoryService;
 import org.apache.directory.server.core.api.InterceptorEnum;
-import org.apache.directory.server.core.api.filtering.EntryFilteringCursorImpl;
 import org.apache.directory.server.core.api.filtering.EntryFilteringCursor;
+import org.apache.directory.server.core.api.filtering.EntryFilteringCursorImpl;
 import org.apache.directory.server.core.api.interceptor.BaseInterceptor;
 import org.apache.directory.server.core.api.interceptor.context.AddOperationContext;
 import org.apache.directory.server.core.api.interceptor.context.CompareOperationContext;
diff --git a/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/ConnectorServerStartStopListener.java b/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/ConnectorServerStartStopListener.java
index 2ff2d78..4467cb5 100644
--- a/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/ConnectorServerStartStopListener.java
+++ b/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/ConnectorServerStartStopListener.java
@@ -23,7 +23,6 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
-
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
 import javax.servlet.annotation.WebListener;
diff --git a/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/H2StartStopListener.java b/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/H2StartStopListener.java
index e37ef58..cd3e77c 100644
--- a/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/H2StartStopListener.java
+++ b/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/H2StartStopListener.java
@@ -21,7 +21,6 @@
 import java.nio.charset.StandardCharsets;
 import java.sql.SQLException;
 import java.util.Objects;
-
 import javax.servlet.ServletContext;
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
diff --git a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/DummyPullCorrelationRule.java b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/DummyPullCorrelationRule.java
index c37bda3..b9087c5 100644
--- a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/DummyPullCorrelationRule.java
+++ b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/DummyPullCorrelationRule.java
@@ -18,9 +18,9 @@
  */
 package org.apache.syncope.fit.core.reference;
 
-import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.dao.PullCorrelationRule;
 import org.apache.syncope.core.persistence.api.dao.PullCorrelationRuleConfClass;
+import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.identityconnectors.framework.common.objects.SyncDelta;
 
diff --git a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/ITImplementationLookup.java b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/ITImplementationLookup.java
index bb99f27..6974052 100644
--- a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/ITImplementationLookup.java
+++ b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/ITImplementationLookup.java
@@ -41,11 +41,6 @@
 import org.apache.syncope.common.lib.report.UserReportletConf;
 import org.apache.syncope.common.lib.types.IdMImplementationType;
 import org.apache.syncope.common.lib.types.IdRepoImplementationType;
-import org.apache.syncope.core.provisioning.java.job.report.AuditReportlet;
-import org.apache.syncope.core.provisioning.java.job.report.GroupReportlet;
-import org.apache.syncope.core.provisioning.java.job.report.ReconciliationReportlet;
-import org.apache.syncope.core.provisioning.java.job.report.StaticReportlet;
-import org.apache.syncope.core.provisioning.java.job.report.UserReportlet;
 import org.apache.syncope.core.persistence.api.ImplementationLookup;
 import org.apache.syncope.core.persistence.api.dao.AccountRule;
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
@@ -59,13 +54,18 @@
 import org.apache.syncope.core.persistence.jpa.attrvalue.validation.EmailAddressValidator;
 import org.apache.syncope.core.persistence.jpa.dao.DefaultPullCorrelationRule;
 import org.apache.syncope.core.persistence.jpa.dao.DefaultPushCorrelationRule;
-import org.apache.syncope.core.provisioning.java.pushpull.DefaultProvisionSorter;
+import org.apache.syncope.core.provisioning.java.job.report.AuditReportlet;
+import org.apache.syncope.core.provisioning.java.job.report.GroupReportlet;
+import org.apache.syncope.core.provisioning.java.job.report.ReconciliationReportlet;
+import org.apache.syncope.core.provisioning.java.job.report.StaticReportlet;
+import org.apache.syncope.core.provisioning.java.job.report.UserReportlet;
 import org.apache.syncope.core.provisioning.java.propagation.AzurePropagationActions;
 import org.apache.syncope.core.provisioning.java.propagation.DBPasswordPropagationActions;
 import org.apache.syncope.core.provisioning.java.propagation.GoogleAppsPropagationActions;
 import org.apache.syncope.core.provisioning.java.propagation.LDAPMembershipPropagationActions;
 import org.apache.syncope.core.provisioning.java.propagation.LDAPPasswordPropagationActions;
 import org.apache.syncope.core.provisioning.java.pushpull.DBPasswordPullActions;
+import org.apache.syncope.core.provisioning.java.pushpull.DefaultProvisionSorter;
 import org.apache.syncope.core.provisioning.java.pushpull.LDAPMembershipPullActions;
 import org.apache.syncope.core.provisioning.java.pushpull.LDAPPasswordPullActions;
 import org.apache.syncope.core.spring.policy.DefaultAccountRule;
diff --git a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/SyslogRewriteAuditAppender.java b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/SyslogRewriteAuditAppender.java
index d4c5bbf..6d15fc3 100644
--- a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/SyslogRewriteAuditAppender.java
+++ b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/SyslogRewriteAuditAppender.java
@@ -27,8 +27,8 @@
 import org.apache.syncope.common.lib.types.AuditElements;
 import org.apache.syncope.common.lib.types.AuditLoggerName;
 import org.apache.syncope.core.logic.ConnectorLogic;
-import org.apache.syncope.core.logic.audit.DefaultRewriteAuditAppender;
 import org.apache.syncope.core.logic.ResourceLogic;
+import org.apache.syncope.core.logic.audit.DefaultRewriteAuditAppender;
 
 public class SyslogRewriteAuditAppender extends DefaultRewriteAuditAppender {
 
diff --git a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestFileAuditAppender.java b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestFileAuditAppender.java
index cbe4f44..8ae7623 100644
--- a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestFileAuditAppender.java
+++ b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestFileAuditAppender.java
@@ -30,8 +30,8 @@
 import org.apache.syncope.common.lib.types.AuditElements;
 import org.apache.syncope.common.lib.types.AuditLoggerName;
 import org.apache.syncope.core.logic.ConnectorLogic;
-import org.apache.syncope.core.logic.audit.DefaultAuditAppender;
 import org.apache.syncope.core.logic.ResourceLogic;
+import org.apache.syncope.core.logic.audit.DefaultAuditAppender;
 
 public class TestFileAuditAppender extends DefaultAuditAppender {
 
diff --git a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestFileRewriteAuditAppender.java b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestFileRewriteAuditAppender.java
index afc7528..9762fb7 100644
--- a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestFileRewriteAuditAppender.java
+++ b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestFileRewriteAuditAppender.java
@@ -29,8 +29,8 @@
 import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.syncope.common.lib.types.AuditElements;
 import org.apache.syncope.common.lib.types.AuditLoggerName;
-import org.apache.syncope.core.logic.audit.DefaultRewriteAuditAppender;
 import org.apache.syncope.core.logic.ResourceLogic;
+import org.apache.syncope.core.logic.audit.DefaultRewriteAuditAppender;
 
 public class TestFileRewriteAuditAppender extends DefaultRewriteAuditAppender {
 
diff --git a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestNotificationRecipientsProvider.java b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestNotificationRecipientsProvider.java
index 44e6922..b45d84d 100644
--- a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestNotificationRecipientsProvider.java
+++ b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestNotificationRecipientsProvider.java
@@ -20,8 +20,8 @@
 
 import java.util.Set;
 import org.apache.syncope.core.persistence.api.entity.Notification;
-import org.springframework.transaction.annotation.Transactional;
 import org.apache.syncope.core.provisioning.api.notification.RecipientsProvider;
+import org.springframework.transaction.annotation.Transactional;
 
 public class TestNotificationRecipientsProvider implements RecipientsProvider {
 
diff --git a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestPullActions.java b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestPullActions.java
index 7bbbcb2..78992bf 100644
--- a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestPullActions.java
+++ b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/TestPullActions.java
@@ -19,11 +19,11 @@
 package org.apache.syncope.fit.core.reference;
 
 import java.util.Optional;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.request.AnyCR;
 import org.apache.syncope.common.lib.request.AnyUR;
 import org.apache.syncope.common.lib.request.AttrPatch;
 import org.apache.syncope.common.lib.request.UserCR;
-import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.to.EntityTO;
 import org.apache.syncope.common.lib.types.PatchOperation;
 import org.apache.syncope.core.provisioning.api.pushpull.IgnoreProvisionException;
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/AbstractITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/AbstractITCase.java
index 45e6155..64f472e 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/AbstractITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/AbstractITCase.java
@@ -62,37 +62,37 @@
 import org.apache.syncope.common.keymaster.client.self.SelfKeymasterClientContext;
 import org.apache.syncope.common.keymaster.client.zookeeper.ZookeeperKeymasterClientContext;
 import org.apache.syncope.common.lib.AnyOperations;
-import org.apache.syncope.common.lib.request.AnyObjectUR;
-import org.apache.syncope.common.lib.request.AttrPatch;
-import org.apache.syncope.common.lib.request.GroupUR;
-import org.apache.syncope.common.lib.request.UserUR;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.audit.AuditEntry;
+import org.apache.syncope.common.lib.policy.AccessPolicyTO;
+import org.apache.syncope.common.lib.policy.AttrReleasePolicyTO;
+import org.apache.syncope.common.lib.policy.AuthPolicyTO;
+import org.apache.syncope.common.lib.policy.DefaultAccessPolicyConf;
+import org.apache.syncope.common.lib.policy.DefaultAttrReleasePolicyConf;
+import org.apache.syncope.common.lib.policy.DefaultAuthPolicyConf;
 import org.apache.syncope.common.lib.policy.PolicyTO;
 import org.apache.syncope.common.lib.request.AnyObjectCR;
+import org.apache.syncope.common.lib.request.AnyObjectUR;
+import org.apache.syncope.common.lib.request.AttrPatch;
 import org.apache.syncope.common.lib.request.GroupCR;
+import org.apache.syncope.common.lib.request.GroupUR;
 import org.apache.syncope.common.lib.request.UserCR;
-import org.apache.syncope.common.lib.to.SchemaTO;
+import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
-import org.apache.syncope.common.lib.Attr;
-import org.apache.syncope.common.lib.policy.AccessPolicyTO;
-import org.apache.syncope.common.lib.policy.DefaultAttrReleasePolicyConf;
-import org.apache.syncope.common.lib.policy.AttrReleasePolicyTO;
-import org.apache.syncope.common.lib.policy.DefaultAccessPolicyConf;
-import org.apache.syncope.common.lib.policy.DefaultAuthPolicyConf;
+import org.apache.syncope.common.lib.to.AuthModuleTO;
+import org.apache.syncope.common.lib.to.ClientAppTO;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
-import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
 import org.apache.syncope.common.lib.to.NotificationTO;
+import org.apache.syncope.common.lib.to.OIDCRPClientAppTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.to.ReportTO;
+import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.to.RoleTO;
-import org.apache.syncope.common.lib.to.UserTO;
-import org.apache.syncope.common.lib.to.AuthModuleTO;
-import org.apache.syncope.common.lib.policy.AuthPolicyTO;
-import org.apache.syncope.common.lib.to.ClientAppTO;
-import org.apache.syncope.common.lib.to.OIDCRPClientAppTO;
 import org.apache.syncope.common.lib.to.SAML2SPClientAppTO;
+import org.apache.syncope.common.lib.to.SchemaTO;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientAppType;
 import org.apache.syncope.common.lib.types.OIDCGrantType;
@@ -114,44 +114,44 @@
 import org.apache.syncope.common.rest.api.service.AuditService;
 import org.apache.syncope.common.rest.api.service.AuthModuleService;
 import org.apache.syncope.common.rest.api.service.AuthProfileService;
+import org.apache.syncope.common.rest.api.service.BpmnProcessService;
 import org.apache.syncope.common.rest.api.service.CamelRouteService;
 import org.apache.syncope.common.rest.api.service.ClientAppService;
 import org.apache.syncope.common.rest.api.service.ConnectorService;
+import org.apache.syncope.common.rest.api.service.DelegationService;
 import org.apache.syncope.common.rest.api.service.DynRealmService;
-import org.apache.syncope.common.rest.api.service.NotificationService;
-import org.apache.syncope.common.rest.api.service.wa.GoogleMfaAuthAccountService;
-import org.apache.syncope.common.rest.api.service.wa.GoogleMfaAuthTokenService;
-import org.apache.syncope.common.rest.api.service.PolicyService;
-import org.apache.syncope.common.rest.api.service.ReportService;
-import org.apache.syncope.common.rest.api.service.ResourceService;
 import org.apache.syncope.common.rest.api.service.GroupService;
 import org.apache.syncope.common.rest.api.service.ImplementationService;
 import org.apache.syncope.common.rest.api.service.MailTemplateService;
+import org.apache.syncope.common.rest.api.service.NotificationService;
+import org.apache.syncope.common.rest.api.service.OIDCC4UIProviderService;
+import org.apache.syncope.common.rest.api.service.OIDCC4UIService;
+import org.apache.syncope.common.rest.api.service.OIDCJWKSService;
+import org.apache.syncope.common.rest.api.service.PolicyService;
 import org.apache.syncope.common.rest.api.service.RealmService;
 import org.apache.syncope.common.rest.api.service.ReconciliationService;
 import org.apache.syncope.common.rest.api.service.RelationshipTypeService;
 import org.apache.syncope.common.rest.api.service.RemediationService;
+import org.apache.syncope.common.rest.api.service.ReportService;
 import org.apache.syncope.common.rest.api.service.ReportTemplateService;
+import org.apache.syncope.common.rest.api.service.ResourceService;
 import org.apache.syncope.common.rest.api.service.RoleService;
-import org.apache.syncope.common.rest.api.service.SCIMConfService;
-import org.apache.syncope.common.rest.api.service.SchemaService;
-import org.apache.syncope.common.rest.api.service.SecurityQuestionService;
-import org.apache.syncope.common.rest.api.service.SyncopeService;
-import org.apache.syncope.common.rest.api.service.TaskService;
-import org.apache.syncope.common.rest.api.service.UserSelfService;
-import org.apache.syncope.common.rest.api.service.UserService;
-import org.apache.syncope.common.rest.api.service.UserRequestService;
-import org.apache.syncope.common.rest.api.service.BpmnProcessService;
-import org.apache.syncope.common.rest.api.service.OIDCC4UIProviderService;
-import org.apache.syncope.common.rest.api.service.OIDCC4UIService;
-import org.apache.syncope.common.rest.api.service.OIDCJWKSService;
 import org.apache.syncope.common.rest.api.service.SAML2IdPEntityService;
 import org.apache.syncope.common.rest.api.service.SAML2SP4UIIdPService;
 import org.apache.syncope.common.rest.api.service.SAML2SP4UIService;
 import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
+import org.apache.syncope.common.rest.api.service.SCIMConfService;
 import org.apache.syncope.common.rest.api.service.SRARouteService;
-import org.apache.syncope.common.rest.api.service.DelegationService;
+import org.apache.syncope.common.rest.api.service.SchemaService;
+import org.apache.syncope.common.rest.api.service.SecurityQuestionService;
+import org.apache.syncope.common.rest.api.service.SyncopeService;
+import org.apache.syncope.common.rest.api.service.TaskService;
+import org.apache.syncope.common.rest.api.service.UserRequestService;
+import org.apache.syncope.common.rest.api.service.UserSelfService;
+import org.apache.syncope.common.rest.api.service.UserService;
 import org.apache.syncope.common.rest.api.service.UserWorkflowTaskService;
+import org.apache.syncope.common.rest.api.service.wa.GoogleMfaAuthAccountService;
+import org.apache.syncope.common.rest.api.service.wa.GoogleMfaAuthTokenService;
 import org.apache.syncope.common.rest.api.service.wa.ImpersonationService;
 import org.apache.syncope.common.rest.api.service.wa.U2FRegistrationService;
 import org.apache.syncope.common.rest.api.service.wa.WAConfigService;
@@ -279,109 +279,109 @@
 
     protected static JWSAlgorithm JWS_ALGORITHM;
 
-    protected static SyncopeClientFactoryBean clientFactory;
+    protected static SyncopeClientFactoryBean CLIENT_FACTORY;
 
-    protected static SyncopeClient adminClient;
+    protected static SyncopeClient ADMIN_CLIENT;
 
-    protected static SyncopeClient anonymusClient;
+    protected static SyncopeClient ANONYMOUS_CLIENT;
 
-    protected static SyncopeService syncopeService;
+    protected static SyncopeService SYNCOPE_SERVICE;
 
-    protected static ApplicationService applicationService;
+    protected static ApplicationService APPLICATION_SERVICE;
 
-    protected static AnyTypeClassService anyTypeClassService;
+    protected static AnyTypeClassService ANY_TYPE_CLASS_SERVICE;
 
-    protected static AnyTypeService anyTypeService;
+    protected static AnyTypeService ANY_TYPE_SERVICE;
 
-    protected static RelationshipTypeService relationshipTypeService;
+    protected static RelationshipTypeService RELATIONSHIP_TYPE_SERVICE;
 
-    protected static RealmService realmService;
+    protected static RealmService REALM_SERVICE;
 
-    protected static AnyObjectService anyObjectService;
+    protected static AnyObjectService ANY_OBJECT_SERVICE;
 
-    protected static RoleService roleService;
+    protected static RoleService ROLE_SERVICE;
 
-    protected static DynRealmService dynRealmService;
+    protected static DynRealmService DYN_REALM_SERVICE;
 
-    protected static UserService userService;
+    protected static UserService USER_SERVICE;
 
-    protected static UserSelfService userSelfService;
+    protected static UserSelfService USER_SELF_SERVICE;
 
-    protected static UserRequestService userRequestService;
+    protected static UserRequestService USER_REQUEST_SERVICE;
 
-    protected static UserWorkflowTaskService userWorkflowTaskService;
+    protected static UserWorkflowTaskService USER_WORKFLOW_TASK_SERVICE;
 
-    protected static GroupService groupService;
+    protected static GroupService GROUP_SERVICE;
 
-    protected static ResourceService resourceService;
+    protected static ResourceService RESOURCE_SERVICE;
 
-    protected static ConnectorService connectorService;
+    protected static ConnectorService CONNECTOR_SERVICE;
 
-    protected static AuditService auditService;
+    protected static AuditService AUDIT_SERVICE;
 
-    protected static ReportTemplateService reportTemplateService;
+    protected static ReportTemplateService REPORT_TEMPLATE_SERVICE;
 
-    protected static ReportService reportService;
+    protected static ReportService REPORT_SERVICE;
 
-    protected static TaskService taskService;
+    protected static TaskService TASK_SERVICE;
 
-    protected static ReconciliationService reconciliationService;
+    protected static ReconciliationService RECONCILIATION_SERVICE;
 
-    protected static BpmnProcessService bpmnProcessService;
+    protected static BpmnProcessService BPMN_PROCESS_SERVICE;
 
-    protected static MailTemplateService mailTemplateService;
+    protected static MailTemplateService MAIL_TEMPLATE_SERVICE;
 
-    protected static NotificationService notificationService;
+    protected static NotificationService NOTIFICATION_SERVICE;
 
-    protected static SchemaService schemaService;
+    protected static SchemaService SCHEMA_SERVICE;
 
-    protected static PolicyService policyService;
+    protected static PolicyService POLICY_SERVICE;
 
-    protected static AuthModuleService authModuleService;
+    protected static AuthModuleService AUTH_MODULE_SERVICE;
 
-    protected static SecurityQuestionService securityQuestionService;
+    protected static SecurityQuestionService SECURITY_QUESTION_SERVICE;
 
-    protected static ImplementationService implementationService;
+    protected static ImplementationService IMPLEMENTATION_SERVICE;
 
-    protected static RemediationService remediationService;
+    protected static RemediationService REMEDIATION_SERVICE;
 
-    protected static DelegationService delegationService;
+    protected static DelegationService DELEGATION_SERVICE;
 
-    protected static SRARouteService sraRouteService;
+    protected static SRARouteService SRA_ROUTE_SERVICE;
 
-    protected static CamelRouteService camelRouteService;
+    protected static CamelRouteService CAMEL_ROUTE_SERVICE;
 
-    protected static SAML2SP4UIService saml2SP4UIService;
+    protected static SAML2SP4UIService SAML2SP4UI_SERVICE;
 
-    protected static SAML2SP4UIIdPService saml2SP4UIIdPService;
+    protected static SAML2SP4UIIdPService SAML2SP4UI_IDP_SERVICE;
 
-    protected static OIDCC4UIService oidcClientService;
+    protected static OIDCC4UIService OIDCC4UI_SERVICE;
 
-    protected static OIDCC4UIProviderService oidcProviderService;
+    protected static OIDCC4UIProviderService OIDCC4UI_PROVIDER_SERVICE;
 
-    protected static SCIMConfService scimConfService;
+    protected static SCIMConfService SCIM_CONF_SERVICE;
 
-    protected static ClientAppService clientAppService;
+    protected static ClientAppService CLIENT_APP_SERVICE;
 
-    protected static AuthProfileService authProfileService;
+    protected static AuthProfileService AUTH_PROFILE_SERVICE;
 
-    protected static SAML2SPEntityService saml2SPEntityService;
+    protected static SAML2SPEntityService SAML2SP_ENTITY_SERVICE;
 
-    protected static SAML2IdPEntityService saml2IdPEntityService;
+    protected static SAML2IdPEntityService SAML2IDP_ENTITY_SERVICE;
 
-    protected static OIDCJWKSService oidcJWKSService;
+    protected static OIDCJWKSService OIDC_JWKS_SERVICE;
 
-    protected static WAConfigService waConfigService;
+    protected static WAConfigService WA_CONFIG_SERVICE;
 
-    protected static GoogleMfaAuthTokenService googleMfaAuthTokenService;
+    protected static GoogleMfaAuthTokenService GOOGLE_MFA_AUTH_TOKEN_SERVICE;
 
-    protected static GoogleMfaAuthAccountService googleMfaAuthAccountService;
+    protected static GoogleMfaAuthAccountService GOOGLE_MFA_AUTH_ACCOUNT_SERVICE;
 
-    protected static U2FRegistrationService u2fRegistrationService;
+    protected static U2FRegistrationService U2F_REGISTRATION_SERVICE;
 
-    protected static WebAuthnRegistrationService webAuthnRegistrationService;
+    protected static WebAuthnRegistrationService WEBAUTHN_REGISTRATION_SERVICE;
 
-    protected static ImpersonationService impersonationService;
+    protected static ImpersonationService IMPERSONATION_SERVICE;
 
     @BeforeAll
     public static void securitySetup() {
@@ -403,71 +403,71 @@
         assertNotNull(JWS_KEY);
         assertNotNull(JWT_ISSUER);
 
-        anonymusClient = clientFactory.create(new AnonymousAuthenticationHandler(ANONYMOUS_UNAME, ANONYMOUS_KEY));
+        ANONYMOUS_CLIENT = CLIENT_FACTORY.create(new AnonymousAuthenticationHandler(ANONYMOUS_UNAME, ANONYMOUS_KEY));
 
-        googleMfaAuthTokenService = anonymusClient.getService(GoogleMfaAuthTokenService.class);
-        googleMfaAuthAccountService = anonymusClient.getService(GoogleMfaAuthAccountService.class);
-        u2fRegistrationService = anonymusClient.getService(U2FRegistrationService.class);
-        webAuthnRegistrationService = anonymusClient.getService(WebAuthnRegistrationService.class);
-        impersonationService = anonymusClient.getService(ImpersonationService.class);
+        GOOGLE_MFA_AUTH_TOKEN_SERVICE = ANONYMOUS_CLIENT.getService(GoogleMfaAuthTokenService.class);
+        GOOGLE_MFA_AUTH_ACCOUNT_SERVICE = ANONYMOUS_CLIENT.getService(GoogleMfaAuthAccountService.class);
+        U2F_REGISTRATION_SERVICE = ANONYMOUS_CLIENT.getService(U2FRegistrationService.class);
+        WEBAUTHN_REGISTRATION_SERVICE = ANONYMOUS_CLIENT.getService(WebAuthnRegistrationService.class);
+        IMPERSONATION_SERVICE = ANONYMOUS_CLIENT.getService(ImpersonationService.class);
     }
 
     @BeforeAll
     public static void restSetup() {
-        clientFactory = new SyncopeClientFactoryBean().setAddress(ADDRESS);
+        CLIENT_FACTORY = new SyncopeClientFactoryBean().setAddress(ADDRESS);
 
         String envContentType = System.getProperty(ENV_KEY_CONTENT_TYPE);
         if (StringUtils.isNotBlank(envContentType)) {
-            clientFactory.setContentType(envContentType);
+            CLIENT_FACTORY.setContentType(envContentType);
         }
-        LOG.info("Performing IT with content type {}", clientFactory.getContentType().getMediaType());
+        LOG.info("Performing IT with content type {}", CLIENT_FACTORY.getContentType().getMediaType());
 
-        adminClient = clientFactory.create(ADMIN_UNAME, ADMIN_PWD);
+        ADMIN_CLIENT = CLIENT_FACTORY.create(ADMIN_UNAME, ADMIN_PWD);
 
-        syncopeService = adminClient.getService(SyncopeService.class);
-        applicationService = adminClient.getService(ApplicationService.class);
-        anyTypeClassService = adminClient.getService(AnyTypeClassService.class);
-        anyTypeService = adminClient.getService(AnyTypeService.class);
-        relationshipTypeService = adminClient.getService(RelationshipTypeService.class);
-        realmService = adminClient.getService(RealmService.class);
-        anyObjectService = adminClient.getService(AnyObjectService.class);
-        roleService = adminClient.getService(RoleService.class);
-        dynRealmService = adminClient.getService(DynRealmService.class);
-        userService = adminClient.getService(UserService.class);
-        userSelfService = adminClient.getService(UserSelfService.class);
-        userRequestService = adminClient.getService(UserRequestService.class);
-        userWorkflowTaskService = adminClient.getService(UserWorkflowTaskService.class);
-        groupService = adminClient.getService(GroupService.class);
-        resourceService = adminClient.getService(ResourceService.class);
-        connectorService = adminClient.getService(ConnectorService.class);
-        auditService = adminClient.getService(AuditService.class);
-        reportTemplateService = adminClient.getService(ReportTemplateService.class);
-        reportService = adminClient.getService(ReportService.class);
-        taskService = adminClient.getService(TaskService.class);
-        reconciliationService = adminClient.getService(ReconciliationService.class);
-        policyService = adminClient.getService(PolicyService.class);
-        bpmnProcessService = adminClient.getService(BpmnProcessService.class);
-        mailTemplateService = adminClient.getService(MailTemplateService.class);
-        notificationService = adminClient.getService(NotificationService.class);
-        schemaService = adminClient.getService(SchemaService.class);
-        securityQuestionService = adminClient.getService(SecurityQuestionService.class);
-        implementationService = adminClient.getService(ImplementationService.class);
-        remediationService = adminClient.getService(RemediationService.class);
-        delegationService = adminClient.getService(DelegationService.class);
-        sraRouteService = adminClient.getService(SRARouteService.class);
-        camelRouteService = adminClient.getService(CamelRouteService.class);
-        saml2SP4UIService = adminClient.getService(SAML2SP4UIService.class);
-        saml2SP4UIIdPService = adminClient.getService(SAML2SP4UIIdPService.class);
-        oidcClientService = adminClient.getService(OIDCC4UIService.class);
-        oidcProviderService = adminClient.getService(OIDCC4UIProviderService.class);
-        scimConfService = adminClient.getService(SCIMConfService.class);
-        clientAppService = adminClient.getService(ClientAppService.class);
-        authModuleService = adminClient.getService(AuthModuleService.class);
-        saml2SPEntityService = adminClient.getService(SAML2SPEntityService.class);
-        saml2IdPEntityService = adminClient.getService(SAML2IdPEntityService.class);
-        authProfileService = adminClient.getService(AuthProfileService.class);
-        oidcJWKSService = adminClient.getService(OIDCJWKSService.class);
-        waConfigService = adminClient.getService(WAConfigService.class);
+        SYNCOPE_SERVICE = ADMIN_CLIENT.getService(SyncopeService.class);
+        APPLICATION_SERVICE = ADMIN_CLIENT.getService(ApplicationService.class);
+        ANY_TYPE_CLASS_SERVICE = ADMIN_CLIENT.getService(AnyTypeClassService.class);
+        ANY_TYPE_SERVICE = ADMIN_CLIENT.getService(AnyTypeService.class);
+        RELATIONSHIP_TYPE_SERVICE = ADMIN_CLIENT.getService(RelationshipTypeService.class);
+        REALM_SERVICE = ADMIN_CLIENT.getService(RealmService.class);
+        ANY_OBJECT_SERVICE = ADMIN_CLIENT.getService(AnyObjectService.class);
+        ROLE_SERVICE = ADMIN_CLIENT.getService(RoleService.class);
+        DYN_REALM_SERVICE = ADMIN_CLIENT.getService(DynRealmService.class);
+        USER_SERVICE = ADMIN_CLIENT.getService(UserService.class);
+        USER_SELF_SERVICE = ADMIN_CLIENT.getService(UserSelfService.class);
+        USER_REQUEST_SERVICE = ADMIN_CLIENT.getService(UserRequestService.class);
+        USER_WORKFLOW_TASK_SERVICE = ADMIN_CLIENT.getService(UserWorkflowTaskService.class);
+        GROUP_SERVICE = ADMIN_CLIENT.getService(GroupService.class);
+        RESOURCE_SERVICE = ADMIN_CLIENT.getService(ResourceService.class);
+        CONNECTOR_SERVICE = ADMIN_CLIENT.getService(ConnectorService.class);
+        AUDIT_SERVICE = ADMIN_CLIENT.getService(AuditService.class);
+        REPORT_TEMPLATE_SERVICE = ADMIN_CLIENT.getService(ReportTemplateService.class);
+        REPORT_SERVICE = ADMIN_CLIENT.getService(ReportService.class);
+        TASK_SERVICE = ADMIN_CLIENT.getService(TaskService.class);
+        RECONCILIATION_SERVICE = ADMIN_CLIENT.getService(ReconciliationService.class);
+        POLICY_SERVICE = ADMIN_CLIENT.getService(PolicyService.class);
+        BPMN_PROCESS_SERVICE = ADMIN_CLIENT.getService(BpmnProcessService.class);
+        MAIL_TEMPLATE_SERVICE = ADMIN_CLIENT.getService(MailTemplateService.class);
+        NOTIFICATION_SERVICE = ADMIN_CLIENT.getService(NotificationService.class);
+        SCHEMA_SERVICE = ADMIN_CLIENT.getService(SchemaService.class);
+        SECURITY_QUESTION_SERVICE = ADMIN_CLIENT.getService(SecurityQuestionService.class);
+        IMPLEMENTATION_SERVICE = ADMIN_CLIENT.getService(ImplementationService.class);
+        REMEDIATION_SERVICE = ADMIN_CLIENT.getService(RemediationService.class);
+        DELEGATION_SERVICE = ADMIN_CLIENT.getService(DelegationService.class);
+        SRA_ROUTE_SERVICE = ADMIN_CLIENT.getService(SRARouteService.class);
+        CAMEL_ROUTE_SERVICE = ADMIN_CLIENT.getService(CamelRouteService.class);
+        SAML2SP4UI_SERVICE = ADMIN_CLIENT.getService(SAML2SP4UIService.class);
+        SAML2SP4UI_IDP_SERVICE = ADMIN_CLIENT.getService(SAML2SP4UIIdPService.class);
+        OIDCC4UI_SERVICE = ADMIN_CLIENT.getService(OIDCC4UIService.class);
+        OIDCC4UI_PROVIDER_SERVICE = ADMIN_CLIENT.getService(OIDCC4UIProviderService.class);
+        SCIM_CONF_SERVICE = ADMIN_CLIENT.getService(SCIMConfService.class);
+        CLIENT_APP_SERVICE = ADMIN_CLIENT.getService(ClientAppService.class);
+        AUTH_MODULE_SERVICE = ADMIN_CLIENT.getService(AuthModuleService.class);
+        SAML2SP_ENTITY_SERVICE = ADMIN_CLIENT.getService(SAML2SPEntityService.class);
+        SAML2IDP_ENTITY_SERVICE = ADMIN_CLIENT.getService(SAML2IdPEntityService.class);
+        AUTH_PROFILE_SERVICE = ADMIN_CLIENT.getService(AuthProfileService.class);
+        OIDC_JWKS_SERVICE = ADMIN_CLIENT.getService(OIDCJWKSService.class);
+        WA_CONFIG_SERVICE = ADMIN_CLIENT.getService(WAConfigService.class);
     }
 
     protected static String getUUIDString() {
@@ -483,12 +483,12 @@
     }
 
     protected static <T> T getObject(final URI location, final Class<?> serviceClass, final Class<T> resultClass) {
-        WebClient webClient = WebClient.fromClient(WebClient.client(adminClient.getService(serviceClass)));
-        webClient.accept(clientFactory.getContentType().getMediaType()).to(location.toASCIIString(), false);
+        WebClient webClient = WebClient.fromClient(WebClient.client(ADMIN_CLIENT.getService(serviceClass)));
+        webClient.accept(CLIENT_FACTORY.getContentType().getMediaType()).to(location.toASCIIString(), false);
 
         return webClient.
-                header(RESTHeaders.DOMAIN, adminClient.getDomain()).
-                header(HttpHeaders.AUTHORIZATION, "Bearer " + adminClient.getJWT()).
+                header(RESTHeaders.DOMAIN, ADMIN_CLIENT.getDomain()).
+                header(HttpHeaders.AUTHORIZATION, "Bearer " + ADMIN_CLIENT.getJWT()).
                 get(resultClass);
     }
 
@@ -506,9 +506,9 @@
 
     @SuppressWarnings("unchecked")
     protected <T extends SchemaTO> T createSchema(final SchemaType type, final T schemaTO) {
-        Response response = schemaService.create(type, schemaTO);
+        Response response = SCHEMA_SERVICE.create(type, schemaTO);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-            Exception ex = clientFactory.getExceptionMapper().fromResponse(response);
+            Exception ex = CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
             if (ex != null) {
                 throw (RuntimeException) ex;
             }
@@ -518,9 +518,9 @@
     }
 
     protected RoleTO createRole(final RoleTO roleTO) {
-        Response response = roleService.create(roleTO);
+        Response response = ROLE_SERVICE.create(roleTO);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-            Exception ex = clientFactory.getExceptionMapper().fromResponse(response);
+            Exception ex = CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
             if (ex != null) {
                 throw (RuntimeException) ex;
             }
@@ -529,7 +529,7 @@
     }
 
     protected ReportTO createReport(final ReportTO report) {
-        Response response = reportService.create(report);
+        Response response = REPORT_SERVICE.create(report);
         assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
         return getObject(response.getLocation(), ReportService.class, ReportTO.class);
     }
@@ -566,7 +566,7 @@
         notification.setTemplate("optin");
         notification.setActive(active);
 
-        Response response = notificationService.create(notification);
+        Response response = NOTIFICATION_SERVICE.create(notification);
         notification = getObject(response.getLocation(), NotificationService.class, NotificationTO.class);
         assertNotNull(notification);
 
@@ -580,9 +580,9 @@
     }
 
     protected ProvisioningResult<UserTO> createUser(final UserCR req) {
-        Response response = userService.create(req);
+        Response response = USER_SERVICE.create(req);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-            Exception ex = clientFactory.getExceptionMapper().fromResponse(response);
+            Exception ex = CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
             if (ex != null) {
                 throw (RuntimeException) ex;
             }
@@ -592,28 +592,28 @@
     }
 
     protected ProvisioningResult<UserTO> updateUser(final UserUR req) {
-        return userService.update(req).
+        return USER_SERVICE.update(req).
                 readEntity(new GenericType<>() {
                 });
     }
 
     protected ProvisioningResult<UserTO> updateUser(final UserTO userTO) {
-        UserTO before = userService.read(userTO.getKey());
-        return userService.update(AnyOperations.diff(userTO, before, false)).
+        UserTO before = USER_SERVICE.read(userTO.getKey());
+        return USER_SERVICE.update(AnyOperations.diff(userTO, before, false)).
                 readEntity(new GenericType<>() {
                 });
     }
 
     protected ProvisioningResult<UserTO> deleteUser(final String key) {
-        return userService.delete(key).
+        return USER_SERVICE.delete(key).
                 readEntity(new GenericType<>() {
                 });
     }
 
     protected ProvisioningResult<AnyObjectTO> createAnyObject(final AnyObjectCR req) {
-        Response response = anyObjectService.create(req);
+        Response response = ANY_OBJECT_SERVICE.create(req);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-            Exception ex = clientFactory.getExceptionMapper().fromResponse(response);
+            Exception ex = CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
             if (ex != null) {
                 throw (RuntimeException) ex;
             }
@@ -623,21 +623,21 @@
     }
 
     protected ProvisioningResult<AnyObjectTO> updateAnyObject(final AnyObjectUR req) {
-        return anyObjectService.update(req).
+        return ANY_OBJECT_SERVICE.update(req).
                 readEntity(new GenericType<>() {
                 });
     }
 
     protected ProvisioningResult<AnyObjectTO> deleteAnyObject(final String key) {
-        return anyObjectService.delete(key).
+        return ANY_OBJECT_SERVICE.delete(key).
                 readEntity(new GenericType<>() {
                 });
     }
 
     protected ProvisioningResult<GroupTO> createGroup(final GroupCR req) {
-        Response response = groupService.create(req);
+        Response response = GROUP_SERVICE.create(req);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-            Exception ex = clientFactory.getExceptionMapper().fromResponse(response);
+            Exception ex = CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
             if (ex != null) {
                 throw (RuntimeException) ex;
             }
@@ -647,22 +647,22 @@
     }
 
     protected ProvisioningResult<GroupTO> updateGroup(final GroupUR req) {
-        return groupService.update(req).
+        return GROUP_SERVICE.update(req).
                 readEntity(new GenericType<>() {
                 });
     }
 
     protected ProvisioningResult<GroupTO> deleteGroup(final String key) {
-        return groupService.delete(key).
+        return GROUP_SERVICE.delete(key).
                 readEntity(new GenericType<>() {
                 });
     }
 
     @SuppressWarnings("unchecked")
     protected <T extends PolicyTO> T createPolicy(final PolicyType type, final T policy) {
-        Response response = policyService.create(type, policy);
+        Response response = POLICY_SERVICE.create(type, policy);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-            Exception ex = clientFactory.getExceptionMapper().fromResponse(response);
+            Exception ex = CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
             if (ex != null) {
                 throw (RuntimeException) ex;
             }
@@ -672,9 +672,9 @@
 
     @SuppressWarnings("unchecked")
     protected AuthModuleTO createAuthModule(final AuthModuleTO authModule) {
-        Response response = authModuleService.create(authModule);
+        Response response = AUTH_MODULE_SERVICE.create(authModule);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-            Exception ex = clientFactory.getExceptionMapper().fromResponse(response);
+            Exception ex = CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
             if (ex != null) {
                 throw (RuntimeException) ex;
             }
@@ -683,9 +683,9 @@
     }
 
     protected ResourceTO createResource(final ResourceTO resourceTO) {
-        Response response = resourceService.create(resourceTO);
+        Response response = RESOURCE_SERVICE.create(resourceTO);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-            Exception ex = clientFactory.getExceptionMapper().fromResponse(response);
+            Exception ex = CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
             if (ex != null) {
                 throw (RuntimeException) ex;
             }
@@ -702,8 +702,8 @@
     @SuppressWarnings({ "unchecked", "rawtypes", "UseOfObsoleteCollectionType" })
     protected InitialDirContext getLdapResourceDirContext(final String bindDn, final String bindPwd)
             throws NamingException {
-        ResourceTO ldapRes = resourceService.read(RESOURCE_NAME_LDAP);
-        ConnInstanceTO ldapConn = connectorService.read(ldapRes.getConnector(), Locale.ENGLISH.getLanguage());
+        ResourceTO ldapRes = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
+        ConnInstanceTO ldapConn = CONNECTOR_SERVICE.read(ldapRes.getConnector(), Locale.ENGLISH.getLanguage());
 
         Properties env = new Properties();
         env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
@@ -894,9 +894,9 @@
 
     @SuppressWarnings("unchecked")
     protected <T extends ClientAppTO> T createClientApp(final ClientAppType type, final T clientAppTO) {
-        Response response = clientAppService.create(type, clientAppTO);
+        Response response = CLIENT_APP_SERVICE.create(type, clientAppTO);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-            Exception ex = clientFactory.getExceptionMapper().fromResponse(response);
+            Exception ex = CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
             if (ex != null) {
                 throw (RuntimeException) ex;
             }
@@ -949,7 +949,7 @@
                 Thread.sleep(1000);
             } catch (InterruptedException e) {
             }
-            results = auditService.search(query).getResult();
+            results = AUDIT_SERVICE.search(query).getResult();
             i++;
         } while (results.isEmpty() && i < maxWaitSeconds);
         return results;
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/ElasticsearchDetector.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/ElasticsearchDetector.java
index ef79aa7..c643df5 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/ElasticsearchDetector.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/ElasticsearchDetector.java
@@ -20,9 +20,13 @@
 
 import org.apache.syncope.common.lib.info.PlatformInfo;
 
-public class ElasticsearchDetector {
+public final class ElasticsearchDetector {
 
     public static boolean isElasticSearchEnabled(final PlatformInfo platform) {
         return platform.getPersistenceInfo().getAnySearchDAO().contains("Elasticsearch");
     }
+    
+    private ElasticsearchDetector() {
+        // private constructor for static utility class
+    }    
 }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/FlowableDetector.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/FlowableDetector.java
index ff19242..a35bd69 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/FlowableDetector.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/FlowableDetector.java
@@ -20,9 +20,13 @@
 
 import org.apache.syncope.common.lib.info.PlatformInfo;
 
-public class FlowableDetector {
+public final class FlowableDetector {
 
     public static boolean isFlowableEnabledForUserWorkflow(final PlatformInfo platform) {
         return platform.getWorkflowInfo().getUserWorkflowAdapter().contains("Flowable");
     }
+
+    private FlowableDetector() {
+        // private constructor for static utility class
+    }
 }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/OIDCClientDetector.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/OIDCClientDetector.java
index 75fc772..fbedc4c 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/OIDCClientDetector.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/OIDCClientDetector.java
@@ -20,11 +20,11 @@
 
 import org.apache.syncope.client.lib.AnonymousAuthenticationHandler;
 import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
+import org.apache.syncope.common.rest.api.service.OIDCC4UIProviderService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.syncope.common.rest.api.service.OIDCC4UIProviderService;
 
-public class OIDCClientDetector {
+public final class OIDCClientDetector {
 
     private static final Logger LOG = LoggerFactory.getLogger(OIDCClientDetector.class);
 
@@ -49,4 +49,8 @@
         }
         return ENABLED;
     }
+
+    private OIDCClientDetector() {
+        // private constructor for static utility class
+    }
 }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractTypesITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractTypesITCase.java
index 13fde09..4f363ca 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractTypesITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractTypesITCase.java
@@ -19,9 +19,9 @@
 package org.apache.syncope.fit.console;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.Types;
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.AjaxFallbackDataTable;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.util.tester.FormTester;
 import org.junit.jupiter.api.BeforeEach;
 
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AjaxTextFieldITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AjaxTextFieldITCase.java
index 4153b59..cc3e597 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AjaxTextFieldITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AjaxTextFieldITCase.java
@@ -22,12 +22,12 @@
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.syncope.client.ui.commons.markup.html.form.AjaxTextFieldPanel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
 import org.apache.wicket.util.string.Strings;
 import org.apache.wicket.util.tester.FormTester;
 import org.apache.wicket.validation.validator.StringValidator;
 import org.junit.jupiter.api.Test;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
 
 public class AjaxTextFieldITCase extends AbstractConsoleITCase {
 
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyObjectsITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyObjectsITCase.java
index 2f53c30..a039794 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyObjectsITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyObjectsITCase.java
@@ -20,14 +20,14 @@
 
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
+import org.apache.syncope.client.console.wicket.markup.html.form.IndicatingOnConfirmAjaxLink;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.util.tester.FormTester;
-import org.junit.jupiter.api.Test;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.console.wicket.markup.html.form.IndicatingOnConfirmAjaxLink;
 import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.util.tester.FormTester;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 public class AnyObjectsITCase extends AbstractConsoleITCase {
 
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyTypeClassesITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyTypeClassesITCase.java
index 538e308..9d70b4a 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyTypeClassesITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyTypeClassesITCase.java
@@ -22,11 +22,11 @@
 import static org.junit.jupiter.api.Assertions.assertNull;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.Types;
 import org.apache.syncope.client.console.panels.AjaxDataTablePanel;
 import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.AjaxFallbackDataTable;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.Component;
 import org.apache.wicket.util.tester.FormTester;
 import org.junit.jupiter.api.Test;
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyTypesITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyTypesITCase.java
index 1d9acaa..eee88f9 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyTypesITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AnyTypesITCase.java
@@ -22,11 +22,11 @@
 import static org.junit.jupiter.api.Assertions.assertNull;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.Realms;
 import org.apache.syncope.client.console.pages.Types;
 import org.apache.syncope.client.console.panels.AjaxDataTablePanel;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.util.tester.FormTester;
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/GroupsITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/GroupsITCase.java
index 4c2c900..69122a4 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/GroupsITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/GroupsITCase.java
@@ -22,20 +22,20 @@
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.wicket.markup.html.form.IndicatingOnConfirmAjaxLink;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.util.tester.FormTester;
-import org.junit.jupiter.api.Test;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.console.wicket.markup.html.form.IndicatingOnConfirmAjaxLink;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 public class GroupsITCase extends AbstractConsoleITCase {
 
-    private final static String TAB_PANEL = "body:content:body:container:content:tabbedPanel:panel:searchResult:";
+    private static final String TAB_PANEL = "body:content:body:container:content:tabbedPanel:panel:searchResult:";
 
-    private final static String CONTAINER = TAB_PANEL + "container:content:";
+    private static final String CONTAINER = TAB_PANEL + "container:content:";
 
     @BeforeEach
     public void login() {
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/LinkedAccountsITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/LinkedAccountsITCase.java
index 7beb2f5..7e3f3e7 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/LinkedAccountsITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/LinkedAccountsITCase.java
@@ -75,7 +75,7 @@
 
     private static final String CONTAINER = TAB_PANEL + "container:content:";
 
-    private static UserTO user;
+    private static UserTO USER;
 
     @BeforeEach
     public void login() {
@@ -92,16 +92,16 @@
 
         UserService userService = SyncopeConsoleSession.get().getService(UserService.class);
         Response response = userService.create(userCR);
-        user = response.readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        USER = response.readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
-        assertNotNull(user.getKey());
-        assertEquals(account.getConnObjectKeyValue(), user.getLinkedAccounts().get(0).getConnObjectKeyValue());
+        assertNotNull(USER.getKey());
+        assertEquals(account.getConnObjectKeyValue(), USER.getLinkedAccounts().get(0).getConnObjectKeyValue());
     }
 
     @AfterEach
     public void cleanUp() {
         try {
-            SyncopeConsoleSession.get().getService(UserService.class).delete(user.getKey());
+            SyncopeConsoleSession.get().getService(UserService.class).delete(USER.getKey());
         } catch (SyncopeClientException e) {
             if (e.getType() != ClientExceptionType.NotFound) {
                 throw e;
@@ -137,7 +137,7 @@
         formTester.setValue("content:view:0:panel:container:property:textField", "username");
         TESTER.executeAjaxEvent(formTester.getForm().
                 get("content:view:0:panel:container:property:textField"), Constants.ON_KEYDOWN);
-        formTester.setValue("content:view:0:panel:container:value:textField", user.getUsername());
+        formTester.setValue("content:view:0:panel:container:value:textField", USER.getUsername());
         TESTER.executeAjaxEvent(formTester.getForm().
                 get("content:view:0:panel:container:value:textField"), Constants.ON_KEYDOWN);
 
@@ -149,7 +149,7 @@
         TESTER.assertNoErrorMessage();
 
         // Locate result in data table
-        Component comp = findComponentByProp("username", TAB_PANEL + SEARCH_PANEL + RESULT_DATA_TABLE, user.
+        Component comp = findComponentByProp("username", TAB_PANEL + SEARCH_PANEL + RESULT_DATA_TABLE, USER.
                 getUsername());
         TESTER.executeAjaxEvent(comp.getPageRelativePath(), Constants.ON_CLICK);
 
@@ -181,7 +181,7 @@
 
         // User must have been deleted after the merge
         try {
-            userService.read(user.getKey());
+            userService.read(USER.getKey());
             fail("User must have been deleted; expect an exception here");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/LogsITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/LogsITCase.java
index 07c9489..c26b9d0 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/LogsITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/LogsITCase.java
@@ -21,8 +21,8 @@
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.lang.reflect.InvocationTargetException;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.Logs;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.Component;
 import org.apache.wicket.core.util.lang.PropertyResolver;
 import org.apache.wicket.markup.html.WebMarkupContainer;
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/NotificationsITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/NotificationsITCase.java
index 118513f..96d21c6 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/NotificationsITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/NotificationsITCase.java
@@ -22,8 +22,8 @@
 import static org.junit.jupiter.api.Assertions.assertNull;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.Notifications;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.util.tester.FormTester;
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/ParametersITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/ParametersITCase.java
index 309664c..248e670 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/ParametersITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/ParametersITCase.java
@@ -21,8 +21,8 @@
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.Parameters;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.util.tester.FormTester;
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/PoliciesITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/PoliciesITCase.java
index 9cbe4bf..7e8fdba 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/PoliciesITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/PoliciesITCase.java
@@ -22,9 +22,9 @@
 import static org.junit.jupiter.api.Assertions.assertNull;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.Policies;
 import org.apache.syncope.client.console.pages.Realms;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.TextField;
@@ -41,7 +41,7 @@
         TESTER.assertRenderedPage(Policies.class);
     }
 
-    private static void createAccountPolicy(String name) {
+    private static void createAccountPolicy(final String name) {
         TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:0:link");
         TESTER.clickLink("body:content:tabbedPanel:panel:container:content:add");
         TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer", Modal.class);
@@ -98,7 +98,7 @@
         assertNotNull(component);
     }
 
-    private static void createPasswordPolicy(String name) {
+    private static void createPasswordPolicy(final String name) {
         TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:1:link");
         TESTER.clickLink("body:content:tabbedPanel:panel:container:content:add");
         TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer", Modal.class);
@@ -148,7 +148,7 @@
                 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name));
     }
 
-    private static void createPullPolicy(String name) {
+    private static void createPullPolicy(final String name) {
         TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:6:link");
         TESTER.clickLink("body:content:tabbedPanel:panel:container:content:add");
         TESTER.assertComponent("body:content:tabbedPanel:panel:outerObjectsRepeater:0:outer", Modal.class);
@@ -193,7 +193,7 @@
                 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name));
     }
 
-    private static void deleteAccountPolicy(String name) {
+    private static void deleteAccountPolicy(final String name) {
         TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:0:link");
         Component component = findComponentByProp("name",
                 "body:content:tabbedPanel:panel:container:content:"
@@ -218,7 +218,7 @@
                 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name));
     }
 
-    private static void deletePasswordPolicy(String name) {
+    private static void deletePasswordPolicy(final String name) {
         TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:1:link");
         Component component = findComponentByProp("name",
                 "body:content:tabbedPanel:panel:container:content:"
@@ -243,7 +243,7 @@
                 + "searchContainer:resultTable:tablePanel:groupForm:checkgroup:dataTable", name));
     }
 
-    private static void deletePullPolicy(String name) {
+    private static void deletePullPolicy(final String name) {
         TESTER.clickLink("body:content:tabbedPanel:tabs-container:tabs:6:link");
         Component component = findComponentByProp("name",
                 "body:content:tabbedPanel:panel:container:content:"
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RealmsITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RealmsITCase.java
index 8f2b63b..255dc2e 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RealmsITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RealmsITCase.java
@@ -23,9 +23,9 @@
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.Realms;
 import org.apache.syncope.client.console.panels.TogglePanel;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.Component;
 import org.apache.wicket.util.tester.FormTester;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RelationshipTypesITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RelationshipTypesITCase.java
index 13b08fa..859f1f7 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RelationshipTypesITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RelationshipTypesITCase.java
@@ -21,9 +21,9 @@
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
 
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.panels.AjaxDataTablePanel;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.util.tester.FormTester;
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/ReportsITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/ReportsITCase.java
index c1766d2..6571f79 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/ReportsITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/ReportsITCase.java
@@ -22,8 +22,8 @@
 import static org.junit.jupiter.api.Assertions.assertNull;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.Reports;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.util.tester.FormTester;
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RolesITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RolesITCase.java
index 93d02c8..4c5a64a 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RolesITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/RolesITCase.java
@@ -22,8 +22,8 @@
 import static org.junit.jupiter.api.Assertions.assertNull;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.Security;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.Component;
 import org.apache.wicket.util.tester.FormTester;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/SchemasITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/SchemasITCase.java
index 090987d..399d951 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/SchemasITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/SchemasITCase.java
@@ -22,9 +22,9 @@
 import static org.junit.jupiter.api.Assertions.assertNull;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.Types;
 import org.apache.syncope.client.console.panels.AjaxDataTablePanel;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.html.form.DropDownChoice;
 import org.apache.wicket.util.tester.FormTester;
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/SecurityQuestionsITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/SecurityQuestionsITCase.java
index e37a24f..1da0931 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/SecurityQuestionsITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/SecurityQuestionsITCase.java
@@ -23,8 +23,8 @@
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.pages.Security;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.Component;
 import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
 import org.apache.wicket.markup.html.basic.Label;
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TestPage.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TestPage.java
index 93248be..974c8af 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TestPage.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TestPage.java
@@ -27,18 +27,18 @@
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.StringResourceStream;
 
-public class TestPage<T extends Serializable, S extends Panel>
+public final class TestPage<T extends Serializable, S extends Panel>
         extends WebPage implements IMarkupResourceStreamProvider {
 
     private static final long serialVersionUID = 483736530078975170L;
 
-    public static String FIELD = "field";
+    public static final String FIELD = "field";
 
     private final Form<T> form;
 
     private final S fieldPanel;
 
-    private TestPage(S field, final Builder<T, S> builder) {
+    private TestPage(final S field, final Builder<T, S> builder) {
         this.form = builder.form;
         this.fieldPanel = field;
 
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java
index a764406..d8fcd6c 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/TopologyITCase.java
@@ -22,15 +22,15 @@
 import static org.junit.jupiter.api.Assertions.assertNull;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
-import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
 import java.util.UUID;
-import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.console.panels.TogglePanel;
 import org.apache.syncope.client.console.topology.Topology;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.syncope.client.ui.commons.markup.html.form.NonI18nPalette;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.TextField;
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/UsersITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/UsersITCase.java
index 3f116dd..8e77078 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/UsersITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/UsersITCase.java
@@ -23,14 +23,14 @@
 import static org.junit.jupiter.api.Assertions.assertNull;
 
 import java.util.Calendar;
+import org.apache.syncope.client.console.wicket.markup.html.form.IndicatingOnConfirmAjaxLink;
+import org.apache.syncope.client.ui.commons.Constants;
 import org.apache.wicket.Component;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.util.tester.FormTester;
-import org.junit.jupiter.api.Test;
-import org.apache.syncope.client.ui.commons.Constants;
-import org.apache.syncope.client.console.wicket.markup.html.form.IndicatingOnConfirmAjaxLink;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 public class UsersITCase extends AbstractConsoleITCase {
 
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AbstractTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AbstractTaskITCase.java
index b3d46bd..1d39e25 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AbstractTaskITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AbstractTaskITCase.java
@@ -33,10 +33,10 @@
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.request.ResourceDR;
-import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.NotificationTaskTO;
 import org.apache.syncope.common.lib.to.PagedResult;
+import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.syncope.common.lib.types.ResourceDeassociationAction;
@@ -61,8 +61,8 @@
         for (int i = 0; i < 10; i++) {
             String cUserName = "test" + i;
             try {
-                UserTO cUserTO = userService.read(cUserName);
-                userService.delete(cUserTO.getKey());
+                UserTO cUserTO = USER_SERVICE.read(cUserName);
+                USER_SERVICE.delete(cUserTO.getKey());
             } catch (Exception e) {
                 // Ignore
             }
@@ -73,19 +73,19 @@
      * Clean Syncope and LDAP resource status.
      */
     protected void ldapCleanup() {
-        groupService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        GROUP_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getGroupSearchConditionBuilder().is("name").equalTo("testLDAPGroup").query()).
                 build()).getResult().forEach(group -> {
-                    groupService.deassociate(new ResourceDR.Builder().key(group.getKey()).
+                    GROUP_SERVICE.deassociate(new ResourceDR.Builder().key(group.getKey()).
                             action(ResourceDeassociationAction.UNLINK).resource(RESOURCE_NAME_LDAP).build());
-                    groupService.delete(group.getKey());
+                    GROUP_SERVICE.delete(group.getKey());
                 });
-        userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().is("username").equalTo("pullFromLDAP").query()).
                 build()).getResult().forEach(user -> {
-                    userService.deassociate(new ResourceDR.Builder().key(user.getKey()).
+                    USER_SERVICE.deassociate(new ResourceDR.Builder().key(user.getKey()).
                             action(ResourceDeassociationAction.UNLINK).resource(RESOURCE_NAME_LDAP).build());
-                    userService.delete(user.getKey());
+                    USER_SERVICE.delete(user.getKey());
                 });
     }
 
@@ -175,7 +175,7 @@
         AtomicReference<NotificationTaskTO> notificationTask = new AtomicReference<>();
         await().atMost(maxWaitSeconds, TimeUnit.SECONDS).pollInterval(1, TimeUnit.SECONDS).until(() -> {
             try {
-                PagedResult<NotificationTaskTO> tasks = taskService.search(
+                PagedResult<NotificationTaskTO> tasks = TASK_SERVICE.search(
                         new TaskQuery.Builder(TaskType.NOTIFICATION).notification(notification).build());
                 if (!tasks.getResult().isEmpty()) {
                     notificationTask.set(tasks.getResult().get(0));
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AnyObjectITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AnyObjectITCase.java
index 657c55f..b0c3a43 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AnyObjectITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AnyObjectITCase.java
@@ -28,14 +28,14 @@
 import java.util.UUID;
 import javax.ws.rs.core.Response;
 import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.request.AnyObjectCR;
 import org.apache.syncope.common.lib.request.AnyObjectUR;
-import org.apache.syncope.common.lib.to.ConnObjectTO;
-import org.apache.syncope.common.lib.to.AnyObjectTO;
-import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.request.StringPatchItem;
+import org.apache.syncope.common.lib.to.AnyObjectTO;
+import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.RelationshipTO;
@@ -67,7 +67,7 @@
         assertEquals("REST", anyObjectTO.getLastChangeContext());
 
         ConnObjectTO connObjectTO =
-                resourceService.readConnObject(RESOURCE_NAME_DBSCRIPTED, anyObjectTO.getType(), anyObjectTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_DBSCRIPTED, anyObjectTO.getType(), anyObjectTO.getKey());
         assertNotNull(connObjectTO);
         assertNotNull(connObjectTO.getAttr("LOCATION"));
         assertEquals(
@@ -99,7 +99,7 @@
     @Test
     public void delete() {
         try {
-            anyObjectService.delete(UUID.randomUUID().toString());
+            ANY_OBJECT_SERVICE.delete(UUID.randomUUID().toString());
         } catch (SyncopeClientException e) {
             assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
         }
@@ -114,7 +114,7 @@
         assertNotNull(deletedAnyObject);
 
         try {
-            anyObjectService.read(deletedAnyObject.getKey());
+            ANY_OBJECT_SERVICE.read(deletedAnyObject.getKey());
         } catch (SyncopeClientException e) {
             assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
         }
@@ -122,7 +122,7 @@
 
     @Test
     public void list() {
-        PagedResult<AnyObjectTO> anyObjectTOs = anyObjectService.search(
+        PagedResult<AnyObjectTO> anyObjectTOs = ANY_OBJECT_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getAnyObjectSearchConditionBuilder(PRINTER).query()).
                         build());
@@ -133,7 +133,7 @@
 
     @Test
     public void read() {
-        AnyObjectTO anyObjectTO = anyObjectService.read("fc6dbc3a-6c07-4965-8781-921e7401a4a5");
+        AnyObjectTO anyObjectTO = ANY_OBJECT_SERVICE.read("fc6dbc3a-6c07-4965-8781-921e7401a4a5");
         assertNotNull(anyObjectTO);
         assertNotNull(anyObjectTO.getPlainAttrs());
         assertFalse(anyObjectTO.getPlainAttrs().isEmpty());
@@ -162,10 +162,10 @@
         AnyObjectTO anyObjectTO = createAnyObject(anyObjectCR).getEntity();
         assertNotNull(anyObjectTO);
 
-        Set<Attr> attrs = anyObjectService.read(anyObjectTO.getKey(), SchemaType.PLAIN);
+        Set<Attr> attrs = ANY_OBJECT_SERVICE.read(anyObjectTO.getKey(), SchemaType.PLAIN);
         assertEquals(anyObjectTO.getPlainAttrs(), attrs);
 
-        Attr location = anyObjectService.read(anyObjectTO.getKey(), SchemaType.PLAIN, "location");
+        Attr location = ANY_OBJECT_SERVICE.read(anyObjectTO.getKey(), SchemaType.PLAIN, "location");
         assertEquals(anyObjectTO.getPlainAttr("location").get(), location);
     }
 
@@ -176,9 +176,9 @@
         assertNotNull(anyObjectTO);
 
         Attr updated = attr("location", "newlocation");
-        anyObjectService.update(anyObjectTO.getKey(), SchemaType.PLAIN, updated);
+        ANY_OBJECT_SERVICE.update(anyObjectTO.getKey(), SchemaType.PLAIN, updated);
 
-        Attr location = anyObjectService.read(anyObjectTO.getKey(), SchemaType.PLAIN, "location");
+        Attr location = ANY_OBJECT_SERVICE.read(anyObjectTO.getKey(), SchemaType.PLAIN, "location");
         assertEquals(updated, location);
     }
 
@@ -189,10 +189,10 @@
         assertNotNull(anyObjectTO);
         assertNotNull(anyObjectTO.getPlainAttr("location"));
 
-        anyObjectService.delete(anyObjectTO.getKey(), SchemaType.PLAIN, "location");
+        ANY_OBJECT_SERVICE.delete(anyObjectTO.getKey(), SchemaType.PLAIN, "location");
 
         try {
-            anyObjectService.read(anyObjectTO.getKey(), SchemaType.PLAIN, "location");
+            ANY_OBJECT_SERVICE.read(anyObjectTO.getKey(), SchemaType.PLAIN, "location");
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -239,7 +239,7 @@
 
         updateAnyObject(anyObjectPatch);
 
-        AnyObjectTO printer = anyObjectService.read("8559d14d-58c2-46eb-a2d4-a7d35161e8f8");
+        AnyObjectTO printer = ANY_OBJECT_SERVICE.read("8559d14d-58c2-46eb-a2d4-a7d35161e8f8");
         assertFalse(printer.getResources().contains(RESOURCE_NAME_DBSCRIPTED), "Should not contain removed resources");
         assertFalse(printer.getAuxClasses().contains("csv"), "Should not contain removed auxiliary classes");
     }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AnyTypeClassITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AnyTypeClassITCase.java
index 703cd4b..e4b3c2a 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AnyTypeClassITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AnyTypeClassITCase.java
@@ -42,7 +42,7 @@
 
     @Test
     public void read() {
-        AnyTypeClassTO minimalGroup = anyTypeClassService.read("minimal group");
+        AnyTypeClassTO minimalGroup = ANY_TYPE_CLASS_SERVICE.read("minimal group");
         assertNotNull(minimalGroup);
 
         assertFalse(minimalGroup.getPlainSchemas().isEmpty());
@@ -52,7 +52,7 @@
 
     @Test
     public void list() {
-        List<AnyTypeClassTO> list = anyTypeClassService.list();
+        List<AnyTypeClassTO> list = ANY_TYPE_CLASS_SERVICE.list();
         assertFalse(list.isEmpty());
     }
 
@@ -74,7 +74,7 @@
         newClass.setKey("new class" + getUUIDString());
         newClass.getPlainSchemas().add(plainSchema.getKey());
 
-        Response response = anyTypeClassService.create(newClass);
+        Response response = ANY_TYPE_CLASS_SERVICE.create(newClass);
         assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
 
         newClass = getObject(response.getLocation(), AnyTypeClassService.class, AnyTypeClassTO.class);
@@ -84,28 +84,28 @@
         assertTrue(newClass.getVirSchemas().isEmpty());
 
         newClass.getDerSchemas().add(derSchema.getKey());
-        anyTypeClassService.update(newClass);
+        ANY_TYPE_CLASS_SERVICE.update(newClass);
 
-        newClass = anyTypeClassService.read(newClass.getKey());
+        newClass = ANY_TYPE_CLASS_SERVICE.read(newClass.getKey());
         assertNotNull(newClass);
         assertFalse(newClass.getPlainSchemas().isEmpty());
         assertFalse(newClass.getDerSchemas().isEmpty());
         assertTrue(newClass.getVirSchemas().isEmpty());
 
-        assertEquals(newClass.getKey(), schemaService.read(SchemaType.PLAIN, plainSchema.getKey()).getAnyTypeClass());
-        assertEquals(newClass.getKey(), schemaService.read(SchemaType.DERIVED, derSchema.getKey()).getAnyTypeClass());
+        assertEquals(newClass.getKey(), SCHEMA_SERVICE.read(SchemaType.PLAIN, plainSchema.getKey()).getAnyTypeClass());
+        assertEquals(newClass.getKey(), SCHEMA_SERVICE.read(SchemaType.DERIVED, derSchema.getKey()).getAnyTypeClass());
 
-        anyTypeClassService.delete(newClass.getKey());
+        ANY_TYPE_CLASS_SERVICE.delete(newClass.getKey());
 
         try {
-            anyTypeClassService.read(newClass.getKey());
+            ANY_TYPE_CLASS_SERVICE.read(newClass.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
 
-        assertNull(schemaService.read(SchemaType.PLAIN, plainSchema.getKey()).getAnyTypeClass());
-        assertNull(schemaService.read(SchemaType.DERIVED, derSchema.getKey()).getAnyTypeClass());
+        assertNull(SCHEMA_SERVICE.read(SchemaType.PLAIN, plainSchema.getKey()).getAnyTypeClass());
+        assertNull(SCHEMA_SERVICE.read(SchemaType.DERIVED, derSchema.getKey()).getAnyTypeClass());
     }
 
     @Test
@@ -119,30 +119,30 @@
         newClass.setKey("new class" + getUUIDString());
         newClass.getPlainSchemas().add(newSchema.getKey());
 
-        Response response = anyTypeClassService.create(newClass);
+        Response response = ANY_TYPE_CLASS_SERVICE.create(newClass);
         assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
 
         newClass = getObject(response.getLocation(), AnyTypeClassService.class, AnyTypeClassTO.class);
         assertNotNull(newClass);
         assertTrue(newClass.getPlainSchemas().contains(newSchema.getKey()));
 
-        schemaService.delete(SchemaType.PLAIN, newSchema.getKey());
+        SCHEMA_SERVICE.delete(SchemaType.PLAIN, newSchema.getKey());
 
-        newClass = anyTypeClassService.read(newClass.getKey());
+        newClass = ANY_TYPE_CLASS_SERVICE.read(newClass.getKey());
         assertNotNull(newClass);
         assertFalse(newClass.getPlainSchemas().contains(newSchema.getKey()));
     }
 
     @Test
     public void issueSYNCOPE759() {
-        AnyTypeClassTO minimalGroup = anyTypeClassService.read("minimal group");
+        AnyTypeClassTO minimalGroup = ANY_TYPE_CLASS_SERVICE.read("minimal group");
         assertNotNull(minimalGroup);
 
         AnyTypeClassTO newAnyTypeClass = new AnyTypeClassTO();
         newAnyTypeClass.setKey(minimalGroup.getKey());
 
         try {
-            anyTypeClassService.create(newAnyTypeClass);
+            ANY_TYPE_CLASS_SERVICE.create(newAnyTypeClass);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.EntityExists, e.getType());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AnyTypeITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AnyTypeITCase.java
index 33162df..c660c30 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AnyTypeITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AnyTypeITCase.java
@@ -40,19 +40,19 @@
 
     @Test
     public void read() {
-        AnyTypeTO userType = anyTypeService.read(AnyTypeKind.USER.name());
+        AnyTypeTO userType = ANY_TYPE_SERVICE.read(AnyTypeKind.USER.name());
         assertNotNull(userType);
         assertEquals(AnyTypeKind.USER, userType.getKind());
         assertEquals(AnyTypeKind.USER.name(), userType.getKey());
         assertFalse(userType.getClasses().isEmpty());
 
-        AnyTypeTO groupType = anyTypeService.read(AnyTypeKind.GROUP.name());
+        AnyTypeTO groupType = ANY_TYPE_SERVICE.read(AnyTypeKind.GROUP.name());
         assertNotNull(groupType);
         assertEquals(AnyTypeKind.GROUP, groupType.getKind());
         assertEquals(AnyTypeKind.GROUP.name(), groupType.getKey());
         assertFalse(groupType.getClasses().isEmpty());
 
-        AnyTypeTO otherType = anyTypeService.read(PRINTER);
+        AnyTypeTO otherType = ANY_TYPE_SERVICE.read(PRINTER);
         assertNotNull(otherType);
         assertEquals(AnyTypeKind.ANY_OBJECT, otherType.getKind());
         assertEquals(PRINTER, otherType.getKey());
@@ -60,7 +60,7 @@
 
     @Test
     public void list() {
-        List<AnyTypeTO> list = anyTypeService.list();
+        List<AnyTypeTO> list = ANY_TYPE_SERVICE.list();
         assertFalse(list.isEmpty());
     }
 
@@ -72,7 +72,7 @@
         newType.getClasses().add("generic membership");
         newType.getClasses().add("csv");
 
-        Response response = anyTypeService.create(newType);
+        Response response = ANY_TYPE_SERVICE.create(newType);
         assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
 
         newType = getObject(response.getLocation(), AnyTypeService.class, AnyTypeTO.class);
@@ -82,17 +82,17 @@
         assertTrue(newType.getClasses().contains("csv"));
 
         newType.getClasses().remove("generic membership");
-        anyTypeService.update(newType);
+        ANY_TYPE_SERVICE.update(newType);
 
-        newType = anyTypeService.read(newType.getKey());
+        newType = ANY_TYPE_SERVICE.read(newType.getKey());
         assertNotNull(newType);
         assertEquals(1, newType.getClasses().size());
         assertTrue(newType.getClasses().contains("csv"));
 
-        anyTypeService.delete(newType.getKey());
+        ANY_TYPE_SERVICE.delete(newType.getKey());
 
         try {
-            anyTypeService.read(newType.getKey());
+            ANY_TYPE_SERVICE.read(newType.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -105,7 +105,7 @@
         newType.setKey("new type");
         newType.setKind(AnyTypeKind.USER);
         try {
-            anyTypeService.create(newType);
+            ANY_TYPE_SERVICE.create(newType);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.InvalidAnyType, e.getType());
@@ -118,7 +118,7 @@
         newType.setKey("GROUP");
         newType.setKind(AnyTypeKind.GROUP);
         try {
-            anyTypeService.create(newType);
+            ANY_TYPE_SERVICE.create(newType);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.EntityExists, e.getType());
@@ -131,70 +131,70 @@
         newClass.setKey("new class" + getUUIDString());
         newClass.getDerSchemas().add("cn");
 
-        Response response = anyTypeClassService.create(newClass);
+        Response response = ANY_TYPE_CLASS_SERVICE.create(newClass);
         assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
 
         newClass = getObject(response.getLocation(), AnyTypeClassService.class, AnyTypeClassTO.class);
         assertNotNull(newClass);
 
-        AnyTypeTO other = anyTypeService.read(PRINTER);
+        AnyTypeTO other = ANY_TYPE_SERVICE.read(PRINTER);
         assertNotNull(other);
 
         other.getClasses().add(newClass.getKey());
-        anyTypeService.update(other);
+        ANY_TYPE_SERVICE.update(other);
 
-        other = anyTypeService.read(other.getKey());
+        other = ANY_TYPE_SERVICE.read(other.getKey());
         assertNotNull(other);
         assertTrue(other.getClasses().contains(newClass.getKey()));
 
-        anyTypeClassService.delete(newClass.getKey());
+        ANY_TYPE_CLASS_SERVICE.delete(newClass.getKey());
 
-        other = anyTypeService.read(other.getKey());
+        other = ANY_TYPE_SERVICE.read(other.getKey());
         assertNotNull(other);
         assertFalse(other.getClasses().contains(newClass.getKey()));
     }
 
     @Test
     public void issueSYNCOPE754() {
-        AnyTypeClassTO other = anyTypeClassService.read("other");
+        AnyTypeClassTO other = ANY_TYPE_CLASS_SERVICE.read("other");
         assertNotNull(other);
 
-        AnyTypeTO group = anyTypeService.read(AnyTypeKind.GROUP.name());
+        AnyTypeTO group = ANY_TYPE_SERVICE.read(AnyTypeKind.GROUP.name());
         try {
             assertFalse(group.getClasses().contains("other"));
             group.getClasses().add("other");
 
-            anyTypeService.update(group);
+            ANY_TYPE_SERVICE.update(group);
 
-            group = anyTypeService.read(AnyTypeKind.GROUP.name());
+            group = ANY_TYPE_SERVICE.read(AnyTypeKind.GROUP.name());
             assertTrue(group.getClasses().contains("other"));
 
-            other = anyTypeClassService.read("other");
+            other = ANY_TYPE_CLASS_SERVICE.read("other");
             assertEquals(2, other.getInUseByTypes().size());
             assertTrue(other.getInUseByTypes().contains(AnyTypeKind.USER.name()));
             assertTrue(other.getInUseByTypes().contains(AnyTypeKind.GROUP.name()));
         } finally {
             group.getClasses().remove("other");
-            anyTypeService.update(group);
+            ANY_TYPE_SERVICE.update(group);
         }
     }
 
     @Test
     public void issueSYNCOPE1472() {
         // 1. add any type class csv twice to PRINTER any type
-        AnyTypeTO anyTypeTO = anyTypeService.read(PRINTER);
+        AnyTypeTO anyTypeTO = ANY_TYPE_SERVICE.read(PRINTER);
         anyTypeTO.getClasses().clear();
         anyTypeTO.getClasses().add("minimal printer");
         anyTypeTO.getClasses().add("csv");
         anyTypeTO.getClasses().add("csv");
-        anyTypeService.update(anyTypeTO);
+        ANY_TYPE_SERVICE.update(anyTypeTO);
 
         // 2. read again and remove any type class
-        anyTypeTO = anyTypeService.read(PRINTER);
+        anyTypeTO = ANY_TYPE_SERVICE.read(PRINTER);
         anyTypeTO.getClasses().remove("csv");
-        anyTypeService.update(anyTypeTO);
+        ANY_TYPE_SERVICE.update(anyTypeTO);
 
-        assertFalse(anyTypeService.read(PRINTER).getClasses().contains("csv"), 
+        assertFalse(ANY_TYPE_SERVICE.read(PRINTER).getClasses().contains("csv"), 
                 "Should not contain removed any type classes");
     }
 }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ApplicationITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ApplicationITCase.java
index 5bc8af3..24d00e7 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ApplicationITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ApplicationITCase.java
@@ -43,16 +43,16 @@
 
     @Test
     public void read() {
-        ApplicationTO mightyApp = applicationService.read("mightyApp");
+        ApplicationTO mightyApp = APPLICATION_SERVICE.read("mightyApp");
         assertNotNull(mightyApp);
         assertEquals(2, mightyApp.getPrivileges().size());
         assertTrue(mightyApp.getPrivileges().stream().anyMatch(privilege -> "postMighty".equals(privilege.getKey())));
 
-        PrivilegeTO getMighty = applicationService.readPrivilege("getMighty");
+        PrivilegeTO getMighty = APPLICATION_SERVICE.readPrivilege("getMighty");
         assertNotNull(getMighty);
         assertEquals("mightyApp", getMighty.getApplication());
 
-        RoleTO role = roleService.read("Other");
+        RoleTO role = ROLE_SERVICE.read("Other");
         assertFalse(role.getPrivileges().isEmpty());
         assertEquals(1, role.getPrivileges().size());
         assertTrue(role.getPrivileges().stream().anyMatch("postMighty"::equals));
@@ -79,7 +79,7 @@
         privilegeTO.setSpec("{ \"three\": true }");
         application.getPrivileges().add(privilegeTO);
 
-        Response response = applicationService.create(application);
+        Response response = APPLICATION_SERVICE.create(application);
         assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
 
         application = getObject(response.getLocation(), ApplicationService.class, ApplicationTO.class);
@@ -91,9 +91,9 @@
         application.setDescription("A description");
         application.getPrivileges().remove(1);
 
-        applicationService.update(application);
+        APPLICATION_SERVICE.update(application);
 
-        application = applicationService.read(application.getKey());
+        application = APPLICATION_SERVICE.read(application.getKey());
         assertNotNull(application);
         assertNotNull(application.getDescription());
         assertEquals(2, application.getPrivileges().size());
@@ -104,7 +104,7 @@
         role.getPrivileges().addAll(
                 application.getPrivileges().stream().map(EntityTO::getKey).collect(Collectors.toList()));
 
-        response = roleService.create(role);
+        response = ROLE_SERVICE.create(role);
         assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
 
         role = getObject(response.getLocation(), RoleService.class, RoleTO.class);
@@ -112,16 +112,16 @@
         assertEquals(2, role.getPrivileges().size());
 
         // 4. delete application => delete privileges
-        applicationService.delete(application.getKey());
+        APPLICATION_SERVICE.delete(application.getKey());
 
         try {
-            applicationService.read(application.getKey());
+            APPLICATION_SERVICE.read(application.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
 
-        role = roleService.read(role.getKey());
+        role = ROLE_SERVICE.read(role.getKey());
         assertNotNull(role);
         assertTrue(role.getPrivileges().isEmpty());
     }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuditITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuditITCase.java
index 451c16f..bd16471 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuditITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuditITCase.java
@@ -97,7 +97,7 @@
         List<AuditEntry> entries = query(query, MAX_WAIT_SECONDS);
         assertEquals(1, entries.size());
 
-        PagedResult<UserTO> usersTOs = userService.search(
+        PagedResult<UserTO> usersTOs = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().
                                 is("username").equalTo(userTO.getUsername()).query()).
@@ -118,7 +118,7 @@
                 page(1).size(1).build();
         AuditEntry entry = queryWithFailure(query, MAX_WAIT_SECONDS);
         assertNotNull(entry);
-        userService.delete(userTO.getKey());
+        USER_SERVICE.delete(userTO.getKey());
     }
 
     @Test
@@ -138,7 +138,7 @@
                 build();
         AuditEntry entry = queryWithFailure(query, MAX_WAIT_SECONDS);
         assertNotNull(entry);
-        userService.delete(userTO.getKey());
+        USER_SERVICE.delete(userTO.getKey());
     }
 
     @Test
@@ -150,7 +150,7 @@
                 page(1).size(1).build();
         AuditEntry entry = queryWithFailure(query, MAX_WAIT_SECONDS);
         assertNotNull(entry);
-        groupService.delete(groupTO.getKey());
+        GROUP_SERVICE.delete(groupTO.getKey());
     }
 
     @Test
@@ -162,7 +162,7 @@
         List<AuditEntry> entries = query(query, MAX_WAIT_SECONDS);
         assertEquals(1, entries.size());
 
-        PagedResult<GroupTO> groups = groupService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        PagedResult<GroupTO> groups = GROUP_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getGroupSearchConditionBuilder().is("name").equalTo(groupTO.getName()).query()).
                 build());
         assertNotNull(groups);
@@ -180,7 +180,7 @@
                 orderBy("event_date desc").page(1).size(1).build();
         AuditEntry entry = queryWithFailure(query, MAX_WAIT_SECONDS);
         assertNotNull(entry);
-        anyObjectService.delete(anyObjectTO.getKey());
+        ANY_OBJECT_SERVICE.delete(anyObjectTO.getKey());
     }
 
     @Test
@@ -192,7 +192,7 @@
         List<AuditEntry> entries = query(query, MAX_WAIT_SECONDS);
         assertEquals(1, entries.size());
 
-        PagedResult<AnyObjectTO> anyObjects = anyObjectService.search(
+        PagedResult<AnyObjectTO> anyObjects = ANY_OBJECT_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getAnyObjectSearchConditionBuilder(anyObjectTO.getType()).query()).
                         build());
@@ -215,10 +215,10 @@
                 event("update").
                 result(AuditElements.Result.SUCCESS).
                 build();
-        List<AuditEntry> entries = auditService.search(query).getResult();
+        List<AuditEntry> entries = AUDIT_SERVICE.search(query).getResult();
         int pre = entries.size();
 
-        ConnInstanceTO ldapConn = connectorService.read(connectorKey, null);
+        ConnInstanceTO ldapConn = CONNECTOR_SERVICE.read(connectorKey, null);
         String originalDisplayName = ldapConn.getDisplayName();
         Set<ConnectorCapability> originalCapabilities = new HashSet<>(ldapConn.getCapabilities());
         ConnConfProperty originalConfProp = SerializationUtils.clone(
@@ -229,9 +229,9 @@
         ldapConn.setDisplayName(originalDisplayName + " modified");
         ldapConn.getCapabilities().clear();
         ldapConn.getConf("maintainPosixGroupMembership").get().getValues().set(0, "true");
-        connectorService.update(ldapConn);
+        CONNECTOR_SERVICE.update(ldapConn);
 
-        ldapConn = connectorService.read(connectorKey, null);
+        ldapConn = CONNECTOR_SERVICE.read(connectorKey, null);
         assertNotEquals(originalDisplayName, ldapConn.getDisplayName());
         assertNotEquals(originalCapabilities, ldapConn.getCapabilities());
         assertNotEquals(originalConfProp, ldapConn.getConf("maintainPosixGroupMembership"));
@@ -240,9 +240,9 @@
         assertEquals(pre + 1, entries.size());
 
         ConnInstanceTO restore = JSON_MAPPER.readValue(entries.get(0).getBefore(), ConnInstanceTO.class);
-        connectorService.update(restore);
+        CONNECTOR_SERVICE.update(restore);
 
-        ldapConn = connectorService.read(connectorKey, null);
+        ldapConn = CONNECTOR_SERVICE.read(connectorKey, null);
         assertEquals(originalDisplayName, ldapConn.getDisplayName());
         assertEquals(originalCapabilities, ldapConn.getCapabilities());
         assertEquals(originalConfProp, ldapConn.getConf("maintainPosixGroupMembership").get());
@@ -257,26 +257,26 @@
                 "deleteExecution",
                 AuditElements.Result.FAILURE);
 
-        List<AuditConfTO> audits = auditService.list();
+        List<AuditConfTO> audits = AUDIT_SERVICE.list();
         assertFalse(audits.stream().anyMatch(a -> a.getKey().equals(auditLoggerName.toAuditKey())));
 
         AuditConfTO audit = new AuditConfTO();
         audit.setKey(auditLoggerName.toAuditKey());
         audit.setActive(true);
-        auditService.create(audit);
+        AUDIT_SERVICE.create(audit);
 
-        audits = auditService.list();
+        audits = AUDIT_SERVICE.list();
         assertTrue(audits.stream().anyMatch(a -> a.getKey().equals(auditLoggerName.toAuditKey())));
 
-        auditService.delete(audit.getKey());
+        AUDIT_SERVICE.delete(audit.getKey());
 
-        audits = auditService.list();
+        audits = AUDIT_SERVICE.list();
         assertFalse(audits.stream().anyMatch(a -> a.getKey().equals(auditLoggerName.toAuditKey())));
     }
 
     @Test
     public void listAuditEvents() {
-        List<EventCategory> events = auditService.events();
+        List<EventCategory> events = AUDIT_SERVICE.events();
 
         boolean found = false;
 
@@ -384,9 +384,9 @@
         auditEntry.setDate(OffsetDateTime.now());
         auditEntry.setBefore(UUID.randomUUID().toString());
         auditEntry.setOutput(UUID.randomUUID().toString());
-        assertDoesNotThrow(() -> auditService.create(auditEntry));
+        assertDoesNotThrow(() -> AUDIT_SERVICE.create(auditEntry));
 
-        PagedResult<AuditEntry> events = auditService.search(new AuditQuery.Builder().
+        PagedResult<AuditEntry> events = AUDIT_SERVICE.search(new AuditQuery.Builder().
                 size(1).
                 type(auditEntry.getLogger().getType()).
                 category(auditEntry.getLogger().getCategory()).
@@ -411,9 +411,9 @@
         auditEntry.setDate(OffsetDateTime.now());
         auditEntry.setBefore(UUID.randomUUID().toString());
         auditEntry.setOutput(UUID.randomUUID().toString());
-        assertDoesNotThrow(() -> auditService.create(auditEntry));
+        assertDoesNotThrow(() -> AUDIT_SERVICE.create(auditEntry));
 
-        PagedResult<AuditEntry> events = auditService.search(new AuditQuery.Builder().
+        PagedResult<AuditEntry> events = AUDIT_SERVICE.search(new AuditQuery.Builder().
                 size(1).
                 type(auditEntry.getLogger().getType()).
                 category(auditEntry.getLogger().getCategory()).
@@ -440,15 +440,15 @@
             Files.write(auditNoRewriteFilePath, new byte[0], StandardOpenOption.TRUNCATE_EXISTING);
 
             // check that resource update is transformed and logged onto an audit file.
-            ResourceTO resource = resourceService.read(RESOURCE_NAME_CSV);
+            ResourceTO resource = RESOURCE_SERVICE.read(RESOURCE_NAME_CSV);
             assertNotNull(resource);
             resource.setPropagationPriority(100);
-            resourceService.update(resource);
+            RESOURCE_SERVICE.update(resource);
 
-            ConnInstanceTO connector = connectorService.readByResource(RESOURCE_NAME_CSV, null);
+            ConnInstanceTO connector = CONNECTOR_SERVICE.readByResource(RESOURCE_NAME_CSV, null);
             assertNotNull(connector);
             connector.setPoolConf(new ConnPoolConfTO());
-            connectorService.update(connector);
+            CONNECTOR_SERVICE.update(connector);
 
             // check audit_for_Master_file.log, it should contain only a static message
             checkLogFileFor(
@@ -472,7 +472,7 @@
 
     @Test
     public void issueSYNCOPE976() {
-        List<EventCategory> events = auditService.events();
+        List<EventCategory> events = AUDIT_SERVICE.events();
         assertNotNull(events);
 
         EventCategory userLogic = events.stream().
@@ -512,16 +512,16 @@
             AuditConfTO audit = new AuditConfTO();
             audit.setKey(createSuccess.toAuditKey());
             audit.setActive(true);
-            auditService.create(audit);
+            AUDIT_SERVICE.create(audit);
 
             audit.setKey(createFailure.toAuditKey());
-            auditService.create(audit);
+            AUDIT_SERVICE.create(audit);
 
             audit.setKey(updateSuccess.toAuditKey());
-            auditService.create(audit);
+            AUDIT_SERVICE.create(audit);
 
             audit.setKey(updateFailure.toAuditKey());
-            auditService.create(audit);
+            AUDIT_SERVICE.create(audit);
 
             // 2. push on resource
             PushTaskTO pushTask = new PushTaskTO();
@@ -529,29 +529,29 @@
             pushTask.setPerformUpdate(true);
             pushTask.setUnmatchingRule(UnmatchingRule.PROVISION);
             pushTask.setMatchingRule(MatchingRule.UPDATE);
-            reconciliationService.push(new ReconQuery.Builder(PRINTER, RESOURCE_NAME_DBSCRIPTED).
+            RECONCILIATION_SERVICE.push(new ReconQuery.Builder(PRINTER, RESOURCE_NAME_DBSCRIPTED).
                     anyKey("fc6dbc3a-6c07-4965-8781-921e7401a4a5").build(), pushTask);
         } catch (Exception e) {
             LOG.error("Unexpected exception", e);
             fail(e::getMessage);
         } finally {
             try {
-                auditService.delete(createSuccess.toAuditKey());
+                AUDIT_SERVICE.delete(createSuccess.toAuditKey());
             } catch (Exception e) {
                 // ignore
             }
             try {
-                auditService.delete(createFailure.toAuditKey());
+                AUDIT_SERVICE.delete(createFailure.toAuditKey());
             } catch (Exception e) {
                 // ignore
             }
             try {
-                auditService.delete(updateSuccess.toAuditKey());
+                AUDIT_SERVICE.delete(updateSuccess.toAuditKey());
             } catch (Exception e) {
                 // ignore
             }
             try {
-                auditService.delete(updateFailure.toAuditKey());
+                AUDIT_SERVICE.delete(updateFailure.toAuditKey());
             } catch (Exception e) {
                 // ignore
             }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuthModuleITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuthModuleITCase.java
index 6e513ae..0905809 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuthModuleITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuthModuleITCase.java
@@ -24,18 +24,16 @@
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
-import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.auth.DuoMfaAuthModuleConf;
-import org.apache.syncope.fit.AbstractITCase;
-import org.junit.jupiter.api.Test;
 import java.io.IOException;
 import java.util.EnumSet;
 import java.util.List;
 import java.util.UUID;
 import org.apache.commons.lang3.ClassUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.auth.AuthModuleConf;
+import org.apache.syncope.common.lib.auth.DuoMfaAuthModuleConf;
 import org.apache.syncope.common.lib.auth.GoogleMfaAuthModuleConf;
 import org.apache.syncope.common.lib.auth.JDBCAuthModuleConf;
 import org.apache.syncope.common.lib.auth.JaasAuthModuleConf;
@@ -47,6 +45,8 @@
 import org.apache.syncope.common.lib.auth.U2FAuthModuleConf;
 import org.apache.syncope.common.lib.to.AuthModuleTO;
 import org.apache.syncope.common.lib.to.ItemTO;
+import org.apache.syncope.fit.AbstractITCase;
+import org.junit.jupiter.api.Test;
 
 public class AuthModuleITCase extends AbstractITCase {
 
@@ -169,7 +169,7 @@
 
     @Test
     public void list() {
-        List<AuthModuleTO> authModuleTOs = authModuleService.list();
+        List<AuthModuleTO> authModuleTOs = AUTH_MODULE_SERVICE.list();
         assertNotNull(authModuleTOs);
         assertFalse(authModuleTOs.isEmpty());
 
@@ -207,7 +207,7 @@
 
     @Test
     public void getLDAPAuthModule() {
-        AuthModuleTO authModuleTO = authModuleService.read("DefaultLDAPAuthModule");
+        AuthModuleTO authModuleTO = AUTH_MODULE_SERVICE.read("DefaultLDAPAuthModule");
 
         assertNotNull(authModuleTO);
         assertTrue(StringUtils.isNotBlank(authModuleTO.getDescription()));
@@ -217,7 +217,7 @@
 
     @Test
     public void getJDBCAuthModule() {
-        AuthModuleTO authModuleTO = authModuleService.read("DefaultJDBCAuthModule");
+        AuthModuleTO authModuleTO = AUTH_MODULE_SERVICE.read("DefaultJDBCAuthModule");
 
         assertNotNull(authModuleTO);
         assertTrue(StringUtils.isNotBlank(authModuleTO.getDescription()));
@@ -227,7 +227,7 @@
 
     @Test
     public void getGoogleMfaAuthModule() {
-        AuthModuleTO authModuleTO = authModuleService.read("DefaultGoogleMfaAuthModule");
+        AuthModuleTO authModuleTO = AUTH_MODULE_SERVICE.read("DefaultGoogleMfaAuthModule");
 
         assertNotNull(authModuleTO);
         assertTrue(StringUtils.isNotBlank(authModuleTO.getDescription()));
@@ -237,7 +237,7 @@
 
     @Test
     public void getDuoMfaAuthModule() {
-        AuthModuleTO authModuleTO = authModuleService.read("DefaultDuoMfaAuthModule");
+        AuthModuleTO authModuleTO = AUTH_MODULE_SERVICE.read("DefaultDuoMfaAuthModule");
 
         assertNotNull(authModuleTO);
         assertTrue(StringUtils.isNotBlank(authModuleTO.getDescription()));
@@ -246,7 +246,7 @@
 
     @Test
     public void getOIDCAuthModule() {
-        AuthModuleTO authModuleTO = authModuleService.read("DefaultOIDCAuthModule");
+        AuthModuleTO authModuleTO = AUTH_MODULE_SERVICE.read("DefaultOIDCAuthModule");
 
         assertNotNull(authModuleTO);
         assertTrue(StringUtils.isNotBlank(authModuleTO.getDescription()));
@@ -256,7 +256,7 @@
 
     @Test
     public void getSAML2IdPAuthModule() {
-        AuthModuleTO authModuleTO = authModuleService.read("DefaultSAML2IdPAuthModule");
+        AuthModuleTO authModuleTO = AUTH_MODULE_SERVICE.read("DefaultSAML2IdPAuthModule");
 
         assertNotNull(authModuleTO);
         assertTrue(StringUtils.isNotBlank(authModuleTO.getDescription()));
@@ -266,7 +266,7 @@
 
     @Test
     public void getJaasAuthModule() {
-        AuthModuleTO authModuleTO = authModuleService.read("DefaultJaasAuthModule");
+        AuthModuleTO authModuleTO = AUTH_MODULE_SERVICE.read("DefaultJaasAuthModule");
 
         assertNotNull(authModuleTO);
         assertTrue(StringUtils.isNotBlank(authModuleTO.getDescription()));
@@ -276,7 +276,7 @@
 
     @Test
     public void getStaticAuthModule() {
-        AuthModuleTO authModuleTO = authModuleService.read("DefaultStaticAuthModule");
+        AuthModuleTO authModuleTO = AUTH_MODULE_SERVICE.read("DefaultStaticAuthModule");
 
         assertNotNull(authModuleTO);
         assertTrue(StringUtils.isNotBlank(authModuleTO.getDescription()));
@@ -286,7 +286,7 @@
 
     @Test
     public void getSyncopeAuthModule() {
-        AuthModuleTO authModuleTO = authModuleService.read("DefaultSyncopeAuthModule");
+        AuthModuleTO authModuleTO = AUTH_MODULE_SERVICE.read("DefaultSyncopeAuthModule");
 
         assertNotNull(authModuleTO);
         assertTrue(StringUtils.isNotBlank(authModuleTO.getDescription()));
@@ -296,7 +296,7 @@
 
     @Test
     public void getU2FAuthModule() {
-        AuthModuleTO authModuleTO = authModuleService.read("DefaultU2FAuthModule");
+        AuthModuleTO authModuleTO = AUTH_MODULE_SERVICE.read("DefaultU2FAuthModule");
 
         assertNotNull(authModuleTO);
         assertTrue(StringUtils.isNotBlank(authModuleTO.getDescription()));
@@ -316,7 +316,7 @@
 
     @Test
     public void updateGoogleMfaAuthModule() {
-        AuthModuleTO googleMfaAuthModuleTO = authModuleService.read("DefaultGoogleMfaAuthModule");
+        AuthModuleTO googleMfaAuthModuleTO = AUTH_MODULE_SERVICE.read("DefaultGoogleMfaAuthModule");
         assertNotNull(googleMfaAuthModuleTO);
 
         AuthModuleTO newGoogleMfaAuthModuleTO = buildAuthModuleTO(AuthModuleSupportedType.GOOGLE_MFA);
@@ -329,8 +329,8 @@
         newGoogleMfaAuthModuleTO.setConf(conf);
 
         // update new auth module
-        authModuleService.update(newGoogleMfaAuthModuleTO);
-        newGoogleMfaAuthModuleTO = authModuleService.read(newGoogleMfaAuthModuleTO.getKey());
+        AUTH_MODULE_SERVICE.update(newGoogleMfaAuthModuleTO);
+        newGoogleMfaAuthModuleTO = AUTH_MODULE_SERVICE.read(newGoogleMfaAuthModuleTO.getKey());
         assertNotNull(newGoogleMfaAuthModuleTO);
 
         conf = newGoogleMfaAuthModuleTO.getConf();
@@ -339,7 +339,7 @@
 
     @Test
     public void updateDuoMfaAuthModule() {
-        AuthModuleTO duoMfaAuthModuleTO = authModuleService.read("DefaultDuoMfaAuthModule");
+        AuthModuleTO duoMfaAuthModuleTO = AUTH_MODULE_SERVICE.read("DefaultDuoMfaAuthModule");
         assertNotNull(duoMfaAuthModuleTO);
 
         AuthModuleTO newDuoMfaAuthModuleTO = buildAuthModuleTO(AuthModuleSupportedType.DUO);
@@ -353,8 +353,8 @@
         newDuoMfaAuthModuleTO.setConf(conf);
 
         // update new auth module
-        authModuleService.update(newDuoMfaAuthModuleTO);
-        newDuoMfaAuthModuleTO = authModuleService.read(newDuoMfaAuthModuleTO.getKey());
+        AUTH_MODULE_SERVICE.update(newDuoMfaAuthModuleTO);
+        newDuoMfaAuthModuleTO = AUTH_MODULE_SERVICE.read(newDuoMfaAuthModuleTO.getKey());
         assertNotNull(newDuoMfaAuthModuleTO);
 
         conf = newDuoMfaAuthModuleTO.getConf();
@@ -363,7 +363,7 @@
 
     @Test
     public void updateLDAPAuthModule() {
-        AuthModuleTO ldapAuthModuleTO = authModuleService.read("DefaultLDAPAuthModule");
+        AuthModuleTO ldapAuthModuleTO = AUTH_MODULE_SERVICE.read("DefaultLDAPAuthModule");
         assertNotNull(ldapAuthModuleTO);
 
         AuthModuleTO newLdapAuthModuleTO = buildAuthModuleTO(AuthModuleSupportedType.LDAP);
@@ -376,8 +376,8 @@
         newLdapAuthModuleTO.setConf(conf);
 
         // update new auth module
-        authModuleService.update(newLdapAuthModuleTO);
-        newLdapAuthModuleTO = authModuleService.read(newLdapAuthModuleTO.getKey());
+        AUTH_MODULE_SERVICE.update(newLdapAuthModuleTO);
+        newLdapAuthModuleTO = AUTH_MODULE_SERVICE.read(newLdapAuthModuleTO.getKey());
         assertNotNull(newLdapAuthModuleTO);
 
         conf = newLdapAuthModuleTO.getConf();
@@ -386,7 +386,7 @@
 
     @Test
     public void updateSAML2IdPAuthModule() {
-        AuthModuleTO saml2IdpAuthModuleTO = authModuleService.read("DefaultSAML2IdPAuthModule");
+        AuthModuleTO saml2IdpAuthModuleTO = AUTH_MODULE_SERVICE.read("DefaultSAML2IdPAuthModule");
         assertNotNull(saml2IdpAuthModuleTO);
 
         AuthModuleTO newsaml2IdpAuthModuleTO = buildAuthModuleTO(AuthModuleSupportedType.SAML2_IDP);
@@ -399,8 +399,8 @@
         newsaml2IdpAuthModuleTO.setConf(conf);
 
         // update new auth module
-        authModuleService.update(newsaml2IdpAuthModuleTO);
-        newsaml2IdpAuthModuleTO = authModuleService.read(newsaml2IdpAuthModuleTO.getKey());
+        AUTH_MODULE_SERVICE.update(newsaml2IdpAuthModuleTO);
+        newsaml2IdpAuthModuleTO = AUTH_MODULE_SERVICE.read(newsaml2IdpAuthModuleTO.getKey());
         assertNotNull(newsaml2IdpAuthModuleTO);
 
         conf = newsaml2IdpAuthModuleTO.getConf();
@@ -409,7 +409,7 @@
 
     @Test
     public void updateOIDCAuthModule() {
-        AuthModuleTO oidcAuthModuleTO = authModuleService.read("DefaultOIDCAuthModule");
+        AuthModuleTO oidcAuthModuleTO = AUTH_MODULE_SERVICE.read("DefaultOIDCAuthModule");
         assertNotNull(oidcAuthModuleTO);
 
         AuthModuleTO newOIDCAuthModuleTO = buildAuthModuleTO(AuthModuleSupportedType.OIDC);
@@ -422,8 +422,8 @@
         newOIDCAuthModuleTO.setConf(conf);
 
         // update new auth module
-        authModuleService.update(newOIDCAuthModuleTO);
-        newOIDCAuthModuleTO = authModuleService.read(newOIDCAuthModuleTO.getKey());
+        AUTH_MODULE_SERVICE.update(newOIDCAuthModuleTO);
+        newOIDCAuthModuleTO = AUTH_MODULE_SERVICE.read(newOIDCAuthModuleTO.getKey());
         assertNotNull(newOIDCAuthModuleTO);
 
         conf = newOIDCAuthModuleTO.getConf();
@@ -432,7 +432,7 @@
 
     @Test
     public void updateJDBCAuthModule() {
-        AuthModuleTO jdbcAuthModuleTO = authModuleService.read("DefaultJDBCAuthModule");
+        AuthModuleTO jdbcAuthModuleTO = AUTH_MODULE_SERVICE.read("DefaultJDBCAuthModule");
         assertNotNull(jdbcAuthModuleTO);
 
         AuthModuleTO newJDBCAuthModuleTO = buildAuthModuleTO(AuthModuleSupportedType.JDBC);
@@ -445,8 +445,8 @@
         newJDBCAuthModuleTO.setConf(conf);
 
         // update new auth module
-        authModuleService.update(newJDBCAuthModuleTO);
-        newJDBCAuthModuleTO = authModuleService.read(newJDBCAuthModuleTO.getKey());
+        AUTH_MODULE_SERVICE.update(newJDBCAuthModuleTO);
+        newJDBCAuthModuleTO = AUTH_MODULE_SERVICE.read(newJDBCAuthModuleTO.getKey());
         assertNotNull(newJDBCAuthModuleTO);
 
         conf = newJDBCAuthModuleTO.getConf();
@@ -455,7 +455,7 @@
 
     @Test
     public void updateJaasAuthModule() {
-        AuthModuleTO jaasAuthModuleTO = authModuleService.read("DefaultJaasAuthModule");
+        AuthModuleTO jaasAuthModuleTO = AUTH_MODULE_SERVICE.read("DefaultJaasAuthModule");
         assertNotNull(jaasAuthModuleTO);
 
         AuthModuleTO newJaasAuthModuleTO = buildAuthModuleTO(AuthModuleSupportedType.JAAS);
@@ -468,8 +468,8 @@
         newJaasAuthModuleTO.setConf(conf);
 
         // update new auth module
-        authModuleService.update(newJaasAuthModuleTO);
-        newJaasAuthModuleTO = authModuleService.read(newJaasAuthModuleTO.getKey());
+        AUTH_MODULE_SERVICE.update(newJaasAuthModuleTO);
+        newJaasAuthModuleTO = AUTH_MODULE_SERVICE.read(newJaasAuthModuleTO.getKey());
         assertNotNull(newJaasAuthModuleTO);
 
         conf = newJaasAuthModuleTO.getConf();
@@ -478,7 +478,7 @@
 
     @Test
     public void updateStaticAuthModule() {
-        AuthModuleTO staticAuthModuleTO = authModuleService.read("DefaultStaticAuthModule");
+        AuthModuleTO staticAuthModuleTO = AUTH_MODULE_SERVICE.read("DefaultStaticAuthModule");
         assertNotNull(staticAuthModuleTO);
 
         AuthModuleTO newStaticAuthModuleTO = buildAuthModuleTO(AuthModuleSupportedType.STATIC);
@@ -492,8 +492,8 @@
         newStaticAuthModuleTO.setConf(conf);
 
         // update new auth module
-        authModuleService.update(newStaticAuthModuleTO);
-        newStaticAuthModuleTO = authModuleService.read(newStaticAuthModuleTO.getKey());
+        AUTH_MODULE_SERVICE.update(newStaticAuthModuleTO);
+        newStaticAuthModuleTO = AUTH_MODULE_SERVICE.read(newStaticAuthModuleTO.getKey());
         assertNotNull(newStaticAuthModuleTO);
 
         conf = newStaticAuthModuleTO.getConf();
@@ -502,7 +502,7 @@
 
     @Test
     public void updateU2fAuthModule() {
-        AuthModuleTO u2fAuthModuleTO = authModuleService.read("DefaultU2FAuthModule");
+        AuthModuleTO u2fAuthModuleTO = AUTH_MODULE_SERVICE.read("DefaultU2FAuthModule");
         assertNotNull(u2fAuthModuleTO);
 
         AuthModuleTO newU2fAuthModuleTO = buildAuthModuleTO(AuthModuleSupportedType.U2F);
@@ -515,8 +515,8 @@
         newU2fAuthModuleTO.setConf(conf);
 
         // update new auth module
-        authModuleService.update(newU2fAuthModuleTO);
-        newU2fAuthModuleTO = authModuleService.read(newU2fAuthModuleTO.getKey());
+        AUTH_MODULE_SERVICE.update(newU2fAuthModuleTO);
+        newU2fAuthModuleTO = AUTH_MODULE_SERVICE.read(newU2fAuthModuleTO.getKey());
         assertNotNull(newU2fAuthModuleTO);
 
         conf = newU2fAuthModuleTO.getConf();
@@ -525,7 +525,7 @@
 
     @Test
     public void updateSyncopeAuthModule() {
-        AuthModuleTO syncopeAuthModuleTO = authModuleService.read("DefaultSyncopeAuthModule");
+        AuthModuleTO syncopeAuthModuleTO = AUTH_MODULE_SERVICE.read("DefaultSyncopeAuthModule");
         assertNotNull(syncopeAuthModuleTO);
 
         AuthModuleTO newSyncopeAuthModuleTO = buildAuthModuleTO(AuthModuleSupportedType.SYNCOPE);
@@ -538,8 +538,8 @@
         newSyncopeAuthModuleTO.setConf(conf);
 
         // update new auth module
-        authModuleService.update(newSyncopeAuthModuleTO);
-        newSyncopeAuthModuleTO = authModuleService.read(newSyncopeAuthModuleTO.getKey());
+        AUTH_MODULE_SERVICE.update(newSyncopeAuthModuleTO);
+        newSyncopeAuthModuleTO = AUTH_MODULE_SERVICE.read(newSyncopeAuthModuleTO.getKey());
         assertNotNull(newSyncopeAuthModuleTO);
 
         conf = newSyncopeAuthModuleTO.getConf();
@@ -552,10 +552,10 @@
             AuthModuleTO read = createAuthModule(buildAuthModuleTO(type));
             assertNotNull(read);
 
-            authModuleService.delete(read.getKey());
+            AUTH_MODULE_SERVICE.delete(read.getKey());
 
             try {
-                authModuleService.read(read.getKey());
+                AUTH_MODULE_SERVICE.read(read.getKey());
                 fail("This should not happen");
             } catch (SyncopeClientException e) {
                 assertNotNull(e);
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuthenticationITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuthenticationITCase.java
index 1a3e417..58077f5 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuthenticationITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuthenticationITCase.java
@@ -42,8 +42,8 @@
 import org.apache.syncope.common.lib.request.AnyObjectCR;
 import org.apache.syncope.common.lib.request.GroupCR;
 import org.apache.syncope.common.lib.request.MembershipUR;
-import org.apache.syncope.common.lib.request.ResourceDR;
 import org.apache.syncope.common.lib.request.PasswordPatch;
+import org.apache.syncope.common.lib.request.ResourceDR;
 import org.apache.syncope.common.lib.request.StatusR;
 import org.apache.syncope.common.lib.request.StringPatchItem;
 import org.apache.syncope.common.lib.request.StringReplacePatchItem;
@@ -58,16 +58,16 @@
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.to.RoleTO;
-import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.UserRequestForm;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
 import org.apache.syncope.common.lib.types.CipherAlgorithm;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.PatchOperation;
 import org.apache.syncope.common.lib.types.ResourceDeassociationAction;
 import org.apache.syncope.common.lib.types.SchemaType;
-import org.apache.syncope.common.lib.types.IdRepoEntitlement;
 import org.apache.syncope.common.lib.types.StatusRType;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 import org.apache.syncope.common.rest.api.beans.AnyQuery;
@@ -95,14 +95,14 @@
     public void readEntitlements() {
         // 1. as not authenticated (not allowed)
         try {
-            clientFactory.create().self();
+            CLIENT_FACTORY.create().self();
             fail("This should not happen");
         } catch (AccessControlException e) {
             assertNotNull(e);
         }
 
         // 2. as anonymous
-        Triple<Map<String, Set<String>>, List<String>, UserTO> self = clientFactory.create(
+        Triple<Map<String, Set<String>>, List<String>, UserTO> self = CLIENT_FACTORY.create(
                 new AnonymousAuthenticationHandler(ANONYMOUS_UNAME, ANONYMOUS_KEY)).self();
         assertEquals(1, self.getLeft().size());
         assertTrue(self.getLeft().keySet().contains(IdRepoEntitlement.ANONYMOUS));
@@ -110,14 +110,14 @@
         assertEquals(ANONYMOUS_UNAME, self.getRight().getUsername());
 
         // 3. as admin
-        self = adminClient.self();
-        assertEquals(adminClient.platform().getEntitlements().size(), self.getLeft().size());
+        self = ADMIN_CLIENT.self();
+        assertEquals(ADMIN_CLIENT.platform().getEntitlements().size(), self.getLeft().size());
         assertFalse(self.getLeft().keySet().contains(IdRepoEntitlement.ANONYMOUS));
         assertEquals(List.of(), self.getMiddle());
         assertEquals(ADMIN_UNAME, self.getRight().getUsername());
 
         // 4. as user
-        self = clientFactory.create("bellini", ADMIN_PWD).self();
+        self = CLIENT_FACTORY.create("bellini", ADMIN_PWD).self();
         assertFalse(self.getLeft().isEmpty());
         assertFalse(self.getLeft().keySet().contains(IdRepoEntitlement.ANONYMOUS));
         assertEquals(List.of(), self.getMiddle());
@@ -143,11 +143,11 @@
         assertNotNull(userTO);
 
         // 3. read the schema created above (as admin) - success
-        schemaTO = schemaService.read(SchemaType.PLAIN, schemaName);
+        schemaTO = SCHEMA_SERVICE.read(SchemaType.PLAIN, schemaName);
         assertNotNull(schemaTO);
 
         // 4. read the schema created above (as user) - success
-        SchemaService schemaService2 = clientFactory.create(userTO.getUsername(), "password123").
+        SchemaService schemaService2 = CLIENT_FACTORY.create(userTO.getUsername(), "password123").
                 getService(SchemaService.class);
         schemaTO = schemaService2.read(SchemaType.PLAIN, schemaName);
         assertNotNull(schemaTO);
@@ -160,7 +160,7 @@
             assertNotNull(e);
         }
 
-        assertEquals(0, getFailedLogins(userService, userTO.getKey()));
+        assertEquals(0, getFailedLogins(USER_SERVICE, userTO.getKey()));
     }
 
     @Test
@@ -171,13 +171,13 @@
         UserTO userTO = createUser(userCR).getEntity();
         assertNotNull(userTO);
 
-        UserService userService2 = clientFactory.create(userTO.getUsername(), "password123").
+        UserService userService2 = CLIENT_FACTORY.create(userTO.getUsername(), "password123").
                 getService(UserService.class);
 
         UserTO readUserTO = userService2.read("1417acbe-cbf6-4277-9372-e75e04f97000");
         assertNotNull(readUserTO);
 
-        UserService userService3 = clientFactory.create("puccini", ADMIN_PWD).getService(UserService.class);
+        UserService userService3 = CLIENT_FACTORY.create("puccini", ADMIN_PWD).getService(UserService.class);
 
         try {
             userService3.read("b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee");
@@ -198,10 +198,10 @@
 
         // 1. user assigned to role 1, with search entitlement on realms /odd and /even: won't find anything with 
         // root realm
-        UserService userService2 = clientFactory.create(userTO.getUsername(), "password123").
+        UserService userService2 = CLIENT_FACTORY.create(userTO.getUsername(), "password123").
                 getService(UserService.class);
 
-        if (ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform())) {
+        if (ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform())) {
             try {
                 Thread.sleep(2000);
             } catch (InterruptedException ex) {
@@ -221,7 +221,7 @@
         assertFalse(matchingUserKeys.contains("823074dc-d280-436d-a7dd-07399fae48ec"));
 
         // 2. user assigned to role 4, with search entitlement on realm /even/two
-        UserService userService3 = clientFactory.create("puccini", ADMIN_PWD).getService(UserService.class);
+        UserService userService3 = CLIENT_FACTORY.create("puccini", ADMIN_PWD).getService(UserService.class);
 
         matchingUsers = userService3.search(new AnyQuery.Builder().realm("/even/two").
                 fiql(SyncopeClient.getUserSearchConditionBuilder().isNotNull("loginDate").query()).build());
@@ -244,7 +244,7 @@
             role.getEntitlements().add(IdRepoEntitlement.USER_READ);
             role.getRealms().add("/even/two");
 
-            roleKey = roleService.create(role).getHeaderString(RESTHeaders.RESOURCE_KEY);
+            roleKey = ROLE_SERVICE.create(role).getHeaderString(RESTHeaders.RESOURCE_KEY);
             assertNotNull(roleKey);
 
             // 2. as admin, create delegated admin user, and assign the role just created
@@ -255,7 +255,7 @@
 
             // 3. instantiate a delegate user service client, for further operations
             UserService delegatedUserService =
-                    clientFactory.create(delegatedAdmin.getUsername(), "password123").getService(UserService.class);
+                    CLIENT_FACTORY.create(delegatedAdmin.getUsername(), "password123").getService(UserService.class);
 
             // 4. as delegated, create user under realm / -> fail
             UserCR userCR = UserITCase.getUniqueSample("delegated@syncope.apache.org");
@@ -303,17 +303,17 @@
             delegatedUserService.delete(user.getKey());
 
             try {
-                userService.read(user.getKey());
+                USER_SERVICE.read(user.getKey());
                 fail("This should not happen");
             } catch (SyncopeClientException e) {
                 assertEquals(ClientExceptionType.NotFound, e.getType());
             }
         } finally {
             if (roleKey != null) {
-                roleService.delete(roleKey);
+                ROLE_SERVICE.delete(roleKey);
             }
             if (delegatedAdminKey != null) {
-                userService.delete(delegatedAdminKey);
+                USER_SERVICE.delete(delegatedAdminKey);
             }
         }
     }
@@ -327,26 +327,26 @@
         assertNotNull(userTO);
         String userKey = userTO.getKey();
 
-        UserService userService2 = clientFactory.create(userTO.getUsername(), "password123").
+        UserService userService2 = CLIENT_FACTORY.create(userTO.getUsername(), "password123").
                 getService(UserService.class);
         assertEquals(0, getFailedLogins(userService2, userKey));
 
         // authentications failed ...
         try {
-            clientFactory.create(userTO.getUsername(), "wrongpwd1");
+            CLIENT_FACTORY.create(userTO.getUsername(), "wrongpwd1");
             fail("This should not happen");
         } catch (AccessControlException e) {
             assertNotNull(e);
         }
         try {
-            clientFactory.create(userTO.getUsername(), "wrongpwd1");
+            CLIENT_FACTORY.create(userTO.getUsername(), "wrongpwd1");
             fail("This should not happen");
         } catch (AccessControlException e) {
             assertNotNull(e);
         }
-        assertEquals(2, getFailedLogins(userService, userKey));
+        assertEquals(2, getFailedLogins(USER_SERVICE, userKey));
 
-        UserService userService4 = clientFactory.create(userTO.getUsername(), "password123").
+        UserService userService4 = CLIENT_FACTORY.create(userTO.getUsername(), "password123").
                 getService(UserService.class);
         assertEquals(0, getFailedLogins(userService4, userKey));
     }
@@ -361,39 +361,39 @@
         String userKey = userTO.getKey();
         assertNotNull(userTO);
 
-        assertEquals(0, getFailedLogins(userService, userKey));
+        assertEquals(0, getFailedLogins(USER_SERVICE, userKey));
 
         // authentications failed ...
         try {
-            clientFactory.create(userTO.getUsername(), "wrongpwd1");
+            CLIENT_FACTORY.create(userTO.getUsername(), "wrongpwd1");
             fail("This should not happen");
         } catch (AccessControlException e) {
             assertNotNull(e);
         }
         try {
-            clientFactory.create(userTO.getUsername(), "wrongpwd1");
+            CLIENT_FACTORY.create(userTO.getUsername(), "wrongpwd1");
             fail("This should not happen");
         } catch (AccessControlException e) {
             assertNotNull(e);
         }
         try {
-            clientFactory.create(userTO.getUsername(), "wrongpwd1");
+            CLIENT_FACTORY.create(userTO.getUsername(), "wrongpwd1");
             fail("This should not happen");
         } catch (AccessControlException e) {
             assertNotNull(e);
         }
 
-        assertEquals(3, getFailedLogins(userService, userKey));
+        assertEquals(3, getFailedLogins(USER_SERVICE, userKey));
 
         // last authentication before suspension
         try {
-            clientFactory.create(userTO.getUsername(), "wrongpwd1");
+            CLIENT_FACTORY.create(userTO.getUsername(), "wrongpwd1");
             fail("This should not happen");
         } catch (AccessControlException e) {
             assertNotNull(e);
         }
 
-        userTO = userService.read(userTO.getKey());
+        userTO = USER_SERVICE.read(userTO.getKey());
         assertNotNull(userTO);
         assertNotNull(userTO.getFailedLogins());
         assertEquals(3, userTO.getFailedLogins().intValue());
@@ -401,7 +401,7 @@
 
         // Access with correct credentials should fail as user is suspended
         try {
-            clientFactory.create(userTO.getUsername(), "password123");
+            CLIENT_FACTORY.create(userTO.getUsername(), "password123");
             fail("This should not happen");
         } catch (AccessControlException e) {
             assertNotNull(e);
@@ -409,12 +409,12 @@
 
         StatusR reactivate = new StatusR.Builder().key(userTO.getKey()).
                 type(StatusRType.REACTIVATE).build();
-        userTO = userService.status(reactivate).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        userTO = USER_SERVICE.status(reactivate).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
         assertNotNull(userTO);
         assertEquals("active", userTO.getStatus());
 
-        SyncopeClient goodPwdClient = clientFactory.create(userTO.getUsername(), "password123");
+        SyncopeClient goodPwdClient = CLIENT_FACTORY.create(userTO.getUsername(), "password123");
         assertEquals(0, goodPwdClient.self().getRight().getFailedLogins().intValue());
     }
 
@@ -423,7 +423,7 @@
         String anyTypeKey = "FOLDER " + getUUIDString();
 
         // 1. no entitlement exists (yet) for the any type to be created
-        assertFalse(adminClient.platform().getEntitlements().stream().
+        assertFalse(ADMIN_CLIENT.platform().getEntitlements().stream().
                 anyMatch(entitlement -> entitlement.contains(anyTypeKey)));
 
         // 2. create plain schema, any type class and any type
@@ -435,16 +435,16 @@
         AnyTypeClassTO anyTypeClass = new AnyTypeClassTO();
         anyTypeClass.setKey("folder" + getUUIDString());
         anyTypeClass.getPlainSchemas().add(path.getKey());
-        anyTypeClassService.create(anyTypeClass);
+        ANY_TYPE_CLASS_SERVICE.create(anyTypeClass);
 
         AnyTypeTO anyTypeTO = new AnyTypeTO();
         anyTypeTO.setKey(anyTypeKey);
         anyTypeTO.setKind(AnyTypeKind.ANY_OBJECT);
         anyTypeTO.getClasses().add(anyTypeClass.getKey());
-        anyTypeService.create(anyTypeTO);
+        ANY_TYPE_SERVICE.create(anyTypeTO);
 
         // 2. now entitlement exists for the any type just created
-        assertTrue(adminClient.platform().getEntitlements().stream().
+        assertTrue(ADMIN_CLIENT.platform().getEntitlements().stream().
                 anyMatch(entitlement -> entitlement.contains(anyTypeKey)));
 
         // 3. attempt to create an instance of the type above: fail because no entitlement was assigned
@@ -454,7 +454,7 @@
         folder.setType(anyTypeKey);
         folder.getPlainAttrs().add(attr(path.getKey(), "/home"));
 
-        SyncopeClient belliniClient = clientFactory.create("bellini", ADMIN_PWD);
+        SyncopeClient belliniClient = CLIENT_FACTORY.create("bellini", ADMIN_PWD);
         try {
             belliniClient.getService(AnyObjectService.class).create(folder);
             fail("This should not happen");
@@ -470,7 +470,7 @@
         role.getEntitlements().add(anyTypeKey + "_CREATE");
         role = createRole(role);
 
-        UserTO bellini = userService.read("bellini");
+        UserTO bellini = USER_SERVICE.read("bellini");
         UserUR req = new UserUR();
         req.setKey(bellini.getKey());
         req.getRoles().add(new StringPatchItem.Builder().
@@ -503,7 +503,7 @@
         assertEquals(2, member.getMemberships().size());
         String memberKey = member.getKey();
 
-        if (ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform())) {
+        if (ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform())) {
             try {
                 Thread.sleep(2000);
             } catch (InterruptedException ex) {
@@ -511,14 +511,14 @@
             }
         }
 
-        PagedResult<UserTO> matching = userService.search(
+        PagedResult<UserTO> matching = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().inGroups(group.getKey()).query()).
                         page(1).size(1000).build());
         int fullMatchSize = matching.getResult().size();
         assertTrue(matching.getResult().stream().anyMatch(user -> memberKey.equals(user.getKey())));
 
-        UserService groupOwnerService = clientFactory.create(owner.getUsername(), "password123").
+        UserService groupOwnerService = CLIENT_FACTORY.create(owner.getUsername(), "password123").
                 getService(UserService.class);
 
         // 1. search
@@ -579,7 +579,7 @@
         // 6 delete
         groupOwnerService.delete(memberKey);
         try {
-            userService.read(memberKey);
+            USER_SERVICE.read(memberKey);
             fail();
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -588,7 +588,7 @@
 
     @Test
     public void issueSYNCOPE434() {
-        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform()));
+        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform()));
 
         // 1. create user with group 'groupForWorkflowApproval' 
         // (users with group groupForWorkflowApproval are defined in workflow as subject to approval)
@@ -601,25 +601,25 @@
 
         // 2. try to authenticate: fail
         try {
-            clientFactory.create(userTO.getUsername(), "password123").self();
+            CLIENT_FACTORY.create(userTO.getUsername(), "password123").self();
             fail("This should not happen");
         } catch (AccessControlException e) {
             assertNotNull(e);
         }
 
         // 3. approve user
-        UserRequestForm form = userRequestService.listForms(
+        UserRequestForm form = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
-        form = userRequestService.claimForm(form.getTaskId());
+        form = USER_REQUEST_SERVICE.claimForm(form.getTaskId());
         form.getProperty("approveCreate").get().setValue(Boolean.TRUE.toString());
-        userTO = userRequestService.submitForm(form).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        userTO = USER_REQUEST_SERVICE.submitForm(form).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
         assertNotNull(userTO);
         assertEquals("active", userTO.getStatus());
 
         // 4. try to authenticate again: success
         Triple<Map<String, Set<String>>, List<String>, UserTO> self =
-                clientFactory.create(userTO.getUsername(), "password123").self();
+                CLIENT_FACTORY.create(userTO.getUsername(), "password123").self();
         assertNotNull(self);
         assertNotNull(self.getLeft());
         assertEquals(List.of(), self.getMiddle());
@@ -639,7 +639,7 @@
         // 2. unlink the resource from the created user
         ResourceDR resourceDR = new ResourceDR.Builder().key(user.getKey()).
                 action(ResourceDeassociationAction.UNLINK).resource(RESOURCE_NAME_TESTDB).build();
-        assertNotNull(parseBatchResponse(userService.deassociate(resourceDR)));
+        assertNotNull(parseBatchResponse(USER_SERVICE.deassociate(resourceDR)));
 
         // 3. change password on Syncope
         UserUR userUR = new UserUR();
@@ -656,9 +656,9 @@
 
         // 5. successfully authenticate with old (on db resource) and new (on internal storage) password values
         Triple<Map<String, Set<String>>, List<String>, UserTO> self =
-                clientFactory.create(user.getUsername(), "password123").self();
+                CLIENT_FACTORY.create(user.getUsername(), "password123").self();
         assertNotNull(self);
-        self = clientFactory.create(user.getUsername(), "password234").self();
+        self = CLIENT_FACTORY.create(user.getUsername(), "password234").self();
         assertNotNull(self);
     }
 
@@ -666,14 +666,14 @@
     public void issueSYNCOPE706() {
         String username = getUUIDString();
         try {
-            userService.read(username);
+            USER_SERVICE.read(username);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
 
         try {
-            clientFactory.create(username, "anypassword").self();
+            CLIENT_FACTORY.create(username, "anypassword").self();
             fail("This should not happen");
         } catch (AccessControlException e) {
             assertNotNull(e.getMessage());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/BatchITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/BatchITCase.java
index 8e62b10..07108a2 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/BatchITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/BatchITCase.java
@@ -194,7 +194,7 @@
         String boundary = "--batch_" + UUID.randomUUID().toString();
 
         Response response = WebClient.create(ADDRESS).path("batch").
-                header(HttpHeaders.AUTHORIZATION, "Bearer " + adminClient.getJWT()).
+                header(HttpHeaders.AUTHORIZATION, "Bearer " + ADMIN_CLIENT.getJWT()).
                 type(RESTHeaders.multipartMixedWith(boundary.substring(2))).
                 post(requestBody(boundary));
         assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
@@ -216,7 +216,7 @@
 
         // request async processing
         Response response = WebClient.create(ADDRESS).path("batch").
-                header(HttpHeaders.AUTHORIZATION, "Bearer " + adminClient.getJWT()).
+                header(HttpHeaders.AUTHORIZATION, "Bearer " + ADMIN_CLIENT.getJWT()).
                 header(RESTHeaders.PREFER, Preference.RESPOND_ASYNC).
                 type(RESTHeaders.multipartMixedWith(boundary.substring(2))).
                 post(requestBody(boundary));
@@ -228,7 +228,7 @@
         assertNotNull(monitor);
 
         WebClient client = WebClient.create(monitor).
-                header(HttpHeaders.AUTHORIZATION, "Bearer " + adminClient.getJWT()).
+                header(HttpHeaders.AUTHORIZATION, "Bearer " + ADMIN_CLIENT.getJWT()).
                 type(RESTHeaders.multipartMixedWith(boundary.substring(2)));
 
         AtomicReference<Response> holder = new AtomicReference<>();
@@ -255,13 +255,13 @@
 
         // check results again: removed since they were returned above
         response = WebClient.create(monitor).
-                header(HttpHeaders.AUTHORIZATION, "Bearer " + adminClient.getJWT()).
+                header(HttpHeaders.AUTHORIZATION, "Bearer " + ADMIN_CLIENT.getJWT()).
                 type(RESTHeaders.multipartMixedWith(boundary.substring(2))).get();
         assertEquals(Response.Status.NOT_FOUND.getStatusCode(), response.getStatus());
     }
 
     private static BatchRequest batchRequest() {
-        BatchRequest batchRequest = adminClient.batch();
+        BatchRequest batchRequest = ADMIN_CLIENT.batch();
 
         // 1. create user as YAML
         UserService batchUserService = batchRequest.getService(UserService.class);
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/BpmnProcessITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/BpmnProcessITCase.java
index d891085..9bfbac7 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/BpmnProcessITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/BpmnProcessITCase.java
@@ -18,9 +18,9 @@
  */
 package org.apache.syncope.fit.core;
 
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assumptions.assumeFalse;
 import static org.junit.jupiter.api.Assumptions.assumeTrue;
 
@@ -39,30 +39,30 @@
 
 public class BpmnProcessITCase extends AbstractITCase {
 
-    private static String userWorkflowKey = null;
+    private static String USER_WORKFLOW_KEY = null;
 
     @BeforeAll
     public static void findDefault() {
-        assumeFalse(clientFactory.getContentType() == SyncopeClientFactoryBean.ContentType.YAML);
-        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform()));
+        assumeFalse(CLIENT_FACTORY.getContentType() == SyncopeClientFactoryBean.ContentType.YAML);
+        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform()));
 
-        bpmnProcessService.list().stream().
+        BPMN_PROCESS_SERVICE.list().stream().
                 filter(BpmnProcess::isUserWorkflow).findAny().
-                ifPresent(process -> userWorkflowKey = process.getKey());
-        assertNotNull(userWorkflowKey);
+                ifPresent(process -> USER_WORKFLOW_KEY = process.getKey());
+        assertNotNull(USER_WORKFLOW_KEY);
     }
 
     @BeforeEach
     public void check() {
-        assumeFalse(clientFactory.getContentType() == SyncopeClientFactoryBean.ContentType.YAML);
-        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform()));
+        assumeFalse(CLIENT_FACTORY.getContentType() == SyncopeClientFactoryBean.ContentType.YAML);
+        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform()));
     }
 
     @Test
     public void exportUserWorkflowProcess() throws IOException {
-        Response response = bpmnProcessService.get(userWorkflowKey);
+        Response response = BPMN_PROCESS_SERVICE.get(USER_WORKFLOW_KEY);
         assertTrue(response.getMediaType().toString().
-                startsWith(clientFactory.getContentType().getMediaType().toString()));
+                startsWith(CLIENT_FACTORY.getContentType().getMediaType().toString()));
         assertTrue(response.getEntity() instanceof InputStream);
         String definition = IOUtils.toString((InputStream) response.getEntity(), StandardCharsets.UTF_8);
         assertNotNull(definition);
@@ -71,9 +71,9 @@
 
     @Test
     public void updateUserWorkflowProcess() throws IOException {
-        Response response = bpmnProcessService.get(userWorkflowKey);
+        Response response = BPMN_PROCESS_SERVICE.get(USER_WORKFLOW_KEY);
         String definition = IOUtils.toString((InputStream) response.getEntity(), StandardCharsets.UTF_8);
 
-        bpmnProcessService.set(userWorkflowKey, definition);
+        BPMN_PROCESS_SERVICE.set(USER_WORKFLOW_KEY, definition);
     }
 }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/CamelRouteITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/CamelRouteITCase.java
index 82bb9b7..33b10b6 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/CamelRouteITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/CamelRouteITCase.java
@@ -41,12 +41,12 @@
 
     @BeforeEach
     public void check() {
-        assumeTrue(adminClient.platform().getProvisioningInfo().getUserProvisioningManager().contains("Camel"));
+        assumeTrue(ADMIN_CLIENT.platform().getProvisioningInfo().getUserProvisioningManager().contains("Camel"));
     }
 
     @Test
     public void userRoutes() {
-        List<CamelRouteTO> userRoutes = camelRouteService.list(AnyTypeKind.USER);
+        List<CamelRouteTO> userRoutes = CAMEL_ROUTE_SERVICE.list(AnyTypeKind.USER);
         assertNotNull(userRoutes);
         assertEquals(16, userRoutes.size());
         userRoutes.forEach(route -> assertNotNull(route.getContent()));
@@ -54,23 +54,23 @@
 
     @Test
     public void groupRoutes() {
-        List<CamelRouteTO> groupRoutes = camelRouteService.list(AnyTypeKind.GROUP);
+        List<CamelRouteTO> groupRoutes = CAMEL_ROUTE_SERVICE.list(AnyTypeKind.GROUP);
         assertNotNull(groupRoutes);
         assertEquals(8, groupRoutes.size());
         groupRoutes.forEach(route -> assertNotNull(route.getContent()));
     }
 
     private static CamelRouteTO doUpdate(final AnyTypeKind anyTypeKind, final String key, final String content) {
-        CamelRouteTO route = camelRouteService.read(anyTypeKind, key);
+        CamelRouteTO route = CAMEL_ROUTE_SERVICE.read(anyTypeKind, key);
         route.setContent(content);
-        camelRouteService.update(anyTypeKind, route);
+        CAMEL_ROUTE_SERVICE.update(anyTypeKind, route);
         // getting new route definition
-        return camelRouteService.read(anyTypeKind, key);
+        return CAMEL_ROUTE_SERVICE.read(anyTypeKind, key);
     }
 
     @Test
     public void update() {
-        CamelRouteTO oldRoute = camelRouteService.read(AnyTypeKind.USER, "createUser");
+        CamelRouteTO oldRoute = CAMEL_ROUTE_SERVICE.read(AnyTypeKind.USER, "createUser");
         assertNotNull(oldRoute);
         String routeContent = "<route id=\"createUser\">\n"
                 + "  <from uri=\"direct:createUser\"/>\n"
@@ -102,7 +102,7 @@
 
     @Test
     public void scriptingUpdate() {
-        CamelRouteTO oldRoute = camelRouteService.read(AnyTypeKind.USER, "createUser");
+        CamelRouteTO oldRoute = CAMEL_ROUTE_SERVICE.read(AnyTypeKind.USER, "createUser");
         // updating route content including new attribute management
 
         String routeContent = ""
@@ -143,7 +143,7 @@
             AnyTypeClassTO typeClass = new AnyTypeClassTO();
             typeClass.setKey("camelAttribute");
             typeClass.getPlainSchemas().add(schemaTO.getKey());
-            anyTypeClassService.create(typeClass);
+            ANY_TYPE_CLASS_SERVICE.create(typeClass);
 
             UserCR userCR = new UserCR();
             userCR.setRealm(SyncopeConstants.ROOT_REALM);
@@ -166,7 +166,7 @@
 
     @Test
     public void issueSYNCOPE931() {
-        CamelRouteTO oldRoute = camelRouteService.read(AnyTypeKind.USER, "createUser");
+        CamelRouteTO oldRoute = CAMEL_ROUTE_SERVICE.read(AnyTypeKind.USER, "createUser");
         assertNotNull(oldRoute);
         String routeContent = "<route id=\"createUser\">\n"
                 + "  <from uri=\"direct:createUser\"/>\n"
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ClientAppITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ClientAppITCase.java
index fdea1a5..72434fe 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ClientAppITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ClientAppITCase.java
@@ -49,7 +49,7 @@
         SAML2SPClientAppTO samlSpTO = buildSAML2SP();
         samlSpTO = createClientApp(ClientAppType.SAML2SP, samlSpTO);
 
-        SAML2SPClientAppTO found = clientAppService.read(ClientAppType.SAML2SP, samlSpTO.getKey());
+        SAML2SPClientAppTO found = CLIENT_APP_SERVICE.read(ClientAppType.SAML2SP, samlSpTO.getKey());
         assertNotNull(found);
         assertFalse(StringUtils.isBlank(found.getEntityId()));
         assertFalse(StringUtils.isBlank(found.getMetadataLocation()));
@@ -74,8 +74,8 @@
         samlSpTO.setEntityId("newEntityId");
         samlSpTO.setAccessPolicy(accessPolicyTO.getKey());
 
-        clientAppService.update(ClientAppType.SAML2SP, samlSpTO);
-        SAML2SPClientAppTO updated = clientAppService.read(ClientAppType.SAML2SP, samlSpTO.getKey());
+        CLIENT_APP_SERVICE.update(ClientAppType.SAML2SP, samlSpTO);
+        SAML2SPClientAppTO updated = CLIENT_APP_SERVICE.read(ClientAppType.SAML2SP, samlSpTO.getKey());
 
         assertNotNull(updated);
         assertEquals("newEntityId", updated.getEntityId());
@@ -87,10 +87,10 @@
         SAML2SPClientAppTO samlSpTO = buildSAML2SP();
         samlSpTO = createClientApp(ClientAppType.SAML2SP, samlSpTO);
 
-        clientAppService.delete(ClientAppType.SAML2SP, samlSpTO.getKey());
+        CLIENT_APP_SERVICE.delete(ClientAppType.SAML2SP, samlSpTO.getKey());
 
         try {
-            clientAppService.read(ClientAppType.SAML2SP, samlSpTO.getKey());
+            CLIENT_APP_SERVICE.read(ClientAppType.SAML2SP, samlSpTO.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertNotNull(e);
@@ -112,7 +112,7 @@
         OIDCRPClientAppTO oidcrpTO = buildOIDCRP();
         oidcrpTO = createClientApp(ClientAppType.OIDCRP, oidcrpTO);
 
-        OIDCRPClientAppTO found = clientAppService.read(ClientAppType.OIDCRP, oidcrpTO.getKey());
+        OIDCRPClientAppTO found = CLIENT_APP_SERVICE.read(ClientAppType.OIDCRP, oidcrpTO.getKey());
         assertNotNull(found);
         assertFalse(StringUtils.isBlank(found.getClientId()));
         assertFalse(StringUtils.isBlank(found.getClientSecret()));
@@ -127,7 +127,7 @@
     public void readCASSP() {
         CASSPClientAppTO casspTO = buildCASSP();
         casspTO = createClientApp(ClientAppType.CASSP, casspTO);
-        CASSPClientAppTO found = clientAppService.read(ClientAppType.CASSP, casspTO.getKey());
+        CASSPClientAppTO found = CLIENT_APP_SERVICE.read(ClientAppType.CASSP, casspTO.getKey());
         assertNotNull(found);
         assertNotNull(found.getServiceId());
         assertNotNull(found.getAccessPolicy());
@@ -148,8 +148,8 @@
         oidcrpTO.setClientId("newClientId");
         oidcrpTO.setAccessPolicy(accessPolicyTO.getKey());
 
-        clientAppService.update(ClientAppType.OIDCRP, oidcrpTO);
-        OIDCRPClientAppTO updated = clientAppService.read(ClientAppType.OIDCRP, oidcrpTO.getKey());
+        CLIENT_APP_SERVICE.update(ClientAppType.OIDCRP, oidcrpTO);
+        OIDCRPClientAppTO updated = CLIENT_APP_SERVICE.read(ClientAppType.OIDCRP, oidcrpTO.getKey());
 
         assertNotNull(updated);
         assertEquals("newClientId", updated.getClientId());
@@ -161,10 +161,10 @@
         OIDCRPClientAppTO oidcrpTO = buildOIDCRP();
         oidcrpTO = createClientApp(ClientAppType.OIDCRP, oidcrpTO);
 
-        clientAppService.delete(ClientAppType.OIDCRP, oidcrpTO.getKey());
+        CLIENT_APP_SERVICE.delete(ClientAppType.OIDCRP, oidcrpTO.getKey());
 
         try {
-            clientAppService.read(ClientAppType.OIDCRP, oidcrpTO.getKey());
+            CLIENT_APP_SERVICE.read(ClientAppType.OIDCRP, oidcrpTO.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertNotNull(e);
@@ -176,10 +176,10 @@
         CASSPClientAppTO casspTO = buildCASSP();
         casspTO = createClientApp(ClientAppType.CASSP, casspTO);
 
-        clientAppService.delete(ClientAppType.CASSP, casspTO.getKey());
+        CLIENT_APP_SERVICE.delete(ClientAppType.CASSP, casspTO.getKey());
 
         try {
-            clientAppService.read(ClientAppType.CASSP, casspTO.getKey());
+            CLIENT_APP_SERVICE.read(ClientAppType.CASSP, casspTO.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertNotNull(e);
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ConnectorITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ConnectorITCase.java
index 54f229b..13b4427 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ConnectorITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ConnectorITCase.java
@@ -66,13 +66,13 @@
 
 public class ConnectorITCase extends AbstractITCase {
 
-    private static String connectorServerLocation;
+    private static String CONNECTOR_SERVER_LOCATION;
 
-    private static String connIdSoapVersion;
+    private static String CONNID_SOAP_VERSION;
 
-    private static String connIdDbVersion;
+    private static String CONNID_DB_VERSION;
 
-    private static String testJDBCURL;
+    private static String TEST_JDBC_URL;
 
     @BeforeAll
     public static void setUpConnIdBundles() throws IOException {
@@ -80,10 +80,10 @@
             Properties props = new Properties();
             props.load(propStream);
 
-            connIdSoapVersion = props.getProperty("connid.soap.version");
-            connIdDbVersion = props.getProperty("connid.database.version");
+            CONNID_SOAP_VERSION = props.getProperty("connid.soap.version");
+            CONNID_DB_VERSION = props.getProperty("connid.database.version");
 
-            testJDBCURL = props.getProperty("testdb.url");
+            TEST_JDBC_URL = props.getProperty("testdb.url");
         } catch (Exception e) {
             LOG.error("Could not load /test.properties", e);
         }
@@ -94,17 +94,17 @@
 
             for (String location : props.getProperty("provisioning.connIdLocation").split(",")) {
                 if (!location.startsWith("file")) {
-                    connectorServerLocation = location;
+                    CONNECTOR_SERVER_LOCATION = location;
                 }
             }
         } catch (Exception e) {
             LOG.error("Could not load /core-embedded.properties", e);
         }
 
-        assertNotNull(connectorServerLocation);
-        assertNotNull(connIdSoapVersion);
-        assertNotNull(connIdDbVersion);
-        assertNotNull(testJDBCURL);
+        assertNotNull(CONNECTOR_SERVER_LOCATION);
+        assertNotNull(CONNID_SOAP_VERSION);
+        assertNotNull(CONNID_DB_VERSION);
+        assertNotNull(TEST_JDBC_URL);
     }
 
     @Test
@@ -112,9 +112,9 @@
         assertThrows(SyncopeClientException.class, () -> {
             ConnInstanceTO connectorTO = new ConnInstanceTO();
 
-            Response response = connectorService.create(connectorTO);
+            Response response = CONNECTOR_SERVICE.create(connectorTO);
             if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-                throw (RuntimeException) clientFactory.getExceptionMapper().fromResponse(response);
+                throw (RuntimeException) CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
             }
         });
     }
@@ -123,9 +123,9 @@
     public void create() {
         ConnInstanceTO connectorTO = new ConnInstanceTO();
         connectorTO.setAdminRealm(SyncopeConstants.ROOT_REALM);
-        connectorTO.setLocation(connectorService.read(
+        connectorTO.setLocation(CONNECTOR_SERVICE.read(
                 "88a7a819-dab5-46b4-9b90-0b9769eabdb8", Locale.ENGLISH.getLanguage()).getLocation());
-        connectorTO.setVersion(connIdSoapVersion);
+        connectorTO.setVersion(CONNID_SOAP_VERSION);
         connectorTO.setConnectorName("net.tirasa.connid.bundles.soap.WebServiceConnector");
         connectorTO.setBundleName("net.tirasa.connid.bundles.soap");
         connectorTO.setDisplayName("Display name");
@@ -164,9 +164,9 @@
         cpc.setMaxObjects(1534);
         connectorTO.setPoolConf(cpc);
 
-        Response response = connectorService.create(connectorTO);
+        Response response = CONNECTOR_SERVICE.create(connectorTO);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-            throw (RuntimeException) clientFactory.getExceptionMapper().fromResponse(response);
+            throw (RuntimeException) CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
         }
 
         ConnInstanceTO actual = getObject(
@@ -190,8 +190,8 @@
         actual.getPoolConf().setMaxObjects(null);
 
         try {
-            connectorService.update(actual);
-            actual = connectorService.read(actual.getKey(), Locale.ENGLISH.getLanguage());
+            CONNECTOR_SERVICE.update(actual);
+            actual = CONNECTOR_SERVICE.read(actual.getKey(), Locale.ENGLISH.getLanguage());
         } catch (SyncopeClientException e) {
             LOG.error("update failed", e);
             t = e;
@@ -204,7 +204,7 @@
 
         // check also for the deletion of the created object
         try {
-            connectorService.delete(actual.getKey());
+            CONNECTOR_SERVICE.delete(actual.getKey());
         } catch (SyncopeClientException e) {
             LOG.error("delete failed", e);
             t = e;
@@ -214,7 +214,7 @@
 
         // check the non existence
         try {
-            connectorService.read(actual.getKey(), Locale.ENGLISH.getLanguage());
+            CONNECTOR_SERVICE.read(actual.getKey(), Locale.ENGLISH.getLanguage());
         } catch (SyncopeClientException e) {
             assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
         }
@@ -229,7 +229,7 @@
         connectorTO.setKey("fcf9f2b0-f7d6-42c9-84a6-61b28255a42b");
 
         // set connector version
-        connectorTO.setVersion(connIdSoapVersion);
+        connectorTO.setVersion(CONNID_SOAP_VERSION);
 
         // set connector name
         connectorTO.setConnectorName("net.tirasa.connid.bundles.soap.WebServiceConnector");
@@ -263,12 +263,12 @@
         // set connector configuration
         connectorTO.getConf().addAll(conf);
 
-        connectorService.update(connectorTO);
-        ConnInstanceTO actual = connectorService.read(connectorTO.getKey(), Locale.ENGLISH.getLanguage());
+        CONNECTOR_SERVICE.update(connectorTO);
+        ConnInstanceTO actual = CONNECTOR_SERVICE.read(connectorTO.getKey(), Locale.ENGLISH.getLanguage());
 
         assertNotNull(actual);
 
-        actual = connectorService.read(actual.getKey(), Locale.ENGLISH.getLanguage());
+        actual = CONNECTOR_SERVICE.read(actual.getKey(), Locale.ENGLISH.getLanguage());
 
         assertNotNull(actual);
         assertEquals(actual.getBundleName(), connectorTO.getBundleName());
@@ -279,13 +279,13 @@
 
     @Test
     public void reload() {
-        connectorService.reload();
+        CONNECTOR_SERVICE.reload();
     }
 
     @Test
     public void deleteWithException() {
         try {
-            connectorService.delete(UUID.randomUUID().toString());
+            CONNECTOR_SERVICE.delete(UUID.randomUUID().toString());
         } catch (SyncopeClientException e) {
             assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
         }
@@ -293,7 +293,7 @@
 
     @Test
     public void list() {
-        List<ConnInstanceTO> connInstances = connectorService.list(null);
+        List<ConnInstanceTO> connInstances = CONNECTOR_SERVICE.list(null);
         assertNotNull(connInstances);
         assertFalse(connInstances.isEmpty());
         connInstances.forEach(Assertions::assertNotNull);
@@ -301,14 +301,14 @@
 
     @Test
     public void read() {
-        ConnInstanceTO connInstance = connectorService.read(
+        ConnInstanceTO connInstance = CONNECTOR_SERVICE.read(
                 "88a7a819-dab5-46b4-9b90-0b9769eabdb8", Locale.ENGLISH.getLanguage());
         assertNotNull(connInstance);
         assertFalse(connInstance.isErrored());
         assertNotNull(connInstance.getLocation());
         assertFalse(connInstance.getConf().isEmpty());
 
-        connInstance = connectorService.read(
+        connInstance = CONNECTOR_SERVICE.read(
                 "413bf072-678a-41d3-9d20-8c453b3a39d1", Locale.ENGLISH.getLanguage());
         assertNotNull(connInstance);
         assertTrue(connInstance.isErrored());
@@ -318,7 +318,7 @@
 
     @Test
     public void getBundles() {
-        List<ConnBundleTO> bundles = connectorService.getBundles(Locale.ENGLISH.getLanguage());
+        List<ConnBundleTO> bundles = CONNECTOR_SERVICE.getBundles(Locale.ENGLISH.getLanguage());
         assertNotNull(bundles);
         assertFalse(bundles.isEmpty());
         bundles.forEach(Assertions::assertNotNull);
@@ -326,7 +326,7 @@
 
     @Test
     public void getConnectorConfiguration() {
-        List<ConnConfProperty> props = connectorService.read(
+        List<ConnConfProperty> props = CONNECTOR_SERVICE.read(
                 "6c2acf1b-b052-46f0-8c56-7a8ad6905edf", Locale.ENGLISH.getLanguage()).getConf();
         assertNotNull(props);
         assertFalse(props.isEmpty());
@@ -334,7 +334,7 @@
 
     @Test
     public void checkHiddenProperty() {
-        ConnInstanceTO connInstanceTO = connectorService.read(
+        ConnInstanceTO connInstanceTO = CONNECTOR_SERVICE.read(
                 "88a7a819-dab5-46b4-9b90-0b9769eabdb8", Locale.ENGLISH.getLanguage());
 
         boolean check = false;
@@ -350,7 +350,7 @@
     @Test
     public void checkSelectedLanguage() {
         // 1. Check Italian
-        List<ConnInstanceTO> connInstances = connectorService.list("it");
+        List<ConnInstanceTO> connInstances = CONNECTOR_SERVICE.list("it");
 
         for (ConnInstanceTO instance : connInstances) {
             if ("net.tirasa.connid.bundles.db.table".equals(instance.getBundleName())) {
@@ -359,7 +359,7 @@
         }
 
         // 2. Check English (default)
-        connInstances = connectorService.list(null);
+        connInstances = CONNECTOR_SERVICE.list(null);
 
         for (ConnInstanceTO instance : connInstances) {
             if ("net.tirasa.connid.bundles.db.table".equals(instance.getBundleName())) {
@@ -372,8 +372,8 @@
     public void validate() {
         ConnInstanceTO connectorTO = new ConnInstanceTO();
         connectorTO.setAdminRealm(SyncopeConstants.ROOT_REALM);
-        connectorTO.setLocation(connectorServerLocation);
-        connectorTO.setVersion(connIdDbVersion);
+        connectorTO.setLocation(CONNECTOR_SERVER_LOCATION);
+        connectorTO.setVersion(CONNID_DB_VERSION);
         connectorTO.setConnectorName("net.tirasa.connid.bundles.db.table.DatabaseTableConnector");
         connectorTO.setBundleName("net.tirasa.connid.bundles.db.table");
         connectorTO.setDisplayName("H2Test");
@@ -396,7 +396,7 @@
         jdbcUrlTemplateSchema.setRequired(true);
         ConnConfProperty jdbcUrlTemplate = new ConnConfProperty();
         jdbcUrlTemplate.setSchema(jdbcUrlTemplateSchema);
-        jdbcUrlTemplate.getValues().add(testJDBCURL);
+        jdbcUrlTemplate.getValues().add(TEST_JDBC_URL);
         conf.add(jdbcUrlTemplate);
 
         ConnConfPropSchema userSchema = new ConnConfPropSchema();
@@ -448,7 +448,7 @@
         connectorTO.getConf().addAll(conf);
 
         try {
-            connectorService.check(connectorTO);
+            CONNECTOR_SERVICE.check(connectorTO);
         } catch (Exception e) {
             fail(ExceptionUtils.getStackTrace(e));
         }
@@ -459,7 +459,7 @@
         conf.add(password);
 
         try {
-            connectorService.check(connectorTO);
+            CONNECTOR_SERVICE.check(connectorTO);
             fail("This should not happen");
         } catch (Exception e) {
             assertNotNull(e);
@@ -468,21 +468,21 @@
 
     @Test
     public void buildObjectClassInfo() {
-        ConnInstanceTO db = connectorService.read(
+        ConnInstanceTO db = CONNECTOR_SERVICE.read(
                 "5aa5b8be-7521-481a-9651-c557aea078c1", Locale.ENGLISH.getLanguage());
         assertNotNull(db);
 
-        List<ConnIdObjectClassTO> objectClassInfo = connectorService.buildObjectClassInfo(db, true);
+        List<ConnIdObjectClassTO> objectClassInfo = CONNECTOR_SERVICE.buildObjectClassInfo(db, true);
         assertNotNull(objectClassInfo);
         assertEquals(1, objectClassInfo.size());
         assertEquals(ObjectClass.ACCOUNT_NAME, objectClassInfo.get(0).getType());
         assertTrue(objectClassInfo.get(0).getAttributes().stream().anyMatch(schema -> "ID".equals(schema.getKey())));
 
-        ConnInstanceTO ldap = connectorService.read(
+        ConnInstanceTO ldap = CONNECTOR_SERVICE.read(
                 "74141a3b-0762-4720-a4aa-fc3e374ef3ef", Locale.ENGLISH.getLanguage());
         assertNotNull(ldap);
 
-        objectClassInfo = connectorService.buildObjectClassInfo(ldap, true);
+        objectClassInfo = CONNECTOR_SERVICE.buildObjectClassInfo(ldap, true);
         assertNotNull(objectClassInfo);
 
         Collection<String> objectClasses = objectClassInfo.stream().
@@ -493,7 +493,7 @@
 
     @Test
     public void authorizations() {
-        SyncopeClient puccini = clientFactory.create("puccini", ADMIN_PWD);
+        SyncopeClient puccini = CLIENT_FACTORY.create("puccini", ADMIN_PWD);
         ConnectorService pcs = puccini.getService(ConnectorService.class);
 
         // 1. list connectors: get only the ones allowed
@@ -525,10 +525,10 @@
             reloadScriptOnExecution = scriptedsql.getConf("reloadScriptOnExecution").get();
             assertEquals("false", reloadScriptOnExecution.getValues().get(0).toString());
         } finally {
-            ConnInstanceTO scriptedsql = connectorService.read("a6d017fd-a705-4507-bb7c-6ab6a6745997", null);
+            ConnInstanceTO scriptedsql = CONNECTOR_SERVICE.read("a6d017fd-a705-4507-bb7c-6ab6a6745997", null);
             ConnConfProperty reloadScriptOnExecution = scriptedsql.getConf("reloadScriptOnExecution").get();
             reloadScriptOnExecution.getValues().set(0, "true");
-            connectorService.update(scriptedsql);
+            CONNECTOR_SERVICE.update(scriptedsql);
         }
     }
 
@@ -538,12 +538,12 @@
         // Copy resource and connector in order to create new objects.
         // ----------------------------------
         // Retrieve a connector instance template.
-        ConnInstanceTO connInstanceTO = connectorService.read(
+        ConnInstanceTO connInstanceTO = CONNECTOR_SERVICE.read(
                 "fcf9f2b0-f7d6-42c9-84a6-61b28255a42b", Locale.ENGLISH.getLanguage());
         assertNotNull(connInstanceTO);
 
         // check for resource
-        List<ResourceTO> resources = resourceService.list().stream().
+        List<ResourceTO> resources = RESOURCE_SERVICE.list().stream().
                 filter(resource -> "fcf9f2b0-f7d6-42c9-84a6-61b28255a42b".equals(resource.getConnector())).
                 collect(Collectors.toList());
         assertEquals(4, resources.size());
@@ -562,9 +562,9 @@
         // ----------------------------------
         // Create a new connector instance.
         // ----------------------------------
-        Response response = connectorService.create(connInstanceTO);
+        Response response = CONNECTOR_SERVICE.create(connInstanceTO);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-            throw (RuntimeException) clientFactory.getExceptionMapper().fromResponse(response);
+            throw (RuntimeException) CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
         }
 
         connInstanceTO = getObject(response.getLocation(), ConnectorService.class, ConnInstanceTO.class);
@@ -580,12 +580,12 @@
         // ----------------------------------
         // Check for connector instance update after resource creation.
         // ----------------------------------
-        response = resourceService.create(resourceTO);
+        response = RESOURCE_SERVICE.create(resourceTO);
         resourceTO = getObject(response.getLocation(), ResourceService.class, ResourceTO.class);
 
         assertNotNull(resourceTO);
 
-        resources = resourceService.list().stream().
+        resources = RESOURCE_SERVICE.list().stream().
                 filter(resource -> connKey.equals(resource.getConnector())).collect(Collectors.toList());
         assertEquals(1, resources.size());
         // ----------------------------------
@@ -593,7 +593,7 @@
         // ----------------------------------
         // Check for spring bean.
         // ----------------------------------
-        ConnInstanceTO connInstanceBean = connectorService.readByResource(
+        ConnInstanceTO connInstanceBean = CONNECTOR_SERVICE.readByResource(
                 resourceTO.getKey(), Locale.ENGLISH.getLanguage());
         assertNotNull(connInstanceBean);
         assertFalse(connInstanceBean.getCapabilities().contains(ConnectorCapability.AUTHENTICATE));
@@ -604,13 +604,13 @@
         // ----------------------------------
         connInstanceTO.getCapabilities().add(ConnectorCapability.AUTHENTICATE);
 
-        connectorService.update(connInstanceTO);
-        ConnInstanceTO actual = connectorService.read(connInstanceTO.getKey(), Locale.ENGLISH.getLanguage());
+        CONNECTOR_SERVICE.update(connInstanceTO);
+        ConnInstanceTO actual = CONNECTOR_SERVICE.read(connInstanceTO.getKey(), Locale.ENGLISH.getLanguage());
         assertNotNull(actual);
         assertTrue(connInstanceTO.getCapabilities().contains(ConnectorCapability.AUTHENTICATE));
 
         // check for spring bean update
-        connInstanceBean = connectorService.readByResource(resourceTO.getKey(), Locale.ENGLISH.getLanguage());
+        connInstanceBean = CONNECTOR_SERVICE.readByResource(resourceTO.getKey(), Locale.ENGLISH.getLanguage());
         assertTrue(connInstanceBean.getCapabilities().contains(ConnectorCapability.AUTHENTICATE));
         // ----------------------------------
     }
@@ -623,11 +623,11 @@
         ConnInstanceTO connectorTO = new ConnInstanceTO();
         connectorTO.setAdminRealm(SyncopeConstants.ROOT_REALM);
 
-        connectorTO.setLocation(connectorService.read(
+        connectorTO.setLocation(CONNECTOR_SERVICE.read(
                 "88a7a819-dab5-46b4-9b90-0b9769eabdb8", Locale.ENGLISH.getLanguage()).getLocation());
 
         // set connector version
-        connectorTO.setVersion(connIdSoapVersion);
+        connectorTO.setVersion(CONNID_SOAP_VERSION);
 
         // set connector name
         connectorTO.setConnectorName("net.tirasa.connid.bundles.soap.WebServiceConnector");
@@ -667,15 +667,15 @@
 
         try {
             try {
-                connectorService.check(connectorTO);
+                CONNECTOR_SERVICE.check(connectorTO);
                 fail("This should not happen");
             } catch (Exception e) {
                 assertNotNull(e);
             }
 
-            Response response = connectorService.create(connectorTO);
+            Response response = CONNECTOR_SERVICE.create(connectorTO);
             if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-                throw (RuntimeException) clientFactory.getExceptionMapper().fromResponse(response);
+                throw (RuntimeException) CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
             }
 
             connectorTO = getObject(response.getLocation(), ConnectorService.class, ConnInstanceTO.class);
@@ -717,27 +717,27 @@
             // Check connection without saving the resource ....
             // ----------------------------------------
             try {
-                resourceService.check(resourceTO);
+                RESOURCE_SERVICE.check(resourceTO);
             } catch (Exception e) {
                 fail(ExceptionUtils.getStackTrace(e));
             }
             // ----------------------------------------
         } finally {
             // Remove connector from db to make test re-runnable
-            connectorService.delete(connectorTO.getKey());
+            CONNECTOR_SERVICE.delete(connectorTO.getKey());
         }
     }
 
     @Test
     public void issueSYNCOPE605() {
-        ConnInstanceTO connInstance = connectorService.read(
+        ConnInstanceTO connInstance = CONNECTOR_SERVICE.read(
                 "fcf9f2b0-f7d6-42c9-84a6-61b28255a42b", Locale.ENGLISH.getLanguage());
         assertTrue(connInstance.getCapabilities().isEmpty());
 
         connInstance.getCapabilities().add(ConnectorCapability.SEARCH);
-        connectorService.update(connInstance);
+        CONNECTOR_SERVICE.update(connInstance);
 
-        ConnInstanceTO updatedCapabilities = connectorService.read(
+        ConnInstanceTO updatedCapabilities = CONNECTOR_SERVICE.read(
                 connInstance.getKey(), Locale.ENGLISH.getLanguage());
         assertNotNull(updatedCapabilities.getCapabilities());
         assertTrue(updatedCapabilities.getCapabilities().size() == 1);
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/DelegationITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/DelegationITCase.java
index 9cc4479..73a3cad 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/DelegationITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/DelegationITCase.java
@@ -56,7 +56,7 @@
     private DelegationTO create(final DelegationService ds, final DelegationTO delegation) {
         Response response = ds.create(delegation);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-            Exception ex = clientFactory.getExceptionMapper().fromResponse(response);
+            Exception ex = CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
             if (ex != null) {
                 throw (RuntimeException) ex;
             }
@@ -82,7 +82,7 @@
 
         // no dates set -> FAIL
         try {
-            delegationService.create(delegation);
+            DELEGATION_SERVICE.create(delegation);
             fail();
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.InvalidEntity, e.getType());
@@ -93,7 +93,7 @@
 
         // end before start -> FAIL
         try {
-            delegationService.create(delegation);
+            DELEGATION_SERVICE.create(delegation);
             fail();
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.InvalidEntity, e.getType());
@@ -102,42 +102,42 @@
         delegation.setEnd(OffsetDateTime.now());
 
         // 2. create delegation
-        delegation = create(delegationService, delegation);
+        delegation = create(DELEGATION_SERVICE, delegation);
         assertNotNull(delegation.getKey());
         assertNotNull(delegation.getEnd());
 
         // 3. verify delegation is reported for users
-        delegating = userService.read(delegating.getKey());
+        delegating = USER_SERVICE.read(delegating.getKey());
         assertEquals(List.of(delegation.getKey()), delegating.getDelegatingDelegations());
         assertEquals(List.of(), delegating.getDelegatedDelegations());
 
-        delegated = userService.read(delegated.getKey());
+        delegated = USER_SERVICE.read(delegated.getKey());
         assertEquals(List.of(), delegated.getDelegatingDelegations());
         assertEquals(List.of(delegation.getKey()), delegated.getDelegatedDelegations());
 
         // 4. update and read delegation
         delegation.setEnd(null);
-        delegationService.update(delegation);
+        DELEGATION_SERVICE.update(delegation);
 
-        delegation = delegationService.read(delegation.getKey());
+        delegation = DELEGATION_SERVICE.read(delegation.getKey());
         assertNull(delegation.getEnd());
 
         // 5. delete delegation
-        delegationService.delete(delegation.getKey());
+        DELEGATION_SERVICE.delete(delegation.getKey());
 
         try {
-            delegationService.read(delegation.getKey());
+            DELEGATION_SERVICE.read(delegation.getKey());
             fail();
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
 
         // 6. verify delegation is not reported for users
-        delegating = userService.read(delegating.getKey());
+        delegating = USER_SERVICE.read(delegating.getKey());
         assertEquals(List.of(), delegating.getDelegatingDelegations());
         assertEquals(List.of(), delegating.getDelegatedDelegations());
 
-        delegated = userService.read(delegated.getKey());
+        delegated = USER_SERVICE.read(delegated.getKey());
         assertEquals(List.of(), delegated.getDelegatingDelegations());
         assertEquals(List.of(), delegated.getDelegatedDelegations());
     }
@@ -159,7 +159,7 @@
         delegation.setDelegated(delegated.getKey());
         delegation.setStart(OffsetDateTime.now());
 
-        DelegationService uds = clientFactory.create(delegating.getUsername(), "password123").
+        DelegationService uds = CLIENT_FACTORY.create(delegating.getUsername(), "password123").
                 getService(DelegationService.class);
 
         // delegating user is not requesting user -> FAIL
@@ -207,22 +207,22 @@
         AuditConfTO authLogin = new AuditConfTO();
         authLogin.setKey(authLoginSuccess.toAuditKey());
         authLogin.setActive(true);
-        auditService.create(authLogin);
+        AUDIT_SERVICE.create(authLogin);
 
         // 1. bellini delegates rossini
         DelegationTO delegation = new DelegationTO();
         delegation.setDelegating("bellini");
         delegation.setDelegated("rossini");
         delegation.setStart(OffsetDateTime.now());
-        delegation = create(delegationService, delegation);
+        delegation = create(DELEGATION_SERVICE, delegation);
         assertNotNull(delegation.getKey());
 
         // 2. search users as bellini
-        SyncopeClient bellini = clientFactory.create("bellini", "password");
+        SyncopeClient bellini = CLIENT_FACTORY.create("bellini", "password");
         int forBellini = bellini.getService(UserService.class).search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).build()).getTotalCount();
 
-        SyncopeClient rossini = clientFactory.create("rossini", "password");
+        SyncopeClient rossini = CLIENT_FACTORY.create("rossini", "password");
 
         // 3. search users as rossini
         Triple<Map<String, Set<String>>, List<String>, UserTO> self = rossini.self();
@@ -243,7 +243,7 @@
         assertEquals(forBellini, forRossini);
 
         // 4. delete delegation: searching users as rossini does not work, even with delegation
-        delegationService.delete(delegation.getKey());
+        DELEGATION_SERVICE.delete(delegation.getKey());
 
         try {
             rossini.getService(UserService.class).search(
@@ -265,6 +265,6 @@
 
         // 6. disable audit
         authLogin.setActive(false);
-        auditService.update(authLogin);
+        AUDIT_SERVICE.update(authLogin);
     }
 }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/DerSchemaITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/DerSchemaITCase.java
index f6e2fa0..fbc5bc8 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/DerSchemaITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/DerSchemaITCase.java
@@ -41,18 +41,18 @@
 
     @Test
     public void search() {
-        List<DerSchemaTO> schemas = schemaService.search(new SchemaQuery.Builder().type(SchemaType.DERIVED).build());
+        List<DerSchemaTO> schemas = SCHEMA_SERVICE.search(new SchemaQuery.Builder().type(SchemaType.DERIVED).build());
         assertFalse(schemas.isEmpty());
         schemas.forEach(Assertions::assertNotNull);
 
-        schemas = schemaService.search(new SchemaQuery.Builder().type(SchemaType.DERIVED).keyword("mder*").build());
+        schemas = SCHEMA_SERVICE.search(new SchemaQuery.Builder().type(SchemaType.DERIVED).keyword("mder*").build());
         assertFalse(schemas.isEmpty());
         schemas.forEach(Assertions::assertNotNull);
     }
 
     @Test
     public void read() {
-        DerSchemaTO derivedSchemaTO = schemaService.read(SchemaType.DERIVED, "cn");
+        DerSchemaTO derivedSchemaTO = SCHEMA_SERVICE.read(SchemaType.DERIVED, "cn");
         assertNotNull(derivedSchemaTO);
     }
 
@@ -70,20 +70,20 @@
         assertEquals("Derivato", actual.getLabel(Locale.ITALIAN));
         assertEquals(schema.getKey(), actual.getLabel(Locale.JAPANESE));
 
-        actual = schemaService.read(SchemaType.DERIVED, actual.getKey());
+        actual = SCHEMA_SERVICE.read(SchemaType.DERIVED, actual.getKey());
         assertNotNull(actual);
         assertEquals(actual.getExpression(), "derived_sx + '_' + derived_dx");
     }
 
     @Test
     public void delete() {
-        DerSchemaTO schema = schemaService.read(SchemaType.DERIVED, "rderiveddata");
+        DerSchemaTO schema = SCHEMA_SERVICE.read(SchemaType.DERIVED, "rderiveddata");
         assertNotNull(schema);
 
-        schemaService.delete(SchemaType.DERIVED, schema.getKey());
+        SCHEMA_SERVICE.delete(SchemaType.DERIVED, schema.getKey());
 
         try {
-            schemaService.read(SchemaType.DERIVED, "rderiveddata");
+            SCHEMA_SERVICE.read(SchemaType.DERIVED, "rderiveddata");
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -96,27 +96,27 @@
 
     @Test
     public void update() {
-        DerSchemaTO schema = schemaService.read(SchemaType.DERIVED, "mderiveddata");
+        DerSchemaTO schema = SCHEMA_SERVICE.read(SchemaType.DERIVED, "mderiveddata");
         assertNotNull(schema);
         assertEquals("mderived_sx + '-' + mderived_dx", schema.getExpression());
         try {
             schema.setExpression("mderived_sx + '.' + mderived_dx");
 
-            schemaService.update(SchemaType.DERIVED, schema);
+            SCHEMA_SERVICE.update(SchemaType.DERIVED, schema);
 
-            schema = schemaService.read(SchemaType.DERIVED, "mderiveddata");
+            schema = SCHEMA_SERVICE.read(SchemaType.DERIVED, "mderiveddata");
             assertNotNull(schema);
             assertEquals("mderived_sx + '.' + mderived_dx", schema.getExpression());
         } finally {
             // Set updated back to make test re-runnable
             schema.setExpression("mderived_sx + '-' + mderived_dx");
-            schemaService.update(SchemaType.DERIVED, schema);
+            SCHEMA_SERVICE.update(SchemaType.DERIVED, schema);
         }
     }
 
     @Test
     public void issueSYNCOPE323() {
-        DerSchemaTO actual = schemaService.read(SchemaType.DERIVED, "rderiveddata");
+        DerSchemaTO actual = SCHEMA_SERVICE.read(SchemaType.DERIVED, "rderiveddata");
         assertNotNull(actual);
 
         try {
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/DynRealmITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/DynRealmITCase.java
index 1248d6c..13234c1 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/DynRealmITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/DynRealmITCase.java
@@ -32,13 +32,13 @@
 import org.apache.commons.io.IOUtils;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.request.AttrPatch;
 import org.apache.syncope.common.lib.request.GroupCR;
 import org.apache.syncope.common.lib.request.GroupUR;
 import org.apache.syncope.common.lib.request.StringPatchItem;
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.request.UserUR;
-import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.DynRealmTO;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.PagedResult;
@@ -47,8 +47,8 @@
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.common.lib.types.PatchOperation;
 import org.apache.syncope.common.lib.types.IdRepoEntitlement;
+import org.apache.syncope.common.lib.types.PatchOperation;
 import org.apache.syncope.common.rest.api.beans.AnyQuery;
 import org.apache.syncope.common.rest.api.service.DynRealmService;
 import org.apache.syncope.common.rest.api.service.GroupService;
@@ -75,18 +75,18 @@
 
             // invalid key (starts with /)
             try {
-                dynRealmService.create(dynRealm);
+                DYN_REALM_SERVICE.create(dynRealm);
                 fail("This should not happen");
             } catch (SyncopeClientException e) {
                 assertEquals(ClientExceptionType.InvalidDynRealm, e.getType());
             }
             dynRealm.setKey("name" + getUUIDString());
 
-            Response response = dynRealmService.create(dynRealm);
+            Response response = DYN_REALM_SERVICE.create(dynRealm);
             dynRealm = getObject(response.getLocation(), DynRealmService.class, DynRealmTO.class);
             assertNotNull(dynRealm);
 
-            PagedResult<UserTO> matching = userService.search(new AnyQuery.Builder().fiql("cool==true").build());
+            PagedResult<UserTO> matching = USER_SERVICE.search(new AnyQuery.Builder().fiql("cool==true").build());
             assertNotNull(matching);
             assertNotEquals(0, matching.getSize());
 
@@ -95,7 +95,7 @@
             assertTrue(user.getDynRealms().contains(dynRealm.getKey()));
         } finally {
             if (dynRealm != null) {
-                dynRealmService.delete(dynRealm.getKey());
+                DYN_REALM_SERVICE.delete(dynRealm.getKey());
             }
         }
     }
@@ -111,7 +111,7 @@
             dynRealm.getDynMembershipConds().put(AnyTypeKind.USER.name(), "$resources==resource-ldap");
             dynRealm.getDynMembershipConds().put(AnyTypeKind.GROUP.name(), "$resources==resource-ldap");
 
-            Response response = dynRealmService.create(dynRealm);
+            Response response = DYN_REALM_SERVICE.create(dynRealm);
             dynRealm = getObject(response.getLocation(), DynRealmService.class, DynRealmTO.class);
             assertNotNull(dynRealm);
 
@@ -151,7 +151,7 @@
             assertNotNull(group);
             final String groupKey = group.getKey();
 
-            if (ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform())) {
+            if (ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform())) {
                 try {
                     Thread.sleep(2000);
                 } catch (InterruptedException ex) {
@@ -160,16 +160,16 @@
             }
 
             // 5. verify that the new user and group are found when searching by dynamic realm
-            PagedResult<UserTO> matchingUsers = userService.search(new AnyQuery.Builder().realm("/").fiql(
+            PagedResult<UserTO> matchingUsers = USER_SERVICE.search(new AnyQuery.Builder().realm("/").fiql(
                     SyncopeClient.getUserSearchConditionBuilder().inDynRealms(dynRealm.getKey()).query()).build());
             assertTrue(matchingUsers.getResult().stream().anyMatch(object -> object.getKey().equals(userKey)));
 
-            PagedResult<GroupTO> matchingGroups = groupService.search(new AnyQuery.Builder().realm("/").fiql(
+            PagedResult<GroupTO> matchingGroups = GROUP_SERVICE.search(new AnyQuery.Builder().realm("/").fiql(
                     SyncopeClient.getGroupSearchConditionBuilder().inDynRealms(dynRealm.getKey()).query()).build());
             assertTrue(matchingGroups.getResult().stream().anyMatch(object -> object.getKey().equals(groupKey)));
 
             // 6. prepare to act as delegated admin
-            SyncopeClient delegatedClient = clientFactory.create(dynRealmAdmin.getUsername(), "password123");
+            SyncopeClient delegatedClient = CLIENT_FACTORY.create(dynRealmAdmin.getUsername(), "password123");
             UserService delegatedUserService = delegatedClient.getService(UserService.class);
             GroupService delegatedGroupService = delegatedClient.getService(GroupService.class);
 
@@ -215,10 +215,10 @@
             assertEquals("modified", group.getPlainAttr("icon").get().getValues().get(0));
         } finally {
             if (role != null) {
-                roleService.delete(role.getKey());
+                ROLE_SERVICE.delete(role.getKey());
             }
             if (dynRealm != null) {
-                dynRealmService.delete(dynRealm.getKey());
+                DYN_REALM_SERVICE.delete(dynRealm.getKey());
             }
         }
     }
@@ -254,14 +254,14 @@
             dynRealm = new DynRealmTO();
             dynRealm.setKey("name" + getUUIDString());
             dynRealm.getDynMembershipConds().put(AnyTypeKind.USER.name(), "ctype==" + ctype);
-            dynRealmService.create(dynRealm);
+            DYN_REALM_SERVICE.create(dynRealm);
 
-            Response response = dynRealmService.create(dynRealm);
+            Response response = DYN_REALM_SERVICE.create(dynRealm);
             dynRealm = getObject(response.getLocation(), DynRealmService.class, DynRealmTO.class);
             assertNotNull(dynRealm);
 
             // 2. no dyn realm members
-            PagedResult<UserTO> matching = userService.search(new AnyQuery.Builder().realm("/").fiql(
+            PagedResult<UserTO> matching = USER_SERVICE.search(new AnyQuery.Builder().realm("/").fiql(
                     SyncopeClient.getUserSearchConditionBuilder().inDynRealms(dynRealm.getKey()).query()).build());
             assertEquals(0, matching.getSize());
 
@@ -272,7 +272,7 @@
             assertNotNull(user.getKey());
 
             // 4a. check that Elasticsearch index was updated correctly
-            if (ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform())) {
+            if (ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform())) {
                 try {
                     Thread.sleep(2000);
                 } catch (InterruptedException ex) {
@@ -285,16 +285,16 @@
             }
 
             // 4b. now there is 1 realm member
-            matching = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).fiql(
+            matching = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).fiql(
                     SyncopeClient.getUserSearchConditionBuilder().inDynRealms(dynRealm.getKey()).query()).build());
             assertEquals(1, matching.getSize());
 
             // 5. change dyn realm condition
             dynRealm.getDynMembershipConds().put(AnyTypeKind.USER.name(), "ctype==ANY");
-            dynRealmService.update(dynRealm);
+            DYN_REALM_SERVICE.update(dynRealm);
 
             // 6a. check that Elasticsearch index was updated correctly
-            if (ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform())) {
+            if (ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform())) {
                 try {
                     Thread.sleep(2000);
                 } catch (InterruptedException ex) {
@@ -306,12 +306,12 @@
             }
 
             // 6b. no more dyn realm members
-            matching = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).fiql(
+            matching = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).fiql(
                     SyncopeClient.getUserSearchConditionBuilder().inDynRealms(dynRealm.getKey()).query()).build());
             assertEquals(0, matching.getSize());
         } finally {
             if (dynRealm != null) {
-                dynRealmService.delete(dynRealm.getKey());
+                DYN_REALM_SERVICE.delete(dynRealm.getKey());
             }
         }
     }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ExceptionMapperITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ExceptionMapperITCase.java
index 42503f2..f9ec512 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ExceptionMapperITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ExceptionMapperITCase.java
@@ -70,7 +70,7 @@
         AnyTypeClassTO typeClass = new AnyTypeClassTO();
         typeClass.setKey("camelAttribute" + getUUIDString());
         typeClass.getPlainSchemas().add(schemaTO.getKey());
-        anyTypeClassService.create(typeClass);
+        ANY_TYPE_CLASS_SERVICE.create(typeClass);
 
         // 2. create an user with mandatory attributes and unique
         UserCR userTO1 = new UserCR();
@@ -156,19 +156,19 @@
     @Test
     public void invalidRequests() {
         try {
-            taskService.search(new TaskQuery.Builder(TaskType.NOTIFICATION).resource(RESOURCE_NAME_LDAP).build());
+            TASK_SERVICE.search(new TaskQuery.Builder(TaskType.NOTIFICATION).resource(RESOURCE_NAME_LDAP).build());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.InvalidRequest, e.getType());
         }
         try {
-            taskService.search(new TaskQuery.Builder(TaskType.PULL).anyTypeKind(AnyTypeKind.ANY_OBJECT).build());
+            TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PULL).anyTypeKind(AnyTypeKind.ANY_OBJECT).build());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.InvalidRequest, e.getType());
         }
         try {
-            taskService.search(new TaskQuery.Builder(TaskType.PULL).
+            TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PULL).
                     notification("e00945b5-1184-4d43-8e45-4318a8dcdfd4").build());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
@@ -176,24 +176,24 @@
         }
 
         try {
-            anyTypeService.delete(AnyTypeKind.USER.name());
+            ANY_TYPE_SERVICE.delete(AnyTypeKind.USER.name());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.InvalidRequest, e.getType());
         }
 
         try {
-            clientFactory.create(ANONYMOUS_UNAME, ANONYMOUS_KEY).getService(AccessTokenService.class).login();
+            CLIENT_FACTORY.create(ANONYMOUS_UNAME, ANONYMOUS_KEY).getService(AccessTokenService.class).login();
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.InvalidRequest, e.getType());
         }
 
         try {
-            ResourceTO ldap = resourceService.read(RESOURCE_NAME_LDAP);
+            ResourceTO ldap = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
             ItemTO mapping = ldap.getProvisions().get(0).getMapping().getItems().get(0);
             mapping.setIntAttrName("memberships.cn");
-            resourceService.update(ldap);
+            RESOURCE_SERVICE.update(ldap);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.InvalidMapping, e.getType());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java
index ad7e49b..c89893b 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/GroupITCase.java
@@ -47,37 +47,37 @@
 import org.apache.syncope.client.lib.AnonymousAuthenticationHandler;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.AnyOperations;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.request.AnyObjectCR;
 import org.apache.syncope.common.lib.request.AnyObjectUR;
-import org.apache.syncope.common.lib.request.ResourceAR;
 import org.apache.syncope.common.lib.request.AttrPatch;
 import org.apache.syncope.common.lib.request.GroupCR;
-import org.apache.syncope.common.lib.request.ResourceDR;
 import org.apache.syncope.common.lib.request.GroupUR;
+import org.apache.syncope.common.lib.request.ResourceAR;
+import org.apache.syncope.common.lib.request.ResourceDR;
 import org.apache.syncope.common.lib.request.StringPatchItem;
 import org.apache.syncope.common.lib.request.StringReplacePatchItem;
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTypeClassTO;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
-import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.to.DerSchemaTO;
 import org.apache.syncope.common.lib.to.ExecTO;
-import org.apache.syncope.common.lib.to.PagedResult;
-import org.apache.syncope.common.lib.to.PlainSchemaTO;
-import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.ItemTO;
 import org.apache.syncope.common.lib.to.MappingTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
+import org.apache.syncope.common.lib.to.PagedResult;
+import org.apache.syncope.common.lib.to.PlainSchemaTO;
 import org.apache.syncope.common.lib.to.PropagationStatus;
 import org.apache.syncope.common.lib.to.ProvisionTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
+import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.to.TypeExtensionTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
@@ -85,9 +85,9 @@
 import org.apache.syncope.common.lib.types.CipherAlgorithm;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.ConnectorCapability;
+import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.common.lib.types.PatchOperation;
-import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.syncope.common.lib.types.ProvisionAction;
 import org.apache.syncope.common.lib.types.ResourceAssociationAction;
 import org.apache.syncope.common.lib.types.ResourceDeassociationAction;
@@ -134,7 +134,7 @@
         assertTrue(groupTO.getResources().contains(RESOURCE_NAME_LDAP));
 
         ConnObjectTO connObjectTO =
-                resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
         assertNotNull(connObjectTO);
         assertNotNull(connObjectTO.getAttr("owner"));
 
@@ -157,7 +157,7 @@
     @Test
     public void delete() {
         try {
-            groupService.delete(UUID.randomUUID().toString());
+            GROUP_SERVICE.delete(UUID.randomUUID().toString());
         } catch (SyncopeClientException e) {
             assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
         }
@@ -175,7 +175,7 @@
         assertNotNull(deletedGroup);
 
         try {
-            groupService.read(deletedGroup.getKey());
+            GROUP_SERVICE.read(deletedGroup.getKey());
         } catch (SyncopeClientException e) {
             assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
         }
@@ -184,7 +184,7 @@
     @Test
     public void list() {
         PagedResult<GroupTO> groupTOs =
-                groupService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).build());
+                GROUP_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).build());
         assertNotNull(groupTOs);
         assertTrue(groupTOs.getResult().size() >= 8);
         groupTOs.getResult().forEach(Assertions::assertNotNull);
@@ -192,7 +192,7 @@
 
     @Test
     public void read() {
-        GroupTO groupTO = groupService.read("37d15e4c-cdc1-460b-a591-8505c8133806");
+        GroupTO groupTO = GROUP_SERVICE.read("37d15e4c-cdc1-460b-a591-8505c8133806");
 
         assertNotNull(groupTO);
         assertNotNull(groupTO.getPlainAttrs());
@@ -202,13 +202,13 @@
 
     @Test
     public void selfRead() {
-        UserTO userTO = userService.read("1417acbe-cbf6-4277-9372-e75e04f97000");
+        UserTO userTO = USER_SERVICE.read("1417acbe-cbf6-4277-9372-e75e04f97000");
         assertNotNull(userTO);
 
         assertTrue(userTO.getMembership("37d15e4c-cdc1-460b-a591-8505c8133806").isPresent());
         assertFalse(userTO.getMembership("29f96485-729e-4d31-88a1-6fc60e4677f3").isPresent());
 
-        GroupService groupService2 = clientFactory.create("rossini", ADMIN_PWD).getService(GroupService.class);
+        GroupService groupService2 = CLIENT_FACTORY.create("rossini", ADMIN_PWD).getService(GroupService.class);
 
         try {
             groupService2.read("29f96485-729e-4d31-88a1-6fc60e4677f3");
@@ -269,7 +269,7 @@
         created.getPlainAttrs().add(new Attr.Builder("rderived_dx").value("dx").build());
         created.getPlainAttrs().add(new Attr.Builder("title").value("mr").build());
 
-        GroupTO original = groupService.read(created.getKey());
+        GroupTO original = GROUP_SERVICE.read(created.getKey());
 
         GroupUR groupUR = AnyOperations.diff(created, original, true);
         GroupTO updated = updateGroup(groupUR).getEntity();
@@ -285,7 +285,7 @@
     @Test
     public void updateAsGroupOwner() {
         // 1. read group as admin
-        GroupTO groupTO = groupService.read("ebf97068-aa4b-4a85-9f01-680e8c4cf227");
+        GroupTO groupTO = GROUP_SERVICE.read("ebf97068-aa4b-4a85-9f01-680e8c4cf227");
 
         // issue SYNCOPE-15
         assertNotNull(groupTO.getCreationDate());
@@ -299,7 +299,7 @@
         groupUR.setName(new StringReplacePatchItem.Builder().value("Director").build());
 
         // 3. try to update as verdi, not owner of group 6 - fail
-        GroupService groupService2 = clientFactory.create("verdi", ADMIN_PWD).getService(GroupService.class);
+        GroupService groupService2 = CLIENT_FACTORY.create("verdi", ADMIN_PWD).getService(GroupService.class);
 
         try {
             groupService2.update(groupUR);
@@ -309,7 +309,7 @@
         }
 
         // 4. update as puccini, owner of group 6 - success
-        GroupService groupService3 = clientFactory.create("puccini", ADMIN_PWD).getService(GroupService.class);
+        GroupService groupService3 = CLIENT_FACTORY.create("puccini", ADMIN_PWD).getService(GroupService.class);
 
         groupTO = groupService3.update(groupUR).readEntity(new GenericType<ProvisioningResult<GroupTO>>() {
         }).getEntity();
@@ -328,18 +328,18 @@
         GroupTO actual = createGroup(getSample("unlink")).getEntity();
         assertNotNull(actual);
 
-        assertNotNull(resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), actual.getKey()));
+        assertNotNull(RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), actual.getKey()));
 
         ResourceDR resourceDR = new ResourceDR.Builder().key(actual.getKey()).
                 action(ResourceDeassociationAction.UNLINK).resource(RESOURCE_NAME_LDAP).build();
 
-        assertNotNull(parseBatchResponse(groupService.deassociate(resourceDR)));
+        assertNotNull(parseBatchResponse(GROUP_SERVICE.deassociate(resourceDR)));
 
-        actual = groupService.read(actual.getKey());
+        actual = GROUP_SERVICE.read(actual.getKey());
         assertNotNull(actual);
         assertTrue(actual.getResources().isEmpty());
 
-        assertNotNull(resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), actual.getKey()));
+        assertNotNull(RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), actual.getKey()));
     }
 
     @Test
@@ -351,7 +351,7 @@
         assertNotNull(actual);
 
         try {
-            resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), actual.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), actual.getKey());
             fail("This should not happen");
         } catch (Exception e) {
             assertNotNull(e);
@@ -360,13 +360,13 @@
         ResourceAR resourceAR = new ResourceAR.Builder().key(actual.getKey()).
                 action(ResourceAssociationAction.LINK).resource(RESOURCE_NAME_LDAP).build();
 
-        assertNotNull(parseBatchResponse(groupService.associate(resourceAR)));
+        assertNotNull(parseBatchResponse(GROUP_SERVICE.associate(resourceAR)));
 
-        actual = groupService.read(actual.getKey());
+        actual = GROUP_SERVICE.read(actual.getKey());
         assertFalse(actual.getResources().isEmpty());
 
         try {
-            resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), actual.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), actual.getKey());
             fail("This should not happen");
         } catch (Exception e) {
             assertNotNull(e);
@@ -381,7 +381,7 @@
             groupTO = createGroup(getSample("unassign")).getEntity();
             assertNotNull(groupTO);
 
-            assertNotNull(resourceService.readConnObject(
+            assertNotNull(RESOURCE_SERVICE.readConnObject(
                     RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey()));
 
             ResourceDR resourceDR = new ResourceDR();
@@ -389,21 +389,21 @@
             resourceDR.setAction(ResourceDeassociationAction.UNASSIGN);
             resourceDR.getResources().add(RESOURCE_NAME_LDAP);
 
-            assertNotNull(parseBatchResponse(groupService.deassociate(resourceDR)));
+            assertNotNull(parseBatchResponse(GROUP_SERVICE.deassociate(resourceDR)));
 
-            groupTO = groupService.read(groupTO.getKey());
+            groupTO = GROUP_SERVICE.read(groupTO.getKey());
             assertNotNull(groupTO);
             assertTrue(groupTO.getResources().isEmpty());
 
             try {
-                resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
                 fail("This should not happen");
             } catch (Exception e) {
                 assertNotNull(e);
             }
         } finally {
             if (groupTO != null) {
-                groupService.delete(groupTO.getKey());
+                GROUP_SERVICE.delete(groupTO.getKey());
             }
         }
     }
@@ -419,7 +419,7 @@
             assertNotNull(groupTO);
 
             try {
-                resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
                 fail("This should not happen");
             } catch (Exception e) {
                 assertNotNull(e);
@@ -428,15 +428,15 @@
             ResourceAR resourceAR = new ResourceAR.Builder().key(groupTO.getKey()).
                     action(ResourceAssociationAction.ASSIGN).resource(RESOURCE_NAME_LDAP).build();
 
-            assertNotNull(parseBatchResponse(groupService.associate(resourceAR)));
+            assertNotNull(parseBatchResponse(GROUP_SERVICE.associate(resourceAR)));
 
-            groupTO = groupService.read(groupTO.getKey());
+            groupTO = GROUP_SERVICE.read(groupTO.getKey());
             assertFalse(groupTO.getResources().isEmpty());
-            assertNotNull(resourceService.readConnObject(
+            assertNotNull(RESOURCE_SERVICE.readConnObject(
                     RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey()));
         } finally {
             if (groupTO != null) {
-                groupService.delete(groupTO.getKey());
+                GROUP_SERVICE.delete(groupTO.getKey());
             }
         }
     }
@@ -450,26 +450,27 @@
             assertNotNull(groupTO);
             assertNotNull(groupTO.getKey());
 
-            assertNotNull(resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey()));
+            assertNotNull(
+                    RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey()));
 
             ResourceDR resourceDR = new ResourceDR.Builder().key(groupTO.getKey()).
                     action(ResourceDeassociationAction.DEPROVISION).resource(RESOURCE_NAME_LDAP).build();
 
-            assertNotNull(parseBatchResponse(groupService.deassociate(resourceDR)));
+            assertNotNull(parseBatchResponse(GROUP_SERVICE.deassociate(resourceDR)));
 
-            groupTO = groupService.read(groupTO.getKey());
+            groupTO = GROUP_SERVICE.read(groupTO.getKey());
             assertNotNull(groupTO);
             assertFalse(groupTO.getResources().isEmpty());
 
             try {
-                resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
                 fail("This should not happen");
             } catch (Exception e) {
                 assertNotNull(e);
             }
         } finally {
             if (groupTO != null) {
-                groupService.delete(groupTO.getKey());
+                GROUP_SERVICE.delete(groupTO.getKey());
             }
         }
     }
@@ -485,7 +486,7 @@
             assertNotNull(groupTO);
 
             try {
-                resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
                 fail("This should not happen");
             } catch (Exception e) {
                 assertNotNull(e);
@@ -494,16 +495,16 @@
             ResourceAR resourceAR = new ResourceAR.Builder().key(groupTO.getKey()).
                     action(ResourceAssociationAction.PROVISION).resource(RESOURCE_NAME_LDAP).build();
 
-            assertNotNull(parseBatchResponse(groupService.associate(resourceAR)));
+            assertNotNull(parseBatchResponse(GROUP_SERVICE.associate(resourceAR)));
 
-            groupTO = groupService.read(groupTO.getKey());
+            groupTO = GROUP_SERVICE.read(groupTO.getKey());
             assertTrue(groupTO.getResources().isEmpty());
 
-            assertNotNull(resourceService.readConnObject(
+            assertNotNull(RESOURCE_SERVICE.readConnObject(
                     RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey()));
         } finally {
             if (groupTO != null) {
-                groupService.delete(groupTO.getKey());
+                GROUP_SERVICE.delete(groupTO.getKey());
             }
         }
     }
@@ -519,7 +520,7 @@
             assertNotNull(groupTO);
 
             try {
-                resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
                 fail("This should not happen");
             } catch (Exception e) {
                 assertNotNull(e);
@@ -528,32 +529,32 @@
             ResourceAR resourceAR = new ResourceAR.Builder().key(groupTO.getKey()).
                     action(ResourceAssociationAction.PROVISION).resource(RESOURCE_NAME_LDAP).build();
 
-            assertNotNull(parseBatchResponse(groupService.associate(resourceAR)));
+            assertNotNull(parseBatchResponse(GROUP_SERVICE.associate(resourceAR)));
 
-            groupTO = groupService.read(groupTO.getKey());
+            groupTO = GROUP_SERVICE.read(groupTO.getKey());
             assertTrue(groupTO.getResources().isEmpty());
 
-            assertNotNull(resourceService.readConnObject(
+            assertNotNull(RESOURCE_SERVICE.readConnObject(
                     RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey()));
 
             ResourceDR resourceDR = new ResourceDR.Builder().key(groupTO.getKey()).
                     action(ResourceDeassociationAction.DEPROVISION).resource(RESOURCE_NAME_LDAP).build();
 
-            assertNotNull(parseBatchResponse(groupService.deassociate(resourceDR)));
+            assertNotNull(parseBatchResponse(GROUP_SERVICE.deassociate(resourceDR)));
 
-            groupTO = groupService.read(groupTO.getKey());
+            groupTO = GROUP_SERVICE.read(groupTO.getKey());
             assertNotNull(groupTO);
             assertTrue(groupTO.getResources().isEmpty());
 
             try {
-                resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
                 fail("This should not happen");
             } catch (Exception e) {
                 assertNotNull(e);
             }
         } finally {
             if (groupTO != null) {
-                groupService.delete(groupTO.getKey());
+                GROUP_SERVICE.delete(groupTO.getKey());
             }
         }
     }
@@ -564,7 +565,7 @@
         PlainSchemaTO badge = new PlainSchemaTO();
         badge.setKey("badge" + getUUIDString());
         badge.setMandatoryCondition("true");
-        schemaService.create(SchemaType.PLAIN, badge);
+        SCHEMA_SERVICE.create(SchemaType.PLAIN, badge);
 
         // 2. create a group *without* an attribute for that schema: it works
         GroupCR groupCR = getSample("lastGroup");
@@ -573,12 +574,12 @@
         assertFalse(groupTO.getPlainAttr(badge.getKey()).isPresent());
 
         // 3. add the new mandatory schema to the default group type
-        AnyTypeTO type = anyTypeService.read(AnyTypeKind.GROUP.name());
+        AnyTypeTO type = ANY_TYPE_SERVICE.read(AnyTypeKind.GROUP.name());
         String typeClassName = type.getClasses().get(0);
-        AnyTypeClassTO typeClass = anyTypeClassService.read(typeClassName);
+        AnyTypeClassTO typeClass = ANY_TYPE_CLASS_SERVICE.read(typeClassName);
         typeClass.getPlainSchemas().add(badge.getKey());
-        anyTypeClassService.update(typeClass);
-        typeClass = anyTypeClassService.read(typeClassName);
+        ANY_TYPE_CLASS_SERVICE.update(typeClass);
+        typeClass = ANY_TYPE_CLASS_SERVICE.read(typeClassName);
         assertTrue(typeClass.getPlainSchemas().contains(badge.getKey()));
 
         try {
@@ -602,8 +603,8 @@
         } finally {
             // restore the original group class
             typeClass.getPlainSchemas().remove(badge.getKey());
-            anyTypeClassService.update(typeClass);
-            typeClass = anyTypeClassService.read(typeClassName);
+            ANY_TYPE_CLASS_SERVICE.update(typeClass);
+            typeClass = ANY_TYPE_CLASS_SERVICE.read(typeClassName);
             assertFalse(typeClass.getPlainSchemas().contains(badge.getKey()));
         }
     }
@@ -616,15 +617,15 @@
         encrypted.setType(AttrSchemaType.Encrypted);
         encrypted.setCipherAlgorithm(CipherAlgorithm.SHA512);
         encrypted.setSecretKey("${obscureSecretKey}");
-        schemaService.create(SchemaType.PLAIN, encrypted);
+        SCHEMA_SERVICE.create(SchemaType.PLAIN, encrypted);
 
         // 2. add the new schema to the default group type
-        AnyTypeTO type = anyTypeService.read(AnyTypeKind.GROUP.name());
+        AnyTypeTO type = ANY_TYPE_SERVICE.read(AnyTypeKind.GROUP.name());
         String typeClassName = type.getClasses().get(0);
-        AnyTypeClassTO typeClass = anyTypeClassService.read(typeClassName);
+        AnyTypeClassTO typeClass = ANY_TYPE_CLASS_SERVICE.read(typeClassName);
         typeClass.getPlainSchemas().add(encrypted.getKey());
-        anyTypeClassService.update(typeClass);
-        typeClass = anyTypeClassService.read(typeClassName);
+        ANY_TYPE_CLASS_SERVICE.update(typeClass);
+        typeClass = ANY_TYPE_CLASS_SERVICE.read(typeClassName);
         assertTrue(typeClass.getPlainSchemas().contains(encrypted.getKey()));
 
         // 3. create group, verify that the correct encrypted value is returned
@@ -640,7 +641,7 @@
         encrypted.setAnyTypeClass(typeClassName);
         encrypted.setCipherAlgorithm(CipherAlgorithm.AES);
         encrypted.setConversionPattern(SyncopeConstants.ENCRYPTED_DECODE_CONVERSION_PATTERN);
-        schemaService.update(SchemaType.PLAIN, encrypted);
+        SCHEMA_SERVICE.update(SchemaType.PLAIN, encrypted);
 
         // 5. update group, verify that the cleartext value is returned
         GroupUR groupUR = new GroupUR();
@@ -653,15 +654,15 @@
 
         // 6. update schema again to disallow cleartext values
         encrypted.setConversionPattern(null);
-        schemaService.update(SchemaType.PLAIN, encrypted);
+        SCHEMA_SERVICE.update(SchemaType.PLAIN, encrypted);
 
-        group = groupService.read(group.getKey());
+        group = GROUP_SERVICE.read(group.getKey());
         assertNotEquals("testvalue", group.getPlainAttr(encrypted.getKey()).get().getValues().get(0));
     }
 
     @Test
     public void anonymous() {
-        GroupService unauthenticated = clientFactory.create().getService(GroupService.class);
+        GroupService unauthenticated = CLIENT_FACTORY.create().getService(GroupService.class);
         try {
             unauthenticated.search(new AnyQuery.Builder().realm("/even").build());
             fail("This should not happen");
@@ -669,7 +670,7 @@
             assertNotNull(e);
         }
 
-        SyncopeClient anonymous = clientFactory.create(
+        SyncopeClient anonymous = CLIENT_FACTORY.create(
                 new AnonymousAuthenticationHandler(ANONYMOUS_UNAME, ANONYMOUS_KEY));
         try {
             anonymous.getService(GroupService.class).
@@ -685,7 +686,7 @@
 
     @Test
     public void uDynMembership() {
-        assertTrue(userService.read("c9b2dec2-00a7-4855-97c0-d854842b4b24").getDynMemberships().isEmpty());
+        assertTrue(USER_SERVICE.read("c9b2dec2-00a7-4855-97c0-d854842b4b24").getDynMemberships().isEmpty());
 
         GroupCR groupCR = getBasicSample("uDynMembership");
         groupCR.setUDynMembershipCond("cool==true");
@@ -693,18 +694,18 @@
         assertNotNull(group);
         final String groupKey = group.getKey();
 
-        List<MembershipTO> memberships = userService.read(
+        List<MembershipTO> memberships = USER_SERVICE.read(
                 "c9b2dec2-00a7-4855-97c0-d854842b4b24").getDynMemberships();
         assertTrue(memberships.stream().anyMatch(m -> m.getGroupKey().equals(groupKey)));
-        assertEquals(1, groupService.read(group.getKey()).getDynamicUserMembershipCount());
+        assertEquals(1, GROUP_SERVICE.read(group.getKey()).getDynamicUserMembershipCount());
 
         GroupUR groupUR = new GroupUR();
         groupUR.setKey(group.getKey());
         groupUR.setUDynMembershipCond("cool==false");
-        groupService.update(groupUR);
+        GROUP_SERVICE.update(groupUR);
 
-        assertTrue(userService.read("c9b2dec2-00a7-4855-97c0-d854842b4b24").getDynMemberships().isEmpty());
-        assertEquals(0, groupService.read(group.getKey()).getDynamicUserMembershipCount());
+        assertTrue(USER_SERVICE.read("c9b2dec2-00a7-4855-97c0-d854842b4b24").getDynMemberships().isEmpty());
+        assertEquals(0, GROUP_SERVICE.read(group.getKey()).getDynamicUserMembershipCount());
     }
 
     @Test
@@ -717,7 +718,7 @@
         GroupTO group = createGroup(groupCR).getEntity();
         assertEquals(fiql, group.getADynMembershipConds().get(PRINTER));
 
-        if (ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform())) {
+        if (ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform())) {
             try {
                 Thread.sleep(2000);
             } catch (InterruptedException ex) {
@@ -725,7 +726,7 @@
             }
         }
 
-        group = groupService.read(group.getKey());
+        group = GROUP_SERVICE.read(group.getKey());
         String groupKey = group.getKey();
         assertEquals(fiql, group.getADynMembershipConds().get(PRINTER));
 
@@ -734,15 +735,15 @@
         newAnyCR.getResources().clear();
         AnyObjectTO newAny = createAnyObject(newAnyCR).getEntity();
         assertNotNull(newAny.getPlainAttr("location"));
-        List<MembershipTO> memberships = anyObjectService.read(
+        List<MembershipTO> memberships = ANY_OBJECT_SERVICE.read(
                 "fc6dbc3a-6c07-4965-8781-921e7401a4a5").getDynMemberships();
         assertTrue(memberships.stream().anyMatch(m -> m.getGroupKey().equals(groupKey)));
 
-        memberships = anyObjectService.read(
+        memberships = ANY_OBJECT_SERVICE.read(
                 "8559d14d-58c2-46eb-a2d4-a7d35161e8f8").getDynMemberships();
         assertTrue(memberships.stream().anyMatch(m -> m.getGroupKey().equals(groupKey)));
 
-        memberships = anyObjectService.read(newAny.getKey()).getDynMemberships();
+        memberships = ANY_OBJECT_SERVICE.read(newAny.getKey()).getDynMemberships();
         assertTrue(memberships.stream().anyMatch(m -> m.getGroupKey().equals(groupKey)));
 
         // 2. update group and change aDynMembership condition
@@ -755,7 +756,7 @@
         group = updateGroup(groupUR).getEntity();
         assertEquals(fiql, group.getADynMembershipConds().get(PRINTER));
 
-        group = groupService.read(group.getKey());
+        group = GROUP_SERVICE.read(group.getKey());
         assertEquals(fiql, group.getADynMembershipConds().get(PRINTER));
 
         // verify that the condition is dynamically applied
@@ -767,13 +768,13 @@
         newAny = updateAnyObject(anyObjectUR).getEntity();
         assertFalse(newAny.getPlainAttr("location").isPresent());
 
-        memberships = anyObjectService.read(
+        memberships = ANY_OBJECT_SERVICE.read(
                 "fc6dbc3a-6c07-4965-8781-921e7401a4a5").getDynMemberships();
         assertFalse(memberships.stream().anyMatch(m -> m.getGroupKey().equals(groupKey)));
-        memberships = anyObjectService.read(
+        memberships = ANY_OBJECT_SERVICE.read(
                 "8559d14d-58c2-46eb-a2d4-a7d35161e8f8").getDynMemberships();
         assertFalse(memberships.stream().anyMatch(m -> m.getGroupKey().equals(groupKey)));
-        memberships = anyObjectService.read(newAny.getKey()).getDynMemberships();
+        memberships = ANY_OBJECT_SERVICE.read(newAny.getKey()).getDynMemberships();
         assertTrue(memberships.stream().anyMatch(m -> m.getGroupKey().equals(groupKey)));
     }
 
@@ -792,12 +793,12 @@
         printerCR.getPlainAttrs().add(new Attr.Builder("location").value("home").build());
         AnyObjectTO printer = createAnyObject(printerCR).getEntity();
 
-        group = groupService.read(group.getKey());
+        group = GROUP_SERVICE.read(group.getKey());
         assertEquals(0, group.getStaticAnyObjectMembershipCount());
         assertEquals(1, group.getDynamicAnyObjectMembershipCount());
 
-        anyObjectService.delete(printer.getKey());
-        groupService.delete(group.getKey());
+        ANY_OBJECT_SERVICE.delete(printer.getKey());
+        GROUP_SERVICE.delete(group.getKey());
     }
 
     @Test
@@ -813,24 +814,24 @@
         printerCR.getMemberships().add(new MembershipTO.Builder(group.getKey()).build());
         AnyObjectTO printer = createAnyObject(printerCR).getEntity();
 
-        group = groupService.read(group.getKey());
+        group = GROUP_SERVICE.read(group.getKey());
         assertEquals(0, group.getDynamicAnyObjectMembershipCount());
         assertEquals(1, group.getStaticAnyObjectMembershipCount());
 
-        anyObjectService.delete(printer.getKey());
-        groupService.delete(group.getKey());
+        ANY_OBJECT_SERVICE.delete(printer.getKey());
+        GROUP_SERVICE.delete(group.getKey());
     }
 
     @Test
     public void capabilitiesOverride() {
         // resource with no capability override
-        ResourceTO ldap = resourceService.read(RESOURCE_NAME_LDAP);
+        ResourceTO ldap = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
         assertNotNull(ldap);
         assertFalse(ldap.isOverrideCapabilities());
         assertTrue(ldap.getCapabilitiesOverride().isEmpty());
 
         // connector with all required for create and update
-        ConnInstanceTO conn = connectorService.read(ldap.getConnector(), null);
+        ConnInstanceTO conn = CONNECTOR_SERVICE.read(ldap.getConnector(), null);
         assertNotNull(conn);
         assertTrue(conn.getCapabilities().contains(ConnectorCapability.CREATE));
         assertTrue(conn.getCapabilities().contains(ConnectorCapability.UPDATE));
@@ -863,8 +864,8 @@
 
             // 3. set capability override with only search allowed, but not enable
             ldap.getCapabilitiesOverride().add(ConnectorCapability.SEARCH);
-            resourceService.update(ldap);
-            ldap = resourceService.read(RESOURCE_NAME_LDAP);
+            RESOURCE_SERVICE.update(ldap);
+            ldap = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
             assertNotNull(ldap);
             assertFalse(ldap.isOverrideCapabilities());
             assertEquals(1, ldap.getCapabilitiesOverride().size());
@@ -885,8 +886,8 @@
 
             // 5. enable capability override
             ldap.setOverrideCapabilities(true);
-            resourceService.update(ldap);
-            ldap = resourceService.read(RESOURCE_NAME_LDAP);
+            RESOURCE_SERVICE.update(ldap);
+            ldap = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
             assertNotNull(ldap);
             assertTrue(ldap.isOverrideCapabilities());
             assertEquals(1, ldap.getCapabilitiesOverride().size());
@@ -906,7 +907,7 @@
         } finally {
             ldap.getCapabilitiesOverride().clear();
             ldap.setOverrideCapabilities(false);
-            resourceService.update(ldap);
+            RESOURCE_SERVICE.update(ldap);
         }
     }
 
@@ -944,7 +945,7 @@
 
     @Test
     public void provisionMembers() throws InterruptedException {
-        assumeFalse(ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform()));
+        assumeFalse(ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform()));
 
         // 1. create group without resources
         GroupCR groupCR = getBasicSample("forProvision");
@@ -968,7 +969,7 @@
 
         // 4. verify that the user above is not found on LDAP
         try {
-            resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userTO.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userTO.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -976,13 +977,13 @@
 
         try {
             // 5. provision group members
-            ExecTO exec = groupService.provisionMembers(groupTO.getKey(), ProvisionAction.PROVISION);
+            ExecTO exec = GROUP_SERVICE.provisionMembers(groupTO.getKey(), ProvisionAction.PROVISION);
             assertNotNull(exec.getRefKey());
 
             AtomicReference<List<ExecTO>> execs = new AtomicReference<>();
             await().atMost(MAX_WAIT_SECONDS, TimeUnit.SECONDS).pollInterval(1, TimeUnit.SECONDS).until(() -> {
                 try {
-                    execs.set(taskService.read(TaskType.SCHEDULED, exec.getRefKey(), true).getExecutions());
+                    execs.set(TASK_SERVICE.read(TaskType.SCHEDULED, exec.getRefKey(), true).getExecutions());
                     return !execs.get().isEmpty();
                 } catch (Exception e) {
                     return false;
@@ -992,11 +993,11 @@
 
             // 6. verify that the user above is now fond on LDAP
             ConnObjectTO userOnLdap =
-                    resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userTO.getKey());
+                    RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userTO.getKey());
             assertNotNull(userOnLdap);
         } finally {
-            groupService.delete(groupTO.getKey());
-            userService.delete(userTO.getKey());
+            GROUP_SERVICE.delete(groupTO.getKey());
+            USER_SERVICE.delete(userTO.getKey());
         }
     }
 
@@ -1024,14 +1025,14 @@
 
     @Test
     public void issueSYNCOPE632() {
-        DerSchemaTO orig = schemaService.read(SchemaType.DERIVED, "displayProperty");
+        DerSchemaTO orig = SCHEMA_SERVICE.read(SchemaType.DERIVED, "displayProperty");
         DerSchemaTO modified = SerializationUtils.clone(orig);
         modified.setExpression("icon + '_' + show");
 
         GroupCR groupCR = GroupITCase.getSample("lastGroup");
         GroupTO groupTO = null;
         try {
-            schemaService.update(SchemaType.DERIVED, modified);
+            SCHEMA_SERVICE.update(SchemaType.DERIVED, modified);
 
             // 0. create group
             groupCR.getPlainAttrs().add(attr("icon", "anIcon"));
@@ -1042,7 +1043,7 @@
             assertNotNull(groupTO);
 
             // 1. create new LDAP resource having ConnObjectKey mapped to a derived attribute
-            ResourceTO newLDAP = resourceService.read(RESOURCE_NAME_LDAP);
+            ResourceTO newLDAP = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
             newLDAP.setKey("new-ldap");
             newLDAP.setPropagationPriority(0);
 
@@ -1115,11 +1116,11 @@
 
             assertEquals(1, entries);
         } finally {
-            schemaService.update(SchemaType.DERIVED, orig);
+            SCHEMA_SERVICE.update(SchemaType.DERIVED, orig);
             if (groupTO != null) {
-                groupService.delete(groupTO.getKey());
+                GROUP_SERVICE.delete(groupTO.getKey());
             }
-            resourceService.delete("new-ldap");
+            RESOURCE_SERVICE.delete("new-ldap");
         }
     }
 
@@ -1136,10 +1137,10 @@
         assertNotNull(schema);
         assertNull(schema.getConversionPattern());
 
-        AnyTypeClassTO minimalGroup = anyTypeClassService.read("minimal group");
+        AnyTypeClassTO minimalGroup = ANY_TYPE_CLASS_SERVICE.read("minimal group");
         assertNotNull(minimalGroup);
         minimalGroup.getPlainSchemas().add(doubleSchemaName);
-        anyTypeClassService.update(minimalGroup);
+        ANY_TYPE_CLASS_SERVICE.update(minimalGroup);
 
         // 2. create group, provide valid input value
         GroupCR groupCR = GroupITCase.getBasicSample("syncope717");
@@ -1150,12 +1151,12 @@
         assertEquals("11.23", groupTO.getPlainAttr(doubleSchemaName).get().getValues().get(0));
 
         // 3. update schema, set conversion pattern
-        schema = schemaService.read(SchemaType.PLAIN, schema.getKey());
+        schema = SCHEMA_SERVICE.read(SchemaType.PLAIN, schema.getKey());
         schema.setConversionPattern("0.000");
-        schemaService.update(SchemaType.PLAIN, schema);
+        SCHEMA_SERVICE.update(SchemaType.PLAIN, schema);
 
         // 4. re-read group, verify that pattern was applied
-        groupTO = groupService.read(groupTO.getKey());
+        groupTO = GROUP_SERVICE.read(groupTO.getKey());
         assertNotNull(groupTO);
         assertEquals("11.230", groupTO.getPlainAttr(doubleSchemaName).get().getValues().get(0));
 
@@ -1170,7 +1171,7 @@
 
         // 6. update schema, unset conversion pattern
         schema.setConversionPattern(null);
-        schemaService.update(SchemaType.PLAIN, schema);
+        SCHEMA_SERVICE.update(SchemaType.PLAIN, schema);
 
         // 7. modify group with new double value, verify that no pattern is applied
         groupUR = new GroupUR();
@@ -1196,7 +1197,7 @@
             assertTrue(groupTO.getResources().contains(RESOURCE_NAME_LDAP));
 
             ConnObjectTO connObjectTO =
-                    resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
+                    RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
             assertNotNull(connObjectTO);
             assertEquals("issueSYNCOPE1467", connObjectTO.getAttr("cn").get().getValues().get(0));
 
@@ -1207,16 +1208,16 @@
             assertNotNull(updateGroup(groupUR).getEntity());
 
             // Assert resources are present
-            ResourceTO ldap = resourceService.read(RESOURCE_NAME_LDAP);
+            ResourceTO ldap = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
             assertNotNull(ldap);
 
-            connObjectTO = resourceService.
+            connObjectTO = RESOURCE_SERVICE.
                     readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
             assertNotNull(connObjectTO);
             assertEquals("fixedSYNCOPE1467", connObjectTO.getAttr("cn").get().getValues().get(0));
         } finally {
             if (groupTO.getKey() != null) {
-                groupService.delete(groupTO.getKey());
+                GROUP_SERVICE.delete(groupTO.getKey());
             }
         }
     }
@@ -1252,7 +1253,7 @@
 
         updateGroup(groupUR);
 
-        GroupTO groupTO = groupService.read("ece66293-8f31-4a84-8e8d-23da36e70846");
+        GroupTO groupTO = GROUP_SERVICE.read("ece66293-8f31-4a84-8e8d-23da36e70846");
         assertFalse(groupTO.getResources().contains(RESOURCE_NAME_TESTDB), "Should not contain removed resources");
         assertFalse(groupTO.getAuxClasses().contains("csv"), "Should not contain removed auxiliary classes");
     }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ImplementationITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ImplementationITCase.java
index db8ef45..bde7b33 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ImplementationITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ImplementationITCase.java
@@ -48,22 +48,22 @@
 
         // fail because type is wrong
         try {
-            implementationService.create(implementationTO);
+            IMPLEMENTATION_SERVICE.create(implementationTO);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.InvalidImplementation, e.getType());
         }
         implementationTO.setType(IdMImplementationType.PULL_ACTIONS);
 
-        Response response = implementationService.create(implementationTO);
+        Response response = IMPLEMENTATION_SERVICE.create(implementationTO);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-            Exception ex = clientFactory.getExceptionMapper().fromResponse(response);
+            Exception ex = CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
             if (ex != null) {
                 throw (RuntimeException) ex;
             }
         }
 
-        ImplementationTO actual = implementationService.read(
+        ImplementationTO actual = IMPLEMENTATION_SERVICE.read(
                 implementationTO.getType(), response.getHeaderString(RESTHeaders.RESOURCE_KEY));
         assertNotNull(actual);
         assertEquals(actual, implementationTO);
@@ -77,17 +77,17 @@
         implementationTO.setType(IdMImplementationType.PULL_ACTIONS);
         implementationTO.setBody(TestPullActions.class.getName());
 
-        implementationService.create(implementationTO);
+        IMPLEMENTATION_SERVICE.create(implementationTO);
 
-        PullTaskTO pullTask = taskService.read(TaskType.PULL, AbstractTaskITCase.PULL_TASK_KEY, false);
+        PullTaskTO pullTask = TASK_SERVICE.read(TaskType.PULL, AbstractTaskITCase.PULL_TASK_KEY, false);
         assertNotNull(pullTask);
 
         int before = pullTask.getActions().size();
 
         pullTask.getActions().add(implementationTO.getKey());
-        taskService.update(TaskType.PULL, pullTask);
+        TASK_SERVICE.update(TaskType.PULL, pullTask);
 
-        pullTask = taskService.read(TaskType.PULL, AbstractTaskITCase.PULL_TASK_KEY, false);
+        pullTask = TASK_SERVICE.read(TaskType.PULL, AbstractTaskITCase.PULL_TASK_KEY, false);
         assertNotNull(pullTask);
 
         int after = pullTask.getActions().size();
@@ -95,16 +95,16 @@
 
         // fails because the implementation is used
         try {
-            implementationService.delete(implementationTO.getType(), implementationTO.getKey());
+            IMPLEMENTATION_SERVICE.delete(implementationTO.getType(), implementationTO.getKey());
             fail("Unexpected");
         } catch (SyncopeClientException e) {
             assertEquals(e.getType(), ClientExceptionType.InUse);
         }
 
         pullTask.getActions().remove(implementationTO.getKey());
-        taskService.update(TaskType.PULL, pullTask);
+        TASK_SERVICE.update(TaskType.PULL, pullTask);
 
-        implementationService.delete(implementationTO.getType(), implementationTO.getKey());
+        IMPLEMENTATION_SERVICE.delete(implementationTO.getType(), implementationTO.getKey());
     }
 
 }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/JWTITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/JWTITCase.java
index f11373e..8ada145a 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/JWTITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/JWTITCase.java
@@ -82,7 +82,7 @@
     @Test
     public void getJWTToken() throws ParseException, JOSEException {
         // Get the token
-        SyncopeClient localClient = clientFactory.create(ADMIN_UNAME, ADMIN_PWD);
+        SyncopeClient localClient = CLIENT_FACTORY.create(ADMIN_UNAME, ADMIN_PWD);
         AccessTokenService accessTokenService = localClient.getService(AccessTokenService.class);
 
         Response response = accessTokenService.login();
@@ -126,7 +126,7 @@
     @Test
     public void queryUsingToken() throws ParseException {
         // Get the token
-        SyncopeClient localClient = clientFactory.create(ADMIN_UNAME, ADMIN_PWD);
+        SyncopeClient localClient = CLIENT_FACTORY.create(ADMIN_UNAME, ADMIN_PWD);
         AccessTokenService accessTokenService = localClient.getService(AccessTokenService.class);
 
         Response response = accessTokenService.login();
@@ -134,12 +134,12 @@
         assertNotNull(token);
 
         // Query the UserSelfService using the token
-        SyncopeClient jwtClient = clientFactory.create(token);
+        SyncopeClient jwtClient = CLIENT_FACTORY.create(token);
         UserSelfService jwtUserSelfService = jwtClient.getService(UserSelfService.class);
         jwtUserSelfService.read();
 
         // Test a "bad" token
-        jwtClient = clientFactory.create(token + "xyz");
+        jwtClient = CLIENT_FACTORY.create(token + "xyz");
         jwtUserSelfService = jwtClient.getService(UserSelfService.class);
         try {
             jwtUserSelfService.read();
@@ -152,7 +152,7 @@
     @Test
     public void tokenValidation() throws ParseException, JOSEException {
         // Get an initial token
-        SyncopeClient localClient = clientFactory.create(ADMIN_UNAME, ADMIN_PWD);
+        SyncopeClient localClient = CLIENT_FACTORY.create(ADMIN_UNAME, ADMIN_PWD);
         AccessTokenService accessTokenService = localClient.getService(AccessTokenService.class);
 
         Response response = accessTokenService.login();
@@ -179,7 +179,7 @@
         jwt.sign(JWS_SIGNER);
         String signed = jwt.serialize();
 
-        SyncopeClient jwtClient = clientFactory.create(signed);
+        SyncopeClient jwtClient = CLIENT_FACTORY.create(signed);
         UserSelfService jwtUserSelfService = jwtClient.getService(UserSelfService.class);
         jwtUserSelfService.read();
     }
@@ -187,7 +187,7 @@
     @Test
     public void invalidIssuer() throws ParseException, JOSEException {
         // Get an initial token
-        SyncopeClient localClient = clientFactory.create(ADMIN_UNAME, ADMIN_PWD);
+        SyncopeClient localClient = CLIENT_FACTORY.create(ADMIN_UNAME, ADMIN_PWD);
         AccessTokenService accessTokenService = localClient.getService(AccessTokenService.class);
 
         Response response = accessTokenService.login();
@@ -213,7 +213,7 @@
         jwt.sign(JWS_SIGNER);
         String signed = jwt.serialize();
 
-        SyncopeClient jwtClient = clientFactory.create(signed);
+        SyncopeClient jwtClient = CLIENT_FACTORY.create(signed);
         UserSelfService jwtUserSelfService = jwtClient.getService(UserSelfService.class);
         try {
             jwtUserSelfService.read();
@@ -226,7 +226,7 @@
     @Test
     public void expiredToken() throws ParseException, JOSEException {
         // Get an initial token
-        SyncopeClient localClient = clientFactory.create(ADMIN_UNAME, ADMIN_PWD);
+        SyncopeClient localClient = CLIENT_FACTORY.create(ADMIN_UNAME, ADMIN_PWD);
         AccessTokenService accessTokenService = localClient.getService(AccessTokenService.class);
 
         Response response = accessTokenService.login();
@@ -249,7 +249,7 @@
         jwt.sign(JWS_SIGNER);
         String signed = jwt.serialize();
 
-        SyncopeClient jwtClient = clientFactory.create(signed);
+        SyncopeClient jwtClient = CLIENT_FACTORY.create(signed);
         UserSelfService jwtUserSelfService = jwtClient.getService(UserSelfService.class);
         try {
             jwtUserSelfService.read();
@@ -262,7 +262,7 @@
     @Test
     public void notBefore() throws ParseException, JOSEException {
         // Get an initial token
-        SyncopeClient localClient = clientFactory.create(ADMIN_UNAME, ADMIN_PWD);
+        SyncopeClient localClient = CLIENT_FACTORY.create(ADMIN_UNAME, ADMIN_PWD);
         AccessTokenService accessTokenService = localClient.getService(AccessTokenService.class);
 
         Response response = accessTokenService.login();
@@ -289,7 +289,7 @@
         jwt.sign(JWS_SIGNER);
         String signed = jwt.serialize();
 
-        SyncopeClient jwtClient = clientFactory.create(signed);
+        SyncopeClient jwtClient = CLIENT_FACTORY.create(signed);
         UserSelfService jwtUserSelfService = jwtClient.getService(UserSelfService.class);
         try {
             jwtUserSelfService.read();
@@ -302,7 +302,7 @@
     @Test
     public void noSignature() throws ParseException {
         // Get an initial token
-        SyncopeClient localClient = clientFactory.create(ADMIN_UNAME, ADMIN_PWD);
+        SyncopeClient localClient = CLIENT_FACTORY.create(ADMIN_UNAME, ADMIN_PWD);
         AccessTokenService accessTokenService = localClient.getService(AccessTokenService.class);
 
         Response response = accessTokenService.login();
@@ -315,7 +315,7 @@
         jwt = new PlainJWT(claimsSet.build());
         String bearer = jwt.serialize();
 
-        SyncopeClient jwtClient = clientFactory.create(bearer);
+        SyncopeClient jwtClient = CLIENT_FACTORY.create(bearer);
         UserSelfService jwtUserSelfService = jwtClient.getService(UserSelfService.class);
         try {
             jwtUserSelfService.read();
@@ -328,7 +328,7 @@
     @Test
     public void unknownId() throws ParseException, JOSEException {
         // Get an initial token
-        SyncopeClient localClient = clientFactory.create(ADMIN_UNAME, ADMIN_PWD);
+        SyncopeClient localClient = CLIENT_FACTORY.create(ADMIN_UNAME, ADMIN_PWD);
         AccessTokenService accessTokenService = localClient.getService(AccessTokenService.class);
 
         Response response = accessTokenService.login();
@@ -343,7 +343,7 @@
         jwt.sign(JWS_SIGNER);
         String signed = jwt.serialize();
 
-        SyncopeClient jwtClient = clientFactory.create(signed);
+        SyncopeClient jwtClient = CLIENT_FACTORY.create(signed);
         UserSelfService jwtUserSelfService = jwtClient.getService(UserSelfService.class);
         try {
             jwtUserSelfService.read();
@@ -375,7 +375,7 @@
         jwt.sign(new MACSigner(CustomJWTSSOProvider.CUSTOM_KEY));
         String signed = jwt.serialize();
 
-        SyncopeClient jwtClient = clientFactory.create(signed);
+        SyncopeClient jwtClient = CLIENT_FACTORY.create(signed);
 
         Triple<Map<String, Set<String>>, List<String>, UserTO> self = jwtClient.self();
         assertFalse(self.getLeft().isEmpty());
@@ -404,7 +404,7 @@
         jwt.sign(JWS_SIGNER);
         String signed = jwt.serialize();
 
-        SyncopeClient jwtClient = clientFactory.create(signed);
+        SyncopeClient jwtClient = CLIENT_FACTORY.create(signed);
 
         try {
             jwtClient.self();
@@ -436,7 +436,7 @@
         jwt.sign(JWS_SIGNER);
         String signed = jwt.serialize();
 
-        SyncopeClient jwtClient = clientFactory.create(signed);
+        SyncopeClient jwtClient = CLIENT_FACTORY.create(signed);
 
         try {
             jwtClient.self();
@@ -475,7 +475,7 @@
         jwt.sign(customJWSSigner);
         String signed = jwt.serialize();
 
-        SyncopeClient jwtClient = clientFactory.create(signed);
+        SyncopeClient jwtClient = CLIENT_FACTORY.create(signed);
 
         try {
             jwtClient.self();
@@ -497,7 +497,7 @@
             assertNotNull(user);
 
             // login, get JWT with  expiryTime
-            String jwt = clientFactory.create(user.getUsername(), "password123").getJWT();
+            String jwt = CLIENT_FACTORY.create(user.getUsername(), "password123").getJWT();
 
             Date expirationTime = SignedJWT.parse(jwt).getJWTClaimsSet().getExpirationTime();
             assertNotNull(expirationTime);
@@ -512,7 +512,7 @@
 
             // login again, get new JWT
             // (even if ExpiredAccessTokenCleanup did not run yet, as it is scheduled every 5 minutes)
-            String newJWT = clientFactory.create(user.getUsername(), "password123").getJWT();
+            String newJWT = CLIENT_FACTORY.create(user.getUsername(), "password123").getJWT();
             assertNotEquals(jwt, newJWT);
         } finally {
             confParamOps.set(SyncopeConstants.MASTER_DOMAIN, "jwt.lifetime.minutes", orig);
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/KeymasterITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/KeymasterITCase.java
index 162f9aa..d093e3c 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/KeymasterITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/KeymasterITCase.java
@@ -259,18 +259,18 @@
         assumeTrue(domainOps instanceof SelfKeymasterDomainOps);
 
         // 3. work with new domain - create user
-        clientFactory = new SyncopeClientFactoryBean().setAddress(ADDRESS).setDomain(key);
-        adminClient = clientFactory.create(ADMIN_UNAME, "password");
+        CLIENT_FACTORY = new SyncopeClientFactoryBean().setAddress(ADDRESS).setDomain(key);
+        ADMIN_CLIENT = CLIENT_FACTORY.create(ADMIN_UNAME, "password");
 
-        userService = adminClient.getService(UserService.class);
+        USER_SERVICE = ADMIN_CLIENT.getService(UserService.class);
 
-        PagedResult<UserTO> users = userService.search(
+        PagedResult<UserTO> users = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).page(1).size(1).build());
         assertNotNull(users);
         assertTrue(users.getResult().isEmpty());
         assertEquals(0, users.getTotalCount());
 
-        Response response = userService.create(
+        Response response = USER_SERVICE.create(
                 new UserCR.Builder(SyncopeConstants.ROOT_REALM, "monteverdi").
                         password("password123").
                         plainAttr(attr("email", "monteverdi@syncope.apache.org")).
@@ -282,7 +282,7 @@
         assertNotNull(user);
         assertEquals("monteverdi", user.getUsername());
 
-        if (ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform())) {
+        if (ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform())) {
             try {
                 Thread.sleep(2000);
             } catch (InterruptedException ex) {
@@ -290,7 +290,7 @@
             }
         }
 
-        users = userService.search(
+        users = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).page(1).size(1).build());
         assertNotNull(users);
         assertFalse(users.getResult().isEmpty());
@@ -337,7 +337,7 @@
             // 2. attempt to access with old pwd -> fail
             try {
                 new SyncopeClientFactoryBean().
-                        setAddress(ADDRESS).setDomain(two.getKey()).setContentType(clientFactory.getContentType()).
+                        setAddress(ADDRESS).setDomain(two.getKey()).setContentType(CLIENT_FACTORY.getContentType()).
                         create(ADMIN_UNAME, "password2").self();
             } catch (AccessControlException e) {
                 assertNotNull(e);
@@ -345,7 +345,7 @@
 
             // 3. access with new pwd -> succeed
             new SyncopeClientFactoryBean().
-                    setAddress(ADDRESS).setDomain(two.getKey()).setContentType(clientFactory.getContentType()).
+                    setAddress(ADDRESS).setDomain(two.getKey()).setContentType(CLIENT_FACTORY.getContentType()).
                     create(ADMIN_UNAME, "password3").self();
         } finally {
             domainOps.changeAdminPassword(two.getKey(), origPasswowrd, origCipherAlgo);
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LinkedAccountITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LinkedAccountITCase.java
index d0e9f66..cbe124f 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LinkedAccountITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/LinkedAccountITCase.java
@@ -34,14 +34,14 @@
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.syncope.common.lib.request.LinkedAccountUR;
-import org.apache.syncope.common.lib.request.UserCR;
-import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.policy.PullPolicyTO;
+import org.apache.syncope.common.lib.request.LinkedAccountUR;
+import org.apache.syncope.common.lib.request.UserCR;
+import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.ImplementationTO;
@@ -81,7 +81,7 @@
         UserCR userCR = UserITCase.getSample(
                 "linkedAccount" + RandomStringUtils.randomNumeric(5) + "@syncope.apache.org");
         String connObjectKeyValue = "uid=" + userCR.getUsername() + ",ou=People,o=isp";
-        String privilege = applicationService.read("mightyApp").getPrivileges().get(0).getKey();
+        String privilege = APPLICATION_SERVICE.read("mightyApp").getPrivileges().get(0).getKey();
 
         LinkedAccountTO account = new LinkedAccountTO.Builder(RESOURCE_NAME_LDAP, connObjectKeyValue).build();
         account.getPlainAttrs().add(attr("surname", "LINKED_SURNAME"));
@@ -93,7 +93,7 @@
         assertEquals(privilege, user.getLinkedAccounts().get(0).getPrivileges().iterator().next());
 
         // 2. verify that propagation task was generated and that account is found on resource
-        PagedResult<PropagationTaskTO> tasks = taskService.search(
+        PagedResult<PropagationTaskTO> tasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).resource(RESOURCE_NAME_LDAP).
                         anyTypeKind(AnyTypeKind.USER).entityKey(user.getKey()).build());
         assertEquals(1, tasks.getTotalCount());
@@ -101,7 +101,7 @@
         assertEquals(ResourceOperation.CREATE, tasks.getResult().get(0).getOperation());
         assertEquals(ExecStatus.SUCCESS.name(), tasks.getResult().get(0).getLatestExecStatus());
 
-        ConnObjectTO ldapObj = resourceService.readConnObject(
+        ConnObjectTO ldapObj = RESOURCE_SERVICE.readConnObject(
                 RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), connObjectKeyValue);
         assertNotNull(ldapObj);
         assertEquals(user.getPlainAttr("email").get().getValues(), ldapObj.getAttr("mail").get().getValues());
@@ -120,7 +120,7 @@
         assertEquals(1, user.getLinkedAccounts().size());
 
         // 4 verify that account was updated on resource
-        ldapObj = resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), connObjectKeyValue);
+        ldapObj = RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), connObjectKeyValue);
         assertNotNull(ldapObj);
 
         assertTrue(ldapObj.getAttr("mail").get().getValues().contains("UPDATED_EMAIL@syncope.apache.org"));
@@ -137,7 +137,7 @@
         assertTrue(user.getLinkedAccounts().isEmpty());
 
         // 6. verify that propagation task was generated and that account is not any more on resource
-        tasks = taskService.search(
+        tasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).resource(RESOURCE_NAME_LDAP).
                         anyTypeKind(AnyTypeKind.USER).entityKey(user.getKey()).build());
         assertEquals(3, tasks.getTotalCount());
@@ -157,7 +157,7 @@
         UserCR userCR = UserITCase.getSample(
                 "linkedAccount" + RandomStringUtils.randomNumeric(5) + "@syncope.apache.org");
         String connObjectKeyValue = "uid=" + userCR.getUsername() + ",ou=People,o=isp";
-        String privilege = applicationService.read("mightyApp").getPrivileges().get(0).getKey();
+        String privilege = APPLICATION_SERVICE.read("mightyApp").getPrivileges().get(0).getKey();
 
         LinkedAccountTO account = new LinkedAccountTO.Builder(RESOURCE_NAME_LDAP, connObjectKeyValue).build();
         account.setUsername("LinkedUsername");
@@ -202,7 +202,7 @@
         assertNotNull(user.getKey());
         assertTrue(user.getLinkedAccounts().isEmpty());
 
-        PagedResult<PropagationTaskTO> tasks = taskService.search(
+        PagedResult<PropagationTaskTO> tasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).resource(RESOURCE_NAME_LDAP).
                         anyTypeKind(AnyTypeKind.USER).entityKey(user.getKey()).build());
         assertEquals(0, tasks.getTotalCount());
@@ -222,7 +222,7 @@
         assertEquals(1, user.getLinkedAccounts().size());
 
         // 3. verify that propagation task was generated and that account is found on resource
-        tasks = taskService.search(
+        tasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).resource(RESOURCE_NAME_LDAP).
                         anyTypeKind(AnyTypeKind.USER).entityKey(user.getKey()).build());
         assertEquals(1, tasks.getTotalCount());
@@ -230,7 +230,7 @@
         assertEquals(ResourceOperation.CREATE, tasks.getResult().get(0).getOperation());
         assertEquals(ExecStatus.SUCCESS.name(), tasks.getResult().get(0).getLatestExecStatus());
 
-        ConnObjectTO ldapObj = resourceService.readConnObject(
+        ConnObjectTO ldapObj = RESOURCE_SERVICE.readConnObject(
                 RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), connObjectKeyValue);
         assertNotNull(ldapObj);
         assertEquals(user.getPlainAttr("email").get().getValues(), ldapObj.getAttr("mail").get().getValues());
@@ -318,7 +318,7 @@
             assertNotEquals(userKey, connObjectKeyValue);
 
             // 2. verify that account is found on resource
-            PagedResult<PropagationTaskTO> tasks = taskService.search(
+            PagedResult<PropagationTaskTO> tasks = TASK_SERVICE.search(
                     new TaskQuery.Builder(TaskType.PROPAGATION).resource(RESOURCE_NAME_REST).
                             anyTypeKind(AnyTypeKind.USER).entityKey(user.getKey()).build());
             assertEquals(1, tasks.getTotalCount());
@@ -349,19 +349,19 @@
             sendUser.setPerformCreate(true);
             sendUser.setPerformUpdate(true);
 
-            response = taskService.create(TaskType.PUSH, sendUser);
+            response = TASK_SERVICE.create(TaskType.PUSH, sendUser);
             sendUser = getObject(response.getLocation(), TaskService.class, PushTaskTO.class);
             assertNotNull(sendUser);
 
             // 5. execute PushTask
             AbstractTaskITCase.execProvisioningTask(
-                    taskService, TaskType.PUSH, sendUser.getKey(), MAX_WAIT_SECONDS, false);
+                    TASK_SERVICE, TaskType.PUSH, sendUser.getKey(), MAX_WAIT_SECONDS, false);
 
-            TaskTO task = taskService.read(TaskType.PUSH, sendUser.getKey(), true);
+            TaskTO task = TASK_SERVICE.read(TaskType.PUSH, sendUser.getKey(), true);
             assertEquals(1, task.getExecutions().size());
             assertEquals(ExecStatus.SUCCESS.name(), task.getExecutions().get(0).getStatus());
 
-            tasks = taskService.search(
+            tasks = TASK_SERVICE.search(
                     new TaskQuery.Builder(TaskType.PROPAGATION).resource(RESOURCE_NAME_REST).
                             anyTypeKind(AnyTypeKind.USER).entityKey(user.getKey()).build());
             assertEquals(3, tasks.getTotalCount());
@@ -383,7 +383,7 @@
                 WebClient.create(BUILD_TOOLS_ADDRESS + "/rest/users/" + connObjectKeyValue).delete();
                 WebClient.create(BUILD_TOOLS_ADDRESS + "/rest/users/" + userKey).delete();
 
-                userService.delete(userKey);
+                USER_SERVICE.delete(userKey);
             }
         }
     }
@@ -393,11 +393,11 @@
         // -----------------------------
         // Add a custom policy with correlation rule
         // -----------------------------
-        ResourceTO restResource = resourceService.read(RESOURCE_NAME_REST);
+        ResourceTO restResource = RESOURCE_SERVICE.read(RESOURCE_NAME_REST);
         if (restResource.getPullPolicy() == null) {
             ImplementationTO rule = null;
             try {
-                rule = implementationService.read(
+                rule = IMPLEMENTATION_SERVICE.read(
                         IdMImplementationType.PULL_CORRELATION_RULE, "LinkedAccountSamplePullCorrelationRule");
             } catch (SyncopeClientException e) {
                 if (e.getType().getResponseStatus() == Response.Status.NOT_FOUND) {
@@ -406,8 +406,8 @@
                     rule.setEngine(ImplementationEngine.JAVA);
                     rule.setType(IdMImplementationType.PULL_CORRELATION_RULE);
                     rule.setBody(POJOHelper.serialize(new LinkedAccountSamplePullCorrelationRuleConf()));
-                    Response response = implementationService.create(rule);
-                    rule = implementationService.read(
+                    Response response = IMPLEMENTATION_SERVICE.create(rule);
+                    rule = IMPLEMENTATION_SERVICE.read(
                             rule.getType(), response.getHeaderString(RESTHeaders.RESOURCE_KEY));
                     assertNotNull(rule.getKey());
                 }
@@ -417,12 +417,12 @@
             PullPolicyTO policy = new PullPolicyTO();
             policy.setName("Linked Account sample Pull policy");
             policy.getCorrelationRules().put(AnyTypeKind.USER.name(), rule.getKey());
-            Response response = policyService.create(PolicyType.PULL, policy);
-            policy = policyService.read(PolicyType.PULL, response.getHeaderString(RESTHeaders.RESOURCE_KEY));
+            Response response = POLICY_SERVICE.create(PolicyType.PULL, policy);
+            policy = POLICY_SERVICE.read(PolicyType.PULL, response.getHeaderString(RESTHeaders.RESOURCE_KEY));
             assertNotNull(policy.getKey());
 
             restResource.setPullPolicy(policy.getKey());
-            resourceService.update(restResource);
+            RESOURCE_SERVICE.update(restResource);
         }
 
         // -----------------------------
@@ -431,7 +431,7 @@
         // -----------------------------
         String pullTaskKey;
 
-        PagedResult<PullTaskTO> tasks = taskService.search(
+        PagedResult<PullTaskTO> tasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PULL).resource(RESOURCE_NAME_REST).build());
         if (tasks.getTotalCount() > 0) {
             pullTaskKey = tasks.getResult().get(0).getKey();
@@ -447,8 +447,8 @@
             task.setPerformDelete(true);
             task.setSyncStatus(true);
 
-            Response response = taskService.create(TaskType.PULL, task);
-            task = taskService.read(TaskType.PULL, response.getHeaderString(RESTHeaders.RESOURCE_KEY), false);
+            Response response = TASK_SERVICE.create(TaskType.PULL, task);
+            task = TASK_SERVICE.read(TaskType.PULL, response.getHeaderString(RESTHeaders.RESOURCE_KEY), false);
             assertNotNull(task.getKey());
             pullTaskKey = task.getKey();
         }
@@ -495,15 +495,15 @@
 
         // 2. execute pull task and verify linked accounts were pulled
         try {
-            List<LinkedAccountTO> accounts = userService.read("vivaldi").getLinkedAccounts();
+            List<LinkedAccountTO> accounts = USER_SERVICE.read("vivaldi").getLinkedAccounts();
             assertTrue(accounts.isEmpty());
 
             ExecTO exec = AbstractTaskITCase.execProvisioningTask(
-                    taskService, TaskType.PULL, pullTaskKey, MAX_WAIT_SECONDS, false);
+                    TASK_SERVICE, TaskType.PULL, pullTaskKey, MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(exec.getStatus()));
             assertTrue(exec.getMessage().contains("Accounts created"));
 
-            accounts = userService.read("vivaldi").getLinkedAccounts();
+            accounts = USER_SERVICE.read("vivaldi").getLinkedAccounts();
             assertEquals(3, accounts.size());
 
             Optional<LinkedAccountTO> firstAccount = accounts.stream().
@@ -549,12 +549,12 @@
 
             // 4. execute pull task again and verify linked accounts were pulled
             exec = AbstractTaskITCase.execProvisioningTask(
-                    taskService, TaskType.PULL, pullTaskKey, MAX_WAIT_SECONDS, false);
+                    TASK_SERVICE, TaskType.PULL, pullTaskKey, MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(exec.getStatus()));
             assertTrue(exec.getMessage().contains("Accounts updated"));
             assertTrue(exec.getMessage().contains("Accounts deleted"));
 
-            accounts = userService.read("vivaldi").getLinkedAccounts();
+            accounts = USER_SERVICE.read("vivaldi").getLinkedAccounts();
             assertEquals(2, accounts.size());
 
             firstAccount = accounts.stream().
@@ -588,7 +588,7 @@
                     operation(PatchOperation.DELETE).
                     linkedAccountTO(new LinkedAccountTO.Builder(RESOURCE_NAME_REST, user3Key).build()).
                     build());
-            userService.update(patch);
+            USER_SERVICE.update(patch);
 
             webClient.replacePath(user2Key).delete();
             webClient.replacePath(user3Key).delete();
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MailTemplateITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MailTemplateITCase.java
index df00728..3257e34 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MailTemplateITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MailTemplateITCase.java
@@ -42,13 +42,13 @@
 
     @Test
     public void read() {
-        MailTemplateTO mailTemplateTO = mailTemplateService.read("optin");
+        MailTemplateTO mailTemplateTO = MAIL_TEMPLATE_SERVICE.read("optin");
         assertNotNull(mailTemplateTO);
     }
 
     @Test
     public void list() {
-        List<MailTemplateTO> mailTemplateTOs = mailTemplateService.list();
+        List<MailTemplateTO> mailTemplateTOs = MAIL_TEMPLATE_SERVICE.list();
         assertNotNull(mailTemplateTOs);
         assertFalse(mailTemplateTOs.isEmpty());
         for (MailTemplateTO instance : mailTemplateTOs) {
@@ -64,18 +64,18 @@
         MailTemplateTO mailTemplateTO = new MailTemplateTO();
         mailTemplateTO.setKey(key);
 
-        Response response = mailTemplateService.create(mailTemplateTO);
+        Response response = MAIL_TEMPLATE_SERVICE.create(mailTemplateTO);
         assertEquals(201, response.getStatus());
 
         // 2. attempt to read HTML and TEXT -> fail
         try {
-            mailTemplateService.getFormat(key, MailTemplateFormat.HTML);
+            MAIL_TEMPLATE_SERVICE.getFormat(key, MailTemplateFormat.HTML);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
         try {
-            mailTemplateService.getFormat(key, MailTemplateFormat.TEXT);
+            MAIL_TEMPLATE_SERVICE.getFormat(key, MailTemplateFormat.TEXT);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -83,10 +83,10 @@
 
         // 3. set TEXT
         String textTemplate = "Hi there, I am ${username}.";
-        mailTemplateService.setFormat(
+        MAIL_TEMPLATE_SERVICE.setFormat(
                 key, MailTemplateFormat.TEXT, IOUtils.toInputStream(textTemplate, StandardCharsets.UTF_8));
 
-        response = mailTemplateService.getFormat(key, MailTemplateFormat.TEXT);
+        response = MAIL_TEMPLATE_SERVICE.getFormat(key, MailTemplateFormat.TEXT);
         assertEquals(200, response.getStatus());
         assertTrue(response.getMediaType().toString().startsWith(MediaType.TEXT_PLAIN));
         assertTrue(response.getEntity() instanceof InputStream);
@@ -96,10 +96,10 @@
 
         // 3. set HTML
         String htmlTemplate = "<html><body>Hi there, I am ${username}.</body></html>";
-        mailTemplateService.setFormat(
+        MAIL_TEMPLATE_SERVICE.setFormat(
                 key, MailTemplateFormat.HTML, IOUtils.toInputStream(htmlTemplate, StandardCharsets.UTF_8));
 
-        response = mailTemplateService.getFormat(key, MailTemplateFormat.HTML);
+        response = MAIL_TEMPLATE_SERVICE.getFormat(key, MailTemplateFormat.HTML);
         assertEquals(200, response.getStatus());
         assertTrue(response.getMediaType().toString().startsWith(MediaType.TEXT_HTML));
         assertTrue(response.getEntity() instanceof InputStream);
@@ -108,16 +108,16 @@
                 IOUtils.toString((InputStream) response.getEntity(), StandardCharsets.UTF_8));
 
         // 4. remove HTML
-        mailTemplateService.removeFormat(key, MailTemplateFormat.HTML);
+        MAIL_TEMPLATE_SERVICE.removeFormat(key, MailTemplateFormat.HTML);
 
         try {
-            mailTemplateService.getFormat(key, MailTemplateFormat.HTML);
+            MAIL_TEMPLATE_SERVICE.getFormat(key, MailTemplateFormat.HTML);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
 
-        response = mailTemplateService.getFormat(key, MailTemplateFormat.TEXT);
+        response = MAIL_TEMPLATE_SERVICE.getFormat(key, MailTemplateFormat.TEXT);
         assertEquals(200, response.getStatus());
         assertTrue(response.getMediaType().toString().startsWith(MediaType.TEXT_PLAIN));
         assertTrue(response.getEntity() instanceof InputStream);
@@ -126,22 +126,22 @@
                 IOUtils.toString((InputStream) response.getEntity(), StandardCharsets.UTF_8));
 
         // 5. remove mail template
-        mailTemplateService.delete(key);
+        MAIL_TEMPLATE_SERVICE.delete(key);
 
         try {
-            mailTemplateService.read(key);
+            MAIL_TEMPLATE_SERVICE.read(key);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
         try {
-            mailTemplateService.getFormat(key, MailTemplateFormat.HTML);
+            MAIL_TEMPLATE_SERVICE.getFormat(key, MailTemplateFormat.HTML);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
         try {
-            mailTemplateService.getFormat(key, MailTemplateFormat.TEXT);
+            MAIL_TEMPLATE_SERVICE.getFormat(key, MailTemplateFormat.TEXT);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -153,7 +153,7 @@
         MailTemplateTO mailTemplateTO = new MailTemplateTO();
         mailTemplateTO.setKey("optin");
         try {
-            mailTemplateService.create(mailTemplateTO);
+            MAIL_TEMPLATE_SERVICE.create(mailTemplateTO);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.EntityExists, e.getType());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MembershipITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MembershipITCase.java
index acb10d0..3241291 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MembershipITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MembershipITCase.java
@@ -26,16 +26,16 @@
 
 import javax.ws.rs.core.Response;
 import org.apache.syncope.client.lib.SyncopeClient;
-import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.request.AttrPatch;
-import org.apache.syncope.common.lib.request.GroupCR;
-import org.apache.syncope.common.lib.request.ResourceDR;
-import org.apache.syncope.common.lib.request.MembershipUR;
-import org.apache.syncope.common.lib.request.UserCR;
-import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.Attr;
+import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.request.AnyObjectCR;
 import org.apache.syncope.common.lib.request.AnyObjectUR;
+import org.apache.syncope.common.lib.request.AttrPatch;
+import org.apache.syncope.common.lib.request.GroupCR;
+import org.apache.syncope.common.lib.request.MembershipUR;
+import org.apache.syncope.common.lib.request.ResourceDR;
+import org.apache.syncope.common.lib.request.UserCR;
+import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.GroupTO;
@@ -48,9 +48,9 @@
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.common.lib.types.PatchOperation;
-import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.syncope.common.lib.types.ResourceDeassociationAction;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.rest.api.beans.AnyQuery;
@@ -151,7 +151,7 @@
             assertTrue(userTO.getMemberships().isEmpty());
         } finally {
             if (userTO != null) {
-                userService.delete(userTO.getKey());
+                USER_SERVICE.delete(userTO.getKey());
             }
         }
     }
@@ -169,7 +169,7 @@
         UserTO user = createUser(userCR).getEntity();
         assertNotNull(user.getKey());
 
-        userService.delete(user.getKey());
+        USER_SERVICE.delete(user.getKey());
     }
 
     @Test
@@ -206,17 +206,17 @@
         assertFalse(membership.getDerAttr("noschema").get().getValues().isEmpty());
 
         // now remove the group -> all related memberships should have been removed as well
-        groupService.delete(groupTO.getKey());
+        GROUP_SERVICE.delete(groupTO.getKey());
 
         // re-read user and verify that no memberships are available any more
-        user = userService.read(user.getKey());
+        user = USER_SERVICE.read(user.getKey());
         assertTrue(user.getMemberships().isEmpty());
     }
 
     @Test
     public void pull() {
         // 0. create ad-hoc resource, with adequate mapping
-        ResourceTO newResource = resourceService.read(RESOURCE_NAME_DBPULL);
+        ResourceTO newResource = RESOURCE_SERVICE.read(RESOURCE_NAME_DBPULL);
         newResource.setKey(getUUIDString());
 
         ItemTO item = newResource.getProvision("USER").get().getMapping().getItems().stream().
@@ -261,32 +261,32 @@
             req.setKey(user.getKey());
             req.setAction(ResourceDeassociationAction.UNLINK);
             req.getResources().add(newResource.getKey());
-            assertNotNull(parseBatchResponse(userService.deassociate(req)));
+            assertNotNull(parseBatchResponse(USER_SERVICE.deassociate(req)));
 
-            userService.delete(user.getKey());
+            USER_SERVICE.delete(user.getKey());
 
             // 4. create pull task and execute
-            newTask = taskService.read(TaskType.PULL, "7c2242f4-14af-4ab5-af31-cdae23783655", true);
+            newTask = TASK_SERVICE.read(TaskType.PULL, "7c2242f4-14af-4ab5-af31-cdae23783655", true);
             newTask.setResource(newResource.getKey());
             newTask.setDestinationRealm("/even/two");
 
-            Response response = taskService.create(TaskType.PULL, newTask);
+            Response response = TASK_SERVICE.create(TaskType.PULL, newTask);
             newTask = getObject(response.getLocation(), TaskService.class, PullTaskTO.class);
             assertNotNull(newTask);
 
             ExecTO execution = AbstractTaskITCase.execProvisioningTask(
-                    taskService, TaskType.PULL, newTask.getKey(), MAX_WAIT_SECONDS, false);
+                    TASK_SERVICE, TaskType.PULL, newTask.getKey(), MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
 
             // 5. verify that pulled user has
-            if (ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform())) {
+            if (ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform())) {
                 try {
                     Thread.sleep(2000);
                 } catch (InterruptedException ex) {
                     // ignore
                 }
             }
-            PagedResult<UserTO> users = userService.search(new AnyQuery.Builder().
+            PagedResult<UserTO> users = USER_SERVICE.search(new AnyQuery.Builder().
                     realm("/").
                     fiql(SyncopeClient.getUserSearchConditionBuilder().
                             is("username").equalTo(user.getUsername()).query()).build());
@@ -299,9 +299,9 @@
             fail(e::getMessage);
         } finally {
             if (newTask != null && !"83f7e85d-9774-43fe-adba-ccd856312994".equals(newTask.getKey())) {
-                taskService.delete(TaskType.PULL, newTask.getKey());
+                TASK_SERVICE.delete(TaskType.PULL, newTask.getKey());
             }
-            resourceService.delete(newResource.getKey());
+            RESOURCE_SERVICE.delete(newResource.getKey());
         }
     }
 
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
index 02175e1..256ea7f 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
@@ -37,21 +37,21 @@
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
+import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.ItemTO;
 import org.apache.syncope.common.lib.to.MappingTO;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.ProvisionTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
+import org.apache.syncope.common.lib.to.PullTaskTO;
+import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.to.ResourceTO;
-import org.apache.syncope.common.lib.to.PullTaskTO;
-import org.apache.syncope.common.lib.to.ExecTO;
-import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.common.lib.types.ExecStatus;
+import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.common.lib.types.MatchingRule;
 import org.apache.syncope.common.lib.types.PullMode;
 import org.apache.syncope.common.lib.types.SchemaType;
@@ -83,26 +83,26 @@
         assertNotNull(initial);
         assumeTrue(initial.stream().anyMatch(domain -> "Two".equals(domain.getKey())));
 
-        clientFactory = new SyncopeClientFactoryBean().setAddress(ADDRESS).setDomain("Two");
+        CLIENT_FACTORY = new SyncopeClientFactoryBean().setAddress(ADDRESS).setDomain("Two");
 
         String envContentType = System.getProperty(ENV_KEY_CONTENT_TYPE);
         if (StringUtils.isNotBlank(envContentType)) {
-            clientFactory.setContentType(envContentType);
+            CLIENT_FACTORY.setContentType(envContentType);
         }
-        LOG.info("Performing IT with content type {}", clientFactory.getContentType().getMediaType());
+        LOG.info("Performing IT with content type {}", CLIENT_FACTORY.getContentType().getMediaType());
 
-        adminClient = clientFactory.create(ADMIN_UNAME, "password2");
+        ADMIN_CLIENT = CLIENT_FACTORY.create(ADMIN_UNAME, "password2");
     }
 
     @Test
     public void readPlainSchemas() {
-        assertEquals(1, adminClient.getService(SchemaService.class).
+        assertEquals(1, ADMIN_CLIENT.getService(SchemaService.class).
                 search(new SchemaQuery.Builder().type(SchemaType.PLAIN).build()).size());
     }
 
     @Test
     public void readRealm() {
-        PagedResult<RealmTO> realms = adminClient.getService(RealmService.class).
+        PagedResult<RealmTO> realms = ADMIN_CLIENT.getService(RealmService.class).
                 search(new RealmQuery.Builder().keyword("*").build());
         assertEquals(1, realms.getTotalCount());
         assertEquals(1, realms.getResult().size());
@@ -111,7 +111,7 @@
 
     @Test
     public void createUser() {
-        assertNull(adminClient.getService(RealmService.class).
+        assertNull(ADMIN_CLIENT.getService(RealmService.class).
                 search(new RealmQuery.Builder().keyword("*").build()).getResult().get(0).getPasswordPolicy());
 
         UserCR userCR = new UserCR();
@@ -119,7 +119,7 @@
         userCR.setUsername(getUUIDString());
         userCR.setPassword("password");
 
-        Response response = adminClient.getService(UserService.class).create(userCR);
+        Response response = ADMIN_CLIENT.getService(UserService.class).create(userCR);
         assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatus());
 
         UserTO user = response.readEntity(new GenericType<ProvisioningResult<UserTO>>() {
@@ -130,7 +130,7 @@
     @Test
     public void createResourceAndPull() {
         // read connector
-        ConnInstanceTO conn = adminClient.getService(ConnectorService.class).
+        ConnInstanceTO conn = ADMIN_CLIENT.getService(ConnectorService.class).
                 read("b7ea96c3-c633-488b-98a0-b52ac35850f7", Locale.ENGLISH.getLanguage());
         assertNotNull(conn);
         assertEquals("LDAP", conn.getDisplayName());
@@ -178,9 +178,9 @@
             mapping.add(item);
 
             // create resource
-            Response response = adminClient.getService(ResourceService.class).create(resource);
+            Response response = ADMIN_CLIENT.getService(ResourceService.class).create(resource);
             assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatus());
-            resource = adminClient.getService(ResourceService.class).read(resource.getKey());
+            resource = ADMIN_CLIENT.getService(ResourceService.class).read(resource.getKey());
             assertNotNull(resource);
 
             // create pull task
@@ -192,15 +192,15 @@
             task.setPullMode(PullMode.FULL_RECONCILIATION);
             task.setPerformCreate(true);
 
-            response = adminClient.getService(TaskService.class).create(TaskType.PULL, task);
+            response = ADMIN_CLIENT.getService(TaskService.class).create(TaskType.PULL, task);
             assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatus());
-            task = adminClient.getService(TaskService.class).read(TaskType.PULL,
+            task = ADMIN_CLIENT.getService(TaskService.class).read(TaskType.PULL,
                     StringUtils.substringAfterLast(response.getLocation().toASCIIString(), "/"), true);
             assertNotNull(resource);
 
             // pull
             ExecTO execution = AbstractTaskITCase.execProvisioningTask(
-                    adminClient.getService(TaskService.class), TaskType.PULL, task.getKey(), MAX_WAIT_SECONDS, false);
+                    ADMIN_CLIENT.getService(TaskService.class), TaskType.PULL, task.getKey(), MAX_WAIT_SECONDS, false);
 
             // verify execution status
             String status = execution.getStatus();
@@ -208,39 +208,41 @@
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(status));
 
             // verify that pulled user is found
-            if (ElasticsearchDetector.isElasticSearchEnabled(anonymusClient.platform())) {
+            if (ElasticsearchDetector.isElasticSearchEnabled(ANONYMOUS_CLIENT.platform())) {
                 try {
                     Thread.sleep(2000);
                 } catch (InterruptedException ex) {
                     // ignore
                 }
             }
-            PagedResult<UserTO> matchingUsers = adminClient.getService(UserService.class).search(new AnyQuery.Builder().
-                    realm(SyncopeConstants.ROOT_REALM).
-                    fiql(SyncopeClient.getUserSearchConditionBuilder().is("username").equalTo("pullFromLDAP").query()).
-                    build());
+            PagedResult<UserTO> matchingUsers = ADMIN_CLIENT.getService(UserService.class).
+                    search(new AnyQuery.Builder().
+                            realm(SyncopeConstants.ROOT_REALM).
+                            fiql(SyncopeClient.getUserSearchConditionBuilder().
+                                    is("username").equalTo("pullFromLDAP").query()).
+                            build());
             assertNotNull(matchingUsers);
             assertEquals(1, matchingUsers.getResult().size());
 
             // SYNCOPE-1374
             String pullFromLDAPKey = matchingUsers.getResult().get(0).getKey();
 
-            assertEquals(0, adminClient.getService(TaskService.class).
+            assertEquals(0, ADMIN_CLIENT.getService(TaskService.class).
                     search(new TaskQuery.Builder(TaskType.PROPAGATION).
                             anyTypeKind(AnyTypeKind.USER).entityKey(pullFromLDAPKey).build()).getSize());
 
             PushTaskTO pushTask = new PushTaskTO();
             pushTask.setPerformUpdate(true);
             pushTask.setMatchingRule(MatchingRule.UPDATE);
-            adminClient.getService(ReconciliationService.class).
+            ADMIN_CLIENT.getService(ReconciliationService.class).
                     push(new ReconQuery.Builder(AnyTypeKind.USER.name(), resource.getKey()).
                             anyKey(pullFromLDAPKey).build(), pushTask);
 
-            assertEquals(1, adminClient.getService(TaskService.class).
+            assertEquals(1, ADMIN_CLIENT.getService(TaskService.class).
                     search(new TaskQuery.Builder(TaskType.PROPAGATION).
                             anyTypeKind(AnyTypeKind.USER).entityKey(pullFromLDAPKey).build()).getSize());
         } finally {
-            adminClient.getService(ResourceService.class).delete(resource.getKey());
+            ADMIN_CLIENT.getService(ResourceService.class).delete(resource.getKey());
         }
     }
 
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
index d717379..b713b9d 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationITCase.java
@@ -58,14 +58,14 @@
 
     @Test
     public void read() {
-        NotificationTO notificationTO = notificationService.read(
+        NotificationTO notificationTO = NOTIFICATION_SERVICE.read(
                 "9e2b911c-25de-4c77-bcea-b86ed9451050");
         assertNotNull(notificationTO);
     }
 
     @Test
     public void list() {
-        List<NotificationTO> notificationTOs = notificationService.list();
+        List<NotificationTO> notificationTOs = NOTIFICATION_SERVICE.list();
         assertNotNull(notificationTOs);
         assertFalse(notificationTOs.isEmpty());
         notificationTOs.forEach(Assertions::assertNotNull);
@@ -77,7 +77,7 @@
         notificationTO.setRecipientsFIQL(SyncopeClient.getUserSearchConditionBuilder().
                 inGroups("bf825fe1-7320-4a54-bd64-143b5c18ab97").query());
 
-        Response response = notificationService.create(notificationTO);
+        Response response = NOTIFICATION_SERVICE.create(notificationTO);
         NotificationTO actual = getObject(response.getLocation(), NotificationService.class, NotificationTO.class);
 
         assertNotNull(actual);
@@ -88,12 +88,12 @@
 
     @Test
     public void update() {
-        NotificationTO notificationTO = notificationService.read("9e2b911c-25de-4c77-bcea-b86ed9451050");
+        NotificationTO notificationTO = NOTIFICATION_SERVICE.read("9e2b911c-25de-4c77-bcea-b86ed9451050");
         notificationTO.setRecipientsFIQL(SyncopeClient.getUserSearchConditionBuilder().
                 inGroups("bf825fe1-7320-4a54-bd64-143b5c18ab97").query());
 
-        notificationService.update(notificationTO);
-        NotificationTO actual = notificationService.read(notificationTO.getKey());
+        NOTIFICATION_SERVICE.update(notificationTO);
+        NotificationTO actual = NOTIFICATION_SERVICE.read(notificationTO.getKey());
         assertNotNull(actual);
         assertEquals(actual, notificationTO);
     }
@@ -102,13 +102,13 @@
     public void delete() {
         NotificationTO notification = buildNotificationTO();
         notification.setSelfAsRecipient(true);
-        Response response = notificationService.create(notification);
+        Response response = NOTIFICATION_SERVICE.create(notification);
         notification = getObject(response.getLocation(), NotificationService.class, NotificationTO.class);
 
-        notificationService.delete(notification.getKey());
+        NOTIFICATION_SERVICE.delete(notification.getKey());
 
         try {
-            notificationService.read(notification.getKey());
+            NOTIFICATION_SERVICE.read(notification.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -122,7 +122,7 @@
 
         NotificationTO actual = null;
         try {
-            Response response = notificationService.create(notificationTO);
+            Response response = NOTIFICATION_SERVICE.create(notificationTO);
             actual = getObject(response.getLocation(), NotificationService.class, NotificationTO.class);
         } catch (SyncopeClientException e) {
             assertNotNull(e);
@@ -140,7 +140,7 @@
 
         NotificationTO actual = null;
         try {
-            Response response = notificationService.create(notificationTO);
+            Response response = NOTIFICATION_SERVICE.create(notificationTO);
             actual = getObject(response.getLocation(), NotificationService.class, NotificationTO.class);
         } catch (SyncopeClientException e) {
             assertNotNull(e);
@@ -160,7 +160,7 @@
 
         NotificationTO actual = null;
         try {
-            Response response = notificationService.create(notificationTO);
+            Response response = NOTIFICATION_SERVICE.create(notificationTO);
             actual = getObject(response.getLocation(), NotificationService.class, NotificationTO.class);
         } catch (SyncopeClientException e) {
             assertNotNull(e);
@@ -183,7 +183,7 @@
         notificationTO.setActive(true);
 
         try {
-            notificationService.create(notificationTO);
+            NOTIFICATION_SERVICE.create(notificationTO);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.RequiredValuesMissing, e.getType());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
index 375088c..4c3f72a 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/NotificationTaskITCase.java
@@ -28,13 +28,13 @@
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.syncope.client.lib.SyncopeClient;
-import org.apache.syncope.common.lib.request.GroupCR;
 import org.apache.syncope.common.lib.SyncopeConstants;
-import org.apache.syncope.common.lib.to.NotificationTaskTO;
+import org.apache.syncope.common.lib.request.GroupCR;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.ImplementationTO;
 import org.apache.syncope.common.lib.to.NotificationTO;
+import org.apache.syncope.common.lib.to.NotificationTaskTO;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.IdRepoImplementationType;
@@ -60,12 +60,12 @@
         assertNotNull(taskTO);
         assertNotNull(taskTO.getNotification());
 
-        execNotificationTask(taskService, taskTO.getKey(), MAX_WAIT_SECONDS);
+        execNotificationTask(TASK_SERVICE, taskTO.getKey(), MAX_WAIT_SECONDS);
 
         verifyMail(sender, subject, created.getRight(), MAX_WAIT_SECONDS);
 
         // verify message body
-        taskTO = taskService.read(TaskType.NOTIFICATION, taskTO.getKey(), true);
+        taskTO = TASK_SERVICE.read(TaskType.NOTIFICATION, taskTO.getKey(), true);
         assertNotNull(taskTO);
         assertTrue(taskTO.isExecuted());
         assertNotNull(taskTO.getTextBody());
@@ -82,7 +82,7 @@
         NotificationTaskTO taskTO = findNotificationTask(created.getLeft(), MAX_WAIT_SECONDS);
         assertNotNull(taskTO);
 
-        execNotificationTask(taskService, taskTO.getKey(), MAX_WAIT_SECONDS);
+        execNotificationTask(TASK_SERVICE, taskTO.getKey(), MAX_WAIT_SECONDS);
 
         verifyMail(sender, subject, created.getRight(), MAX_WAIT_SECONDS);
     }
@@ -109,11 +109,10 @@
             int preExecs = taskTO.getExecutions().size();
 
             // 4. verify notification could not be delivered
-            execTask(
-                    taskService, TaskType.NOTIFICATION, taskTO.getKey(), NotificationJob.Status.NOT_SENT.name(), 5,
+            execTask(TASK_SERVICE, TaskType.NOTIFICATION, taskTO.getKey(), NotificationJob.Status.NOT_SENT.name(), 5,
                     false);
 
-            taskTO = taskService.read(TaskType.NOTIFICATION, taskTO.getKey(), true);
+            taskTO = TASK_SERVICE.read(TaskType.NOTIFICATION, taskTO.getKey(), true);
             assertNotNull(taskTO);
             assertFalse(taskTO.isExecuted());
             assertTrue(preExecs <= taskTO.getExecutions().size());
@@ -138,13 +137,13 @@
         assertTrue(taskTO.getExecutions().isEmpty());
 
         // generate an execution in order to verify the deletion of a notification task with one or more executions
-        execNotificationTask(taskService, taskTO.getKey(), MAX_WAIT_SECONDS);
+        execNotificationTask(TASK_SERVICE, taskTO.getKey(), MAX_WAIT_SECONDS);
 
-        taskTO = taskService.read(TaskType.NOTIFICATION, taskTO.getKey(), true);
+        taskTO = TASK_SERVICE.read(TaskType.NOTIFICATION, taskTO.getKey(), true);
         assertTrue(taskTO.isExecuted());
         assertFalse(taskTO.getExecutions().isEmpty());
 
-        taskService.delete(TaskType.NOTIFICATION, taskTO.getKey());
+        TASK_SERVICE.delete(TaskType.NOTIFICATION, taskTO.getKey());
     }
 
     @Test
@@ -161,16 +160,16 @@
 
         try {
             // 3. execute the generated NotificationTask
-            execNotificationTask(taskService, taskTO.getKey(), MAX_WAIT_SECONDS);
+            execNotificationTask(TASK_SERVICE, taskTO.getKey(), MAX_WAIT_SECONDS);
 
             // 4. verify
-            taskTO = taskService.read(TaskType.NOTIFICATION, taskTO.getKey(), true);
+            taskTO = TASK_SERVICE.read(TaskType.NOTIFICATION, taskTO.getKey(), true);
             assertNotNull(taskTO);
             assertTrue(taskTO.isExecuted());
             assertFalse(taskTO.getExecutions().isEmpty());
         } finally {
             // Remove execution to make test re-runnable
-            taskTO.getExecutions().forEach(e -> taskService.deleteExecution(e.getKey()));
+            taskTO.getExecutions().forEach(e -> TASK_SERVICE.deleteExecution(e.getKey()));
         }
     }
 
@@ -184,7 +183,7 @@
         assertNotNull(taskTO.getNotification());
         assertTrue(taskTO.getExecutions().isEmpty());
 
-        taskService.execute(new ExecSpecs.Builder().key(taskTO.getKey()).build());
+        TASK_SERVICE.execute(new ExecSpecs.Builder().key(taskTO.getKey()).build());
 
         try {
             Thread.sleep(5);
@@ -194,7 +193,7 @@
         verifyMail(sender, subject, created.getRight(), MAX_WAIT_SECONDS);
 
         // verify that last exec status was updated
-        taskTO = taskService.read(TaskType.NOTIFICATION, taskTO.getKey(), true);
+        taskTO = TASK_SERVICE.read(TaskType.NOTIFICATION, taskTO.getKey(), true);
         assertNotNull(taskTO);
         assertTrue(taskTO.isExecuted());
         assertTrue(taskTO.getExecutions().isEmpty());
@@ -212,12 +211,12 @@
         assertNotNull(taskTO.getNotification());
         assertTrue(taskTO.getExecutions().isEmpty());
 
-        execNotificationTask(taskService, taskTO.getKey(), MAX_WAIT_SECONDS);
+        execNotificationTask(TASK_SERVICE, taskTO.getKey(), MAX_WAIT_SECONDS);
 
         verifyMail(sender, subject, created.getRight(), MAX_WAIT_SECONDS);
 
         // verify task
-        taskTO = taskService.read(TaskType.NOTIFICATION, taskTO.getKey(), true);
+        taskTO = TASK_SERVICE.read(TaskType.NOTIFICATION, taskTO.getKey(), true);
         assertTrue(taskTO.isExecuted());
         assertNotNull(taskTO);
         assertTrue(taskTO.getRecipients().contains("syncope445@syncope.apache.org"));
@@ -231,8 +230,8 @@
         recipientsProvider.setEngine(ImplementationEngine.JAVA);
         recipientsProvider.setType(IdRepoImplementationType.RECIPIENTS_PROVIDER);
         recipientsProvider.setBody(TestNotificationRecipientsProvider.class.getName());
-        Response response = implementationService.create(recipientsProvider);
-        recipientsProvider = implementationService.read(
+        Response response = IMPLEMENTATION_SERVICE.create(recipientsProvider);
+        recipientsProvider = IMPLEMENTATION_SERVICE.read(
                 recipientsProvider.getType(), response.getHeaderString(RESTHeaders.RESOURCE_KEY));
         assertNotNull(recipientsProvider);
 
@@ -258,7 +257,7 @@
         notification.setTemplate("optin");
         notification.setActive(true);
 
-        response = notificationService.create(notification);
+        response = NOTIFICATION_SERVICE.create(notification);
         notification = getObject(response.getLocation(), NotificationService.class, NotificationTO.class);
         assertNotNull(notification);
         assertEquals(recipientsProvider.getKey(), notification.getRecipientsProvider());
@@ -277,7 +276,7 @@
         assertTrue(taskTO.getRecipients().containsAll(
                 new TestNotificationRecipientsProvider().provideRecipients(null)));
 
-        execNotificationTask(taskService, taskTO.getKey(), MAX_WAIT_SECONDS);
+        execNotificationTask(TASK_SERVICE, taskTO.getKey(), MAX_WAIT_SECONDS);
 
         verifyMail(sender, subject, "notificationtest@syncope.apache.org", MAX_WAIT_SECONDS);
     }
@@ -290,8 +289,8 @@
                 createNotificationTask(false, true, TraceLevel.NONE, sender, subject, "syncope445@syncope.apache.org");
 
         // verify that no task was created for disabled notification
-        PagedResult<NotificationTaskTO> tasks =
-                taskService.search(new TaskQuery.Builder(TaskType.NOTIFICATION).notification(created.getLeft()).build());
+        PagedResult<NotificationTaskTO> tasks = TASK_SERVICE.search(new TaskQuery.Builder(TaskType.NOTIFICATION).
+                notification(created.getLeft()).build());
         assertEquals(0, tasks.getSize());
     }
 }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/OIDCJWKSITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/OIDCJWKSITCase.java
index 9f800df..6ba3177 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/OIDCJWKSITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/OIDCJWKSITCase.java
@@ -37,32 +37,32 @@
 
 public class OIDCJWKSITCase extends AbstractITCase {
 
-    private static OIDCJWKSService waOIDCJWKSService;
+    private static OIDCJWKSService WA_OIDC_JWKS_SERVICE;
 
     @BeforeAll
     public static void setup() {
-        assumeTrue(clientFactory.getContentType() == SyncopeClientFactoryBean.ContentType.JSON);
+        assumeTrue(CLIENT_FACTORY.getContentType() == SyncopeClientFactoryBean.ContentType.JSON);
 
-        SyncopeClient anonymous = clientFactory.create(
+        SyncopeClient anonymous = CLIENT_FACTORY.create(
                 new AnonymousAuthenticationHandler(ANONYMOUS_UNAME, ANONYMOUS_KEY));
-        waOIDCJWKSService = anonymous.getService(OIDCJWKSService.class);
+        WA_OIDC_JWKS_SERVICE = anonymous.getService(OIDCJWKSService.class);
     }
 
     @Test
     public void deleteGetSet() {
         try {
-            oidcJWKSService.delete();
+            OIDC_JWKS_SERVICE.delete();
 
-            waOIDCJWKSService.get();
+            WA_OIDC_JWKS_SERVICE.get();
             fail("Should not locate an OIDC JWKS");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
 
-        Response response = waOIDCJWKSService.generate(2048, JWSAlgorithm.RS256);
+        Response response = WA_OIDC_JWKS_SERVICE.generate(2048, JWSAlgorithm.RS256);
         assertEquals(HttpStatus.CREATED.value(), response.getStatus());
         try {
-            waOIDCJWKSService.generate(2048, JWSAlgorithm.RS512);
+            WA_OIDC_JWKS_SERVICE.generate(2048, JWSAlgorithm.RS512);
             fail("Should not recreate an OIDC JWKS");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.EntityExists, e.getType());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
index 0f643cc..0d1aeb6 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
@@ -30,9 +30,11 @@
 import java.util.List;
 import java.util.Locale;
 import javax.ws.rs.core.Response;
+import org.apache.cxf.helpers.IOUtils;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.request.AttrPatch;
 import org.apache.syncope.common.lib.request.MembershipUR;
+import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.AnyTypeClassTO;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
@@ -47,8 +49,6 @@
 import org.apache.syncope.fit.AbstractITCase;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
-import org.apache.cxf.helpers.IOUtils;
-import org.apache.syncope.common.lib.request.UserCR;
 
 public class PlainSchemaITCase extends AbstractITCase {
 
@@ -195,7 +195,7 @@
                     build());
 
             updateUser(userUR);
-            assertNotNull(userService.read(userTO.getKey()).getPlainAttr("BinaryPDF"));
+            assertNotNull(USER_SERVICE.read(userTO.getKey()).getPlainAttr("BinaryPDF"));
 
             userUR = new UserUR();
             userUR.setKey(userTO.getKey());
@@ -223,7 +223,7 @@
                     build());
 
             updateUser(userUR);
-            assertNotNull(userService.read(userTO.getKey()).getPlainAttr("BinaryJSON"));
+            assertNotNull(USER_SERVICE.read(userTO.getKey()).getPlainAttr("BinaryJSON"));
 
             userUR = new UserUR();
             userUR.setKey(userTO.getKey());
@@ -235,13 +235,13 @@
                     build());
 
             updateUser(userUR);
-            assertNotNull(userService.read(userTO.getKey()).getPlainAttr("BinaryJSON2"));
+            assertNotNull(USER_SERVICE.read(userTO.getKey()).getPlainAttr("BinaryJSON2"));
         } finally {
-            userService.delete(userTO.getKey());
+            USER_SERVICE.delete(userTO.getKey());
 
-            schemaService.delete(SchemaType.PLAIN, schemaTOpdf.getKey());
-            schemaService.delete(SchemaType.PLAIN, schemaTOjson.getKey());
-            schemaService.delete(SchemaType.PLAIN, schemaTOjson2.getKey());
+            SCHEMA_SERVICE.delete(SchemaType.PLAIN, schemaTOpdf.getKey());
+            SCHEMA_SERVICE.delete(SchemaType.PLAIN, schemaTOjson.getKey());
+            SCHEMA_SERVICE.delete(SchemaType.PLAIN, schemaTOjson2.getKey());
         }
     }
 
@@ -251,10 +251,10 @@
         schemaTO.setMandatoryCondition("false");
         createSchema(SchemaType.PLAIN, schemaTO);
 
-        schemaService.delete(SchemaType.PLAIN, schemaTO.getKey());
+        SCHEMA_SERVICE.delete(SchemaType.PLAIN, schemaTO.getKey());
         PlainSchemaTO firstname = null;
         try {
-            firstname = schemaService.read(SchemaType.PLAIN, schemaTO.getKey());
+            firstname = SCHEMA_SERVICE.read(SchemaType.PLAIN, schemaTO.getKey());
         } catch (SyncopeClientException e) {
             assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
         }
@@ -263,18 +263,18 @@
 
     @Test
     public void search() {
-        List<PlainSchemaTO> schemas = schemaService.search(new SchemaQuery.Builder().type(SchemaType.PLAIN).build());
+        List<PlainSchemaTO> schemas = SCHEMA_SERVICE.search(new SchemaQuery.Builder().type(SchemaType.PLAIN).build());
         assertFalse(schemas.isEmpty());
         schemas.forEach(Assertions::assertNotNull);
 
-        schemas = schemaService.search(new SchemaQuery.Builder().type(SchemaType.PLAIN).keyword("fullna*").build());
+        schemas = SCHEMA_SERVICE.search(new SchemaQuery.Builder().type(SchemaType.PLAIN).keyword("fullna*").build());
         assertFalse(schemas.isEmpty());
         schemas.forEach(Assertions::assertNotNull);
     }
 
     @Test
     public void searchByAnyTypeClass() {
-        List<PlainSchemaTO> userSchemas = schemaService.search(
+        List<PlainSchemaTO> userSchemas = SCHEMA_SERVICE.search(
                 new SchemaQuery.Builder().type(SchemaType.PLAIN).anyTypeClass("minimal user").build());
 
         assertTrue(userSchemas.stream().anyMatch(object -> "fullname".equals(object.getKey())));
@@ -288,16 +288,16 @@
 
     @Test
     public void update() {
-        PlainSchemaTO schemaTO = schemaService.read(SchemaType.PLAIN, "icon");
+        PlainSchemaTO schemaTO = SCHEMA_SERVICE.read(SchemaType.PLAIN, "icon");
         assertNotNull(schemaTO);
 
-        schemaService.update(SchemaType.PLAIN, schemaTO);
-        PlainSchemaTO updatedTO = schemaService.read(SchemaType.PLAIN, "icon");
+        SCHEMA_SERVICE.update(SchemaType.PLAIN, schemaTO);
+        PlainSchemaTO updatedTO = SCHEMA_SERVICE.read(SchemaType.PLAIN, "icon");
         assertEquals(schemaTO, updatedTO);
 
         updatedTO.setType(AttrSchemaType.Date);
         try {
-            schemaService.update(SchemaType.PLAIN, updatedTO);
+            SCHEMA_SERVICE.update(SchemaType.PLAIN, updatedTO);
             fail("This should not be reacheable");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.InvalidPlainSchema, e.getType());
@@ -316,7 +316,7 @@
         AnyTypeClassTO typeClass = new AnyTypeClassTO();
         typeClass.setKey("issue258");
         typeClass.getPlainSchemas().add(schemaTO.getKey());
-        anyTypeClassService.create(typeClass);
+        ANY_TYPE_CLASS_SERVICE.create(typeClass);
 
         UserCR userCR = UserITCase.getUniqueSample("issue258@syncope.apache.org");
         userCR.getAuxClasses().add(typeClass.getKey());
@@ -327,7 +327,7 @@
 
         schemaTO.setType(AttrSchemaType.Long);
         try {
-            schemaService.update(SchemaType.PLAIN, schemaTO);
+            SCHEMA_SERVICE.update(SchemaType.PLAIN, schemaTO);
             fail("This should not be reacheable");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.InvalidPlainSchema, e.getType());
@@ -345,7 +345,7 @@
         AnyTypeClassTO typeClass = new AnyTypeClassTO();
         typeClass.setKey("issue259");
         typeClass.getPlainSchemas().add(schemaTO.getKey());
-        anyTypeClassService.create(typeClass);
+        ANY_TYPE_CLASS_SERVICE.create(typeClass);
 
         UserCR userCR = UserITCase.getUniqueSample("issue259@syncope.apache.org");
         userCR.getAuxClasses().add(typeClass.getKey());
@@ -371,7 +371,7 @@
         AnyTypeClassTO typeClass = new AnyTypeClassTO();
         typeClass.setKey("issue260");
         typeClass.getPlainSchemas().add(schemaTO.getKey());
-        anyTypeClassService.create(typeClass);
+        ANY_TYPE_CLASS_SERVICE.create(typeClass);
 
         UserCR userCR = UserITCase.getUniqueSample("issue260@syncope.apache.org");
         userCR.getAuxClasses().add(typeClass.getKey());
@@ -381,7 +381,7 @@
 
         schemaTO.setUniqueConstraint(false);
         try {
-            schemaService.update(SchemaType.PLAIN, schemaTO);
+            SCHEMA_SERVICE.update(SchemaType.PLAIN, schemaTO);
             fail("This should not be reacheable");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.InvalidPlainSchema, e.getType());
@@ -390,7 +390,7 @@
 
     @Test
     public void issueSYNCOPE323() {
-        PlainSchemaTO actual = schemaService.read(SchemaType.PLAIN, "icon");
+        PlainSchemaTO actual = SCHEMA_SERVICE.read(SchemaType.PLAIN, "icon");
         assertNotNull(actual);
 
         try {
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PolicyITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PolicyITCase.java
index 7f250a1..a16e4e1 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PolicyITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PolicyITCase.java
@@ -20,26 +20,36 @@
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
 import static org.junit.jupiter.api.Assertions.fail;
 
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.Set;
+import javax.ws.rs.core.Response;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.SerializationUtils;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.policy.DefaultAccessPolicyConf;
-import org.apache.syncope.common.lib.policy.DefaultAttrReleasePolicyConf;
+import org.apache.syncope.common.lib.policy.AccessPolicyTO;
 import org.apache.syncope.common.lib.policy.AccountPolicyTO;
+import org.apache.syncope.common.lib.policy.AttrReleasePolicyTO;
+import org.apache.syncope.common.lib.policy.AuthPolicyTO;
+import org.apache.syncope.common.lib.policy.DefaultAccessPolicyConf;
 import org.apache.syncope.common.lib.policy.DefaultAccountRuleConf;
+import org.apache.syncope.common.lib.policy.DefaultAttrReleasePolicyConf;
+import org.apache.syncope.common.lib.policy.DefaultAuthPolicyConf;
 import org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf;
 import org.apache.syncope.common.lib.policy.PasswordPolicyTO;
+import org.apache.syncope.common.lib.policy.PropagationPolicyTO;
 import org.apache.syncope.common.lib.policy.PullPolicyTO;
 import org.apache.syncope.common.lib.policy.PushPolicyTO;
-import org.apache.syncope.common.lib.policy.AccessPolicyTO;
-import org.apache.syncope.common.lib.policy.AttrReleasePolicyTO;
 import org.apache.syncope.common.lib.to.ImplementationTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.BackOffStrategy;
 import org.apache.syncope.common.lib.types.IdMImplementationType;
 import org.apache.syncope.common.lib.types.IdRepoImplementationType;
 import org.apache.syncope.common.lib.types.ImplementationEngine;
@@ -50,23 +60,13 @@
 import org.apache.syncope.fit.core.reference.DummyPullCorrelationRule;
 import org.apache.syncope.fit.core.reference.DummyPushCorrelationRule;
 import org.junit.jupiter.api.Test;
-import javax.ws.rs.core.Response;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.List;
-import java.util.Set;
-import org.apache.syncope.common.lib.Attr;
-import org.apache.syncope.common.lib.policy.AuthPolicyTO;
-import org.apache.syncope.common.lib.policy.DefaultAuthPolicyConf;
-import org.apache.syncope.common.lib.policy.PropagationPolicyTO;
-import org.apache.syncope.common.lib.types.BackOffStrategy;
 
 public class PolicyITCase extends AbstractITCase {
 
     private PullPolicyTO buildPullPolicyTO() throws IOException {
         ImplementationTO corrRule = null;
         try {
-            corrRule = implementationService.read(IdMImplementationType.PULL_CORRELATION_RULE, "TestPullRule");
+            corrRule = IMPLEMENTATION_SERVICE.read(IdMImplementationType.PULL_CORRELATION_RULE, "TestPullRule");
         } catch (SyncopeClientException e) {
             if (e.getType().getResponseStatus() == Response.Status.NOT_FOUND) {
                 corrRule = new ImplementationTO();
@@ -75,8 +75,8 @@
                 corrRule.setType(IdMImplementationType.PULL_CORRELATION_RULE);
                 corrRule.setBody(IOUtils.toString(
                         getClass().getResourceAsStream("/TestPullRule.groovy"), StandardCharsets.UTF_8));
-                Response response = implementationService.create(corrRule);
-                corrRule = implementationService.read(
+                Response response = IMPLEMENTATION_SERVICE.create(corrRule);
+                corrRule = IMPLEMENTATION_SERVICE.read(
                         corrRule.getType(), response.getHeaderString(RESTHeaders.RESOURCE_KEY));
                 assertNotNull(corrRule);
             }
@@ -93,7 +93,7 @@
     private PushPolicyTO buildPushPolicyTO() throws IOException {
         ImplementationTO corrRule = null;
         try {
-            corrRule = implementationService.read(IdMImplementationType.PUSH_CORRELATION_RULE, "TestPushRule");
+            corrRule = IMPLEMENTATION_SERVICE.read(IdMImplementationType.PUSH_CORRELATION_RULE, "TestPushRule");
         } catch (SyncopeClientException e) {
             if (e.getType().getResponseStatus() == Response.Status.NOT_FOUND) {
                 corrRule = new ImplementationTO();
@@ -102,8 +102,8 @@
                 corrRule.setType(IdMImplementationType.PUSH_CORRELATION_RULE);
                 corrRule.setBody(IOUtils.toString(
                         getClass().getResourceAsStream("/TestPushRule.groovy"), StandardCharsets.UTF_8));
-                Response response = implementationService.create(corrRule);
-                corrRule = implementationService.read(
+                Response response = IMPLEMENTATION_SERVICE.create(corrRule);
+                corrRule = IMPLEMENTATION_SERVICE.read(
                         corrRule.getType(), response.getHeaderString(RESTHeaders.RESOURCE_KEY));
                 assertNotNull(corrRule);
             }
@@ -119,18 +119,18 @@
 
     @Test
     public void listByType() {
-        List<PropagationPolicyTO> propagationPolicies = policyService.list(PolicyType.PROPAGATION);
+        List<PropagationPolicyTO> propagationPolicies = POLICY_SERVICE.list(PolicyType.PROPAGATION);
         assertNotNull(propagationPolicies);
         assertFalse(propagationPolicies.isEmpty());
 
-        List<PullPolicyTO> pullPolicies = policyService.list(PolicyType.PULL);
+        List<PullPolicyTO> pullPolicies = POLICY_SERVICE.list(PolicyType.PULL);
         assertNotNull(pullPolicies);
         assertFalse(pullPolicies.isEmpty());
     }
 
     @Test
     public void getAccountPolicy() {
-        AccountPolicyTO policyTO = policyService.read(PolicyType.ACCOUNT, "06e2ed52-6966-44aa-a177-a0ca7434201f");
+        AccountPolicyTO policyTO = POLICY_SERVICE.read(PolicyType.ACCOUNT, "06e2ed52-6966-44aa-a177-a0ca7434201f");
 
         assertNotNull(policyTO);
         assertTrue(policyTO.getUsedByResources().isEmpty());
@@ -139,7 +139,7 @@
 
     @Test
     public void getPasswordPolicy() {
-        PasswordPolicyTO policyTO = policyService.read(PolicyType.PASSWORD, "986d1236-3ac5-4a19-810c-5ab21d79cba1");
+        PasswordPolicyTO policyTO = POLICY_SERVICE.read(PolicyType.PASSWORD, "986d1236-3ac5-4a19-810c-5ab21d79cba1");
 
         assertNotNull(policyTO);
         assertTrue(policyTO.getUsedByResources().contains(RESOURCE_NAME_NOPROPAGATION));
@@ -149,7 +149,7 @@
     @Test
     public void getPropagationPolicy() {
         PropagationPolicyTO policyTO =
-                policyService.read(PolicyType.PROPAGATION, "89d322db-9878-420c-b49c-67be13df9a12");
+                POLICY_SERVICE.read(PolicyType.PROPAGATION, "89d322db-9878-420c-b49c-67be13df9a12");
 
         assertNotNull(policyTO);
         assertTrue(policyTO.getUsedByResources().contains(RESOURCE_NAME_DBSCRIPTED));
@@ -158,7 +158,7 @@
 
     @Test
     public void getPullPolicy() {
-        PullPolicyTO policyTO = policyService.read(PolicyType.PULL, "66691e96-285f-4464-bc19-e68384ea4c85");
+        PullPolicyTO policyTO = POLICY_SERVICE.read(PolicyType.PULL, "66691e96-285f-4464-bc19-e68384ea4c85");
 
         assertNotNull(policyTO);
         assertTrue(policyTO.getUsedByRealms().isEmpty());
@@ -166,7 +166,7 @@
 
     @Test
     public void getAuthPolicy() {
-        AuthPolicyTO policyTO = policyService.read(PolicyType.AUTH, "659b9906-4b6e-4bc0-aca0-6809dff346d4");
+        AuthPolicyTO policyTO = POLICY_SERVICE.read(PolicyType.AUTH, "659b9906-4b6e-4bc0-aca0-6809dff346d4");
 
         assertNotNull(policyTO);
         assertTrue(policyTO.getUsedByRealms().isEmpty());
@@ -174,7 +174,7 @@
 
     @Test
     public void getAccessPolicy() {
-        AccessPolicyTO policyTO = policyService.read(PolicyType.ACCESS, "419935c7-deb3-40b3-8a9a-683037e523a2");
+        AccessPolicyTO policyTO = POLICY_SERVICE.read(PolicyType.ACCESS, "419935c7-deb3-40b3-8a9a-683037e523a2");
 
         assertNotNull(policyTO);
         assertTrue(policyTO.getUsedByRealms().isEmpty());
@@ -183,7 +183,7 @@
     @Test
     public void getAttributeReleasePolicy() {
         AttrReleasePolicyTO policyTO =
-                policyService.read(PolicyType.ATTR_RELEASE, "319935c7-deb3-40b3-8a9a-683037e523a2");
+                POLICY_SERVICE.read(PolicyType.ATTR_RELEASE, "319935c7-deb3-40b3-8a9a-683037e523a2");
 
         assertNotNull(policyTO);
         assertTrue(policyTO.getUsedByRealms().isEmpty());
@@ -218,7 +218,8 @@
 
     @Test
     public void updatePasswordPolicy() {
-        PasswordPolicyTO globalPolicy = policyService.read(PolicyType.PASSWORD, "ce93fcda-dc3a-4369-a7b0-a6108c261c85");
+        PasswordPolicyTO globalPolicy = POLICY_SERVICE.read(
+                PolicyType.PASSWORD, "ce93fcda-dc3a-4369-a7b0-a6108c261c85");
 
         PasswordPolicyTO policy = SerializationUtils.clone(globalPolicy);
         policy.setName("A simple password policy");
@@ -228,7 +229,7 @@
         assertNotNull(policy);
         assertNotEquals("ce93fcda-dc3a-4369-a7b0-a6108c261c85", policy.getKey());
 
-        ImplementationTO rule = implementationService.read(
+        ImplementationTO rule = IMPLEMENTATION_SERVICE.read(
                 IdRepoImplementationType.PASSWORD_RULE, policy.getRules().get(0));
         assertNotNull(rule);
 
@@ -237,8 +238,8 @@
         rule.setBody(POJOHelper.serialize(ruleConf));
 
         // update new password policy
-        policyService.update(PolicyType.PASSWORD, policy);
-        policy = policyService.read(PolicyType.PASSWORD, policy.getKey());
+        POLICY_SERVICE.update(PolicyType.PASSWORD, policy);
+        policy = POLICY_SERVICE.read(PolicyType.PASSWORD, policy.getKey());
         assertNotNull(policy);
 
         ruleConf = POJOHelper.deserialize(rule.getBody(), DefaultPasswordRuleConf.class);
@@ -256,8 +257,8 @@
         authPolicyConf.getAuthModules().add("LdapAuthentication");
 
         // update new authentication policy
-        policyService.update(PolicyType.AUTH, newAuthPolicyTO);
-        newAuthPolicyTO = policyService.read(PolicyType.AUTH, newAuthPolicyTO.getKey());
+        POLICY_SERVICE.update(PolicyType.AUTH, newAuthPolicyTO);
+        newAuthPolicyTO = POLICY_SERVICE.read(PolicyType.AUTH, newAuthPolicyTO.getKey());
         assertNotNull(newAuthPolicyTO);
 
         authPolicyConf = (DefaultAuthPolicyConf) newAuthPolicyTO.getConf();
@@ -277,8 +278,8 @@
         accessPolicyConf.getRequiredAttrs().add(new Attr.Builder("cn").values("admin", "Admin").build());
 
         // update new authentication policy
-        policyService.update(PolicyType.ACCESS, newAccessPolicyTO);
-        newAccessPolicyTO = policyService.read(PolicyType.ACCESS, newAccessPolicyTO.getKey());
+        POLICY_SERVICE.update(PolicyType.ACCESS, newAccessPolicyTO);
+        newAccessPolicyTO = POLICY_SERVICE.read(PolicyType.ACCESS, newAccessPolicyTO.getKey());
         assertNotNull(newAccessPolicyTO);
 
         accessPolicyConf = (DefaultAccessPolicyConf) newAccessPolicyTO.getConf();
@@ -296,8 +297,8 @@
         policyConf.getAllowedAttrs().add("postalCode");
 
         // update new policy
-        policyService.update(PolicyType.ATTR_RELEASE, newPolicyTO);
-        newPolicyTO = policyService.read(PolicyType.ATTR_RELEASE, newPolicyTO.getKey());
+        POLICY_SERVICE.update(PolicyType.ATTR_RELEASE, newPolicyTO);
+        newPolicyTO = POLICY_SERVICE.read(PolicyType.ATTR_RELEASE, newPolicyTO.getKey());
         assertNotNull(newPolicyTO);
 
         policyConf = (DefaultAttrReleasePolicyConf) newPolicyTO.getConf();
@@ -315,10 +316,10 @@
         PullPolicyTO policyTO = createPolicy(PolicyType.PULL, policy);
         assertNotNull(policyTO);
 
-        policyService.delete(PolicyType.PULL, policyTO.getKey());
+        POLICY_SERVICE.delete(PolicyType.PULL, policyTO.getKey());
 
         try {
-            policyService.read(PolicyType.PULL, policyTO.getKey());
+            POLICY_SERVICE.read(PolicyType.PULL, policyTO.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertNotNull(e);
@@ -329,10 +330,10 @@
         AuthPolicyTO authPolicyTO = createPolicy(PolicyType.AUTH, authPolicy);
         assertNotNull(authPolicyTO);
 
-        policyService.delete(PolicyType.AUTH, authPolicyTO.getKey());
+        POLICY_SERVICE.delete(PolicyType.AUTH, authPolicyTO.getKey());
 
         try {
-            policyService.read(PolicyType.AUTH, authPolicyTO.getKey());
+            POLICY_SERVICE.read(PolicyType.AUTH, authPolicyTO.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertNotNull(e);
@@ -341,10 +342,10 @@
         AccessPolicyTO accessPolicyTO = createPolicy(PolicyType.ACCESS, buildAccessPolicyTO());
         assertNotNull(accessPolicyTO);
 
-        policyService.delete(PolicyType.ACCESS, accessPolicyTO.getKey());
+        POLICY_SERVICE.delete(PolicyType.ACCESS, accessPolicyTO.getKey());
 
         try {
-            policyService.read(PolicyType.ACCESS, accessPolicyTO.getKey());
+            POLICY_SERVICE.read(PolicyType.ACCESS, accessPolicyTO.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertNotNull(e);
@@ -353,7 +354,7 @@
 
     @Test
     public void getPullCorrelationRuleJavaClasses() {
-        Set<String> classes = adminClient.platform().
+        Set<String> classes = ADMIN_CLIENT.platform().
                 getJavaImplInfo(IdMImplementationType.PULL_CORRELATION_RULE).get().getClasses();
         assertEquals(1, classes.size());
         assertEquals(DummyPullCorrelationRule.class.getName(), classes.iterator().next());
@@ -361,7 +362,7 @@
 
     @Test
     public void getPushCorrelationRuleJavaClasses() {
-        Set<String> classes = adminClient.platform().
+        Set<String> classes = ADMIN_CLIENT.platform().
                 getJavaImplInfo(IdMImplementationType.PUSH_CORRELATION_RULE).get().getClasses();
         assertEquals(1, classes.size());
         assertEquals(DummyPushCorrelationRule.class.getName(), classes.iterator().next());
@@ -381,7 +382,7 @@
         rule.setEngine(ImplementationEngine.JAVA);
         rule.setType(IdRepoImplementationType.ACCOUNT_RULE);
         rule.setBody(POJOHelper.serialize(ruleConf));
-        Response response = implementationService.create(rule);
+        Response response = IMPLEMENTATION_SERVICE.create(rule);
         rule.setKey(response.getHeaderString(RESTHeaders.RESOURCE_KEY));
 
         policy.getRules().add(rule.getKey());
@@ -405,7 +406,7 @@
         rule.setEngine(ImplementationEngine.JAVA);
         rule.setType(IdRepoImplementationType.ACCOUNT_RULE);
         rule.setBody(POJOHelper.serialize(ruleConf));
-        Response response = implementationService.create(rule);
+        Response response = IMPLEMENTATION_SERVICE.create(rule);
         rule.setKey(response.getHeaderString(RESTHeaders.RESOURCE_KEY));
 
         policy.getRules().add(rule.getKey());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PropagationTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PropagationTaskITCase.java
index b68c5b4..88af5f6 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PropagationTaskITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PropagationTaskITCase.java
@@ -37,49 +37,49 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Optional;
-import javax.ws.rs.core.Response;
-import org.apache.syncope.client.lib.batch.BatchRequest;
-import org.apache.syncope.common.lib.request.AnyObjectCR;
-import org.apache.syncope.common.lib.request.AttrPatch;
-import org.apache.syncope.common.lib.request.UserCR;
-import org.apache.syncope.common.lib.request.UserUR;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import javax.ws.rs.core.GenericType;
+import javax.ws.rs.core.Response;
 import javax.xml.ws.WebServiceException;
 import org.apache.commons.lang3.SerializationUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.client.lib.batch.BatchRequest;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
-import org.apache.syncope.common.lib.to.TaskTO;
-import org.apache.syncope.common.lib.to.AnyObjectTO;
-import org.apache.syncope.common.lib.Attr;
+import org.apache.syncope.common.lib.request.AnyObjectCR;
+import org.apache.syncope.common.lib.request.AttrPatch;
 import org.apache.syncope.common.lib.request.GroupCR;
 import org.apache.syncope.common.lib.request.GroupUR;
 import org.apache.syncope.common.lib.request.MembershipUR;
 import org.apache.syncope.common.lib.request.ResourceDR;
+import org.apache.syncope.common.lib.request.UserCR;
+import org.apache.syncope.common.lib.request.UserUR;
+import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.ConnObjectTO;
-import org.apache.syncope.common.lib.to.PagedResult;
-import org.apache.syncope.common.lib.to.PropagationTaskTO;
 import org.apache.syncope.common.lib.to.ExecTO;
-import org.apache.syncope.common.lib.to.ImplementationTO;
 import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.lib.to.ImplementationTO;
 import org.apache.syncope.common.lib.to.ItemTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
+import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
+import org.apache.syncope.common.lib.to.PropagationTaskTO;
 import org.apache.syncope.common.lib.to.ProvisionTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.to.RelationshipTO;
 import org.apache.syncope.common.lib.to.ResourceTO;
+import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
-import org.apache.syncope.common.lib.types.ImplementationEngine;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
-import org.apache.syncope.common.lib.types.IdRepoImplementationType;
 import org.apache.syncope.common.lib.types.ExecStatus;
+import org.apache.syncope.common.lib.types.IdRepoImplementationType;
+import org.apache.syncope.common.lib.types.ImplementationEngine;
 import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.common.lib.types.PatchOperation;
 import org.apache.syncope.common.lib.types.ResourceDeassociationAction;
@@ -87,8 +87,8 @@
 import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.rest.api.RESTHeaders;
-import org.apache.syncope.common.rest.api.beans.ExecSpecs;
 import org.apache.syncope.common.rest.api.beans.ExecListQuery;
+import org.apache.syncope.common.rest.api.beans.ExecSpecs;
 import org.apache.syncope.common.rest.api.beans.TaskQuery;
 import org.apache.syncope.common.rest.api.service.TaskService;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
@@ -97,8 +97,8 @@
 import org.identityconnectors.framework.common.objects.Attribute;
 import org.identityconnectors.framework.common.objects.AttributeUtil;
 import org.identityconnectors.framework.common.objects.Name;
-import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 import org.springframework.dao.DataAccessException;
 import org.springframework.jdbc.core.JdbcTemplate;
 
@@ -109,9 +109,9 @@
         ImplementationTO dateToLong = null;
         ImplementationTO dateToDate = null;
         try {
-            dateToLong = implementationService.read(
+            dateToLong = IMPLEMENTATION_SERVICE.read(
                     IdRepoImplementationType.ITEM_TRANSFORMER, DateToLongItemTransformer.class.getSimpleName());
-            dateToDate = implementationService.read(
+            dateToDate = IMPLEMENTATION_SERVICE.read(
                     IdRepoImplementationType.ITEM_TRANSFORMER, DateToDateItemTransformer.class.getSimpleName());
         } catch (SyncopeClientException e) {
             if (e.getType().getResponseStatus() == Response.Status.NOT_FOUND) {
@@ -120,8 +120,8 @@
                 dateToLong.setEngine(ImplementationEngine.JAVA);
                 dateToLong.setType(IdRepoImplementationType.ITEM_TRANSFORMER);
                 dateToLong.setBody(DateToLongItemTransformer.class.getName());
-                Response response = implementationService.create(dateToLong);
-                dateToLong = implementationService.read(
+                Response response = IMPLEMENTATION_SERVICE.create(dateToLong);
+                dateToLong = IMPLEMENTATION_SERVICE.read(
                         dateToLong.getType(), response.getHeaderString(RESTHeaders.RESOURCE_KEY));
                 assertNotNull(dateToLong);
 
@@ -130,8 +130,8 @@
                 dateToDate.setEngine(ImplementationEngine.JAVA);
                 dateToDate.setType(IdRepoImplementationType.ITEM_TRANSFORMER);
                 dateToDate.setBody(DateToDateItemTransformer.class.getName());
-                response = implementationService.create(dateToDate);
-                dateToDate = implementationService.read(
+                response = IMPLEMENTATION_SERVICE.create(dateToDate);
+                dateToDate = IMPLEMENTATION_SERVICE.read(
                         dateToDate.getType(), response.getHeaderString(RESTHeaders.RESOURCE_KEY));
                 assertNotNull(dateToDate);
             }
@@ -142,7 +142,7 @@
 
     @Test
     public void paginatedList() {
-        PagedResult<PropagationTaskTO> tasks = taskService.search(
+        PagedResult<PropagationTaskTO> tasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).page(1).size(2).build());
         assertNotNull(tasks);
         assertEquals(2, tasks.getResult().size());
@@ -151,7 +151,7 @@
             assertNotNull(task);
         }
 
-        tasks = taskService.search(
+        tasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).page(2).size(2).build());
         assertNotNull(tasks);
         assertEquals(2, tasks.getPage());
@@ -161,7 +161,7 @@
             assertNotNull(task);
         }
 
-        tasks = taskService.search(
+        tasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).page(1000).size(2).build());
         assertNotNull(tasks);
         assertTrue(tasks.getResult().isEmpty());
@@ -169,7 +169,8 @@
 
     @Test
     public void read() {
-        PropagationTaskTO taskTO = taskService.read(TaskType.PROPAGATION, "316285cc-ae52-4ea2-a33b-7355e189ac3f", true);
+        PropagationTaskTO taskTO = TASK_SERVICE.read(
+                TaskType.PROPAGATION, "316285cc-ae52-4ea2-a33b-7355e189ac3f", true);
         assertNotNull(taskTO);
         assertNotNull(taskTO.getExecutions());
         assertTrue(taskTO.getExecutions().isEmpty());
@@ -183,12 +184,12 @@
         UserTO userTO = createUser(userCR).getEntity();
 
         List<PropagationTaskTO> tasks = new ArrayList<>(
-                taskService.<PropagationTaskTO>search(new TaskQuery.Builder(TaskType.PROPAGATION).
+                TASK_SERVICE.<PropagationTaskTO>search(new TaskQuery.Builder(TaskType.PROPAGATION).
                         anyTypeKind(AnyTypeKind.USER).entityKey(userTO.getKey()).build()).
                         getResult());
         assertFalse(tasks.isEmpty());
 
-        BatchRequest batchRequest = adminClient.batch();
+        BatchRequest batchRequest = ADMIN_CLIENT.batch();
 
         TaskService batchTaskService = batchRequest.getService(TaskService.class);
         tasks.forEach(task -> batchTaskService.delete(TaskType.PROPAGATION, task.getKey()));
@@ -196,7 +197,7 @@
         Response response = batchRequest.commit().getResponse();
         parseBatchResponse(response);
 
-        assertFalse(taskService.search(
+        assertFalse(TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).page(1).size(100).build()).
                 getResult().containsAll(tasks));
     }
@@ -204,7 +205,7 @@
     @Test
     public void propagationJEXLTransformer() {
         // 0. Set propagation JEXL MappingItemTransformer
-        ResourceTO resource = resourceService.read(RESOURCE_NAME_DBSCRIPTED);
+        ResourceTO resource = RESOURCE_SERVICE.read(RESOURCE_NAME_DBSCRIPTED);
         ResourceTO originalResource = SerializationUtils.clone(resource);
         ProvisionTO provision = resource.getProvision(PRINTER).get();
         assertNotNull(provision);
@@ -218,7 +219,7 @@
         mappingItem.get().setPropagationJEXLTransformer("value + '" + suffix + '\'');
 
         try {
-            resourceService.update(resource);
+            RESOURCE_SERVICE.update(resource);
 
             // 1. create printer on external resource
             AnyObjectCR anyObjectCR = AnyObjectITCase.getSample("propagationJEXLTransformer");
@@ -230,18 +231,18 @@
 
             // 2. verify that JEXL MappingItemTransformer was applied during propagation
             // (location ends with given suffix on external resource)
-            ConnObjectTO connObjectTO = resourceService.
+            ConnObjectTO connObjectTO = RESOURCE_SERVICE.
                     readConnObject(RESOURCE_NAME_DBSCRIPTED, anyObjectTO.getType(), anyObjectTO.getKey());
             assertFalse(anyObjectTO.getPlainAttr("location").get().getValues().get(0).endsWith(suffix));
             assertTrue(connObjectTO.getAttr("LOCATION").get().getValues().get(0).endsWith(suffix));
         } finally {
-            resourceService.update(originalResource);
+            RESOURCE_SERVICE.update(originalResource);
         }
     }
 
     @Test
     public void privileges() {
-        ResourceTO ldap = resourceService.read(RESOURCE_NAME_LDAP);
+        ResourceTO ldap = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
         ldap.setKey("ldapWithPrivileges");
 
         ProvisionTO provision = ldap.getProvision(AnyTypeKind.USER.name()).orElse(null);
@@ -275,21 +276,21 @@
             assertEquals(1, businessCategory.getValues().size());
             assertEquals("postMighty", businessCategory.getValues().get(0));
         } finally {
-            resourceService.delete(ldap.getKey());
+            RESOURCE_SERVICE.delete(ldap.getKey());
         }
     }
 
     @Test
     public void purgePropagations() {
         try {
-            taskService.purgePropagations(null, null, null);
+            TASK_SERVICE.purgePropagations(null, null, null);
             fail();
         } catch (WebServiceException e) {
             assertNotNull(e);
         }
 
         OffsetDateTime oneWeekAgo = OffsetDateTime.now().minusWeeks(1);
-        Response response = taskService.purgePropagations(
+        Response response = TASK_SERVICE.purgePropagations(
                 oneWeekAgo,
                 List.of(ExecStatus.SUCCESS),
                 List.of(RESOURCE_NAME_WS1));
@@ -302,12 +303,12 @@
         assertEquals(1, deleted.size());
         assertTrue(deleted.stream().allMatch(d -> RESOURCE_NAME_WS1.equals(d.getResource())));
         // check that other propagation tasks haven't been affected
-        assertFalse(taskService.search(new TaskQuery.Builder(TaskType.PROPAGATION)
+        assertFalse(TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PROPAGATION)
                 .anyTypeKind(AnyTypeKind.USER)
                 .page(0).size(10)
                 .build()).getResult().isEmpty());
         // delete all remaining SUCCESS tasks
-        response = taskService.purgePropagations(oneWeekAgo, List.of(ExecStatus.SUCCESS), List.of());
+        response = TASK_SERVICE.purgePropagations(oneWeekAgo, List.of(ExecStatus.SUCCESS), List.of());
         assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
 
         deleted = response.readEntity(new GenericType<List<PropagationTaskTO>>() {
@@ -317,7 +318,7 @@
 
     @Test
     public void propagationPolicy() throws InterruptedException {
-        SyncopeClient.nullPriorityAsync(anyObjectService, true);
+        SyncopeClient.nullPriorityAsync(ANY_OBJECT_SERVICE, true);
 
         JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
         jdbcTemplate.execute("ALTER TABLE TESTPRINTER ADD COLUMN MAND_VALUE VARCHAR(1)");
@@ -330,7 +331,7 @@
             jdbcTemplate.execute("ALTER TABLE TESTPRINTER DROP COLUMN MAND_VALUE");
 
             PagedResult<PropagationTaskTO> propagations = await().atMost(MAX_WAIT_SECONDS, TimeUnit.SECONDS).until(
-                    () -> taskService.search(
+                    () -> TASK_SERVICE.search(
                             new TaskQuery.Builder(TaskType.PROPAGATION).resource(RESOURCE_NAME_DBSCRIPTED).
                                     anyTypeKind(AnyTypeKind.ANY_OBJECT).entityKey(entityKey).build()),
                     p -> p.getTotalCount() > 0);
@@ -340,7 +341,7 @@
             propagations.getResult().get(0).getExecutions().stream().
                     anyMatch(e -> ExecStatus.SUCCESS.name().equals(e.getStatus()));
         } finally {
-            SyncopeClient.nullPriorityAsync(anyObjectService, false);
+            SyncopeClient.nullPriorityAsync(ANY_OBJECT_SERVICE, false);
 
             try {
                 jdbcTemplate.execute("ALTER TABLE TESTPRINTER DROP COLUMN MAND_VALUE");
@@ -353,9 +354,9 @@
     @Test
     public void issueSYNCOPE741() {
         for (int i = 0; i < 3; i++) {
-            taskService.execute(new ExecSpecs.Builder().
+            TASK_SERVICE.execute(new ExecSpecs.Builder().
                     key("1e697572-b896-484c-ae7f-0c8f63fcbc6c").build());
-            taskService.execute(new ExecSpecs.Builder().
+            TASK_SERVICE.execute(new ExecSpecs.Builder().
                     key("316285cc-ae52-4ea2-a33b-7355e189ac3f").build());
         }
         try {
@@ -365,14 +366,14 @@
         }
 
         // check list
-        PagedResult<TaskTO> tasks = taskService.search(
+        PagedResult<TaskTO> tasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).
                         page(1).size(2).orderBy("operation DESC").details(false).build());
         for (TaskTO item : tasks.getResult()) {
             assertTrue(item.getExecutions().isEmpty());
         }
 
-        tasks = taskService.search(
+        tasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).
                         page(1).size(2).orderBy("operation DESC").details(true).build());
         for (TaskTO item : tasks.getResult()) {
@@ -380,18 +381,18 @@
         }
 
         // check read
-        PropagationTaskTO task = taskService.read(TaskType.PROPAGATION, "1e697572-b896-484c-ae7f-0c8f63fcbc6c", false);
+        PropagationTaskTO task = TASK_SERVICE.read(TaskType.PROPAGATION, "1e697572-b896-484c-ae7f-0c8f63fcbc6c", false);
         assertNotNull(task);
         assertEquals("1e697572-b896-484c-ae7f-0c8f63fcbc6c", task.getKey());
         assertTrue(task.getExecutions().isEmpty());
 
-        task = taskService.read(TaskType.PROPAGATION, "1e697572-b896-484c-ae7f-0c8f63fcbc6c", true);
+        task = TASK_SERVICE.read(TaskType.PROPAGATION, "1e697572-b896-484c-ae7f-0c8f63fcbc6c", true);
         assertNotNull(task);
         assertEquals("1e697572-b896-484c-ae7f-0c8f63fcbc6c", task.getKey());
         assertFalse(task.getExecutions().isEmpty());
 
         // check list executions
-        PagedResult<ExecTO> execs = taskService.listExecutions(new ExecListQuery.Builder().key(
+        PagedResult<ExecTO> execs = TASK_SERVICE.listExecutions(new ExecListQuery.Builder().key(
                 "1e697572-b896-484c-ae7f-0c8f63fcbc6c").
                 page(1).size(2).build());
         assertTrue(execs.getTotalCount() >= execs.getResult().size());
@@ -415,11 +416,11 @@
                     operation(PatchOperation.ADD_REPLACE).
                     build());
 
-            userService.update(userUR);
+            USER_SERVICE.update(userUR);
         }
 
         // ASC order
-        PagedResult<TaskTO> unorderedTasks = taskService.search(
+        PagedResult<TaskTO> unorderedTasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).
                         resource(RESOURCE_NAME_LDAP).
                         entityKey(userTO.getKey()).
@@ -432,7 +433,7 @@
         assertFalse(unorderedTasks.getResult().isEmpty());
         assertEquals(10, unorderedTasks.getResult().size());
 
-        PagedResult<TaskTO> orderedTasks = taskService.search(
+        PagedResult<TaskTO> orderedTasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).
                         resource(RESOURCE_NAME_LDAP).
                         entityKey(userTO.getKey()).
@@ -449,7 +450,7 @@
 
         // DESC order
         Collections.reverse(unorderedTasks.getResult());
-        orderedTasks = taskService.search(
+        orderedTasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).
                         resource(RESOURCE_NAME_LDAP).
                         entityKey(userTO.getKey()).
@@ -464,7 +465,7 @@
 
     @Test
     public void issueSYNCOPE1430() throws ParseException {
-        ResourceTO ldap = resourceService.read(RESOURCE_NAME_LDAP);
+        ResourceTO ldap = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
         try {
             // 1. clone the LDAP resource and add some sensible mappings
             ProvisionTO provision = ldap.getProvision(AnyTypeKind.USER.name()).orElse(null);
@@ -508,7 +509,7 @@
             ldap.getProvisions().clear();
             ldap.getProvisions().add(provision);
             ldap.setKey(RESOURCE_NAME_LDAP + "1430" + getUUIDString());
-            resourceService.create(ldap);
+            RESOURCE_SERVICE.create(ldap);
 
             // 2. create user with the new resource assigned
             UserCR createReq = UserITCase.getUniqueSample("syncope1430@syncope.apache.org");
@@ -519,7 +520,7 @@
             UserTO user = createUser(createReq).getEntity();
 
             // 3. check attributes prepared for propagation
-            PagedResult<PropagationTaskTO> tasks = taskService.search(new TaskQuery.Builder(TaskType.PROPAGATION).
+            PagedResult<PropagationTaskTO> tasks = TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PROPAGATION).
                     resource(user.getResources().iterator().next()).
                     anyTypeKind(AnyTypeKind.USER).entityKey(user.getKey()).build());
             assertEquals(1, tasks.getSize());
@@ -550,7 +551,7 @@
             assertEquals(DateTimeFormatter.ISO_LOCAL_DATE.format(loginDate.plusDays(1)), carLicense.getValue().get(0));
         } finally {
             try {
-                resourceService.delete(ldap.getKey());
+                RESOURCE_SERVICE.delete(ldap.getKey());
             } catch (Exception ignore) {
                 // ignore
             }
@@ -570,7 +571,7 @@
         schemaTO = createSchema(SchemaType.PLAIN, schemaTO);
         assertNotNull(schemaTO);
 
-        ResourceTO ldap = resourceService.read(RESOURCE_NAME_LDAP);
+        ResourceTO ldap = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
         UserTO userTO = null;
         try {
             // 1. clone the LDAP resource and add some sensible mappings
@@ -595,7 +596,7 @@
             ldap.getProvisions().add(provisionUser);
             ldap.getProvisions().add(provisionGroup);
             ldap.setKey(RESOURCE_NAME_LDAP + "1473" + getUUIDString());
-            resourceService.create(ldap);
+            RESOURCE_SERVICE.create(ldap);
 
             // 1. create group with the new resource assigned
             GroupCR groupCR = new GroupCR();
@@ -616,7 +617,7 @@
             assertNotNull(userTO);
 
             // 3. check attributes prepared for propagation
-            PagedResult<PropagationTaskTO> tasks = taskService.search(new TaskQuery.Builder(TaskType.PROPAGATION).
+            PagedResult<PropagationTaskTO> tasks = TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PROPAGATION).
                     resource(userTO.getResources().iterator().next()).
                     anyTypeKind(AnyTypeKind.USER).entityKey(userTO.getKey()).build());
             assertEquals(1, tasks.getSize());
@@ -624,8 +625,8 @@
             ResourceDR resourceDR = new ResourceDR.Builder().key(groupTO.getKey()).
                     action(ResourceDeassociationAction.UNLINK).resource(ldap.getKey()).build();
 
-            groupService.deassociate(resourceDR);
-            groupService.delete(groupTO.getKey());
+            GROUP_SERVICE.deassociate(resourceDR);
+            GROUP_SERVICE.delete(groupTO.getKey());
 
             GroupCR newGroupCR = new GroupCR();
             newGroupCR.setName("NEWSYNCOPEGROUP1473-" + getUUIDString());
@@ -639,20 +640,20 @@
             userUR.setKey(userTO.getKey());
             userUR.getMemberships().add(
                     new MembershipUR.Builder(newGroupTO.getKey()).operation(PatchOperation.ADD_REPLACE).build());
-            userService.update(userUR);
+            USER_SERVICE.update(userUR);
 
             ConnObjectTO connObject =
-                    resourceService.readConnObject(ldap.getKey(), AnyTypeKind.USER.name(), userTO.getKey());
+                    RESOURCE_SERVICE.readConnObject(ldap.getKey(), AnyTypeKind.USER.name(), userTO.getKey());
             assertNotNull(connObject);
             assertTrue(connObject.getAttr("ldapGroups").isPresent());
             assertEquals(2, connObject.getAttr("ldapGroups").get().getValues().size());
         } finally {
             try {
-                resourceService.delete(ldap.getKey());
+                RESOURCE_SERVICE.delete(ldap.getKey());
                 if (userTO != null) {
-                    userService.delete(userTO.getKey());
+                    USER_SERVICE.delete(userTO.getKey());
                 }
-                schemaService.delete(SchemaType.PLAIN, schemaTO.getKey());
+                SCHEMA_SERVICE.delete(SchemaType.PLAIN, schemaTO.getKey());
             } catch (Exception ignore) {
                 // ignore
             }
@@ -661,7 +662,7 @@
 
     @Test
     public void issueSYNCOPE1567() {
-        ResourceTO ldap = resourceService.read(RESOURCE_NAME_LDAP);
+        ResourceTO ldap = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
         try {
             // 1. clone the LDAP resource and add the relationships mapping
             ProvisionTO provisionUser =
@@ -678,7 +679,7 @@
             ldap.getProvisions().clear();
             ldap.getProvisions().add(provisionUser);
             ldap.setKey(RESOURCE_NAME_LDAP + "1567" + getUUIDString());
-            resourceService.create(ldap);
+            RESOURCE_SERVICE.create(ldap);
 
             // 1. create user with relationship and the new resource assigned
             UserCR userCR = UserITCase.getUniqueSample("syncope1567@syncope.apache.org");
@@ -692,7 +693,7 @@
             assertFalse(userTO.getRelationships().isEmpty());
 
             // 2. check attributes prepared for propagation
-            PagedResult<PropagationTaskTO> tasks = taskService.search(new TaskQuery.Builder(TaskType.PROPAGATION).
+            PagedResult<PropagationTaskTO> tasks = TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PROPAGATION).
                     resource(userCR.getResources().iterator().next()).
                     anyTypeKind(AnyTypeKind.USER).entityKey(userTO.getKey()).build());
             assertEquals(1, tasks.getSize());
@@ -707,13 +708,13 @@
 
             // 3. check propagated value
             ConnObjectTO connObject =
-                    resourceService.readConnObject(ldap.getKey(), AnyTypeKind.USER.name(), userTO.getKey());
+                    RESOURCE_SERVICE.readConnObject(ldap.getKey(), AnyTypeKind.USER.name(), userTO.getKey());
             assertNotNull(connObject);
             assertTrue(connObject.getAttr("l").isPresent());
             assertEquals("Canon MFC8030", connObject.getAttr("l").get().getValues().get(0));
         } finally {
             try {
-                resourceService.delete(ldap.getKey());
+                RESOURCE_SERVICE.delete(ldap.getKey());
             } catch (Exception ignore) {
                 // ignore
             }
@@ -722,7 +723,7 @@
 
     @Test
     public void issueSYNCOPE1605() throws ParseException {
-        ResourceTO ldap = resourceService.read(RESOURCE_NAME_LDAP);
+        ResourceTO ldap = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
         try {
             // 1. clone the LDAP resource and add some sensible mappings
             ProvisionTO provisionGroup =
@@ -744,7 +745,7 @@
             ldap.getProvisions().add(provisionGroup);
 
             ldap.setKey(RESOURCE_NAME_LDAP + "1605" + getUUIDString());
-            resourceService.create(ldap);
+            RESOURCE_SERVICE.create(ldap);
 
             // 1. create group with the new resource assigned
             String originalName = "grp1605-" + getUUIDString();
@@ -759,14 +760,14 @@
             assertNotNull(groupTO);
 
             // 3. check attributes prepared for propagation
-            PagedResult<PropagationTaskTO> tasks = taskService.search(new TaskQuery.Builder(TaskType.PROPAGATION).
+            PagedResult<PropagationTaskTO> tasks = TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PROPAGATION).
                     resource(ldap.getKey()).anyTypeKind(AnyTypeKind.GROUP).entityKey(groupTO.getKey()).build());
             assertEquals(1, tasks.getSize());
             assertEquals(ResourceOperation.CREATE, tasks.getResult().get(0).getOperation());
             assertEquals(ExecStatus.SUCCESS.name(), tasks.getResult().get(0).getLatestExecStatus());
 
             ConnObjectTO beforeConnObject =
-                    resourceService.readConnObject(ldap.getKey(), AnyTypeKind.GROUP.name(), groupTO.getKey());
+                    RESOURCE_SERVICE.readConnObject(ldap.getKey(), AnyTypeKind.GROUP.name(), groupTO.getKey());
 
             GroupUR groupUR = new GroupUR();
             groupUR.setKey(groupTO.getKey());
@@ -774,7 +775,7 @@
             groupUR.getPlainAttrs().add(attrAddReplacePatch("originalName", "new" + originalName));
             groupTO = updateGroup(groupUR).getEntity();
 
-            tasks = taskService.search(new TaskQuery.Builder(TaskType.PROPAGATION).
+            tasks = TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PROPAGATION).
                     resource(ldap.getKey()).anyTypeKind(AnyTypeKind.GROUP).entityKey(groupTO.getKey()).
                     orderBy("start DESC").build());
             assertEquals(2, tasks.getSize());
@@ -782,13 +783,13 @@
             assertEquals(ExecStatus.SUCCESS.name(), tasks.getResult().get(0).getLatestExecStatus());
 
             ConnObjectTO afterConnObject =
-                    resourceService.readConnObject(ldap.getKey(), AnyTypeKind.GROUP.name(), groupTO.getKey());
+                    RESOURCE_SERVICE.readConnObject(ldap.getKey(), AnyTypeKind.GROUP.name(), groupTO.getKey());
             assertNotEquals(afterConnObject.getAttr(Name.NAME).get().getValues().get(0),
                     beforeConnObject.getAttr(Name.NAME).get().getValues().get(0));
             assertTrue(afterConnObject.getAttr(Name.NAME).get().getValues().get(0).contains("new" + originalName));
         } finally {
             try {
-                resourceService.delete(ldap.getKey());
+                RESOURCE_SERVICE.delete(ldap.getKey());
             } catch (Exception ignore) {
                 // ignore
             }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
index 6d108df..717e16f 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PullTaskITCase.java
@@ -20,8 +20,8 @@
 
 import static org.awaitility.Awaitility.await;
 import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -36,13 +36,13 @@
 import java.nio.charset.StandardCharsets;
 import java.util.Collections;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Properties;
 import java.util.Set;
-import java.util.HashSet;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
@@ -56,46 +56,46 @@
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.commons.lang3.tuple.Triple;
 import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
-import org.apache.syncope.common.lib.request.ResourceDR;
-import org.apache.syncope.common.lib.request.PasswordPatch;
-import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.policy.PullPolicyTO;
 import org.apache.syncope.common.lib.request.AnyCR;
 import org.apache.syncope.common.lib.request.AnyObjectCR;
 import org.apache.syncope.common.lib.request.GroupCR;
+import org.apache.syncope.common.lib.request.PasswordPatch;
+import org.apache.syncope.common.lib.request.ResourceDR;
 import org.apache.syncope.common.lib.request.UserCR;
-import org.apache.syncope.common.lib.to.TaskTO;
+import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
-import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.to.ConnObjectTO;
+import org.apache.syncope.common.lib.to.ExecTO;
+import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.lib.to.ImplementationTO;
+import org.apache.syncope.common.lib.to.ItemTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
 import org.apache.syncope.common.lib.to.PagedResult;
-import org.apache.syncope.common.lib.to.ResourceTO;
-import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.ProvisionTO;
-import org.apache.syncope.common.lib.to.ItemTO;
-import org.apache.syncope.common.lib.to.PullTaskTO;
-import org.apache.syncope.common.lib.to.ExecTO;
-import org.apache.syncope.common.lib.to.ImplementationTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
+import org.apache.syncope.common.lib.to.PullTaskTO;
 import org.apache.syncope.common.lib.to.RemediationTO;
+import org.apache.syncope.common.lib.to.ResourceTO;
+import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.CipherAlgorithm;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.ConnConfProperty;
 import org.apache.syncope.common.lib.types.ConnectorCapability;
-import org.apache.syncope.common.lib.types.ImplementationEngine;
-import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.syncope.common.lib.types.IdMImplementationType;
 import org.apache.syncope.common.lib.types.IdRepoImplementationType;
+import org.apache.syncope.common.lib.types.ImplementationEngine;
 import org.apache.syncope.common.lib.types.MatchingRule;
-import org.apache.syncope.common.lib.types.ResourceDeassociationAction;
+import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.syncope.common.lib.types.PullMode;
+import org.apache.syncope.common.lib.types.ResourceDeassociationAction;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.lib.types.UnmatchingRule;
@@ -123,7 +123,7 @@
     public static void testPullActionsSetup() {
         ImplementationTO pullActions = null;
         try {
-            pullActions = implementationService.read(
+            pullActions = IMPLEMENTATION_SERVICE.read(
                     IdMImplementationType.PULL_ACTIONS, TestPullActions.class.getSimpleName());
         } catch (SyncopeClientException e) {
             if (e.getType().getResponseStatus() == Response.Status.NOT_FOUND) {
@@ -132,22 +132,22 @@
                 pullActions.setEngine(ImplementationEngine.JAVA);
                 pullActions.setType(IdMImplementationType.PULL_ACTIONS);
                 pullActions.setBody(TestPullActions.class.getName());
-                Response response = implementationService.create(pullActions);
-                pullActions = implementationService.read(
+                Response response = IMPLEMENTATION_SERVICE.create(pullActions);
+                pullActions = IMPLEMENTATION_SERVICE.read(
                         pullActions.getType(), response.getHeaderString(RESTHeaders.RESOURCE_KEY));
                 assertNotNull(pullActions);
             }
         }
         assertNotNull(pullActions);
 
-        PullTaskTO pullTask = taskService.read(TaskType.PULL, PULL_TASK_KEY, true);
+        PullTaskTO pullTask = TASK_SERVICE.read(TaskType.PULL, PULL_TASK_KEY, true);
         pullTask.getActions().add(pullActions.getKey());
-        taskService.update(TaskType.PULL, pullTask);
+        TASK_SERVICE.update(TaskType.PULL, pullTask);
     }
 
     @Test
     public void getPullActionsClasses() {
-        Set<String> actions = adminClient.platform().
+        Set<String> actions = ADMIN_CLIENT.platform().
                 getJavaImplInfo(IdMImplementationType.PULL_ACTIONS).get().getClasses();
         assertNotNull(actions);
         assertFalse(actions.isEmpty());
@@ -155,7 +155,7 @@
 
     @Test
     public void list() {
-        PagedResult<PullTaskTO> tasks = taskService.search(new TaskQuery.Builder(TaskType.PULL).build());
+        PagedResult<PullTaskTO> tasks = TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PULL).build());
         assertFalse(tasks.getResult().isEmpty());
         tasks.getResult().stream().
                 filter(task -> (!(task instanceof PullTaskTO))).
@@ -180,11 +180,11 @@
         groupTemplate.getResources().add(RESOURCE_NAME_LDAP);
         task.getTemplates().put(AnyTypeKind.GROUP.name(), groupTemplate);
 
-        Response response = taskService.create(TaskType.PULL, task);
+        Response response = TASK_SERVICE.create(TaskType.PULL, task);
         PullTaskTO actual = getObject(response.getLocation(), TaskService.class, PullTaskTO.class);
         assertNotNull(actual);
 
-        task = taskService.read(TaskType.PULL, actual.getKey(), true);
+        task = TASK_SERVICE.read(TaskType.PULL, actual.getKey(), true);
         assertNotNull(task);
         assertEquals(actual.getKey(), task.getKey());
         assertEquals(actual.getJobDelegate(), task.getJobDelegate());
@@ -194,7 +194,7 @@
 
     @Test
     public void fromCSV() throws Exception {
-        assumeFalse(ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform()));
+        assumeFalse(ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform()));
 
         removeTestUsers();
 
@@ -247,27 +247,27 @@
 
         // -----------------------------
         try {
-            int usersPre = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+            int usersPre = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                     page(1).size(1).build()).getTotalCount();
             assertNotNull(usersPre);
 
-            ExecTO exec = execProvisioningTask(taskService, TaskType.PULL, PULL_TASK_KEY, MAX_WAIT_SECONDS, false);
+            ExecTO exec = execProvisioningTask(TASK_SERVICE, TaskType.PULL, PULL_TASK_KEY, MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(exec.getStatus()));
 
             LOG.debug("Execution of task {}:\n{}", PULL_TASK_KEY, exec);
 
             // check for pull results
-            int usersPost = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+            int usersPost = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                     page(1).size(1).build()).getTotalCount();
             assertNotNull(usersPost);
             assertEquals(usersPre + 8, usersPost);
 
             // after execution of the pull task the user data should have been pulled from CSV
             // and processed by user template
-            UserTO userTO = userService.read(inUserTO.getKey());
+            UserTO userTO = USER_SERVICE.read(inUserTO.getKey());
             assertNotNull(userTO);
             assertEquals(userName, userTO.getUsername());
-            assertEquals(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform())
+            assertEquals(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform())
                     ? "active" : "created", userTO.getStatus());
             assertEquals("test9@syncope.apache.org", userTO.getPlainAttr("email").get().getValues().get(0));
             assertEquals("test9@syncope.apache.org", userTO.getPlainAttr("userId").get().getValues().get(0));
@@ -279,7 +279,7 @@
             assertFalse(userTO.getResources().contains(RESOURCE_NAME_CSV));
 
             // check for user template
-            userTO = userService.read("test7");
+            userTO = USER_SERVICE.read("test7");
             assertNotNull(userTO);
             assertEquals("TYPE_OTHER", userTO.getPlainAttr("ctype").get().getValues().get(0));
             assertEquals(3, userTO.getResources().size());
@@ -293,13 +293,13 @@
             assertEquals(1, userTO.getDerAttrs().stream().
                     filter(attrTO -> "csvuserid".equals(attrTO.getSchema())).count());
 
-            userTO = userService.read("test8");
+            userTO = USER_SERVICE.read("test8");
             assertNotNull(userTO);
             assertEquals("TYPE_8", userTO.getPlainAttr("ctype").get().getValues().get(0));
 
             // Check for ignored user - SYNCOPE-663
             try {
-                userService.read("test2");
+                USER_SERVICE.read("test2");
                 fail("This should not happen");
             } catch (SyncopeClientException e) {
                 assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
@@ -308,22 +308,22 @@
             // Check for issue 215:
             // * expected disabled user test1
             // * expected enabled user test3
-            userTO = userService.read("test1");
+            userTO = USER_SERVICE.read("test1");
             assertNotNull(userTO);
             assertEquals("suspended", userTO.getStatus());
 
-            userTO = userService.read("test3");
+            userTO = USER_SERVICE.read("test3");
             assertNotNull(userTO);
             assertEquals("active", userTO.getStatus());
 
             Set<String> otherPullTaskKeys = Set.of(
                     "feae4e57-15ca-40d9-b973-8b9015efca49",
                     "55d5e74b-497e-4bc0-9156-73abef4b9adc");
-            execProvisioningTasks(taskService, TaskType.PULL, otherPullTaskKeys, MAX_WAIT_SECONDS, false);
+            execProvisioningTasks(TASK_SERVICE, TaskType.PULL, otherPullTaskKeys, MAX_WAIT_SECONDS, false);
 
             // Matching --> UNLINK
-            assertFalse(userService.read("test9").getResources().contains(RESOURCE_NAME_CSV));
-            assertFalse(userService.read("test7").getResources().contains(RESOURCE_NAME_CSV));
+            assertFalse(USER_SERVICE.read("test9").getResources().contains(RESOURCE_NAME_CSV));
+            assertFalse(USER_SERVICE.read("test7").getResources().contains(RESOURCE_NAME_CSV));
         } finally {
             removeTestUsers();
         }
@@ -331,7 +331,7 @@
 
     @Test
     public void dryRun() {
-        ExecTO execution = execProvisioningTask(taskService, TaskType.PULL, PULL_TASK_KEY, MAX_WAIT_SECONDS, true);
+        ExecTO execution = execProvisioningTask(TASK_SERVICE, TaskType.PULL, PULL_TASK_KEY, MAX_WAIT_SECONDS, true);
         assertEquals("SUCCESS", execution.getStatus());
     }
 
@@ -341,10 +341,10 @@
         JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
         try {
             ExecTO execution = execProvisioningTask(
-                    taskService, TaskType.PULL, "83f7e85d-9774-43fe-adba-ccd856312994", MAX_WAIT_SECONDS, false);
+                    TASK_SERVICE, TaskType.PULL, "83f7e85d-9774-43fe-adba-ccd856312994", MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
 
-            userTO = userService.read("testuser1");
+            userTO = USER_SERVICE.read("testuser1");
             assertNotNull(userTO);
             assertEquals("reconciled@syncope.apache.org", userTO.getPlainAttr("userId").get().getValues().get(0));
             assertEquals("suspended", userTO.getStatus());
@@ -354,16 +354,16 @@
 
             // re-execute the same PullTask: now user must be active
             execution = execProvisioningTask(
-                    taskService, TaskType.PULL, "83f7e85d-9774-43fe-adba-ccd856312994", MAX_WAIT_SECONDS, false);
+                    TASK_SERVICE, TaskType.PULL, "83f7e85d-9774-43fe-adba-ccd856312994", MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
 
-            userTO = userService.read("testuser1");
+            userTO = USER_SERVICE.read("testuser1");
             assertNotNull(userTO);
             assertEquals("active", userTO.getStatus());
         } finally {
             jdbcTemplate.execute("UPDATE TEST SET status=FALSE WHERE id='testuser1'");
             if (userTO != null) {
-                userService.delete(userTO.getKey());
+                USER_SERVICE.delete(userTO.getKey());
             }
         }
     }
@@ -375,18 +375,18 @@
 
         // 0. pull
         ExecTO execution = execProvisioningTask(
-                taskService, TaskType.PULL, "1e419ca4-ea81-4493-a14f-28b90113686d", MAX_WAIT_SECONDS, false);
+                TASK_SERVICE, TaskType.PULL, "1e419ca4-ea81-4493-a14f-28b90113686d", MAX_WAIT_SECONDS, false);
 
         // 1. verify execution status
         assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
 
         // SYNCOPE-898
-        PullTaskTO task = taskService.read(TaskType.PULL, "1e419ca4-ea81-4493-a14f-28b90113686d", false);
+        PullTaskTO task = TASK_SERVICE.read(TaskType.PULL, "1e419ca4-ea81-4493-a14f-28b90113686d", false);
         assertEquals(SyncopeConstants.ROOT_REALM, task.getDestinationRealm());
 
         // 2. verify that pulled group is found
-        PagedResult<GroupTO> matchingGroups = groupService.search(new AnyQuery.Builder().realm(
-                        SyncopeConstants.ROOT_REALM).
+        PagedResult<GroupTO> matchingGroups = GROUP_SERVICE.search(new AnyQuery.Builder().realm(
+                SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getGroupSearchConditionBuilder().is("name").equalTo("testLDAPGroup").query()).
                 build());
         assertNotNull(matchingGroups);
@@ -394,7 +394,7 @@
         assertEquals(SyncopeConstants.ROOT_REALM, matchingGroups.getResult().get(0).getRealm());
 
         // 3. verify that pulled user is found
-        PagedResult<UserTO> matchingUsers = userService.search(
+        PagedResult<UserTO> matchingUsers = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().is("username").equalTo("pullFromLDAP").
                                 query()).
@@ -414,7 +414,7 @@
         // Check for SYNCOPE-1343
         assertEquals("odd", matchingUsers.getResult().get(0).getPlainAttr("title").get().getValues().get(0));
 
-        PagedResult<UserTO> matchByLastChangeContext = userService.search(
+        PagedResult<UserTO> matchByLastChangeContext = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().is("lastChangeContext").
                                 equalTo("*PullTask " + task.getKey() + "*").query()).
@@ -430,7 +430,7 @@
         assertEquals(matchingUsers.getResult().get(0).getKey(), groupTO.getUserOwner());
         assertNull(groupTO.getGroupOwner());
         // SYNCOPE-1343, set value title to null on LDAP
-        ConnObjectTO userConnObject = resourceService.readConnObject(
+        ConnObjectTO userConnObject = RESOURCE_SERVICE.readConnObject(
                 RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), matchingUsers.getResult().get(0).getKey());
         assertNotNull(userConnObject);
         assertEquals("odd", userConnObject.getAttr("title").get().getValues().get(0));
@@ -440,13 +440,13 @@
 
         // SYNCOPE-317
         execProvisioningTask(
-                taskService, TaskType.PULL, "1e419ca4-ea81-4493-a14f-28b90113686d", MAX_WAIT_SECONDS, false);
+                TASK_SERVICE, TaskType.PULL, "1e419ca4-ea81-4493-a14f-28b90113686d", MAX_WAIT_SECONDS, false);
 
         // 4. verify that LDAP group membership is pulled as Syncope membership
         AtomicReference<Integer> numMembers = new AtomicReference<>();
         await().atMost(MAX_WAIT_SECONDS, TimeUnit.SECONDS).pollInterval(1, TimeUnit.SECONDS).until(() -> {
             try {
-                PagedResult<UserTO> members = userService.search(
+                PagedResult<UserTO> members = USER_SERVICE.search(
                         new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                                 fiql(SyncopeClient.getUserSearchConditionBuilder().inGroups(groupTO.getKey()).query()).
                                 build());
@@ -459,7 +459,7 @@
         assertEquals(1, numMembers.get());
 
         // SYNCOPE-1343, verify that the title attribute has been reset
-        matchingUsers = userService.search(
+        matchingUsers = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().is("username").equalTo("pullFromLDAP").
                                 query()).
@@ -467,7 +467,7 @@
         assertNull(matchingUsers.getResult().get(0).getPlainAttr("title").orElse(null));
 
         // SYNCOPE-1356 remove group membership from LDAP, pull and check in Syncope
-        ConnObjectTO groupConnObject = resourceService.readConnObject(
+        ConnObjectTO groupConnObject = RESOURCE_SERVICE.readConnObject(
                 RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), matchingGroups.getResult().get(0).getKey());
         assertNotNull(groupConnObject);
         Attr groupDn = groupConnObject.getAttr(Name.NAME).get();
@@ -475,11 +475,11 @@
                 groupDn.getValues().get(0), Map.of("uniquemember", "uid=admin,ou=system"));
 
         execProvisioningTask(
-                taskService, TaskType.PULL, "1e419ca4-ea81-4493-a14f-28b90113686d", MAX_WAIT_SECONDS, false);
+                TASK_SERVICE, TaskType.PULL, "1e419ca4-ea81-4493-a14f-28b90113686d", MAX_WAIT_SECONDS, false);
 
         await().atMost(MAX_WAIT_SECONDS, TimeUnit.SECONDS).pollInterval(1, TimeUnit.SECONDS).until(() -> {
             try {
-                return userService.search(
+                return USER_SERVICE.search(
                         new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                                 fiql(SyncopeClient.getUserSearchConditionBuilder().inGroups(groupTO.getKey()).query()).
                                 build()).getResult().isEmpty();
@@ -492,14 +492,14 @@
     @Test
     public void reconcileFromScriptedSQL() throws IOException {
         // 0. reset sync token and set MappingItemTransformer
-        ResourceTO resource = resourceService.read(RESOURCE_NAME_DBSCRIPTED);
+        ResourceTO resource = RESOURCE_SERVICE.read(RESOURCE_NAME_DBSCRIPTED);
         ResourceTO originalResource = SerializationUtils.clone(resource);
         ProvisionTO provision = resource.getProvision(PRINTER).get();
         assertNotNull(provision);
 
         ImplementationTO transformer = null;
         try {
-            transformer = implementationService.read(
+            transformer = IMPLEMENTATION_SERVICE.read(
                     IdRepoImplementationType.ITEM_TRANSFORMER, "PrefixItemTransformer");
         } catch (SyncopeClientException e) {
             if (e.getType().getResponseStatus() == Response.Status.NOT_FOUND) {
@@ -509,8 +509,8 @@
                 transformer.setType(IdRepoImplementationType.ITEM_TRANSFORMER);
                 transformer.setBody(IOUtils.toString(
                         getClass().getResourceAsStream("/PrefixItemTransformer.groovy"), StandardCharsets.UTF_8));
-                Response response = implementationService.create(transformer);
-                transformer = implementationService.read(
+                Response response = IMPLEMENTATION_SERVICE.create(transformer);
+                transformer = IMPLEMENTATION_SERVICE.read(
                         transformer.getType(), response.getHeaderString(RESTHeaders.RESOURCE_KEY));
                 assertNotNull(transformer.getKey());
             }
@@ -525,8 +525,8 @@
 
         final String prefix = "PREFIX_";
         try {
-            resourceService.update(resource);
-            resourceService.removeSyncToken(resource.getKey(), provision.getAnyType());
+            RESOURCE_SERVICE.update(resource);
+            RESOURCE_SERVICE.removeSyncToken(resource.getKey(), provision.getAnyType());
 
             // insert a deleted record in the external resource (SYNCOPE-923), which will be returned
             // as sync event prior to the CREATE_OR_UPDATE events generated by the actions below (before pull)
@@ -544,32 +544,32 @@
 
             // 2. verify that PrefixMappingItemTransformer was applied during propagation
             // (location starts with given prefix on external resource)
-            ConnObjectTO connObjectTO = resourceService.readConnObject(
+            ConnObjectTO connObjectTO = RESOURCE_SERVICE.readConnObject(
                     RESOURCE_NAME_DBSCRIPTED, anyObjectTO.getType(), anyObjectTO.getKey());
             assertFalse(anyObjectTO.getPlainAttr("location").get().getValues().get(0).startsWith(prefix));
             assertTrue(connObjectTO.getAttr("LOCATION").get().getValues().get(0).startsWith(prefix));
 
             // 3. unlink any existing printer and delete from Syncope (printer is now only on external resource)
-            PagedResult<AnyObjectTO> matchingPrinters = anyObjectService.search(
+            PagedResult<AnyObjectTO> matchingPrinters = ANY_OBJECT_SERVICE.search(
                     new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                             fiql(SyncopeClient.getAnyObjectSearchConditionBuilder(PRINTER).
                                     is("location").equalTo("pull*").query()).build());
             assertTrue(matchingPrinters.getSize() > 0);
             for (AnyObjectTO printer : matchingPrinters.getResult()) {
-                anyObjectService.deassociate(new ResourceDR.Builder().key(printer.getKey()).
+                ANY_OBJECT_SERVICE.deassociate(new ResourceDR.Builder().key(printer.getKey()).
                         action(ResourceDeassociationAction.UNLINK).resource(RESOURCE_NAME_DBSCRIPTED).build());
-                anyObjectService.delete(printer.getKey());
+                ANY_OBJECT_SERVICE.delete(printer.getKey());
             }
 
             // ensure that the pull task does not have the DELETE capability (SYNCOPE-923)
-            PullTaskTO pullTask = taskService.read(TaskType.PULL, "30cfd653-257b-495f-8665-281281dbcb3d", false);
+            PullTaskTO pullTask = TASK_SERVICE.read(TaskType.PULL, "30cfd653-257b-495f-8665-281281dbcb3d", false);
             assertNotNull(pullTask);
             assertFalse(pullTask.isPerformDelete());
 
             // 4. pull
-            execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
+            execProvisioningTask(TASK_SERVICE, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
 
-            if (ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform())) {
+            if (ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform())) {
                 try {
                     Thread.sleep(2000);
                 } catch (InterruptedException ex) {
@@ -579,16 +579,16 @@
 
             // 5. verify that printer was re-created in Syncope (implies that location does not start with given prefix,
             // hence PrefixItemTransformer was applied during pull)
-            matchingPrinters = anyObjectService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+            matchingPrinters = ANY_OBJECT_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                     fiql(SyncopeClient.getAnyObjectSearchConditionBuilder(PRINTER).
                             is("location").equalTo("pull*").query()).build());
             assertTrue(matchingPrinters.getSize() > 0);
 
             // 6. verify that synctoken was updated
-            assertNotNull(resourceService.read(RESOURCE_NAME_DBSCRIPTED).
+            assertNotNull(RESOURCE_SERVICE.read(RESOURCE_NAME_DBSCRIPTED).
                     getProvision(anyObjectTO.getType()).get().getSyncToken());
         } finally {
-            resourceService.update(originalResource);
+            RESOURCE_SERVICE.update(originalResource);
         }
     }
 
@@ -614,29 +614,30 @@
             reconFilterBuilder.setType(IdMImplementationType.RECON_FILTER_BUILDER);
             reconFilterBuilder.setBody(IOUtils.toString(
                     getClass().getResourceAsStream("/TestReconFilterBuilder.groovy"), StandardCharsets.UTF_8));
-            Response response = implementationService.create(reconFilterBuilder);
-            reconFilterBuilder = implementationService.read(
+            Response response = IMPLEMENTATION_SERVICE.create(reconFilterBuilder);
+            reconFilterBuilder = IMPLEMENTATION_SERVICE.read(
                     reconFilterBuilder.getType(), response.getHeaderString(RESTHeaders.RESOURCE_KEY));
             assertNotNull(reconFilterBuilder);
 
-            task = taskService.read(TaskType.PULL, "7c2242f4-14af-4ab5-af31-cdae23783655", true);
+            task = TASK_SERVICE.read(TaskType.PULL, "7c2242f4-14af-4ab5-af31-cdae23783655", true);
             task.setPullMode(PullMode.FILTERED_RECONCILIATION);
             task.setReconFilterBuilder(reconFilterBuilder.getKey());
-            response = taskService.create(TaskType.PULL, task);
+            response = TASK_SERVICE.create(TaskType.PULL, task);
             task = getObject(response.getLocation(), TaskService.class, PullTaskTO.class);
             assertNotNull(task);
             assertEquals(reconFilterBuilder.getKey(), task.getReconFilterBuilder());
 
             // 3. exec task
-            ExecTO execution = execProvisioningTask(taskService, TaskType.PULL, task.getKey(), MAX_WAIT_SECONDS, false);
+            ExecTO execution = execProvisioningTask(
+                    TASK_SERVICE, TaskType.PULL, task.getKey(), MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
 
             // 4. verify that only enabled user was pulled
-            userTO = userService.read("user2");
+            userTO = USER_SERVICE.read("user2");
             assertNotNull(userTO);
 
             try {
-                userService.read("user1");
+                USER_SERVICE.read("user1");
                 fail("This should not happen");
             } catch (SyncopeClientException e) {
                 assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -645,18 +646,18 @@
             jdbcTemplate.execute("DELETE FROM testpull WHERE id = '" + user1OnTestPull + '\'');
             jdbcTemplate.execute("DELETE FROM testpull WHERE id = '" + user2OnTestPull + '\'');
             if (task != null && !"7c2242f4-14af-4ab5-af31-cdae23783655".equals(task.getKey())) {
-                taskService.delete(TaskType.PULL, task.getKey());
+                TASK_SERVICE.delete(TaskType.PULL, task.getKey());
             }
             if (userTO != null) {
-                userService.delete(userTO.getKey());
+                USER_SERVICE.delete(userTO.getKey());
             }
         }
     }
 
     @Test
     public void syncTokenWithErrors() {
-        ResourceTO origResource = resourceService.read(RESOURCE_NAME_DBPULL);
-        ConnInstanceTO origConnector = connectorService.read(origResource.getConnector(), null);
+        ResourceTO origResource = RESOURCE_SERVICE.read(RESOURCE_NAME_DBPULL);
+        ConnInstanceTO origConnector = CONNECTOR_SERVICE.read(origResource.getConnector(), null);
 
         ResourceTO resForTest = SerializationUtils.clone(origResource);
         resForTest.setKey("syncTokenWithErrors");
@@ -674,9 +675,9 @@
             assertTrue(changeLogColumn.getValues().isEmpty());
             changeLogColumn.getValues().add("lastModification");
 
-            Response response = connectorService.create(connForTest);
+            Response response = CONNECTOR_SERVICE.create(connForTest);
             if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-                throw (RuntimeException) clientFactory.getExceptionMapper().fromResponse(response);
+                throw (RuntimeException) CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
             }
             connForTest = getObject(response.getLocation(), ConnectorService.class, ConnInstanceTO.class);
             assertNotNull(connForTest);
@@ -695,9 +696,9 @@
             pullTask.setPerformUpdate(true);
             pullTask.setPerformDelete(true);
 
-            response = taskService.create(TaskType.PULL, pullTask);
+            response = TASK_SERVICE.create(TaskType.PULL, pullTask);
             if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-                throw (RuntimeException) clientFactory.getExceptionMapper().fromResponse(response);
+                throw (RuntimeException) CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
             }
             pullTask = getObject(response.getLocation(), TaskService.class, PullTaskTO.class);
             assertNotNull(pullTask);
@@ -710,25 +711,25 @@
                     + "(1041, 'syncTokenWithErrors2', 'Surname2', "
                     + "false, 'syncTokenWithErrors1@syncope.apache.org', '2015-05-23 13:53:24.293')");
 
-            ExecTO exec = execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
+            ExecTO exec = execProvisioningTask(TASK_SERVICE, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(exec.getStatus()));
 
-            resForTest = resourceService.read(resForTest.getKey());
+            resForTest = RESOURCE_SERVICE.read(resForTest.getKey());
             assertTrue(resForTest.getProvision(AnyTypeKind.USER.name()).get().getSyncToken().contains("2014-05-23"));
 
             jdbcTemplate.execute("UPDATE testpull "
                     + "SET email='syncTokenWithErrors2@syncope.apache.org', lastModification='2016-05-23 13:53:24.293' "
                     + "WHERE ID=1041");
 
-            exec = execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
+            exec = execProvisioningTask(TASK_SERVICE, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(exec.getStatus()));
 
-            resForTest = resourceService.read(resForTest.getKey());
+            resForTest = RESOURCE_SERVICE.read(resForTest.getKey());
             assertTrue(resForTest.getProvision(AnyTypeKind.USER.name()).get().getSyncToken().contains("2016-05-23"));
         } finally {
             if (resForTest.getConnector() != null) {
-                resourceService.delete(resForTest.getKey());
-                connectorService.delete(connForTest.getKey());
+                RESOURCE_SERVICE.delete(resForTest.getKey());
+                CONNECTOR_SERVICE.delete(connForTest.getKey());
             }
 
             jdbcTemplate.execute("DELETE FROM testpull WHERE ID=1040");
@@ -742,7 +743,7 @@
         ldapCleanup();
 
         // 1. create ldap cloned resource, where 'userId' (mandatory on Syncope) is removed from mapping
-        ResourceTO ldap = resourceService.read(RESOURCE_NAME_LDAP);
+        ResourceTO ldap = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
         ldap.setKey("ldapForRemediation");
 
         ProvisionTO provision = ldap.getProvision(AnyTypeKind.USER.name()).get();
@@ -756,16 +757,16 @@
         ldap = createResource(ldap);
 
         // 2. create PullTask with remediation enabled, for the new resource
-        PullTaskTO pullTask = (PullTaskTO) taskService.search(new TaskQuery.Builder(TaskType.PULL).
+        PullTaskTO pullTask = (PullTaskTO) TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PULL).
                 resource(RESOURCE_NAME_LDAP).build()).getResult().get(0);
         assertNotNull(pullTask);
         pullTask.setResource(ldap.getKey());
         pullTask.setRemediation(true);
         pullTask.getActions().clear();
 
-        Response response = taskService.create(TaskType.PULL, pullTask);
+        Response response = TASK_SERVICE.create(TaskType.PULL, pullTask);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
-            throw (RuntimeException) clientFactory.getExceptionMapper().fromResponse(response);
+            throw (RuntimeException) CLIENT_FACTORY.getExceptionMapper().fromResponse(response);
         }
         pullTask = getObject(response.getLocation(), TaskService.class, PullTaskTO.class);
         assertNotNull(pullTask);
@@ -773,20 +774,20 @@
         try {
             // 3. execute the pull task and verify that:
             ExecTO execution = execProvisioningTask(
-                    taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
+                    TASK_SERVICE, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
 
             // 3a. user was not pulled
             try {
-                userService.read("pullFromLDAP");
+                USER_SERVICE.read("pullFromLDAP");
                 fail("This should never happen");
             } catch (SyncopeClientException e) {
                 assertEquals(ClientExceptionType.NotFound, e.getType());
             }
 
             // 3b. remediation was created
-            Optional<RemediationTO> remediation = remediationService.list(
-                            new RemediationQuery.Builder().page(1).size(1000).build()).getResult().stream().
+            Optional<RemediationTO> remediation = REMEDIATION_SERVICE.list(
+                    new RemediationQuery.Builder().page(1).size(1000).build()).getResult().stream().
                     filter(r -> "uid=pullFromLDAP,ou=People,o=isp".equalsIgnoreCase(r.getRemoteName())).
                     findFirst();
             assertTrue(remediation.isPresent());
@@ -804,22 +805,22 @@
             String email = userCR.getPlainAttr("email").get().getValues().get(0);
             userCR.getPlainAttrs().add(new Attr.Builder("userId").value(email).build());
 
-            remediationService.remedy(remediation.get().getKey(), userCR);
+            REMEDIATION_SERVICE.remedy(remediation.get().getKey(), userCR);
 
             // 5. user is now found
-            UserTO user = userService.read("pullFromLDAP");
+            UserTO user = USER_SERVICE.read("pullFromLDAP");
             assertNotNull(user);
             assertEquals(email, user.getPlainAttr("userId").get().getValues().get(0));
 
             // 6. remediation was removed
             try {
-                remediationService.read(remediation.get().getKey());
+                REMEDIATION_SERVICE.read(remediation.get().getKey());
                 fail("This should never happen");
             } catch (SyncopeClientException e) {
                 assertEquals(ClientExceptionType.NotFound, e.getType());
             }
         } finally {
-            resourceService.delete(ldap.getKey());
+            RESOURCE_SERVICE.delete(ldap.getKey());
         }
     }
 
@@ -828,7 +829,7 @@
         // First of all, clear any potential conflict with existing user / group
         ldapCleanup();
 
-        ResourceTO ldap = resourceService.read(RESOURCE_NAME_LDAP);
+        ResourceTO ldap = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
         ldap.setKey("ldapForRemediationSinglePull");
 
         ProvisionTO provision = ldap.getProvision(AnyTypeKind.USER.name()).get();
@@ -853,14 +854,14 @@
             pullTask.setMatchingRule(MatchingRule.UPDATE);
 
             try {
-                reconciliationService.pull(new ReconQuery.Builder(AnyTypeKind.USER.name(), ldap.getKey()).fiql(
+                RECONCILIATION_SERVICE.pull(new ReconQuery.Builder(AnyTypeKind.USER.name(), ldap.getKey()).fiql(
                         "uid==pullFromLDAP").build(), pullTask);
                 fail("Should not arrive here");
             } catch (SyncopeClientException sce) {
                 assertEquals(ClientExceptionType.Reconciliation, sce.getType());
             }
-            Optional<RemediationTO> remediation = remediationService.list(
-                            new RemediationQuery.Builder().page(1).size(1000).build()).getResult().stream().
+            Optional<RemediationTO> remediation = REMEDIATION_SERVICE.list(
+                    new RemediationQuery.Builder().page(1).size(1000).build()).getResult().stream().
                     filter(r -> "uid=pullFromLDAP,ou=People,o=isp".equalsIgnoreCase(r.getRemoteName())).
                     findFirst();
             assertTrue(remediation.isPresent());
@@ -872,7 +873,7 @@
             assertTrue(remediation.get().getError().contains(
                     "SyncopeClientCompositeException: {[RequiredValuesMissing [userId]]}"));
         } finally {
-            resourceService.delete(ldap.getKey());
+            RESOURCE_SERVICE.delete(ldap.getKey());
             cleanUpRemediations();
         }
     }
@@ -918,23 +919,23 @@
             //-----------------------------
 
             // Update pull task
-            PullTaskTO task = taskService.read(TaskType.PULL, "81d88f73-d474-4450-9031-605daa4e313f", true);
+            PullTaskTO task = TASK_SERVICE.read(TaskType.PULL, "81d88f73-d474-4450-9031-605daa4e313f", true);
             assertNotNull(task);
 
             task.getTemplates().put(AnyTypeKind.USER.name(), template);
 
-            taskService.update(TaskType.PULL, task);
-            PullTaskTO actual = taskService.read(TaskType.PULL, task.getKey(), true);
+            TASK_SERVICE.update(TaskType.PULL, task);
+            PullTaskTO actual = TASK_SERVICE.read(TaskType.PULL, task.getKey(), true);
             assertNotNull(actual);
             assertEquals(task.getKey(), actual.getKey());
             assertFalse(actual.getTemplates().get(AnyTypeKind.USER.name()).getResources().isEmpty());
             assertFalse(((UserTO) actual.getTemplates().get(AnyTypeKind.USER.name())).getMemberships().isEmpty());
 
             ExecTO execution = execProvisioningTask(
-                    taskService, TaskType.PULL, actual.getKey(), MAX_WAIT_SECONDS, false);
+                    TASK_SERVICE, TaskType.PULL, actual.getKey(), MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
 
-            userTO = userService.read("testuser2");
+            userTO = USER_SERVICE.read("testuser2");
             assertNotNull(userTO);
             assertEquals("testuser2@syncope.apache.org", userTO.getPlainAttr("userId").get().getValues().get(0));
             assertEquals(2, userTO.getMemberships().size());
@@ -957,10 +958,10 @@
 
         // 2. execute PullTask for resource-db-pull (table TESTPULL on external H2)
         execProvisioningTask(
-                taskService, TaskType.PULL, "7c2242f4-14af-4ab5-af31-cdae23783655", MAX_WAIT_SECONDS, false);
+                TASK_SERVICE, TaskType.PULL, "7c2242f4-14af-4ab5-af31-cdae23783655", MAX_WAIT_SECONDS, false);
 
         // 3. read e-mail address for user created by the PullTask first execution
-        UserTO userTO = userService.read("issuesyncope230");
+        UserTO userTO = USER_SERVICE.read("issuesyncope230");
         assertNotNull(userTO);
         String email = userTO.getPlainAttr("email").get().getValues().iterator().next();
         assertNotNull(email);
@@ -970,10 +971,10 @@
 
         // 5. re-execute the PullTask
         execProvisioningTask(
-                taskService, TaskType.PULL, "7c2242f4-14af-4ab5-af31-cdae23783655", MAX_WAIT_SECONDS, false);
+                TASK_SERVICE, TaskType.PULL, "7c2242f4-14af-4ab5-af31-cdae23783655", MAX_WAIT_SECONDS, false);
 
         // 6. verify that the e-mail was updated
-        userTO = userService.read("issuesyncope230");
+        userTO = USER_SERVICE.read("issuesyncope230");
         assertNotNull(userTO);
         email = userTO.getPlainAttr("email").get().getValues().iterator().next();
         assertNotNull(email);
@@ -987,7 +988,7 @@
         // -----------------------------
         ImplementationTO corrRule = null;
         try {
-            corrRule = implementationService.read(IdMImplementationType.PULL_CORRELATION_RULE, "TestPullRule");
+            corrRule = IMPLEMENTATION_SERVICE.read(IdMImplementationType.PULL_CORRELATION_RULE, "TestPullRule");
         } catch (SyncopeClientException e) {
             if (e.getType().getResponseStatus() == Response.Status.NOT_FOUND) {
                 corrRule = new ImplementationTO();
@@ -996,17 +997,17 @@
                 corrRule.setType(IdMImplementationType.PULL_CORRELATION_RULE);
                 corrRule.setBody(IOUtils.toString(
                         getClass().getResourceAsStream("/TestPullRule.groovy"), StandardCharsets.UTF_8));
-                Response response = implementationService.create(corrRule);
-                corrRule = implementationService.read(
+                Response response = IMPLEMENTATION_SERVICE.create(corrRule);
+                corrRule = IMPLEMENTATION_SERVICE.read(
                         corrRule.getType(), response.getHeaderString(RESTHeaders.RESOURCE_KEY));
                 assertNotNull(corrRule);
             }
         }
         assertNotNull(corrRule);
 
-        PullPolicyTO policyTO = policyService.read(PolicyType.PULL, "9454b0d7-2610-400a-be82-fc23cf553dd6");
+        PullPolicyTO policyTO = POLICY_SERVICE.read(PolicyType.PULL, "9454b0d7-2610-400a-be82-fc23cf553dd6");
         policyTO.getCorrelationRules().put(AnyTypeKind.USER.name(), corrRule.getKey());
-        policyService.update(PolicyType.PULL, policyTO);
+        POLICY_SERVICE.update(PolicyType.PULL, policyTO);
         // -----------------------------
 
         PullTaskTO task = new PullTaskTO();
@@ -1019,7 +1020,7 @@
         task.setPerformDelete(true);
         task.setPerformUpdate(true);
 
-        Response response = taskService.create(TaskType.PULL, task);
+        Response response = TASK_SERVICE.create(TaskType.PULL, task);
         task = getObject(response.getLocation(), TaskService.class, PullTaskTO.class);
 
         UserCR userCR = UserITCase.getUniqueSample("s258_1@apache.org");
@@ -1039,11 +1040,11 @@
         userUR.setKey(userTO.getKey());
         userUR.getPlainAttrs().add(attrAddReplacePatch("email", "s258@apache.org"));
 
-        userService.update(userUR);
+        USER_SERVICE.update(userUR);
 
-        execProvisioningTask(taskService, TaskType.PULL, task.getKey(), MAX_WAIT_SECONDS, false);
+        execProvisioningTask(TASK_SERVICE, TaskType.PULL, task.getKey(), MAX_WAIT_SECONDS, false);
 
-        PullTaskTO executed = taskService.read(TaskType.PULL, task.getKey(), true);
+        PullTaskTO executed = TASK_SERVICE.read(TaskType.PULL, task.getKey(), true);
         assertEquals(1, executed.getExecutions().size());
 
         // asser for just one match
@@ -1066,12 +1067,12 @@
             assertEquals(ExecStatus.SUCCESS, result.getPropagationStatuses().get(0).getStatus());
 
             ExecTO taskExecTO = execProvisioningTask(
-                    taskService, TaskType.PULL, "986867e2-993b-430e-8feb-aa9abb4c1dcd", MAX_WAIT_SECONDS, false);
+                    TASK_SERVICE, TaskType.PULL, "986867e2-993b-430e-8feb-aa9abb4c1dcd", MAX_WAIT_SECONDS, false);
 
             assertNotNull(taskExecTO.getStatus());
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(taskExecTO.getStatus()));
 
-            userTO = userService.read(userTO.getKey());
+            userTO = USER_SERVICE.read(userTO.getKey());
             assertNotNull(userTO);
             assertNotNull(userTO.getPlainAttr("firstname").get().getValues().get(0));
         } finally {
@@ -1093,11 +1094,11 @@
         UserTO userTO = createUser(userCR).getEntity();
         assertNotNull(userTO);
 
-        userTO = userService.read(userTO.getKey());
+        userTO = USER_SERVICE.read(userTO.getKey());
         assertTrue(userTO.getVirAttrs().isEmpty());
 
         // Update pull task
-        PullTaskTO task = taskService.read(TaskType.PULL, "38abbf9e-a1a3-40a1-a15f-7d0ac02f47f1", true);
+        PullTaskTO task = TASK_SERVICE.read(TaskType.PULL, "38abbf9e-a1a3-40a1-a15f-7d0ac02f47f1", true);
         assertNotNull(task);
 
         UserTO template = new UserTO();
@@ -1107,10 +1108,10 @@
 
         task.getTemplates().put(AnyTypeKind.USER.name(), template);
 
-        taskService.update(TaskType.PULL, task);
+        TASK_SERVICE.update(TaskType.PULL, task);
 
         // exec task: one user from CSV will match the user created above and template will be applied
-        ExecTO exec = execProvisioningTask(taskService, TaskType.PULL, task.getKey(), MAX_WAIT_SECONDS, false);
+        ExecTO exec = execProvisioningTask(TASK_SERVICE, TaskType.PULL, task.getKey(), MAX_WAIT_SECONDS, false);
 
         // check that template was successfully applied
         // 1. propagation to db
@@ -1122,7 +1123,7 @@
         assertEquals("virtualvalue", value);
 
         // 2. virtual attribute
-        userTO = userService.read(userTO.getKey());
+        userTO = USER_SERVICE.read(userTO.getKey());
         assertEquals("virtualvalue", userTO.getVirAttr("virtualdata").get().getValues().get(0));
     }
 
@@ -1153,8 +1154,8 @@
         pullActions.setEngine(ImplementationEngine.JAVA);
         pullActions.setType(IdMImplementationType.PULL_ACTIONS);
         pullActions.setBody(DBPasswordPullActions.class.getName());
-        Response response = implementationService.create(pullActions);
-        pullActions = implementationService.read(
+        Response response = IMPLEMENTATION_SERVICE.create(pullActions);
+        pullActions = IMPLEMENTATION_SERVICE.read(
                 pullActions.getType(), response.getHeaderString(RESTHeaders.RESOURCE_KEY));
         assertNotNull(pullActions);
 
@@ -1167,26 +1168,27 @@
         pullTask.setPullMode(PullMode.FULL_RECONCILIATION);
         pullTask.setResource(RESOURCE_NAME_TESTDB);
         pullTask.getActions().add(pullActions.getKey());
-        Response taskResponse = taskService.create(TaskType.PULL, pullTask);
+        Response taskResponse = TASK_SERVICE.create(TaskType.PULL, pullTask);
 
         PullTaskTO actual = getObject(taskResponse.getLocation(), TaskService.class, PullTaskTO.class);
         assertNotNull(actual);
 
-        pullTask = taskService.read(TaskType.PULL, actual.getKey(), true);
+        pullTask = TASK_SERVICE.read(TaskType.PULL, actual.getKey(), true);
         assertNotNull(pullTask);
         assertEquals(actual.getKey(), pullTask.getKey());
         assertEquals(actual.getJobDelegate(), pullTask.getJobDelegate());
 
-        ExecTO execution = execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
+        ExecTO execution = execProvisioningTask(
+                TASK_SERVICE, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
         assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
 
         // 5. Test the pulled user
         Triple<Map<String, Set<String>>, List<String>, UserTO> self =
-                clientFactory.create(user.getUsername(), newCleanPassword).self();
+                CLIENT_FACTORY.create(user.getUsername(), newCleanPassword).self();
         assertNotNull(self);
 
         // 6. Delete PullTask + user
-        taskService.delete(TaskType.PULL, pullTask.getKey());
+        TASK_SERVICE.delete(TaskType.PULL, pullTask.getKey());
         deleteUser(user.getKey());
     }
 
@@ -1218,25 +1220,25 @@
 
             // 3. Check that the Syncope user now has the changed password
             Triple<Map<String, Set<String>>, List<String>, UserTO> self =
-                    clientFactory.create(user.getUsername(), newCleanPassword).self();
+                    CLIENT_FACTORY.create(user.getUsername(), newCleanPassword).self();
             assertNotNull(self);
 
             // 4. Check that the LDAP resource has the old password
             ConnObjectTO connObject =
-                    resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), user.getKey());
+                    RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), user.getKey());
             assertNotNull(getLdapRemoteObject(
                     connObject.getAttr(Name.NAME).get().getValues().get(0),
                     oldCleanPassword,
                     connObject.getAttr(Name.NAME).get().getValues().get(0)));
 
             // 5. Update the LDAP Connector to retrieve passwords
-            ResourceTO ldapResource = resourceService.read(RESOURCE_NAME_LDAP);
-            resourceConnector = connectorService.read(
+            ResourceTO ldapResource = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
+            resourceConnector = CONNECTOR_SERVICE.read(
                     ldapResource.getConnector(), Locale.ENGLISH.getLanguage());
             property = resourceConnector.getConf("retrievePasswordsWithSearch").get();
             property.getValues().clear();
             property.getValues().add(Boolean.TRUE);
-            connectorService.update(resourceConnector);
+            CONNECTOR_SERVICE.update(resourceConnector);
 
             // 6. Pull the user from the resource
             ImplementationTO pullActions = new ImplementationTO();
@@ -1244,8 +1246,8 @@
             pullActions.setEngine(ImplementationEngine.JAVA);
             pullActions.setType(IdMImplementationType.PULL_ACTIONS);
             pullActions.setBody(LDAPPasswordPullActions.class.getName());
-            Response response = implementationService.create(pullActions);
-            pullActions = implementationService.read(
+            Response response = IMPLEMENTATION_SERVICE.create(pullActions);
+            pullActions = IMPLEMENTATION_SERVICE.read(
                     pullActions.getType(), response.getHeaderString(RESTHeaders.RESOURCE_KEY));
             assertNotNull(pullActions);
 
@@ -1258,30 +1260,30 @@
             pullTask.setPullMode(PullMode.FULL_RECONCILIATION);
             pullTask.setResource(RESOURCE_NAME_LDAP);
             pullTask.getActions().add(pullActions.getKey());
-            Response taskResponse = taskService.create(TaskType.PULL, pullTask);
+            Response taskResponse = TASK_SERVICE.create(TaskType.PULL, pullTask);
 
             pullTask = getObject(taskResponse.getLocation(), TaskService.class, PullTaskTO.class);
             assertNotNull(pullTask);
 
             ExecTO execution = execProvisioningTask(
-                    taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
+                    TASK_SERVICE, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
 
             // 7. Test the pulled user
-            self = clientFactory.create(user.getUsername(), oldCleanPassword).self();
+            self = CLIENT_FACTORY.create(user.getUsername(), oldCleanPassword).self();
             assertNotNull(self);
         } catch (Exception e) {
             fail(e::getMessage);
         } finally {
             // Delete PullTask + user + reset the connector
             if (pullTask != null) {
-                taskService.delete(TaskType.PULL, pullTask.getKey());
+                TASK_SERVICE.delete(TaskType.PULL, pullTask.getKey());
             }
 
             if (resourceConnector != null && property != null) {
                 property.getValues().clear();
                 property.getValues().add(Boolean.FALSE);
-                connectorService.update(resourceConnector);
+                CONNECTOR_SERVICE.update(resourceConnector);
             }
 
             if (user != null) {
@@ -1318,26 +1320,26 @@
             template.getPlainAttrs().add(attr("firstname", "'fixed'"));
             pullTask.getTemplates().put(AnyTypeKind.USER.name(), template);
 
-            Response taskResponse = taskService.create(TaskType.PULL, pullTask);
+            Response taskResponse = TASK_SERVICE.create(TaskType.PULL, pullTask);
             pullTask = getObject(taskResponse.getLocation(), TaskService.class, PullTaskTO.class);
             assertNotNull(pullTask);
             assertFalse(pullTask.getTemplates().isEmpty());
 
             // 3. exec the pull task
             ExecTO execution = execProvisioningTask(
-                    taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
+                    TASK_SERVICE, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
 
             // the user is successfully pulled...
-            user = userService.read("pullFromLDAP");
+            user = USER_SERVICE.read("pullFromLDAP");
             assertNotNull(user);
             assertEquals("pullFromLDAP@syncope.apache.org", user.getPlainAttr("email").get().getValues().get(0));
 
-            group = groupService.read("testLDAPGroup");
+            group = GROUP_SERVICE.read("testLDAPGroup");
             assertNotNull(group);
 
             ConnObjectTO connObject =
-                    resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), user.getKey());
+                    RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), user.getKey());
             assertNotNull(connObject);
             assertEquals("pullFromLDAP@syncope.apache.org", connObject.getAttr("mail").get().getValues().get(0));
             Attr userDn = connObject.getAttr(Name.NAME).get();
@@ -1347,7 +1349,7 @@
                     getLdapRemoteObject(RESOURCE_LDAP_ADMIN_DN, RESOURCE_LDAP_ADMIN_PWD, userDn.getValues().get(0)));
 
             // ...and propagated
-            PagedResult<TaskTO> propagationTasks = taskService.search(new TaskQuery.Builder(TaskType.PROPAGATION).
+            PagedResult<TaskTO> propagationTasks = TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PROPAGATION).
                     resource(RESOURCE_NAME_DBPULL).
                     anyTypeKind(AnyTypeKind.USER).entityKey(user.getKey()).build());
             assertEquals(1, propagationTasks.getSize());
@@ -1356,21 +1358,21 @@
             updateLdapRemoteObject(RESOURCE_LDAP_ADMIN_DN, RESOURCE_LDAP_ADMIN_PWD,
                     userDn.getValues().get(0), Map.of("mail", "pullFromLDAP2@syncope.apache.org"));
 
-            connObject = resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), user.getKey());
+            connObject = RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), user.getKey());
             assertNotNull(connObject);
             assertEquals("pullFromLDAP2@syncope.apache.org", connObject.getAttr("mail").get().getValues().get(0));
 
             // 5. exec the pull task again
-            execution = execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
+            execution = execProvisioningTask(TASK_SERVICE, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
 
             // the internal is updated...
-            user = userService.read("pullFromLDAP");
+            user = USER_SERVICE.read("pullFromLDAP");
             assertNotNull(user);
             assertEquals("pullFromLDAP2@syncope.apache.org", user.getPlainAttr("email").get().getValues().get(0));
 
             // ...and propagated
-            propagationTasks = taskService.search(new TaskQuery.Builder(TaskType.PROPAGATION).
+            propagationTasks = TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PROPAGATION).
                     resource(RESOURCE_NAME_DBPULL).
                     anyTypeKind(AnyTypeKind.USER).entityKey(user.getKey()).build());
             assertEquals(2, propagationTasks.getSize());
@@ -1379,18 +1381,18 @@
             fail(e::getMessage);
         } finally {
             if (pullTask != null) {
-                taskService.delete(TaskType.PULL, pullTask.getKey());
+                TASK_SERVICE.delete(TaskType.PULL, pullTask.getKey());
             }
 
             if (propagationGroup != null) {
-                groupService.delete(propagationGroup.getKey());
+                GROUP_SERVICE.delete(propagationGroup.getKey());
             }
 
             if (group != null) {
-                groupService.delete(group.getKey());
+                GROUP_SERVICE.delete(group.getKey());
             }
             if (user != null) {
-                userService.delete(user.getKey());
+                USER_SERVICE.delete(user.getKey());
             }
         }
     }
@@ -1419,21 +1421,20 @@
             pullTask.setPullMode(PullMode.FULL_RECONCILIATION);
             pullTask.setResource(RESOURCE_NAME_LDAP);
 
-            Response taskResponse = taskService.create(TaskType.PULL, pullTask);
+            Response taskResponse = TASK_SERVICE.create(TaskType.PULL, pullTask);
             pullTask = getObject(taskResponse.getLocation(), TaskService.class, PullTaskTO.class);
             assertNotNull(pullTask);
 
             ExecTO execution = execProvisioningTask(
-                    taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
+                    TASK_SERVICE, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
 
-            UserTO pullFromLDAP_issue1656 = userService.read("pullFromLDAP_issue1656");
+            UserTO pullFromLDAP4issue1656 = USER_SERVICE.read("pullFromLDAP_issue1656");
             assertEquals("pullFromLDAP_issue1656@syncope.apache.org",
-                    pullFromLDAP_issue1656.getPlainAttr("email").get().getValues().get(0));
+                    pullFromLDAP4issue1656.getPlainAttr("email").get().getValues().get(0));
             // 2. Edit mail attribute directly on the resource in order to have a not valid email
-            ConnObjectTO connObject =
-                    resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(),
-                            pullFromLDAP_issue1656.getKey());
+            ConnObjectTO connObject = RESOURCE_SERVICE.readConnObject(
+                    RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), pullFromLDAP4issue1656.getKey());
             assertNotNull(connObject);
             assertEquals("pullFromLDAP_issue1656@syncope.apache.org",
                     connObject.getAttr("mail").get().getValues().get(0));
@@ -1443,18 +1444,18 @@
             updateLdapRemoteObject(RESOURCE_LDAP_ADMIN_DN, RESOURCE_LDAP_ADMIN_PWD,
                     userDn.getValues().get(0), Collections.singletonMap("mail", "pullFromLDAP_issue1656@"));
             // 3. Pull again from resource-ldap
-            execution = execProvisioningTask(taskService, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
+            execution = execProvisioningTask(TASK_SERVICE, TaskType.PULL, pullTask.getKey(), MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(execution.getStatus()));
             assertTrue(execution.getMessage().contains("UPDATE FAILURE"));
-            pullFromLDAP_issue1656 = userService.read("pullFromLDAP_issue1656");
+            pullFromLDAP4issue1656 = USER_SERVICE.read("pullFromLDAP_issue1656");
             assertEquals("pullFromLDAP_issue1656@syncope.apache.org",
-                    pullFromLDAP_issue1656.getPlainAttr("email").get().getValues().get(0));
-            final String pullFromLDAP_issue1656_key = pullFromLDAP_issue1656.getKey();
+                    pullFromLDAP4issue1656.getPlainAttr("email").get().getValues().get(0));
+            String pullFromLDAP4issue1656Key = pullFromLDAP4issue1656.getKey();
             // a remediation for pullFromLDAP_issue1656 email should have been created
             PagedResult<RemediationTO> remediations =
-                    remediationService.list(new RemediationQuery.Builder().page(1).size(10).build());
+                    REMEDIATION_SERVICE.list(new RemediationQuery.Builder().page(1).size(10).build());
             assertTrue(remediations.getResult().stream().filter(r -> r.getAnyURPayload() != null).anyMatch(
-                    r -> pullFromLDAP_issue1656_key.equals(r.getAnyURPayload().getKey())));
+                    r -> pullFromLDAP4issue1656Key.equals(r.getAnyURPayload().getKey())));
             assertTrue(remediations.getResult().stream().anyMatch(r -> StringUtils.contains(r.getError(),
                     "\"pullFromLDAP_issue1656@\" is not a valid email address")));
         } finally {
@@ -1466,8 +1467,8 @@
     }
 
     private void cleanUpRemediations() {
-        remediationService.list(new RemediationQuery.Builder().page(1).size(100).build()).getResult().forEach(
-                r -> remediationService.delete(r.getKey()));
+        REMEDIATION_SERVICE.list(new RemediationQuery.Builder().page(1).size(100).build()).getResult().forEach(
+                r -> REMEDIATION_SERVICE.delete(r.getKey()));
     }
 
     private Pair<String, Set<Attribute>> prepareLdapAttributes(
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PushTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PushTaskITCase.java
index e7d705d..e635897 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PushTaskITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PushTaskITCase.java
@@ -33,24 +33,24 @@
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.request.GroupCR;
 import org.apache.syncope.common.lib.to.AnyTypeClassTO;
-import org.apache.syncope.common.lib.to.PagedResult;
-import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.ItemTO;
 import org.apache.syncope.common.lib.to.MappingTO;
 import org.apache.syncope.common.lib.to.NotificationTO;
 import org.apache.syncope.common.lib.to.NotificationTaskTO;
+import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
 import org.apache.syncope.common.lib.to.ProvisionTO;
+import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.common.lib.to.ReconStatus;
 import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.AttrSchemaType;
-import org.apache.syncope.common.lib.types.MappingPurpose;
-import org.apache.syncope.common.lib.types.MatchingRule;
 import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.syncope.common.lib.types.IdMImplementationType;
+import org.apache.syncope.common.lib.types.MappingPurpose;
+import org.apache.syncope.common.lib.types.MatchingRule;
 import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.lib.types.TraceLevel;
@@ -68,14 +68,14 @@
 
     @Test
     public void getPushActionsClasses() {
-        Set<String> actions = adminClient.platform().
+        Set<String> actions = ADMIN_CLIENT.platform().
                 getJavaImplInfo(IdMImplementationType.PUSH_ACTIONS).get().getClasses();
         assertNotNull(actions);
     }
 
     @Test
     public void read() {
-        PushTaskTO pushTaskTO = taskService.<PushTaskTO>read(
+        PushTaskTO pushTaskTO = TASK_SERVICE.<PushTaskTO>read(
                 TaskType.PUSH, "0bc11a19-6454-45c2-a4e3-ceef84e5d79b", true);
         assertEquals(UnmatchingRule.ASSIGN, pushTaskTO.getUnmatchingRule());
         assertEquals(MatchingRule.UPDATE, pushTaskTO.getMatchingRule());
@@ -83,7 +83,7 @@
 
     @Test
     public void list() {
-        PagedResult<PushTaskTO> tasks = taskService.search(new TaskQuery.Builder(TaskType.PUSH).build());
+        PagedResult<PushTaskTO> tasks = TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PUSH).build());
         assertFalse(tasks.getResult().isEmpty());
         tasks.getResult().stream().
                 filter((task) -> (!(task instanceof PushTaskTO))).
@@ -102,11 +102,11 @@
                 SyncopeClient.getGroupSearchConditionBuilder().isNotNull("cool").query());
         task.setMatchingRule(MatchingRule.LINK);
 
-        Response response = taskService.create(TaskType.PUSH, task);
+        Response response = TASK_SERVICE.create(TaskType.PUSH, task);
         PushTaskTO actual = getObject(response.getLocation(), TaskService.class, PushTaskTO.class);
         assertNotNull(actual);
 
-        task = taskService.read(TaskType.PUSH, actual.getKey(), true);
+        task = TASK_SERVICE.read(TaskType.PUSH, actual.getKey(), true);
         assertNotNull(task);
         assertEquals(task.getKey(), actual.getKey());
         assertEquals(task.getJobDelegate(), actual.getJobDelegate());
@@ -120,27 +120,27 @@
 
     @Test
     public void pushMatchingUnmatchingGroups() {
-        assertFalse(groupService.read("29f96485-729e-4d31-88a1-6fc60e4677f3").
+        assertFalse(GROUP_SERVICE.read("29f96485-729e-4d31-88a1-6fc60e4677f3").
                 getResources().contains(RESOURCE_NAME_LDAP));
 
         execProvisioningTask(
-                taskService, TaskType.PUSH, "fd905ba5-9d56-4f51-83e2-859096a67b75", MAX_WAIT_SECONDS, false);
+                TASK_SERVICE, TaskType.PUSH, "fd905ba5-9d56-4f51-83e2-859096a67b75", MAX_WAIT_SECONDS, false);
 
-        assertNotNull(resourceService.readConnObject(
+        assertNotNull(RESOURCE_SERVICE.readConnObject(
                 RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), "29f96485-729e-4d31-88a1-6fc60e4677f3"));
-        assertTrue(groupService.read("29f96485-729e-4d31-88a1-6fc60e4677f3").
+        assertTrue(GROUP_SERVICE.read("29f96485-729e-4d31-88a1-6fc60e4677f3").
                 getResources().contains(RESOURCE_NAME_LDAP));
     }
 
     @Test
     public void pushUnmatchingUsers() throws Exception {
-        assertFalse(userService.read("74cd8ece-715a-44a4-a736-e17b46c4e7e6").
+        assertFalse(USER_SERVICE.read("74cd8ece-715a-44a4-a736-e17b46c4e7e6").
                 getResources().contains(RESOURCE_NAME_TESTDB2));
-        assertFalse(userService.read("b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee").
+        assertFalse(USER_SERVICE.read("b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee").
                 getResources().contains(RESOURCE_NAME_TESTDB2));
-        assertFalse(userService.read("c9b2dec2-00a7-4855-97c0-d854842b4b24").
+        assertFalse(USER_SERVICE.read("c9b2dec2-00a7-4855-97c0-d854842b4b24").
                 getResources().contains(RESOURCE_NAME_TESTDB2));
-        assertTrue(userService.read("823074dc-d280-436d-a7dd-07399fae48ec").
+        assertTrue(USER_SERVICE.read("823074dc-d280-436d-a7dd-07399fae48ec").
                 getResources().contains(RESOURCE_NAME_TESTDB2));
 
         JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
@@ -150,9 +150,9 @@
         // Unmatching --> Assign --> dryRuyn
         // ------------------------------------------
         execProvisioningTask(
-                taskService, TaskType.PUSH, "af558be4-9d2f-4359-bf85-a554e6e90be1", MAX_WAIT_SECONDS, true);
+                TASK_SERVICE, TaskType.PUSH, "af558be4-9d2f-4359-bf85-a554e6e90be1", MAX_WAIT_SECONDS, true);
         assertEquals(0, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='vivaldi'").size());
-        assertFalse(userService.read("b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee").
+        assertFalse(USER_SERVICE.read("b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee").
                 getResources().contains(RESOURCE_NAME_TESTDB2));
         // ------------------------------------------
 
@@ -161,13 +161,13 @@
                 "97f327b6-2eff-4d35-85e8-d581baaab855",
                 "03aa2a04-4881-4573-9117-753f81b04865",
                 "5e5f7c7e-9de7-4c6a-99f1-4df1af959807");
-        execProvisioningTasks(taskService, TaskType.PUSH, pushTaskKeys, MAX_WAIT_SECONDS, false);
+        execProvisioningTasks(TASK_SERVICE, TaskType.PUSH, pushTaskKeys, MAX_WAIT_SECONDS, false);
 
         // ------------------------------------------
         // Unatching --> Ignore
         // ------------------------------------------
         assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='verdi'").size());
-        assertFalse(userService.read("74cd8ece-715a-44a4-a736-e17b46c4e7e6").
+        assertFalse(USER_SERVICE.read("74cd8ece-715a-44a4-a736-e17b46c4e7e6").
                 getResources().contains(RESOURCE_NAME_TESTDB2));
         // ------------------------------------------
 
@@ -175,7 +175,7 @@
         // Unmatching --> Assign
         // ------------------------------------------
         assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='vivaldi'").size());
-        assertTrue(userService.read("b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee").
+        assertTrue(USER_SERVICE.read("b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee").
                 getResources().contains(RESOURCE_NAME_TESTDB2));
         jdbcTemplate.execute("DELETE FROM test2 WHERE ID='vivaldi'");
         // ------------------------------------------
@@ -184,7 +184,7 @@
         // Unmatching --> Provision
         // ------------------------------------------
         assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='bellini'").size());
-        assertFalse(userService.read("c9b2dec2-00a7-4855-97c0-d854842b4b24").
+        assertFalse(USER_SERVICE.read("c9b2dec2-00a7-4855-97c0-d854842b4b24").
                 getResources().contains(RESOURCE_NAME_TESTDB2));
         jdbcTemplate.execute("DELETE FROM test2 WHERE ID='bellini'");
         // ------------------------------------------
@@ -193,16 +193,16 @@
         // Unmatching --> Unlink
         // ------------------------------------------
         assertEquals(0, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='puccini'").size());
-        assertFalse(userService.read("823074dc-d280-436d-a7dd-07399fae48ec").
+        assertFalse(USER_SERVICE.read("823074dc-d280-436d-a7dd-07399fae48ec").
                 getResources().contains(RESOURCE_NAME_TESTDB2));
         // ------------------------------------------
     }
 
     @Test
     public void pushMatchingUser() throws Exception {
-        assertTrue(userService.read("1417acbe-cbf6-4277-9372-e75e04f97000").
+        assertTrue(USER_SERVICE.read("1417acbe-cbf6-4277-9372-e75e04f97000").
                 getResources().contains(RESOURCE_NAME_TESTDB2));
-        assertFalse(userService.read("74cd8ece-715a-44a4-a736-e17b46c4e7e6").
+        assertFalse(USER_SERVICE.read("74cd8ece-715a-44a4-a736-e17b46c4e7e6").
                 getResources().contains(RESOURCE_NAME_TESTDB2));
 
         JdbcTemplate jdbcTemplate = new JdbcTemplate(testDataSource);
@@ -213,8 +213,8 @@
         // Matching --> Deprovision --> dryRuyn
         // ------------------------------------------
         execProvisioningTask(
-                taskService, TaskType.PUSH, "c46edc3a-a18b-4af2-b707-f4a415507496", MAX_WAIT_SECONDS, true);
-        assertTrue(userService.read("1417acbe-cbf6-4277-9372-e75e04f97000").
+                TASK_SERVICE, TaskType.PUSH, "c46edc3a-a18b-4af2-b707-f4a415507496", MAX_WAIT_SECONDS, true);
+        assertTrue(USER_SERVICE.read("1417acbe-cbf6-4277-9372-e75e04f97000").
                 getResources().contains(RESOURCE_NAME_TESTDB2));
         assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='rossini'").size());
         // ------------------------------------------
@@ -223,12 +223,12 @@
                 "ec674143-480a-4816-98ad-b61fa090821e",
                 "c46edc3a-a18b-4af2-b707-f4a415507496",
                 "5e5f7c7e-9de7-4c6a-99f1-4df1af959807");
-        execProvisioningTasks(taskService, TaskType.PUSH, pushTaskKeys, MAX_WAIT_SECONDS, false);
+        execProvisioningTasks(TASK_SERVICE, TaskType.PUSH, pushTaskKeys, MAX_WAIT_SECONDS, false);
 
         // ------------------------------------------
         // Matching --> Deprovision && Ignore
         // ------------------------------------------
-        assertFalse(userService.read("74cd8ece-715a-44a4-a736-e17b46c4e7e6").
+        assertFalse(USER_SERVICE.read("74cd8ece-715a-44a4-a736-e17b46c4e7e6").
                 getResources().contains(RESOURCE_NAME_TESTDB2));
         // DELETE Capability not available ....
         assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='verdi'").size());
@@ -237,7 +237,7 @@
         // ------------------------------------------
         // Matching --> Unassign
         // ------------------------------------------
-        assertFalse(userService.read("1417acbe-cbf6-4277-9372-e75e04f97000").
+        assertFalse(USER_SERVICE.read("1417acbe-cbf6-4277-9372-e75e04f97000").
                 getResources().contains(RESOURCE_NAME_TESTDB2));
         // DELETE Capability not available ....
         assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='rossini'").size());
@@ -247,8 +247,8 @@
         // Matching --> Link
         // ------------------------------------------
         execProvisioningTask(
-                taskService, TaskType.PUSH, "51318433-cce4-4f71-8f45-9534b6c9c819", MAX_WAIT_SECONDS, false);
-        assertTrue(userService.read("74cd8ece-715a-44a4-a736-e17b46c4e7e6").
+                TASK_SERVICE, TaskType.PUSH, "51318433-cce4-4f71-8f45-9534b6c9c819", MAX_WAIT_SECONDS, false);
+        assertTrue(USER_SERVICE.read("74cd8ece-715a-44a4-a736-e17b46c4e7e6").
                 getResources().contains(RESOURCE_NAME_TESTDB2));
         assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='verdi'").size());
         // ------------------------------------------
@@ -256,12 +256,12 @@
         pushTaskKeys = Set.of(
                 "24b1be9c-7e3b-443a-86c9-798ebce5eaf2",
                 "375c7b7f-9e3a-4833-88c9-b7787b0a69f2");
-        execProvisioningTasks(taskService, TaskType.PUSH, pushTaskKeys, MAX_WAIT_SECONDS, false);
+        execProvisioningTasks(TASK_SERVICE, TaskType.PUSH, pushTaskKeys, MAX_WAIT_SECONDS, false);
 
         // ------------------------------------------
         // Matching --> Unlink && Update
         // ------------------------------------------
-        assertFalse(userService.read("74cd8ece-715a-44a4-a736-e17b46c4e7e6").
+        assertFalse(USER_SERVICE.read("74cd8ece-715a-44a4-a736-e17b46c4e7e6").
                 getResources().contains(RESOURCE_NAME_TESTDB2));
         assertEquals(1, jdbcTemplate.queryForList("SELECT ID FROM test2 WHERE ID='verdi'").size());
         // ------------------------------------------
@@ -270,12 +270,12 @@
     @Test
     public void pushPolicy() {
         // 1. set push policy on ldap
-        ResourceTO ldap = resourceService.read(RESOURCE_NAME_LDAP);
+        ResourceTO ldap = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
         assertNull(ldap.getPushPolicy());
 
         try {
             ldap.setPushPolicy("fb6530e5-892d-4f47-a46b-180c5b6c5c83");
-            resourceService.update(ldap);
+            RESOURCE_SERVICE.update(ldap);
 
             // 2. create push task with sole scope as the user 'vivaldi'
             PushTaskTO sendVivaldi = new PushTaskTO();
@@ -289,14 +289,14 @@
             sendVivaldi.setPerformCreate(true);
             sendVivaldi.setPerformUpdate(true);
 
-            Response response = taskService.create(TaskType.PUSH, sendVivaldi);
+            Response response = TASK_SERVICE.create(TaskType.PUSH, sendVivaldi);
             sendVivaldi = getObject(response.getLocation(), TaskService.class, PushTaskTO.class);
             assertNotNull(sendVivaldi);
 
             // 3. execute push: vivaldi is found on ldap
-            execProvisioningTask(taskService, TaskType.PUSH, sendVivaldi.getKey(), MAX_WAIT_SECONDS, false);
+            execProvisioningTask(TASK_SERVICE, TaskType.PUSH, sendVivaldi.getKey(), MAX_WAIT_SECONDS, false);
 
-            ReconStatus status = reconciliationService.status(
+            ReconStatus status = RECONCILIATION_SERVICE.status(
                     new ReconQuery.Builder(AnyTypeKind.USER.name(), RESOURCE_NAME_LDAP).anyKey("vivaldi").build());
             assertNotNull(status.getOnResource());
 
@@ -306,20 +306,20 @@
             updateLdapRemoteObject(
                     RESOURCE_LDAP_ADMIN_DN, RESOURCE_LDAP_ADMIN_PWD, "uid=vivaldi,ou=People,o=isp", attrs);
 
-            status = reconciliationService.status(
+            status = RECONCILIATION_SERVICE.status(
                     new ReconQuery.Builder(AnyTypeKind.USER.name(), RESOURCE_NAME_LDAP).anyKey("vivaldi").build());
             assertNull(status.getOnResource());
 
             // 5. execute push again: propagation task for CREATE will be generated, but that will fail
             // as task executor is not able any more to identify the entry to UPDATE
-            execProvisioningTask(taskService, TaskType.PUSH, sendVivaldi.getKey(), MAX_WAIT_SECONDS, false);
+            execProvisioningTask(TASK_SERVICE, TaskType.PUSH, sendVivaldi.getKey(), MAX_WAIT_SECONDS, false);
 
-            status = reconciliationService.status(
+            status = RECONCILIATION_SERVICE.status(
                     new ReconQuery.Builder(AnyTypeKind.USER.name(), RESOURCE_NAME_LDAP).anyKey("vivaldi").build());
             assertNull(status.getOnResource());
         } finally {
             ldap.setPushPolicy(null);
-            resourceService.update(ldap);
+            RESOURCE_SERVICE.update(ldap);
         }
     }
 
@@ -339,11 +339,11 @@
         task.setPerformDelete(true);
         task.setPerformUpdate(true);
 
-        Response response = taskService.create(TaskType.PUSH, task);
+        Response response = TASK_SERVICE.create(TaskType.PUSH, task);
         PushTaskTO pushTask = getObject(response.getLocation(), TaskService.class, PushTaskTO.class);
         assertNotNull(pushTask);
 
-        ExecTO exec = execProvisioningTask(taskService, TaskType.PUSH, pushTask.getKey(), MAX_WAIT_SECONDS, false);
+        ExecTO exec = execProvisioningTask(TASK_SERVICE, TaskType.PUSH, pushTask.getKey(), MAX_WAIT_SECONDS, false);
         assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(exec.getStatus()));
 
         // 2. check
@@ -366,7 +366,7 @@
         AnyTypeClassTO typeClass = new AnyTypeClassTO();
         typeClass.setKey("SYNCOPE-598" + getUUIDString());
         typeClass.getPlainSchemas().add(schemaTO.getKey());
-        anyTypeClassService.create(typeClass);
+        ANY_TYPE_CLASS_SERVICE.create(typeClass);
 
         // create a new sample group
         GroupCR groupCR = new GroupCR();
@@ -406,7 +406,7 @@
 
             mapping.setConnObjectLink("'cn=' + " + schemaTO.getKey() + " + ',ou=groups,o=isp'");
 
-            Response response = resourceService.create(resourceTO);
+            Response response = RESOURCE_SERVICE.create(resourceTO);
             newResourceTO = getObject(response.getLocation(), ResourceService.class, ResourceTO.class);
             assertNotNull(newResourceTO);
             assertFalse(newResourceTO.getProvision(AnyTypeKind.USER.name()).isPresent());
@@ -426,17 +426,17 @@
             task.getFilters().put(AnyTypeKind.GROUP.name(),
                     SyncopeClient.getGroupSearchConditionBuilder().is("name").equalTo(groupTO.getName()).query());
 
-            response = taskService.create(TaskType.PUSH, task);
+            response = TASK_SERVICE.create(TaskType.PUSH, task);
             PushTaskTO push = getObject(response.getLocation(), TaskService.class, PushTaskTO.class);
             assertNotNull(push);
 
             // execute the new task
-            ExecTO exec = execProvisioningTask(taskService, TaskType.PUSH, push.getKey(), MAX_WAIT_SECONDS, false);
+            ExecTO exec = execProvisioningTask(TASK_SERVICE, TaskType.PUSH, push.getKey(), MAX_WAIT_SECONDS, false);
             assertEquals(ExecStatus.SUCCESS, ExecStatus.valueOf(exec.getStatus()));
         } finally {
-            groupService.delete(groupTO.getKey());
+            GROUP_SERVICE.delete(groupTO.getKey());
             if (newResourceTO != null) {
-                resourceService.delete(resourceName);
+                RESOURCE_SERVICE.delete(resourceName);
             }
         }
     }
@@ -456,7 +456,7 @@
         task.setMatchingRule(MatchingRule.IGNORE);
         task.setUnmatchingRule(UnmatchingRule.IGNORE);
 
-        Response response = taskService.create(TaskType.PUSH, task);
+        Response response = TASK_SERVICE.create(TaskType.PUSH, task);
         PushTaskTO actual = getObject(response.getLocation(), TaskService.class, PushTaskTO.class);
         assertNotNull(actual);
 
@@ -476,11 +476,11 @@
         notification.setTemplate("optin");
         notification.setActive(true);
 
-        Response responseNotification = notificationService.create(notification);
+        Response responseNotification = NOTIFICATION_SERVICE.create(notification);
         notification = getObject(responseNotification.getLocation(), NotificationService.class, NotificationTO.class);
         assertNotNull(notification);
 
-        execProvisioningTask(taskService, TaskType.PUSH, actual.getKey(), MAX_WAIT_SECONDS, false);
+        execProvisioningTask(TASK_SERVICE, TaskType.PUSH, actual.getKey(), MAX_WAIT_SECONDS, false);
 
         NotificationTaskTO taskTO = findNotificationTask(notification.getKey(), 50);
         assertNotNull(taskTO);
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RESTITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RESTITCase.java
index 826801e..76fc82a 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RESTITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RESTITCase.java
@@ -67,13 +67,13 @@
     @Test
     public void unauthorizedOrForbidden() {
         // service as admin: it works
-        List<ConnInstanceTO> connectors = connectorService.list(null);
+        List<ConnInstanceTO> connectors = CONNECTOR_SERVICE.list(null);
         assertNotNull(connectors);
         assertFalse(connectors.isEmpty());
 
         // service with bad password: 401 unauthorized
         try {
-            clientFactory.create("bellini", "passwor");
+            CLIENT_FACTORY.create("bellini", "passwor");
             fail("This should not happen");
         } catch (AccessControlException e) {
             assertNotNull(e);
@@ -81,14 +81,14 @@
 
         // service with invalid JWT string: 401 unauthorized
         try {
-            clientFactory.create(RandomStringUtils.random(20, true, true)).self();
+            CLIENT_FACTORY.create(RandomStringUtils.random(20, true, true)).self();
             fail("This should not happen");
         } catch (AccessControlException e) {
             assertNotNull(e);
         }
 
         // service with good password, but no entitlements owned: 403 forbidden
-        SyncopeClient goodClient = clientFactory.create("bellini", "password");
+        SyncopeClient goodClient = CLIENT_FACTORY.create("bellini", "password");
         try {
             goodClient.getService(ConnectorService.class).list(null);
             fail("This should not happen");
@@ -99,7 +99,7 @@
 
     @Test
     public void noContent() throws IOException {
-        SyncopeClient noContentclient = clientFactory.create(ADMIN_UNAME, ADMIN_PWD);
+        SyncopeClient noContentclient = CLIENT_FACTORY.create(ADMIN_UNAME, ADMIN_PWD);
         GroupService noContentService = SyncopeClient.prefer(
                 noContentclient.getService(GroupService.class), Preference.RETURN_NO_CONTENT);
 
@@ -136,26 +136,26 @@
 
     @Test
     public void ifMatch() {
-        UserTO userTO = userService.create(UserITCase.getUniqueSample("ifmatch@syncope.apache.org")).
+        UserTO userTO = USER_SERVICE.create(UserITCase.getUniqueSample("ifmatch@syncope.apache.org")).
                 readEntity(new GenericType<ProvisioningResult<UserTO>>() {
                 }).getEntity();
         assertNotNull(userTO);
         assertNotNull(userTO.getKey());
 
-        EntityTag etag = SyncopeClient.getLatestEntityTag(userService);
+        EntityTag etag = SyncopeClient.getLatestEntityTag(USER_SERVICE);
         assertNotNull(etag);
         assertTrue(StringUtils.isNotBlank(etag.getValue()));
 
         UserUR userUR = new UserUR();
         userUR.setKey(userTO.getKey());
         userUR.setUsername(new StringReplacePatchItem.Builder().value(userTO.getUsername() + "XX").build());
-        userTO = userService.update(userUR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        userTO = USER_SERVICE.update(userUR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
         assertTrue(userTO.getUsername().endsWith("XX"));
-        EntityTag etag1 = SyncopeClient.getLatestEntityTag(userService);
+        EntityTag etag1 = SyncopeClient.getLatestEntityTag(USER_SERVICE);
         assertFalse(etag.getValue().equals(etag1.getValue()));
 
-        UserService ifMatchService = SyncopeClient.ifMatch(adminClient.getService(UserService.class), etag);
+        UserService ifMatchService = SyncopeClient.ifMatch(ADMIN_CLIENT.getService(UserService.class), etag);
         userUR.setUsername(new StringReplacePatchItem.Builder().value(userTO.getUsername() + "YY").build());
         try {
             ifMatchService.update(userUR);
@@ -164,7 +164,7 @@
             assertEquals(ClientExceptionType.ConcurrentModification, e.getType());
         }
 
-        userTO = userService.read(userTO.getKey());
+        userTO = USER_SERVICE.read(userTO.getKey());
         assertTrue(userTO.getUsername().endsWith("XX"));
     }
 
@@ -195,7 +195,7 @@
 
     @Test
     public void exportInternalStorageContent() throws IOException {
-        Response response = syncopeService.exportInternalStorageContent();
+        Response response = SYNCOPE_SERVICE.exportInternalStorageContent();
         assertNotNull(response);
         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusInfo().getStatusCode());
         assertTrue(response.getMediaType().toString().startsWith(MediaType.TEXT_XML));
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RealmITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RealmITCase.java
index 42140ae..9e903c6 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RealmITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RealmITCase.java
@@ -33,23 +33,23 @@
 import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
-import org.apache.syncope.common.lib.policy.DefaultAccessPolicyConf;
-import org.apache.syncope.common.lib.policy.DefaultAttrReleasePolicyConf;
-import org.apache.syncope.common.lib.policy.DefaultAuthPolicyConf;
-import org.apache.syncope.common.lib.policy.AccountPolicyTO;
-import org.apache.syncope.common.lib.to.RealmTO;
-import org.apache.syncope.common.lib.policy.DefaultAccountRuleConf;
 import org.apache.syncope.common.lib.policy.AccessPolicyTO;
+import org.apache.syncope.common.lib.policy.AccountPolicyTO;
 import org.apache.syncope.common.lib.policy.AttrReleasePolicyTO;
 import org.apache.syncope.common.lib.policy.AuthPolicyTO;
+import org.apache.syncope.common.lib.policy.DefaultAccessPolicyConf;
+import org.apache.syncope.common.lib.policy.DefaultAccountRuleConf;
+import org.apache.syncope.common.lib.policy.DefaultAttrReleasePolicyConf;
+import org.apache.syncope.common.lib.policy.DefaultAuthPolicyConf;
 import org.apache.syncope.common.lib.to.ImplementationTO;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
+import org.apache.syncope.common.lib.to.RealmTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.common.lib.types.ImplementationEngine;
-import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.syncope.common.lib.types.IdRepoImplementationType;
+import org.apache.syncope.common.lib.types.ImplementationEngine;
+import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 import org.apache.syncope.common.rest.api.beans.RealmQuery;
 import org.apache.syncope.common.rest.api.service.RealmService;
@@ -61,24 +61,24 @@
 public class RealmITCase extends AbstractITCase {
 
     private static Optional<RealmTO> getRealm(final String fullPath) {
-        return realmService.list(fullPath).stream().filter(realm -> fullPath.equals(realm.getFullPath())).findFirst();
+        return REALM_SERVICE.list(fullPath).stream().filter(realm -> fullPath.equals(realm.getFullPath())).findFirst();
     }
 
     @Test
     public void search() {
-        PagedResult<RealmTO> match = realmService.search(new RealmQuery.Builder().keyword("*o*").build());
+        PagedResult<RealmTO> match = REALM_SERVICE.search(new RealmQuery.Builder().keyword("*o*").build());
         assertTrue(match.getResult().stream().allMatch(realm -> realm.getName().contains("o")));
     }
 
     @Test
     public void list() {
-        List<RealmTO> realms = realmService.list(SyncopeConstants.ROOT_REALM);
+        List<RealmTO> realms = REALM_SERVICE.list(SyncopeConstants.ROOT_REALM);
         assertNotNull(realms);
         assertFalse(realms.isEmpty());
         realms.forEach(Assertions::assertNotNull);
 
         try {
-            realmService.list("a name");
+            REALM_SERVICE.list("a name");
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.InvalidPath, e.getType());
@@ -91,7 +91,7 @@
         realm.setName("last");
 
         // 1. create
-        Response response = realmService.create("/even/two", realm);
+        Response response = REALM_SERVICE.create("/even/two", realm);
         RealmTO[] actuals = getObject(response.getLocation(), RealmService.class, RealmTO[].class);
         assertNotNull(actuals);
         assertTrue(actuals.length > 0);
@@ -109,7 +109,7 @@
         actual.setAuthPolicy("b912a0d4-a890-416f-9ab8-84ab077eb028");
         actual.setAccessPolicy("419935c7-deb3-40b3-8a9a-683037e523a2");
         actual.setAttrReleasePolicy("319935c7-deb3-40b3-8a9a-683037e523a2");
-        realmService.update(actual);
+        REALM_SERVICE.update(actual);
 
         actual = getRealm(actual.getFullPath()).get();
         assertNotNull(actual.getAccountPolicy());
@@ -120,18 +120,18 @@
 
         // 3. update changing parent
         actual.setParent(getRealm("/odd").get().getKey());
-        realmService.update(actual);
+        REALM_SERVICE.update(actual);
 
         actual = getRealm("/odd/last").get();
         assertNotNull(actual);
         assertEquals("/odd/last", actual.getFullPath());
 
-        assertEquals(1, realmService.list(SyncopeConstants.ROOT_REALM).stream().
+        assertEquals(1, REALM_SERVICE.list(SyncopeConstants.ROOT_REALM).stream().
                 filter(object -> realm.getName().equals(object.getName())).count());
 
         // 4. create under invalid path
         try {
-            realmService.create("a name", realm);
+            REALM_SERVICE.create("a name", realm);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.InvalidPath, e.getType());
@@ -139,7 +139,7 @@
 
         // 5. attempt to create duplicate
         try {
-            realmService.create("/odd", realm);
+            REALM_SERVICE.create("/odd", realm);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.EntityExists, e.getType());
@@ -151,10 +151,10 @@
         RealmTO realm = new RealmTO();
         realm.setName("73~1~19534");
 
-        Response response = realmService.create("/even/two", realm);
+        Response response = REALM_SERVICE.create("/even/two", realm);
         assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatus());
 
-        List<RealmTO> realms = realmService.list("/even/two/73~1~19534");
+        List<RealmTO> realms = REALM_SERVICE.list("/even/two/73~1~19534");
         assertEquals(1, realms.size());
         assertEquals(realm.getName(), realms.get(0).getName());
     }
@@ -171,7 +171,7 @@
         rule.setEngine(ImplementationEngine.JAVA);
         rule.setType(IdRepoImplementationType.ACCOUNT_RULE);
         rule.setBody(POJOHelper.serialize(ruleConf));
-        Response response = implementationService.create(rule);
+        Response response = IMPLEMENTATION_SERVICE.create(rule);
         rule.setKey(response.getHeaderString(RESTHeaders.RESOURCE_KEY));
 
         AccountPolicyTO policy = new AccountPolicyTO();
@@ -185,7 +185,7 @@
         RealmTO realm = new RealmTO();
         realm.setName("withPolicy");
 
-        response = realmService.create(SyncopeConstants.ROOT_REALM, realm);
+        response = REALM_SERVICE.create(SyncopeConstants.ROOT_REALM, realm);
         RealmTO[] actuals = getObject(response.getLocation(), RealmService.class, RealmTO[].class);
         assertNotNull(actuals);
         assertTrue(actuals.length > 0);
@@ -194,7 +194,7 @@
         String existingAccountPolicy = realm.getAccountPolicy();
 
         realm.setAccountPolicy(policy.getKey());
-        realmService.update(realm);
+        REALM_SERVICE.update(realm);
 
         actuals = getObject(response.getLocation(), RealmService.class, RealmTO[].class);
         assertNotNull(actuals);
@@ -203,7 +203,7 @@
         assertEquals(policy.getKey(), actual.getAccountPolicy());
 
         // 3. remove policy
-        policyService.delete(PolicyType.ACCOUNT, policy.getKey());
+        POLICY_SERVICE.delete(PolicyType.ACCOUNT, policy.getKey());
 
         // 4. verify
         actual = getRealm(actual.getFullPath()).get();
@@ -226,7 +226,7 @@
         RealmTO realm = new RealmTO();
         realm.setName("withAuthPolicy");
 
-        Response response = realmService.create(SyncopeConstants.ROOT_REALM, realm);
+        Response response = REALM_SERVICE.create(SyncopeConstants.ROOT_REALM, realm);
         RealmTO[] actuals = getObject(response.getLocation(), RealmService.class, RealmTO[].class);
         assertNotNull(actuals);
         assertTrue(actuals.length > 0);
@@ -235,7 +235,7 @@
         String existingAuthPolicy = realm.getAuthPolicy();
 
         realm.setAuthPolicy(policy.getKey());
-        realmService.update(realm);
+        REALM_SERVICE.update(realm);
 
         actuals = getObject(response.getLocation(), RealmService.class, RealmTO[].class);
         assertNotNull(actuals);
@@ -244,7 +244,7 @@
         assertEquals(policy.getKey(), actual.getAuthPolicy());
 
         // 3. remove policy
-        policyService.delete(PolicyType.AUTH, policy.getKey());
+        POLICY_SERVICE.delete(PolicyType.AUTH, policy.getKey());
 
         // 4. verify
         actual = getRealm(actual.getFullPath()).get();
@@ -267,7 +267,7 @@
         RealmTO realm = new RealmTO();
         realm.setName("withAccessPolicy");
 
-        Response response = realmService.create(SyncopeConstants.ROOT_REALM, realm);
+        Response response = REALM_SERVICE.create(SyncopeConstants.ROOT_REALM, realm);
         RealmTO[] actuals = getObject(response.getLocation(), RealmService.class, RealmTO[].class);
         assertNotNull(actuals);
         assertTrue(actuals.length > 0);
@@ -276,7 +276,7 @@
         String existingAccessPolicy = realm.getAccessPolicy();
 
         realm.setAccessPolicy(policy.getKey());
-        realmService.update(realm);
+        REALM_SERVICE.update(realm);
 
         actuals = getObject(response.getLocation(), RealmService.class, RealmTO[].class);
         assertNotNull(actuals);
@@ -285,7 +285,7 @@
         assertEquals(policy.getKey(), actual.getAccessPolicy());
 
         // 3. remove policy
-        policyService.delete(PolicyType.ACCESS, policy.getKey());
+        POLICY_SERVICE.delete(PolicyType.ACCESS, policy.getKey());
 
         // 4. verify
         actual = getRealm(actual.getFullPath()).get();
@@ -309,7 +309,7 @@
         RealmTO realm = new RealmTO();
         realm.setName("withAttrReleasePolicy");
 
-        Response response = realmService.create(SyncopeConstants.ROOT_REALM, realm);
+        Response response = REALM_SERVICE.create(SyncopeConstants.ROOT_REALM, realm);
         RealmTO[] actuals = getObject(response.getLocation(), RealmService.class, RealmTO[].class);
         assertNotNull(actuals);
         assertTrue(actuals.length > 0);
@@ -318,7 +318,7 @@
         String existingAttrReleasePolicy = realm.getAttrReleasePolicy();
 
         realm.setAttrReleasePolicy(policy.getKey());
-        realmService.update(realm);
+        REALM_SERVICE.update(realm);
 
         actuals = getObject(response.getLocation(), RealmService.class, RealmTO[].class);
         assertNotNull(actuals);
@@ -327,7 +327,7 @@
         assertEquals(policy.getKey(), actual.getAttrReleasePolicy());
 
         // 3. remove policy
-        policyService.delete(PolicyType.ATTR_RELEASE, policy.getKey());
+        POLICY_SERVICE.delete(PolicyType.ATTR_RELEASE, policy.getKey());
 
         // 4. verify
         actual = getRealm(actual.getFullPath()).get();
@@ -339,16 +339,16 @@
         RealmTO realm = new RealmTO();
         realm.setName("deletable3");
 
-        Response response = realmService.create("/even/two", realm);
+        Response response = REALM_SERVICE.create("/even/two", realm);
         RealmTO[] actuals = getObject(response.getLocation(), RealmService.class, RealmTO[].class);
         assertNotNull(actuals);
         assertTrue(actuals.length > 0);
         RealmTO actual = actuals[0];
 
-        realmService.delete(actual.getFullPath());
+        REALM_SERVICE.delete(actual.getFullPath());
 
         try {
-            realmService.list(actual.getFullPath());
+            REALM_SERVICE.list(actual.getFullPath());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -358,7 +358,7 @@
     @Test
     public void deleteNonEmpty() {
         try {
-            realmService.delete("/even/two");
+            REALM_SERVICE.delete("/even/two");
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.AssociatedAnys, e.getType());
@@ -380,7 +380,7 @@
         descendantRealm.getResources().add(RESOURCE_NAME_LDAP_ORGUNIT);
 
         // 2. check propagation
-        ProvisioningResult<RealmTO> result = realmService.create("/", realm).readEntity(
+        ProvisioningResult<RealmTO> result = REALM_SERVICE.create("/", realm).readEntity(
             new GenericType<>() {
             });
         assertNotNull(result);
@@ -388,7 +388,7 @@
         assertEquals(RESOURCE_NAME_LDAP_ORGUNIT, result.getPropagationStatuses().get(0).getResource());
         assertEquals(ExecStatus.SUCCESS, result.getPropagationStatuses().get(0).getStatus());
 
-        ProvisioningResult<RealmTO> resultChild = realmService.create("/test", childRealm).readEntity(
+        ProvisioningResult<RealmTO> resultChild = REALM_SERVICE.create("/test", childRealm).readEntity(
             new GenericType<>() {
             });
         assertNotNull(resultChild);
@@ -396,7 +396,7 @@
         assertEquals(RESOURCE_NAME_LDAP_ORGUNIT, resultChild.getPropagationStatuses().get(0).getResource());
         assertEquals(ExecStatus.SUCCESS, resultChild.getPropagationStatuses().get(0).getStatus());
 
-        ProvisioningResult<RealmTO> resultDescendant = realmService.create("/test/child", descendantRealm).readEntity(
+        ProvisioningResult<RealmTO> resultDescendant = REALM_SERVICE.create("/test/child", descendantRealm).readEntity(
             new GenericType<>() {
             });
         assertNotNull(resultDescendant);
@@ -413,9 +413,9 @@
                 getLdapRemoteObject(RESOURCE_LDAP_ADMIN_DN, RESOURCE_LDAP_ADMIN_PWD, "ou=test,ou=child,ou=test,o=isp"));
 
         // 4. remove realms
-        realmService.delete("/test/child/test");
-        realmService.delete("/test/child");
-        realmService.delete("/test");
+        REALM_SERVICE.delete("/test/child/test");
+        REALM_SERVICE.delete("/test/child");
+        REALM_SERVICE.delete("/test");
 
         // 5. check on LDAP: both realms should be deleted
         assertNull(
@@ -429,17 +429,17 @@
     @Test
     public void issueSYNCOPE1472() {
         // 1. assign twice resource-ldap-orgunit to /odd
-        RealmTO realmTO = realmService.list("/odd").get(0);
+        RealmTO realmTO = REALM_SERVICE.list("/odd").get(0);
         realmTO.getResources().clear();
         realmTO.getResources().add("resource-ldap-orgunit");
         realmTO.getResources().add("resource-ldap-orgunit");
-        realmTO = realmService.update(realmTO).readEntity(new GenericType<ProvisioningResult<RealmTO>>() {
+        realmTO = REALM_SERVICE.update(realmTO).readEntity(new GenericType<ProvisioningResult<RealmTO>>() {
         }).getEntity();
 
         // 2. remove resource-ldap-orgunit resource
         realmTO.getResources().remove("resource-ldap-orgunit");
 
-        realmTO = realmService.update(realmTO).readEntity(new GenericType<ProvisioningResult<RealmTO>>() {
+        realmTO = REALM_SERVICE.update(realmTO).readEntity(new GenericType<ProvisioningResult<RealmTO>>() {
         }).getEntity();
 
         assertFalse(realmTO.getResources().contains("resource-ldap-orgunit"), "Should not contain removed resources");
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReconciliationITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReconciliationITCase.java
index 4642b67..79d1e48 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReconciliationITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReconciliationITCase.java
@@ -31,8 +31,6 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Date;
-import org.apache.syncope.common.lib.request.AnyObjectCR;
-import org.apache.syncope.common.lib.Attr;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
@@ -41,7 +39,9 @@
 import org.apache.cxf.jaxrs.client.Client;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.request.AnyObjectCR;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.ProvisioningReport;
@@ -81,7 +81,7 @@
                 "SELECT id FROM testPRINTER WHERE printername=?", printer.getName()).size());
 
         // 3. verify reconciliation status
-        ReconStatus status = reconciliationService.status(
+        ReconStatus status = RECONCILIATION_SERVICE.status(
                 new ReconQuery.Builder(PRINTER, RESOURCE_NAME_DBSCRIPTED).anyKey(printer.getName()).build());
         assertNotNull(status);
         assertEquals(AnyTypeKind.ANY_OBJECT, status.getAnyTypeKind());
@@ -94,7 +94,7 @@
         PushTaskTO pushTask = new PushTaskTO();
         pushTask.setPerformCreate(true);
         pushTask.setUnmatchingRule(UnmatchingRule.PROVISION);
-        reconciliationService.push(new ReconQuery.Builder(PRINTER, RESOURCE_NAME_DBSCRIPTED).
+        RECONCILIATION_SERVICE.push(new ReconQuery.Builder(PRINTER, RESOURCE_NAME_DBSCRIPTED).
                 anyKey(printer.getKey()).build(), pushTask);
 
         // 5. verify that printer is now propagated
@@ -102,11 +102,11 @@
                 "SELECT id FROM testPRINTER WHERE printername=?", printer.getName()).size());
 
         // 6. verify resource was not assigned
-        printer = anyObjectService.read(printer.getKey());
+        printer = ANY_OBJECT_SERVICE.read(printer.getKey());
         assertTrue(printer.getResources().isEmpty());
 
         // 7. verify reconciliation status
-        status = reconciliationService.status(
+        status = RECONCILIATION_SERVICE.status(
                 new ReconQuery.Builder(PRINTER, RESOURCE_NAME_DBSCRIPTED).anyKey(printer.getName()).build());
         assertNotNull(status);
         assertNotNull(status.getOnSyncope());
@@ -140,7 +140,7 @@
                 printer.getKey(), printer.getName(), "Nowhere", false, new Date());
 
         // 3. verify reconciliation status
-        ReconStatus status = reconciliationService.status(
+        ReconStatus status = RECONCILIATION_SERVICE.status(
                 new ReconQuery.Builder(PRINTER, RESOURCE_NAME_DBSCRIPTED).anyKey(printer.getName()).build());
         assertNotNull(status);
         assertNotNull(status.getOnSyncope());
@@ -151,11 +151,11 @@
         PullTaskTO pullTask = new PullTaskTO();
         pullTask.setDestinationRealm(SyncopeConstants.ROOT_REALM);
         pullTask.setPerformUpdate(true);
-        reconciliationService.pull(new ReconQuery.Builder(PRINTER, RESOURCE_NAME_DBSCRIPTED).
+        RECONCILIATION_SERVICE.pull(new ReconQuery.Builder(PRINTER, RESOURCE_NAME_DBSCRIPTED).
                 anyKey(printer.getName()).build(), pullTask);
 
         // 5. verify reconciliation result (and resource is still not assigned)
-        printer = anyObjectService.read(printer.getKey());
+        printer = ANY_OBJECT_SERVICE.read(printer.getKey());
         assertEquals("Nowhere", printer.getPlainAttr("location").get().getValues().get(0));
         assertTrue(printer.getResources().isEmpty());
     }
@@ -172,7 +172,7 @@
                 externalKey, externalName, "Nowhere", false, new Date());
 
         // 2. verify reconciliation status
-        ReconStatus status = reconciliationService.status(
+        ReconStatus status = RECONCILIATION_SERVICE.status(
                 new ReconQuery.Builder(PRINTER, RESOURCE_NAME_DBSCRIPTED).fiql("ID==" + externalKey).build());
         assertNotNull(status);
         assertNull(status.getAnyTypeKind());
@@ -187,17 +187,17 @@
         PullTaskTO pullTask = new PullTaskTO();
         pullTask.setDestinationRealm(SyncopeConstants.ROOT_REALM);
         pullTask.setPerformCreate(true);
-        reconciliationService.pull(
+        RECONCILIATION_SERVICE.pull(
                 new ReconQuery.Builder(PRINTER, RESOURCE_NAME_DBSCRIPTED).fiql("ID==" + externalKey).build(), pullTask);
 
         // 4. verify reconciliation result
-        AnyObjectTO printer = anyObjectService.read(externalName);
+        AnyObjectTO printer = ANY_OBJECT_SERVICE.read(externalName);
         assertNotNull(printer);
     }
 
     @Test
     public void importCSV() {
-        ReconciliationService service = adminClient.getService(ReconciliationService.class);
+        ReconciliationService service = ADMIN_CLIENT.getService(ReconciliationService.class);
         Client client = WebClient.client(service);
         client.type(RESTHeaders.TEXT_CSV);
 
@@ -212,12 +212,12 @@
         assertEquals(ResourceOperation.CREATE, results.get(0).getOperation());
         assertEquals(ProvisioningReport.Status.SUCCESS, results.get(0).getStatus());
 
-        UserTO donizetti = userService.read(results.get(0).getKey());
+        UserTO donizetti = USER_SERVICE.read(results.get(0).getKey());
         assertNotNull(donizetti);
         assertEquals("Gaetano", donizetti.getPlainAttr("firstname").get().getValues().get(0));
         assertEquals(1, donizetti.getPlainAttr("loginDate").get().getValues().size());
 
-        UserTO cimarosa = userService.read(results.get(1).getKey());
+        UserTO cimarosa = USER_SERVICE.read(results.get(1).getKey());
         assertNotNull(cimarosa);
         assertEquals("Domenico Cimarosa", cimarosa.getPlainAttr("fullname").get().getValues().get(0));
         assertEquals(2, cimarosa.getPlainAttr("loginDate").get().getValues().size());
@@ -225,7 +225,7 @@
 
     @Test
     public void exportCSV() throws IOException {
-        ReconciliationService service = adminClient.getService(ReconciliationService.class);
+        ReconciliationService service = ADMIN_CLIENT.getService(ReconciliationService.class);
         Client client = WebClient.client(service);
         client.accept(RESTHeaders.TEXT_CSV);
 
@@ -251,7 +251,7 @@
                 "attachment; filename=" + SyncopeConstants.MASTER_DOMAIN + ".csv",
                 response.getHeaderString(HttpHeaders.CONTENT_DISPOSITION));
 
-        PagedResult<UserTO> users = userService.search(anyQuery);
+        PagedResult<UserTO> users = USER_SERVICE.search(anyQuery);
         assertNotNull(users);
 
         MappingIterator<Map<String, String>> reader = new CsvMapper().readerFor(Map.class).
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RelationshipTypeITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RelationshipTypeITCase.java
index 4c446c4..25c2a6b 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RelationshipTypeITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RelationshipTypeITCase.java
@@ -36,14 +36,14 @@
 
     @Test
     public void read() {
-        RelationshipTypeTO otherType = relationshipTypeService.read("inclusion");
+        RelationshipTypeTO otherType = RELATIONSHIP_TYPE_SERVICE.read("inclusion");
         assertNotNull(otherType);
         assertEquals("inclusion", otherType.getKey());
     }
 
     @Test
     public void list() {
-        List<RelationshipTypeTO> list = relationshipTypeService.list();
+        List<RelationshipTypeTO> list = RELATIONSHIP_TYPE_SERVICE.list();
         assertFalse(list.isEmpty());
     }
 
@@ -53,7 +53,7 @@
         newType.setKey("new type");
         newType.setDescription("description");
 
-        Response response = relationshipTypeService.create(newType);
+        Response response = RELATIONSHIP_TYPE_SERVICE.create(newType);
         assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
 
         newType = getObject(response.getLocation(), RelationshipTypeService.class, RelationshipTypeTO.class);
@@ -61,16 +61,16 @@
         assertEquals("description", newType.getDescription());
 
         newType.setDescription("new description");
-        relationshipTypeService.update(newType);
+        RELATIONSHIP_TYPE_SERVICE.update(newType);
 
-        newType = relationshipTypeService.read(newType.getKey());
+        newType = RELATIONSHIP_TYPE_SERVICE.read(newType.getKey());
         assertNotNull(newType);
         assertEquals("new description", newType.getDescription());
 
-        relationshipTypeService.delete(newType.getKey());
+        RELATIONSHIP_TYPE_SERVICE.delete(newType.getKey());
 
         try {
-            relationshipTypeService.read(newType.getKey());
+            RELATIONSHIP_TYPE_SERVICE.read(newType.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -82,7 +82,7 @@
         RelationshipTypeTO newType = new RelationshipTypeTO();
         newType.setKey("membership");
         try {
-            relationshipTypeService.create(newType);
+            RELATIONSHIP_TYPE_SERVICE.create(newType);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.InvalidRelationshipType, e.getType());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReportITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReportITCase.java
index cf031a4..182b733 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReportITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReportITCase.java
@@ -62,14 +62,14 @@
 public class ReportITCase extends AbstractITCase {
 
     protected static String execReport(final String reportKey) {
-        AtomicReference<ReportTO> reportTO = new AtomicReference<>(reportService.read(reportKey));
+        AtomicReference<ReportTO> reportTO = new AtomicReference<>(REPORT_SERVICE.read(reportKey));
         int preExecSize = reportTO.get().getExecutions().size();
-        ExecTO execution = reportService.execute(new ExecSpecs.Builder().key(reportKey).build());
+        ExecTO execution = REPORT_SERVICE.execute(new ExecSpecs.Builder().key(reportKey).build());
         assertNotNull(execution.getExecutor());
 
         await().atMost(MAX_WAIT_SECONDS, TimeUnit.SECONDS).pollInterval(1, TimeUnit.SECONDS).until(() -> {
             try {
-                reportTO.set(reportService.read(reportKey));
+                reportTO.set(REPORT_SERVICE.read(reportKey));
                 return preExecSize < reportTO.get().getExecutions().size();
             } catch (Exception e) {
                 return false;
@@ -82,7 +82,7 @@
 
     @Test
     public void getReportletConfs() {
-        Set<String> reportletConfs = adminClient.platform().
+        Set<String> reportletConfs = ADMIN_CLIENT.platform().
                 getJavaImplInfo(IdRepoImplementationType.REPORTLET).get().getClasses();
         assertNotNull(reportletConfs);
         assertFalse(reportletConfs.isEmpty());
@@ -91,7 +91,7 @@
 
     @Test
     public void list() {
-        List<ReportTO> reports = reportService.list();
+        List<ReportTO> reports = REPORT_SERVICE.list();
         assertNotNull(reports);
         assertFalse(reports.isEmpty());
         reports.forEach(Assertions::assertNotNull);
@@ -99,7 +99,7 @@
 
     @Test
     public void read() {
-        ReportTO reportTO = reportService.read("0062ea9c-924d-4ecf-9961-4492a8cc6d1b");
+        ReportTO reportTO = REPORT_SERVICE.read("0062ea9c-924d-4ecf-9961-4492a8cc6d1b");
 
         assertNotNull(reportTO);
         assertNotNull(reportTO.getExecutions());
@@ -113,7 +113,7 @@
         reportlet1.setEngine(ImplementationEngine.JAVA);
         reportlet1.setType(IdRepoImplementationType.REPORTLET);
         reportlet1.setBody(POJOHelper.serialize(new UserReportletConf("first")));
-        Response response = implementationService.create(reportlet1);
+        Response response = IMPLEMENTATION_SERVICE.create(reportlet1);
         reportlet1.setKey(response.getHeaderString(RESTHeaders.RESOURCE_KEY));
 
         ImplementationTO reportlet2 = new ImplementationTO();
@@ -121,7 +121,7 @@
         reportlet2.setEngine(ImplementationEngine.JAVA);
         reportlet2.setType(IdRepoImplementationType.REPORTLET);
         reportlet2.setBody(POJOHelper.serialize(new UserReportletConf("second")));
-        response = implementationService.create(reportlet2);
+        response = IMPLEMENTATION_SERVICE.create(reportlet2);
         reportlet2.setKey(response.getHeaderString(RESTHeaders.RESOURCE_KEY));
 
         ReportTO report = new ReportTO();
@@ -132,7 +132,7 @@
 
         report = createReport(report);
         assertNotNull(report);
-        ReportTO actual = reportService.read(report.getKey());
+        ReportTO actual = REPORT_SERVICE.read(report.getKey());
         assertNotNull(actual);
         assertEquals(actual, report);
     }
@@ -144,7 +144,7 @@
         reportlet1.setEngine(ImplementationEngine.JAVA);
         reportlet1.setType(IdRepoImplementationType.REPORTLET);
         reportlet1.setBody(POJOHelper.serialize(new UserReportletConf("first")));
-        Response response = implementationService.create(reportlet1);
+        Response response = IMPLEMENTATION_SERVICE.create(reportlet1);
         reportlet1.setKey(response.getHeaderString(RESTHeaders.RESOURCE_KEY));
 
         ImplementationTO reportlet2 = new ImplementationTO();
@@ -152,7 +152,7 @@
         reportlet2.setEngine(ImplementationEngine.JAVA);
         reportlet2.setType(IdRepoImplementationType.REPORTLET);
         reportlet2.setBody(POJOHelper.serialize(new UserReportletConf("second")));
-        response = implementationService.create(reportlet2);
+        response = IMPLEMENTATION_SERVICE.create(reportlet2);
         reportlet2.setKey(response.getHeaderString(RESTHeaders.RESOURCE_KEY));
 
         ReportTO report = new ReportTO();
@@ -170,13 +170,13 @@
         reportlet3.setEngine(ImplementationEngine.JAVA);
         reportlet3.setType(IdRepoImplementationType.REPORTLET);
         reportlet3.setBody(POJOHelper.serialize(new UserReportletConf("last")));
-        response = implementationService.create(reportlet3);
+        response = IMPLEMENTATION_SERVICE.create(reportlet3);
         reportlet3.setKey(response.getHeaderString(RESTHeaders.RESOURCE_KEY));
 
         report.getReportlets().add(reportlet3.getKey());
 
-        reportService.update(report);
-        ReportTO updated = reportService.read(report.getKey());
+        REPORT_SERVICE.update(report);
+        ReportTO updated = REPORT_SERVICE.read(report.getKey());
         assertNotNull(updated);
         assertEquals(3, updated.getReportlets().size());
     }
@@ -188,7 +188,7 @@
         reportlet1.setEngine(ImplementationEngine.JAVA);
         reportlet1.setType(IdRepoImplementationType.REPORTLET);
         reportlet1.setBody(POJOHelper.serialize(new UserReportletConf("first")));
-        Response response = implementationService.create(reportlet1);
+        Response response = IMPLEMENTATION_SERVICE.create(reportlet1);
         reportlet1.setKey(response.getHeaderString(RESTHeaders.RESOURCE_KEY));
 
         ImplementationTO reportlet2 = new ImplementationTO();
@@ -196,7 +196,7 @@
         reportlet2.setEngine(ImplementationEngine.JAVA);
         reportlet2.setType(IdRepoImplementationType.REPORTLET);
         reportlet2.setBody(POJOHelper.serialize(new UserReportletConf("second")));
-        response = implementationService.create(reportlet2);
+        response = IMPLEMENTATION_SERVICE.create(reportlet2);
         reportlet2.setKey(response.getHeaderString(RESTHeaders.RESOURCE_KEY));
 
         ReportTO report = new ReportTO();
@@ -208,10 +208,10 @@
         report = createReport(report);
         assertNotNull(report);
 
-        reportService.delete(report.getKey());
+        REPORT_SERVICE.delete(report.getKey());
 
         try {
-            reportService.read(report.getKey());
+            REPORT_SERVICE.read(report.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
@@ -219,7 +219,7 @@
     }
 
     private static void checkExport(final String execKey, final ReportExecExportFormat fmt) throws IOException {
-        Response response = reportService.exportExecutionResult(execKey, fmt);
+        Response response = REPORT_SERVICE.exportExecutionResult(execKey, fmt);
         assertNotNull(response);
         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusInfo().getStatusCode());
         assertNotNull(response.getHeaderString(HttpHeaders.CONTENT_DISPOSITION));
@@ -232,7 +232,7 @@
 
     @Test
     public void executeAndExport() throws IOException {
-        ReportTO reportTO = reportService.read("0062ea9c-924d-4ecf-9961-4492a8cc6d1b");
+        ReportTO reportTO = REPORT_SERVICE.read("0062ea9c-924d-4ecf-9961-4492a8cc6d1b");
         reportTO.setName("executeAndExport" + getUUIDString());
         reportTO.setActive(false);
         reportTO.getExecutions().clear();
@@ -248,7 +248,7 @@
         }
 
         reportTO.setActive(true);
-        reportService.update(reportTO);
+        REPORT_SERVICE.update(reportTO);
 
         String execKey = execReport(reportTO.getKey());
 
@@ -268,7 +268,7 @@
             // ignore
         }
 
-        ReportTO reportTO = reportService.read("0062ea9c-924d-4ecf-9961-4492a8cc6d1b");
+        ReportTO reportTO = REPORT_SERVICE.read("0062ea9c-924d-4ecf-9961-4492a8cc6d1b");
         reportTO.setName("deleteExecutions" + getUUIDString());
         reportTO.getExecutions().clear();
         reportTO = createReport(reportTO);
@@ -283,7 +283,7 @@
         }
         OffsetDateTime end = OffsetDateTime.now();
 
-        Response response = reportService.deleteExecutions(
+        Response response = REPORT_SERVICE.deleteExecutions(
                 new ExecDeleteQuery.Builder().key(reportTO.getKey()).startedAfter(start).endedBefore(end).build());
         List<BatchResponseItem> batchResponseItems = parseBatchResponse(response);
         assertEquals(1, batchResponseItems.size());
@@ -303,14 +303,14 @@
         try {
             AuditConfTO audit = new AuditConfTO();
             audit.setKey(auditLoggerName.toAuditKey());
-            auditService.create(audit);
+            AUDIT_SERVICE.create(audit);
 
             ImplementationTO auditReportlet = new ImplementationTO();
             auditReportlet.setKey("UserReportletConf" + getUUIDString());
             auditReportlet.setEngine(ImplementationEngine.JAVA);
             auditReportlet.setType(IdRepoImplementationType.REPORTLET);
             auditReportlet.setBody(POJOHelper.serialize(new AuditReportletConf("auditReportlet" + getUUIDString())));
-            Response response = implementationService.create(auditReportlet);
+            Response response = IMPLEMENTATION_SERVICE.create(auditReportlet);
             auditReportlet.setKey(response.getHeaderString(RESTHeaders.RESOURCE_KEY));
 
             ReportTO report = new ReportTO();
@@ -323,10 +323,10 @@
             String execKey = execReport(report.getKey());
             checkExport(execKey, ReportExecExportFormat.XML);
 
-            report = reportService.read(report.getKey());
+            report = REPORT_SERVICE.read(report.getKey());
             assertNotNull(report.getLastExec());
         } finally {
-            auditService.delete(auditLoggerName.toAuditKey());
+            AUDIT_SERVICE.delete(auditLoggerName.toAuditKey());
         }
     }
 
@@ -340,14 +340,14 @@
         assertNotNull(reportTO.getKey());
 
         execReport(reportTO.getKey());
-        reportTO = reportService.read(reportTO.getKey());
+        reportTO = REPORT_SERVICE.read(reportTO.getKey());
         assertEquals(1, reportTO.getExecutions().size());
     }
 
     @Test
     public void issueSYNCOPE102() throws IOException {
         // Create
-        ReportTO reportTO = reportService.read("0062ea9c-924d-4ecf-9961-4492a8cc6d1b");
+        ReportTO reportTO = REPORT_SERVICE.read("0062ea9c-924d-4ecf-9961-4492a8cc6d1b");
         reportTO.setName("issueSYNCOPE102" + getUUIDString());
         reportTO = createReport(reportTO);
         assertNotNull(reportTO.getKey());
@@ -355,13 +355,13 @@
 
         // Execute (multiple requests)
         for (int i = 0; i < 10; i++) {
-            assertNotNull(reportService.execute(new ExecSpecs.Builder().key(reportKey).build()));
+            assertNotNull(REPORT_SERVICE.execute(new ExecSpecs.Builder().key(reportKey).build()));
         }
 
         // Wait for one execution
         await().atMost(MAX_WAIT_SECONDS, TimeUnit.SECONDS).pollInterval(1, TimeUnit.SECONDS).until(() -> {
             try {
-                return !reportService.read(reportKey).getExecutions().isEmpty();
+                return !REPORT_SERVICE.read(reportKey).getExecutions().isEmpty();
             } catch (Exception e) {
                 return false;
             }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReportTemplateITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReportTemplateITCase.java
index 08874dc..c47bb7a 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReportTemplateITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ReportTemplateITCase.java
@@ -44,13 +44,13 @@
 
     @Test
     public void read() {
-        ReportTemplateTO reportTemplateTO = reportTemplateService.read("sample");
+        ReportTemplateTO reportTemplateTO = REPORT_TEMPLATE_SERVICE.read("sample");
         assertNotNull(reportTemplateTO);
     }
 
     @Test
     public void list() {
-        List<ReportTemplateTO> reportTemplateTOs = reportTemplateService.list();
+        List<ReportTemplateTO> reportTemplateTOs = REPORT_TEMPLATE_SERVICE.list();
         assertNotNull(reportTemplateTOs);
         assertFalse(reportTemplateTOs.isEmpty());
         reportTemplateTOs.forEach(Assertions::assertNotNull);
@@ -64,18 +64,18 @@
         ReportTemplateTO reportTemplateTO = new ReportTemplateTO();
         reportTemplateTO.setKey(key);
 
-        Response response = reportTemplateService.create(reportTemplateTO);
+        Response response = REPORT_TEMPLATE_SERVICE.create(reportTemplateTO);
         assertEquals(201, response.getStatus());
 
         // 2. attempt to read HTML and CSV -> fail
         try {
-            reportTemplateService.getFormat(key, ReportTemplateFormat.HTML);
+            REPORT_TEMPLATE_SERVICE.getFormat(key, ReportTemplateFormat.HTML);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
         try {
-            reportTemplateService.getFormat(key, ReportTemplateFormat.CSV);
+            REPORT_TEMPLATE_SERVICE.getFormat(key, ReportTemplateFormat.CSV);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -84,10 +84,10 @@
         // 3. set CSV
         String csvTemplate =
                 "<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'></xsl:stylesheet>";
-        reportTemplateService.setFormat(
+        REPORT_TEMPLATE_SERVICE.setFormat(
                 key, ReportTemplateFormat.CSV, IOUtils.toInputStream(csvTemplate, StandardCharsets.UTF_8));
 
-        response = reportTemplateService.getFormat(key, ReportTemplateFormat.CSV);
+        response = REPORT_TEMPLATE_SERVICE.getFormat(key, ReportTemplateFormat.CSV);
         assertEquals(200, response.getStatus());
         assertTrue(response.getMediaType().toString().startsWith(MediaType.APPLICATION_XML));
         assertTrue(response.getEntity() instanceof InputStream);
@@ -98,10 +98,10 @@
         // 3. set HTML
         String htmlTemplate =
                 "<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'></xsl:stylesheet>";
-        reportTemplateService.setFormat(
+        REPORT_TEMPLATE_SERVICE.setFormat(
                 key, ReportTemplateFormat.HTML, IOUtils.toInputStream(htmlTemplate, StandardCharsets.UTF_8));
 
-        response = reportTemplateService.getFormat(key, ReportTemplateFormat.HTML);
+        response = REPORT_TEMPLATE_SERVICE.getFormat(key, ReportTemplateFormat.HTML);
         assertEquals(200, response.getStatus());
         assertTrue(response.getMediaType().toString().startsWith(MediaType.APPLICATION_XML));
         assertTrue(response.getEntity() instanceof InputStream);
@@ -110,16 +110,16 @@
                 IOUtils.toString((InputStream) response.getEntity(), StandardCharsets.UTF_8));
 
         // 4. remove HTML
-        reportTemplateService.removeFormat(key, ReportTemplateFormat.HTML);
+        REPORT_TEMPLATE_SERVICE.removeFormat(key, ReportTemplateFormat.HTML);
 
         try {
-            reportTemplateService.getFormat(key, ReportTemplateFormat.HTML);
+            REPORT_TEMPLATE_SERVICE.getFormat(key, ReportTemplateFormat.HTML);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
 
-        response = reportTemplateService.getFormat(key, ReportTemplateFormat.CSV);
+        response = REPORT_TEMPLATE_SERVICE.getFormat(key, ReportTemplateFormat.CSV);
         assertEquals(200, response.getStatus());
         assertTrue(response.getMediaType().toString().startsWith(MediaType.APPLICATION_XML));
         assertTrue(response.getEntity() instanceof InputStream);
@@ -128,22 +128,22 @@
                 IOUtils.toString((InputStream) response.getEntity(), StandardCharsets.UTF_8));
 
         // 5. remove report template
-        reportTemplateService.delete(key);
+        REPORT_TEMPLATE_SERVICE.delete(key);
 
         try {
-            reportTemplateService.read(key);
+            REPORT_TEMPLATE_SERVICE.read(key);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
         try {
-            reportTemplateService.getFormat(key, ReportTemplateFormat.HTML);
+            REPORT_TEMPLATE_SERVICE.getFormat(key, ReportTemplateFormat.HTML);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
         try {
-            reportTemplateService.getFormat(key, ReportTemplateFormat.CSV);
+            REPORT_TEMPLATE_SERVICE.getFormat(key, ReportTemplateFormat.CSV);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -152,13 +152,13 @@
 
     @Test
     public void safeTemplate() throws IOException {
-        Response response = reportTemplateService.getFormat("sample", ReportTemplateFormat.HTML);
+        Response response = REPORT_TEMPLATE_SERVICE.getFormat("sample", ReportTemplateFormat.HTML);
         String before = IOUtils.toString((InputStream) response.getEntity(), StandardCharsets.UTF_8);
         assertNotNull(before);
 
         String execKey = ReportITCase.execReport("0062ea9c-924d-4ecf-9961-4492a8cc6d1b");
         assertNotNull(execKey);
-        response = reportService.exportExecutionResult(execKey, ReportExecExportFormat.HTML);
+        response = REPORT_SERVICE.exportExecutionResult(execKey, ReportExecExportFormat.HTML);
         String result = IOUtils.toString((InputStream) response.getEntity(), StandardCharsets.UTF_8);
         assertNotNull(result);
         assertTrue(result.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
@@ -172,15 +172,15 @@
                 + "    <xsl:template match=\"/\">&file;</xsl:template>\n"
                 + "</xsl:stylesheet>";
         try {
-            reportTemplateService.setFormat("sample", ReportTemplateFormat.HTML,
+            REPORT_TEMPLATE_SERVICE.setFormat("sample", ReportTemplateFormat.HTML,
                     IOUtils.toInputStream(malicious, StandardCharsets.UTF_8));
 
-            response = reportService.exportExecutionResult(execKey, ReportExecExportFormat.HTML);
+            response = REPORT_SERVICE.exportExecutionResult(execKey, ReportExecExportFormat.HTML);
             result = IOUtils.toString((InputStream) response.getEntity(), StandardCharsets.UTF_8);
             assertNotNull(result);
             assertTrue(result.isEmpty());
         } finally {
-            reportTemplateService.setFormat("sample", ReportTemplateFormat.HTML,
+            REPORT_TEMPLATE_SERVICE.setFormat("sample", ReportTemplateFormat.HTML,
                     IOUtils.toInputStream(before, StandardCharsets.UTF_8));
         }
     }
@@ -190,7 +190,7 @@
         ReportTemplateTO reportTemplateTO = new ReportTemplateTO();
         reportTemplateTO.setKey("empty");
         try {
-            reportTemplateService.create(reportTemplateTO);
+            REPORT_TEMPLATE_SERVICE.create(reportTemplateTO);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.EntityExists, e.getType());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ResourceITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ResourceITCase.java
index 5d21807..8678798 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ResourceITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/ResourceITCase.java
@@ -49,8 +49,8 @@
 import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.common.lib.types.TraceLevel;
 import org.apache.syncope.common.rest.api.service.ResourceService;
-import org.identityconnectors.framework.common.objects.ObjectClass;
 import org.apache.syncope.fit.AbstractITCase;
+import org.identityconnectors.framework.common.objects.ObjectClass;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
@@ -94,7 +94,7 @@
 
     @Test
     public void getPropagationActionsClasses() {
-        Set<String> actions = adminClient.platform().
+        Set<String> actions = ADMIN_CLIENT.platform().
                 getJavaImplInfo(IdMImplementationType.PROPAGATION_ACTIONS).get().getClasses();
         assertNotNull(actions);
         assertFalse(actions.isEmpty());
@@ -105,12 +105,12 @@
         String resourceKey = "ws-target-resource-create";
         ResourceTO resourceTO = buildResourceTO(resourceKey);
 
-        Response response = resourceService.create(resourceTO);
+        Response response = RESOURCE_SERVICE.create(resourceTO);
         resourceTO = getObject(response.getLocation(), ResourceService.class, ResourceTO.class);
         assertNotNull(resourceTO);
 
         // check for existence
-        resourceTO = resourceService.read(resourceKey);
+        resourceTO = RESOURCE_SERVICE.read(resourceKey);
         assertNotNull(resourceTO);
     }
 
@@ -161,12 +161,12 @@
         Set<ConnConfProperty> connectorConfigurationProperties = Set.of(prop);
         resourceTO.getConfOverride().addAll(connectorConfigurationProperties);
 
-        Response response = resourceService.create(resourceTO);
+        Response response = RESOURCE_SERVICE.create(resourceTO);
         ResourceTO actual = getObject(response.getLocation(), ResourceService.class, ResourceTO.class);
         assertNotNull(actual);
 
         // check the existence
-        actual = resourceService.read(resourceKey);
+        actual = RESOURCE_SERVICE.read(resourceKey);
         assertNotNull(actual);
         assertNull(actual.getPropagationPriority());
     }
@@ -207,7 +207,7 @@
         item.setPurpose(MappingPurpose.PULL);
         mapping.setConnObjectKeyItem(item);
 
-        Response response = resourceService.create(resourceTO);
+        Response response = RESOURCE_SERVICE.create(resourceTO);
         ResourceTO actual = getObject(response.getLocation(), ResourceService.class, ResourceTO.class);
 
         assertNotNull(actual);
@@ -310,12 +310,12 @@
         item.setPurpose(MappingPurpose.BOTH);
         mapping.setConnObjectKeyItem(item);
 
-        Response response = resourceService.create(resourceTO);
+        Response response = RESOURCE_SERVICE.create(resourceTO);
         ResourceTO actual = getObject(response.getLocation(), ResourceService.class, ResourceTO.class);
         assertNotNull(actual);
 
         // check the existence
-        actual = resourceService.read(resourceKey);
+        actual = RESOURCE_SERVICE.read(resourceKey);
         assertNotNull(actual);
         assertNotNull(actual.getPasswordPolicy());
         assertEquals("986d1236-3ac5-4a19-810c-5ab21d79cba1", actual.getPasswordPolicy());
@@ -326,7 +326,7 @@
         try {
             ResourceTO resourceTO = new ResourceTO();
             resourceTO.setKey("resourcenotfound");
-            resourceService.update(resourceTO);
+            RESOURCE_SERVICE.update(resourceTO);
 
             fail("This should not happen");
         } catch (SyncopeClientException e) {
@@ -372,8 +372,8 @@
         item.setPurpose(MappingPurpose.BOTH);
         mapping.setConnObjectKeyItem(item);
 
-        resourceService.update(resourceTO);
-        ResourceTO actual = resourceService.read(resourceTO.getKey());
+        RESOURCE_SERVICE.update(resourceTO);
+        ResourceTO actual = RESOURCE_SERVICE.read(resourceTO.getKey());
         assertNotNull(actual);
 
         // check for existence
@@ -385,7 +385,7 @@
     @Test
     public void deleteWithException() {
         try {
-            resourceService.delete("resourcenotfound");
+            RESOURCE_SERVICE.delete("resourcenotfound");
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
@@ -394,7 +394,7 @@
 
     @Test
     public void syncToken() {
-        ResourceTO resource = resourceService.read(RESOURCE_NAME_DBSCRIPTED);
+        ResourceTO resource = RESOURCE_SERVICE.read(RESOURCE_NAME_DBSCRIPTED);
         resource.setKey(resource.getKey() + getUUIDString());
 
         AnyObjectCR anyObjectCR = AnyObjectITCase.getSample("syncToken");
@@ -411,21 +411,21 @@
             anyObject = createAnyObject(anyObjectCR).getEntity();
 
             // update sync token
-            resourceService.setLatestSyncToken(resource.getKey(), PRINTER);
+            RESOURCE_SERVICE.setLatestSyncToken(resource.getKey(), PRINTER);
 
-            resource = resourceService.read(resource.getKey());
+            resource = RESOURCE_SERVICE.read(resource.getKey());
             assertNotNull(resource.getProvision(PRINTER).get().getSyncToken());
 
             // remove sync token
-            resourceService.removeSyncToken(resource.getKey(), PRINTER);
+            RESOURCE_SERVICE.removeSyncToken(resource.getKey(), PRINTER);
 
-            resource = resourceService.read(resource.getKey());
+            resource = RESOURCE_SERVICE.read(resource.getKey());
             assertNull(resource.getProvision(PRINTER).get().getSyncToken());
         } finally {
             if (anyObject != null) {
-                anyObjectService.delete(anyObject.getKey());
+                ANY_OBJECT_SERVICE.delete(anyObject.getKey());
             }
-            resourceService.delete(resource.getKey());
+            RESOURCE_SERVICE.delete(resource.getKey());
         }
     }
 
@@ -434,14 +434,14 @@
         String resourceKey = "tobedeleted";
 
         ResourceTO resource = buildResourceTO(resourceKey);
-        Response response = resourceService.create(resource);
+        Response response = RESOURCE_SERVICE.create(resource);
         ResourceTO actual = getObject(response.getLocation(), ResourceService.class, ResourceTO.class);
         assertNotNull(actual);
 
-        resourceService.delete(resourceKey);
+        RESOURCE_SERVICE.delete(resourceKey);
 
         try {
-            resourceService.read(resourceKey);
+            RESOURCE_SERVICE.read(resourceKey);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
@@ -455,7 +455,7 @@
         assertNull(resourceTO.getOrgUnit());
         assertNull(resourceTO.getPropagationPriority());
 
-        Response response = resourceService.create(resourceTO);
+        Response response = RESOURCE_SERVICE.create(resourceTO);
         resourceTO = getObject(response.getLocation(), ResourceService.class, ResourceTO.class);
         assertNotNull(resourceTO);
         assertNull(resourceTO.getOrgUnit());
@@ -472,24 +472,24 @@
         orgUnit.setConnObjectKeyItem(item);
 
         resourceTO.setOrgUnit(orgUnit);
-        resourceService.update(resourceTO);
+        RESOURCE_SERVICE.update(resourceTO);
         assertNull(resourceTO.getPropagationPriority());
 
-        resourceTO = resourceService.read(resourceKey);
+        resourceTO = RESOURCE_SERVICE.read(resourceKey);
         assertNotNull(resourceTO.getOrgUnit());
 
         resourceTO.setOrgUnit(null);
         resourceTO.setPropagationPriority(11);
-        resourceService.update(resourceTO);
+        RESOURCE_SERVICE.update(resourceTO);
 
-        resourceTO = resourceService.read(resourceKey);
+        resourceTO = RESOURCE_SERVICE.read(resourceKey);
         assertNull(resourceTO.getOrgUnit());
         assertEquals(Integer.valueOf(11), resourceTO.getPropagationPriority());
     }
 
     @Test
     public void list() {
-        List<ResourceTO> actuals = resourceService.list();
+        List<ResourceTO> actuals = RESOURCE_SERVICE.list();
         assertNotNull(actuals);
         assertFalse(actuals.isEmpty());
         actuals.forEach(Assertions::assertNotNull);
@@ -497,7 +497,7 @@
 
     @Test
     public void read() {
-        ResourceTO resource = resourceService.read(RESOURCE_NAME_DBVIRATTR);
+        ResourceTO resource = RESOURCE_SERVICE.read(RESOURCE_NAME_DBVIRATTR);
         assertNotNull(resource);
 
         Optional<ProvisionTO> provision = resource.getProvision(AnyTypeKind.USER.name());
@@ -508,7 +508,7 @@
 
     @Test
     public void authorizations() {
-        SyncopeClient puccini = clientFactory.create("puccini", ADMIN_PWD);
+        SyncopeClient puccini = CLIENT_FACTORY.create("puccini", ADMIN_PWD);
         ResourceService prs = puccini.getService(ResourceService.class);
 
         // 1. attempt to read a resource for a connector with a different admin realm: fail
@@ -530,15 +530,15 @@
             scriptedsql = prs.read(RESOURCE_NAME_DBSCRIPTED);
             assertEquals(TraceLevel.FAILURES, scriptedsql.getCreateTraceLevel());
         } finally {
-            ResourceTO scriptedsql = resourceService.read(RESOURCE_NAME_DBSCRIPTED);
+            ResourceTO scriptedsql = RESOURCE_SERVICE.read(RESOURCE_NAME_DBSCRIPTED);
             scriptedsql.setCreateTraceLevel(TraceLevel.ALL);
-            resourceService.update(scriptedsql);
+            RESOURCE_SERVICE.update(scriptedsql);
         }
     }
 
     @Test
     public void issueSYNCOPE323() {
-        ResourceTO actual = resourceService.read(RESOURCE_NAME_TESTDB);
+        ResourceTO actual = RESOURCE_SERVICE.read(RESOURCE_NAME_TESTDB);
         assertNotNull(actual);
 
         try {
@@ -562,16 +562,16 @@
     @Test
     public void issueSYNCOPE360() {
         final String name = "SYNCOPE360-" + getUUIDString();
-        resourceService.create(buildResourceTO(name));
+        RESOURCE_SERVICE.create(buildResourceTO(name));
 
-        ResourceTO resource = resourceService.read(name);
+        ResourceTO resource = RESOURCE_SERVICE.read(name);
         assertNotNull(resource);
         assertNotNull(resource.getProvision(AnyTypeKind.USER.name()).get().getMapping());
 
         resource.getProvision(AnyTypeKind.USER.name()).get().setMapping(null);
-        resourceService.update(resource);
+        RESOURCE_SERVICE.update(resource);
 
-        resource = resourceService.read(name);
+        resource = RESOURCE_SERVICE.read(name);
         assertNotNull(resource);
         assertNull(resource.getProvision(AnyTypeKind.USER.name()).get().getMapping());
     }
@@ -613,7 +613,7 @@
     @Test
     public void issueSYNCOPE418() {
         try {
-            resourceService.create(
+            RESOURCE_SERVICE.create(
                     buildResourceTO("http://schemas.examples.org/security/authorization/organizationUnit"));
             fail("This should not happen");
         } catch (SyncopeClientException e) {
@@ -652,7 +652,7 @@
         item2.setPurpose(MappingPurpose.NONE);
         mapping.add(item2);
 
-        Response response = resourceService.create(resourceTO);
+        Response response = RESOURCE_SERVICE.create(resourceTO);
         ResourceTO actual = getObject(response.getLocation(), ResourceService.class, ResourceTO.class);
 
         assertNotNull(actual);
@@ -669,7 +669,7 @@
         ResourceTO resource = new ResourceTO();
         resource.setKey("ws-target-resource-basic-save-invalid");
 
-        String connector = resourceService.read("ws-target-resource-1").getConnector();
+        String connector = RESOURCE_SERVICE.read("ws-target-resource-1").getConnector();
         resource.setConnector(connector);
 
         ProvisionTO provision = new ProvisionTO();
@@ -688,7 +688,7 @@
 
         // save the resource
         try {
-            resourceService.create(resource);
+            RESOURCE_SERVICE.create(resource);
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.InvalidMapping, e.getType());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RoleITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RoleITCase.java
index 77150dd..1e7412c 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RoleITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/RoleITCase.java
@@ -53,7 +53,7 @@
 
     @Test
     public void list() {
-        List<RoleTO> roleTOs = roleService.list();
+        List<RoleTO> roleTOs = ROLE_SERVICE.list();
         assertNotNull(roleTOs);
         assertFalse(roleTOs.isEmpty());
         roleTOs.forEach(Assertions::assertNotNull);
@@ -61,7 +61,7 @@
 
     @Test
     public void read() {
-        RoleTO roleTO = roleService.read("Search for realm evenTwo");
+        RoleTO roleTO = ROLE_SERVICE.read("Search for realm evenTwo");
         assertNotNull(roleTO);
         assertTrue(roleTO.getEntitlements().contains(IdRepoEntitlement.USER_READ));
     }
@@ -108,9 +108,9 @@
         role.getEntitlements().add(FlowableEntitlement.WORKFLOW_TASK_LIST);
         role.getRealms().add("/even/two");
 
-        roleService.update(role);
+        ROLE_SERVICE.update(role);
 
-        role = roleService.read(role.getKey());
+        role = ROLE_SERVICE.read(role.getKey());
         assertTrue(role.getEntitlements().contains(FlowableEntitlement.WORKFLOW_TASK_LIST));
         assertTrue(role.getRealms().contains("/even/two"));
     }
@@ -118,15 +118,15 @@
     @Test
     public void delete() {
         RoleTO role = getSampleRoleTO("delete");
-        Response response = roleService.create(role);
+        Response response = ROLE_SERVICE.create(role);
 
         RoleTO actual = getObject(response.getLocation(), RoleService.class, RoleTO.class);
         assertNotNull(actual);
 
-        roleService.delete(actual.getKey());
+        ROLE_SERVICE.delete(actual.getKey());
 
         try {
-            roleService.read(actual.getKey());
+            ROLE_SERVICE.read(actual.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -135,25 +135,25 @@
 
     @Test
     public void dynMembership() {
-        UserTO bellini = userService.read("bellini");
+        UserTO bellini = USER_SERVICE.read("bellini");
         assertTrue(bellini.getDynRoles().isEmpty());
         assertTrue(bellini.getPrivileges().isEmpty());
 
         RoleTO role = getSampleRoleTO("dynMembership");
         role.getPrivileges().add("getMighty");
         role.setDynMembershipCond("cool==true");
-        Response response = roleService.create(role);
+        Response response = ROLE_SERVICE.create(role);
         role = getObject(response.getLocation(), RoleService.class, RoleTO.class);
         assertNotNull(role);
 
-        bellini = userService.read("bellini");
+        bellini = USER_SERVICE.read("bellini");
         assertTrue(bellini.getDynRoles().contains(role.getKey()));
         assertTrue(bellini.getPrivileges().contains("getMighty"));
 
         role.setDynMembershipCond("cool==false");
-        roleService.update(role);
+        ROLE_SERVICE.update(role);
 
-        bellini = userService.read("bellini");
+        bellini = USER_SERVICE.read("bellini");
         assertTrue(bellini.getDynMemberships().isEmpty());
         assertTrue(bellini.getPrivileges().isEmpty());
     }
@@ -163,22 +163,22 @@
         final DynRealmTO dynRealmTO = new DynRealmTO();
         dynRealmTO.setKey("dynRealm");
         dynRealmTO.getDynMembershipConds().put(AnyTypeKind.USER.name(), "username=~rossini");
-        dynRealmService.create(dynRealmTO);
+        DYN_REALM_SERVICE.create(dynRealmTO);
 
         // 1. associate role Other again to /odd realm and twice to dynRealm
-        RoleTO roleTO = roleService.read("Other");
+        RoleTO roleTO = ROLE_SERVICE.read("Other");
         roleTO.getRealms().add("/odd");
         roleTO.getDynRealms().add("dynRealm");
         roleTO.getDynRealms().add("dynRealm");
-        roleService.update(roleTO);
+        ROLE_SERVICE.update(roleTO);
 
         // 2. update by removing realm and dynamic realm
-        roleTO = roleService.read("Other");
+        roleTO = ROLE_SERVICE.read("Other");
         roleTO.getRealms().remove("/odd");
         roleTO.getDynRealms().remove("dynRealm");
-        roleService.update(roleTO);
+        ROLE_SERVICE.update(roleTO);
 
-        roleTO = roleService.read("Other");
+        roleTO = ROLE_SERVICE.read("Other");
 
         assertFalse(roleTO.getRealms().contains("/odd"), "Should not contain removed realms");
         assertFalse(roleTO.getDynRealms().contains("dynRealm"), "Should not contain removed dynamic realms");
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2IdPEntityITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2IdPEntityITCase.java
index 0b019b5..f61197c 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2IdPEntityITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2IdPEntityITCase.java
@@ -28,23 +28,23 @@
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
 import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.fit.AbstractITCase;
-import org.junit.jupiter.api.Test;
 import org.apache.syncope.common.lib.to.SAML2IdPEntityTO;
-import org.junit.jupiter.api.BeforeAll;
 import org.apache.syncope.common.rest.api.service.SAML2IdPEntityService;
+import org.apache.syncope.fit.AbstractITCase;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 public class SAML2IdPEntityITCase extends AbstractITCase {
 
-    private static SAML2IdPEntityService waSAML2IdPEntityService;
+    private static SAML2IdPEntityService WA_SAML2IDP_ENTITY_SERVICE;
 
     @BeforeAll
     public static void setup() {
-        assumeTrue(clientFactory.getContentType() == SyncopeClientFactoryBean.ContentType.JSON);
+        assumeTrue(CLIENT_FACTORY.getContentType() == SyncopeClientFactoryBean.ContentType.JSON);
 
-        SyncopeClient anonymous = clientFactory.create(
+        SyncopeClient anonymous = CLIENT_FACTORY.create(
                 new AnonymousAuthenticationHandler(ANONYMOUS_UNAME, ANONYMOUS_KEY));
-        waSAML2IdPEntityService = anonymous.getService(SAML2IdPEntityService.class);
+        WA_SAML2IDP_ENTITY_SERVICE = anonymous.getService(SAML2IdPEntityService.class);
     }
 
     private static SAML2IdPEntityTO set() {
@@ -61,7 +61,7 @@
                 signingKey(Base64.getEncoder().encodeToString(
                         "testSigningKey".getBytes(StandardCharsets.UTF_8))).
                 build();
-        waSAML2IdPEntityService.set(entityTO);
+        WA_SAML2IDP_ENTITY_SERVICE.set(entityTO);
 
         return entityTO;
     }
@@ -70,7 +70,7 @@
     public void get() {
         SAML2IdPEntityTO entityTO;
         try {
-            entityTO = waSAML2IdPEntityService.get(SAML2IdPEntityService.DEFAULT_OWNER);
+            entityTO = WA_SAML2IDP_ENTITY_SERVICE.get(SAML2IdPEntityService.DEFAULT_OWNER);
         } catch (SyncopeClientException e) {
             entityTO = set();
         }
@@ -83,16 +83,16 @@
     public void getAndSet() {
         SAML2IdPEntityTO entityTO;
         try {
-            entityTO = waSAML2IdPEntityService.get(SAML2IdPEntityService.DEFAULT_OWNER);
+            entityTO = WA_SAML2IDP_ENTITY_SERVICE.get(SAML2IdPEntityService.DEFAULT_OWNER);
         } catch (SyncopeClientException e) {
             entityTO = set();
         }
         assertNotNull(entityTO);
 
         entityTO.setMetadata(Base64.getEncoder().encodeToString("new metadata".getBytes(StandardCharsets.UTF_8)));
-        waSAML2IdPEntityService.set(entityTO);
+        WA_SAML2IDP_ENTITY_SERVICE.set(entityTO);
 
-        entityTO = waSAML2IdPEntityService.get(entityTO.getKey());
+        entityTO = WA_SAML2IDP_ENTITY_SERVICE.get(entityTO.getKey());
         assertEquals(
                 "new metadata",
                 new String(Base64.getDecoder().decode(entityTO.getMetadata()), StandardCharsets.UTF_8));
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2SPEntityITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2SPEntityITCase.java
index e05d403..daa41ba 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2SPEntityITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2SPEntityITCase.java
@@ -29,24 +29,24 @@
 import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.SAML2SPEntityTO;
+import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
 import org.apache.syncope.fit.AbstractITCase;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
 
 public class SAML2SPEntityITCase extends AbstractITCase {
 
     private static final String OWNER = "owner";
 
-    private static SAML2SPEntityService waSAML2SPEntityService;
+    private static SAML2SPEntityService WA_SAML2SP_ENTITY_SERVICE;
 
     @BeforeAll
     public static void setup() {
-        assumeTrue(clientFactory.getContentType() == SyncopeClientFactoryBean.ContentType.JSON);
+        assumeTrue(CLIENT_FACTORY.getContentType() == SyncopeClientFactoryBean.ContentType.JSON);
 
-        SyncopeClient anonymous = clientFactory.create(
+        SyncopeClient anonymous = CLIENT_FACTORY.create(
                 new AnonymousAuthenticationHandler(ANONYMOUS_UNAME, ANONYMOUS_KEY));
-        waSAML2SPEntityService = anonymous.getService(SAML2SPEntityService.class);
+        WA_SAML2SP_ENTITY_SERVICE = anonymous.getService(SAML2SPEntityService.class);
     }
 
     private static SAML2SPEntityTO set() {
@@ -54,7 +54,7 @@
                 key(OWNER).
                 metadata(Base64.getEncoder().encodeToString("testMetadata".getBytes(StandardCharsets.UTF_8))).
                 build();
-        waSAML2SPEntityService.set(entityTO);
+        WA_SAML2SP_ENTITY_SERVICE.set(entityTO);
 
         return entityTO;
     }
@@ -63,7 +63,7 @@
     public void get() {
         SAML2SPEntityTO entityTO;
         try {
-            entityTO = waSAML2SPEntityService.get(OWNER);
+            entityTO = WA_SAML2SP_ENTITY_SERVICE.get(OWNER);
         } catch (SyncopeClientException e) {
             entityTO = set();
         }
@@ -76,16 +76,16 @@
     public void getAndSet() {
         SAML2SPEntityTO entityTO;
         try {
-            entityTO = waSAML2SPEntityService.get(OWNER);
+            entityTO = WA_SAML2SP_ENTITY_SERVICE.get(OWNER);
         } catch (SyncopeClientException e) {
             entityTO = set();
         }
         assertNotNull(entityTO);
 
         entityTO.setMetadata(Base64.getEncoder().encodeToString("new metadata".getBytes(StandardCharsets.UTF_8)));
-        waSAML2SPEntityService.set(entityTO);
+        WA_SAML2SP_ENTITY_SERVICE.set(entityTO);
 
-        entityTO = waSAML2SPEntityService.get(entityTO.getKey());
+        entityTO = WA_SAML2SP_ENTITY_SERVICE.get(entityTO.getKey());
         assertEquals(
                 "new metadata",
                 new String(Base64.getDecoder().decode(entityTO.getMetadata()), StandardCharsets.UTF_8));
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SCIMITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SCIMITCase.java
index 0129ea6..421e046 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SCIMITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SCIMITCase.java
@@ -119,7 +119,7 @@
                         findAndAddModules().disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).build()))).
                 accept(SCIMConstants.APPLICATION_SCIM_JSON_TYPE).
                 type(SCIMConstants.APPLICATION_SCIM_JSON_TYPE).
-                header(HttpHeaders.AUTHORIZATION, "Bearer " + adminClient.getJWT());
+                header(HttpHeaders.AUTHORIZATION, "Bearer " + ADMIN_CLIENT.getJWT());
     }
 
     @Test
@@ -222,10 +222,10 @@
 
     @Test
     public void conf() {
-        SCIMConf conf = scimConfService.get();
+        SCIMConf conf = SCIM_CONF_SERVICE.get();
         assertNotNull(conf);
 
-        scimConfService.set(CONF);
+        SCIM_CONF_SERVICE.set(CONF);
 
         Response response = webClient().path("Users").path("1417acbe-cbf6-4277-9372-e75e04f97000").get();
         assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
@@ -309,7 +309,7 @@
         assertEquals("additional", additional.getDisplayName());
 
         // gt
-        UserTO newUser = userService.create(UserITCase.getUniqueSample("scimsearch@syncope.apache.org")).
+        UserTO newUser = USER_SERVICE.create(UserITCase.getUniqueSample("scimsearch@syncope.apache.org")).
                 readEntity(new GenericType<ProvisioningResult<UserTO>>() {
                 }).getEntity();
 
@@ -355,7 +355,7 @@
 
     @Test
     public void createUser() throws JsonProcessingException {
-        scimConfService.set(CONF);
+        SCIM_CONF_SERVICE.set(CONF);
 
         SCIMUser user = getSampleUser(UUID.randomUUID().toString());
         user.getRoles().add(new Value("User reviewer"));
@@ -368,7 +368,7 @@
         assertNotNull(user.getId());
         assertTrue(response.getLocation().toASCIIString().endsWith(user.getId()));
 
-        UserTO userTO = userService.read(user.getId());
+        UserTO userTO = USER_SERVICE.read(user.getId());
         assertEquals(user.getUserName(), userTO.getUsername());
         assertTrue(user.isActive());
         assertEquals(user.getDisplayName(), userTO.getDerAttr("cn").get().getValues().get(0));
@@ -383,7 +383,7 @@
 
     @Test
     public void replaceUser() {
-        scimConfService.set(CONF);
+        SCIM_CONF_SERVICE.set(CONF);
 
         SCIMUser user = getSampleUser(UUID.randomUUID().toString());
 
@@ -404,7 +404,7 @@
 
     @Test
     public void deleteUser() {
-        scimConfService.set(CONF);
+        SCIM_CONF_SERVICE.set(CONF);
 
         SCIMUser user = getSampleUser(UUID.randomUUID().toString());
 
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SRARouteITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SRARouteITCase.java
index 33a561a..a71dbaa 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SRARouteITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SRARouteITCase.java
@@ -31,24 +31,24 @@
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.SRARouteTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.common.lib.types.SRARouteFilterFactory;
 import org.apache.syncope.common.lib.types.SRARouteFilter;
+import org.apache.syncope.common.lib.types.SRARouteFilterFactory;
 import org.apache.syncope.common.lib.types.SRARoutePredicate;
 import org.apache.syncope.common.lib.types.SRARoutePredicateFactory;
+import org.apache.syncope.common.rest.api.service.SRARouteService;
 import org.apache.syncope.fit.AbstractITCase;
 import org.junit.jupiter.api.Test;
-import org.apache.syncope.common.rest.api.service.SRARouteService;
 
 public class SRARouteITCase extends AbstractITCase {
 
     @Test
     public void read() {
-        SRARouteTO route = sraRouteService.read("ec7bada2-3dd6-460c-8441-65521d005ffa");
+        SRARouteTO route = SRA_ROUTE_SERVICE.read("ec7bada2-3dd6-460c-8441-65521d005ffa");
         assertNotNull(route);
         assertEquals(1, route.getPredicates().size());
 
         try {
-            sraRouteService.read(UUID.randomUUID().toString());
+            SRA_ROUTE_SERVICE.read(UUID.randomUUID().toString());
             fail();
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -57,7 +57,7 @@
 
     @Test
     public void findAll() {
-        List<SRARouteTO> routes = sraRouteService.list();
+        List<SRARouteTO> routes = SRA_ROUTE_SERVICE.list();
         assertNotNull(routes);
         assertFalse(routes.isEmpty());
     }
@@ -72,27 +72,27 @@
         route.getFilters().add(new SRARouteFilter.Builder().
                 factory(SRARouteFilterFactory.ADD_REQUEST_HEADER).args("X-Request-Foo, Bar").build());
 
-        int beforeCount = sraRouteService.list().size();
+        int beforeCount = SRA_ROUTE_SERVICE.list().size();
 
-        Response response = sraRouteService.create(route);
+        Response response = SRA_ROUTE_SERVICE.create(route);
         assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
         route = getObject(response.getLocation(), SRARouteService.class, SRARouteTO.class);
         assertNotNull(route);
         assertNotNull(route.getKey());
 
-        int afterCount = sraRouteService.list().size();
+        int afterCount = SRA_ROUTE_SERVICE.list().size();
         assertEquals(afterCount, beforeCount + 1);
 
-        sraRouteService.delete(route.getKey());
+        SRA_ROUTE_SERVICE.delete(route.getKey());
 
         try {
-            sraRouteService.read(route.getKey());
+            SRA_ROUTE_SERVICE.read(route.getKey());
             fail();
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
 
-        int endCount = sraRouteService.list().size();
+        int endCount = SRA_ROUTE_SERVICE.list().size();
         assertEquals(endCount, beforeCount);
     }
 
@@ -100,7 +100,7 @@
     public void exceptions() {
         SRARouteTO route = new SRARouteTO();
         try {
-            sraRouteService.create(route);
+            SRA_ROUTE_SERVICE.create(route);
             fail();
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.RequiredValuesMissing, e.getType());
@@ -108,18 +108,18 @@
 
         route.setName("createException");
         try {
-            sraRouteService.create(route);
+            SRA_ROUTE_SERVICE.create(route);
             fail();
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.RequiredValuesMissing, e.getType());
         }
 
         route.setTarget(URI.create("http://httpbin.org:80"));
-        Response response = sraRouteService.create(route);
+        Response response = SRA_ROUTE_SERVICE.create(route);
         assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
 
         try {
-            sraRouteService.create(route);
+            SRA_ROUTE_SERVICE.create(route);
             fail();
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.EntityExists, e.getType());
@@ -127,13 +127,13 @@
 
         route.setKey(UUID.randomUUID().toString());
         try {
-            sraRouteService.update(route);
+            SRA_ROUTE_SERVICE.update(route);
             fail();
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
         try {
-            sraRouteService.delete(route.getKey());
+            SRA_ROUTE_SERVICE.delete(route.getKey());
             fail();
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SchedTaskITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SchedTaskITCase.java
index ba01e69..c896478 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SchedTaskITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SchedTaskITCase.java
@@ -33,19 +33,19 @@
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 import javax.ws.rs.core.Response;
-import org.apache.syncope.common.lib.to.JobTO;
-import org.apache.syncope.common.lib.to.PagedResult;
-import org.apache.syncope.common.lib.to.PushTaskTO;
-import org.apache.syncope.common.lib.to.SchedTaskTO;
-import org.apache.syncope.common.lib.to.PullTaskTO;
 import org.apache.syncope.common.lib.to.ExecTO;
 import org.apache.syncope.common.lib.to.ImplementationTO;
+import org.apache.syncope.common.lib.to.JobTO;
+import org.apache.syncope.common.lib.to.PagedResult;
+import org.apache.syncope.common.lib.to.PullTaskTO;
+import org.apache.syncope.common.lib.to.PushTaskTO;
+import org.apache.syncope.common.lib.to.SchedTaskTO;
 import org.apache.syncope.common.lib.to.TaskTO;
 import org.apache.syncope.common.lib.types.IdRepoImplementationType;
 import org.apache.syncope.common.lib.types.JobAction;
 import org.apache.syncope.common.lib.types.TaskType;
-import org.apache.syncope.common.rest.api.beans.ExecSpecs;
 import org.apache.syncope.common.rest.api.beans.ExecListQuery;
+import org.apache.syncope.common.rest.api.beans.ExecSpecs;
 import org.apache.syncope.common.rest.api.beans.TaskQuery;
 import org.apache.syncope.common.rest.api.service.TaskService;
 import org.apache.syncope.fit.core.reference.TestSampleJobDelegate;
@@ -55,7 +55,7 @@
 
     @Test
     public void getJobClasses() {
-        Set<String> jobClasses = adminClient.platform().
+        Set<String> jobClasses = ADMIN_CLIENT.platform().
                 getJavaImplInfo(IdRepoImplementationType.TASKJOB_DELEGATE).get().getClasses();
         assertNotNull(jobClasses);
         assertFalse(jobClasses.isEmpty());
@@ -64,7 +64,7 @@
     @Test
     public void list() {
         PagedResult<SchedTaskTO> tasks =
-                taskService.search(new TaskQuery.Builder(TaskType.SCHEDULED).build());
+                TASK_SERVICE.search(new TaskQuery.Builder(TaskType.SCHEDULED).build());
         assertFalse(tasks.getResult().isEmpty());
         tasks.getResult().stream().filter(
                 task -> !(task instanceof SchedTaskTO) || task instanceof PullTaskTO || task instanceof PushTaskTO).
@@ -73,7 +73,7 @@
 
     @Test
     public void update() {
-        SchedTaskTO task = taskService.read(TaskType.SCHEDULED, SCHED_TASK_KEY, true);
+        SchedTaskTO task = TASK_SERVICE.read(TaskType.SCHEDULED, SCHED_TASK_KEY, true);
         assertNotNull(task);
 
         SchedTaskTO taskMod = new SchedTaskTO();
@@ -81,8 +81,8 @@
         taskMod.setName(task.getName());
         taskMod.setCronExpression(null);
 
-        taskService.update(TaskType.SCHEDULED, taskMod);
-        SchedTaskTO actual = taskService.read(TaskType.SCHEDULED, taskMod.getKey(), true);
+        TASK_SERVICE.update(TaskType.SCHEDULED, taskMod);
+        SchedTaskTO actual = TASK_SERVICE.read(TaskType.SCHEDULED, taskMod.getKey(), true);
         assertNotNull(actual);
         assertEquals(task.getKey(), actual.getKey());
         assertNull(actual.getCronExpression());
@@ -90,7 +90,7 @@
 
     @Test
     public void deferred() {
-        ImplementationTO taskJobDelegate = implementationService.read(
+        ImplementationTO taskJobDelegate = IMPLEMENTATION_SERVICE.read(
                 IdRepoImplementationType.TASKJOB_DELEGATE, TestSampleJobDelegate.class.getSimpleName());
         assertNotNull(taskJobDelegate);
 
@@ -99,7 +99,7 @@
         task.setName("deferred");
         task.setJobDelegate(taskJobDelegate.getKey());
 
-        Response response = taskService.create(TaskType.SCHEDULED, task);
+        Response response = TASK_SERVICE.create(TaskType.SCHEDULED, task);
         task = getObject(response.getLocation(), TaskService.class, SchedTaskTO.class);
         assertNotNull(task);
         String taskKey = task.getKey();
@@ -110,12 +110,12 @@
 
         AtomicReference<TaskTO> taskTO = new AtomicReference<>(task);
         int preSyncSize = taskTO.get().getExecutions().size();
-        ExecTO execution = taskService.execute(new ExecSpecs.Builder().key(task.getKey()).startAt(later).build());
+        ExecTO execution = TASK_SERVICE.execute(new ExecSpecs.Builder().key(task.getKey()).startAt(later).build());
         assertNotNull(execution.getExecutor());
 
         await().atMost(MAX_WAIT_SECONDS, TimeUnit.SECONDS).pollInterval(1, TimeUnit.SECONDS).until(() -> {
             try {
-                taskTO.set(taskService.read(TaskType.SCHEDULED, taskKey, true));
+                taskTO.set(TASK_SERVICE.read(TaskType.SCHEDULED, taskKey, true));
                 return preSyncSize < taskTO.get().getExecutions().size();
             } catch (Exception e) {
                 return false;
@@ -123,7 +123,7 @@
         });
 
         PagedResult<ExecTO> execs =
-                taskService.listExecutions(new ExecListQuery.Builder().key(task.getKey()).build());
+                TASK_SERVICE.listExecutions(new ExecListQuery.Builder().key(task.getKey()).build());
         assertEquals(1, execs.getTotalCount());
         assertTrue(execs.getResult().get(0).getStart().isAfter(initial));
         // round 1 sec for safety
@@ -132,7 +132,7 @@
 
     @Test
     public void issueSYNCOPE144() {
-        ImplementationTO taskJobDelegate = implementationService.read(
+        ImplementationTO taskJobDelegate = IMPLEMENTATION_SERVICE.read(
                 IdRepoImplementationType.TASKJOB_DELEGATE, TestSampleJobDelegate.class.getSimpleName());
         assertNotNull(taskJobDelegate);
 
@@ -141,13 +141,13 @@
         task.setDescription("issueSYNCOPE144 Description");
         task.setJobDelegate(taskJobDelegate.getKey());
 
-        Response response = taskService.create(TaskType.SCHEDULED, task);
+        Response response = TASK_SERVICE.create(TaskType.SCHEDULED, task);
         task = getObject(response.getLocation(), TaskService.class, SchedTaskTO.class);
         assertNotNull(task);
         assertEquals("issueSYNCOPE144", task.getName());
         assertEquals("issueSYNCOPE144 Description", task.getDescription());
 
-        task = taskService.read(TaskType.SCHEDULED, task.getKey(), true);
+        task = TASK_SERVICE.read(TaskType.SCHEDULED, task.getKey(), true);
         assertNotNull(task);
         assertEquals("issueSYNCOPE144", task.getName());
         assertEquals("issueSYNCOPE144 Description", task.getDescription());
@@ -155,7 +155,7 @@
         task.setName("issueSYNCOPE144_2");
         task.setDescription("issueSYNCOPE144 Description_2");
 
-        response = taskService.create(TaskType.SCHEDULED, task);
+        response = TASK_SERVICE.create(TaskType.SCHEDULED, task);
         task = getObject(response.getLocation(), TaskService.class, SchedTaskTO.class);
         assertNotNull(task);
         assertEquals("issueSYNCOPE144_2", task.getName());
@@ -164,10 +164,10 @@
 
     @Test
     public void issueSYNCOPE660() {
-        List<JobTO> jobs = taskService.listJobs();
+        List<JobTO> jobs = TASK_SERVICE.listJobs();
         int oldSize = jobs.size();
 
-        ImplementationTO taskJobDelegate = implementationService.read(
+        ImplementationTO taskJobDelegate = IMPLEMENTATION_SERVICE.read(
                 IdRepoImplementationType.TASKJOB_DELEGATE, TestSampleJobDelegate.class.getSimpleName());
         assertNotNull(taskJobDelegate);
 
@@ -176,18 +176,18 @@
         task.setDescription("issueSYNCOPE660 Description");
         task.setJobDelegate(taskJobDelegate.getKey());
 
-        Response response = taskService.create(TaskType.SCHEDULED, task);
+        Response response = TASK_SERVICE.create(TaskType.SCHEDULED, task);
         task = getObject(response.getLocation(), TaskService.class, SchedTaskTO.class);
 
-        jobs = taskService.listJobs();
+        jobs = TASK_SERVICE.listJobs();
         assertEquals(oldSize + 1, jobs.size());
 
-        taskService.actionJob(task.getKey(), JobAction.START);
+        TASK_SERVICE.actionJob(task.getKey(), JobAction.START);
 
         AtomicReference<List<JobTO>> run = new AtomicReference<>();
         await().atMost(MAX_WAIT_SECONDS, TimeUnit.SECONDS).pollInterval(1, TimeUnit.SECONDS).until(() -> {
             try {
-                run.set(taskService.listJobs().stream().filter(JobTO::isRunning).collect(Collectors.toList()));
+                run.set(TASK_SERVICE.listJobs().stream().filter(JobTO::isRunning).collect(Collectors.toList()));
                 return !run.get().isEmpty();
             } catch (Exception e) {
                 return false;
@@ -196,12 +196,12 @@
         assertEquals(1, run.get().size());
         assertEquals(task.getKey(), run.get().get(0).getRefKey());
 
-        taskService.actionJob(task.getKey(), JobAction.STOP);
+        TASK_SERVICE.actionJob(task.getKey(), JobAction.STOP);
 
         run.set(List.of());
         await().atMost(MAX_WAIT_SECONDS, TimeUnit.SECONDS).pollInterval(1, TimeUnit.SECONDS).until(() -> {
             try {
-                run.set(taskService.listJobs().stream().filter(JobTO::isRunning).collect(Collectors.toList()));
+                run.set(TASK_SERVICE.listJobs().stream().filter(JobTO::isRunning).collect(Collectors.toList()));
                 return run.get().isEmpty();
             } catch (Exception e) {
                 return false;
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java
index 8d9bcdd..da31014 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SearchITCase.java
@@ -40,17 +40,17 @@
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.request.AnyObjectCR;
 import org.apache.syncope.common.lib.request.AnyObjectUR;
+import org.apache.syncope.common.lib.request.AttrPatch;
 import org.apache.syncope.common.lib.request.GroupCR;
 import org.apache.syncope.common.lib.request.MembershipUR;
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.request.UserUR;
-import org.apache.syncope.common.lib.request.AttrPatch;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
-import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
 import org.apache.syncope.common.lib.to.PagedConnObjectTOResult;
+import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.RoleTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
@@ -60,8 +60,8 @@
 import org.apache.syncope.common.rest.api.service.RoleService;
 import org.apache.syncope.fit.AbstractITCase;
 import org.apache.syncope.fit.ElasticsearchDetector;
-import org.junit.jupiter.api.Assertions;
 import org.identityconnectors.framework.common.objects.Name;
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
 public class SearchITCase extends AbstractITCase {
@@ -69,7 +69,7 @@
     @Test
     public void searchUser() {
         // LIKE
-        PagedResult<UserTO> matchingUsers = userService.search(
+        PagedResult<UserTO> matchingUsers = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().
                                 is("fullname").equalTo("*o*").and("fullname").equalTo("*i*").query()).build());
@@ -78,7 +78,7 @@
         matchingUsers.getResult().stream().forEach(Assertions::assertNotNull);
 
         // ISNULL
-        matchingUsers = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        matchingUsers = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().isNull("loginDate").query()).build());
         assertNotNull(matchingUsers);
         assertFalse(matchingUsers.getResult().isEmpty());
@@ -90,7 +90,7 @@
 
     @Test
     public void searchUserIgnoreCase() {
-        PagedResult<UserTO> matchingUsers = userService.search(
+        PagedResult<UserTO> matchingUsers = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().
                                 is("username").equalToIgnoreCase("RoSsINI").and("key").lessThan(2).query()).build());
@@ -98,14 +98,14 @@
         assertEquals(1, matchingUsers.getResult().size());
         assertEquals("rossini", matchingUsers.getResult().get(0).getUsername());
 
-        matchingUsers = userService.search(
+        matchingUsers = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql("fullname=~*oSsINi").page(1).size(2).build());
         assertNotNull(matchingUsers);
         assertEquals(1, matchingUsers.getResult().size());
         assertEquals("rossini", matchingUsers.getResult().get(0).getUsername());
 
-        matchingUsers = userService.search(
+        matchingUsers = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql("fullname=~*ino*rossini*").page(1).size(2).build());
         assertNotNull(matchingUsers);
@@ -115,7 +115,7 @@
 
     @Test
     public void searchByUsernameAndKey() {
-        PagedResult<UserTO> matchingUsers = userService.search(
+        PagedResult<UserTO> matchingUsers = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().
                                 is("username").equalTo("rossini").and("key").lessThan(2).query()).build());
@@ -126,7 +126,7 @@
 
     @Test
     public void searchByGroupNameAndKey() {
-        PagedResult<GroupTO> groups = groupService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        PagedResult<GroupTO> groups = GROUP_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getGroupSearchConditionBuilder().
                         is("name").equalTo("root").and("key").equalTo("37d15e4c-cdc1-460b-a591-8505c8133806").
                         query()).build());
@@ -138,13 +138,13 @@
 
     @Test
     public void searchByGroup() {
-        PagedResult<UserTO> matchingChild = userService.search(
+        PagedResult<UserTO> matchingChild = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().inGroups("child").query()).
                         build());
         assertTrue(matchingChild.getResult().stream().anyMatch(user -> "verdi".equals(user.getUsername())));
 
-        PagedResult<UserTO> matchingOtherChild = userService.search(
+        PagedResult<UserTO> matchingOtherChild = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().inGroups("otherchild").query()).
                         build());
@@ -155,7 +155,7 @@
                 matchingOtherChild.getResult().stream().map(UserTO::getUsername)).
                 collect(Collectors.toSet());
 
-        PagedResult<UserTO> matchingStar = userService.search(
+        PagedResult<UserTO> matchingStar = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().inGroups("*child").query()).
                         build());
@@ -163,7 +163,7 @@
         assertTrue(matchingStar.getResult().stream().anyMatch(user -> "rossini".equals(user.getUsername())));
         assertEquals(union, matchingStar.getResult().stream().map(UserTO::getUsername).collect(Collectors.toSet()));
 
-        matchingStar = userService.search(
+        matchingStar = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).recursive(false).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().inGroups("*child").query()).
                         build());
@@ -178,7 +178,7 @@
         GroupTO group = createGroup(groupCR).getEntity();
         assertNotNull(group);
 
-        if (ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform())) {
+        if (ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform())) {
             try {
                 Thread.sleep(2000);
             } catch (InterruptedException ex) {
@@ -186,7 +186,7 @@
             }
         }
 
-        PagedResult<GroupTO> matchingGroups = groupService.search(
+        PagedResult<GroupTO> matchingGroups = GROUP_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getGroupSearchConditionBuilder().
                                 is("creationContext").equalTo("REST").query()).
@@ -194,7 +194,7 @@
         assertNotNull(matchingGroups);
         assertTrue(matchingGroups.getTotalCount() > 0);
 
-        PagedResult<UserTO> matchingUsers = userService.search(
+        PagedResult<UserTO> matchingUsers = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().inGroups(group.getKey()).query()).
                         build());
@@ -206,7 +206,7 @@
 
     @Test
     public void searchByRole() {
-        PagedResult<UserTO> matchingUsers = userService.search(
+        PagedResult<UserTO> matchingUsers = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().inRoles("Other").query()).
                         build());
@@ -218,7 +218,7 @@
 
     @Test
     public void searchByPrivilege() {
-        PagedResult<UserTO> matchingUsers = userService.search(
+        PagedResult<UserTO> matchingUsers = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().withPrivileges("postMighty").query()).
                         build());
@@ -232,11 +232,11 @@
     public void searchByDynRole() {
         RoleTO role = RoleITCase.getSampleRoleTO("dynMembership");
         role.setDynMembershipCond("cool==true");
-        Response response = roleService.create(role);
+        Response response = ROLE_SERVICE.create(role);
         role = getObject(response.getLocation(), RoleService.class, RoleTO.class);
         assertNotNull(role);
 
-        if (ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform())) {
+        if (ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform())) {
             try {
                 Thread.sleep(2000);
             } catch (InterruptedException ex) {
@@ -244,7 +244,7 @@
             }
         }
 
-        PagedResult<UserTO> matchingUsers = userService.search(
+        PagedResult<UserTO> matchingUsers = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().inRoles(role.getKey()).query()).
                         build());
@@ -257,7 +257,7 @@
 
     @Test
     public void searchByAuxClass() {
-        PagedResult<GroupTO> matchingGroups = groupService.search(
+        PagedResult<GroupTO> matchingGroups = GROUP_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getGroupSearchConditionBuilder().
                                 hasAuxClasses("csv").query()).
@@ -273,7 +273,7 @@
 
     @Test
     public void searchByResource() {
-        PagedResult<UserTO> matchingUsers = userService.search(
+        PagedResult<UserTO> matchingUsers = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().
                                 hasResources(RESOURCE_NAME_MAPPINGS2).query()).
@@ -288,7 +288,7 @@
     @Test
     public void paginatedSearch() {
         // LIKE
-        PagedResult<UserTO> matchingUsers = userService.search(
+        PagedResult<UserTO> matchingUsers = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().
                                 is("fullname").equalTo("*o*").and("fullname").equalTo("*i*").query()).page(1).size(2).
@@ -301,7 +301,7 @@
         }
 
         // ISNULL
-        matchingUsers = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        matchingUsers = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().isNull("loginDate").query()).page(2).size(2).
                 build());
         assertNotNull(matchingUsers);
@@ -311,19 +311,19 @@
 
     @Test
     public void searchByRealm() {
-        PagedResult<UserTO> users = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        PagedResult<UserTO> users = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().is("realm").
                         equalTo("c5b75db1-fce7-470f-b780-3b9934d82a9d").query()).build());
         assertTrue(users.getResult().stream().anyMatch(user -> "rossini".equals(user.getUsername())));
 
-        users = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        users = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().is("realm").equalTo("/even").query()).build());
         assertTrue(users.getResult().stream().anyMatch(user -> "rossini".equals(user.getUsername())));
     }
 
     @Test
     public void searchByBooleanAnyCond() {
-        PagedResult<GroupTO> groups = groupService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        PagedResult<GroupTO> groups = GROUP_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getGroupSearchConditionBuilder().is("show").equalTo("true").query()).build());
         assertNotNull(groups);
         assertFalse(groups.getResult().isEmpty());
@@ -331,9 +331,9 @@
 
     @Test
     public void searchByDate() {
-        clientFactory.create("bellini", "password").self();
+        CLIENT_FACTORY.create("bellini", "password").self();
 
-        if (ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform())) {
+        if (ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform())) {
             try {
                 Thread.sleep(2000);
             } catch (InterruptedException ex) {
@@ -341,7 +341,7 @@
             }
         }
 
-        PagedResult<UserTO> users = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        PagedResult<UserTO> users = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().
                         is("lastLoginDate").lexicalNotBefore("2016-03-02 15:21:22").
                         and("username").equalTo("bellini").query()).
@@ -351,7 +351,7 @@
         assertEquals(1, users.getResult().size());
 
         // SYNCOPE-1321
-        PagedResult<UserTO> issueSYNCOPE1321 = userService.search(new AnyQuery.Builder().
+        PagedResult<UserTO> issueSYNCOPE1321 = USER_SERVICE.search(new AnyQuery.Builder().
                 realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().
                         is("lastLoginDate").lexicalNotBefore("2016-03-02T15:21:22+0300").
@@ -362,7 +362,7 @@
 
     @Test
     public void searchByRelationshipAnyCond() {
-        PagedResult<GroupTO> groups = groupService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        PagedResult<GroupTO> groups = GROUP_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getGroupSearchConditionBuilder().
                         is("userOwner").equalTo("823074dc-d280-436d-a7dd-07399fae48ec").query()).build());
         assertNotNull(groups);
@@ -374,7 +374,7 @@
 
     @Test
     public void nested() {
-        PagedResult<UserTO> matchingUsers = userService.search(
+        PagedResult<UserTO> matchingUsers = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql("((fullname==*o*,fullname==*i*);$resources!=ws-target-resource-1)").
                         page(1).size(2).build());
@@ -386,7 +386,7 @@
 
     @Test
     public void searchByType() {
-        PagedResult<AnyObjectTO> matching = anyObjectService.search(new AnyQuery.Builder().realm(
+        PagedResult<AnyObjectTO> matching = ANY_OBJECT_SERVICE.search(new AnyQuery.Builder().realm(
                 SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getAnyObjectSearchConditionBuilder(PRINTER).query()).build());
         assertNotNull(matching);
@@ -396,7 +396,7 @@
             assertNotNull(printer);
         }
 
-        matching = anyObjectService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        matching = ANY_OBJECT_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getAnyObjectSearchConditionBuilder("UNEXISTING").query()).build());
         assertNotNull(matching);
 
@@ -405,7 +405,7 @@
 
     @Test
     public void searchByRelationship() {
-        PagedResult<AnyObjectTO> anyObjects = anyObjectService.search(new AnyQuery.Builder().realm(
+        PagedResult<AnyObjectTO> anyObjects = ANY_OBJECT_SERVICE.search(new AnyQuery.Builder().realm(
                 SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getAnyObjectSearchConditionBuilder(PRINTER).
                         inRelationships("Canon MF 8030cn").query()).
@@ -414,7 +414,7 @@
         assertTrue(anyObjects.getResult().stream().
                 anyMatch(anyObject -> "fc6dbc3a-6c07-4965-8781-921e7401a4a5".equals(anyObject.getKey())));
 
-        PagedResult<UserTO> users = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        PagedResult<UserTO> users = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().inRelationships("HP LJ 1300n").query()).
                 build());
         assertNotNull(users);
@@ -424,7 +424,7 @@
 
     @Test
     public void searchByRelationshipType() {
-        PagedResult<AnyObjectTO> anyObjects = anyObjectService.search(new AnyQuery.Builder().realm(
+        PagedResult<AnyObjectTO> anyObjects = ANY_OBJECT_SERVICE.search(new AnyQuery.Builder().realm(
                 SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getAnyObjectSearchConditionBuilder(PRINTER).
                         inRelationshipTypes("neighborhood").query()).
@@ -435,7 +435,7 @@
         assertTrue(anyObjects.getResult().stream().
                 anyMatch(anyObject -> "8559d14d-58c2-46eb-a2d4-a7d35161e8f8".equals(anyObject.getKey())));
 
-        PagedResult<UserTO> users = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        PagedResult<UserTO> users = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().inRelationshipTypes("neighborhood").query()).
                 build());
         assertNotNull(users);
@@ -454,7 +454,7 @@
         assertNotNull(userTO.getSecurityQuestion());
 
         try {
-            userService.search(
+            USER_SERVICE.search(
                     new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                             fiql(SyncopeClient.getUserSearchConditionBuilder().
                                     is("securityAnswer").equalTo(securityAnswer).query()).build());
@@ -466,7 +466,7 @@
 
     @Test
     public void assignable() {
-        PagedResult<GroupTO> groups = groupService.search(new AnyQuery.Builder().realm("/even/two").page(1).size(1000).
+        PagedResult<GroupTO> groups = GROUP_SERVICE.search(new AnyQuery.Builder().realm("/even/two").page(1).size(1000).
                 fiql(SyncopeClient.getGroupSearchConditionBuilder().isAssignable().
                         and("name").equalTo("*").query()).
                 build());
@@ -476,7 +476,7 @@
         assertFalse(groups.getResult().stream().
                 anyMatch(group -> "e7ff94e8-19c9-4f0a-b8b7-28327edbf6ed".equals(group.getKey())));
 
-        PagedResult<AnyObjectTO> anyObjects = anyObjectService.search(new AnyQuery.Builder().realm("/odd").
+        PagedResult<AnyObjectTO> anyObjects = ANY_OBJECT_SERVICE.search(new AnyQuery.Builder().realm("/odd").
                 fiql(SyncopeClient.getAnyObjectSearchConditionBuilder(PRINTER).isAssignable().
                         and("name").equalTo("*").query()).
                 build());
@@ -487,7 +487,7 @@
 
     @Test
     public void member() {
-        PagedResult<GroupTO> groups = groupService.search(new AnyQuery.Builder().realm("/").
+        PagedResult<GroupTO> groups = GROUP_SERVICE.search(new AnyQuery.Builder().realm("/").
                 fiql(SyncopeClient.getGroupSearchConditionBuilder().withMembers("rossini").query()).
                 build());
         assertNotNull(groups);
@@ -498,7 +498,7 @@
 
     @Test
     public void orderBy() {
-        PagedResult<UserTO> matchingUsers = userService.search(
+        PagedResult<UserTO> matchingUsers = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).fiql(
                         SyncopeClient.getUserSearchConditionBuilder().is("userId").equalTo("*@apache.org").query()).
                         orderBy(SyncopeClient.getOrderByClauseBuilder().asc("status").desc("firstname").build()).
@@ -532,7 +532,7 @@
                 // needed because ApacheDS seems to randomly fail when searching with cookie
                 for (int i = 0; i < 5 && !succeeded; i++) {
                     try {
-                        matches = resourceService.searchConnObjects(
+                        matches = RESOURCE_SERVICE.searchConnObjects(
                                 RESOURCE_NAME_LDAP,
                                 AnyTypeKind.GROUP.name(),
                                 builder.build());
@@ -557,14 +557,14 @@
             assertTrue(totalRead >= 10);
         } finally {
             groupKeys.forEach(key -> {
-                groupService.delete(key);
+                GROUP_SERVICE.delete(key);
             });
         }
     }
 
     @Test
     public void searchConnObjectsWithFilter() {
-        PagedConnObjectTOResult matches = resourceService.searchConnObjects(
+        PagedConnObjectTOResult matches = RESOURCE_SERVICE.searchConnObjects(
                 RESOURCE_NAME_LDAP,
                 AnyTypeKind.USER.name(),
                 new ConnObjectTOQuery.Builder().size(100).fiql(
@@ -573,7 +573,7 @@
         assertTrue(matches.getResult().stream().
                 anyMatch(connObject -> connObject.getAttr("givenName").get().getValues().contains("pullFromLDAP")));
 
-        matches = resourceService.searchConnObjects(
+        matches = RESOURCE_SERVICE.searchConnObjects(
                 RESOURCE_NAME_LDAP,
                 AnyTypeKind.USER.name(),
                 new ConnObjectTOQuery.Builder().size(100).fiql(
@@ -582,7 +582,7 @@
         assertTrue(matches.getResult().stream().
                 anyMatch(connObject -> connObject.getAttr("cn").get().getValues().contains("pullFromLDAP")));
 
-        matches = resourceService.searchConnObjects(
+        matches = RESOURCE_SERVICE.searchConnObjects(
                 RESOURCE_NAME_LDAP,
                 AnyTypeKind.USER.name(),
                 new ConnObjectTOQuery.Builder().size(100).fiql(
@@ -591,7 +591,7 @@
         assertTrue(matches.getResult().stream().
                 anyMatch(connObject -> connObject.getAttr("cn").get().getValues().contains("pullFromLDAP")));
 
-        matches = resourceService.searchConnObjects(
+        matches = RESOURCE_SERVICE.searchConnObjects(
                 RESOURCE_NAME_LDAP,
                 AnyTypeKind.USER.name(),
                 new ConnObjectTOQuery.Builder().size(100).fiql(
@@ -600,7 +600,7 @@
         assertTrue(matches.getResult().stream().
                 anyMatch(connObject -> connObject.getAttr("givenName").get().getValues().contains("pullFromLDAP")));
 
-        matches = resourceService.searchConnObjects(
+        matches = RESOURCE_SERVICE.searchConnObjects(
                 RESOURCE_NAME_LDAP,
                 AnyTypeKind.USER.name(),
                 new ConnObjectTOQuery.Builder().size(100).fiql(
@@ -609,7 +609,7 @@
         assertTrue(matches.getResult().stream().
                 anyMatch(connObject -> connObject.getAttr("cn").get().getValues().contains("pullFromLDAP")));
 
-        matches = resourceService.searchConnObjects(
+        matches = RESOURCE_SERVICE.searchConnObjects(
                 RESOURCE_NAME_LDAP,
                 AnyTypeKind.USER.name(),
                 new ConnObjectTOQuery.Builder().size(100).fiql(
@@ -618,7 +618,7 @@
         assertFalse(matches.getResult().stream().
                 anyMatch(connObject -> connObject.getAttr("givenName").get().getValues().contains("pullFromLDAP")));
 
-        matches = resourceService.searchConnObjects(
+        matches = RESOURCE_SERVICE.searchConnObjects(
                 RESOURCE_NAME_LDAP,
                 AnyTypeKind.USER.name(),
                 new ConnObjectTOQuery.Builder().size(100).fiql(
@@ -626,7 +626,7 @@
                                 is("homePhone").notNullValue().query()).build());
         assertTrue(matches.getResult().isEmpty());
 
-        matches = resourceService.searchConnObjects(
+        matches = RESOURCE_SERVICE.searchConnObjects(
                 RESOURCE_NAME_LDAP,
                 AnyTypeKind.USER.name(),
                 new ConnObjectTOQuery.Builder().size(100).fiql(
@@ -638,17 +638,17 @@
 
     @Test
     public void issueSYNCOPE768() {
-        int usersWithNullable = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        int usersWithNullable = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().is("ctype").nullValue().query()).build()).
                 getTotalCount();
         assertTrue(usersWithNullable > 0);
 
-        int nonOrdered = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        int nonOrdered = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().is("username").notNullValue().query()).build()).
                 getTotalCount();
         assertTrue(nonOrdered > 0);
 
-        int orderedByNullable = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        int orderedByNullable = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().is("username").notNullValue().query()).
                 orderBy(SyncopeClient.getOrderByClauseBuilder().asc("ctype").build()).build()).
                 getTotalCount();
@@ -657,7 +657,7 @@
 
     @Test
     public void issueSYNCOPE929() {
-        PagedResult<UserTO> matchingUsers = userService.search(
+        PagedResult<UserTO> matchingUsers = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql("(surname==Rossini,gender==M);surname==Bellini").build());
 
@@ -672,7 +672,7 @@
         AnyTypeTO service = new AnyTypeTO();
         service.setKey("SERVICE");
         service.setKind(AnyTypeKind.ANY_OBJECT);
-        Response response = anyTypeService.create(service);
+        Response response = ANY_TYPE_SERVICE.create(service);
         assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
 
         String serviceKey = null;
@@ -687,7 +687,7 @@
                     build();
             updateAnyObject(anyObjectUR);
 
-            if (ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform())) {
+            if (ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform())) {
                 try {
                     Thread.sleep(2000);
                 } catch (InterruptedException ex) {
@@ -695,7 +695,7 @@
                 }
             }
 
-            PagedResult<AnyObjectTO> matching = anyObjectService.search(new AnyQuery.Builder().fiql(
+            PagedResult<AnyObjectTO> matching = ANY_OBJECT_SERVICE.search(new AnyQuery.Builder().fiql(
                     SyncopeClient.getAnyObjectSearchConditionBuilder(service.getKey()).
                             inGroups("29f96485-729e-4d31-88a1-6fc60e4677f3").
                             query()).build());
@@ -703,15 +703,15 @@
             assertEquals(serviceKey, matching.getResult().get(0).getKey());
         } finally {
             if (serviceKey != null) {
-                anyObjectService.delete(serviceKey);
+                ANY_OBJECT_SERVICE.delete(serviceKey);
             }
-            anyTypeService.delete(service.getKey());
+            ANY_TYPE_SERVICE.delete(service.getKey());
         }
     }
 
     @Test
     public void issueSYNCOPE983() {
-        PagedResult<UserTO> users = userService.search(
+        PagedResult<UserTO> users = USER_SERVICE.search(
                 new AnyQuery.Builder().
                         fiql(SyncopeClient.getUserSearchConditionBuilder().is("surname").equalTo("*o*").query()).
                         orderBy(SyncopeClient.getOrderByClauseBuilder().asc("surname").desc("username").build()).
@@ -724,9 +724,9 @@
         UserUR req = new UserUR();
         req.setKey("vivaldi");
         req.getPlainAttrs().add(new AttrPatch.Builder(attr("ctype", "ou=sample,o=isp")).build());
-        userService.update(req);
+        USER_SERVICE.update(req);
 
-        if (ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform())) {
+        if (ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform())) {
             try {
                 Thread.sleep(2000);
             } catch (InterruptedException ex) {
@@ -735,7 +735,7 @@
         }
 
         try {
-            PagedResult<UserTO> users = userService.search(new AnyQuery.Builder().fiql(
+            PagedResult<UserTO> users = USER_SERVICE.search(new AnyQuery.Builder().fiql(
                     SyncopeClient.getUserSearchConditionBuilder().is("ctype").equalTo("ou=sample%252Co=isp").query()).
                     build());
             assertEquals(1, users.getTotalCount());
@@ -743,13 +743,13 @@
         } finally {
             req.getPlainAttrs().clear();
             req.getPlainAttrs().add(new AttrPatch.Builder(attr("ctype", "F")).build());
-            userService.update(req);
+            USER_SERVICE.update(req);
         }
     }
 
     @Test
     public void issueSYNCOPE1304() {
-        PagedResult<GroupTO> groups = groupService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        PagedResult<GroupTO> groups = GROUP_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 orderBy("userOwner DESC").build());
         assertNotNull(groups);
         assertFalse(groups.getResult().isEmpty());
@@ -758,7 +758,7 @@
     @Test
     public void issueSYNCOPE1416() {
         // check the search for attributes of type different from stringvalue
-        PagedResult<UserTO> issueSYNCOPE1416 = userService.search(new AnyQuery.Builder().
+        PagedResult<UserTO> issueSYNCOPE1416 = USER_SERVICE.search(new AnyQuery.Builder().
                 realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().
                         is("loginDate").lexicalNotBefore("2009-05-26").
@@ -769,7 +769,7 @@
         assertEquals("rossini", issueSYNCOPE1416.getResult().get(0).getUsername());
 
         // search by attribute with unique constraint
-        issueSYNCOPE1416 = userService.search(new AnyQuery.Builder().
+        issueSYNCOPE1416 = USER_SERVICE.search(new AnyQuery.Builder().
                 realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().isNotNull("fullname").query()).
                 orderBy(SyncopeClient.getOrderByClauseBuilder().asc("loginDate").build()).
@@ -777,7 +777,7 @@
         // some identities could have been imported by pull tasks executions
         assertTrue(issueSYNCOPE1416.getSize() >= 5);
 
-        issueSYNCOPE1416 = userService.search(new AnyQuery.Builder().
+        issueSYNCOPE1416 = USER_SERVICE.search(new AnyQuery.Builder().
                 realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().isNull("fullname").query()).
                 orderBy(SyncopeClient.getOrderByClauseBuilder().asc("loginDate").build()).
@@ -788,10 +788,10 @@
     @Test
     public void issueSYNCOPE1417() {
         try {
-            userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+            USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                     fiql(SyncopeClient.getUserSearchConditionBuilder().is("userId").equalTo("*@apache.org").query()).
                     orderBy(SyncopeClient.getOrderByClauseBuilder().asc("surname").desc("firstname").build()).build());
-            if (!ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform())) {
+            if (!ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform())) {
                 fail();
             }
         } catch (SyncopeClientException e) {
@@ -801,7 +801,7 @@
 
     @Test
     public void issueSYNCOPE1419() {
-        UserTO rossini = userService.read("rossini");
+        UserTO rossini = USER_SERVICE.read("rossini");
         assertNotNull(rossini);
 
         UserUR req = new UserUR();
@@ -812,16 +812,16 @@
         assertNotNull(rossini);
         assertEquals("2009-05-26", rossini.getPlainAttr("loginDate").get().getValues().get(0));
 
-        PagedResult<UserTO> total = userService.search(
+        PagedResult<UserTO> total = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).page(1).size(1).build());
 
-        PagedResult<UserTO> matching = userService.search(
+        PagedResult<UserTO> matching = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().
                                 is("loginDate").equalTo("2009-05-26").query()).page(1).size(1).build());
         assertTrue(matching.getSize() > 0);
 
-        PagedResult<UserTO> unmatching = userService.search(
+        PagedResult<UserTO> unmatching = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                         fiql(SyncopeClient.getUserSearchConditionBuilder().
                                 is("loginDate").notEqualTo("2009-05-26").query()).page(1).size(1).build());
@@ -832,7 +832,7 @@
 
     @Test
     public void issueSYNCOPE1648() {
-        PagedResult<UserTO> matching = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        PagedResult<UserTO> matching = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().
                         is("username").notEqualTo("verdi").query()).build());
         assertTrue(matching.getResult().stream().noneMatch(user -> "verdi".equals(user.getUsername())));
@@ -840,12 +840,12 @@
 
     @Test
     public void issueSYNCOPE1663() {
-        PagedResult<UserTO> matching1 = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        PagedResult<UserTO> matching1 = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql("lastChangeDate=ge=2022-01-25T17:00:06Z").build());
         assertNotNull(matching1);
         assertFalse(matching1.getResult().isEmpty());
 
-        PagedResult<UserTO> matching2 = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        PagedResult<UserTO> matching2 = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql("lastChangeDate=ge=2022-01-25T17:00:06+0000").build());
         assertNotNull(matching2);
         assertFalse(matching2.getResult().isEmpty());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SecurityQuestionITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SecurityQuestionITCase.java
index 8a6223a..594dbd7 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SecurityQuestionITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SecurityQuestionITCase.java
@@ -36,14 +36,14 @@
 
     @Test
     public void read() {
-        SecurityQuestionTO securityQuestionTO = securityQuestionService.read(
+        SecurityQuestionTO securityQuestionTO = SECURITY_QUESTION_SERVICE.read(
                 "887028ea-66fc-41e7-b397-620d7ea6dfbb");
         assertNotNull(securityQuestionTO);
     }
 
     @Test
     public void list() {
-        List<SecurityQuestionTO> securityQuestionTOs = securityQuestionService.list();
+        List<SecurityQuestionTO> securityQuestionTOs = SECURITY_QUESTION_SERVICE.list();
         assertNotNull(securityQuestionTOs);
         assertFalse(securityQuestionTOs.isEmpty());
         for (SecurityQuestionTO instance : securityQuestionTOs) {
@@ -56,7 +56,7 @@
         SecurityQuestionTO securityQuestionTO = new SecurityQuestionTO();
         securityQuestionTO.setContent("What is your favorite pet's name?");
 
-        Response response = securityQuestionService.create(securityQuestionTO);
+        Response response = SECURITY_QUESTION_SERVICE.create(securityQuestionTO);
         SecurityQuestionTO actual = getObject(response.getLocation(), SecurityQuestionService.class,
                 SecurityQuestionTO.class);
 
@@ -68,12 +68,12 @@
 
     @Test
     public void update() {
-        SecurityQuestionTO securityQuestionTO = securityQuestionService.read(
+        SecurityQuestionTO securityQuestionTO = SECURITY_QUESTION_SERVICE.read(
                 "887028ea-66fc-41e7-b397-620d7ea6dfbb");
         securityQuestionTO.setContent("What is your favorite color?");
 
-        securityQuestionService.update(securityQuestionTO);
-        SecurityQuestionTO actual = securityQuestionService.read(securityQuestionTO.getKey());
+        SECURITY_QUESTION_SERVICE.update(securityQuestionTO);
+        SecurityQuestionTO actual = SECURITY_QUESTION_SERVICE.read(securityQuestionTO.getKey());
         assertNotNull(actual);
         assertEquals(actual, securityQuestionTO);
     }
@@ -83,13 +83,13 @@
         SecurityQuestionTO securityQuestion = new SecurityQuestionTO();
         securityQuestion.setContent("What is your first pet's name?");
 
-        Response response = securityQuestionService.create(securityQuestion);
+        Response response = SECURITY_QUESTION_SERVICE.create(securityQuestion);
         securityQuestion = getObject(response.getLocation(), SecurityQuestionService.class, SecurityQuestionTO.class);
 
-        securityQuestionService.delete(securityQuestion.getKey());
+        SECURITY_QUESTION_SERVICE.delete(securityQuestion.getKey());
 
         try {
-            securityQuestionService.read(securityQuestion.getKey());
+            SECURITY_QUESTION_SERVICE.read(securityQuestion.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java
index f2ddbe7..e9e8a99 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserITCase.java
@@ -45,6 +45,7 @@
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.client.lib.batch.BatchRequest;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.policy.AccountPolicyTO;
@@ -57,25 +58,24 @@
 import org.apache.syncope.common.lib.request.ResourceDR;
 import org.apache.syncope.common.lib.request.StatusR;
 import org.apache.syncope.common.lib.request.StringReplacePatchItem;
-import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.request.UserCR;
-import org.apache.syncope.common.lib.Attr;
+import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.to.ImplementationTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.PropagationStatus;
 import org.apache.syncope.common.lib.to.PropagationTaskTO;
-import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.to.RealmTO;
+import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.common.lib.types.PatchOperation;
 import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.syncope.common.lib.types.IdRepoImplementationType;
 import org.apache.syncope.common.lib.types.ImplementationEngine;
+import org.apache.syncope.common.lib.types.PatchOperation;
 import org.apache.syncope.common.lib.types.PolicyType;
 import org.apache.syncope.common.lib.types.ResourceAssociationAction;
 import org.apache.syncope.common.lib.types.ResourceDeassociationAction;
@@ -122,7 +122,7 @@
 
     @Test
     public void readPrivileges() {
-        Set<String> privileges = userService.read("rossini").getPrivileges();
+        Set<String> privileges = USER_SERVICE.read("rossini").getPrivileges();
         assertNotNull(privileges);
         assertEquals(1, privileges.size());
     }
@@ -137,7 +137,7 @@
         UserTO userTO = createUser(req).getEntity();
 
         // get the propagation task just created
-        PagedResult<PropagationTaskTO> tasks = taskService.search(new TaskQuery.Builder(TaskType.PROPAGATION).
+        PagedResult<PropagationTaskTO> tasks = TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PROPAGATION).
                 anyTypeKind(AnyTypeKind.USER).entityKey(userTO.getKey()).page(1).size(1).build());
         assertNotNull(tasks);
         assertFalse(tasks.getResult().isEmpty());
@@ -177,12 +177,12 @@
 
     @Test
     public void enforceMandatoryConditionOnDerived() {
-        ResourceTO resourceTO = resourceService.read(RESOURCE_NAME_CSV);
+        ResourceTO resourceTO = RESOURCE_SERVICE.read(RESOURCE_NAME_CSV);
         assertNotNull(resourceTO);
         resourceTO.setKey("resource-csv-enforcing");
         resourceTO.setEnforceMandatoryCondition(true);
 
-        Response response = resourceService.create(resourceTO);
+        Response response = RESOURCE_SERVICE.create(resourceTO);
         resourceTO = getObject(response.getLocation(), ResourceService.class, ResourceTO.class);
         assertNotNull(resourceTO);
 
@@ -204,7 +204,7 @@
             assertNotNull(userTO);
             assertEquals(Set.of(resourceTO.getKey()), userTO.getResources());
         } finally {
-            resourceService.delete(resourceTO.getKey());
+            RESOURCE_SERVICE.delete(resourceTO.getKey());
         }
     }
 
@@ -276,13 +276,13 @@
     @Test
     public void create() {
         // get task list
-        PagedResult<PropagationTaskTO> tasks = taskService.search(
+        PagedResult<PropagationTaskTO> tasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).page(1).size(1).build());
         assertNotNull(tasks);
         assertFalse(tasks.getResult().isEmpty());
 
         String maxKey = tasks.getResult().iterator().next().getKey();
-        PropagationTaskTO taskTO = taskService.read(TaskType.PROPAGATION, maxKey, true);
+        PropagationTaskTO taskTO = TASK_SERVICE.read(TaskType.PROPAGATION, maxKey, true);
 
         assertNotNull(taskTO);
         int maxTaskExecutions = taskTO.getExecutions().size();
@@ -317,7 +317,7 @@
         assertNotNull(userTO.getCreationDate());
 
         // get the new task list
-        tasks = taskService.search(new TaskQuery.Builder(TaskType.PROPAGATION).page(1).size(1).build());
+        tasks = TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PROPAGATION).page(1).size(1).build());
         assertNotNull(tasks);
         assertFalse(tasks.getResult().isEmpty());
 
@@ -329,7 +329,7 @@
         assertEquals(newMaxKey, maxKey);
 
         // get last task
-        taskTO = taskService.read(TaskType.PROPAGATION, newMaxKey, true);
+        taskTO = TASK_SERVICE.read(TaskType.PROPAGATION, newMaxKey, true);
 
         assertNotNull(taskTO);
         assertEquals(maxTaskExecutions, taskTO.getExecutions().size());
@@ -337,14 +337,14 @@
         // 3. verify password
         try {
             Triple<Map<String, Set<String>>, List<String>, UserTO> self =
-                    clientFactory.create(userTO.getUsername(), "password123").self();
+                    CLIENT_FACTORY.create(userTO.getUsername(), "password123").self();
             assertNotNull(self);
         } catch (AccessControlException e) {
             fail("Credentials should be valid and not cause AccessControlException");
         }
 
         try {
-            clientFactory.create(userTO.getUsername(), "passwordXX").getService(UserSelfService.class);
+            CLIENT_FACTORY.create(userTO.getUsername(), "passwordXX").getService(UserSelfService.class);
             fail("Credentials are invalid, thus request should raise AccessControlException");
         } catch (AccessControlException e) {
             assertNotNull(e);
@@ -398,7 +398,7 @@
     @Test
     public void delete() {
         try {
-            userService.delete(UUID.randomUUID().toString());
+            USER_SERVICE.delete(UUID.randomUUID().toString());
         } catch (SyncopeClientException e) {
             assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
         }
@@ -423,7 +423,7 @@
         assertEquals(ExecStatus.SUCCESS, result.getPropagationStatuses().get(0).getStatus());
 
         try {
-            userService.delete(userTO.getKey());
+            USER_SERVICE.delete(userTO.getKey());
         } catch (SyncopeClientException e) {
             assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
         }
@@ -439,7 +439,7 @@
         UserTO userTO = createUser(userCR).getEntity();
 
         String key = userTO.getKey();
-        userTO = userService.read(key);
+        userTO = USER_SERVICE.read(key);
 
         ProvisioningResult<UserTO> result = deleteUser(userTO.getKey());
         assertNotNull(result);
@@ -452,7 +452,7 @@
         assertEquals(ExecStatus.SUCCESS, result.getPropagationStatuses().get(0).getStatus());
 
         try {
-            userService.read(userTO.getKey());
+            USER_SERVICE.read(userTO.getKey());
         } catch (SyncopeClientException e) {
             assertEquals(Response.Status.NOT_FOUND, e.getType().getResponseStatus());
         }
@@ -460,7 +460,7 @@
 
     @Test
     public void list() {
-        PagedResult<UserTO> users = userService.search(
+        PagedResult<UserTO> users = USER_SERVICE.search(
                 new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).page(1).size(2).build());
         assertNotNull(users);
         assertFalse(users.getResult().isEmpty());
@@ -470,13 +470,13 @@
             assertNotNull(user);
         }
 
-        users = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        users = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 page(2).size(2).build());
         assertNotNull(users);
         assertEquals(2, users.getPage());
         assertEquals(2, users.getResult().size());
 
-        users = userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        users = USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 page(100).size(2).build());
         assertNotNull(users);
         assertTrue(users.getResult().isEmpty());
@@ -484,7 +484,7 @@
 
     @Test
     public void read() {
-        UserTO userTO = userService.read("1417acbe-cbf6-4277-9372-e75e04f97000");
+        UserTO userTO = USER_SERVICE.read("1417acbe-cbf6-4277-9372-e75e04f97000");
 
         assertNotNull(userTO);
         assertNull(userTO.getPassword());
@@ -522,7 +522,7 @@
             userUR.setKey(userTO.getKey());
             userUR.setPassword(new PasswordPatch.Builder().value("pass").build());
 
-            userService.update(userUR);
+            USER_SERVICE.update(userUR);
         });
     }
 
@@ -539,7 +539,7 @@
             userUR.setKey(userTO.getKey());
             userUR.setPassword(new PasswordPatch.Builder().value("password123").build());
 
-            userService.update(userUR);
+            USER_SERVICE.update(userUR);
         });
     }
 
@@ -601,7 +601,7 @@
 
     @Test
     public void updatePasswordOnly() {
-        int beforeTasks = taskService.search(
+        int beforeTasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).page(1).size(1).build()).getTotalCount();
         assertFalse(beforeTasks <= 0);
 
@@ -619,7 +619,7 @@
         // check for changePwdDate
         assertNotNull(userTO.getChangePwdDate());
 
-        int afterTasks = taskService.search(
+        int afterTasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).page(1).size(1).build()).getTotalCount();
         assertFalse(afterTasks <= 0);
 
@@ -630,7 +630,7 @@
     @Test
     public void verifyTaskRegistration() {
         // get task list
-        PagedResult<PropagationTaskTO> tasks = taskService.search(
+        PagedResult<PropagationTaskTO> tasks = TASK_SERVICE.search(
                 new TaskQuery.Builder(TaskType.PROPAGATION).page(1).size(1).build());
         assertNotNull(tasks);
         assertFalse(tasks.getResult().isEmpty());
@@ -650,7 +650,7 @@
         assertNotNull(userTO);
 
         // get the new task list
-        tasks = taskService.search(new TaskQuery.Builder(TaskType.PROPAGATION).page(1).size(1).build());
+        tasks = TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PROPAGATION).page(1).size(1).build());
         assertNotNull(tasks);
         assertFalse(tasks.getResult().isEmpty());
 
@@ -674,13 +674,13 @@
         assertNotNull(userTO);
 
         // get the new task list
-        tasks = taskService.search(new TaskQuery.Builder(TaskType.PROPAGATION).page(1).size(1).build());
+        tasks = TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PROPAGATION).page(1).size(1).build());
 
         // default configuration for ws-target-resource2 during update:
         // all update executions have to be registered
         newMaxKey = tasks.getResult().iterator().next().getKey();
 
-        PropagationTaskTO taskTO = taskService.read(TaskType.PROPAGATION, newMaxKey, true);
+        PropagationTaskTO taskTO = TASK_SERVICE.read(TaskType.PROPAGATION, newMaxKey, true);
 
         assertNotNull(taskTO);
         assertEquals(1, taskTO.getExecutions().size());
@@ -688,10 +688,10 @@
         // --------------------------------------
         // Delete operation
         // --------------------------------------
-        userService.delete(userTO.getKey());
+        USER_SERVICE.delete(userTO.getKey());
 
         // get the new task list
-        tasks = taskService.search(new TaskQuery.Builder(TaskType.PROPAGATION).page(1).size(1).build());
+        tasks = TASK_SERVICE.search(new TaskQuery.Builder(TaskType.PROPAGATION).page(1).size(1).build());
 
         maxKey = newMaxKey;
         newMaxKey = tasks.getResult().iterator().next().getKey();
@@ -703,7 +703,7 @@
 
     @Test
     public void createActivate() {
-        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform()));
+        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform()));
 
         UserCR userCR = getUniqueSample("createActivate@syncope.apache.org");
 
@@ -720,7 +720,7 @@
         StatusR statusR = new StatusR.Builder().key(userTO.getKey()).
                 type(StatusRType.ACTIVATE).token(userTO.getToken()).build();
 
-        userTO = userService.status(statusR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        userTO = USER_SERVICE.status(statusR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
 
         assertNotNull(userTO);
@@ -738,21 +738,21 @@
         UserTO userTO = createUser(userCR).getEntity();
 
         assertNotNull(userTO);
-        assertEquals(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform())
+        assertEquals(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform())
                 ? "active"
                 : "created", userTO.getStatus());
 
         StatusR statusR = new StatusR.Builder().key(userTO.getKey()).
                 type(StatusRType.SUSPEND).token(userTO.getToken()).build();
 
-        userTO = userService.status(statusR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        userTO = USER_SERVICE.status(statusR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
         assertNotNull(userTO);
         assertEquals("suspended", userTO.getStatus());
 
         statusR = new StatusR.Builder().key(userTO.getKey()).type(StatusRType.REACTIVATE).build();
 
-        userTO = userService.status(statusR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        userTO = USER_SERVICE.status(statusR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
         assertNotNull(userTO);
         assertEquals("active", userTO.getStatus());
@@ -761,9 +761,9 @@
     @Test
     public void suspendReactivateOnResource() {
         // Assert resources are present
-        ResourceTO dbTable = resourceService.read(RESOURCE_NAME_TESTDB);
+        ResourceTO dbTable = RESOURCE_SERVICE.read(RESOURCE_NAME_TESTDB);
         assertNotNull(dbTable);
-        ResourceTO ldap = resourceService.read(RESOURCE_NAME_LDAP);
+        ResourceTO ldap = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
         assertNotNull(ldap);
 
         // Create user with reference to resources
@@ -774,7 +774,7 @@
         userCR.getResources().add(RESOURCE_NAME_LDAP);
         UserTO userTO = createUser(userCR).getEntity();
         assertNotNull(userTO);
-        assertEquals(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform())
+        assertEquals(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform())
                 ? "active"
                 : "created", userTO.getStatus());
         String userKey = userTO.getKey();
@@ -785,16 +785,16 @@
                 onSyncope(true).
                 resources(RESOURCE_NAME_TESTDB, RESOURCE_NAME_LDAP).
                 build();
-        userTO = userService.status(statusR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        userTO = USER_SERVICE.status(statusR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
         assertNotNull(userTO);
         assertEquals("suspended", userTO.getStatus());
 
         ConnObjectTO connObjectTO =
-                resourceService.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userKey);
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userKey);
         assertFalse(getBooleanAttribute(connObjectTO, OperationalAttributes.ENABLE_NAME));
 
-        connObjectTO = resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userKey);
+        connObjectTO = RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userKey);
         assertNotNull(connObjectTO);
 
         // Suspend and reactivate only on ldap => db and syncope should still show suspended
@@ -803,14 +803,14 @@
                 onSyncope(false).
                 resources(RESOURCE_NAME_LDAP).
                 build();
-        userService.status(statusR);
+        USER_SERVICE.status(statusR);
         statusR.setType(StatusRType.REACTIVATE);
-        userTO = userService.status(statusR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        userTO = USER_SERVICE.status(statusR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
         assertNotNull(userTO);
         assertEquals("suspended", userTO.getStatus());
 
-        connObjectTO = resourceService.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userKey);
+        connObjectTO = RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userKey);
         assertFalse(getBooleanAttribute(connObjectTO, OperationalAttributes.ENABLE_NAME));
 
         // Reactivate on syncope and db => syncope and db should show the user as active
@@ -819,12 +819,12 @@
                 onSyncope(true).
                 resources(RESOURCE_NAME_TESTDB).
                 build();
-        userTO = userService.status(statusR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        userTO = USER_SERVICE.status(statusR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
         assertNotNull(userTO);
         assertEquals("active", userTO.getStatus());
 
-        connObjectTO = resourceService.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userKey);
+        connObjectTO = RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userKey);
         assertTrue(getBooleanAttribute(connObjectTO, OperationalAttributes.ENABLE_NAME));
     }
 
@@ -870,7 +870,7 @@
 
     @Test
     public void async() {
-        SyncopeClient asyncClient = clientFactory.create(ADMIN_UNAME, ADMIN_PWD);
+        SyncopeClient asyncClient = CLIENT_FACTORY.create(ADMIN_UNAME, ADMIN_PWD);
         UserService asyncService = SyncopeClient.nullPriorityAsync(asyncClient.getService(UserService.class), true);
 
         UserCR userCR = getUniqueSample("async@syncope.apache.org");
@@ -921,7 +921,7 @@
         assertNotNull(userTO.getDerAttr("csvuserid"));
 
         ConnObjectTO connObjectTO =
-                resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
         assertNotNull(connObjectTO);
         assertEquals("sx-dx", connObjectTO.getAttr("THEIRGROUP").get().getValues().get(0));
     }
@@ -933,7 +933,7 @@
         implementationTO.setEngine(ImplementationEngine.JAVA);
         implementationTO.setType(IdRepoImplementationType.ACCOUNT_RULE);
         implementationTO.setBody(POJOHelper.serialize(new TestAccountRuleConf()));
-        Response response = implementationService.create(implementationTO);
+        Response response = IMPLEMENTATION_SERVICE.create(implementationTO);
         implementationTO.setKey(response.getHeaderString(RESTHeaders.RESOURCE_KEY));
 
         AccountPolicyTO accountPolicy = new AccountPolicyTO();
@@ -947,7 +947,7 @@
         implementationTO.setEngine(ImplementationEngine.JAVA);
         implementationTO.setType(IdRepoImplementationType.PASSWORD_RULE);
         implementationTO.setBody(POJOHelper.serialize(new TestPasswordRuleConf()));
-        response = implementationService.create(implementationTO);
+        response = IMPLEMENTATION_SERVICE.create(implementationTO);
         implementationTO.setKey(response.getHeaderString(RESTHeaders.RESOURCE_KEY));
 
         PasswordPolicyTO passwordPolicy = new PasswordPolicyTO();
@@ -956,12 +956,12 @@
         passwordPolicy = createPolicy(PolicyType.PASSWORD, passwordPolicy);
         assertNotNull(passwordPolicy);
 
-        RealmTO realm = realmService.search(new RealmQuery.Builder().keyword("two").build()).getResult().get(0);
+        RealmTO realm = REALM_SERVICE.search(new RealmQuery.Builder().keyword("two").build()).getResult().get(0);
         String oldAccountPolicy = realm.getAccountPolicy();
         realm.setAccountPolicy(accountPolicy.getKey());
         String oldPasswordPolicy = realm.getPasswordPolicy();
         realm.setPasswordPolicy(passwordPolicy.getKey());
-        realmService.update(realm);
+        REALM_SERVICE.update(realm);
 
         try {
             UserCR userCR = getUniqueSample("custompolicyrules@syncope.apache.org");
@@ -989,10 +989,10 @@
         } finally {
             realm.setAccountPolicy(oldAccountPolicy);
             realm.setPasswordPolicy(oldPasswordPolicy);
-            realmService.update(realm);
+            REALM_SERVICE.update(realm);
 
-            policyService.delete(PolicyType.PASSWORD, passwordPolicy.getKey());
-            policyService.delete(PolicyType.ACCOUNT, accountPolicy.getKey());
+            POLICY_SERVICE.delete(PolicyType.PASSWORD, passwordPolicy.getKey());
+            POLICY_SERVICE.delete(PolicyType.ACCOUNT, accountPolicy.getKey());
         }
     }
 
@@ -1008,7 +1008,7 @@
         assertNotNull(userTO);
 
         ConnObjectTO connObjectTO =
-                resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
         assertFalse(connObjectTO.getAttr("email").isPresent());
     }
 
@@ -1025,7 +1025,7 @@
 
         assertEquals(11, users.size());
 
-        BatchRequest batchRequest = adminClient.batch();
+        BatchRequest batchRequest = ADMIN_CLIENT.batch();
 
         UserService batchUserService = batchRequest.getService(UserService.class);
         users.forEach(user -> batchUserService.status(new StatusR.Builder().key(user).type(StatusRType.SUSPEND).
@@ -1036,7 +1036,7 @@
                 filter(item -> Response.Status.OK.getStatusCode() == item.getStatus()).count());
         assertEquals(1, batchResponseItems.stream().
                 filter(item -> Response.Status.NOT_FOUND.getStatusCode() == item.getStatus()).count());
-        assertEquals("suspended", userService.read(users.get(3)).getStatus());
+        assertEquals("suspended", USER_SERVICE.read(users.get(3)).getStatus());
 
         UserService batchUserService2 = batchRequest.getService(UserService.class);
         users.forEach(user -> batchUserService2.status(new StatusR.Builder().key(user).type(StatusRType.REACTIVATE).
@@ -1047,7 +1047,7 @@
                 filter(item -> Response.Status.OK.getStatusCode() == item.getStatus()).count());
         assertEquals(1, batchResponseItems.stream().
                 filter(item -> Response.Status.NOT_FOUND.getStatusCode() == item.getStatus()).count());
-        assertEquals("active", userService.read(users.get(3)).getStatus());
+        assertEquals("active", USER_SERVICE.read(users.get(3)).getStatus());
 
         UserService batchUserService3 = batchRequest.getService(UserService.class);
         users.forEach(batchUserService3::delete);
@@ -1058,7 +1058,7 @@
                 filter(item -> Response.Status.NOT_FOUND.getStatusCode() == item.getStatus()).count());
 
         try {
-            userService.read(users.get(3));
+            USER_SERVICE.read(users.get(3));
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -1076,18 +1076,18 @@
 
         UserTO actual = createUser(userCR).getEntity();
         assertNotNull(actual);
-        assertNotNull(resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey()));
+        assertNotNull(RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey()));
 
         ResourceDR resourceDR = new ResourceDR.Builder().key(actual.getKey()).
                 action(ResourceDeassociationAction.UNLINK).resource(RESOURCE_NAME_CSV).build();
 
-        assertNotNull(parseBatchResponse(userService.deassociate(resourceDR)));
+        assertNotNull(parseBatchResponse(USER_SERVICE.deassociate(resourceDR)));
 
-        actual = userService.read(actual.getKey());
+        actual = USER_SERVICE.read(actual.getKey());
         assertNotNull(actual);
         assertTrue(actual.getResources().isEmpty());
 
-        assertNotNull(resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey()));
+        assertNotNull(RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey()));
     }
 
     @Test
@@ -1103,7 +1103,7 @@
         assertTrue(actual.getResources().isEmpty());
 
         try {
-            resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
             fail("This should not happen");
         } catch (Exception e) {
             assertNotNull(e);
@@ -1112,14 +1112,14 @@
         ResourceAR resourceAR = new ResourceAR.Builder().key(actual.getKey()).
                 action(ResourceAssociationAction.LINK).resource(RESOURCE_NAME_CSV).build();
 
-        assertNotNull(parseBatchResponse(userService.associate(resourceAR)));
+        assertNotNull(parseBatchResponse(USER_SERVICE.associate(resourceAR)));
 
-        actual = userService.read(actual.getKey());
+        actual = USER_SERVICE.read(actual.getKey());
         assertNotNull(actual);
         assertFalse(actual.getResources().isEmpty());
 
         try {
-            resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
             fail("This should not happen");
         } catch (Exception e) {
             assertNotNull(e);
@@ -1137,19 +1137,19 @@
 
         UserTO actual = createUser(userCR).getEntity();
         assertNotNull(actual);
-        assertNotNull(resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey()));
+        assertNotNull(RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey()));
 
         ResourceDR resourceDR = new ResourceDR.Builder().key(actual.getKey()).
                 action(ResourceDeassociationAction.UNASSIGN).resource(RESOURCE_NAME_CSV).build();
 
-        assertNotNull(parseBatchResponse(userService.deassociate(resourceDR)));
+        assertNotNull(parseBatchResponse(USER_SERVICE.deassociate(resourceDR)));
 
-        actual = userService.read(actual.getKey());
+        actual = USER_SERVICE.read(actual.getKey());
         assertNotNull(actual);
         assertTrue(actual.getResources().isEmpty());
 
         try {
-            resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
             fail("This should not happen");
         } catch (Exception e) {
             assertNotNull(e);
@@ -1169,7 +1169,7 @@
         assertTrue(actual.getResources().isEmpty());
 
         try {
-            resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
             fail("This should not happen");
         } catch (Exception e) {
             assertNotNull(e);
@@ -1178,12 +1178,12 @@
         ResourceAR resourceAR = new ResourceAR.Builder().key(actual.getKey()).
                 value("password").action(ResourceAssociationAction.ASSIGN).resource(RESOURCE_NAME_CSV).build();
 
-        assertNotNull(parseBatchResponse(userService.associate(resourceAR)));
+        assertNotNull(parseBatchResponse(USER_SERVICE.associate(resourceAR)));
 
-        actual = userService.read(actual.getKey());
+        actual = USER_SERVICE.read(actual.getKey());
         assertNotNull(actual);
         assertFalse(actual.getResources().isEmpty());
-        assertNotNull(resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey()));
+        assertNotNull(RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey()));
     }
 
     @Test
@@ -1197,19 +1197,19 @@
 
         UserTO actual = createUser(userCR).getEntity();
         assertNotNull(actual);
-        assertNotNull(resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey()));
+        assertNotNull(RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey()));
 
         ResourceDR resourceDR = new ResourceDR.Builder().key(actual.getKey()).
                 action(ResourceDeassociationAction.DEPROVISION).resource(RESOURCE_NAME_CSV).build();
 
-        assertNotNull(parseBatchResponse(userService.deassociate(resourceDR)));
+        assertNotNull(parseBatchResponse(USER_SERVICE.deassociate(resourceDR)));
 
-        actual = userService.read(actual.getKey());
+        actual = USER_SERVICE.read(actual.getKey());
         assertNotNull(actual);
         assertFalse(actual.getResources().isEmpty());
 
         try {
-            resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -1229,7 +1229,7 @@
         assertTrue(actual.getResources().isEmpty());
 
         try {
-            resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
             fail("This should not happen");
         } catch (Exception e) {
             assertNotNull(e);
@@ -1238,12 +1238,12 @@
         ResourceAR resourceAR = new ResourceAR.Builder().key(actual.getKey()).
                 value("password").action(ResourceAssociationAction.PROVISION).resource(RESOURCE_NAME_CSV).build();
 
-        assertNotNull(parseBatchResponse(userService.associate(resourceAR)));
+        assertNotNull(parseBatchResponse(USER_SERVICE.associate(resourceAR)));
 
-        actual = userService.read(actual.getKey());
+        actual = USER_SERVICE.read(actual.getKey());
         assertNotNull(actual);
         assertTrue(actual.getResources().isEmpty());
-        assertNotNull(resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey()));
+        assertNotNull(RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey()));
     }
 
     @Test
@@ -1259,7 +1259,7 @@
         assertTrue(actual.getResources().isEmpty());
 
         try {
-            resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
             fail("This should not happen");
         } catch (Exception e) {
             assertNotNull(e);
@@ -1268,24 +1268,24 @@
         ResourceAR resourceAR = new ResourceAR.Builder().key(actual.getKey()).
                 value("password").action(ResourceAssociationAction.PROVISION).resource(RESOURCE_NAME_CSV).build();
 
-        assertNotNull(parseBatchResponse(userService.associate(resourceAR)));
+        assertNotNull(parseBatchResponse(USER_SERVICE.associate(resourceAR)));
 
-        actual = userService.read(actual.getKey());
+        actual = USER_SERVICE.read(actual.getKey());
         assertNotNull(actual);
         assertTrue(actual.getResources().isEmpty());
-        assertNotNull(resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey()));
+        assertNotNull(RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey()));
 
         ResourceDR resourceDR = new ResourceDR.Builder().key(actual.getKey()).
                 action(ResourceDeassociationAction.DEPROVISION).resource(RESOURCE_NAME_CSV).build();
 
-        assertNotNull(parseBatchResponse(userService.deassociate(resourceDR)));
+        assertNotNull(parseBatchResponse(USER_SERVICE.deassociate(resourceDR)));
 
-        actual = userService.read(actual.getKey());
+        actual = USER_SERVICE.read(actual.getKey());
         assertNotNull(actual);
         assertTrue(actual.getResources().isEmpty());
 
         try {
-            resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), actual.getKey());
             fail("This should not happen");
         } catch (Exception e) {
             assertNotNull(e);
@@ -1343,7 +1343,7 @@
         rule.setEngine(ImplementationEngine.JAVA);
         rule.setType(IdRepoImplementationType.PASSWORD_RULE);
         rule.setBody(POJOHelper.serialize(new HaveIBeenPwnedPasswordRuleConf()));
-        Response response = implementationService.create(rule);
+        Response response = IMPLEMENTATION_SERVICE.create(rule);
         rule.setKey(response.getHeaderString(RESTHeaders.RESOURCE_KEY));
 
         PasswordPolicyTO pwdPolicy = new PasswordPolicyTO();
@@ -1355,7 +1355,7 @@
         RealmTO realm = new RealmTO();
         realm.setName("hibp");
         realm.setPasswordPolicy(pwdPolicy.getKey());
-        realmService.create(SyncopeConstants.ROOT_REALM, realm);
+        REALM_SERVICE.create(SyncopeConstants.ROOT_REALM, realm);
 
         UserCR userCR = getUniqueSample("hibp@syncope.apache.org");
         userCR.setRealm("/hibp");
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
index a3a262d..2e8d0a3 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserIssuesITCase.java
@@ -41,19 +41,19 @@
 import org.apache.commons.lang3.tuple.Triple;
 import org.apache.cxf.helpers.IOUtils;
 import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf;
+import org.apache.syncope.common.lib.policy.PasswordPolicyTO;
 import org.apache.syncope.common.lib.request.AttrPatch;
+import org.apache.syncope.common.lib.request.GroupCR;
 import org.apache.syncope.common.lib.request.MembershipUR;
 import org.apache.syncope.common.lib.request.PasswordPatch;
 import org.apache.syncope.common.lib.request.StringPatchItem;
 import org.apache.syncope.common.lib.request.StringReplacePatchItem;
-import org.apache.syncope.common.lib.request.UserUR;
-import org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf;
-import org.apache.syncope.common.lib.policy.PasswordPolicyTO;
-import org.apache.syncope.common.lib.request.GroupCR;
 import org.apache.syncope.common.lib.request.UserCR;
-import org.apache.syncope.common.lib.Attr;
+import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.ImplementationTO;
@@ -68,13 +68,13 @@
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.CipherAlgorithm;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.lib.types.ExecStatus;
+import org.apache.syncope.common.lib.types.IdMImplementationType;
+import org.apache.syncope.common.lib.types.IdRepoImplementationType;
 import org.apache.syncope.common.lib.types.ImplementationEngine;
 import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.common.lib.types.PatchOperation;
 import org.apache.syncope.common.lib.types.PolicyType;
-import org.apache.syncope.common.lib.types.ExecStatus;
-import org.apache.syncope.common.lib.types.IdMImplementationType;
-import org.apache.syncope.common.lib.types.IdRepoImplementationType;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 import org.apache.syncope.common.rest.api.beans.RealmQuery;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
@@ -274,7 +274,7 @@
         assertEquals(1, userTO.getResources().size());
 
         ConnObjectTO connObjectTO =
-                resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
         assertNotNull(connObjectTO);
 
         // -----------------------------------
@@ -289,7 +289,7 @@
         assertNotNull(userTO);
         assertEquals(1, userTO.getMemberships().size());
 
-        connObjectTO = resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
+        connObjectTO = RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
         assertNotNull(connObjectTO);
         // -----------------------------------
 
@@ -307,7 +307,7 @@
         assertEquals(1, userTO.getMemberships().size());
         assertFalse(userTO.getResources().isEmpty());
 
-        connObjectTO = resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
+        connObjectTO = RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
         assertNotNull(connObjectTO);
         // -----------------------------------
 
@@ -325,7 +325,7 @@
         assertTrue(userTO.getResources().isEmpty());
 
         try {
-            resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
             fail("Read should not succeeed");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -347,11 +347,11 @@
         UserTO userTO = result.getEntity();
 
         // 2. delete this user
-        userService.delete(userTO.getKey());
+        USER_SERVICE.delete(userTO.getKey());
 
         // 3. try (and fail) to find this user on the external LDAP resource
         try {
-            resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userTO.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userTO.getKey());
             fail("This entry should not be present on this resource");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -396,12 +396,12 @@
         UserTO userTO = result.getEntity();
 
         ConnObjectTO connObjectTO =
-                resourceService.readConnObject(RESOURCE_NAME_DBVIRATTR, AnyTypeKind.USER.name(), userTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_DBVIRATTR, AnyTypeKind.USER.name(), userTO.getKey());
         assertNotNull(connObjectTO);
         assertEquals("virtualvalue", connObjectTO.getAttr("USERNAME").get().getValues().get(0));
         // ----------------------------------
 
-        userTO = userService.read(userTO.getKey());
+        userTO = USER_SERVICE.read(userTO.getKey());
 
         assertNotNull(userTO);
         assertEquals(1, userTO.getVirAttrs().size());
@@ -454,7 +454,7 @@
 
         String pwdOnSyncope = userTO.getPassword();
 
-        ConnObjectTO userOnDb = resourceService.readConnObject(
+        ConnObjectTO userOnDb = RESOURCE_SERVICE.readConnObject(
                 RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userTO.getKey());
         Attr pwdOnTestDbAttr = userOnDb.getAttr(OperationalAttributes.PASSWORD_NAME).get();
         assertNotNull(pwdOnTestDbAttr);
@@ -462,7 +462,7 @@
         assertFalse(pwdOnTestDbAttr.getValues().isEmpty());
         String pwdOnTestDb = pwdOnTestDbAttr.getValues().get(0);
 
-        ConnObjectTO userOnDb2 = resourceService.readConnObject(
+        ConnObjectTO userOnDb2 = RESOURCE_SERVICE.readConnObject(
                 RESOURCE_NAME_TESTDB2, AnyTypeKind.USER.name(), userTO.getKey());
         Attr pwdOnTestDb2Attr = userOnDb2.getAttr(OperationalAttributes.PASSWORD_NAME).get();
         assertNotNull(pwdOnTestDb2Attr);
@@ -488,7 +488,7 @@
         assertEquals(pwdOnSyncope, userTO.getPassword());
 
         // 3c. verify that password *has* changed on testdb
-        userOnDb = resourceService.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userTO.getKey());
+        userOnDb = RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userTO.getKey());
         Attr pwdOnTestDbAttrAfter = userOnDb.getAttr(OperationalAttributes.PASSWORD_NAME).get();
         assertNotNull(pwdOnTestDbAttrAfter);
         assertNotNull(pwdOnTestDbAttrAfter.getValues());
@@ -496,7 +496,7 @@
         assertNotEquals(pwdOnTestDb, pwdOnTestDbAttrAfter.getValues().get(0));
 
         // 3d. verify that password hasn't changed on testdb2
-        userOnDb2 = resourceService.readConnObject(RESOURCE_NAME_TESTDB2, AnyTypeKind.USER.name(), userTO.getKey());
+        userOnDb2 = RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_TESTDB2, AnyTypeKind.USER.name(), userTO.getKey());
         Attr pwdOnTestDb2AttrAfter = userOnDb2.getAttr(OperationalAttributes.PASSWORD_NAME).get();
         assertNotNull(pwdOnTestDb2AttrAfter);
         assertNotNull(pwdOnTestDb2AttrAfter.getValues());
@@ -601,11 +601,11 @@
     @Test
     public void issueSYNCOPE354() {
         // change resource-ldap group mapping for including uniqueMember (need for assertions below)
-        ResourceTO ldap = resourceService.read(RESOURCE_NAME_LDAP);
+        ResourceTO ldap = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
         ldap.getProvision(AnyTypeKind.GROUP.name()).get().getMapping().getItems().stream().
                 filter(item -> ("description".equals(item.getExtAttrName()))).
                 forEach(item -> item.setExtAttrName("uniqueMember"));
-        resourceService.update(ldap);
+        RESOURCE_SERVICE.update(ldap);
 
         // 1. create group with LDAP resource
         GroupCR groupCR = new GroupCR();
@@ -623,10 +623,10 @@
 
         UserTO userTO = createUser(userCR).getEntity();
         assertTrue(userTO.getResources().contains(RESOURCE_NAME_LDAP));
-        assertNotNull(resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userTO.getKey()));
+        assertNotNull(RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userTO.getKey()));
 
         // 3. read group on resource, check that user DN is included in uniqueMember
-        ConnObjectTO connObj = resourceService.readConnObject(
+        ConnObjectTO connObj = RESOURCE_SERVICE.readConnObject(
                 RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
         assertNotNull(connObj);
         assertTrue(connObj.getAttr("uniqueMember").get().getValues().
@@ -642,21 +642,21 @@
         assertTrue(userTO.getResources().contains(RESOURCE_NAME_LDAP));
 
         // 5. read group on resource, check that user DN was removed from uniqueMember
-        connObj = resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
+        connObj = RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), groupTO.getKey());
         assertNotNull(connObj);
         assertFalse(connObj.getAttr("uniqueMember").get().getValues().
                 contains("uid=" + userTO.getUsername() + ",ou=people,o=isp"));
 
         // 6. user has still the LDAP resource assigned - SYNCOPE-1222
-        userTO = userService.read(userTO.getKey());
+        userTO = USER_SERVICE.read(userTO.getKey());
         assertTrue(userTO.getResources().contains(RESOURCE_NAME_LDAP));
-        assertNotNull(resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userTO.getKey()));
+        assertNotNull(RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userTO.getKey()));
 
         // 7. restore original resource-ldap group mapping
         ldap.getProvision(AnyTypeKind.GROUP.name()).get().getMapping().getItems().stream().
                 filter(item -> "uniqueMember".equals(item.getExtAttrName())).
                 forEach(item -> item.setExtAttrName("description"));
-        resourceService.update(ldap);
+        RESOURCE_SERVICE.update(ldap);
     }
 
     @Test
@@ -683,7 +683,7 @@
         assertNotNull(userTO.getPlainAttr("photo"));
 
         // 3. read user on resource
-        ConnObjectTO connObj = resourceService.readConnObject(
+        ConnObjectTO connObj = RESOURCE_SERVICE.readConnObject(
                 RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userTO.getKey());
         assertNotNull(connObj);
         Attr registeredAddress = connObj.getAttr("registeredAddress").get();
@@ -694,11 +694,11 @@
         assertEquals(userTO.getPlainAttr("photo").get().getValues().get(0), jpegPhoto.get().getValues().get(0));
 
         // 4. remove group
-        groupService.delete(groupTO.getKey());
+        GROUP_SERVICE.delete(groupTO.getKey());
 
         // 5. try to read user on resource: fail
         try {
-            resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userTO.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userTO.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
@@ -780,7 +780,7 @@
     public void issueSYNCOPE420() throws IOException {
         ImplementationTO logicActions;
         try {
-            logicActions = implementationService.read(
+            logicActions = IMPLEMENTATION_SERVICE.read(
                     IdRepoImplementationType.LOGIC_ACTIONS, "DoubleValueLogicActions");
         } catch (SyncopeClientException e) {
             logicActions = new ImplementationTO();
@@ -789,16 +789,16 @@
             logicActions.setType(IdRepoImplementationType.LOGIC_ACTIONS);
             logicActions.setBody(org.apache.commons.io.IOUtils.toString(
                     getClass().getResourceAsStream("/DoubleValueLogicActions.groovy"), StandardCharsets.UTF_8));
-            Response response = implementationService.create(logicActions);
-            logicActions = implementationService.read(
+            Response response = IMPLEMENTATION_SERVICE.create(logicActions);
+            logicActions = IMPLEMENTATION_SERVICE.read(
                     logicActions.getType(), response.getHeaderString(RESTHeaders.RESOURCE_KEY));
         }
         assertNotNull(logicActions);
 
-        RealmTO realm = realmService.search(new RealmQuery.Builder().keyword("two").build()).getResult().get(0);
+        RealmTO realm = REALM_SERVICE.search(new RealmQuery.Builder().keyword("two").build()).getResult().get(0);
         assertNotNull(realm);
         realm.getActions().add(logicActions.getKey());
-        realmService.update(realm);
+        REALM_SERVICE.update(realm);
 
         UserCR userCR = UserITCase.getUniqueSample("syncope420@syncope.apache.org");
         userCR.setRealm(realm.getFullPath());
@@ -824,7 +824,7 @@
         UserUR userUR = new UserUR();
         userUR.setKey(userTO.getKey());
         userUR.setPassword(new PasswordPatch.Builder().value("anotherPassword123").build());
-        userTO = userService.update(userUR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        userTO = USER_SERVICE.update(userUR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
         assertNotNull(userTO);
     }
@@ -863,7 +863,7 @@
 
         // 2. read resource configuration for LDAP binding
         ConnObjectTO connObject =
-                resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), userTO.getKey());
 
         // 3. try (and succeed) to perform simple LDAP binding with provided password ('password123')
         assertNotNull(getLdapRemoteObject(
@@ -877,7 +877,7 @@
         userUR.setPassword(new PasswordPatch());
         userUR.getPlainAttrs().add(attrAddReplacePatch("surname", "surname2"));
 
-        userService.update(userUR);
+        USER_SERVICE.update(userUR);
 
         // 5. try (and succeed again) to perform simple LDAP binding: password has not changed
         assertNotNull(getLdapRemoteObject(
@@ -898,13 +898,13 @@
         UserTO userTO = result.getEntity();
 
         ConnObjectTO actual =
-                resourceService.readConnObject(RESOURCE_NAME_WS1, AnyTypeKind.USER.name(), userTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_WS1, AnyTypeKind.USER.name(), userTO.getKey());
         assertNotNull(actual);
         // check if mapping attribute with purpose NONE really hasn't been propagated
         assertFalse(actual.getAttr("NAME").isPresent());
 
         // 2.  update resource ws-target-resource-1
-        ResourceTO ws1 = resourceService.read(RESOURCE_NAME_WS1);
+        ResourceTO ws1 = RESOURCE_SERVICE.read(RESOURCE_NAME_WS1);
         assertNotNull(ws1);
 
         MappingTO ws1NewUMapping = ws1.getProvision(AnyTypeKind.USER.name()).get().getMapping();
@@ -917,8 +917,8 @@
 
         ws1.getProvision(AnyTypeKind.USER.name()).get().setMapping(ws1NewUMapping);
 
-        resourceService.update(ws1);
-        ResourceTO newWs1 = resourceService.read(ws1.getKey());
+        RESOURCE_SERVICE.update(ws1);
+        ResourceTO newWs1 = RESOURCE_SERVICE.read(ws1.getKey());
         assertNotNull(newWs1);
 
         // check for existence
@@ -939,7 +939,7 @@
         userTO = result.getEntity();
 
         ConnObjectTO newUser =
-                resourceService.readConnObject(RESOURCE_NAME_WS1, AnyTypeKind.USER.name(), userTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_WS1, AnyTypeKind.USER.name(), userTO.getKey());
 
         assertNotNull(newUser.getAttr("NAME"));
         assertEquals("firstnameNew", newUser.getAttr("NAME").get().getValues().get(0));
@@ -955,7 +955,7 @@
 
         newWs1.getProvision(AnyTypeKind.USER.name()).get().setMapping(ws1NewUMapping);
 
-        resourceService.update(newWs1);
+        RESOURCE_SERVICE.update(newWs1);
     }
 
     @Test
@@ -973,15 +973,15 @@
         propagationActions.setEngine(ImplementationEngine.JAVA);
         propagationActions.setType(IdMImplementationType.PROPAGATION_ACTIONS);
         propagationActions.setBody(DBPasswordPropagationActions.class.getName());
-        Response response = implementationService.create(propagationActions);
-        propagationActions = implementationService.read(
+        Response response = IMPLEMENTATION_SERVICE.create(propagationActions);
+        propagationActions = IMPLEMENTATION_SERVICE.read(
                 propagationActions.getType(), response.getHeaderString(RESTHeaders.RESOURCE_KEY));
         assertNotNull(propagationActions);
 
-        ResourceTO resourceTO = resourceService.read(RESOURCE_NAME_TESTDB);
+        ResourceTO resourceTO = RESOURCE_SERVICE.read(RESOURCE_NAME_TESTDB);
         assertNotNull(resourceTO);
         resourceTO.getPropagationActions().add(propagationActions.getKey());
-        resourceService.update(resourceTO);
+        RESOURCE_SERVICE.update(resourceTO);
 
         // 3. Add a db resource to the User
         UserUR userUR = new UserUR();
@@ -1002,10 +1002,10 @@
         assertEquals(Encryptor.getInstance().encode("security123", CipherAlgorithm.SHA1), value.toUpperCase());
 
         // 5. Remove DBPasswordPropagationActions
-        resourceTO = resourceService.read(RESOURCE_NAME_TESTDB);
+        resourceTO = RESOURCE_SERVICE.read(RESOURCE_NAME_TESTDB);
         assertNotNull(resourceTO);
         resourceTO.getPropagationActions().remove(propagationActions.getKey());
-        resourceService.update(resourceTO);
+        RESOURCE_SERVICE.update(resourceTO);
     }
 
     @Test
@@ -1023,16 +1023,16 @@
         propagationActions.setEngine(ImplementationEngine.JAVA);
         propagationActions.setType(IdMImplementationType.PROPAGATION_ACTIONS);
         propagationActions.setBody(LDAPPasswordPropagationActions.class.getName());
-        Response response = implementationService.create(propagationActions);
-        propagationActions = implementationService.read(
+        Response response = IMPLEMENTATION_SERVICE.create(propagationActions);
+        propagationActions = IMPLEMENTATION_SERVICE.read(
                 propagationActions.getType(), response.getHeaderString(RESTHeaders.RESOURCE_KEY));
         assertNotNull(propagationActions);
 
-        ResourceTO resourceTO = resourceService.read(RESOURCE_NAME_LDAP);
+        ResourceTO resourceTO = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
         assertNotNull(resourceTO);
         resourceTO.getPropagationActions().add(propagationActions.getKey());
         resourceTO.setRandomPwdIfNotProvided(false);
-        resourceService.update(resourceTO);
+        RESOURCE_SERVICE.update(resourceTO);
 
         // 3. Add a resource to the User
         UserUR userUR = new UserUR();
@@ -1048,7 +1048,7 @@
 
         // 4. Check that the LDAP resource has the correct password
         ConnObjectTO connObject =
-                resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), user.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), user.getKey());
 
         assertNotNull(getLdapRemoteObject(
                 connObject.getAttr(Name.NAME).get().getValues().get(0),
@@ -1056,16 +1056,16 @@
                 connObject.getAttr(Name.NAME).get().getValues().get(0)));
 
         // 5. Remove LDAPPasswordPropagationActions
-        resourceTO = resourceService.read(RESOURCE_NAME_LDAP);
+        resourceTO = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
         assertNotNull(resourceTO);
         resourceTO.getPropagationActions().remove(propagationActions.getKey());
         resourceTO.setRandomPwdIfNotProvided(true);
-        resourceService.update(resourceTO);
+        RESOURCE_SERVICE.update(resourceTO);
     }
 
     @Test
     public void issueSYNCOPE391() {
-        assumeFalse(ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform()));
+        assumeFalse(ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform()));
 
         // 1. create user on Syncope with null password
         UserCR userCR = UserITCase.getUniqueSample("syncope391@syncope.apache.org");
@@ -1095,7 +1095,7 @@
         assertNotNull(userTO);
 
         ConnObjectTO connObjectTO =
-                resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
         assertNotNull(connObjectTO);
 
         // check if password has not changed
@@ -1115,7 +1115,7 @@
         assertNotNull(userTO);
 
         connObjectTO =
-                resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
         assertNotNull(connObjectTO);
 
         // check if password has been propagated and that saved userTO's password is null
@@ -1135,7 +1135,7 @@
         userTO = createUser(userCR).getEntity();
         assertNotNull(userTO);
 
-        connObjectTO = resourceService.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
+        connObjectTO = RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_CSV, AnyTypeKind.USER.name(), userTO.getKey());
         assertNotNull(connObjectTO);
 
         // check if password has been correctly propagated on Syncope and resource-csv as usual
@@ -1143,16 +1143,16 @@
                 "passwordTESTNULL1",
                 connObjectTO.getAttr(OperationalAttributes.PASSWORD_NAME).get().getValues().get(0));
         Triple<Map<String, Set<String>>, List<String>, UserTO> self =
-                clientFactory.create(userTO.getUsername(), "passwordTESTNULL1").self();
+                CLIENT_FACTORY.create(userTO.getUsername(), "passwordTESTNULL1").self();
         assertNotNull(self);
 
         // 4. add password policy to resource with passwordNotStore to false --> must store password
-        ResourceTO csv = resourceService.read(RESOURCE_NAME_CSV);
+        ResourceTO csv = RESOURCE_SERVICE.read(RESOURCE_NAME_CSV);
         assertNotNull(csv);
         try {
             csv.setPasswordPolicy("55e5de0b-c79c-4e66-adda-251b6fb8579a");
-            resourceService.update(csv);
-            csv = resourceService.read(RESOURCE_NAME_CSV);
+            RESOURCE_SERVICE.update(csv);
+            csv = RESOURCE_SERVICE.read(RESOURCE_NAME_CSV);
             assertEquals("55e5de0b-c79c-4e66-adda-251b6fb8579a", csv.getPasswordPolicy());
 
             userCR = UserITCase.getUniqueSample("syncope391@syncope.apache.org");
@@ -1170,7 +1170,7 @@
         } finally {
             // resource csv with null password policy
             csv.setPasswordPolicy(null);
-            resourceService.update(csv);
+            RESOURCE_SERVICE.update(csv);
         }
     }
 
@@ -1192,7 +1192,7 @@
         assertNotNull(actual.getDerAttr("csvuserid"));
 
         ConnObjectTO connObjectTO =
-                resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), actual.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), actual.getKey());
         assertNotNull(connObjectTO);
         assertEquals("postalAddress", connObjectTO.getAttr("postalAddress").get().getValues().get(0));
 
@@ -1202,7 +1202,7 @@
 
         actual = updateUser(userUR).getEntity();
 
-        connObjectTO = resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), actual.getKey());
+        connObjectTO = RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), actual.getKey());
         assertNotNull(connObjectTO);
         assertEquals("newPostalAddress", connObjectTO.getAttr("postalAddress").get().getValues().get(0));
     }
@@ -1217,7 +1217,7 @@
         rule.setEngine(ImplementationEngine.JAVA);
         rule.setType(IdRepoImplementationType.PASSWORD_RULE);
         rule.setBody(POJOHelper.serialize(ruleConf));
-        Response response = implementationService.create(rule);
+        Response response = IMPLEMENTATION_SERVICE.create(rule);
         rule.setKey(response.getHeaderString(RESTHeaders.RESOURCE_KEY));
 
         PasswordPolicyTO passwordPolicy = new PasswordPolicyTO();
@@ -1227,10 +1227,10 @@
         passwordPolicy = createPolicy(PolicyType.PASSWORD, passwordPolicy);
         assertNotNull(passwordPolicy);
 
-        RealmTO realm = realmService.search(new RealmQuery.Builder().keyword("two").build()).getResult().get(0);
+        RealmTO realm = REALM_SERVICE.search(new RealmQuery.Builder().keyword("two").build()).getResult().get(0);
         String oldPasswordPolicy = realm.getPasswordPolicy();
         realm.setPasswordPolicy(passwordPolicy.getKey());
-        realmService.update(realm);
+        REALM_SERVICE.update(realm);
 
         try {
             UserCR userCR = UserITCase.getUniqueSample("syncope626@syncope.apache.org");
@@ -1249,9 +1249,9 @@
             assertNotNull(user);
         } finally {
             realm.setPasswordPolicy(oldPasswordPolicy);
-            realmService.update(realm);
+            REALM_SERVICE.update(realm);
 
-            policyService.delete(PolicyType.PASSWORD, passwordPolicy.getKey());
+            POLICY_SERVICE.delete(PolicyType.PASSWORD, passwordPolicy.getKey());
         }
 
     }
@@ -1343,7 +1343,7 @@
 
         GroupTO group = createGroup(groupCR).getEntity();
         assertNotNull(group);
-        assertNotNull(resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), group.getKey()));
+        assertNotNull(RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.GROUP.name(), group.getKey()));
 
         // 2. create user and assign such group
         UserCR userCR = UserITCase.getUniqueSample("syncope881U@apache.org");
@@ -1355,7 +1355,7 @@
 
         // 3. verify that user is in LDAP
         ConnObjectTO connObject =
-                resourceService.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), user.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_LDAP, AnyTypeKind.USER.name(), user.getKey());
         assertNotNull(connObject);
         Attr userDn = connObject.getAttr(Name.NAME).get();
         assertNotNull(userDn);
@@ -1363,7 +1363,7 @@
         assertNotNull(getLdapRemoteObject(RESOURCE_LDAP_ADMIN_DN, RESOURCE_LDAP_ADMIN_PWD, userDn.getValues().get(0)));
 
         // 4. remove user
-        userService.delete(user.getKey());
+        USER_SERVICE.delete(user.getKey());
 
         // 5. verify that user is not in LDAP anymore
         assertNull(getLdapRemoteObject(RESOURCE_LDAP_ADMIN_DN, RESOURCE_LDAP_ADMIN_PWD, userDn.getValues().get(0)));
@@ -1550,7 +1550,7 @@
                 .build());
         updateUser(userUR);
 
-        UserTO userTO = userService.read("1417acbe-cbf6-4277-9372-e75e04f97000");
+        UserTO userTO = USER_SERVICE.read("1417acbe-cbf6-4277-9372-e75e04f97000");
         assertFalse(userTO.getResources().contains(RESOURCE_NAME_TESTDB), "Should not contain removed resources");
         assertFalse(userTO.getAuxClasses().contains("csv"), "Should not contain removed auxiliary classes");
         assertFalse(userTO.getRoles().contains("Other"), "Should not contain removed roles");
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserRequestITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserRequestITCase.java
index 6919ad3..eb63a93 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserRequestITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserRequestITCase.java
@@ -38,8 +38,8 @@
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.to.RelationshipTO;
-import org.apache.syncope.common.lib.to.UserRequestForm;
 import org.apache.syncope.common.lib.to.UserRequest;
+import org.apache.syncope.common.lib.to.UserRequestForm;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.WorkflowTaskExecInput;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
@@ -55,22 +55,22 @@
 
     @BeforeAll
     public static void loadBpmnProcesses() throws IOException {
-        assumeFalse(clientFactory.getContentType() == SyncopeClientFactoryBean.ContentType.YAML);
-        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform()));
+        assumeFalse(CLIENT_FACTORY.getContentType() == SyncopeClientFactoryBean.ContentType.YAML);
+        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform()));
 
-        WebClient.client(bpmnProcessService).type(MediaType.APPLICATION_XML_TYPE);
-        bpmnProcessService.set("directorGroupRequest",
+        WebClient.client(BPMN_PROCESS_SERVICE).type(MediaType.APPLICATION_XML_TYPE);
+        BPMN_PROCESS_SERVICE.set("directorGroupRequest",
                 IOUtils.toString(UserRequestITCase.class.getResourceAsStream("/directorGroupRequest.bpmn20.xml")));
-        bpmnProcessService.set("assignPrinterRequest",
+        BPMN_PROCESS_SERVICE.set("assignPrinterRequest",
                 IOUtils.toString(UserRequestITCase.class.getResourceAsStream("/assignPrinterRequest.bpmn20.xml")));
-        bpmnProcessService.set("verifyAddedVariables",
+        BPMN_PROCESS_SERVICE.set("verifyAddedVariables",
                 IOUtils.toString(UserRequestITCase.class.getResourceAsStream("/verifyAddedVariables.bpmn20.xml")));
     }
 
     @BeforeEach
     public void check() {
-        assumeFalse(clientFactory.getContentType() == SyncopeClientFactoryBean.ContentType.YAML);
-        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform()));
+        assumeFalse(CLIENT_FACTORY.getContentType() == SyncopeClientFactoryBean.ContentType.YAML);
+        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform()));
     }
 
     @Test
@@ -80,83 +80,83 @@
         assertFalse(user.getMembership("ebf97068-aa4b-4a85-9f01-680e8c4cf227").isPresent());
 
         // start request
-        UserRequest req = userRequestService.startRequest("directorGroupRequest", user.getKey(), null);
+        UserRequest req = USER_REQUEST_SERVICE.startRequest("directorGroupRequest", user.getKey(), null);
         assertNotNull(req);
         assertEquals("directorGroupRequest", req.getBpmnProcess());
         assertNotNull(req.getExecutionId());
         assertEquals(req.getUsername(), user.getUsername());
 
         // check that user can see the ongoing request
-        SyncopeClient client = clientFactory.create(user.getUsername(), "password123");
+        SyncopeClient client = CLIENT_FACTORY.create(user.getUsername(), "password123");
         PagedResult<UserRequest> requests = client.getService(UserRequestService.class).
                 listRequests(new UserRequestQuery.Builder().user(user.getKey()).build());
         assertEquals(1, requests.getTotalCount());
         assertEquals("directorGroupRequest", requests.getResult().get(0).getBpmnProcess());
 
         // 1st approval -> reject
-        UserRequestForm form = userRequestService.listForms(
+        UserRequestForm form = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().get(0);
-        form = userRequestService.claimForm(form.getTaskId());
+        form = USER_REQUEST_SERVICE.claimForm(form.getTaskId());
         form.getProperty("firstLevelApprove").get().setValue(Boolean.FALSE.toString());
-        userRequestService.submitForm(form);
+        USER_REQUEST_SERVICE.submitForm(form);
 
         // no more forms, group not assigned
-        assertTrue(userRequestService.listForms(
+        assertTrue(USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().isEmpty());
-        assertFalse(userService.read(user.getKey()).getMembership("ebf97068-aa4b-4a85-9f01-680e8c4cf227").isPresent());
+        assertFalse(USER_SERVICE.read(user.getKey()).getMembership("ebf97068-aa4b-4a85-9f01-680e8c4cf227").isPresent());
 
         // start request again
-        req = userRequestService.startRequest("directorGroupRequest", user.getKey(), null);
+        req = USER_REQUEST_SERVICE.startRequest("directorGroupRequest", user.getKey(), null);
         assertNotNull(req);
 
         // 1st approval -> accept
-        form = userRequestService.listForms(
+        form = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().get(0);
-        form = userRequestService.claimForm(form.getTaskId());
+        form = USER_REQUEST_SERVICE.claimForm(form.getTaskId());
         form.getProperty("firstLevelApprove").get().setValue(Boolean.TRUE.toString());
-        userRequestService.submitForm(form);
+        USER_REQUEST_SERVICE.submitForm(form);
 
         // 2nd approval -> reject
-        form = userRequestService.listForms(
+        form = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().get(0);
-        form = userRequestService.claimForm(form.getTaskId());
+        form = USER_REQUEST_SERVICE.claimForm(form.getTaskId());
         form.getProperty("secondLevelApprove").get().setValue(Boolean.FALSE.toString());
-        user = userRequestService.submitForm(form).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        user = USER_REQUEST_SERVICE.submitForm(form).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
 
         // no more forms, group not assigned
-        assertTrue(userRequestService.listForms(
+        assertTrue(USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().isEmpty());
-        assertFalse(userService.read(user.getKey()).getMembership("ebf97068-aa4b-4a85-9f01-680e8c4cf227").isPresent());
+        assertFalse(USER_SERVICE.read(user.getKey()).getMembership("ebf97068-aa4b-4a85-9f01-680e8c4cf227").isPresent());
 
         // start request again
-        req = userRequestService.startRequest("directorGroupRequest", user.getKey(), null);
+        req = USER_REQUEST_SERVICE.startRequest("directorGroupRequest", user.getKey(), null);
         assertNotNull(req);
 
         // 1st approval -> accept
-        form = userRequestService.listForms(
+        form = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().get(0);
-        form = userRequestService.claimForm(form.getTaskId());
+        form = USER_REQUEST_SERVICE.claimForm(form.getTaskId());
         form.getProperty("firstLevelApprove").get().setValue(Boolean.TRUE.toString());
-        userRequestService.submitForm(form);
+        USER_REQUEST_SERVICE.submitForm(form);
 
         // 2nd approval -> accept
-        form = userRequestService.listForms(
+        form = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().get(0);
-        form = userRequestService.claimForm(form.getTaskId());
+        form = USER_REQUEST_SERVICE.claimForm(form.getTaskId());
         form.getProperty("secondLevelApprove").get().setValue(Boolean.TRUE.toString());
-        user = userRequestService.submitForm(form).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        user = USER_REQUEST_SERVICE.submitForm(form).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
 
         // check that the director group was effectively assigned
         assertTrue(user.getMembership("ebf97068-aa4b-4a85-9f01-680e8c4cf227").isPresent());
-        assertTrue(userService.read(user.getKey()).getMembership("ebf97068-aa4b-4a85-9f01-680e8c4cf227").isPresent());
+        assertTrue(USER_SERVICE.read(user.getKey()).getMembership("ebf97068-aa4b-4a85-9f01-680e8c4cf227").isPresent());
     }
 
     @Test
     public void cancel() {
         PagedResult<UserRequestForm> forms =
-                userRequestService.listForms(new UserRequestQuery.Builder().build());
+                USER_REQUEST_SERVICE.listForms(new UserRequestQuery.Builder().build());
         int preForms = forms.getTotalCount();
 
         UserTO user = createUser(UserITCase.getUniqueSample("twoLevelsApproval@tirasa.net")).getEntity();
@@ -164,46 +164,46 @@
         assertFalse(user.getMembership("ebf97068-aa4b-4a85-9f01-680e8c4cf227").isPresent());
 
         // start request
-        UserRequest req = userRequestService.startRequest("directorGroupRequest", user.getKey(), null);
+        UserRequest req = USER_REQUEST_SERVICE.startRequest("directorGroupRequest", user.getKey(), null);
         assertNotNull(req);
 
         // check that form was generated
-        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
+        forms = USER_REQUEST_SERVICE.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms + 1, forms.getTotalCount());
 
-        assertEquals(1, userRequestService.listForms(
+        assertEquals(1, USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().size());
 
         // cancel request
-        userRequestService.cancelRequest(req.getExecutionId(), "nothing in particular");
+        USER_REQUEST_SERVICE.cancelRequest(req.getExecutionId(), "nothing in particular");
 
         // check that form was removed
-        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
+        forms = USER_REQUEST_SERVICE.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms, forms.getTotalCount());
 
-        assertTrue(userRequestService.listForms(
+        assertTrue(USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().isEmpty());
     }
 
     @Test
     public void userSelection() {
         PagedResult<UserRequestForm> forms =
-                userRequestService.listForms(new UserRequestQuery.Builder().build());
+                USER_REQUEST_SERVICE.listForms(new UserRequestQuery.Builder().build());
         int preForms = forms.getTotalCount();
 
         UserTO user = createUser(UserITCase.getUniqueSample("userSelection@tirasa.net")).getEntity();
         assertNotNull(user);
-        List<RelationshipTO> relationships = userService.read(user.getKey()).getRelationships();
+        List<RelationshipTO> relationships = USER_SERVICE.read(user.getKey()).getRelationships();
         assertTrue(relationships.isEmpty());
 
-        SyncopeClient client = clientFactory.create(user.getUsername(), "password123");
+        SyncopeClient client = CLIENT_FACTORY.create(user.getUsername(), "password123");
 
         // start request as user
         UserRequest req = client.getService(UserRequestService.class).startRequest("assignPrinterRequest", null, null);
         assertNotNull(req);
 
         // check (as admin) that a new form is available
-        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
+        forms = USER_REQUEST_SERVICE.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms + 1, forms.getTotalCount());
 
         // get (as user) the form, claim and submit
@@ -234,25 +234,25 @@
         assertEquals("assignPrinterRequest", requests.getResult().get(0).getBpmnProcess());
 
         // get (as admin) the new form, claim and submit
-        form = userRequestService.listForms(
+        form = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().get(0);
         assertEquals("assignPrinterRequest", form.getBpmnProcess());
-        form = userRequestService.claimForm(form.getTaskId());
+        form = USER_REQUEST_SERVICE.claimForm(form.getTaskId());
 
         assertEquals("8559d14d-58c2-46eb-a2d4-a7d35161e8f8", form.getProperty("printer").get().getValue());
 
         form.getProperty("approve").get().setValue(Boolean.TRUE.toString());
-        userRequestService.submitForm(form);
+        USER_REQUEST_SERVICE.submitForm(form);
 
         // no more forms available
-        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
+        forms = USER_REQUEST_SERVICE.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms, forms.getTotalCount());
 
         assertTrue(client.getService(UserRequestService.class).
                 listRequests(new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().isEmpty());
 
         // check that relationship was made effective by approval
-        relationships = userService.read(user.getKey()).getRelationships();
+        relationships = USER_SERVICE.read(user.getKey()).getRelationships();
         assertFalse(relationships.isEmpty());
         assertTrue(relationships.stream().
                 anyMatch(relationship -> "8559d14d-58c2-46eb-a2d4-a7d35161e8f8".equals(relationship.getOtherEndKey())));
@@ -261,13 +261,13 @@
     @Test
     public void addVariablesToUserRequestAtStart() {
         PagedResult<UserRequestForm> forms =
-                userRequestService.listForms(new UserRequestQuery.Builder().build());
+                USER_REQUEST_SERVICE.listForms(new UserRequestQuery.Builder().build());
         int preForms = forms.getTotalCount();
 
         UserTO user = createUser(UserITCase.getUniqueSample("addVariables@tirasa.net")).getEntity();
         assertNotNull(user);
 
-        SyncopeClient client = clientFactory.create(user.getUsername(), "password123");
+        SyncopeClient client = CLIENT_FACTORY.create(user.getUsername(), "password123");
 
         WorkflowTaskExecInput testInput = new WorkflowTaskExecInput();
         testInput.getVariables().put("providedVariable", "test");
@@ -278,23 +278,23 @@
         assertNotNull(req);
 
         // check that a new form is available
-        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
+        forms = USER_REQUEST_SERVICE.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms + 1, forms.getTotalCount());
 
         // get the form and verify the property value
-        PagedResult<UserRequestForm> userForms = userRequestService.listForms(
+        PagedResult<UserRequestForm> userForms = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(user.getKey()).build());
         assertEquals(1, userForms.getTotalCount());
 
         UserRequestForm form = userForms.getResult().get(0);
-        form = userRequestService.claimForm(form.getTaskId());
+        form = USER_REQUEST_SERVICE.claimForm(form.getTaskId());
         assertEquals(form.getProperty("providedVariable").get().getValue(), "test");
 
         // cancel request
-        userRequestService.cancelRequest(req.getExecutionId(), "nothing in particular");
+        USER_REQUEST_SERVICE.cancelRequest(req.getExecutionId(), "nothing in particular");
 
         // no more forms available
-        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
+        forms = USER_REQUEST_SERVICE.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms, forms.getTotalCount());
 
         assertTrue(client.getService(UserRequestService.class).
@@ -303,9 +303,9 @@
 
     @Test
     public void invalid() throws IOException {
-        WebClient.client(bpmnProcessService).type(MediaType.APPLICATION_XML_TYPE);
+        WebClient.client(BPMN_PROCESS_SERVICE).type(MediaType.APPLICATION_XML_TYPE);
         try {
-            bpmnProcessService.set("invalid",
+            BPMN_PROCESS_SERVICE.set("invalid",
                     IOUtils.toString(UserRequestITCase.class.getResourceAsStream("/invalidRequest.bpmn20.xml")));
             fail();
         } catch (SyncopeClientException e) {
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserSelfITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserSelfITCase.java
index 36dcb05..5cf6584 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserSelfITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserSelfITCase.java
@@ -51,8 +51,8 @@
 import org.apache.syncope.common.lib.to.MembershipTO;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
-import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.UserRequestForm;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.WorkflowTask;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
@@ -73,23 +73,23 @@
 
     @Test
     public void selfRegistrationAllowed() {
-        assertTrue(adminClient.platform().isSelfRegAllowed());
+        assertTrue(ADMIN_CLIENT.platform().isSelfRegAllowed());
     }
 
     @Test
     public void create() {
-        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform()));
+        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform()));
 
         // 1. self-registration as admin: failure
         try {
-            userSelfService.create(UserITCase.getUniqueSample("anonymous@syncope.apache.org"));
+            USER_SELF_SERVICE.create(UserITCase.getUniqueSample("anonymous@syncope.apache.org"));
             fail("This should not happen");
         } catch (ForbiddenException e) {
             assertNotNull(e);
         }
 
         // 2. self-registration as anonymous: works
-        SyncopeClient anonClient = clientFactory.create();
+        SyncopeClient anonClient = CLIENT_FACTORY.create();
         UserTO self = anonClient.getService(UserSelfService.class).
                 create(UserITCase.getUniqueSample("anonymous@syncope.apache.org")).
                 readEntity(new GenericType<ProvisioningResult<UserTO>>() {
@@ -100,7 +100,7 @@
 
     @Test
     public void createAndApprove() {
-        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform()));
+        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform()));
 
         // 1. self-create user with membership: goes 'createApproval' with resources and membership but no propagation
         UserCR userCR = UserITCase.getUniqueSample("anonymous@syncope.apache.org");
@@ -108,7 +108,7 @@
                 new MembershipTO.Builder("29f96485-729e-4d31-88a1-6fc60e4677f3").build());
         userCR.getResources().add(RESOURCE_NAME_TESTDB);
 
-        SyncopeClient anonClient = clientFactory.create();
+        SyncopeClient anonClient = CLIENT_FACTORY.create();
         UserTO userTO = anonClient.getService(UserSelfService.class).
                 create(userCR).
                 readEntity(new GenericType<ProvisioningResult<UserTO>>() {
@@ -119,34 +119,34 @@
         assertFalse(userTO.getResources().isEmpty());
 
         try {
-            resourceService.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userTO.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userTO.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
 
         // 2. now approve and verify that propagation has happened
-        UserRequestForm form = userRequestService.listForms(
+        UserRequestForm form = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
-        form = userRequestService.claimForm(form.getTaskId());
+        form = USER_REQUEST_SERVICE.claimForm(form.getTaskId());
         form.getProperty("approveCreate").get().setValue(Boolean.TRUE.toString());
-        userTO = userRequestService.submitForm(form).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        userTO = USER_REQUEST_SERVICE.submitForm(form).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
         assertNotNull(userTO);
         assertEquals("active", userTO.getStatus());
-        assertNotNull(resourceService.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userTO.getKey()));
+        assertNotNull(RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userTO.getKey()));
     }
 
     @Test
     public void createAndUnclaim() {
-        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform()));
+        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform()));
 
         // 1. self-create user with membership: goes 'createApproval' with resources and membership but no propagation
         UserCR userCR = UserITCase.getUniqueSample("anonymous@syncope.apache.org");
         userCR.getMemberships().add(
                 new MembershipTO.Builder("29f96485-729e-4d31-88a1-6fc60e4677f3").build());
         userCR.getResources().add(RESOURCE_NAME_TESTDB);
-        SyncopeClient anonClient = clientFactory.create();
+        SyncopeClient anonClient = CLIENT_FACTORY.create();
         UserTO userTO = anonClient.getService(UserSelfService.class).
                 create(userCR).
                 readEntity(new GenericType<ProvisioningResult<UserTO>>() {
@@ -156,42 +156,42 @@
         assertFalse(userTO.getMemberships().isEmpty());
         assertFalse(userTO.getResources().isEmpty());
         try {
-            resourceService.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userTO.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userTO.getKey());
             fail();
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
 
         // 2. unclaim and verify that propagation has NOT happened
-        UserRequestForm form = userRequestService.listForms(
+        UserRequestForm form = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
-        form = userRequestService.unclaimForm(form.getTaskId());
+        form = USER_REQUEST_SERVICE.unclaimForm(form.getTaskId());
         assertNull(form.getAssignee());
         assertNotNull(userTO);
         assertNotEquals("active", userTO.getStatus());
         try {
-            resourceService.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userTO.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userTO.getKey());
             fail();
         } catch (Exception e) {
             assertNotNull(e);
         }
 
         // 3. approve and verify that propagation has happened
-        form = userRequestService.listForms(
+        form = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
-        form = userRequestService.claimForm(form.getTaskId());
+        form = USER_REQUEST_SERVICE.claimForm(form.getTaskId());
         form.getProperty("approveCreate").get().setValue(Boolean.TRUE.toString());
-        userTO = userRequestService.submitForm(form).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        userTO = USER_REQUEST_SERVICE.submitForm(form).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
         assertNotNull(userTO);
         assertEquals("active", userTO.getStatus());
-        assertNotNull(resourceService.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userTO.getKey()));
+        assertNotNull(RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), userTO.getKey()));
     }
 
     @Test
     public void read() {
         UserTO user = createUser(UserITCase.getUniqueSample("selfread@syncope.apache.org")).getEntity();
-        UserService us2 = clientFactory.create(user.getUsername(), "password123").getService(UserService.class);
+        UserService us2 = CLIENT_FACTORY.create(user.getUsername(), "password123").getService(UserService.class);
         try {
             us2.read(user.getKey());
             fail("This should not happen");
@@ -200,18 +200,18 @@
         }
 
         Triple<Map<String, Set<String>>, List<String>, UserTO> self =
-                clientFactory.create(user.getUsername(), "password123").self();
+                CLIENT_FACTORY.create(user.getUsername(), "password123").self();
         assertEquals(user.getUsername(), self.getRight().getUsername());
     }
 
     @Test
     public void authenticateByPlainAttribute() {
-        UserTO rossini = userService.read("rossini");
+        UserTO rossini = USER_SERVICE.read("rossini");
         assertNotNull(rossini);
         String userId = rossini.getPlainAttr("userId").get().getValues().get(0);
         assertNotNull(userId);
 
-        Triple<Map<String, Set<String>>, List<String>, UserTO> self = clientFactory.create(userId, ADMIN_PWD).self();
+        Triple<Map<String, Set<String>>, List<String>, UserTO> self = CLIENT_FACTORY.create(userId, ADMIN_PWD).self();
         assertEquals(rossini.getUsername(), self.getRight().getUsername());
     }
 
@@ -227,19 +227,19 @@
         userUR.setKey(created.getKey());
         userUR.setUsername(new StringReplacePatchItem.Builder().value(created.getUsername() + "XX").build());
 
-        SyncopeClient authClient = clientFactory.create(created.getUsername(), "password123");
+        SyncopeClient authClient = CLIENT_FACTORY.create(created.getUsername(), "password123");
         UserTO updated = authClient.getService(UserSelfService.class).update(userUR).
                 readEntity(new GenericType<ProvisioningResult<UserTO>>() {
                 }).getEntity();
         assertNotNull(updated);
-        assertEquals(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform())
+        assertEquals(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform())
                 ? "active" : "created", updated.getStatus());
         assertTrue(updated.getUsername().endsWith("XX"));
     }
 
     @Test
     public void updateWithApproval() {
-        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform()));
+        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform()));
 
         // 1. create user as admin
         UserTO created = createUser(UserITCase.getUniqueSample("anonymous@syncope.apache.org")).getEntity();
@@ -258,7 +258,7 @@
         userUR.setPassword(new PasswordPatch.Builder().
                 value("newPassword123").onSyncope(false).resource(RESOURCE_NAME_TESTDB).build());
 
-        SyncopeClient authClient = clientFactory.create(created.getUsername(), "password123");
+        SyncopeClient authClient = CLIENT_FACTORY.create(created.getUsername(), "password123");
         UserTO updated = authClient.getService(UserSelfService.class).update(userUR).
                 readEntity(new GenericType<ProvisioningResult<UserTO>>() {
                 }).getEntity();
@@ -270,18 +270,18 @@
         // no propagation happened
         assertTrue(updated.getResources().isEmpty());
         try {
-            resourceService.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), updated.getKey());
+            RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), updated.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
 
         // 3. approve self-update as admin
-        UserRequestForm form = userRequestService.listForms(
+        UserRequestForm form = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(updated.getKey()).build()).getResult().get(0);
-        form = userRequestService.claimForm(form.getTaskId());
+        form = USER_REQUEST_SERVICE.claimForm(form.getTaskId());
         form.getProperty("approveUpdate").get().setValue(Boolean.TRUE.toString());
-        updated = userRequestService.submitForm(form).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        updated = USER_REQUEST_SERVICE.submitForm(form).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
         assertNotNull(updated);
         assertEquals("active", updated.getStatus());
@@ -290,7 +290,7 @@
 
         // check that propagation also happened
         assertTrue(updated.getResources().contains(RESOURCE_NAME_TESTDB));
-        assertNotNull(resourceService.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), updated.getKey()));
+        assertNotNull(RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_TESTDB, AnyTypeKind.USER.name(), updated.getKey()));
     }
 
     @Test
@@ -298,12 +298,12 @@
         UserTO created = createUser(UserITCase.getUniqueSample("anonymous@syncope.apache.org")).getEntity();
         assertNotNull(created);
 
-        SyncopeClient authClient = clientFactory.create(created.getUsername(), "password123");
+        SyncopeClient authClient = CLIENT_FACTORY.create(created.getUsername(), "password123");
         UserTO deleted = authClient.getService(UserSelfService.class).delete().readEntity(
                 new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
         assertNotNull(deleted);
-        assertEquals(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform())
+        assertEquals(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform())
                 ? "deleteApproval" : null, deleted.getStatus());
     }
 
@@ -326,12 +326,12 @@
         assertTrue(StringUtils.isNotBlank(pwdOnResource));
 
         // 2. verify that new user is able to authenticate
-        SyncopeClient authClient = clientFactory.create(user.getUsername(), "password123");
+        SyncopeClient authClient = CLIENT_FACTORY.create(user.getUsername(), "password123");
         UserTO read = authClient.self().getRight();
         assertNotNull(read);
 
         // 3. request password reset (as anonymous) providing the expected security answer
-        SyncopeClient anonClient = clientFactory.create();
+        SyncopeClient anonClient = CLIENT_FACTORY.create();
         try {
             anonClient.getService(UserSelfService.class).requestPasswordReset(user.getUsername(), "WRONG");
             fail("This should not happen");
@@ -340,7 +340,7 @@
         }
         anonClient.getService(UserSelfService.class).requestPasswordReset(user.getUsername(), "Rossi");
 
-        if (ElasticsearchDetector.isElasticSearchEnabled(adminClient.platform())) {
+        if (ElasticsearchDetector.isElasticSearchEnabled(ADMIN_CLIENT.platform())) {
             try {
                 Thread.sleep(2000);
             } catch (InterruptedException ex) {
@@ -350,7 +350,7 @@
 
         // 4. get token (normally sent via e-mail, now reading as admin)
         String token = await().atMost(MAX_WAIT_SECONDS, TimeUnit.SECONDS).pollInterval(1, TimeUnit.SECONDS).until(
-                () -> userService.read(read.getKey()).getToken(),
+                () -> USER_SERVICE.read(read.getKey()).getToken(),
                 StringUtils::isNotBlank);
 
         // 5. confirm password reset
@@ -364,7 +364,7 @@
         anonClient.getService(UserSelfService.class).confirmPasswordReset(token, "newPassword123");
 
         // 6. verify that password was reset and token removed
-        authClient = clientFactory.create(user.getUsername(), "newPassword123");
+        authClient = CLIENT_FACTORY.create(user.getUsername(), "newPassword123");
         assertNull(authClient.self().getRight().getToken());
 
         // 7. verify that password was changed on external resource
@@ -384,16 +384,16 @@
         createUser(user);
 
         // 2. verify that new user is able to authenticate
-        SyncopeClient authClient = clientFactory.create(user.getUsername(), "password123");
+        SyncopeClient authClient = CLIENT_FACTORY.create(user.getUsername(), "password123");
         UserTO read = authClient.self().getRight();
         assertNotNull(read);
 
         // 3. request password reset (as anonymous) with no security answer
-        SyncopeClient anonClient = clientFactory.create();
+        SyncopeClient anonClient = CLIENT_FACTORY.create();
         anonClient.getService(UserSelfService.class).requestPasswordReset(user.getUsername(), null);
 
         // 4. get token (normally sent via e-mail, now reading as admin)
-        String token = userService.read(read.getKey()).getToken();
+        String token = USER_SERVICE.read(read.getKey()).getToken();
         assertNotNull(token);
 
         // 5. confirm password reset
@@ -407,7 +407,7 @@
         anonClient.getService(UserSelfService.class).confirmPasswordReset(token, "newPassword123");
 
         // 6. verify that password was reset and token removed
-        authClient = clientFactory.create(user.getUsername(), "newPassword123");
+        authClient = CLIENT_FACTORY.create(user.getUsername(), "newPassword123");
         read = authClient.self().getRight();
         assertNotNull(read);
         assertNull(read.getToken());
@@ -422,10 +422,10 @@
         UserUR userUR = new UserUR();
         userUR.setKey("b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee");
         userUR.setPassword(new PasswordPatch.Builder().value("password321").build());
-        userService.update(userUR);
+        USER_SERVICE.update(userUR);
 
         // 0. access as vivaldi -> succeed
-        SyncopeClient vivaldiClient = clientFactory.create("vivaldi", "password321");
+        SyncopeClient vivaldiClient = CLIENT_FACTORY.create("vivaldi", "password321");
         Response response = vivaldiClient.getService(AccessTokenService.class).refresh();
         assertEquals(Response.Status.NO_CONTENT.getStatusCode(), response.getStatus());
 
@@ -450,13 +450,13 @@
 
         // 4. verify it worked
         Triple<Map<String, Set<String>>, List<String>, UserTO> self =
-                clientFactory.create("vivaldi", "password123").self();
+                CLIENT_FACTORY.create("vivaldi", "password123").self();
         assertFalse(self.getRight().isMustChangePassword());
     }
 
     @Test
     public void createWithReject() {
-        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform()));
+        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform()));
 
         UserCR userCR = UserITCase.getUniqueSample("createWithReject@syncope.apache.org");
         userCR.getResources().add(RESOURCE_NAME_TESTDB);
@@ -472,7 +472,7 @@
         assertEquals("createApproval", userTO.getStatus());
 
         // 2. request if there is any pending task for user just created
-        UserRequestForm form = userRequestService.listForms(
+        UserRequestForm form = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
         assertNotNull(form);
         assertNotNull(form.getUsername());
@@ -482,7 +482,7 @@
 
         // 3. claim task as rossini, with role "User manager" granting entitlement to claim forms but not in
         // groupForWorkflowApproval, designated for approval in workflow definition: fail
-        UserTO rossini = userService.read("1417acbe-cbf6-4277-9372-e75e04f97000");
+        UserTO rossini = USER_SERVICE.read("1417acbe-cbf6-4277-9372-e75e04f97000");
         if (!rossini.getRoles().contains("User manager")) {
             UserUR userUR = new UserUR();
             userUR.setKey("1417acbe-cbf6-4277-9372-e75e04f97000");
@@ -492,7 +492,7 @@
         }
         assertTrue(rossini.getRoles().contains("User manager"));
 
-        UserRequestService userService2 = clientFactory.create("rossini", ADMIN_PWD).
+        UserRequestService userService2 = CLIENT_FACTORY.create("rossini", ADMIN_PWD).
                 getService(UserRequestService.class);
         try {
             userService2.claimForm(form.getTaskId());
@@ -502,7 +502,7 @@
         }
 
         // 4. claim task from bellini, with role "User manager" and in groupForWorkflowApproval
-        UserRequestService userService3 = clientFactory.create("bellini", ADMIN_PWD).
+        UserRequestService userService3 = CLIENT_FACTORY.create("bellini", ADMIN_PWD).
                 getService(UserRequestService.class);
         assertEquals(1, userService3.listForms(
                 new UserRequestQuery.Builder().user(userTO.getKey()).build()).getTotalCount());
@@ -532,10 +532,10 @@
 
     @Test
     public void createWithApproval() {
-        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform()));
+        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform()));
 
         // read forms *before* any operation
-        PagedResult<UserRequestForm> forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
+        PagedResult<UserRequestForm> forms = USER_REQUEST_SERVICE.listForms(new UserRequestQuery.Builder().build());
         int preForms = forms.getTotalCount();
 
         UserCR userCR = UserITCase.getUniqueSample("createWithApproval@syncope.apache.org");
@@ -567,7 +567,7 @@
         assertNotNull(exception);
 
         // 2. request if there is any pending form for user just created
-        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
+        forms = USER_REQUEST_SERVICE.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms + 1, forms.getTotalCount());
 
         // 3. as admin, update user: still pending approval
@@ -577,7 +577,7 @@
         userUR.setUsername(new StringReplacePatchItem.Builder().value(updatedUsername).build());
         updateUser(userUR);
 
-        UserRequestForm form = userRequestService.listForms(
+        UserRequestForm form = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
         assertNotNull(form);
         assertNotNull(form.getTaskId());
@@ -587,7 +587,7 @@
         assertNull(form.getAssignee());
 
         // 4. claim task (as admin)
-        form = userRequestService.claimForm(form.getTaskId());
+        form = USER_REQUEST_SERVICE.claimForm(form.getTaskId());
         assertNotNull(form);
         assertNotNull(form.getTaskId());
         assertNotNull(form.getUserTO());
@@ -597,7 +597,7 @@
 
         // 5. approve user (and verify that propagation occurred)
         form.getProperty("approveCreate").get().setValue(Boolean.TRUE.toString());
-        userTO = userRequestService.submitForm(form).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        userTO = USER_REQUEST_SERVICE.submitForm(form).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
         assertNotNull(userTO);
         assertEquals(updatedUsername, userTO.getUsername());
@@ -619,10 +619,10 @@
 
     @Test
     public void updateApproval() {
-        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform()));
+        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform()));
 
         // read forms *before* any operation
-        PagedResult<UserRequestForm> forms = userRequestService.listForms(
+        PagedResult<UserRequestForm> forms = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().build());
         int preForms = forms.getTotalCount();
 
@@ -635,15 +635,15 @@
         req.setKey(created.getKey());
         req.getMemberships().add(new MembershipUR.Builder("b1f7c12d-ec83-441f-a50e-1691daaedf3b").build());
 
-        SyncopeClient client = clientFactory.create(created.getUsername(), "password123");
+        SyncopeClient client = CLIENT_FACTORY.create(created.getUsername(), "password123");
         Response response = client.getService(UserSelfService.class).update(req);
         assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
-        assertEquals("updateApproval", userService.read(created.getKey()).getStatus());
+        assertEquals("updateApproval", USER_SERVICE.read(created.getKey()).getStatus());
 
-        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
+        forms = USER_REQUEST_SERVICE.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms + 1, forms.getTotalCount());
 
-        UserRequestForm form = userRequestService.listForms(
+        UserRequestForm form = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(created.getKey()).build()).getResult().get(0);
         assertNotNull(form);
         assertNotNull(form.getTaskId());
@@ -663,17 +663,17 @@
         assertEquals(0, updated.getMemberships().size());
 
         // the patch is not updated in the approval form
-        form = userRequestService.listForms(
+        form = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(created.getKey()).build()).getResult().get(0);
         assertEquals(req, form.getUserUR());
 
         // approve the user
-        form = userRequestService.claimForm(form.getTaskId());
+        form = USER_REQUEST_SERVICE.claimForm(form.getTaskId());
         form.getProperty("approveUpdate").get().setValue(Boolean.TRUE.toString());
-        userRequestService.submitForm(form);
+        USER_REQUEST_SERVICE.submitForm(form);
 
         // verify that the approved user bears both original and further changes
-        UserTO approved = userService.read(created.getKey());
+        UserTO approved = USER_SERVICE.read(created.getKey());
         assertEquals("active", approved.getStatus());
         assertEquals("/even/two", approved.getRealm());
         assertEquals(1, approved.getMemberships().size());
@@ -682,12 +682,12 @@
 
     @Test
     public void availableTasks() {
-        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform()));
+        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform()));
 
         UserTO user = createUser(UserITCase.getUniqueSample("availableTasks@apache.org")).getEntity();
         assertEquals("active", user.getStatus());
 
-        List<WorkflowTask> tasks = userWorkflowTaskService.getAvailableTasks(user.getKey());
+        List<WorkflowTask> tasks = USER_WORKFLOW_TASK_SERVICE.getAvailableTasks(user.getKey());
         assertNotNull(tasks);
         assertTrue(tasks.stream().anyMatch(task -> "update".equals(task.getName())));
         assertTrue(tasks.stream().anyMatch(task -> "suspend".equals(task.getName())));
@@ -696,10 +696,10 @@
 
     @Test
     public void issueSYNCOPE15() {
-        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform()));
+        assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform()));
 
         // read forms *before* any operation
-        PagedResult<UserRequestForm> forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
+        PagedResult<UserRequestForm> forms = USER_REQUEST_SERVICE.listForms(new UserRequestQuery.Builder().build());
         int preForms = forms.getTotalCount();
 
         UserCR userCR = UserITCase.getUniqueSample("issueSYNCOPE15@syncope.apache.org");
@@ -721,15 +721,15 @@
         assertEquals(userTO.getCreationDate(), userTO.getLastChangeDate());
 
         // 2. request if there is any pending form for user just created
-        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
+        forms = USER_REQUEST_SERVICE.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms + 1, forms.getTotalCount());
 
-        UserRequestForm form = userRequestService.listForms(
+        UserRequestForm form = USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
         assertNotNull(form);
 
         // 3. first claim by bellini ....
-        UserRequestService userService3 = clientFactory.create("bellini", ADMIN_PWD).
+        UserRequestService userService3 = CLIENT_FACTORY.create("bellini", ADMIN_PWD).
                 getService(UserRequestService.class);
         form = userService3.claimForm(form.getTaskId());
         assertNotNull(form);
@@ -737,27 +737,27 @@
         assertNotNull(form.getAssignee());
 
         // 4. second claim task by admin
-        form = userRequestService.claimForm(form.getTaskId());
+        form = USER_REQUEST_SERVICE.claimForm(form.getTaskId());
         assertNotNull(form);
 
         // 5. approve user
         form.getProperty("approveCreate").get().setValue(Boolean.TRUE.toString());
 
         // 6. submit approve
-        userRequestService.submitForm(form);
+        USER_REQUEST_SERVICE.submitForm(form);
         assertEquals(preForms,
-                userRequestService.listForms(new UserRequestQuery.Builder().build()).getTotalCount());
-        assertTrue(userRequestService.listForms(
+                USER_REQUEST_SERVICE.listForms(new UserRequestQuery.Builder().build()).getTotalCount());
+        assertTrue(USER_REQUEST_SERVICE.listForms(
                 new UserRequestQuery.Builder().user(userTO.getKey()).build()).getResult().isEmpty());
 
         // 7.check that no more forms are still to be processed
-        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
+        forms = USER_REQUEST_SERVICE.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms, forms.getTotalCount());
     }
 
     @Test
     public void issueSYNCOPE373() {
-        UserTO userTO = adminClient.self().getRight();
+        UserTO userTO = ADMIN_CLIENT.self().getRight();
         assertEquals(ADMIN_UNAME, userTO.getUsername());
     }
 }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java
index cf3dd58..dfa4f29 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirAttrITCase.java
@@ -29,6 +29,7 @@
 import javax.ws.rs.core.GenericType;
 import javax.ws.rs.core.Response;
 import org.apache.commons.lang3.SerializationUtils;
+import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.request.GroupCR;
 import org.apache.syncope.common.lib.request.PasswordPatch;
@@ -37,23 +38,22 @@
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.request.UserUR;
 import org.apache.syncope.common.lib.to.AnyTypeClassTO;
-import org.apache.syncope.common.lib.Attr;
 import org.apache.syncope.common.lib.to.ConnInstanceTO;
 import org.apache.syncope.common.lib.to.ConnObjectTO;
+import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.ItemTO;
 import org.apache.syncope.common.lib.to.MappingTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
-import org.apache.syncope.common.lib.to.ResourceTO;
-import org.apache.syncope.common.lib.to.GroupTO;
 import org.apache.syncope.common.lib.to.ProvisionTO;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
+import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.VirSchemaTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ConnConfProperty;
+import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.syncope.common.lib.types.MappingPurpose;
 import org.apache.syncope.common.lib.types.PatchOperation;
-import org.apache.syncope.common.lib.types.ExecStatus;
 import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.syncope.common.lib.types.StatusRType;
 import org.apache.syncope.common.rest.api.service.AnyTypeClassService;
@@ -77,7 +77,7 @@
         assertNotNull(userTO);
 
         // 2. check for virtual attribute value
-        userTO = userService.read(userTO.getKey());
+        userTO = USER_SERVICE.read(userTO.getKey());
         assertNotNull(userTO);
         assertEquals("virtualvalue", userTO.getVirAttr("virtualdata").get().getValues().get(0));
 
@@ -90,7 +90,7 @@
         assertNotNull(userTO);
 
         // 4. check for virtual attribute value
-        userTO = userService.read(userTO.getKey());
+        userTO = USER_SERVICE.read(userTO.getKey());
         assertNotNull(userTO);
         assertEquals("virtualupdated", userTO.getVirAttr("virtualdata").get().getValues().get(0));
     }
@@ -98,7 +98,7 @@
     @Test
     public void issueSYNCOPE260() {
         // create new virtual schema for the resource below
-        ResourceTO ws2 = resourceService.read(RESOURCE_NAME_WS2);
+        ResourceTO ws2 = RESOURCE_SERVICE.read(RESOURCE_NAME_WS2);
         ProvisionTO provision = ws2.getProvision(AnyTypeKind.USER.name()).get();
         assertNotNull(provision);
 
@@ -113,7 +113,7 @@
         AnyTypeClassTO newClass = new AnyTypeClassTO();
         newClass.setKey("syncope260" + getUUIDString());
         newClass.getVirSchemas().add(virSchema.getKey());
-        Response response = anyTypeClassService.create(newClass);
+        Response response = ANY_TYPE_CLASS_SERVICE.create(newClass);
         assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
         newClass = getObject(response.getLocation(), AnyTypeClassService.class, AnyTypeClassTO.class);
 
@@ -133,7 +133,7 @@
         UserTO userTO = result.getEntity();
 
         ConnObjectTO connObjectTO =
-                resourceService.readConnObject(RESOURCE_NAME_WS2, AnyTypeKind.USER.name(), userTO.getKey());
+                RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_WS2, AnyTypeKind.USER.name(), userTO.getKey());
         assertEquals("virtualvalue", connObjectTO.getAttr("COMPANYNAME").get().getValues().get(0));
         // ----------------------------------
 
@@ -151,7 +151,7 @@
         assertEquals(ExecStatus.SUCCESS, result.getPropagationStatuses().get(0).getStatus());
         userTO = result.getEntity();
 
-        connObjectTO = resourceService.readConnObject(RESOURCE_NAME_WS2, AnyTypeKind.USER.name(), userTO.getKey());
+        connObjectTO = RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_WS2, AnyTypeKind.USER.name(), userTO.getKey());
         assertEquals("virtualvalue2", connObjectTO.getAttr("COMPANYNAME").get().getValues().get(0));
         // ----------------------------------
 
@@ -159,20 +159,20 @@
         // suspend/reactivate user and check virtual attribute value (unchanged)
         // ----------------------------------
         StatusR statusR = new StatusR.Builder().key(userTO.getKey()).type(StatusRType.SUSPEND).build();
-        userTO = userService.status(statusR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        userTO = USER_SERVICE.status(statusR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
         assertEquals("suspended", userTO.getStatus());
 
-        connObjectTO = resourceService.readConnObject(RESOURCE_NAME_WS2, AnyTypeKind.USER.name(), userTO.getKey());
+        connObjectTO = RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_WS2, AnyTypeKind.USER.name(), userTO.getKey());
         assertEquals("virtualvalue2", connObjectTO.getAttr("COMPANYNAME").get().getValues().get(0));
 
         statusR = new StatusR.Builder().key(userTO.getKey()).
                 type(StatusRType.REACTIVATE).build();
-        userTO = userService.status(statusR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
+        userTO = USER_SERVICE.status(statusR).readEntity(new GenericType<ProvisioningResult<UserTO>>() {
         }).getEntity();
         assertEquals("active", userTO.getStatus());
 
-        connObjectTO = resourceService.readConnObject(RESOURCE_NAME_WS2, AnyTypeKind.USER.name(), userTO.getKey());
+        connObjectTO = RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_WS2, AnyTypeKind.USER.name(), userTO.getKey());
         assertEquals("virtualvalue2", connObjectTO.getAttr("COMPANYNAME").get().getValues().get(0));
         // ----------------------------------
 
@@ -190,7 +190,7 @@
         assertEquals(ExecStatus.SUCCESS, result.getPropagationStatuses().get(0).getStatus());
         userTO = result.getEntity();
 
-        connObjectTO = resourceService.readConnObject(RESOURCE_NAME_WS2, AnyTypeKind.USER.name(), userTO.getKey());
+        connObjectTO = RESOURCE_SERVICE.readConnObject(RESOURCE_NAME_WS2, AnyTypeKind.USER.name(), userTO.getKey());
         assertEquals("Surname2", connObjectTO.getAttr("SURNAME").get().getValues().get(0));
 
         // virtual attribute value did not change
@@ -218,7 +218,7 @@
         assertNotNull(actual);
 
         // 2. check for virtual attribute value
-        actual = userService.read(actual.getKey());
+        actual = USER_SERVICE.read(actual.getKey());
         assertEquals("virattrcache", actual.getVirAttr("virtualdata").get().getValues().get(0));
 
         // 3. update virtual attribute directly
@@ -234,7 +234,7 @@
         assertEquals("virattrcache2", value);
 
         // 4. check for cached attribute value
-        actual = userService.read(actual.getKey());
+        actual = USER_SERVICE.read(actual.getKey());
         assertEquals("virattrcache", actual.getVirAttr("virtualdata").get().getValues().get(0));
 
         UserUR userUR = new UserUR();
@@ -246,14 +246,14 @@
         assertNotNull(actual);
 
         // 6. check for virtual attribute value
-        actual = userService.read(actual.getKey());
+        actual = USER_SERVICE.read(actual.getKey());
         assertNotNull(actual);
         assertEquals("virtualupdated", actual.getVirAttr("virtualdata").get().getValues().get(0));
     }
 
     @Test
     public void issueSYNCOPE397() {
-        ResourceTO csv = resourceService.read(RESOURCE_NAME_CSV);
+        ResourceTO csv = RESOURCE_SERVICE.read(RESOURCE_NAME_CSV);
 
         // change mapping of resource-csv
         MappingTO origMapping = SerializationUtils.clone(csv.getProvisions().get(0).getMapping());
@@ -265,8 +265,8 @@
                 csv.getProvisions().get(0).getMapping().getItems().remove(email.get());
             }
 
-            resourceService.update(csv);
-            csv = resourceService.read(RESOURCE_NAME_CSV);
+            RESOURCE_SERVICE.update(csv);
+            csv = RESOURCE_SERVICE.read(RESOURCE_NAME_CSV);
             assertNotNull(csv.getProvisions().get(0).getMapping());
 
             // create new virtual schema for the resource below
@@ -284,7 +284,7 @@
             AnyTypeClassTO newClass = new AnyTypeClassTO();
             newClass.setKey("syncope397" + getUUIDString());
             newClass.getVirSchemas().add(virSchema.getKey());
-            Response response = anyTypeClassService.create(newClass);
+            Response response = ANY_TYPE_CLASS_SERVICE.create(newClass);
             assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
             newClass = getObject(response.getLocation(), AnyTypeClassService.class, AnyTypeClassTO.class);
 
@@ -307,7 +307,7 @@
             assertEquals("test@testone.org", userTO.getVirAttrs().iterator().next().getValues().get(0));
 
             // update user
-            UserTO toBeUpdated = userService.read(userTO.getKey());
+            UserTO toBeUpdated = USER_SERVICE.read(userTO.getKey());
             UserUR userUR = new UserUR();
             userUR.setKey(toBeUpdated.getKey());
             userUR.setPassword(new PasswordPatch.Builder().value("password234").build());
@@ -333,7 +333,7 @@
         } finally {
             // restore mapping of resource-csv
             csv.getProvisions().get(0).setMapping(origMapping);
-            resourceService.update(csv);
+            RESOURCE_SERVICE.update(csv);
         }
     }
 
@@ -356,14 +356,14 @@
         assertNotNull(userTO);
 
         // 2. check for virtual attribute value
-        userTO = userService.read(userTO.getKey());
+        userTO = USER_SERVICE.read(userTO.getKey());
         assertEquals("virattrcache", userTO.getVirAttr("virtualdata").get().getValues().get(0));
 
         // ----------------------------------------
         // 3. change connector URL so that we are sure that any provided value will come from virtual cache
         // ----------------------------------------
         String jdbcURL = null;
-        ConnInstanceTO connInstanceTO = connectorService.readByResource(
+        ConnInstanceTO connInstanceTO = CONNECTOR_SERVICE.readByResource(
                 RESOURCE_NAME_DBVIRATTR, Locale.ENGLISH.getLanguage());
         for (ConnConfProperty prop : connInstanceTO.getConf()) {
             if ("jdbcUrlTemplate".equals(prop.getSchema().getName())) {
@@ -373,7 +373,7 @@
             }
         }
 
-        connectorService.update(connInstanceTO);
+        CONNECTOR_SERVICE.update(connInstanceTO);
         // ----------------------------------------
 
         // ----------------------------------------
@@ -392,7 +392,7 @@
         assertEquals("virattrcache2", value);
         // ----------------------------------------
 
-        userTO = userService.read(userTO.getKey());
+        userTO = USER_SERVICE.read(userTO.getKey());
         assertEquals("virattrcache", userTO.getVirAttr("virtualdata").get().getValues().get(0));
 
         // ----------------------------------------
@@ -405,11 +405,11 @@
             }
         }
 
-        connectorService.update(connInstanceTO);
+        CONNECTOR_SERVICE.update(connInstanceTO);
         // ----------------------------------------
 
         // cached value still in place...
-        userTO = userService.read(userTO.getKey());
+        userTO = USER_SERVICE.read(userTO.getKey());
         assertEquals("virattrcache", userTO.getVirAttr("virtualdata").get().getValues().get(0));
 
         // force cache update by adding a resource which has virtualdata mapped for propagation
@@ -420,7 +420,7 @@
         userTO = updateUser(userUR).getEntity();
         assertNotNull(userTO);
 
-        userTO = userService.read(userTO.getKey());
+        userTO = USER_SERVICE.read(userTO.getKey());
         assertEquals("virattrcache2", userTO.getVirAttr("virtualdata").get().getValues().get(0));
     }
 
@@ -448,7 +448,7 @@
             // -------------------------------------------
             VirSchemaTO rvirtualdata;
             try {
-                rvirtualdata = schemaService.read(SchemaType.VIRTUAL, "rvirtualdata");
+                rvirtualdata = SCHEMA_SERVICE.read(SchemaType.VIRTUAL, "rvirtualdata");
             } catch (SyncopeClientException e) {
                 LOG.warn("rvirtualdata not found, re-creating", e);
 
@@ -465,11 +465,11 @@
             if (!"minimal group".equals(rvirtualdata.getAnyTypeClass())) {
                 LOG.warn("rvirtualdata not in minimal group, restoring");
 
-                AnyTypeClassTO minimalGroup = anyTypeClassService.read("minimal group");
+                AnyTypeClassTO minimalGroup = ANY_TYPE_CLASS_SERVICE.read("minimal group");
                 minimalGroup.getVirSchemas().add(rvirtualdata.getKey());
-                anyTypeClassService.update(minimalGroup);
+                ANY_TYPE_CLASS_SERVICE.update(minimalGroup);
 
-                rvirtualdata = schemaService.read(SchemaType.VIRTUAL, rvirtualdata.getKey());
+                rvirtualdata = SCHEMA_SERVICE.read(SchemaType.VIRTUAL, rvirtualdata.getKey());
                 assertEquals("minimal group", rvirtualdata.getAnyTypeClass());
             }
 
@@ -509,7 +509,7 @@
             mapping.getItems().add(item);
 
             assertNotNull(getObject(
-                    resourceService.create(resourceTO).getLocation(), ResourceService.class, ResourceTO.class));
+                    RESOURCE_SERVICE.create(resourceTO).getLocation(), ResourceService.class, ResourceTO.class));
             // -------------------------------------------
 
             GroupCR groupCR = new GroupCR();
@@ -556,9 +556,9 @@
             // -------------------------------------------
             // Delete resource and group ad-hoc
             // -------------------------------------------
-            resourceService.delete(resourceName);
+            RESOURCE_SERVICE.delete(resourceName);
             if (groupKey != null) {
-                groupService.delete(groupKey);
+                GROUP_SERVICE.delete(groupKey);
             }
             // -------------------------------------------
         }
@@ -611,7 +611,7 @@
 
     @Test
     public void issueSYNCOPE691() {
-        ResourceTO ldap = resourceService.read(RESOURCE_NAME_LDAP);
+        ResourceTO ldap = RESOURCE_SERVICE.read(RESOURCE_NAME_LDAP);
         try {
             ProvisionTO provision = ldap.getProvision(AnyTypeKind.USER.name()).orElse(null);
             assertNotNull(provision);
@@ -621,9 +621,9 @@
             ldap.getProvisions().clear();
             ldap.getProvisions().add(provision);
             ldap.setKey(RESOURCE_NAME_LDAP + "691" + getUUIDString());
-            resourceService.create(ldap);
+            RESOURCE_SERVICE.create(ldap);
 
-            ldap = resourceService.read(ldap.getKey());
+            ldap = RESOURCE_SERVICE.read(ldap.getKey());
             provision = ldap.getProvision(AnyTypeKind.USER.name()).get();
             assertNotNull(provision);
 
@@ -639,7 +639,7 @@
             AnyTypeClassTO newClass = new AnyTypeClassTO();
             newClass.setKey("syncope691" + getUUIDString());
             newClass.getVirSchemas().add(virSchema.getKey());
-            Response response = anyTypeClassService.create(newClass);
+            Response response = ANY_TYPE_CLASS_SERVICE.create(newClass);
             assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
             newClass = getObject(response.getLocation(), AnyTypeClassService.class, AnyTypeClassTO.class);
 
@@ -684,7 +684,7 @@
             assertTrue(updated.getVirAttrs().iterator().next().getValues().contains("test@issue691.dom4.org"));
         } finally {
             try {
-                resourceService.delete(ldap.getKey());
+                RESOURCE_SERVICE.delete(ldap.getKey());
             } catch (Exception ignore) {
                 // ignore
             }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirSchemaITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirSchemaITCase.java
index 0270dc8..364cb71 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirSchemaITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirSchemaITCase.java
@@ -44,18 +44,19 @@
 
     @Test
     public void search() {
-        List<VirSchemaTO> schemas = schemaService.search(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).build());
+        List<VirSchemaTO> schemas = SCHEMA_SERVICE.search(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).build());
         assertFalse(schemas.isEmpty());
         schemas.forEach(Assertions::assertNotNull);
 
-        schemas = schemaService.search(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).keyword("rvirtual*").build());
+        schemas = SCHEMA_SERVICE.search(
+                new SchemaQuery.Builder().type(SchemaType.VIRTUAL).keyword("rvirtual*").build());
         assertFalse(schemas.isEmpty());
         schemas.forEach(Assertions::assertNotNull);
     }
 
     @Test
     public void crud() {
-        ResourceTO csv = resourceService.read(RESOURCE_NAME_CSV);
+        ResourceTO csv = RESOURCE_SERVICE.read(RESOURCE_NAME_CSV);
         assertNotNull(csv);
         assertEquals(1, csv.getProvisions().size());
         assertTrue(csv.getProvisions().get(0).getVirSchemas().isEmpty());
@@ -74,24 +75,24 @@
         assertEquals("Virtual", schema.getLabel(Locale.ENGLISH));
         assertEquals(schema.getKey(), schema.getLabel(Locale.CHINESE));
 
-        csv = resourceService.read(RESOURCE_NAME_CSV);
+        csv = RESOURCE_SERVICE.read(RESOURCE_NAME_CSV);
         assertNotNull(csv);
         assertEquals(1, csv.getProvisions().size());
         assertFalse(csv.getProvisions().get(0).getVirSchemas().isEmpty());
 
-        schema = schemaService.read(SchemaType.VIRTUAL, schema.getKey());
+        schema = SCHEMA_SERVICE.read(SchemaType.VIRTUAL, schema.getKey());
         assertNotNull(schema);
 
-        schemaService.delete(SchemaType.VIRTUAL, schema.getKey());
+        SCHEMA_SERVICE.delete(SchemaType.VIRTUAL, schema.getKey());
 
         try {
-            schemaService.read(SchemaType.VIRTUAL, schema.getKey());
+            SCHEMA_SERVICE.read(SchemaType.VIRTUAL, schema.getKey());
             fail("This should not happen");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
 
-        csv = resourceService.read(RESOURCE_NAME_CSV);
+        csv = RESOURCE_SERVICE.read(RESOURCE_NAME_CSV);
         assertNotNull(csv);
         assertEquals(1, csv.getProvisions().size());
         assertTrue(csv.getProvisions().get(0).getVirSchemas().isEmpty());
@@ -99,7 +100,7 @@
 
     @Test
     public void anonymous() {
-        SchemaService unauthenticated = clientFactory.create().getService(SchemaService.class);
+        SchemaService unauthenticated = CLIENT_FACTORY.create().getService(SchemaService.class);
         try {
             unauthenticated.search(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).build());
             fail("This should not happen");
@@ -107,13 +108,13 @@
             assertNotNull(e);
         }
 
-        SchemaService anonymous = anonymusClient.getService(SchemaService.class);
+        SchemaService anonymous = ANONYMOUS_CLIENT.getService(SchemaService.class);
         assertFalse(anonymous.search(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).build()).isEmpty());
     }
 
     @Test
     public void issueSYNCOPE323() {
-        VirSchemaTO actual = schemaService.read(SchemaType.VIRTUAL, "virtualdata");
+        VirSchemaTO actual = SCHEMA_SERVICE.read(SchemaType.VIRTUAL, "virtualdata");
         assertNotNull(actual);
 
         try {
@@ -136,7 +137,7 @@
 
     @Test
     public void issueSYNCOPE418() {
-        ResourceTO ws1 = resourceService.read(RESOURCE_NAME_WS1);
+        ResourceTO ws1 = RESOURCE_SERVICE.read(RESOURCE_NAME_WS1);
         assertNotNull(ws1);
         assertEquals(1, ws1.getProvisions().size());
         assertTrue(ws1.getProvisions().get(0).getVirSchemas().isEmpty());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/GoogleMfaAuthAccountITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/GoogleMfaAuthAccountITCase.java
index 7c4aa82..21cd0d8 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/GoogleMfaAuthAccountITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/GoogleMfaAuthAccountITCase.java
@@ -48,25 +48,25 @@
 
     @BeforeEach
     public void setup() {
-        googleMfaAuthAccountService.deleteAll();
+        GOOGLE_MFA_AUTH_ACCOUNT_SERVICE.deleteAll();
     }
 
     @Test
     public void create() {
         GoogleMfaAuthAccount acct = createGoogleMfaAuthAccount();
-        assertDoesNotThrow(() -> googleMfaAuthAccountService.create(UUID.randomUUID().toString(), acct));
+        assertDoesNotThrow(() -> GOOGLE_MFA_AUTH_ACCOUNT_SERVICE.create(UUID.randomUUID().toString(), acct));
     }
 
     @Test
     public void count() {
         String owner = UUID.randomUUID().toString();
         GoogleMfaAuthAccount acct = createGoogleMfaAuthAccount();
-        googleMfaAuthAccountService.create(owner, acct);
-        PagedResult<GoogleMfaAuthAccount> list = googleMfaAuthAccountService.list();
+        GOOGLE_MFA_AUTH_ACCOUNT_SERVICE.create(owner, acct);
+        PagedResult<GoogleMfaAuthAccount> list = GOOGLE_MFA_AUTH_ACCOUNT_SERVICE.list();
         assertFalse(list.getResult().isEmpty());
         assertEquals(1, list.getTotalCount());
 
-        PagedResult<GoogleMfaAuthAccount> read = googleMfaAuthAccountService.read(owner);
+        PagedResult<GoogleMfaAuthAccount> read = GOOGLE_MFA_AUTH_ACCOUNT_SERVICE.read(owner);
         assertEquals(1, read.getTotalCount());
         assertFalse(read.getResult().isEmpty());
     }
@@ -75,23 +75,23 @@
     public void delete() {
         String owner = UUID.randomUUID().toString();
         GoogleMfaAuthAccount acct = createGoogleMfaAuthAccount();
-        googleMfaAuthAccountService.create(owner, acct);
-        googleMfaAuthAccountService.delete(owner);
-        assertThrows(SyncopeClientException.class, () -> googleMfaAuthAccountService.read(owner));
+        GOOGLE_MFA_AUTH_ACCOUNT_SERVICE.create(owner, acct);
+        GOOGLE_MFA_AUTH_ACCOUNT_SERVICE.delete(owner);
+        assertThrows(SyncopeClientException.class, () -> GOOGLE_MFA_AUTH_ACCOUNT_SERVICE.read(owner));
     }
 
     @Test
     public void update() {
         String owner = UUID.randomUUID().toString();
         GoogleMfaAuthAccount acct = createGoogleMfaAuthAccount();
-        googleMfaAuthAccountService.create(owner, acct);
-        acct = googleMfaAuthAccountService.read(acct.getId());
+        GOOGLE_MFA_AUTH_ACCOUNT_SERVICE.create(owner, acct);
+        acct = GOOGLE_MFA_AUTH_ACCOUNT_SERVICE.read(acct.getId());
         acct.setSecretKey("NewSecret");
         acct.setScratchCodes(List.of(9, 8, 7, 6, 5));
-        googleMfaAuthAccountService.update(owner, acct);
-        assertEquals(1, googleMfaAuthAccountService.list().getTotalCount());
-        acct = googleMfaAuthAccountService.read(owner).getResult().get(0);
+        GOOGLE_MFA_AUTH_ACCOUNT_SERVICE.update(owner, acct);
+        assertEquals(1, GOOGLE_MFA_AUTH_ACCOUNT_SERVICE.list().getTotalCount());
+        acct = GOOGLE_MFA_AUTH_ACCOUNT_SERVICE.read(owner).getResult().get(0);
         assertEquals(acct.getSecretKey(), acct.getSecretKey());
-        googleMfaAuthAccountService.delete(owner);
+        GOOGLE_MFA_AUTH_ACCOUNT_SERVICE.delete(owner);
     }
 }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/GoogleMfaAuthTokenITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/GoogleMfaAuthTokenITCase.java
index 7d4776c..759301d 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/GoogleMfaAuthTokenITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/GoogleMfaAuthTokenITCase.java
@@ -20,9 +20,9 @@
 
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.security.SecureRandom;
 import java.time.LocalDateTime;
@@ -46,71 +46,71 @@
 
     @BeforeEach
     public void setup() {
-        googleMfaAuthTokenService.delete((LocalDateTime) null);
+        GOOGLE_MFA_AUTH_TOKEN_SERVICE.delete((LocalDateTime) null);
     }
 
     @Test
     public void create() {
         GoogleMfaAuthToken token = createGoogleMfaAuthToken();
-        assertDoesNotThrow(() -> googleMfaAuthTokenService.store(UUID.randomUUID().toString(), token));
+        assertDoesNotThrow(() -> GOOGLE_MFA_AUTH_TOKEN_SERVICE.store(UUID.randomUUID().toString(), token));
     }
 
     @Test
     public void count() {
         String owner = UUID.randomUUID().toString();
         GoogleMfaAuthToken token = createGoogleMfaAuthToken();
-        googleMfaAuthTokenService.store(owner, token);
-        assertEquals(1, googleMfaAuthTokenService.list().getTotalCount());
-        assertEquals(1, googleMfaAuthTokenService.read(owner).getTotalCount());
+        GOOGLE_MFA_AUTH_TOKEN_SERVICE.store(owner, token);
+        assertEquals(1, GOOGLE_MFA_AUTH_TOKEN_SERVICE.list().getTotalCount());
+        assertEquals(1, GOOGLE_MFA_AUTH_TOKEN_SERVICE.read(owner).getTotalCount());
     }
 
     @Test
     public void verifyProfile() {
         String owner = UUID.randomUUID().toString();
         GoogleMfaAuthToken token = createGoogleMfaAuthToken();
-        googleMfaAuthTokenService.store(owner, token);
-        PagedResult<AuthProfileTO> results = authProfileService.list(1, 100);
+        GOOGLE_MFA_AUTH_TOKEN_SERVICE.store(owner, token);
+        PagedResult<AuthProfileTO> results = AUTH_PROFILE_SERVICE.list(1, 100);
         assertFalse(results.getResult().isEmpty());
         AuthProfileTO profileTO = results.getResult().stream().
                 filter(p -> owner.equals(p.getOwner())).findFirst().get();
-        assertEquals(profileTO, authProfileService.read(profileTO.getKey()));
-        authProfileService.delete(profileTO.getKey());
-        assertThrows(SyncopeClientException.class, () -> authProfileService.read(profileTO.getKey()));
+        assertEquals(profileTO, AUTH_PROFILE_SERVICE.read(profileTO.getKey()));
+        AUTH_PROFILE_SERVICE.delete(profileTO.getKey());
+        assertThrows(SyncopeClientException.class, () -> AUTH_PROFILE_SERVICE.read(profileTO.getKey()));
     }
 
     @Test
     public void deleteByToken() {
         String owner = UUID.randomUUID().toString();
         GoogleMfaAuthToken token = createGoogleMfaAuthToken();
-        googleMfaAuthTokenService.store(owner, token);
-        googleMfaAuthTokenService.delete(token.getOtp());
-        assertTrue(googleMfaAuthTokenService.read(owner).getResult().isEmpty());
+        GOOGLE_MFA_AUTH_TOKEN_SERVICE.store(owner, token);
+        GOOGLE_MFA_AUTH_TOKEN_SERVICE.delete(token.getOtp());
+        assertTrue(GOOGLE_MFA_AUTH_TOKEN_SERVICE.read(owner).getResult().isEmpty());
     }
 
     @Test
     public void delete() {
         String owner = UUID.randomUUID().toString();
         GoogleMfaAuthToken token = createGoogleMfaAuthToken();
-        googleMfaAuthTokenService.store(owner, token);
-        googleMfaAuthTokenService.delete(owner);
-        assertTrue(googleMfaAuthTokenService.read(owner).getResult().isEmpty());
+        GOOGLE_MFA_AUTH_TOKEN_SERVICE.store(owner, token);
+        GOOGLE_MFA_AUTH_TOKEN_SERVICE.delete(owner);
+        assertTrue(GOOGLE_MFA_AUTH_TOKEN_SERVICE.read(owner).getResult().isEmpty());
     }
 
     @Test
     public void deleteByOwnerAndToken() {
         String owner = UUID.randomUUID().toString();
         GoogleMfaAuthToken token = createGoogleMfaAuthToken();
-        googleMfaAuthTokenService.store(owner, token);
-        googleMfaAuthTokenService.delete(owner, token.getOtp());
-        assertTrue(googleMfaAuthTokenService.read(owner).getResult().isEmpty());
+        GOOGLE_MFA_AUTH_TOKEN_SERVICE.store(owner, token);
+        GOOGLE_MFA_AUTH_TOKEN_SERVICE.delete(owner, token.getOtp());
+        assertTrue(GOOGLE_MFA_AUTH_TOKEN_SERVICE.read(owner).getResult().isEmpty());
     }
 
     @Test
     public void deleteByDate() {
         String owner = UUID.randomUUID().toString();
         createGoogleMfaAuthToken();
-        googleMfaAuthTokenService.delete(LocalDateTime.now().minusDays(1));
-        assertTrue(googleMfaAuthTokenService.read(owner).getResult().isEmpty());
-        assertEquals(0, googleMfaAuthTokenService.read(owner).getTotalCount());
+        GOOGLE_MFA_AUTH_TOKEN_SERVICE.delete(LocalDateTime.now().minusDays(1));
+        assertTrue(GOOGLE_MFA_AUTH_TOKEN_SERVICE.read(owner).getResult().isEmpty());
+        assertEquals(0, GOOGLE_MFA_AUTH_TOKEN_SERVICE.read(owner).getTotalCount());
     }
 }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/ImpersonationITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/ImpersonationITCase.java
index cb21e56..4984c70 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/ImpersonationITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/ImpersonationITCase.java
@@ -31,12 +31,12 @@
         String owner = getUUIDString();
         ImpersonationAccount account = new ImpersonationAccount.Builder().impersonated(getUUIDString()).build();
 
-        impersonationService.create(owner, account);
+        IMPERSONATION_SERVICE.create(owner, account);
 
-        assertTrue(impersonationService.read(owner).contains(account));
+        assertTrue(IMPERSONATION_SERVICE.read(owner).contains(account));
 
-        impersonationService.delete(owner, account.getImpersonated());
+        IMPERSONATION_SERVICE.delete(owner, account.getImpersonated());
 
-        assertTrue(impersonationService.read(owner).isEmpty());
+        assertTrue(IMPERSONATION_SERVICE.read(owner).isEmpty());
     }
 }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/U2FRegistrationITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/U2FRegistrationITCase.java
index 1197e1c..0a5bc91 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/U2FRegistrationITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/U2FRegistrationITCase.java
@@ -47,12 +47,12 @@
 
     @BeforeEach
     public void setup() {
-        u2fRegistrationService.delete(new U2FDeviceQuery.Builder().build());
+        U2F_REGISTRATION_SERVICE.delete(new U2FDeviceQuery.Builder().build());
     }
 
     @Test
     public void create() {
-        assertDoesNotThrow(() -> u2fRegistrationService.create(
+        assertDoesNotThrow(() -> U2F_REGISTRATION_SERVICE.create(
                 UUID.randomUUID().toString(), createDeviceRegistration()));
     }
 
@@ -60,17 +60,17 @@
     public void count() {
         String owner = UUID.randomUUID().toString();
         U2FDevice device = createDeviceRegistration();
-        u2fRegistrationService.create(owner, device);
+        U2F_REGISTRATION_SERVICE.create(owner, device);
 
-        List<U2FDevice> devices = u2fRegistrationService.search(new U2FDeviceQuery.Builder().
+        List<U2FDevice> devices = U2F_REGISTRATION_SERVICE.search(new U2FDeviceQuery.Builder().
                 owner(owner).
                 expirationDate(OffsetDateTime.now().minusDays(1)).
                 build()).getResult();
         assertEquals(1, devices.size());
 
-        u2fRegistrationService.delete(new U2FDeviceQuery.Builder().id(device.getId()).build());
+        U2F_REGISTRATION_SERVICE.delete(new U2FDeviceQuery.Builder().id(device.getId()).build());
 
-        devices = u2fRegistrationService.search(new U2FDeviceQuery.Builder().build()).getResult();
+        devices = U2F_REGISTRATION_SERVICE.search(new U2FDeviceQuery.Builder().build()).getResult();
         assertTrue(devices.isEmpty());
     }
 
@@ -78,17 +78,17 @@
     public void delete() {
         U2FDevice device = createDeviceRegistration();
         String owner = UUID.randomUUID().toString();
-        u2fRegistrationService.create(owner, device);
+        U2F_REGISTRATION_SERVICE.create(owner, device);
 
-        u2fRegistrationService.delete(new U2FDeviceQuery.Builder().owner(owner).build());
-        assertTrue(u2fRegistrationService.search(
+        U2F_REGISTRATION_SERVICE.delete(new U2FDeviceQuery.Builder().owner(owner).build());
+        assertTrue(U2F_REGISTRATION_SERVICE.search(
                 new U2FDeviceQuery.Builder().owner(owner).build()).getResult().isEmpty());
 
         OffsetDateTime date = OffsetDateTime.now().plusDays(1);
 
-        u2fRegistrationService.delete(new U2FDeviceQuery.Builder().expirationDate(date).build());
+        U2F_REGISTRATION_SERVICE.delete(new U2FDeviceQuery.Builder().expirationDate(date).build());
 
-        assertTrue(u2fRegistrationService.search(
+        assertTrue(U2F_REGISTRATION_SERVICE.search(
                 new U2FDeviceQuery.Builder().expirationDate(date).build()).getResult().isEmpty());
     }
 }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/WAClientAppITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/WAClientAppITCase.java
index 43677ad..ff197fc 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/WAClientAppITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/WAClientAppITCase.java
@@ -33,65 +33,65 @@
 import org.apache.syncope.common.lib.policy.AuthPolicyTO;
 import org.apache.syncope.common.lib.to.AuthModuleTO;
 import org.apache.syncope.common.lib.to.ItemTO;
-import org.apache.syncope.common.lib.wa.WAClientApp;
 import org.apache.syncope.common.lib.to.OIDCRPClientAppTO;
 import org.apache.syncope.common.lib.to.SAML2SPClientAppTO;
 import org.apache.syncope.common.lib.types.ClientAppType;
 import org.apache.syncope.common.lib.types.PolicyType;
+import org.apache.syncope.common.lib.wa.WAClientApp;
+import org.apache.syncope.common.rest.api.service.wa.WAClientAppService;
 import org.apache.syncope.fit.AbstractITCase;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.apache.syncope.common.rest.api.service.wa.WAClientAppService;
 
 public class WAClientAppITCase extends AbstractITCase {
 
     private static final String AUTH_MODULE = "DefaultJDBCAuthModule";
 
-    private static WAClientAppService waClientAppService;
+    private static WAClientAppService WA_CLIENT_APP_SERVICE;
 
     @BeforeAll
     public static void setup() {
-        assumeTrue(clientFactory.getContentType() == SyncopeClientFactoryBean.ContentType.JSON);
+        assumeTrue(CLIENT_FACTORY.getContentType() == SyncopeClientFactoryBean.ContentType.JSON);
 
-        SyncopeClient anonymous = clientFactory.create(
+        SyncopeClient anonymous = CLIENT_FACTORY.create(
                 new AnonymousAuthenticationHandler(ANONYMOUS_UNAME, ANONYMOUS_KEY));
-        waClientAppService = anonymous.getService(WAClientAppService.class);
+        WA_CLIENT_APP_SERVICE = anonymous.getService(WAClientAppService.class);
     }
 
     @Test
     public void list() {
         createClientApp(ClientAppType.OIDCRP, buildOIDCRP());
 
-        List<WAClientApp> list = waClientAppService.list();
+        List<WAClientApp> list = WA_CLIENT_APP_SERVICE.list();
         assertFalse(list.isEmpty());
     }
 
     @Test
     public void read() {
         OIDCRPClientAppTO oidcrpto = createClientApp(ClientAppType.OIDCRP, buildOIDCRP());
-        WAClientApp waClientApp = waClientAppService.read(oidcrpto.getClientAppId(), null);
+        WAClientApp waClientApp = WA_CLIENT_APP_SERVICE.read(oidcrpto.getClientAppId(), null);
         assertNotNull(waClientApp);
 
-        waClientApp = waClientAppService.read(oidcrpto.getClientAppId(), ClientAppType.OIDCRP);
+        waClientApp = WA_CLIENT_APP_SERVICE.read(oidcrpto.getClientAppId(), ClientAppType.OIDCRP);
         assertNotNull(waClientApp);
 
-        waClientApp = waClientAppService.read(oidcrpto.getName(), null);
+        waClientApp = WA_CLIENT_APP_SERVICE.read(oidcrpto.getName(), null);
         assertNotNull(waClientApp);
 
-        waClientApp = waClientAppService.read(oidcrpto.getName(), ClientAppType.OIDCRP);
+        waClientApp = WA_CLIENT_APP_SERVICE.read(oidcrpto.getName(), ClientAppType.OIDCRP);
         assertNotNull(waClientApp);
 
         SAML2SPClientAppTO samlspto = createClientApp(ClientAppType.SAML2SP, buildSAML2SP());
-        WAClientApp registeredSamlClientApp = waClientAppService.read(samlspto.getClientAppId(), null);
+        WAClientApp registeredSamlClientApp = WA_CLIENT_APP_SERVICE.read(samlspto.getClientAppId(), null);
         assertNotNull(registeredSamlClientApp);
 
-        registeredSamlClientApp = waClientAppService.read(samlspto.getClientAppId(), ClientAppType.SAML2SP);
+        registeredSamlClientApp = WA_CLIENT_APP_SERVICE.read(samlspto.getClientAppId(), ClientAppType.SAML2SP);
         assertNotNull(registeredSamlClientApp);
 
-        registeredSamlClientApp = waClientAppService.read(samlspto.getName(), null);
+        registeredSamlClientApp = WA_CLIENT_APP_SERVICE.read(samlspto.getName(), null);
         assertNotNull(registeredSamlClientApp);
 
-        registeredSamlClientApp = waClientAppService.read(samlspto.getName(), ClientAppType.SAML2SP);
+        registeredSamlClientApp = WA_CLIENT_APP_SERVICE.read(samlspto.getName(), ClientAppType.SAML2SP);
         assertNotNull(registeredSamlClientApp);
     }
 
@@ -111,14 +111,14 @@
 
         oidcrpto = createClientApp(ClientAppType.OIDCRP, oidcrpto);
 
-        WAClientApp waClientApp = waClientAppService.read(oidcrpto.getClientAppId(), null);
+        WAClientApp waClientApp = WA_CLIENT_APP_SERVICE.read(oidcrpto.getClientAppId(), null);
         assertNotNull(waClientApp);
         assertTrue(waClientApp.getReleaseAttrs().isEmpty());
 
         // add items to the authentication module
         addItems();
         try {
-            waClientApp = waClientAppService.read(oidcrpto.getClientAppId(), null);
+            waClientApp = WA_CLIENT_APP_SERVICE.read(oidcrpto.getClientAppId(), null);
             assertNotNull(waClientApp);
             assertFalse(waClientApp.getReleaseAttrs().isEmpty());
             assertEquals("username", waClientApp.getReleaseAttrs().get("uid"));
@@ -129,7 +129,7 @@
     }
 
     private void addItems() {
-        AuthModuleTO authModuleTO = authModuleService.read(AUTH_MODULE);
+        AuthModuleTO authModuleTO = AUTH_MODULE_SERVICE.read(AUTH_MODULE);
 
         ItemTO keyMapping = new ItemTO();
         keyMapping.setIntAttrName("uid");
@@ -141,19 +141,19 @@
         fullnameMapping.setExtAttrName("fullname");
         authModuleTO.add(fullnameMapping);
 
-        authModuleService.update(authModuleTO);
+        AUTH_MODULE_SERVICE.update(authModuleTO);
 
-        authModuleTO = authModuleService.read(AUTH_MODULE);
+        authModuleTO = AUTH_MODULE_SERVICE.read(AUTH_MODULE);
         assertFalse(authModuleTO.getItems().isEmpty());
     }
 
     private void removeItems() {
-        AuthModuleTO authModuleTO = authModuleService.read(AUTH_MODULE);
+        AuthModuleTO authModuleTO = AUTH_MODULE_SERVICE.read(AUTH_MODULE);
         authModuleTO.getItems().clear();
 
-        authModuleService.update(authModuleTO);
+        AUTH_MODULE_SERVICE.update(authModuleTO);
 
-        authModuleTO = authModuleService.read(AUTH_MODULE);
+        authModuleTO = AUTH_MODULE_SERVICE.read(AUTH_MODULE);
         assertTrue(authModuleTO.getItems().isEmpty());
     }
 }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/WAConfigITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/WAConfigITCase.java
index 54cafbe..ad82cf4 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/WAConfigITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/WAConfigITCase.java
@@ -35,24 +35,24 @@
 
     private static Attr runTest(final List<String> initialValue, final List<String> updatedValue) {
         Attr config = new Attr.Builder(UUID.randomUUID().toString()).values(initialValue).build();
-        waConfigService.set(config);
+        WA_CONFIG_SERVICE.set(config);
 
-        assertFalse(waConfigService.list().isEmpty());
+        assertFalse(WA_CONFIG_SERVICE.list().isEmpty());
 
-        config = waConfigService.get(config.getSchema());
+        config = WA_CONFIG_SERVICE.get(config.getSchema());
         assertNotNull(config);
 
         config = new Attr.Builder(config.getSchema()).values(updatedValue).build();
-        waConfigService.set(config);
+        WA_CONFIG_SERVICE.set(config);
 
-        Attr updatedTO = waConfigService.get(config.getSchema());
+        Attr updatedTO = WA_CONFIG_SERVICE.get(config.getSchema());
         updatedTO.getValues().stream().allMatch(((Collection) updatedValue)::contains);
         return updatedTO;
     }
 
     private static <T extends Serializable> void deleteEntry(final Attr configTO) {
-        waConfigService.delete(configTO.getSchema());
-        assertThrows(SyncopeClientException.class, () -> waConfigService.get(configTO.getSchema()));
+        WA_CONFIG_SERVICE.delete(configTO.getSchema());
+        assertThrows(SyncopeClientException.class, () -> WA_CONFIG_SERVICE.get(configTO.getSchema()));
     }
 
     @Test
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/WebAuthnAccountITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/WebAuthnAccountITCase.java
index 3026b21..cb27db4 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/WebAuthnAccountITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/wa/WebAuthnAccountITCase.java
@@ -55,33 +55,33 @@
     public void listAndFind() {
         String owner = UUID.randomUUID().toString();
         WebAuthnAccount acct = createWebAuthnRegisteredAccount();
-        webAuthnRegistrationService.create(owner, acct);
-        assertFalse(webAuthnRegistrationService.list().isEmpty());
-        assertNotNull(webAuthnRegistrationService.read(owner));
+        WEBAUTHN_REGISTRATION_SERVICE.create(owner, acct);
+        assertFalse(WEBAUTHN_REGISTRATION_SERVICE.list().isEmpty());
+        assertNotNull(WEBAUTHN_REGISTRATION_SERVICE.read(owner));
     }
 
     @Test
     public void deleteByOwner() {
         String owner = UUID.randomUUID().toString();
         WebAuthnAccount acct = createWebAuthnRegisteredAccount();
-        webAuthnRegistrationService.create(owner, acct);
-        webAuthnRegistrationService.delete(owner);
-        assertTrue(webAuthnRegistrationService.read(owner).getCredentials().isEmpty());
+        WEBAUTHN_REGISTRATION_SERVICE.create(owner, acct);
+        WEBAUTHN_REGISTRATION_SERVICE.delete(owner);
+        assertTrue(WEBAUTHN_REGISTRATION_SERVICE.read(owner).getCredentials().isEmpty());
     }
 
     @Test
     public void deleteByAcct() {
         String owner = UUID.randomUUID().toString();
         WebAuthnAccount acct = createWebAuthnRegisteredAccount();
-        webAuthnRegistrationService.create(owner, acct);
-        webAuthnRegistrationService.delete(owner, acct.getCredentials().get(0).getIdentifier());
-        acct = webAuthnRegistrationService.read(owner);
+        WEBAUTHN_REGISTRATION_SERVICE.create(owner, acct);
+        WEBAUTHN_REGISTRATION_SERVICE.delete(owner, acct.getCredentials().get(0).getIdentifier());
+        acct = WEBAUTHN_REGISTRATION_SERVICE.read(owner);
         assertTrue(acct.getCredentials().isEmpty());
     }
 
     @Test
     public void create() {
         WebAuthnAccount acct = createWebAuthnRegisteredAccount();
-        assertDoesNotThrow(() -> webAuthnRegistrationService.create(UUID.randomUUID().toString(), acct));
+        assertDoesNotThrow(() -> WEBAUTHN_REGISTRATION_SERVICE.create(UUID.randomUUID().toString(), acct));
     }
 }
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/enduser/AbstractEnduserITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/enduser/AbstractEnduserITCase.java
index 1603e91..5f0f7e5 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/enduser/AbstractEnduserITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/enduser/AbstractEnduserITCase.java
@@ -28,6 +28,10 @@
 import java.io.InputStream;
 import java.time.OffsetDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Locale;
+import java.util.Properties;
+import org.apache.syncope.client.enduser.EnduserProperties;
 import org.apache.syncope.client.enduser.SyncopeWebApplication;
 import org.apache.syncope.client.enduser.commons.PreviewUtils;
 import org.apache.syncope.client.enduser.init.ClassPathScanImplementationLookup;
@@ -46,6 +50,7 @@
 import org.apache.syncope.common.rest.api.service.SyncopeService;
 import org.apache.syncope.common.rest.api.service.UserService;
 import org.apache.syncope.fit.AbstractUIITCase;
+import org.apache.syncope.fit.console.AbstractConsoleITCase;
 import org.apache.wicket.util.tester.FormTester;
 import org.apache.wicket.util.tester.WicketTester;
 import org.junit.jupiter.api.AfterAll;
@@ -54,11 +59,6 @@
 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import java.util.List;
-import java.util.Locale;
-import java.util.Properties;
-import org.apache.syncope.client.enduser.EnduserProperties;
-import org.apache.syncope.fit.console.AbstractConsoleITCase;
 import org.springframework.test.context.support.TestPropertySourceUtils;
 
 public abstract class AbstractEnduserITCase extends AbstractUIITCase {
@@ -126,13 +126,13 @@
         }
     }
 
-    protected static SyncopeClientFactoryBean clientFactory;
+    protected static SyncopeClientFactoryBean CLIENT_FACTORY;
 
-    protected static SyncopeClient adminClient;
+    protected static SyncopeClient ADMIN_CLIENT;
 
-    protected static UserService userService;
+    protected static UserService USER_SERVICE;
 
-    protected static SecurityQuestionService securityQuestionService;
+    protected static SecurityQuestionService SECURITY_QUESTION_SERVICE;
 
     @BeforeAll
     public static void setUp() {
@@ -177,15 +177,15 @@
 
     @BeforeAll
     public static void restSetup() {
-        clientFactory = new SyncopeClientFactoryBean().setAddress(ADDRESS);
-        LOG.info("Performing IT with content type {}", clientFactory.getContentType().getMediaType());
+        CLIENT_FACTORY = new SyncopeClientFactoryBean().setAddress(ADDRESS);
+        LOG.info("Performing IT with content type {}", CLIENT_FACTORY.getContentType().getMediaType());
 
-        adminClient = clientFactory.create(ADMIN_UNAME, ADMIN_PWD);
+        ADMIN_CLIENT = CLIENT_FACTORY.create(ADMIN_UNAME, ADMIN_PWD);
 
-        userService = adminClient.getService(UserService.class);
+        USER_SERVICE = ADMIN_CLIENT.getService(UserService.class);
 
         // create test user for must change password
-        userService.create(new UserCR.Builder(SyncopeConstants.ROOT_REALM, "mustchangepassword").
+        USER_SERVICE.create(new UserCR.Builder(SyncopeConstants.ROOT_REALM, "mustchangepassword").
                 password("password123").
                 mustChangePassword(true).
                 plainAttr(attr("fullname", "mustchangepassword@apache.org")).
@@ -198,7 +198,7 @@
                 build());
 
         // create test user for self password reset
-        userService.create(new UserCR.Builder(SyncopeConstants.ROOT_REALM, "selfpwdreset").
+        USER_SERVICE.create(new UserCR.Builder(SyncopeConstants.ROOT_REALM, "selfpwdreset").
                 password("password123").
                 plainAttr(attr("fullname", "selfpwdreset@apache.org")).
                 plainAttr(attr("firstname", "selfpwdreset@apache.org")).
@@ -210,7 +210,7 @@
                 build());
 
         // create test user for self update
-        userService.create(new UserCR.Builder(SyncopeConstants.ROOT_REALM, "selfupdate").
+        USER_SERVICE.create(new UserCR.Builder(SyncopeConstants.ROOT_REALM, "selfupdate").
                 password("password123").
                 plainAttr(attr("fullname", "selfupdate@apache.org")).
                 plainAttr(attr("firstname", "selfupdate@apache.org")).
@@ -219,17 +219,17 @@
                 plainAttr(attr("userId", "selfupdate@apache.org")).
                 build());
 
-        securityQuestionService = adminClient.getService(SecurityQuestionService.class);
+        SECURITY_QUESTION_SERVICE = ADMIN_CLIENT.getService(SecurityQuestionService.class);
     }
 
     @AfterAll
     public static void cleanUp() {
-        userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+        USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                 fiql(SyncopeClient.getUserSearchConditionBuilder().
                         is("username").equalTo("selfupdate").
                         or("username").equalTo("selfpwdreset").
                         or("username").equalTo("mustchangepassword").query()).
-                build()).getResult().forEach(user -> userService.delete(user.getKey()));
+                build()).getResult().forEach(user -> USER_SERVICE.delete(user.getKey()));
     }
 
     protected static void doLogin(final String user, final String passwd) {
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/enduser/AnonymousITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/enduser/AnonymousITCase.java
index 02f55a6..bffe71e 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/enduser/AnonymousITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/enduser/AnonymousITCase.java
@@ -78,17 +78,17 @@
 
             TESTER.assertRenderedPage(SelfResult.class);
 
-            assertFalse(userService.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
+            assertFalse(USER_SERVICE.search(new AnyQuery.Builder().realm(SyncopeConstants.ROOT_REALM).
                     fiql(SyncopeClient.getUserSearchConditionBuilder().is("username").equalTo(username).query()).
                     build()).getResult().isEmpty());
 
-            assertNotNull(userService.read(username));
+            assertNotNull(USER_SERVICE.read(username));
 
             TESTER.cleanupFeedbackMessages();
         } finally {
             // cleanup
             try {
-                userService.delete(username);
+                USER_SERVICE.delete(username);
             } catch (Exception e) {
                 // ignore
             }
@@ -97,10 +97,10 @@
 
     @Test
     public void selfPasswordReset() {
-        SecurityQuestionTO question = securityQuestionService.read("887028ea-66fc-41e7-b397-620d7ea6dfbb");
+        SecurityQuestionTO question = SECURITY_QUESTION_SERVICE.read("887028ea-66fc-41e7-b397-620d7ea6dfbb");
 
-        UserTO selfpwdreset = userService.read("selfpwdreset");
-        userService.update(new UserUR.Builder(selfpwdreset.getKey()).
+        UserTO selfpwdreset = USER_SERVICE.read("selfpwdreset");
+        USER_SERVICE.update(new UserUR.Builder(selfpwdreset.getKey()).
                 securityQuestion(new StringReplacePatchItem.Builder().value(question.getKey()).build()).
                 securityAnswer(new StringReplacePatchItem.Builder().value("ananswer").build()).
                 build());
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/enduser/AuthenticatedITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/enduser/AuthenticatedITCase.java
index 7da6a5b..086463f 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/enduser/AuthenticatedITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/enduser/AuthenticatedITCase.java
@@ -52,8 +52,8 @@
 
     @Test
     public void mustChangePassword() {
-        UserTO mustchangepassword = userService.read("mustchangepassword");
-        userService.update(new UserUR.Builder(mustchangepassword.getKey()).
+        UserTO mustchangepassword = USER_SERVICE.read("mustchangepassword");
+        USER_SERVICE.update(new UserUR.Builder(mustchangepassword.getKey()).
                 mustChangePassword(new BooleanReplacePatchItem.Builder().value(Boolean.TRUE).build()).build());
 
         TESTER.startPage(Login.class);
@@ -112,9 +112,9 @@
 
         TESTER.assertRenderedPage(SelfResult.class);
 
-        assertEquals(FlowableDetector.isFlowableEnabledForUserWorkflow(adminClient.platform())
-                ? "active" : "created", userService.read(username).getStatus());
-        assertEquals(newEmail, userService.read(username).getPlainAttr("email").get().getValues().get(0));
+        assertEquals(FlowableDetector.isFlowableEnabledForUserWorkflow(ADMIN_CLIENT.platform())
+                ? "active" : "created", USER_SERVICE.read(username).getStatus());
+        assertEquals(newEmail, USER_SERVICE.read(username).getPlainAttr("email").get().getValues().get(0));
 
         TESTER.cleanupFeedbackMessages();
     }
diff --git a/fit/wa-reference/src/test/java/org/apache/syncope/fit/AbstractITCase.java b/fit/wa-reference/src/test/java/org/apache/syncope/fit/AbstractITCase.java
index 5de1e35..3959370 100644
--- a/fit/wa-reference/src/test/java/org/apache/syncope/fit/AbstractITCase.java
+++ b/fit/wa-reference/src/test/java/org/apache/syncope/fit/AbstractITCase.java
@@ -55,7 +55,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class AbstractITCase {
+public abstract class AbstractITCase {
 
     protected static final Logger LOG = LoggerFactory.getLogger(AbstractSRAITCase.class);
 
@@ -73,38 +73,38 @@
 
     protected static final String EN_LANGUAGE = "en-US,en;q=0.5";
 
-    protected static SyncopeClientFactoryBean clientFactory;
+    protected static SyncopeClientFactoryBean CLIENT_FACTORY;
 
-    protected static SyncopeClient adminClient;
+    protected static SyncopeClient ADMIN_CLIENT;
 
-    protected static UserService userService;
+    protected static UserService USER_SERVICE;
 
-    protected static PolicyService policyService;
+    protected static PolicyService POLICY_SERVICE;
 
-    protected static ClientAppService clientAppService;
+    protected static ClientAppService CLIENT_APP_SERVICE;
 
-    protected static SRARouteService sraRouteService;
+    protected static SRARouteService SRA_ROUTE_SERVICE;
 
-    protected static SAML2SP4UIIdPService saml2sp4UIIdPService;
+    protected static SAML2SP4UIIdPService SAML2SP4UI_IDP_SERVICE;
 
-    protected static OIDCC4UIProviderService oidcProviderService;
+    protected static OIDCC4UIProviderService OIDCC4UI_PROVIDER_SERVICE;
 
     @BeforeAll
     public static void restSetup() {
-        clientFactory = new SyncopeClientFactoryBean().setAddress(CORE_ADDRESS);
-        adminClient = clientFactory.create(ADMIN_UNAME, ADMIN_PWD);
+        CLIENT_FACTORY = new SyncopeClientFactoryBean().setAddress(CORE_ADDRESS);
+        ADMIN_CLIENT = CLIENT_FACTORY.create(ADMIN_UNAME, ADMIN_PWD);
 
-        userService = adminClient.getService(UserService.class);
-        policyService = adminClient.getService(PolicyService.class);
-        clientAppService = adminClient.getService(ClientAppService.class);
-        sraRouteService = adminClient.getService(SRARouteService.class);
-        saml2sp4UIIdPService = adminClient.getService(SAML2SP4UIIdPService.class);
-        oidcProviderService = adminClient.getService(OIDCC4UIProviderService.class);
+        USER_SERVICE = ADMIN_CLIENT.getService(UserService.class);
+        POLICY_SERVICE = ADMIN_CLIENT.getService(PolicyService.class);
+        CLIENT_APP_SERVICE = ADMIN_CLIENT.getService(ClientAppService.class);
+        SRA_ROUTE_SERVICE = ADMIN_CLIENT.getService(SRARouteService.class);
+        SAML2SP4UI_IDP_SERVICE = ADMIN_CLIENT.getService(SAML2SP4UIIdPService.class);
+        OIDCC4UI_PROVIDER_SERVICE = ADMIN_CLIENT.getService(OIDCC4UIProviderService.class);
     }
 
     @BeforeAll
     public static void waitForWARefresh() {
-        SAML2IdPEntityService samlIdPEntityService = adminClient.getService(SAML2IdPEntityService.class);
+        SAML2IdPEntityService samlIdPEntityService = ADMIN_CLIENT.getService(SAML2IdPEntityService.class);
 
         await().atMost(50, TimeUnit.SECONDS).pollInterval(1, TimeUnit.SECONDS).until(() -> {
             boolean refreshed = false;
diff --git a/fit/wa-reference/src/test/java/org/apache/syncope/fit/sra/AbstractSRAITCase.java b/fit/wa-reference/src/test/java/org/apache/syncope/fit/sra/AbstractSRAITCase.java
index 8701978..51758a9 100644
--- a/fit/wa-reference/src/test/java/org/apache/syncope/fit/sra/AbstractSRAITCase.java
+++ b/fit/wa-reference/src/test/java/org/apache/syncope/fit/sra/AbstractSRAITCase.java
@@ -77,7 +77,7 @@
 
     @BeforeAll
     public static void sraRouteSetup() {
-        sraRouteService.list().forEach(route -> sraRouteService.delete(route.getKey()));
+        SRA_ROUTE_SERVICE.list().forEach(route -> SRA_ROUTE_SERVICE.delete(route.getKey()));
 
         SRARouteTO publicRoute = new SRARouteTO();
         publicRoute.setName("public");
@@ -89,7 +89,7 @@
         publicRoute.getFilters().add(new SRARouteFilter.Builder().
                 factory(SRARouteFilterFactory.SET_PATH).args("/{segment}").build());
 
-        Response response = sraRouteService.create(publicRoute);
+        Response response = SRA_ROUTE_SERVICE.create(publicRoute);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
             fail("Could not create public SRA Route");
         }
@@ -104,7 +104,7 @@
         protectedRoute.getFilters().add(new SRARouteFilter.Builder().
                 factory(SRARouteFilterFactory.SET_PATH).args("/{segment}").build());
 
-        response = sraRouteService.create(protectedRoute);
+        response = SRA_ROUTE_SERVICE.create(protectedRoute);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
             fail("Could not create protected SRA Route");
         }
@@ -118,7 +118,7 @@
                 factory(SRARoutePredicateFactory.PATH).args("/protected/logout").build());
         logoutRoute.setOrder(-1);
 
-        response = sraRouteService.create(logoutRoute);
+        response = SRA_ROUTE_SERVICE.create(logoutRoute);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
             fail("Could not create logout SRA Route");
         }
@@ -135,7 +135,7 @@
                 factory(SRARouteFilterFactory.SET_RESPONSE_HEADER).args(LOGGED_OUT_HEADER + ", true").build());
         postLogout.setOrder(-10);
 
-        response = sraRouteService.create(postLogout);
+        response = SRA_ROUTE_SERVICE.create(postLogout);
         if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
             fail("Could not create logout SRA Route");
         }
@@ -200,7 +200,7 @@
         });
         assertDoesNotThrow(() -> WebClient.create(SRA_ADDRESS).get().getStatus());
 
-        sraRouteService.pushToSRA();
+        SRA_ROUTE_SERVICE.pushToSRA();
     }
 
     @AfterAll
@@ -215,7 +215,7 @@
         String authModule = "DefaultSyncopeAuthModule";
         String description = "SRA auth policy";
 
-        return policyService.list(PolicyType.AUTH).stream().
+        return POLICY_SERVICE.list(PolicyType.AUTH).stream().
                 map(AuthPolicyTO.class::cast).
                 filter(policy -> description.equals(policy.getName())
                 && policy.getConf() instanceof DefaultAuthPolicyConf
@@ -229,12 +229,12 @@
                     policy.setName(description);
                     policy.setConf(policyConf);
 
-                    Response response = policyService.create(PolicyType.AUTH, policy);
+                    Response response = POLICY_SERVICE.create(PolicyType.AUTH, policy);
                     if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
                         fail("Could not create Syncope Auth Policy");
                     }
 
-                    return policyService.read(PolicyType.AUTH, response.getHeaderString(RESTHeaders.RESOURCE_KEY));
+                    return POLICY_SERVICE.read(PolicyType.AUTH, response.getHeaderString(RESTHeaders.RESOURCE_KEY));
                 });
     }
 
diff --git a/fit/wa-reference/src/test/java/org/apache/syncope/fit/sra/CASSRAITCase.java b/fit/wa-reference/src/test/java/org/apache/syncope/fit/sra/CASSRAITCase.java
index c57534d..a088c07 100644
--- a/fit/wa-reference/src/test/java/org/apache/syncope/fit/sra/CASSRAITCase.java
+++ b/fit/wa-reference/src/test/java/org/apache/syncope/fit/sra/CASSRAITCase.java
@@ -63,7 +63,7 @@
     @BeforeAll
     public static void clientAppSetup() {
         String appName = CASSRAITCase.class.getName();
-        CASSPClientAppTO clientApp = clientAppService.list(ClientAppType.CASSP).stream().
+        CASSPClientAppTO clientApp = CLIENT_APP_SERVICE.list(ClientAppType.CASSP).stream().
                 filter(app -> appName.equals(app.getName())).
                 map(CASSPClientAppTO.class::cast).
                 findFirst().
@@ -73,19 +73,19 @@
                     app.setClientAppId(4L);
                     app.setServiceId("http://localhost:8080/.*");
 
-                    Response response = clientAppService.create(ClientAppType.CASSP, app);
+                    Response response = CLIENT_APP_SERVICE.create(ClientAppType.CASSP, app);
                     if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
                         fail("Could not create CAS Client App");
                     }
 
-                    return clientAppService.read(
+                    return CLIENT_APP_SERVICE.read(
                             ClientAppType.CASSP, response.getHeaderString(RESTHeaders.RESOURCE_KEY));
                 });
 
         clientApp.setAuthPolicy(getAuthPolicy().getKey());
 
-        clientAppService.update(ClientAppType.CASSP, clientApp);
-        clientAppService.pushToWA();
+        CLIENT_APP_SERVICE.update(ClientAppType.CASSP, clientApp);
+        CLIENT_APP_SERVICE.pushToWA();
     }
 
     @Test
diff --git a/fit/wa-reference/src/test/java/org/apache/syncope/fit/sra/OIDCSRAITCase.java b/fit/wa-reference/src/test/java/org/apache/syncope/fit/sra/OIDCSRAITCase.java
index bfd91d3..08f5a35 100644
--- a/fit/wa-reference/src/test/java/org/apache/syncope/fit/sra/OIDCSRAITCase.java
+++ b/fit/wa-reference/src/test/java/org/apache/syncope/fit/sra/OIDCSRAITCase.java
@@ -86,7 +86,7 @@
             final String clientId,
             final String clientSecret) {
 
-        OIDCRPClientAppTO clientApp = clientAppService.list(ClientAppType.OIDCRP).stream().
+        OIDCRPClientAppTO clientApp = CLIENT_APP_SERVICE.list(ClientAppType.OIDCRP).stream().
                 filter(app -> appName.equals(app.getName())).
                 map(OIDCRPClientAppTO.class::cast).
                 findFirst().
@@ -97,12 +97,12 @@
                     app.setClientId(clientId);
                     app.setClientSecret(clientSecret);
 
-                    Response response = clientAppService.create(ClientAppType.OIDCRP, app);
+                    Response response = CLIENT_APP_SERVICE.create(ClientAppType.OIDCRP, app);
                     if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
                         fail("Could not create OIDC Client App");
                     }
 
-                    return clientAppService.read(
+                    return CLIENT_APP_SERVICE.read(
                             ClientAppType.OIDCRP, response.getHeaderString(RESTHeaders.RESOURCE_KEY));
                 });
 
@@ -116,8 +116,8 @@
         clientApp.setSignIdToken(true);
         clientApp.setLogoutUri(SRA_ADDRESS + "/logout");
 
-        clientAppService.update(ClientAppType.OIDCRP, clientApp);
-        clientAppService.pushToWA();
+        CLIENT_APP_SERVICE.update(ClientAppType.OIDCRP, clientApp);
+        CLIENT_APP_SERVICE.pushToWA();
     }
 
     @BeforeAll
diff --git a/fit/wa-reference/src/test/java/org/apache/syncope/fit/sra/SAML2SRAITCase.java b/fit/wa-reference/src/test/java/org/apache/syncope/fit/sra/SAML2SRAITCase.java
index 10bab77..7f8091b 100644
--- a/fit/wa-reference/src/test/java/org/apache/syncope/fit/sra/SAML2SRAITCase.java
+++ b/fit/wa-reference/src/test/java/org/apache/syncope/fit/sra/SAML2SRAITCase.java
@@ -66,7 +66,7 @@
     @BeforeAll
     public static void clientAppSetup() {
         String appName = SAML2SRAITCase.class.getName();
-        SAML2SPClientAppTO clientApp = clientAppService.list(ClientAppType.SAML2SP).stream().
+        SAML2SPClientAppTO clientApp = CLIENT_APP_SERVICE.list(ClientAppType.SAML2SP).stream().
                 filter(app -> appName.equals(app.getName())).
                 map(SAML2SPClientAppTO.class::cast).
                 findFirst().
@@ -77,12 +77,12 @@
                     app.setEntityId(SRA_ADDRESS);
                     app.setMetadataLocation(SRA_ADDRESS + "/saml2/metadata");
 
-                    Response response = clientAppService.create(ClientAppType.SAML2SP, app);
+                    Response response = CLIENT_APP_SERVICE.create(ClientAppType.SAML2SP, app);
                     if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
                         fail("Could not create SAML2 Client App");
                     }
 
-                    return clientAppService.read(
+                    return CLIENT_APP_SERVICE.read(
                             ClientAppType.SAML2SP, response.getHeaderString(RESTHeaders.RESOURCE_KEY));
                 });
 
@@ -91,8 +91,8 @@
         clientApp.setRequiredNameIdFormat(SAML2SPNameId.PERSISTENT);
         clientApp.setAuthPolicy(getAuthPolicy().getKey());
 
-        clientAppService.update(ClientAppType.SAML2SP, clientApp);
-        clientAppService.pushToWA();
+        CLIENT_APP_SERVICE.update(ClientAppType.SAML2SP, clientApp);
+        CLIENT_APP_SERVICE.pushToWA();
     }
 
     @Test
diff --git a/fit/wa-reference/src/test/java/org/apache/syncope/fit/ui/AbstractUIITCase.java b/fit/wa-reference/src/test/java/org/apache/syncope/fit/ui/AbstractUIITCase.java
index f70ff39..f02e083 100644
--- a/fit/wa-reference/src/test/java/org/apache/syncope/fit/ui/AbstractUIITCase.java
+++ b/fit/wa-reference/src/test/java/org/apache/syncope/fit/ui/AbstractUIITCase.java
@@ -40,7 +40,7 @@
         String ldapAuthModule = "DefaultLDAPAuthModule";
         String description = "UI auth policy";
 
-        return policyService.list(PolicyType.AUTH).stream().
+        return POLICY_SERVICE.list(PolicyType.AUTH).stream().
                 map(AuthPolicyTO.class::cast).
                 filter(policy -> description.equals(policy.getName())
                 && policy.getConf() instanceof DefaultAuthPolicyConf
@@ -56,12 +56,12 @@
                     policy.setName(description);
                     policy.setConf(policyConf);
 
-                    Response response = policyService.create(PolicyType.AUTH, policy);
+                    Response response = POLICY_SERVICE.create(PolicyType.AUTH, policy);
                     if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
                         fail("Could not create Test Auth Policy");
                     }
 
-                    return policyService.read(PolicyType.AUTH, response.getHeaderString(RESTHeaders.RESOURCE_KEY));
+                    return POLICY_SERVICE.read(PolicyType.AUTH, response.getHeaderString(RESTHeaders.RESOURCE_KEY));
                 });
     }
 
@@ -80,14 +80,14 @@
     @Test
     public void createUnmatching() throws IOException {
         try {
-            userService.delete("pullFromLDAP");
+            USER_SERVICE.delete("pullFromLDAP");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
 
         sso(CONSOLE_ADDRESS, "pullFromLDAP", "Password123");
 
-        assertNotNull(userService.read("pullFromLDAP"));
+        assertNotNull(USER_SERVICE.read("pullFromLDAP"));
     }
 
     protected abstract void doSelfReg(Runnable runnable);
@@ -95,7 +95,7 @@
     @Test
     public void selfRegUnmatching() throws IOException {
         try {
-            userService.delete("pullFromLDAP");
+            USER_SERVICE.delete("pullFromLDAP");
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
         }
@@ -109,7 +109,7 @@
         });
 
         try {
-            userService.read("pullFromLDAP");
+            USER_SERVICE.read("pullFromLDAP");
             fail();
         } catch (SyncopeClientException e) {
             assertEquals(ClientExceptionType.NotFound, e.getType());
diff --git a/fit/wa-reference/src/test/java/org/apache/syncope/fit/ui/OIDC4UIITCase.java b/fit/wa-reference/src/test/java/org/apache/syncope/fit/ui/OIDC4UIITCase.java
index ff6b3c0..0f0b5bb 100644
--- a/fit/wa-reference/src/test/java/org/apache/syncope/fit/ui/OIDC4UIITCase.java
+++ b/fit/wa-reference/src/test/java/org/apache/syncope/fit/ui/OIDC4UIITCase.java
@@ -56,7 +56,7 @@
 public class OIDC4UIITCase extends AbstractUIITCase {
 
     private static void clientAppSetup(final String appName, final String baseAddress, final long appId) {
-        OIDCRPClientAppTO clientApp = clientAppService.list(ClientAppType.OIDCRP).stream().
+        OIDCRPClientAppTO clientApp = CLIENT_APP_SERVICE.list(ClientAppType.OIDCRP).stream().
                 filter(app -> appName.equals(app.getName())).
                 map(OIDCRPClientAppTO.class::cast).
                 findFirst().
@@ -67,12 +67,12 @@
                     app.setClientId(appName);
                     app.setClientSecret(appName);
 
-                    Response response = clientAppService.create(ClientAppType.OIDCRP, app);
+                    Response response = CLIENT_APP_SERVICE.create(ClientAppType.OIDCRP, app);
                     if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
                         fail("Could not create OIDC Client App");
                     }
 
-                    return clientAppService.read(
+                    return CLIENT_APP_SERVICE.read(
                             ClientAppType.OIDCRP, response.getHeaderString(RESTHeaders.RESOURCE_KEY));
                 });
 
@@ -86,8 +86,8 @@
         clientApp.setJwtAccessToken(true);
         clientApp.setLogoutUri(baseAddress + OIDCC4UIConstants.URL_CONTEXT + "/logout");
 
-        clientAppService.update(ClientAppType.OIDCRP, clientApp);
-        clientAppService.pushToWA();
+        CLIENT_APP_SERVICE.update(ClientAppType.OIDCRP, clientApp);
+        CLIENT_APP_SERVICE.pushToWA();
     }
 
     private static String getAppName(final String address) {
@@ -111,7 +111,7 @@
             final boolean createUnmatching,
             final boolean selfRegUnmatching) {
 
-        Optional<OIDCC4UIProviderTO> ops = oidcProviderService.list().stream().
+        Optional<OIDCC4UIProviderTO> ops = OIDCC4UI_PROVIDER_SERVICE.list().stream().
                 filter(op -> op.getName().equals(appName)).findFirst();
         if (ops.isEmpty()) {
             OIDCC4UIProviderTO cas = new OIDCC4UIProviderTO();
@@ -161,7 +161,7 @@
             item.setExtAttrName("cn");
             cas.add(item);
 
-            oidcProviderService.create(cas);
+            OIDCC4UI_PROVIDER_SERVICE.create(cas);
         }
     }
 
diff --git a/fit/wa-reference/src/test/java/org/apache/syncope/fit/ui/SAML2SP4UIITCase.java b/fit/wa-reference/src/test/java/org/apache/syncope/fit/ui/SAML2SP4UIITCase.java
index ff2ab57..67fbe27 100644
--- a/fit/wa-reference/src/test/java/org/apache/syncope/fit/ui/SAML2SP4UIITCase.java
+++ b/fit/wa-reference/src/test/java/org/apache/syncope/fit/ui/SAML2SP4UIITCase.java
@@ -19,8 +19,8 @@
 package org.apache.syncope.fit.ui;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
 import java.io.IOException;
@@ -60,7 +60,7 @@
 public class SAML2SP4UIITCase extends AbstractUIITCase {
 
     private static void clientAppSetup(final String appName, final String entityId, final long appId) {
-        SAML2SPClientAppTO clientApp = clientAppService.list(ClientAppType.SAML2SP).stream().
+        SAML2SPClientAppTO clientApp = CLIENT_APP_SERVICE.list(ClientAppType.SAML2SP).stream().
                 filter(app -> appName.equals(app.getName())).
                 map(SAML2SPClientAppTO.class::cast).
                 findFirst().
@@ -71,12 +71,12 @@
                     app.setEntityId(entityId);
                     app.setMetadataLocation(entityId + SAML2SP4UIConstants.URL_CONTEXT + "/metadata");
 
-                    Response response = clientAppService.create(ClientAppType.SAML2SP, app);
+                    Response response = CLIENT_APP_SERVICE.create(ClientAppType.SAML2SP, app);
                     if (response.getStatusInfo().getStatusCode() != Response.Status.CREATED.getStatusCode()) {
                         fail("Could not create SAML2 Client App");
                     }
 
-                    return clientAppService.read(
+                    return CLIENT_APP_SERVICE.read(
                             ClientAppType.SAML2SP, response.getHeaderString(RESTHeaders.RESOURCE_KEY));
                 });
 
@@ -85,8 +85,8 @@
         clientApp.setRequiredNameIdFormat(SAML2SPNameId.PERSISTENT);
         clientApp.setAuthPolicy(getAuthPolicy().getKey());
 
-        clientAppService.update(ClientAppType.SAML2SP, clientApp);
-        clientAppService.pushToWA();
+        CLIENT_APP_SERVICE.update(ClientAppType.SAML2SP, clientApp);
+        CLIENT_APP_SERVICE.pushToWA();
     }
 
     @BeforeAll
@@ -101,21 +101,21 @@
 
     @BeforeAll
     public static void idpSetup() {
-        WebClient.client(saml2sp4UIIdPService).
+        WebClient.client(SAML2SP4UI_IDP_SERVICE).
                 accept(MediaType.APPLICATION_XML_TYPE).
                 type(MediaType.APPLICATION_XML_TYPE);
         try {
-            saml2sp4UIIdPService.importFromMetadata(
+            SAML2SP4UI_IDP_SERVICE.importFromMetadata(
                     (InputStream) WebClient.create(WA_ADDRESS + "/idp/metadata").get().getEntity());
         } catch (SyncopeClientException e) {
             // nothing bad if already imported
         } finally {
-            WebClient.client(saml2sp4UIIdPService).
-                    accept(clientFactory.getContentType().getMediaType()).
-                    type(clientFactory.getContentType().getMediaType());
+            WebClient.client(SAML2SP4UI_IDP_SERVICE).
+                    accept(CLIENT_FACTORY.getContentType().getMediaType()).
+                    type(CLIENT_FACTORY.getContentType().getMediaType());
         }
 
-        List<SAML2SP4UIIdPTO> idps = saml2sp4UIIdPService.list();
+        List<SAML2SP4UIIdPTO> idps = SAML2SP4UI_IDP_SERVICE.list();
         assertEquals(1, idps.size());
 
         SAML2SP4UIIdPTO cas = idps.get(0);
@@ -156,7 +156,7 @@
         item.setExtAttrName("cn");
         cas.add(item);
 
-        saml2sp4UIIdPService.update(cas);
+        SAML2SP4UI_IDP_SERVICE.update(cas);
     }
 
     @Test
@@ -288,20 +288,20 @@
 
     @Override
     protected void doSelfReg(final Runnable runnable) {
-        List<SAML2SP4UIIdPTO> idps = saml2sp4UIIdPService.list();
+        List<SAML2SP4UIIdPTO> idps = SAML2SP4UI_IDP_SERVICE.list();
         assertEquals(1, idps.size());
 
         SAML2SP4UIIdPTO cas = idps.get(0);
         cas.setCreateUnmatching(false);
         cas.setSelfRegUnmatching(true);
-        saml2sp4UIIdPService.update(cas);
+        SAML2SP4UI_IDP_SERVICE.update(cas);
 
         try {
             runnable.run();
         } finally {
             cas.setCreateUnmatching(true);
             cas.setSelfRegUnmatching(false);
-            saml2sp4UIIdPService.update(cas);
+            SAML2SP4UI_IDP_SERVICE.update(cas);
         }
     }
 }
diff --git a/pom.xml b/pom.xml
index 6326845..ee51cd1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2247,6 +2247,7 @@
           <configuration>
             <configLocation>${rootpom.basedir}/src/main/resources/org/apache/syncope/checkstyle.xml</configLocation>
             <targetJdk>${targetJdk}</targetJdk>
+            <includeTestSourceDirectory>true</includeTestSourceDirectory>
           </configuration>
         </plugin>
 
diff --git a/sra/src/main/java/org/apache/syncope/sra/RouteProvider.java b/sra/src/main/java/org/apache/syncope/sra/RouteProvider.java
index 8c404ac..72c0a0d 100644
--- a/sra/src/main/java/org/apache/syncope/sra/RouteProvider.java
+++ b/sra/src/main/java/org/apache/syncope/sra/RouteProvider.java
@@ -36,6 +36,7 @@
 import org.apache.syncope.common.lib.to.SRARouteTO;
 import org.apache.syncope.common.lib.types.SRARouteFilter;
 import org.apache.syncope.common.lib.types.SRARoutePredicate;
+import org.apache.syncope.common.rest.api.service.SRARouteService;
 import org.apache.syncope.sra.filters.ClientCertsToRequestHeaderFilterFactory;
 import org.apache.syncope.sra.filters.CustomGatewayFilterFactory;
 import org.apache.syncope.sra.filters.LinkRewriteGatewayFilterFactory;
@@ -49,7 +50,9 @@
 import org.springframework.cloud.gateway.filter.factory.AddRequestHeaderGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.AddRequestParameterGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.AddResponseHeaderGatewayFilterFactory;
+import org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.FallbackHeadersGatewayFilterFactory;
+import org.springframework.cloud.gateway.filter.factory.MapRequestHeaderGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.PrefixPathGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.PreserveHostHeaderGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.RedirectToGatewayFilterFactory;
@@ -59,12 +62,14 @@
 import org.springframework.cloud.gateway.filter.factory.RequestRateLimiterGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.RequestSizeGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.RetryGatewayFilterFactory;
+import org.springframework.cloud.gateway.filter.factory.RewriteLocationResponseHeaderGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.RewritePathGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.RewriteResponseHeaderGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.SaveSessionGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.SecureHeadersGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.SetPathGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.SetRequestHeaderGatewayFilterFactory;
+import org.springframework.cloud.gateway.filter.factory.SetRequestHostHeaderGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.SetResponseHeaderGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.SetStatusGatewayFilterFactory;
 import org.springframework.cloud.gateway.filter.factory.StripPrefixGatewayFilterFactory;
@@ -81,6 +86,7 @@
 import org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory;
 import org.springframework.cloud.gateway.handler.predicate.QueryRoutePredicateFactory;
 import org.springframework.cloud.gateway.handler.predicate.RemoteAddrRoutePredicateFactory;
+import org.springframework.cloud.gateway.handler.predicate.WeightRoutePredicateFactory;
 import org.springframework.cloud.gateway.route.Route;
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.core.Ordered;
@@ -88,12 +94,6 @@
 import org.springframework.http.HttpStatus;
 import org.springframework.util.unit.DataSize;
 import org.springframework.web.server.ServerWebExchange;
-import org.apache.syncope.common.rest.api.service.SRARouteService;
-import org.springframework.cloud.gateway.filter.factory.DedupeResponseHeaderGatewayFilterFactory;
-import org.springframework.cloud.gateway.filter.factory.MapRequestHeaderGatewayFilterFactory;
-import org.springframework.cloud.gateway.filter.factory.RewriteLocationResponseHeaderGatewayFilterFactory;
-import org.springframework.cloud.gateway.filter.factory.SetRequestHostHeaderGatewayFilterFactory;
-import org.springframework.cloud.gateway.handler.predicate.WeightRoutePredicateFactory;
 
 public class RouteProvider {
 
diff --git a/sra/src/main/java/org/apache/syncope/sra/SecurityConfig.java b/sra/src/main/java/org/apache/syncope/sra/SecurityConfig.java
index 6712428..af091ce 100644
--- a/sra/src/main/java/org/apache/syncope/sra/SecurityConfig.java
+++ b/sra/src/main/java/org/apache/syncope/sra/SecurityConfig.java
@@ -29,9 +29,9 @@
 import org.apache.syncope.common.lib.types.SAML2BindingType;
 import org.apache.syncope.sra.security.CsrfRouteMatcher;
 import org.apache.syncope.sra.security.LogoutRouteMatcher;
-import org.apache.syncope.sra.security.oauth2.OAuth2SecurityConfigUtils;
 import org.apache.syncope.sra.security.PublicRouteMatcher;
 import org.apache.syncope.sra.security.cas.CASSecurityConfigUtils;
+import org.apache.syncope.sra.security.oauth2.OAuth2SecurityConfigUtils;
 import org.apache.syncope.sra.security.pac4j.NoOpLogoutHandler;
 import org.apache.syncope.sra.security.saml2.SAML2MetadataEndpoint;
 import org.apache.syncope.sra.security.saml2.SAML2SecurityConfigUtils;
diff --git a/sra/src/main/java/org/apache/syncope/sra/security/oauth2/OidcClientInitiatedServerLogoutSuccessHandler.java b/sra/src/main/java/org/apache/syncope/sra/security/oauth2/OidcClientInitiatedServerLogoutSuccessHandler.java
index 290fe4e..d246c68 100644
--- a/sra/src/main/java/org/apache/syncope/sra/security/oauth2/OidcClientInitiatedServerLogoutSuccessHandler.java
+++ b/sra/src/main/java/org/apache/syncope/sra/security/oauth2/OidcClientInitiatedServerLogoutSuccessHandler.java
@@ -23,7 +23,6 @@
 import org.apache.syncope.sra.security.AbstractServerLogoutSuccessHandler;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
-import reactor.core.publisher.Mono;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
 import org.springframework.security.oauth2.client.registration.ClientRegistration;
@@ -33,6 +32,7 @@
 import org.springframework.security.web.server.authentication.logout.RedirectServerLogoutSuccessHandler;
 import org.springframework.util.Assert;
 import org.springframework.web.util.UriComponentsBuilder;
+import reactor.core.publisher.Mono;
 
 /**
  * A reactive logout success handler for initiating OIDC logout through the user agent.
diff --git a/sra/src/main/java/org/apache/syncope/sra/security/pac4j/NoOpSessionStore.java b/sra/src/main/java/org/apache/syncope/sra/security/pac4j/NoOpSessionStore.java
index a7d43ab..a1eaef6 100644
--- a/sra/src/main/java/org/apache/syncope/sra/security/pac4j/NoOpSessionStore.java
+++ b/sra/src/main/java/org/apache/syncope/sra/security/pac4j/NoOpSessionStore.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.sra.security.pac4j;
 
 import java.util.Optional;
-
 import org.pac4j.core.context.WebContext;
 import org.pac4j.core.context.session.SessionStore;
 
diff --git a/sra/src/main/java/org/apache/syncope/sra/security/saml2/SAML2RequestServerLogoutHandler.java b/sra/src/main/java/org/apache/syncope/sra/security/saml2/SAML2RequestServerLogoutHandler.java
index ef0b032..6c7e783 100644
--- a/sra/src/main/java/org/apache/syncope/sra/security/saml2/SAML2RequestServerLogoutHandler.java
+++ b/sra/src/main/java/org/apache/syncope/sra/security/saml2/SAML2RequestServerLogoutHandler.java
@@ -18,9 +18,9 @@
  */
 package org.apache.syncope.sra.security.saml2;
 
+import org.apache.syncope.sra.SessionConfig;
 import org.apache.syncope.sra.security.pac4j.NoOpSessionStore;
 import org.apache.syncope.sra.security.pac4j.RedirectionActionUtils;
-import org.apache.syncope.sra.SessionConfig;
 import org.apache.syncope.sra.security.pac4j.ServerWebExchangeContext;
 import org.pac4j.saml.client.SAML2Client;
 import org.pac4j.saml.credentials.SAML2Credentials;
diff --git a/sra/src/main/java/org/apache/syncope/sra/security/saml2/SAML2WebSsoAuthenticationWebFilter.java b/sra/src/main/java/org/apache/syncope/sra/security/saml2/SAML2WebSsoAuthenticationWebFilter.java
index 8b8239a..155bc0e 100644
--- a/sra/src/main/java/org/apache/syncope/sra/security/saml2/SAML2WebSsoAuthenticationWebFilter.java
+++ b/sra/src/main/java/org/apache/syncope/sra/security/saml2/SAML2WebSsoAuthenticationWebFilter.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.sra.security.saml2;
 
 import java.net.URI;
-
 import org.apache.syncope.sra.security.pac4j.NoOpSessionStore;
 import org.apache.syncope.sra.security.pac4j.ServerWebExchangeContext;
 import org.apache.syncope.sra.security.web.server.DoNothingIfCommittedServerRedirectStrategy;
diff --git a/sra/src/main/java/org/springframework/cloud/gateway/config/HttpClientProperties.java b/sra/src/main/java/org/springframework/cloud/gateway/config/HttpClientProperties.java
index 1a03102..ff4a755 100644
--- a/sra/src/main/java/org/springframework/cloud/gateway/config/HttpClientProperties.java
+++ b/sra/src/main/java/org/springframework/cloud/gateway/config/HttpClientProperties.java
@@ -29,13 +29,7 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-
 import javax.net.ssl.KeyManagerFactory;
-
-import reactor.netty.resources.ConnectionProvider;
-import reactor.netty.tcp.SslProvider;
-import reactor.netty.transport.ProxyProvider;
-
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.web.server.WebServerException;
 import org.springframework.core.style.ToStringCreator;
@@ -43,6 +37,9 @@
 import org.springframework.util.unit.DataSize;
 import org.springframework.util.unit.DataUnit;
 import org.springframework.validation.annotation.Validated;
+import reactor.netty.resources.ConnectionProvider;
+import reactor.netty.tcp.SslProvider;
+import reactor.netty.transport.ProxyProvider;
 
 // CHECKSTYLE:OFF
 // Semi-blind copy from Spring Cloud Gateway sources, to keep until they are tied
diff --git a/sra/src/test/java/org/apache/syncope/sra/AbstractTest.java b/sra/src/test/java/org/apache/syncope/sra/AbstractTest.java
index 2aecdbe..cd4d5e1 100644
--- a/sra/src/test/java/org/apache/syncope/sra/AbstractTest.java
+++ b/sra/src/test/java/org/apache/syncope/sra/AbstractTest.java
@@ -39,7 +39,7 @@
 
     protected static final JsonMapper MAPPER = JsonMapper.builder().addModule(new JavaTimeModule()).build();
 
-    public static boolean available(int port) {
+    public static boolean available(final int port) {
         try (Socket ignored = new Socket("localhost", port)) {
             return false;
         } catch (IOException ignored) {
diff --git a/sra/src/test/java/org/apache/syncope/sra/RouteProviderTest.java b/sra/src/test/java/org/apache/syncope/sra/RouteProviderTest.java
index 42f24bd..8712ed3 100644
--- a/sra/src/test/java/org/apache/syncope/sra/RouteProviderTest.java
+++ b/sra/src/test/java/org/apache/syncope/sra/RouteProviderTest.java
@@ -38,12 +38,12 @@
 import java.net.URI;
 import java.time.ZonedDateTime;
 import org.apache.syncope.common.lib.to.SRARouteTO;
-import org.apache.syncope.common.lib.types.SRARouteFilterFactory;
 import org.apache.syncope.common.lib.types.SRARouteFilter;
+import org.apache.syncope.common.lib.types.SRARouteFilterFactory;
 import org.apache.syncope.common.lib.types.SRARoutePredicate;
 import org.apache.syncope.common.lib.types.SRARoutePredicateCond;
-import org.apache.syncope.common.lib.types.SRARouteType;
 import org.apache.syncope.common.lib.types.SRARoutePredicateFactory;
+import org.apache.syncope.common.lib.types.SRARouteType;
 import org.apache.syncope.sra.filters.BodyPropertyAddingGatewayFilterFactory;
 import org.apache.syncope.sra.filters.PrincipalToRequestHeaderFilterFactory;
 import org.apache.syncope.sra.predicates.BodyPropertyMatchingRoutePredicateFactory;
@@ -437,7 +437,8 @@
                 factory(SRARoutePredicateFactory.HOST).args("host").cond(SRARoutePredicateCond.AND).build());
         route.getPredicates().add(new SRARoutePredicate.Builder().
                 factory(SRARoutePredicateFactory.HEADER).args("Hello,World").cond(SRARoutePredicateCond.AND).build());
-        route.getFilters().add(new SRARouteFilter.Builder().factory(SRARouteFilterFactory.PRESERVE_HOST_HEADER).build());
+        route.getFilters().add(new SRARouteFilter.Builder().
+                factory(SRARouteFilterFactory.PRESERVE_HOST_HEADER).build());
 
         SyncopeCoreTestingServer.ROUTES.put(route.getKey(), route);
         routeRefresher.refresh();
diff --git a/sra/src/test/java/org/apache/syncope/sra/SyncopeCoreTestingServer.java b/sra/src/test/java/org/apache/syncope/sra/SyncopeCoreTestingServer.java
index ca99ce7..3456ccb 100644
--- a/sra/src/test/java/org/apache/syncope/sra/SyncopeCoreTestingServer.java
+++ b/sra/src/test/java/org/apache/syncope/sra/SyncopeCoreTestingServer.java
@@ -32,11 +32,11 @@
 import org.apache.syncope.common.keymaster.client.api.ServiceOps;
 import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
 import org.apache.syncope.common.lib.to.SRARouteTO;
+import org.apache.syncope.common.rest.api.service.SRARouteService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationListener;
 import org.springframework.context.event.ContextRefreshedEvent;
 import org.springframework.stereotype.Component;
-import org.apache.syncope.common.rest.api.service.SRARouteService;
 
 @Component
 public class SyncopeCoreTestingServer implements ApplicationListener<ContextRefreshedEvent> {
diff --git a/sra/src/test/java/org/apache/syncope/sra/TLSRouteProviderTest.java b/sra/src/test/java/org/apache/syncope/sra/TLSRouteProviderTest.java
index ace2ed1..1184114 100644
--- a/sra/src/test/java/org/apache/syncope/sra/TLSRouteProviderTest.java
+++ b/sra/src/test/java/org/apache/syncope/sra/TLSRouteProviderTest.java
@@ -40,8 +40,8 @@
 import javax.net.ssl.KeyManagerFactory;
 import javax.net.ssl.SSLException;
 import org.apache.syncope.common.lib.to.SRARouteTO;
-import org.apache.syncope.common.lib.types.SRARouteFilterFactory;
 import org.apache.syncope.common.lib.types.SRARouteFilter;
+import org.apache.syncope.common.lib.types.SRARouteFilterFactory;
 import org.apache.syncope.common.lib.types.SRARoutePredicate;
 import org.apache.syncope.common.lib.types.SRARoutePredicateCond;
 import org.apache.syncope.common.lib.types.SRARoutePredicateFactory;
diff --git a/sra/src/test/java/org/apache/syncope/sra/filters/BodyPropertyAddingGatewayFilterFactory.java b/sra/src/test/java/org/apache/syncope/sra/filters/BodyPropertyAddingGatewayFilterFactory.java
index 695f018..a42e738 100644
--- a/sra/src/test/java/org/apache/syncope/sra/filters/BodyPropertyAddingGatewayFilterFactory.java
+++ b/sra/src/test/java/org/apache/syncope/sra/filters/BodyPropertyAddingGatewayFilterFactory.java
@@ -87,7 +87,7 @@
             return new ServerHttpResponseDecorator(originalResponse) {
 
                 @Override
-                public Mono<Void> writeWith(Publisher<? extends DataBuffer> body) {
+                public Mono<Void> writeWith(final Publisher<? extends DataBuffer> body) {
                     return super.writeWith(Flux.from(body).buffer().map(dataBuffers -> {
                         ByteArrayOutputStream payload = new ByteArrayOutputStream();
                         dataBuffers.forEach(buffer -> {
@@ -126,8 +126,8 @@
                         }
 
                         if (compressed) {
-                            try (ByteArrayOutputStream baos = new ByteArrayOutputStream(output.length);  GZIPOutputStream gzipos =
-                                    new GZIPOutputStream(baos)) {
+                            try (ByteArrayOutputStream baos = new ByteArrayOutputStream(output.length);  
+                                 GZIPOutputStream gzipos = new GZIPOutputStream(baos)) {
 
                                 gzipos.write(output);
                                 gzipos.close();
diff --git a/src/main/resources/org/apache/syncope/checkstyle.xml b/src/main/resources/org/apache/syncope/checkstyle.xml
index 13f42b8..7bf67cc 100644
--- a/src/main/resources/org/apache/syncope/checkstyle.xml
+++ b/src/main/resources/org/apache/syncope/checkstyle.xml
@@ -151,7 +151,12 @@
     <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
     <module name="RedundantImport"/>
     <module name="UnusedImports"/>
-
+    <module name="ImportOrder">
+      <property name="separated" value="false"/>
+      <property name="separatedStaticGroups" value="true"/>
+      <property name="option" value="top"/>
+      <property name="sortStaticImportsAlphabetically" value="true"/>
+    </module>
 
     <!-- Checks for Size Violations.                    -->
     <!-- See http://checkstyle.sf.net/config_sizes.html -->
diff --git a/wa/bootstrap/src/main/java/org/apache/syncope/wa/bootstrap/WARestClient.java b/wa/bootstrap/src/main/java/org/apache/syncope/wa/bootstrap/WARestClient.java
index b5e8d6e..0cfcd9a 100644
--- a/wa/bootstrap/src/main/java/org/apache/syncope/wa/bootstrap/WARestClient.java
+++ b/wa/bootstrap/src/main/java/org/apache/syncope/wa/bootstrap/WARestClient.java
@@ -18,18 +18,18 @@
  */
 package org.apache.syncope.wa.bootstrap;
 
+import java.util.Collection;
 import java.util.Optional;
-import org.apereo.cas.util.spring.ApplicationContextProvider;
 import org.apache.syncope.client.lib.AnonymousAuthenticationHandler;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
 import org.apache.syncope.common.keymaster.client.api.KeymasterException;
 import org.apache.syncope.common.keymaster.client.api.ServiceOps;
 import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
+import org.apereo.cas.util.spring.ApplicationContextProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.context.ApplicationContext;
-import java.util.Collection;
 
 public class WARestClient {
 
diff --git a/wa/starter/src/main/java/org/apache/syncope/wa/starter/SyncopeWAApplication.java b/wa/starter/src/main/java/org/apache/syncope/wa/starter/SyncopeWAApplication.java
index 16c1bac..aeb44e2 100644
--- a/wa/starter/src/main/java/org/apache/syncope/wa/starter/SyncopeWAApplication.java
+++ b/wa/starter/src/main/java/org/apache/syncope/wa/starter/SyncopeWAApplication.java
@@ -18,13 +18,12 @@
  */
 package org.apache.syncope.wa.starter;
 
-import org.apache.syncope.wa.bootstrap.WAProperties;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.Date;
 import java.util.Map;
+import org.apache.syncope.wa.bootstrap.WAProperties;
 import org.apache.syncope.wa.starter.config.WARefreshContextJob;
-
 import org.apereo.cas.config.GoogleAuthenticatorLdapConfiguration;
 import org.apereo.cas.configuration.CasConfigurationProperties;
 import org.apereo.cas.configuration.CasConfigurationPropertiesValidator;
diff --git a/wa/starter/src/main/java/org/apache/syncope/wa/starter/audit/WAAuditTrailManager.java b/wa/starter/src/main/java/org/apache/syncope/wa/starter/audit/WAAuditTrailManager.java
index c0da902..6dfdf01 100644
--- a/wa/starter/src/main/java/org/apache/syncope/wa/starter/audit/WAAuditTrailManager.java
+++ b/wa/starter/src/main/java/org/apache/syncope/wa/starter/audit/WAAuditTrailManager.java
@@ -20,10 +20,9 @@
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import java.time.LocalDate;
+import java.time.OffsetDateTime;
 import java.util.Map;
 import java.util.Set;
-import org.apereo.cas.audit.spi.AbstractAuditTrailManager;
-import java.time.OffsetDateTime;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.audit.AuditEntry;
@@ -31,6 +30,7 @@
 import org.apache.syncope.common.lib.types.AuditLoggerName;
 import org.apache.syncope.common.rest.api.service.AuditService;
 import org.apache.syncope.wa.bootstrap.WARestClient;
+import org.apereo.cas.audit.spi.AbstractAuditTrailManager;
 import org.apereo.inspektr.audit.AuditActionContext;
 
 public class WAAuditTrailManager extends AbstractAuditTrailManager {
diff --git a/wa/starter/src/main/java/org/apache/syncope/wa/starter/mapping/DefaultAttrReleaseMapper.java b/wa/starter/src/main/java/org/apache/syncope/wa/starter/mapping/DefaultAttrReleaseMapper.java
index d10142b..9b39c95 100644
--- a/wa/starter/src/main/java/org/apache/syncope/wa/starter/mapping/DefaultAttrReleaseMapper.java
+++ b/wa/starter/src/main/java/org/apache/syncope/wa/starter/mapping/DefaultAttrReleaseMapper.java
@@ -19,8 +19,8 @@
 package org.apache.syncope.wa.starter.mapping;
 
 import java.util.HashSet;
-import org.apache.syncope.common.lib.policy.DefaultAttrReleasePolicyConf;
 import org.apache.syncope.common.lib.policy.AttrReleasePolicyTO;
+import org.apache.syncope.common.lib.policy.DefaultAttrReleasePolicyConf;
 import org.apereo.cas.services.DenyAllAttributeReleasePolicy;
 import org.apereo.cas.services.RegisteredServiceAttributeReleasePolicy;
 import org.apereo.cas.services.ReturnAllowedAttributeReleasePolicy;
diff --git a/wa/starter/src/main/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientMetadataGenerator.java b/wa/starter/src/main/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientMetadataGenerator.java
index 081c57b..c4d1541 100644
--- a/wa/starter/src/main/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientMetadataGenerator.java
+++ b/wa/starter/src/main/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientMetadataGenerator.java
@@ -21,15 +21,15 @@
 import java.nio.charset.StandardCharsets;
 import java.util.Base64;
 import org.apache.syncope.common.lib.to.SAML2SPEntityTO;
+import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
 import org.apache.syncope.wa.bootstrap.WARestClient;
+import org.opensaml.saml.metadata.resolver.MetadataResolver;
 import org.opensaml.saml.metadata.resolver.impl.AbstractBatchMetadataResolver;
 import org.pac4j.saml.client.SAML2Client;
 import org.pac4j.saml.metadata.BaseSAML2MetadataGenerator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.core.io.Resource;
-import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
-import org.opensaml.saml.metadata.resolver.MetadataResolver;
 
 public class WASAML2ClientMetadataGenerator extends BaseSAML2MetadataGenerator {
 
diff --git a/wa/starter/src/main/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2MetadataResolver.java b/wa/starter/src/main/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2MetadataResolver.java
index 42e2c60..d09321b 100644
--- a/wa/starter/src/main/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2MetadataResolver.java
+++ b/wa/starter/src/main/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2MetadataResolver.java
@@ -21,12 +21,12 @@
 import java.util.Base64;
 import net.shibboleth.utilities.java.support.resolver.ResolverException;
 import org.apache.syncope.common.lib.to.SAML2SPEntityTO;
+import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
 import org.apache.syncope.wa.bootstrap.WARestClient;
 import org.opensaml.saml.metadata.resolver.impl.AbstractReloadingMetadataResolver;
 import org.pac4j.saml.client.SAML2Client;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
 
 public class WASAML2MetadataResolver extends AbstractReloadingMetadataResolver {
 
diff --git a/wa/starter/src/main/java/org/apache/syncope/wa/starter/saml/idp/metadata/RestfulSamlIdPMetadataGenerator.java b/wa/starter/src/main/java/org/apache/syncope/wa/starter/saml/idp/metadata/RestfulSamlIdPMetadataGenerator.java
index 1b2bbbc..0b8cdb6 100644
--- a/wa/starter/src/main/java/org/apache/syncope/wa/starter/saml/idp/metadata/RestfulSamlIdPMetadataGenerator.java
+++ b/wa/starter/src/main/java/org/apache/syncope/wa/starter/saml/idp/metadata/RestfulSamlIdPMetadataGenerator.java
@@ -20,9 +20,11 @@
 
 import java.nio.charset.StandardCharsets;
 import java.util.Base64;
+import java.util.Optional;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.to.SAML2IdPEntityTO;
+import org.apache.syncope.common.rest.api.service.SAML2IdPEntityService;
 import org.apache.syncope.wa.bootstrap.WARestClient;
 import org.apereo.cas.support.saml.idp.metadata.generator.BaseSamlIdPMetadataGenerator;
 import org.apereo.cas.support.saml.idp.metadata.generator.SamlIdPMetadataGeneratorConfigurationContext;
@@ -30,8 +32,6 @@
 import org.apereo.cas.support.saml.services.idp.metadata.SamlIdPMetadataDocument;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import java.util.Optional;
-import org.apache.syncope.common.rest.api.service.SAML2IdPEntityService;
 
 public class RestfulSamlIdPMetadataGenerator extends BaseSamlIdPMetadataGenerator {
 
diff --git a/wa/starter/src/test/java/org/apache/syncope/wa/starter/WAServiceRegistryTest.java b/wa/starter/src/test/java/org/apache/syncope/wa/starter/WAServiceRegistryTest.java
index 343224b..43e9731 100644
--- a/wa/starter/src/test/java/org/apache/syncope/wa/starter/WAServiceRegistryTest.java
+++ b/wa/starter/src/test/java/org/apache/syncope/wa/starter/WAServiceRegistryTest.java
@@ -30,8 +30,8 @@
 import org.apache.syncope.common.lib.policy.AccessPolicyTO;
 import org.apache.syncope.common.lib.policy.AttrReleasePolicyTO;
 import org.apache.syncope.common.lib.policy.AuthPolicyTO;
-import org.apache.syncope.common.lib.policy.DefaultAttrReleasePolicyConf;
 import org.apache.syncope.common.lib.policy.DefaultAccessPolicyConf;
+import org.apache.syncope.common.lib.policy.DefaultAttrReleasePolicyConf;
 import org.apache.syncope.common.lib.policy.DefaultAuthPolicyConf;
 import org.apache.syncope.common.lib.to.OIDCRPClientAppTO;
 import org.apache.syncope.common.lib.to.SAML2SPClientAppTO;
diff --git a/wa/starter/src/test/java/org/apache/syncope/wa/starter/audit/WAAuditTrailManagerTest.java b/wa/starter/src/test/java/org/apache/syncope/wa/starter/audit/WAAuditTrailManagerTest.java
index a95dfb3..7e620b9 100644
--- a/wa/starter/src/test/java/org/apache/syncope/wa/starter/audit/WAAuditTrailManagerTest.java
+++ b/wa/starter/src/test/java/org/apache/syncope/wa/starter/audit/WAAuditTrailManagerTest.java
@@ -26,23 +26,23 @@
 import java.util.Date;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.audit.AuditEntry;
+import org.apache.syncope.common.rest.api.service.AuditService;
 import org.apache.syncope.wa.bootstrap.WARestClient;
 import org.apache.syncope.wa.starter.AbstractTest;
 import org.apereo.inspektr.audit.AuditActionContext;
 import org.junit.jupiter.api.Test;
-import org.apache.syncope.common.rest.api.service.AuditService;
 
 public class WAAuditTrailManagerTest extends AbstractTest {
 
-    private static AuditService loggerService;
+    private static AuditService LOGGER_SERVICE;
 
     private static WARestClient getWaRestClient() {
         WARestClient restClient = mock(WARestClient.class);
         SyncopeClient syncopeClient = mock(SyncopeClient.class);
-        loggerService = mock(AuditService.class);
+        LOGGER_SERVICE = mock(AuditService.class);
 
         when(restClient.getSyncopeClient()).thenReturn(syncopeClient);
-        when(syncopeClient.getService(AuditService.class)).thenReturn(loggerService);
+        when(syncopeClient.getService(AuditService.class)).thenReturn(LOGGER_SERVICE);
 
         return restClient;
     }
@@ -53,7 +53,6 @@
                 "applicationCode", new Date(), "clientIpAddress", "serverIpAddress", "userAgent");
         WAAuditTrailManager auditTrailManager = new WAAuditTrailManager(getWaRestClient());
         auditTrailManager.saveAuditRecord(audit);
-        verify(loggerService).create(any(AuditEntry.class));
+        verify(LOGGER_SERVICE).create(any(AuditEntry.class));
     }
-
 }
diff --git a/wa/starter/src/test/java/org/apache/syncope/wa/starter/events/WAEventRepositoryTest.java b/wa/starter/src/test/java/org/apache/syncope/wa/starter/events/WAEventRepositoryTest.java
index 138ad5a..1c6a67d 100644
--- a/wa/starter/src/test/java/org/apache/syncope/wa/starter/events/WAEventRepositoryTest.java
+++ b/wa/starter/src/test/java/org/apache/syncope/wa/starter/events/WAEventRepositoryTest.java
@@ -26,24 +26,24 @@
 import java.util.Map;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.audit.AuditEntry;
+import org.apache.syncope.common.rest.api.service.AuditService;
 import org.apache.syncope.wa.bootstrap.WARestClient;
 import org.apache.syncope.wa.starter.AbstractTest;
 import org.apereo.cas.support.events.CasEventRepositoryFilter;
 import org.apereo.cas.support.events.dao.CasEvent;
 import org.junit.jupiter.api.Test;
-import org.apache.syncope.common.rest.api.service.AuditService;
 
 public class WAEventRepositoryTest extends AbstractTest {
 
-    private static AuditService auditService;
+    private static AuditService AUDIT_SERVICE;
 
     private static WARestClient getWaRestClient() {
         WARestClient restClient = mock(WARestClient.class);
         SyncopeClient syncopeClient = mock(SyncopeClient.class);
-        auditService = mock(AuditService.class);
+        AUDIT_SERVICE = mock(AuditService.class);
 
         when(restClient.getSyncopeClient()).thenReturn(syncopeClient);
-        when(syncopeClient.getService(AuditService.class)).thenReturn(auditService);
+        when(syncopeClient.getService(AuditService.class)).thenReturn(AUDIT_SERVICE);
 
         return restClient;
     }
@@ -51,9 +51,9 @@
     @Test
     public void saveInternal() {
         CasEvent event = new CasEvent(1L, "Auth", "principalId", "creationTime", Map.of("timestamp", "1"));
-        WAEventRepository eventRepository = new WAEventRepository(CasEventRepositoryFilter.noOp(),
-                getWaRestClient());
+        WAEventRepository eventRepository =
+                new WAEventRepository(CasEventRepositoryFilter.noOp(), getWaRestClient());
         eventRepository.saveInternal(event);
-        verify(auditService).create(any(AuditEntry.class));
+        verify(AUDIT_SERVICE).create(any(AuditEntry.class));
     }
 }
diff --git a/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientCustomizerTest.java b/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientCustomizerTest.java
index ade1552..4b63324 100644
--- a/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientCustomizerTest.java
+++ b/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientCustomizerTest.java
@@ -29,11 +29,11 @@
 import org.apache.commons.io.IOUtils;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.to.SAML2SPEntityTO;
+import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
 import org.apache.syncope.wa.bootstrap.WARestClient;
 import org.junit.jupiter.api.Test;
 import org.pac4j.saml.client.SAML2Client;
 import org.springframework.core.io.ClassPathResource;
-import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
 
 public class WASAML2ClientCustomizerTest extends BaseWASAML2ClientTest {
 
diff --git a/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientKeystoreGeneratorTest.java b/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientKeystoreGeneratorTest.java
index 2fe958e..29d0120 100644
--- a/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientKeystoreGeneratorTest.java
+++ b/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientKeystoreGeneratorTest.java
@@ -29,12 +29,12 @@
 import org.apache.commons.io.IOUtils;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.to.SAML2SPEntityTO;
+import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
 import org.apache.syncope.wa.bootstrap.WARestClient;
 import org.junit.jupiter.api.Test;
 import org.pac4j.saml.client.SAML2Client;
 import org.pac4j.saml.metadata.keystore.SAML2KeystoreGenerator;
 import org.springframework.core.io.ClassPathResource;
-import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
 
 public class WASAML2ClientKeystoreGeneratorTest extends BaseWASAML2ClientTest {
 
diff --git a/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientMetadataGeneratorTest.java b/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientMetadataGeneratorTest.java
index a7756e6..794f928 100644
--- a/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientMetadataGeneratorTest.java
+++ b/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2ClientMetadataGeneratorTest.java
@@ -31,13 +31,13 @@
 import org.apache.commons.io.IOUtils;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.to.SAML2SPEntityTO;
+import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
 import org.apache.syncope.wa.bootstrap.WARestClient;
 import org.junit.jupiter.api.Test;
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
 import org.pac4j.saml.client.SAML2Client;
 import org.pac4j.saml.metadata.SAML2MetadataGenerator;
 import org.springframework.core.io.ClassPathResource;
-import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
 
 public class WASAML2ClientMetadataGeneratorTest extends BaseWASAML2ClientTest {
 
diff --git a/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2MetadataResolverTest.java b/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2MetadataResolverTest.java
index 7526726..3b128de 100644
--- a/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2MetadataResolverTest.java
+++ b/wa/starter/src/test/java/org/apache/syncope/wa/starter/pac4j/saml/WASAML2MetadataResolverTest.java
@@ -30,11 +30,11 @@
 import org.apache.commons.io.IOUtils;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.to.SAML2SPEntityTO;
+import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
 import org.apache.syncope.wa.bootstrap.WARestClient;
 import org.junit.jupiter.api.Test;
 import org.pac4j.saml.client.SAML2Client;
 import org.springframework.core.io.ClassPathResource;
-import org.apache.syncope.common.rest.api.service.SAML2SPEntityService;
 
 public class WASAML2MetadataResolverTest extends BaseWASAML2ClientTest {