You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2018/03/06 15:03:44 UTC

[2/2] syncope git commit: [SYNCOPE-1225] Some cleanup

[SYNCOPE-1225] Some cleanup


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

Branch: refs/heads/master
Commit: e82e43cdd1ecdd7dcb1cca6d2a0e003c736b56cb
Parents: 3e36930
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Tue Mar 6 15:12:07 2018 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Tue Mar 6 16:03:33 2018 +0100

----------------------------------------------------------------------
 .../schema/SchemaSyncopeOperations.java         |   8 +-
 .../NotificationWizardBuilder.java              |  25 ++++-
 .../client/console/panels/SchemaTypePanel.java  |  59 +++++++----
 .../panels/SchemaTypePanelWithSearch.java       | 105 -------------------
 .../client/console/panels/SchemasPanel.java     |  79 +++++++++++++-
 .../panels/search/AbstractSearchPanel.java      |   3 +-
 .../client/console/rest/SchemaRestClient.java   |  64 ++++-------
 .../console/wizards/any/AbstractAttrs.java      |   2 +-
 .../syncope/client/console/pages/BasePage.html  |   2 +-
 .../panels/SchemaTypePanelWithSearch.html       |  33 ------
 .../client/console/panels/SchemasPanel.html     |  11 ++
 .../client/enduser/SyncopeEnduserSession.java   |   2 +-
 .../enduser/resources/SchemaResource.java       |  12 +--
 .../common/rest/api/beans/SchemaQuery.java      |   1 -
 .../common/rest/api/service/SchemaService.java  |   4 +-
 .../apache/syncope/core/logic/SchemaLogic.java  |  25 +++--
 .../core/persistence/api/dao/SchemaDAO.java     |   6 +-
 .../persistence/jpa/dao/JPADerSchemaDAO.java    |  12 +--
 .../persistence/jpa/dao/JPAPlainSchemaDAO.java  |  12 +--
 .../persistence/jpa/dao/JPAVirSchemaDAO.java    |  12 +--
 .../persistence/jpa/inner/DerSchemaTest.java    |   2 +-
 .../persistence/jpa/inner/PlainSchemaTest.java  |   2 +-
 .../persistence/jpa/inner/VirSchemaTest.java    |   2 +-
 .../rest/cxf/service/SchemaServiceImpl.java     |   2 +-
 .../fit/console/AbstractTypesITCase.java        |  14 +--
 .../syncope/fit/console/SchemasITCase.java      |  84 +++++++--------
 .../syncope/fit/core/DerSchemaITCase.java       |  26 ++---
 .../syncope/fit/core/MultitenancyITCase.java    |   3 +-
 .../syncope/fit/core/PlainSchemaITCase.java     |  18 ++--
 .../syncope/fit/core/VirSchemaITCase.java       |  30 +++---
 30 files changed, 299 insertions(+), 361 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaSyncopeOperations.java
index 79cb89a..4dd17b1 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/schema/SchemaSyncopeOperations.java
@@ -34,19 +34,19 @@ public class SchemaSyncopeOperations {
     }
 
     public <T extends SchemaTO> List<T> list(final String schemaTypeString) {
-        return schemaService.list(new SchemaQuery.Builder().type(SchemaType.valueOf(schemaTypeString)).build());
+        return schemaService.search(new SchemaQuery.Builder().type(SchemaType.valueOf(schemaTypeString)).build());
     }
 
     public <T extends SchemaTO> List<T> listPlain() {
-        return schemaService.list(new SchemaQuery.Builder().type(SchemaType.PLAIN).build());
+        return schemaService.search(new SchemaQuery.Builder().type(SchemaType.PLAIN).build());
     }
 
     public <T extends SchemaTO> List<T> listDerived() {
-        return schemaService.list(new SchemaQuery.Builder().type(SchemaType.DERIVED).build());
+        return schemaService.search(new SchemaQuery.Builder().type(SchemaType.DERIVED).build());
     }
 
     public <T extends SchemaTO> List<T> listVirtual() {
-        return schemaService.list(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).build());
+        return schemaService.search(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).build());
     }
 
     public void delete(final String schemaTypeString, final String schemaName) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWizardBuilder.java
index 3602b44..e4442a4 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationWizardBuilder.java
@@ -43,6 +43,8 @@ import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPa
 import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.MultiPanel;
 import org.apache.syncope.client.console.wizards.AjaxWizardBuilder;
+import org.apache.syncope.common.lib.SyncopeClientException;
+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.NotificationTO;
@@ -74,6 +76,8 @@ public class NotificationWizardBuilder extends AjaxWizardBuilder<NotificationWra
 
     private final NotificationRestClient restClient = new NotificationRestClient();
 
+    private final AnyTypeRestClient anyTypeRestClient = new AnyTypeRestClient();
+
     private final SchemaRestClient schemaRestClient = new SchemaRestClient();
 
     private final LoggerRestClient loggerRestClient = new LoggerRestClient();
@@ -345,7 +349,7 @@ public class NotificationWizardBuilder extends AjaxWizardBuilder<NotificationWra
             AjaxTextFieldPanel recipientAttrName = new AjaxTextFieldPanel(
                     "recipientAttrName", new ResourceModel("recipientAttrName", "recipientAttrName").getObject(),
                     new PropertyModel<>(notificationTO, "recipientAttrName"));
-            recipientAttrName.setChoices(getSchemaNames());
+            recipientAttrName.setChoices(getSchemas());
             recipientAttrName.addRequiredLabel();
             recipientAttrName.setTitle(getString("intAttrNameInfo.help")
                     + "<div style=\"font-size: 10px;\">"
@@ -381,15 +385,26 @@ public class NotificationWizardBuilder extends AjaxWizardBuilder<NotificationWra
         }
     }
 
-    private List<String> getSchemaNames() {
+    private List<String> getSchemas() {
+        AnyTypeTO type = null;
+        try {
+            type = anyTypeRestClient.read(AnyTypeKind.USER.name());
+        } catch (SyncopeClientException e) {
+            LOG.error("While reading all any types", e);
+        }
+
+        String[] anyTypeClasses = type == null
+                ? new String[0]
+                : type.getClasses().toArray(new String[] {});
+
         List<String> result = new ArrayList<>();
         result.add("username");
 
-        result.addAll(schemaRestClient.<PlainSchemaTO>getSchemas(SchemaType.PLAIN, AnyTypeKind.USER.name()).
+        result.addAll(schemaRestClient.<PlainSchemaTO>getSchemas(SchemaType.PLAIN, null, anyTypeClasses).
                 stream().map(EntityTO::getKey).collect(Collectors.toList()));
-        result.addAll(schemaRestClient.<DerSchemaTO>getSchemas(SchemaType.DERIVED, AnyTypeKind.USER.name()).
+        result.addAll(schemaRestClient.<DerSchemaTO>getSchemas(SchemaType.DERIVED, null, anyTypeClasses).
                 stream().map(EntityTO::getKey).collect(Collectors.toList()));
-        result.addAll(schemaRestClient.<VirSchemaTO>getSchemas(SchemaType.VIRTUAL, AnyTypeKind.USER.name()).
+        result.addAll(schemaRestClient.<VirSchemaTO>getSchemas(SchemaType.VIRTUAL, null, anyTypeClasses).
                 stream().map(EntityTO::getKey).collect(Collectors.toList()));
 
         Collections.sort(result);

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
index b696840..079086d 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
@@ -18,6 +18,7 @@
  */
 package org.apache.syncope.client.console.panels;
 
+import java.io.Serializable;
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -128,7 +129,7 @@ public class SchemaTypePanel extends TypesDirectoryPanel<SchemaTO, SchemaProvide
             }, true);
 
             initResultTable();
-            MetaDataRoleAuthorizationStrategy.authorize(addAjaxLink, RENDER, StandardEntitlement.SCHEMA_LIST);
+            MetaDataRoleAuthorizationStrategy.authorize(addAjaxLink, RENDER, StandardEntitlement.SCHEMA_CREATE);
         } catch (InstantiationException | IllegalAccessException e) {
             LOG.error("Error create new schema", e);
         }
@@ -252,33 +253,25 @@ public class SchemaTypePanel extends TypesDirectoryPanel<SchemaTO, SchemaProvide
 
         @Override
         public Iterator<SchemaTO> iterator(final long first, final long count) {
-            List<SchemaTO> schemaList = StringUtils.isBlank(keyword)
-                    ? restClient.getSchemas(this.schemaType)
-                    : restClient.getSchemas(this.schemaType, keyword, new String[0]);
-            Collections.sort(schemaList, comparator);
+            List<SchemaTO> schemas = restClient.getSchemas(this.schemaType, keyword);
+            Collections.sort(schemas, comparator);
 
             if (SchemaType.PLAIN == this.schemaType) {
                 final List<String> configurations = confRestClient.list().stream().
                         map(AttrTO::getSchema).collect(Collectors.toList());
 
-                final List<SchemaTO> res = new ArrayList<>();
-                schemaList.stream().
+                final List<SchemaTO> res = schemas.stream().
                         filter(item -> !configurations.contains(item.getKey())).
-                        forEachOrdered(item -> {
-                            res.add(item);
-                        });
-
+                        collect(Collectors.toList());
                 return res.subList((int) first, (int) first + (int) count).iterator();
             } else {
-                return schemaList.subList((int) first, (int) first + (int) count).iterator();
+                return schemas.subList((int) first, (int) first + (int) count).iterator();
             }
         }
 
         @Override
         public long size() {
-            int size = StringUtils.isBlank(keyword)
-                    ? restClient.getSchemas(this.schemaType).size()
-                    : restClient.getSchemas(this.schemaType, keyword, new String[0]).size();
+            int size = restClient.getSchemas(this.schemaType, keyword).size();
             return size > confRestClient.list().size()
                     ? (SchemaType.PLAIN == this.schemaType
                             ? size - confRestClient.list().size()
@@ -294,17 +287,43 @@ public class SchemaTypePanel extends TypesDirectoryPanel<SchemaTO, SchemaProvide
 
     @Override
     public void onEvent(final IEvent<?> event) {
-        if (event.getPayload() instanceof SchemaTypePanelWithSearch.SchemaSearchEvent) {
-            SchemaTypePanelWithSearch.SchemaSearchEvent payload =
-                    SchemaTypePanelWithSearch.SchemaSearchEvent.class.cast(event.getPayload());
-            final AjaxRequestTarget target = payload.getTarget();
+        if (event.getPayload() instanceof SchemaSearchEvent) {
+            SchemaSearchEvent payload = SchemaSearchEvent.class.cast(event.getPayload());
+            AjaxRequestTarget target = payload.getTarget();
+
             keyword = payload.getKeyword();
+            if (!keyword.startsWith("*")) {
+                keyword = "*" + keyword;
+            }
+            if (!keyword.endsWith("*")) {
+                keyword = keyword + "*";
+            }
 
             updateResultTable(target);
-            ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
         } else {
             super.onEvent(event);
         }
     }
 
+    public static class SchemaSearchEvent implements Serializable {
+
+        private static final long serialVersionUID = -282052400565266028L;
+
+        private final AjaxRequestTarget target;
+
+        private final String keyword;
+
+        SchemaSearchEvent(final AjaxRequestTarget target, final String keyword) {
+            this.target = target;
+            this.keyword = keyword;
+        }
+
+        public AjaxRequestTarget getTarget() {
+            return target;
+        }
+
+        public String getKeyword() {
+            return keyword;
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanelWithSearch.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanelWithSearch.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanelWithSearch.java
deleted file mode 100644
index c822630..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanelWithSearch.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.client.console.panels;
-
-import java.io.Serializable;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
-import org.apache.syncope.common.lib.types.SchemaType;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
-import org.apache.wicket.event.Broadcast;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.Model;
-
-public class SchemaTypePanelWithSearch extends Panel {
-
-    private static final long serialVersionUID = 433565065115855671L;
-
-    private final SchemaTypePanel schemaTypePanel;
-
-    public SchemaTypePanelWithSearch(final String id,
-            final SchemaType schemaType,
-            final PageReference pageReference) {
-        super(id);
-
-        schemaTypePanel = new SchemaTypePanel(id, schemaType, pageReference);
-
-        addSearchBox();
-        add(schemaTypePanel);
-    }
-
-    private void addSearchBox() {
-        final Model<String> queryFilter = new Model<>(StringUtils.EMPTY);
-
-        final WebMarkupContainer searchBoxContainer = new WebMarkupContainer("searchBox");
-        final Form<?> form = new Form<>("form");
-        final AjaxTextFieldPanel filter = new AjaxTextFieldPanel(
-                "filter",
-                "filter",
-                queryFilter,
-                false);
-        filter.hideLabel().setOutputMarkupId(true);
-        form.add(filter);
-
-        form.add(new AjaxSubmitLink("search") {
-
-            private static final long serialVersionUID = -1765773642975892072L;
-
-            @Override
-            protected void onAfterSubmit(final AjaxRequestTarget target, final Form<?> form) {
-                super.onAfterSubmit(target, form);
-
-                send(SchemaTypePanelWithSearch.this,
-                        Broadcast.DEPTH,
-                        new SchemaSearchEvent(target, queryFilter.getObject()));
-            }
-        });
-        searchBoxContainer.add(form);
-
-        add(searchBoxContainer);
-    }
-
-    public static class SchemaSearchEvent implements Serializable {
-
-        private static final long serialVersionUID = -282052400565266028L;
-
-        private final AjaxRequestTarget target;
-
-        private final String keyword;
-
-        public SchemaSearchEvent(final AjaxRequestTarget target, final String keyword) {
-            this.target = target;
-            this.keyword = keyword;
-        }
-
-        public AjaxRequestTarget getTarget() {
-            return target;
-        }
-
-        public String getKeyword() {
-            return keyword;
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemasPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemasPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemasPanel.java
index 7ad295b..62cd907 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemasPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemasPanel.java
@@ -20,11 +20,23 @@ package org.apache.syncope.client.console.panels;
 
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.tabs.Accordion;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.common.lib.types.SchemaType;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.Component;
 import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxCallListener;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
+import org.apache.wicket.event.Broadcast;
 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.form.Form;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.Model;
 
@@ -32,6 +44,8 @@ public class SchemasPanel extends Panel {
 
     private static final long serialVersionUID = -1140213992451232279L;
 
+    private static final String SEARCH_SUBMIT_LINK = "searchSubmitLink";
+
     private final PageReference pageReference;
 
     public SchemasPanel(final String id, final PageReference pageRef) {
@@ -39,14 +53,70 @@ public class SchemasPanel extends Panel {
 
         this.pageReference = pageRef;
 
-        final Accordion accordion = new Accordion("accordionPanel", buildTabList());
+        final Model<String> keywordModel = new Model<>(StringUtils.EMPTY);
+
+        WebMarkupContainer searchBoxContainer = new WebMarkupContainer("searchBox");
+        add(searchBoxContainer);
+
+        final Form<?> form = new Form<>("form");
+        searchBoxContainer.add(form);
+
+        final AjaxTextFieldPanel searchPanel = new AjaxTextFieldPanel(
+                "filter", "filter", keywordModel, true);
+        form.add(searchPanel.hideLabel().setOutputMarkupId(true));
+
+        final AjaxSubmitLink submitLink = new AjaxSubmitLink("search") {
+
+            private static final long serialVersionUID = -1765773642975892072L;
+
+            @Override
+            protected void onAfterSubmit(final AjaxRequestTarget target, final Form<?> form) {
+                super.onAfterSubmit(target, form);
+
+                send(SchemasPanel.this, Broadcast.DEPTH,
+                        new SchemaTypePanel.SchemaSearchEvent(target, keywordModel.getObject()));
+            }
+        };
+        submitLink.setOutputMarkupId(true);
+        submitLink.setMarkupId(SEARCH_SUBMIT_LINK);
+        form.add(submitLink);
+
+        searchPanel.getField().add(AttributeModifier.replace(
+                "onkeydown",
+                Model.of("if(event.keyCode == 13) {event.preventDefault();}")));
+
+        searchPanel.getField().add(new AjaxEventBehavior("onkeydown") {
+
+            private static final long serialVersionUID = -7133385027739964990L;
+
+            @Override
+            protected void onEvent(final AjaxRequestTarget target) {
+                target.appendJavaScript("$('#" + SEARCH_SUBMIT_LINK + "').click();");
+            }
+
+            @Override
+            protected void updateAjaxAttributes(final AjaxRequestAttributes attributes) {
+                super.updateAjaxAttributes(attributes);
+
+                attributes.getAjaxCallListeners().add(new AjaxCallListener() {
+
+                    private static final long serialVersionUID = 7160235486520935153L;
+
+                    @Override
+                    public CharSequence getPrecondition(final Component component) {
+                        return "if (Wicket.Event.keyCode(attrs.event)  == 13) { return true; } else { return false; }";
+                    }
+                });
+            }
+        });
+
+        Accordion accordion = new Accordion("accordionPanel", buildTabList());
         accordion.setOutputMarkupId(true);
         add(accordion);
     }
 
     private List<ITab> buildTabList() {
-
-        final List<ITab> tabs = new ArrayList<>();
+        List<ITab> tabs = new ArrayList<>();
 
         for (final SchemaType schemaType : SchemaType.values()) {
             tabs.add(new AbstractTab(new Model<>(schemaType.name())) {
@@ -55,10 +125,11 @@ public class SchemasPanel extends Panel {
 
                 @Override
                 public Panel getPanel(final String panelId) {
-                    return new SchemaTypePanelWithSearch(panelId, schemaType, pageReference);
+                    return new SchemaTypePanel(panelId, schemaType, pageReference);
                 }
             });
         }
+
         return tabs;
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java
index 933defc..7cdda85 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.java
@@ -184,8 +184,7 @@ public abstract class AbstractSearchPanel extends Panel {
             @Override
             protected Map<String, PlainSchemaTO> load() {
                 final List<PlainSchemaTO> schemas = schemaRestClient.<PlainSchemaTO>getSchemas(
-                        SchemaType.PLAIN,
-                        anyTypeRestClient.read(type).getClasses().toArray(new String[] {}));
+                        SchemaType.PLAIN, null, anyTypeRestClient.read(type).getClasses().toArray(new String[] {}));
 
                 final Map<String, PlainSchemaTO> res = new HashMap<>();
                 for (PlainSchemaTO schema : schemas) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/client/console/src/main/java/org/apache/syncope/client/console/rest/SchemaRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/SchemaRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/SchemaRestClient.java
index 34e91fe..11fd812 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/SchemaRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/SchemaRestClient.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 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;
@@ -57,62 +58,33 @@ public class SchemaRestClient extends BaseRestClient {
                 break;
 
             default:
-                for (AnyTypeTO anyTypeTO : new AnyTypeRestClient().listAnyTypes()) {
-                    if (anyTypeTO.getKind() != AnyTypeKind.USER && anyTypeTO.getKind() != AnyTypeKind.GROUP) {
-                        classes.addAll(anyTypeTO.getClasses());
-                    }
-                }
+                new AnyTypeRestClient().listAnyTypes().stream().filter(
+                        anyTypeTO -> (anyTypeTO.getKind() != AnyTypeKind.USER
+                        && anyTypeTO.getKind() != AnyTypeKind.GROUP)).
+                        forEach((anyTypeTO) -> {
+                            classes.addAll(anyTypeTO.getClasses());
+                        });
         }
-        return getSchemas(schemaType, classes.toArray(new String[] {}));
+        return getSchemas(schemaType, null, classes.toArray(new String[] {}));
     }
 
-    public <T extends SchemaTO> List<T> getSchemas(final SchemaType schemaType, final String typeName) {
-        AnyTypeTO type = null;
+    public <T extends SchemaTO> List<T> getSchemas(
+            final SchemaType schemaType, final String keyword, final String... anyTypeClasses) {
 
-        try {
-            type = getService(AnyTypeService.class).read(typeName);
-        } catch (SyncopeClientException e) {
-            LOG.error("While reading all any types", e);
+        SchemaQuery.Builder builder = new SchemaQuery.Builder().type(schemaType);
+        if (StringUtils.isNotBlank(keyword)) {
+            builder.keyword(keyword);
         }
-
-        if (type == null) {
-            return getSchemas(schemaType);
-        } else {
-            return getSchemas(schemaType, type.getClasses().toArray(new String[] {}));
+        if (anyTypeClasses != null && anyTypeClasses.length > 0) {
+            builder.anyTypeClasses(anyTypeClasses);
         }
-    }
 
-    public <T extends SchemaTO> List<T> getSchemas(final SchemaType schemaType, final String... kind) {
-        return doGetSchemas(schemaType, null, kind);
-    }
-
-    public <T extends SchemaTO> List<T> getSchemas(
-            final SchemaType schemaType, final String keyword, final String... kind) {
-        return doGetSchemas(schemaType, keyword, kind);
-    }
-
-    private <T extends SchemaTO> List<T> doGetSchemas(
-            final SchemaType schemaType, final String keyword, final String... kind) {
         List<T> schemas = new ArrayList<>();
-
         try {
-            SchemaQuery.Builder schemaQuery =
-                    new SchemaQuery.Builder().type(schemaType);
-            if (keyword != null) {
-                schemaQuery.keyword(keyword);
-            }
-
-            if (kind == null || kind.length == 0) {
-                schemas.addAll(getService(SchemaService.class).
-                        <T>list(schemaQuery.build()));
-            } else {
-                schemas.addAll(getService(SchemaService.class).
-                        <T>list(schemaQuery.anyTypeClasses(kind).build()));
-            }
+            schemas.addAll(getService(SchemaService.class).<T>search(builder.build()));
         } catch (SyncopeClientException e) {
-            LOG.error("While getting all {} schemas for {}", schemaType, kind, e);
+            LOG.error("While getting all {} schemas for {}", schemaType, anyTypeClasses, e);
         }
-
         return schemas;
     }
 
@@ -120,7 +92,7 @@ public class SchemaRestClient extends BaseRestClient {
         List<String> schemaNames = Collections.emptyList();
 
         try {
-            schemaNames = getSchemas(schemaType).stream().map(EntityTO::getKey).collect(Collectors.toList());
+            schemaNames = getSchemas(schemaType, null).stream().map(EntityTO::getKey).collect(Collectors.toList());
         } catch (SyncopeClientException e) {
             LOG.error("While getting all user schema names", e);
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrs.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrs.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrs.java
index eb7645b..a7446fe 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrs.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/AbstractAttrs.java
@@ -151,7 +151,7 @@ public abstract class AbstractAttrs<S extends SchemaTO> extends WizardStep imple
         if (anyTypeClasses.isEmpty()) {
             allSchemas = Collections.emptyList();
         } else {
-            allSchemas = schemaRestClient.getSchemas(getSchemaType(), anyTypeClasses.toArray(new String[] {}));
+            allSchemas = schemaRestClient.getSchemas(getSchemaType(), null, anyTypeClasses.toArray(new String[] {}));
         }
 
         scs.clear();

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
index 55baf84..76e4c43 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/BasePage.html
@@ -117,7 +117,7 @@ under the License.
                 <li wicket:id="policiesLI"><a href="#" wicket:id="policies"><i class="fa fa-list"></i><wicket:message key="policies"/></a></li>
                 <li wicket:id="securityquestionsLI"><a href="#" wicket:id="securityquestions"><i class="fa fa-question"></i><wicket:message key="securityQuestions"/></a></li>
                 <li wicket:id="typesLI"><a href="#" wicket:id="types"><i class="fa fa-wrench"></i><wicket:message key="types"/></a></li>
-                <li wicket:id="workflowLI"><a href="#" wicket:id="workflow"><i class="fa fa-share-alt"></i><wicket:message key="workflow"/></a></li>
+                <li wicket:id="workflowLI"><a href="#" wicket:id="workflow"><i class="fa fa-briefcase"></i><wicket:message key="workflow"/></a></li>
               </ul>
             </li>
             <li wicket:id="extensionsLI" class="treeview">

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/client/console/src/main/resources/org/apache/syncope/client/console/panels/SchemaTypePanelWithSearch.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/SchemaTypePanelWithSearch.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/SchemaTypePanelWithSearch.html
deleted file mode 100644
index 6caa8b6..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/SchemaTypePanelWithSearch.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
-  <wicket:panel>
-    <div wicket:id="searchBox">
-      <form wicket:id="form">
-        <div class="form-group input-group">
-          <span wicket:id="filter">[FILTER]</span>
-          <span class="input-group-addon">
-            <a href="#" wicket:id="search"><i class="glyphicon glyphicon-search"></i></a>
-          </span>
-        </div>
-      </form>
-    </div>
-    <div wicket:id="content"></div>
-  </wicket:panel>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/client/console/src/main/resources/org/apache/syncope/client/console/panels/SchemasPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/SchemasPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/SchemasPanel.html
index ce1be06..c1e31f3 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/SchemasPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/SchemasPanel.html
@@ -18,6 +18,17 @@ under the License.
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
   <wicket:panel>
+    <div wicket:id="searchBox">
+      <form wicket:id="form">
+        <div class="form-group input-group">
+          <span wicket:id="filter">[FILTER]</span>
+          <span class="input-group-addon">
+            <a href="#" wicket:id="search"><i class="glyphicon glyphicon-search"></i></a>
+          </span>
+        </div>
+      </form>
+    </div>
+
     <div wicket:id="accordionPanel"></div>
   </wicket:panel>
 </html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
index c7b70cc..0238072 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
@@ -83,7 +83,7 @@ public class SyncopeEnduserSession extends WebSession {
         platformInfo = anonymousClient.getService(SyncopeService.class).platform();
 
         datePlainSchemas = anonymousClient.getService(SchemaService.class).
-                list(new SchemaQuery.Builder().type(SchemaType.PLAIN).build());
+                search(new SchemaQuery.Builder().type(SchemaType.PLAIN).build());
         datePlainSchemas.removeAll(datePlainSchemas.stream().
                 filter(object -> object.getType() != AttrSchemaType.Date).collect(Collectors.toSet()));
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SchemaResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SchemaResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SchemaResource.java
index f6af472..3559bdb 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SchemaResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SchemaResource.java
@@ -94,30 +94,30 @@ public class SchemaResource extends BaseResource {
             final List<SchemaTO> plainSchemas = classes.isEmpty()
                     ? Collections.<SchemaTO>emptyList()
                     : customForm == null || customForm.isEmpty() || customForm.get(SchemaType.PLAIN.name()) == null
-                    ? schemaService.list(
+                    ? schemaService.search(
                             new SchemaQuery.Builder().type(SchemaType.PLAIN).anyTypeClasses(classes).build())
                     : customForm.get(SchemaType.PLAIN.name()).isShow()
-                    ? customizeSchemas(schemaService.list(new SchemaQuery.Builder().type(SchemaType.PLAIN).
+                    ? customizeSchemas(schemaService.search(new SchemaQuery.Builder().type(SchemaType.PLAIN).
                             anyTypeClasses(classes).build()), group, customForm.get(SchemaType.PLAIN.name()).
                             getAttributes())
                     : Collections.<SchemaTO>emptyList();
             final List<SchemaTO> derSchemas = classes.isEmpty()
                     ? Collections.<SchemaTO>emptyList()
                     : customForm == null || customForm.isEmpty() || customForm.get(SchemaType.DERIVED.name()) == null
-                    ? schemaService.list(
+                    ? schemaService.search(
                             new SchemaQuery.Builder().type(SchemaType.DERIVED).anyTypeClasses(classes).build())
                     : customForm.get(SchemaType.DERIVED.name()).isShow()
-                    ? customizeSchemas(schemaService.list(new SchemaQuery.Builder().type(SchemaType.DERIVED).
+                    ? customizeSchemas(schemaService.search(new SchemaQuery.Builder().type(SchemaType.DERIVED).
                             anyTypeClasses(classes).build()), group, customForm.get(SchemaType.DERIVED.name()).
                             getAttributes())
                     : Collections.<SchemaTO>emptyList();
             final List<SchemaTO> virSchemas = classes.isEmpty()
                     ? Collections.<SchemaTO>emptyList()
                     : customForm == null || customForm.isEmpty() || customForm.get(SchemaType.VIRTUAL.name()) == null
-                    ? schemaService.list(
+                    ? schemaService.search(
                             new SchemaQuery.Builder().type(SchemaType.VIRTUAL).anyTypeClasses(classes).build())
                     : customForm.get(SchemaType.VIRTUAL.name()).isShow()
-                    ? customizeSchemas(schemaService.list(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).
+                    ? customizeSchemas(schemaService.search(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).
                             anyTypeClasses(classes).build()), group, customForm.get(SchemaType.VIRTUAL.name()).
                             getAttributes())
                     : Collections.<SchemaTO>emptyList();

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/SchemaQuery.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/SchemaQuery.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/SchemaQuery.java
index 1184853..2c0805a 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/SchemaQuery.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/SchemaQuery.java
@@ -63,7 +63,6 @@ public class SchemaQuery extends AbstractBaseBean {
 
         public Builder keyword(final String keyword) {
             instance.setKeyword(keyword);
-
             return this;
         }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SchemaService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SchemaService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SchemaService.java
index 0768280..a1f983b 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SchemaService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SchemaService.java
@@ -60,12 +60,12 @@ public interface SchemaService extends JAXRSService {
      * @param <T> actual SchemaTO
      * @param query query conditions
      * @return list of schemas with matching type, for the given anyTypeClass if provided,
-     * with names containing keyword if provided
+     * with keys containing keyword if provided
      */
     @GET
     @Path("{type}")
     @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
-    <T extends SchemaTO> List<T> list(@BeanParam SchemaQuery query);
+    <T extends SchemaTO> List<T> search(@BeanParam SchemaQuery query);
 
     /**
      * Returns schema matching the given type and key.

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/core/logic/src/main/java/org/apache/syncope/core/logic/SchemaLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/SchemaLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/SchemaLogic.java
index 8f7dbc3..f1ce6ff 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/SchemaLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/SchemaLogic.java
@@ -145,24 +145,21 @@ public class SchemaLogic extends AbstractTransactionalLogic<SchemaTO> {
     }
 
     @PreAuthorize("isAuthenticated()")
-    @SuppressWarnings({ "unchecked", "Convert2Lambda" })
-    public <T extends SchemaTO> List<T> list(
-            final SchemaType schemaType, final List<String> anyTypeClasses) {
+    public <T extends SchemaTO> List<T> list(final SchemaType schemaType, final List<String> anyTypeClasses) {
         return doSearch(schemaType, anyTypeClasses, null);
     }
 
     @PreAuthorize("isAuthenticated()")
-    @SuppressWarnings("unchecked")
     public <T extends SchemaTO> List<T> search(
             final SchemaType schemaType, final List<String> anyTypeClasses, final String keyword) {
-        return doSearch(schemaType, anyTypeClasses,
-                keyword != null
-                        ? StringUtils.replaceChars(keyword, "*", "%")
-                        : null);
+
+        return doSearch(schemaType, anyTypeClasses, keyword == null ? null : keyword.replace('*', '%'));
     }
 
+    @SuppressWarnings({ "unchecked", "Convert2Lambda" })
     private <T extends SchemaTO> List<T> doSearch(
             final SchemaType schemaType, final List<String> anyTypeClasses, final String keyword) {
+
         List<AnyTypeClass> classes = new ArrayList<>(anyTypeClasses == null ? 0 : anyTypeClasses.size());
         if (anyTypeClasses != null) {
             anyTypeClasses.remove(AnyTypeKind.USER.name());
@@ -181,7 +178,9 @@ public class SchemaLogic extends AbstractTransactionalLogic<SchemaTO> {
         switch (schemaType) {
             case VIRTUAL:
                 result = (classes.isEmpty()
-                        ? (keyword == null ? virSchemaDAO.findAll() : virSchemaDAO.search(keyword))
+                        ? keyword == null
+                                ? virSchemaDAO.findAll()
+                                : virSchemaDAO.findByKeyword(keyword)
                         : virSchemaDAO.findByAnyTypeClasses(classes)).
                         stream().map(new Function<VirSchema, T>() {
 
@@ -194,7 +193,9 @@ public class SchemaLogic extends AbstractTransactionalLogic<SchemaTO> {
 
             case DERIVED:
                 result = (classes.isEmpty()
-                        ? (keyword == null ? derSchemaDAO.findAll() : derSchemaDAO.search(keyword))
+                        ? keyword == null
+                                ? derSchemaDAO.findAll()
+                                : derSchemaDAO.findByKeyword(keyword)
                         : derSchemaDAO.findByAnyTypeClasses(classes)).
                         stream().map(new Function<DerSchema, T>() {
 
@@ -208,7 +209,9 @@ public class SchemaLogic extends AbstractTransactionalLogic<SchemaTO> {
             case PLAIN:
             default:
                 result = (classes.isEmpty()
-                        ? (keyword == null ? plainSchemaDAO.findAll() : plainSchemaDAO.search(keyword))
+                        ? keyword == null
+                                ? plainSchemaDAO.findAll()
+                                : plainSchemaDAO.findByKeyword(keyword)
                         : plainSchemaDAO.findByAnyTypeClasses(classes)).
                         stream().map(new Function<PlainSchema, T>() {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SchemaDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SchemaDAO.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SchemaDAO.java
index de2df90..0f8a10d 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SchemaDAO.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/SchemaDAO.java
@@ -29,10 +29,10 @@ public interface SchemaDAO<S extends Schema> extends DAO<S> {
 
     List<S> findByAnyTypeClasses(Collection<AnyTypeClass> anyTypeClasses);
 
+    List<S> findByKeyword(String keyword);
+
     List<S> findAll();
-    
-    List<S> search(String keyword);
-    
+
     S save(S derSchema);
 
     void delete(String key);

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADerSchemaDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADerSchemaDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADerSchemaDAO.java
index 98e1bea..d0a1ade 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADerSchemaDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPADerSchemaDAO.java
@@ -56,18 +56,18 @@ public class JPADerSchemaDAO extends AbstractDAO<DerSchema> implements DerSchema
     }
 
     @Override
-    public List<DerSchema> findAll() {
+    public List<DerSchema> findByKeyword(final String keyword) {
         TypedQuery<DerSchema> query = entityManager().createQuery(
-                "SELECT e FROM " + JPADerSchema.class.getSimpleName() + " e", DerSchema.class);
+                "SELECT e FROM " + JPADerSchema.class.getSimpleName() + " e"
+                + " WHERE e.id LIKE :keyword", DerSchema.class);
+        query.setParameter("keyword", keyword);
         return query.getResultList();
     }
 
     @Override
-    public List<DerSchema> search(final String keyword) {
+    public List<DerSchema> findAll() {
         TypedQuery<DerSchema> query = entityManager().createQuery(
-                "SELECT e FROM " + JPADerSchema.class.getSimpleName() + " e"
-                + " WHERE e.id LIKE :keyword", DerSchema.class);
-        query.setParameter("keyword", keyword);
+                "SELECT e FROM " + JPADerSchema.class.getSimpleName() + " e", DerSchema.class);
         return query.getResultList();
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java
index 8edc696..b431b1f 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java
@@ -85,18 +85,18 @@ public class JPAPlainSchemaDAO extends AbstractDAO<PlainSchema> implements Plain
     }
 
     @Override
-    public List<PlainSchema> findAll() {
+    public List<PlainSchema> findByKeyword(final String keyword) {
         TypedQuery<PlainSchema> query = entityManager().createQuery(
-                "SELECT e FROM " + JPAPlainSchema.class.getSimpleName() + " e", PlainSchema.class);
+                "SELECT e FROM " + JPAPlainSchema.class.getSimpleName() + " e"
+                + " WHERE e.id LIKE :keyword", PlainSchema.class);
+        query.setParameter("keyword", keyword);
         return query.getResultList();
     }
 
     @Override
-    public List<PlainSchema> search(final String keyword) {
+    public List<PlainSchema> findAll() {
         TypedQuery<PlainSchema> query = entityManager().createQuery(
-                "SELECT e FROM " + JPAPlainSchema.class.getSimpleName() + " e"
-                + " WHERE e.id LIKE :keyword", PlainSchema.class);
-        query.setParameter("keyword", keyword);
+                "SELECT e FROM " + JPAPlainSchema.class.getSimpleName() + " e", PlainSchema.class);
         return query.getResultList();
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
index b42b40a..8a669d4 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
@@ -108,18 +108,18 @@ public class JPAVirSchemaDAO extends AbstractDAO<VirSchema> implements VirSchema
     }
 
     @Override
-    public List<VirSchema> findAll() {
+    public List<VirSchema> findByKeyword(final String keyword) {
         TypedQuery<VirSchema> query = entityManager().createQuery(
-                "SELECT e FROM " + JPAVirSchema.class.getSimpleName() + " e", VirSchema.class);
+                "SELECT e FROM " + JPAVirSchema.class.getSimpleName() + " e"
+                + " WHERE e.id LIKE :keyword", VirSchema.class);
+        query.setParameter("keyword", keyword);
         return query.getResultList();
     }
 
     @Override
-    public List<VirSchema> search(final String keyword) {
+    public List<VirSchema> findAll() {
         TypedQuery<VirSchema> query = entityManager().createQuery(
-                "SELECT e FROM " + JPAVirSchema.class.getSimpleName() + " e"
-                + " WHERE e.id LIKE :keyword", VirSchema.class);
-        query.setParameter("keyword", keyword);
+                "SELECT e FROM " + JPAVirSchema.class.getSimpleName() + " e", VirSchema.class);
         return query.getResultList();
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/DerSchemaTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/DerSchemaTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/DerSchemaTest.java
index 5c047c5..b060c0a 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/DerSchemaTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/DerSchemaTest.java
@@ -48,7 +48,7 @@ public class DerSchemaTest extends AbstractTest {
 
     @Test
     public void search() {
-        List<DerSchema> schemas = derSchemaDAO.search("mderivedd%");
+        List<DerSchema> schemas = derSchemaDAO.findByKeyword("mderivedd%");
         assertEquals(1, schemas.size());
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainSchemaTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainSchemaTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainSchemaTest.java
index 77de66f..3f18224 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainSchemaTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainSchemaTest.java
@@ -57,7 +57,7 @@ public class PlainSchemaTest extends AbstractTest {
 
     @Test
     public void search() {
-        List<PlainSchema> schemas = plainSchemaDAO.search("fullna%");
+        List<PlainSchema> schemas = plainSchemaDAO.findByKeyword("fullna%");
         assertEquals(1, schemas.size());
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/VirSchemaTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/VirSchemaTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/VirSchemaTest.java
index 1996575..b723f24 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/VirSchemaTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/VirSchemaTest.java
@@ -55,7 +55,7 @@ public class VirSchemaTest extends AbstractTest {
 
     @Test
     public void search() {
-        List<VirSchema> schemas = virSchemaDAO.search("rvirtuald%");
+        List<VirSchema> schemas = virSchemaDAO.findByKeyword("rvirtuald%");
         assertEquals(1, schemas.size());
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SchemaServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SchemaServiceImpl.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SchemaServiceImpl.java
index 10db5b5..ac5f5c6 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SchemaServiceImpl.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SchemaServiceImpl.java
@@ -52,7 +52,7 @@ public class SchemaServiceImpl extends AbstractServiceImpl implements SchemaServ
     }
 
     @Override
-    public <T extends SchemaTO> List<T> list(final SchemaQuery query) {
+    public <T extends SchemaTO> List<T> search(final SchemaQuery query) {
         return logic.search(query.getType(), query.getAnyTypeClasses(), query.getKeyword());
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractTypesITCase.java
----------------------------------------------------------------------
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 1edadab..bf8ebff 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
@@ -27,10 +27,10 @@ import org.junit.jupiter.api.BeforeEach;
 public abstract class AbstractTypesITCase extends AbstractConsoleITCase {
 
     protected static final String PLAIN_DATATABLE_PATH = "body:content:tabbedPanel:panel:"
-            + "accordionPanel:tabs:0:body:content:content:container:content:searchContainer:resultTable";
+            + "accordionPanel:tabs:0:body:content:container:content:searchContainer:resultTable";
 
     protected static final String VIRTUAL_DATATABLE_PATH = "body:content:tabbedPanel:panel:"
-            + "accordionPanel:tabs:2:body:content:content:container:content:searchContainer:resultTable";
+            + "accordionPanel:tabs:2:body:content:container:content:searchContainer:resultTable";
 
     protected static final String DATATABLE_PATH =
             "body:content:tabbedPanel:panel:container:content:searchContainer:resultTable";
@@ -88,19 +88,19 @@ public abstract class AbstractTypesITCase extends AbstractConsoleITCase {
     protected void createPlainSchema(final String key) {
         browsingToPlainSchemas();
         TESTER.clickLink(
-                "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:content:container:content:add");
+                "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:container:content:add");
 
         TESTER.assertComponent(
-                "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:content:outerObjectsRepeater:0:outer",
+                "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer",
                 Modal.class);
 
         final FormTester formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:"
-                + "accordionPanel:tabs:0:body:content:content:outerObjectsRepeater:0:outer:form");
+                + "accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:form");
         formTester.setValue("content:details:form:key:textField", key);
         formTester.setValue("content:details:form:type:dropDownChoiceField", "3");
 
-        TESTER.clickLink("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:0:body:content:content:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
+        TESTER.clickLink("body:content:tabbedPanel:panel:"
+                + "accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
 
         TESTER.assertInfoMessages("Operation executed successfully");
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/fit/core-reference/src/test/java/org/apache/syncope/fit/console/SchemasITCase.java
----------------------------------------------------------------------
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 695011f..50aaefa 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
@@ -45,32 +45,32 @@ public class SchemasITCase extends AbstractTypesITCase {
                 Constants.ON_CLICK);
 
         TESTER.clickLink(
-                "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:content:outerObjectsRepeater:1:outer:"
+                "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:1:outer:"
                 + "container:content:togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
 
         TESTER.assertComponent(
                 "body:content:tabbedPanel:"
-                + "panel:accordionPanel:tabs:0:body:content:content:outerObjectsRepeater:0:outer:"
+                + "panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:"
                 + "form:content:kindForm:kind:dropDownChoiceField", DropDownChoice.class);
     }
 
     @Test
     public void createPlainSchema() {
         browsingToPlainSchemas();
-        TESTER.clickLink("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:0:body:content:content:container:content:add");
+        TESTER.clickLink(
+                "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:container:content:add");
 
-        TESTER.assertComponent("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:0:body:content:content:outerObjectsRepeater:0:outer",
+        TESTER.assertComponent(
+                "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer",
                 Modal.class);
 
         final FormTester formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:"
-                + "accordionPanel:tabs:0:body:content:content:outerObjectsRepeater:0:outer:form");
+                + "accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:form");
         formTester.setValue("content:details:form:key:textField", "zBoolean");
         formTester.setValue("content:details:form:type:dropDownChoiceField", "3");
 
-        TESTER.clickLink("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:0:body:content:content:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
+        TESTER.clickLink("body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:"
+                + "outer:dialog:footer:inputs:0:submit");
 
         TESTER.assertInfoMessages("Operation executed successfully");
 
@@ -88,20 +88,21 @@ public class SchemasITCase extends AbstractTypesITCase {
         assertNotNull(result);
 
         TESTER.executeAjaxEvent(result.getPageRelativePath(), Constants.ON_CLICK);
-        TESTER.clickLink("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:0:body:content:content:outerObjectsRepeater:1:outer:"
+        TESTER.clickLink(
+                "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:1:outer:"
                 + "container:content:togglePanelContainer:container:actions:actions:actionRepeater:0:action:action");
 
-        TESTER.assertComponent("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:0:body:content:content:outerObjectsRepeater:0:outer:"
+        TESTER.assertComponent(
+                "body:content:tabbedPanel:"
+                + "panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:"
                 + "form:content:kindForm:kind:dropDownChoiceField", DropDownChoice.class);
 
-        FormTester formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:0:body:content:content:outerObjectsRepeater:0:outer:form");
+        FormTester formTester = TESTER.newFormTester(
+                "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:form");
         formTester.setValue("content:details:form:multivalue:checkboxField", "true");
 
-        TESTER.clickLink("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:0:body:content:content:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit",
+        TESTER.clickLink("body:content:tabbedPanel:panel:"
+                + "accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit",
                 true);
 
         TESTER.assertInfoMessages("Operation executed successfully");
@@ -112,20 +113,20 @@ public class SchemasITCase extends AbstractTypesITCase {
         browsingToPlainSchemas();
         //create new Plain Schema
         final String schemaName = "zStringDelete";
-        TESTER.clickLink("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:0:body:content:content:container:content:add");
+        TESTER.clickLink(
+                "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:container:content:add");
 
-        TESTER.assertComponent("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:0:body:content:content:outerObjectsRepeater:0:outer",
+        TESTER.assertComponent(
+                "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer",
                 Modal.class);
 
         final FormTester formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:"
-                + "accordionPanel:tabs:0:body:content:content:outerObjectsRepeater:0:outer:form");
+                + "accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:form");
         formTester.setValue("content:details:form:key:textField", schemaName);
         formTester.setValue("content:details:form:type:dropDownChoiceField", "0");
 
-        TESTER.clickLink("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:0:body:content:content:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
+        TESTER.clickLink("body:content:tabbedPanel:panel:"
+                + "accordionPanel:tabs:0:body:content:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit");
 
         TESTER.assertInfoMessages("Operation executed successfully");;
 
@@ -144,12 +145,12 @@ public class SchemasITCase extends AbstractTypesITCase {
         TESTER.executeAjaxEvent(result.getPageRelativePath(), Constants.ON_CLICK);
 
         TESTER.getRequest().addParameter("confirm", "true");
-        TESTER.clickLink("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:0:body:content:content:outerObjectsRepeater:1:outer:"
+        TESTER.clickLink(
+                "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:1:outer:"
                 + "container:content:togglePanelContainer:container:actions:actions:actionRepeater:1:action:action");
 
-        TESTER.executeAjaxEvent(TESTER.getComponentFromLastRenderedPage("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:0:body:content:content:outerObjectsRepeater:1:outer:"
+        TESTER.executeAjaxEvent(TESTER.getComponentFromLastRenderedPage(
+                "body:content:tabbedPanel:panel:accordionPanel:tabs:0:body:content:outerObjectsRepeater:1:outer:"
                 + "container:content:togglePanelContainer:container:actions:actions:actionRepeater:1:action:action"),
                 Constants.ON_CLICK);
 
@@ -162,19 +163,19 @@ public class SchemasITCase extends AbstractTypesITCase {
     @Test
     public void createVirtualSchema() {
         browsingToVirtualSchemas();
-        TESTER.clickLink("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:2:body:content:content:container:content:add");
+        TESTER.clickLink(
+                "body:content:tabbedPanel:panel:accordionPanel:tabs:2:body:content:container:content:add");
 
-        TESTER.assertComponent("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:2:body:content:content:outerObjectsRepeater:0:outer",
+        TESTER.assertComponent(
+                "body:content:tabbedPanel:panel:accordionPanel:tabs:2:body:content:outerObjectsRepeater:0:outer",
                 Modal.class);
 
-        final FormTester formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:2:body:content:content:outerObjectsRepeater:0:outer:form");
+        final FormTester formTester = TESTER.newFormTester("body:content:tabbedPanel:panel:"
+                + "accordionPanel:tabs:2:body:content:outerObjectsRepeater:0:outer:form");
 
         formTester.setValue("content:details:form:resource:dropDownChoiceField", "0");
         TESTER.executeAjaxEvent("body:content:tabbedPanel:panel:"
-                + "accordionPanel:tabs:2:body:content:content:outerObjectsRepeater:0:outer:form:"
+                + "accordionPanel:tabs:2:body:content:outerObjectsRepeater:0:outer:form:"
                 + "content:details:form:resource:dropDownChoiceField", Constants.ON_CHANGE);
 
         formTester.setValue("content:details:form:key:textField", "mynewvir");
@@ -182,9 +183,8 @@ public class SchemasITCase extends AbstractTypesITCase {
         formTester.setValue("content:details:form:anyType:dropDownChoiceField", "0");
         formTester.setValue("content:details:form:extAttrName:textField", "virattr");
 
-        TESTER.executeAjaxEvent("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:2:body:content:content:outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit",
-                Constants.ON_CLICK);
+        TESTER.executeAjaxEvent("body:content:tabbedPanel:panel:accordionPanel:tabs:2:body:content:"
+                + "outerObjectsRepeater:0:outer:dialog:footer:inputs:0:submit", Constants.ON_CLICK);
 
         TESTER.assertInfoMessages("Operation executed successfully");
         TESTER.cleanupFeedbackMessages();
@@ -194,12 +194,12 @@ public class SchemasITCase extends AbstractTypesITCase {
         TESTER.executeAjaxEvent(result.getPageRelativePath(), Constants.ON_CLICK);
 
         TESTER.getRequest().addParameter("confirm", "true");
-        TESTER.clickLink("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:2:body:content:content:outerObjectsRepeater:1:outer:"
+        TESTER.clickLink(
+                "body:content:tabbedPanel:panel:accordionPanel:tabs:2:body:content:outerObjectsRepeater:1:outer:"
                 + "container:content:togglePanelContainer:container:actions:actions:actionRepeater:1:action:action");
 
-        TESTER.executeAjaxEvent(TESTER.getComponentFromLastRenderedPage("body:content:tabbedPanel:panel:accordionPanel:"
-                + "tabs:2:body:content:content:outerObjectsRepeater:1:outer:"
+        TESTER.executeAjaxEvent(TESTER.getComponentFromLastRenderedPage(
+                "body:content:tabbedPanel:panel:accordionPanel:tabs:2:body:content:outerObjectsRepeater:1:outer:"
                 + "container:content:togglePanelContainer:container:actions:actions:actionRepeater:1:action:action"),
                 Constants.ON_CLICK);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/fit/core-reference/src/test/java/org/apache/syncope/fit/core/DerSchemaITCase.java
----------------------------------------------------------------------
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 daa9024..e75e6ae 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
@@ -38,22 +38,18 @@ import org.junit.jupiter.api.Test;
 public class DerSchemaITCase extends AbstractITCase {
 
     @Test
-    public void list() {
-        List<DerSchemaTO> derSchemas = schemaService.list(new SchemaQuery.Builder().type(SchemaType.DERIVED).build());
-        assertFalse(derSchemas.isEmpty());
-        for (DerSchemaTO derivedSchemaTO : derSchemas) {
-            assertNotNull(derivedSchemaTO);
-        }
-    }
-
-    @Test
     public void search() {
-        List<DerSchemaTO> derSchemas =
-                schemaService.list(new SchemaQuery.Builder().type(SchemaType.DERIVED).keyword("mderivedd*").build());
-        assertFalse(derSchemas.isEmpty());
-        for (DerSchemaTO derivedSchemaTO : derSchemas) {
-            assertNotNull(derivedSchemaTO);
-        }
+        List<DerSchemaTO> schemas = schemaService.search(new SchemaQuery.Builder().type(SchemaType.DERIVED).build());
+        assertFalse(schemas.isEmpty());
+        schemas.forEach(schemaTO -> {
+            assertNotNull(schemaTO);
+        });
+
+        schemas = schemaService.search(new SchemaQuery.Builder().type(SchemaType.DERIVED).keyword("mder*").build());
+        assertFalse(schemas.isEmpty());
+        schemas.forEach(schemaTO -> {
+            assertNotNull(schemaTO);
+        });
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/fit/core-reference/src/test/java/org/apache/syncope/fit/core/MultitenancyITCase.java
----------------------------------------------------------------------
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 7f23c31..9a11031 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
@@ -101,8 +101,7 @@ public class MultitenancyITCase extends AbstractITCase {
 
     @Test
     public void readPlainSchemas() {
-        assertEquals(13, adminClient.getService(SchemaService.class).
-                list(new SchemaQuery.Builder().type(SchemaType.PLAIN).build()).size());
+        assertEquals(13, adminClient.getService(SchemaService.class).search(new SchemaQuery.Builder().type(SchemaType.PLAIN).build()).size());
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/fit/core-reference/src/test/java/org/apache/syncope/fit/core/PlainSchemaITCase.java
----------------------------------------------------------------------
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 48ed9b4..7223191 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
@@ -253,27 +253,23 @@ public class PlainSchemaITCase extends AbstractITCase {
     }
 
     @Test
-    public void list() {
-        List<PlainSchemaTO> schemas = schemaService.list(new SchemaQuery.Builder().type(SchemaType.PLAIN).build());
+    public void search() {
+        List<PlainSchemaTO> schemas = schemaService.search(new SchemaQuery.Builder().type(SchemaType.PLAIN).build());
         assertFalse(schemas.isEmpty());
         schemas.forEach(schemaTO -> {
             assertNotNull(schemaTO);
         });
-    }
 
-    @Test
-    public void search() {
-        List<PlainSchemaTO> schemas =
-                schemaService.list(new SchemaQuery.Builder().type(SchemaType.PLAIN).keyword("fullna*").build());
+        schemas = schemaService.search(new SchemaQuery.Builder().type(SchemaType.PLAIN).keyword("fullna*").build());
         assertFalse(schemas.isEmpty());
-        for (PlainSchemaTO schemaTO : schemas) {
+        schemas.forEach(schemaTO -> {
             assertNotNull(schemaTO);
-        }
+        });
     }
 
     @Test
-    public void listByAnyTypeClass() {
-        List<PlainSchemaTO> userSchemas = schemaService.list(
+    public void searchByAnyTypeClass() {
+        List<PlainSchemaTO> userSchemas = schemaService.search(
                 new SchemaQuery.Builder().type(SchemaType.PLAIN).anyTypeClass("minimal user").build());
 
         assertTrue(userSchemas.stream().anyMatch(object -> "fullname".equals(object.getKey())));

http://git-wip-us.apache.org/repos/asf/syncope/blob/e82e43cd/fit/core-reference/src/test/java/org/apache/syncope/fit/core/VirSchemaITCase.java
----------------------------------------------------------------------
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 af9d171..e7a58ac 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
@@ -42,22 +42,18 @@ import org.junit.jupiter.api.Test;
 public class VirSchemaITCase extends AbstractITCase {
 
     @Test
-    public void list() {
-        List<VirSchemaTO> vSchemas = schemaService.list(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).build());
-        assertFalse(vSchemas.isEmpty());
-        for (VirSchemaTO vSchemaTO : vSchemas) {
-            assertNotNull(vSchemaTO);
-        }
-    }
-
-    @Test
     public void search() {
-        List<VirSchemaTO> vSchemas =
-                schemaService.list(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).keyword("rvirtuald*").build());
-        assertFalse(vSchemas.isEmpty());
-        for (VirSchemaTO vSchemaTO : vSchemas) {
-            assertNotNull(vSchemaTO);
-        }
+        List<VirSchemaTO> schemas = schemaService.search(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).build());
+        assertFalse(schemas.isEmpty());
+        schemas.forEach(schemaTO -> {
+            assertNotNull(schemaTO);
+        });
+
+        schemas = schemaService.search(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).keyword("rvirtual*").build());
+        assertFalse(schemas.isEmpty());
+        schemas.forEach(schemaTO -> {
+            assertNotNull(schemaTO);
+        });
     }
 
     @Test
@@ -104,7 +100,7 @@ public class VirSchemaITCase extends AbstractITCase {
     public void anonymous() {
         SchemaService unauthenticated = clientFactory.create().getService(SchemaService.class);
         try {
-            unauthenticated.list(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).build());
+            unauthenticated.search(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).build());
             fail("This should not happen");
         } catch (AccessControlException e) {
             assertNotNull(e);
@@ -113,7 +109,7 @@ public class VirSchemaITCase extends AbstractITCase {
         SchemaService anonymous = clientFactory.create(
                 new AnonymousAuthenticationHandler(ANONYMOUS_UNAME, ANONYMOUS_KEY)).
                 getService(SchemaService.class);
-        assertFalse(anonymous.list(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).build()).isEmpty());
+        assertFalse(anonymous.search(new SchemaQuery.Builder().type(SchemaType.VIRTUAL).build()).isEmpty());
     }
 
     @Test