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 2020/10/20 10:28:36 UTC

[syncope] branch 2_1_X updated: [SYNCOPE-1594] Adding top search bar for user requests and forms

This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 2_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/2_1_X by this push:
     new 3a6a018  [SYNCOPE-1594] Adding top search bar for user requests and forms
3a6a018 is described below

commit 3a6a0180fa74553059543ef70c933323093da7db
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Tue Oct 20 12:28:05 2020 +0200

    [SYNCOPE-1594] Adding top search bar for user requests and forms
---
 .../wicket/markup/html/form/FieldPanel.java        |  3 +-
 .../syncope/client/console/pages/UserRequests.java |  8 +-
 .../console/panels/UserRequestDirectoryPanel.java  | 41 ++++++----
 .../panels/UserRequestFormDirectoryPanel.java      | 92 ++++++++++-----------
 .../client/console/panels/UserRequestsPanel.java   | 88 ++++++++++++++++++++
 .../client/console/rest/UserRequestRestClient.java | 61 +++++++++-----
 .../console/widgets/UserRequestFormsWidget.java    |  6 +-
 .../client/console/panels/UserRequestsPanel.html   | 36 +++++++++
 .../resources/UserRequestCancelResource.java       |  4 +-
 .../resources/UserRequestsFormsResource.java       | 14 ++--
 .../enduser/resources/UserRequestsResource.java    | 12 ++-
 .../resources/UserRequestsStartResource.java       |  3 +-
 .../syncope/core/logic/UserRequestLogic.java       | 11 +--
 .../rest/api/beans/UserRequestFormQuery.java       | 55 -------------
 .../rest/api/service/UserRequestService.java       |  9 +--
 .../rest/cxf/service/UserRequestServiceImpl.java   | 26 +++---
 .../syncope/fit/core/AuthenticationITCase.java     |  6 +-
 .../apache/syncope/fit/core/UserRequestITCase.java | 94 +++++++++++-----------
 .../apache/syncope/fit/core/UserSelfITCase.java    | 64 +++++++--------
 19 files changed, 365 insertions(+), 268 deletions(-)

diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/FieldPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/FieldPanel.java
index 0971c1d..1aa721a 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/FieldPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/FieldPanel.java
@@ -98,6 +98,7 @@ public abstract class FieldPanel<T extends Serializable> extends AbstractFieldPa
         return this;
     }
 
+    @Override
     public FieldPanel<T> setReadOnly(final boolean readOnly) {
         field.setEnabled(!readOnly);
         return this;
@@ -148,7 +149,7 @@ public abstract class FieldPanel<T extends Serializable> extends AbstractFieldPa
                 }
             }
         });
-        
+
         return this;
     }
 
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 c23e1ad..401d085 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
@@ -24,6 +24,7 @@ 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.UserRequestsPanel;
 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;
@@ -48,7 +49,7 @@ public class UserRequests extends BasePage {
     }
 
     private List<ITab> buildTabList() {
-        final List<ITab> tabs = new ArrayList<>();
+        List<ITab> tabs = new ArrayList<>();
 
         tabs.add(new AbstractTab(new ResourceModel("userRequestForms")) {
 
@@ -56,7 +57,7 @@ public class UserRequests extends BasePage {
 
             @Override
             public Panel getPanel(final String panelId) {
-                return new UserRequestFormDirectoryPanel(panelId, getPageReference());
+                return new UserRequestsPanel(panelId, new UserRequestFormDirectoryPanel("inner", getPageReference()));
             }
         });
 
@@ -66,9 +67,10 @@ public class UserRequests extends BasePage {
 
             @Override
             public Panel getPanel(final String panelId) {
-                return new UserRequestDirectoryPanel(panelId, getPageReference());
+                return new UserRequestsPanel(panelId, new UserRequestDirectoryPanel("inner", getPageReference()));
             }
         });
+
         return tabs;
     }
 }
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 2334409..2c5925d 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
@@ -29,6 +29,7 @@ import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.commons.DirectoryDataProvider;
 import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.panels.UserRequestDirectoryPanel.UserRequestProvider;
+import org.apache.syncope.client.console.panels.UserRequestsPanel.UserRequestSearchEvent;
 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.form.ActionLink;
@@ -39,10 +40,12 @@ import org.apache.syncope.common.lib.types.FlowableEntitlement;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
+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.IModel;
+import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
 
 public class UserRequestDirectoryPanel
@@ -52,8 +55,10 @@ public class UserRequestDirectoryPanel
 
     private static final String PREF_USER_REQUEST_PAGINATOR_ROWS = "userrequest.paginator.rows";
 
-    public UserRequestDirectoryPanel(final String id, final PageReference pageReference) {
-        super(id, pageReference, true);
+    private String keyword;
+
+    public UserRequestDirectoryPanel(final String id, final PageReference pageRef) {
+        super(id, pageRef, true);
         disableCheckBoxes();
         setFooterVisibility(false);
         modal.size(Modal.Size.Large);
@@ -119,14 +124,24 @@ public class UserRequestDirectoryPanel
 
     @Override
     protected Collection<ActionLink.ActionType> getBatches() {
-        return Collections.<ActionLink.ActionType>emptyList();
+        return Collections.emptyList();
     }
 
-    protected static class UserRequestProvider extends DirectoryDataProvider<UserRequest> {
+    @Override
+    public void onEvent(final IEvent<?> event) {
+        if (event.getPayload() instanceof UserRequestSearchEvent) {
+            UserRequestSearchEvent payload = UserRequestSearchEvent.class.cast(event.getPayload());
+            keyword = payload.getKeyword();
+
+            updateResultTable(payload.getTarget());
+        } else {
+            super.onEvent(event);
+        }
+    }
 
-        private static final long serialVersionUID = -1392420250782313734L;
+    protected final class UserRequestProvider extends DirectoryDataProvider<UserRequest> {
 
-        private final UserRequestRestClient restClient = new UserRequestRestClient();
+        private static final long serialVersionUID = -1392420250782313734L;
 
         public UserRequestProvider(final int paginatorRows) {
             super(paginatorRows);
@@ -137,25 +152,17 @@ public class UserRequestDirectoryPanel
         @Override
         public Iterator<UserRequest> iterator(final long first, final long count) {
             int page = ((int) first / paginatorRows);
-            return restClient.getUserRequests((page < 0 ? 0 : page) + 1, paginatorRows, getSort()).iterator();
+            return restClient.listRequests(keyword, (page < 0 ? 0 : page) + 1, paginatorRows, getSort()).iterator();
         }
 
         @Override
         public long size() {
-            return restClient.countUserRequests();
+            return restClient.countRequests(keyword);
         }
 
         @Override
         public IModel<UserRequest> model(final UserRequest request) {
-            return new IModel<UserRequest>() {
-
-                private static final long serialVersionUID = -2566070996511906708L;
-
-                @Override
-                public UserRequest getObject() {
-                    return request;
-                }
-            };
+            return Model.of(request);
         }
     }
 }
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 b3f9091..f8535cc 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
@@ -18,8 +18,6 @@
  */
 package org.apache.syncope.client.console.panels;
 
-import static org.apache.syncope.client.console.panels.TogglePanel.HEADER_FIRST_ABBREVIATION;
-
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -35,6 +33,7 @@ import org.apache.syncope.client.console.layout.AnyLayoutUtils;
 import org.apache.syncope.client.console.rest.UserRequestRestClient;
 import org.apache.syncope.client.console.panels.UserRequestFormDirectoryPanel.UserRequestFormProvider;
 import org.apache.syncope.client.console.pages.BasePage;
+import org.apache.syncope.client.console.panels.UserRequestsPanel.UserRequestSearchEvent;
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
 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;
@@ -53,6 +52,7 @@ import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 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.ajax.markup.html.modal.ModalWindow;
 import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
@@ -71,7 +71,7 @@ public class UserRequestFormDirectoryPanel
 
     private final AnyTypeRestClient anyTypeRestClient = new AnyTypeRestClient();
 
-    protected final BaseModal<UserRequestForm> manageFormModal = new BaseModal<UserRequestForm>("outer") {
+    private final BaseModal<UserRequestForm> manageFormModal = new BaseModal<UserRequestForm>("outer") {
 
         private static final long serialVersionUID = 389935548143327858L;
 
@@ -81,11 +81,12 @@ public class UserRequestFormDirectoryPanel
             addSubmitButton();
             size(Modal.Size.Large);
         }
-
     };
 
-    public UserRequestFormDirectoryPanel(final String id, final PageReference pageReference) {
-        super(id, pageReference, true);
+    private String keyword;
+
+    public UserRequestFormDirectoryPanel(final String id, final PageReference pageRef) {
+        super(id, pageRef, true);
         disableCheckBoxes();
         setFooterVisibility(false);
         modal.size(Modal.Size.Large);
@@ -164,10 +165,14 @@ public class UserRequestFormDirectoryPanel
 
             @Override
             public void onClick(final AjaxRequestTarget target, final UserRequestForm ignore) {
-                claimForm(model.getObject().getTaskId());
-                SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
+                try {
+                    restClient.claimForm(model.getObject().getTaskId());
+                    SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
+                    target.add(container);
+                } catch (Exception e) {
+                    SyncopeConsoleSession.get().onException(e);
+                }
                 ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
-                target.add(container);
             }
 
         }, ActionLink.ActionType.CLAIM, FlowableEntitlement.USER_REQUEST_FORM_CLAIM);
@@ -178,10 +183,14 @@ public class UserRequestFormDirectoryPanel
 
             @Override
             public void onClick(final AjaxRequestTarget target, final UserRequestForm ignore) {
-                unclaimForm(model.getObject().getTaskId());
-                SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
-                UserRequestFormDirectoryPanel.this.getTogglePanel().close(target);
-                target.add(container);
+                try {
+                    restClient.unclaimForm(model.getObject().getTaskId());
+                    SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
+                    UserRequestFormDirectoryPanel.this.getTogglePanel().close(target);
+                    target.add(container);
+                } catch (Exception e) {
+                    SyncopeConsoleSession.get().onException(e);
+                }
                 ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
             }
 
@@ -292,11 +301,26 @@ public class UserRequestFormDirectoryPanel
         return PREF_USER_REQUEST_FORM_PAGINATOR_ROWS;
     }
 
-    protected static class UserRequestFormProvider extends DirectoryDataProvider<UserRequestForm> {
+    @Override
+    protected Collection<ActionLink.ActionType> getBatches() {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public void onEvent(final IEvent<?> event) {
+        if (event.getPayload() instanceof UserRequestSearchEvent) {
+            UserRequestSearchEvent payload = UserRequestSearchEvent.class.cast(event.getPayload());
+            keyword = payload.getKeyword();
+
+            updateResultTable(payload.getTarget());
+        } else {
+            super.onEvent(event);
+        }
+    }
 
-        private static final long serialVersionUID = -2311716167583335852L;
+    protected final class UserRequestFormProvider extends DirectoryDataProvider<UserRequestForm> {
 
-        private final UserRequestRestClient restClient = new UserRequestRestClient();
+        private static final long serialVersionUID = -2311716167583335852L;
 
         public UserRequestFormProvider(final int paginatorRows) {
             super(paginatorRows);
@@ -307,47 +331,17 @@ public class UserRequestFormDirectoryPanel
         @Override
         public Iterator<UserRequestForm> iterator(final long first, final long count) {
             int page = ((int) first / paginatorRows);
-            return restClient.getForms((page < 0 ? 0 : page) + 1, paginatorRows, getSort()).iterator();
+            return restClient.listForms(keyword, (page < 0 ? 0 : page) + 1, paginatorRows, getSort()).iterator();
         }
 
         @Override
         public long size() {
-            return restClient.countForms();
+            return restClient.countForms(keyword);
         }
 
         @Override
         public IModel<UserRequestForm> model(final UserRequestForm form) {
-            return new IModel<UserRequestForm>() {
-
-                private static final long serialVersionUID = -2566070996511906708L;
-
-                @Override
-                public UserRequestForm getObject() {
-                    return form;
-                }
-            };
-        }
-    }
-
-    @Override
-    protected Collection<ActionLink.ActionType> getBatches() {
-        return Collections.<ActionLink.ActionType>emptyList();
-    }
-
-    private void claimForm(final String taskId) {
-        try {
-            restClient.claimForm(taskId);
-        } catch (SyncopeClientException e) {
-            SyncopeConsoleSession.get().onException(e);
+            return Model.of(form);
         }
     }
-
-    private void unclaimForm(final String taskId) {
-        try {
-            restClient.unclaimForm(taskId);
-        } catch (SyncopeClientException e) {
-            SyncopeConsoleSession.get().onException(e);
-        }
-    }
-
 }
diff --git a/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestsPanel.java b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestsPanel.java
new file mode 100644
index 0000000..563319f
--- /dev/null
+++ b/ext/flowable/client-console/src/main/java/org/apache/syncope/client/console/panels/UserRequestsPanel.java
@@ -0,0 +1,88 @@
+/*
+ * 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.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+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 UserRequestsPanel extends Panel {
+
+    private static final long serialVersionUID = -896040867024301443L;
+
+    public UserRequestsPanel(final String id, final DirectoryPanel<?, ?, ?, ?> directoryPanel) {
+        super(id);
+
+        Model<String> keywordModel = new Model<>(StringUtils.EMPTY);
+
+        WebMarkupContainer searchBoxContainer = new WebMarkupContainer("searchBox");
+        add(searchBoxContainer);
+
+        Form<?> form = new Form<>("form");
+        searchBoxContainer.add(form);
+
+        AjaxTextFieldPanel filter = new AjaxTextFieldPanel("filter", "filter", keywordModel, true);
+        form.add(filter.setPlaceholder("username / key").hideLabel().setOutputMarkupId(true));
+
+        AjaxButton search = new AjaxButton("search") {
+
+            private static final long serialVersionUID = 8390605330558248736L;
+
+            @Override
+            protected void onSubmit(final AjaxRequestTarget target) {
+                send(UserRequestsPanel.this, Broadcast.DEPTH,
+                        new UserRequestSearchEvent(target, keywordModel.getObject()));
+            }
+        };
+        search.setOutputMarkupId(true);
+        form.add(search);
+        form.setDefaultButton(search);
+
+        add(directoryPanel);
+    }
+
+    public static class UserRequestSearchEvent implements Serializable {
+
+        private static final long serialVersionUID = 5063826346823013424L;
+
+        private final transient AjaxRequestTarget target;
+
+        private final String keyword;
+
+        UserRequestSearchEvent(final AjaxRequestTarget target, final String keyword) {
+            this.target = target;
+            this.keyword = keyword;
+        }
+
+        public AjaxRequestTarget getTarget() {
+            return target;
+        }
+
+        public String getKeyword() {
+            return keyword;
+        }
+    }
+}
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 39c45c5..913c4db 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
@@ -18,12 +18,13 @@
  */
 package org.apache.syncope.client.console.rest;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
+import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.UserRequest;
 import org.apache.syncope.common.lib.to.UserRequestForm;
-import org.apache.syncope.common.rest.api.beans.UserRequestFormQuery;
 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;
@@ -32,37 +33,59 @@ public class UserRequestRestClient extends BaseRestClient {
 
     private static final long serialVersionUID = -4785231164900813921L;
 
-    public int countUserRequests() {
-        return getService(UserRequestService.class).
-                list(new UserRequestQuery.Builder().page(1).size(0).build()).
-                getTotalCount();
+    public int countRequests(final String keyword) {
+        try {
+            return getService(UserRequestService.class).
+                    listRequests(new UserRequestQuery.Builder().user(keyword).page(1).size(0).build()).
+                    getTotalCount();
+        } catch (Exception e) {
+            return 0;
+        }
     }
 
-    public List<UserRequest> getUserRequests(final int page, final int size, final SortParam<String> sort) {
-        return getService(UserRequestService.class).
-                list(new UserRequestQuery.Builder().page(page).size(size).orderBy(toOrderBy(sort)).build()).
-                getResult();
+    public List<UserRequest> listRequests(
+            final String keyword, final int page, final int size, final SortParam<String> sort) {
+
+        try {
+            return getService(UserRequestService.class).listRequests(
+                    new UserRequestQuery.Builder().user(keyword).page(page).size(size).
+                            orderBy(toOrderBy(sort)).build()).
+                    getResult();
+        } catch (SyncopeClientException e) {
+            return Collections.emptyList();
+        }
     }
 
     public void cancelRequest(final String executionId, final String reason) {
-        getService(UserRequestService.class).cancel(executionId, reason);
+        getService(UserRequestService.class).cancelRequest(executionId, reason);
     }
 
-    public int countForms() {
-        return getService(UserRequestService.class).
-                getForms(new UserRequestFormQuery.Builder().page(1).size(0).build()).
-                getTotalCount();
+    public int countForms(final String keyword) {
+        try {
+            return getService(UserRequestService.class).
+                    listForms(new UserRequestQuery.Builder().user(keyword).page(1).size(0).build()).
+                    getTotalCount();
+        } catch (SyncopeClientException e) {
+            return 0;
+        }
     }
 
-    public List<UserRequestForm> getForms(final int page, final int size, final SortParam<String> sort) {
-        return getService(UserRequestService.class).
-                getForms(new UserRequestFormQuery.Builder().page(page).size(size).orderBy(toOrderBy(sort)).build()).
-                getResult();
+    public List<UserRequestForm> listForms(
+            final String keyword, final int page, final int size, final SortParam<String> sort) {
+
+        try {
+            return getService(UserRequestService.class).listForms(
+                    new UserRequestQuery.Builder().user(keyword).page(page).size(size).
+                            orderBy(toOrderBy(sort)).build()).
+                    getResult();
+        } catch (SyncopeClientException e) {
+            return Collections.emptyList();
+        }
     }
 
     public Optional<UserRequestForm> getForm(final String userKey) {
         PagedResult<UserRequestForm> forms = getService(UserRequestService.class).
-                getForms(new UserRequestFormQuery.Builder().user(userKey).page(1).size(1).build());
+                listForms(new UserRequestQuery.Builder().user(userKey).page(1).size(1).build());
         UserRequestForm form = forms.getResult().isEmpty()
                 ? null
                 : forms.getResult().get(0);
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 b445dd9..7e236ef 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
@@ -88,7 +88,7 @@ public class UserRequestFormsWidget extends ExtAlertWidget<UserRequestForm> {
     @Override
     protected int getLatestAlertsSize() {
         return SyncopeConsoleSession.get().owns(FlowableEntitlement.USER_REQUEST_FORM_LIST)
-                ? restClient.countForms()
+                ? restClient.countForms(null)
                 : 0;
     }
 
@@ -102,9 +102,9 @@ public class UserRequestFormsWidget extends ExtAlertWidget<UserRequestForm> {
             public List<UserRequestForm> getObject() {
                 List<UserRequestForm> updatedForms;
                 if (SyncopeConsoleSession.get().owns(FlowableEntitlement.USER_REQUEST_FORM_LIST)) {
-                    updatedForms = restClient.getForms(1, MAX_SIZE, new SortParam<>("createTime", true));
+                    updatedForms = restClient.listForms(null, 1, MAX_SIZE, new SortParam<>("createTime", true));
                 } else {
-                    updatedForms = Collections.<UserRequestForm>emptyList();
+                    updatedForms = Collections.emptyList();
                 }
 
                 return updatedForms;
diff --git a/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/panels/UserRequestsPanel.html b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/panels/UserRequestsPanel.html
new file mode 100644
index 0000000..ec0a3f4
--- /dev/null
+++ b/ext/flowable/client-console/src/main/resources/org/apache/syncope/client/console/panels/UserRequestsPanel.html
@@ -0,0 +1,36 @@
+<!--
+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="input-group margin-bottom">
+          <span wicket:id="filter">[FILTER]</span>
+          <span class="input-group-btn">
+            <button type="button" class="btn btn-default btn-flat" wicket:id="search">
+              <span class="glyphicon glyphicon-search" aria-hidden="true"></span>
+            </button>
+          </span>
+        </div>
+      </form>
+    </div>
+
+    <span wicket:id="inner"/>
+  </wicket:panel>
+</html>
diff --git a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserRequestCancelResource.java b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserRequestCancelResource.java
index 3e1116b..88d9f45 100644
--- a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserRequestCancelResource.java
+++ b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserRequestCancelResource.java
@@ -66,8 +66,8 @@ public class UserRequestCancelResource extends BaseResource {
                 throw new IllegalArgumentException("Empty executionId, please provide a value");
             }
 
-            SyncopeEnduserSession.get().getService(UserRequestService.class).cancel(executionId.toString(),
-                    reason.toString());
+            SyncopeEnduserSession.get().getService(UserRequestService.class).
+                    cancelRequest(executionId.toString(), reason.toString());
 
             final String outcomeMessage = String.format(
                     "User Request with execution id [%s] successfully canceled for User [%s]", executionId.
diff --git a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserRequestsFormsResource.java b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserRequestsFormsResource.java
index c51027b..a4a1ea0 100644
--- a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserRequestsFormsResource.java
+++ b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserRequestsFormsResource.java
@@ -32,7 +32,7 @@ import org.apache.syncope.client.enduser.annotations.Resource;
 import org.apache.syncope.common.lib.to.PagedResult;
 import org.apache.syncope.common.lib.to.UserRequestForm;
 import org.apache.syncope.common.lib.types.UserRequestFormPropertyType;
-import org.apache.syncope.common.rest.api.beans.UserRequestFormQuery;
+import org.apache.syncope.common.rest.api.beans.UserRequestQuery;
 import org.apache.syncope.common.rest.api.service.UserRequestService;
 import org.apache.wicket.request.IRequestParameters;
 import org.apache.wicket.request.resource.AbstractResource;
@@ -66,17 +66,17 @@ public class UserRequestsFormsResource extends BaseResource {
                     StringValue size = requestParameters.getParameterValue("size");
                     LOG.debug("List available Flowable User Requests Forms by user [{}]", username);
                     final PagedResult<UserRequestForm> userRequestForms = SyncopeEnduserSession.get().
-                            getService(UserRequestService.class).getForms(
-                            new UserRequestFormQuery.Builder()
+                            getService(UserRequestService.class).listForms(
+                            new UserRequestQuery.Builder()
                                     .user(username.isEmpty()
                                             ? SyncopeEnduserSession.get().getSelfTO().getUsername()
                                             : username.toString())
                                     .page(page.isEmpty()
                                             ? 1
-                                            : Integer.parseInt(page.toString()))
+                                            : page.toInt())
                                     .size(size.isEmpty()
                                             ? 10
-                                            : Integer.parseInt(size.toString())).build());
+                                            : size.toInt()).build());
 
                     // Date -> millis conversion for Date properties of the form
                     userRequestForms.getResult().stream().forEach(form
@@ -117,8 +117,8 @@ public class UserRequestsFormsResource extends BaseResource {
                             && StringUtils.isNotBlank(prop.getValue()))
                             .forEach(prop -> {
                                 try {
-                                    prop.setValue(FastDateFormat.getInstance(prop.getDatePattern()).format(Long.valueOf(
-                                            prop.getValue())));
+                                    prop.setValue(FastDateFormat.getInstance(prop.getDatePattern()).
+                                            format(Long.valueOf(prop.getValue())));
                                 } catch (NumberFormatException e) {
                                     LOG.error("Unable to format date", e);
                                 }
diff --git a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserRequestsResource.java b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserRequestsResource.java
index ab6f054..197ee98 100644
--- a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserRequestsResource.java
+++ b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserRequestsResource.java
@@ -66,8 +66,8 @@ public class UserRequestsResource extends BaseResource {
                     if (executionId.isEmpty()) {
                         throw new IllegalArgumentException("Empty executionId, please provide a value");
                     }
-                    SyncopeEnduserSession.get().getService(UserRequestService.class).cancel(executionId.toString(),
-                            reason.toString());
+                    SyncopeEnduserSession.get().getService(UserRequestService.class).
+                            cancelRequest(executionId.toString(), reason.toString());
                     response.setStatusCode(Response.Status.NO_CONTENT.getStatusCode());
                     response.setWriteCallback(new AbstractResource.WriteCallback() {
 
@@ -126,16 +126,14 @@ public class UserRequestsResource extends BaseResource {
     private static PagedResult<UserRequest> list(final StringValue page, final StringValue size)
             throws NumberFormatException {
         return SyncopeEnduserSession.get().getService(UserRequestService.class)
-                .list(new UserRequestQuery.Builder()
+                .listRequests(new UserRequestQuery.Builder()
                         .user(SyncopeEnduserSession.get().getSelfTO().getUsername())
                         .page(page.isEmpty()
                                 ? 1
-                                : Integer.parseInt(
-                                        page.toString()))
+                                : page.toInt())
                         .size(size.isEmpty()
                                 ? 10
-                                : Integer.parseInt(
-                                        size.toString())).build());
+                                : size.toInt()).build());
     }
 
     private PagedResult<UserRequestWrapper> fillWithForms(final PagedResult<UserRequest> reqsResult) {
diff --git a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserRequestsStartResource.java b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserRequestsStartResource.java
index c9c57b6..725bbde 100644
--- a/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserRequestsStartResource.java
+++ b/ext/flowable/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserRequestsStartResource.java
@@ -57,7 +57,8 @@ public class UserRequestsStartResource extends BaseResource {
             if (bpmnProcess.isEmpty()) {
                 throw new IllegalArgumentException("Empty bpmnProcess, please provide a value");
             }
-            SyncopeEnduserSession.get().getService(UserRequestService.class).start(bpmnProcess.toString(), null, null);
+            SyncopeEnduserSession.get().getService(UserRequestService.class).
+                    startRequest(bpmnProcess.toString(), null, null);
             response.setStatusCode(Response.Status.NO_CONTENT.getStatusCode());
             response.setWriteCallback(new AbstractResource.WriteCallback() {
 
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 da5c212..28fd0fa 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
@@ -73,7 +73,7 @@ public class UserRequestLogic extends AbstractTransactionalLogic<EntityTO> {
 
     @PreAuthorize("isAuthenticated()")
     @Transactional(readOnly = true)
-    public Pair<Integer, List<UserRequest>> list(
+    public Pair<Integer, List<UserRequest>> listRequests(
             final String userKey,
             final int page,
             final int size,
@@ -109,12 +109,12 @@ public class UserRequestLogic extends AbstractTransactionalLogic<EntityTO> {
     }
 
     @PreAuthorize("isAuthenticated()")
-    public UserRequest start(final String bpmnProcess, final WorkflowTaskExecInput inputVariables) {
+    public UserRequest startRequest(final String bpmnProcess, final WorkflowTaskExecInput inputVariables) {
         return doStart(bpmnProcess, userDAO.findByUsername(AuthContextUtils.getUsername()), inputVariables);
     }
 
     @PreAuthorize("hasRole('" + FlowableEntitlement.USER_REQUEST_START + "')")
-    public UserRequest start(
+    public UserRequest startRequest(
             final String bpmnProcess,
             final String userKey,
             final WorkflowTaskExecInput inputVariables) {
@@ -133,7 +133,7 @@ public class UserRequestLogic extends AbstractTransactionalLogic<EntityTO> {
     }
 
     @PreAuthorize("isAuthenticated()")
-    public void cancel(final String executionId, final String reason) {
+    public void cancelRequest(final String executionId, final String reason) {
         Pair<ProcessInstance, String> parsed = userRequestHandler.parse(executionId);
 
         securityChecks(userDAO.find(parsed.getRight()).getUsername(),
@@ -187,11 +187,12 @@ public class UserRequestLogic extends AbstractTransactionalLogic<EntityTO> {
 
     @PreAuthorize("isAuthenticated()")
     @Transactional(readOnly = true)
-    public Pair<Integer, List<UserRequestForm>> getForms(
+    public Pair<Integer, List<UserRequestForm>> listForms(
             final String userKey,
             final int page,
             final int size,
             final List<OrderByClause> orderByClauses) {
+
         evaluateKey(userKey);
 
         return userRequestHandler.getForms(userKey, page, size, orderByClauses);
diff --git a/ext/flowable/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/UserRequestFormQuery.java b/ext/flowable/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/UserRequestFormQuery.java
deleted file mode 100644
index f5a507b..0000000
--- a/ext/flowable/rest-api/src/main/java/org/apache/syncope/common/rest/api/beans/UserRequestFormQuery.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.common.rest.api.beans;
-
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.media.Schema;
-import javax.ws.rs.QueryParam;
-import org.apache.syncope.common.rest.api.service.JAXRSService;
-
-public class UserRequestFormQuery extends AbstractQuery {
-
-    private static final long serialVersionUID = -4762457303770028554L;
-
-    public static class Builder extends AbstractQuery.Builder<UserRequestFormQuery, Builder> {
-
-        @Override
-        protected UserRequestFormQuery newInstance() {
-            return new UserRequestFormQuery();
-        }
-
-        public Builder user(final String user) {
-            getInstance().setUser(user);
-            return this;
-        }
-    }
-
-    private String user;
-
-    @Parameter(name = JAXRSService.PARAM_USER, description = "user to match either by key or username", schema =
-            @Schema(implementation = String.class, example = "50592942-73ec-44c4-a377-e859524245e4"))
-    public String getUser() {
-        return user;
-    }
-
-    @QueryParam(JAXRSService.PARAM_USER)
-    public void setUser(final String user) {
-        this.user = user;
-    }
-}
diff --git a/ext/flowable/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/UserRequestService.java b/ext/flowable/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/UserRequestService.java
index d9bcd53..812e55c 100644
--- a/ext/flowable/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/UserRequestService.java
+++ b/ext/flowable/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/UserRequestService.java
@@ -40,7 +40,6 @@ import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.UserRequestForm;
 import org.apache.syncope.common.lib.to.WorkflowTaskExecInput;
 import org.apache.syncope.common.rest.api.RESTHeaders;
-import org.apache.syncope.common.rest.api.beans.UserRequestFormQuery;
 import org.apache.syncope.common.rest.api.beans.UserRequestQuery;
 
 /**
@@ -61,7 +60,7 @@ public interface UserRequestService extends JAXRSService {
      */
     @GET
     @Produces({ MediaType.APPLICATION_JSON, RESTHeaders.APPLICATION_YAML, MediaType.APPLICATION_XML })
-    PagedResult<UserRequest> list(@BeanParam UserRequestQuery query);
+    PagedResult<UserRequest> listRequests(@BeanParam UserRequestQuery query);
 
     /**
      * Starts a new request for the given BPMN Process and user (if provided) or requesting user (if not provided).
@@ -74,7 +73,7 @@ public interface UserRequestService extends JAXRSService {
     @POST
     @Path("start/{bpmnProcess}")
     @Produces({ MediaType.APPLICATION_JSON, RESTHeaders.APPLICATION_YAML, MediaType.APPLICATION_XML })
-    UserRequest start(
+    UserRequest startRequest(
             @NotNull @PathParam("bpmnProcess") String bpmnProcess,
             @QueryParam(JAXRSService.PARAM_USER) String user,
             WorkflowTaskExecInput inputVariables);
@@ -90,7 +89,7 @@ public interface UserRequestService extends JAXRSService {
     @DELETE
     @Path("{executionId}")
     @Produces({ MediaType.APPLICATION_JSON, RESTHeaders.APPLICATION_YAML, MediaType.APPLICATION_XML })
-    void cancel(
+    void cancelRequest(
             @NotNull @PathParam("executionId") String executionId,
             @QueryParam("reason") String reason);
 
@@ -117,7 +116,7 @@ public interface UserRequestService extends JAXRSService {
     @GET
     @Path("forms")
     @Produces({ MediaType.APPLICATION_JSON, RESTHeaders.APPLICATION_YAML, MediaType.APPLICATION_XML })
-    PagedResult<UserRequestForm> getForms(@BeanParam UserRequestFormQuery query);
+    PagedResult<UserRequestForm> listForms(@BeanParam UserRequestQuery query);
 
     /**
      * Requests to manage the form for the given task id.
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 4f939c4..23ff8c5 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
@@ -19,13 +19,13 @@
 package org.apache.syncope.core.rest.cxf.service;
 
 import java.util.List;
+import java.util.Optional;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.to.PagedResult;
 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.WorkflowTaskExecInput;
-import org.apache.syncope.common.rest.api.beans.UserRequestFormQuery;
 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;
@@ -43,26 +43,28 @@ public class UserRequestServiceImpl extends AbstractServiceImpl implements UserR
     private UserDAO userDAO;
 
     @Override
-    public PagedResult<UserRequest> list(final UserRequestQuery query) {
+    public PagedResult<UserRequest> listRequests(final UserRequestQuery query) {
         if (query.getUser() != null) {
-            query.setUser(getActualKey(userDAO, query.getUser()));
+            query.setUser(Optional.ofNullable(getActualKey(userDAO, query.getUser())).orElse(query.getUser()));
         }
 
-        Pair<Integer, List<UserRequest>> result = logic.list(
+        Pair<Integer, List<UserRequest>> result = logic.listRequests(
                 query.getUser(), query.getPage(), query.getSize(), getOrderByClauses(query.getOrderBy()));
         return buildPagedResult(result.getRight(), query.getPage(), query.getSize(), result.getLeft());
     }
 
     @Override
-    public UserRequest start(final String bpmnProcess, final String user, final WorkflowTaskExecInput inputVariables) {
+    public UserRequest startRequest(
+            final String bpmnProcess, final String user, final WorkflowTaskExecInput inputVariables) {
+
         return user == null
-                ? logic.start(bpmnProcess, inputVariables)
-                : logic.start(bpmnProcess, getActualKey(userDAO, user), inputVariables);
+                ? logic.startRequest(bpmnProcess, inputVariables)
+                : logic.startRequest(bpmnProcess, getActualKey(userDAO, user), inputVariables);
     }
 
     @Override
-    public void cancel(final String executionId, final String reason) {
-        logic.cancel(executionId, reason);
+    public void cancelRequest(final String executionId, final String reason) {
+        logic.cancelRequest(executionId, reason);
     }
 
     @Override
@@ -81,12 +83,12 @@ public class UserRequestServiceImpl extends AbstractServiceImpl implements UserR
     }
 
     @Override
-    public PagedResult<UserRequestForm> getForms(final UserRequestFormQuery query) {
+    public PagedResult<UserRequestForm> listForms(final UserRequestQuery query) {
         if (query.getUser() != null) {
-            query.setUser(getActualKey(userDAO, query.getUser()));
+            query.setUser(Optional.ofNullable(getActualKey(userDAO, query.getUser())).orElse(query.getUser()));
         }
 
-        Pair<Integer, List<UserRequestForm>> result = logic.getForms(
+        Pair<Integer, List<UserRequestForm>> result = logic.listForms(
                 query.getUser(), query.getPage(), query.getSize(), getOrderByClauses(query.getOrderBy()));
         return buildPagedResult(result.getRight(), query.getPage(), query.getSize(), result.getLeft());
     }
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 0de6530..69b5052 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
@@ -68,7 +68,7 @@ import org.apache.syncope.common.lib.types.StandardEntitlement;
 import org.apache.syncope.common.lib.types.StatusPatchType;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 import org.apache.syncope.common.rest.api.beans.AnyQuery;
-import org.apache.syncope.common.rest.api.beans.UserRequestFormQuery;
+import org.apache.syncope.common.rest.api.beans.UserRequestQuery;
 import org.apache.syncope.common.rest.api.service.AnyObjectService;
 import org.apache.syncope.common.rest.api.service.SchemaService;
 import org.apache.syncope.common.rest.api.service.UserService;
@@ -499,8 +499,8 @@ public class AuthenticationITCase extends AbstractITCase {
         }
 
         // 3. approve user
-        UserRequestForm form = userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
+        UserRequestForm form = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
         form = userRequestService.claimForm(form.getTaskId());
         form.getProperty("approveCreate").get().setValue(Boolean.TRUE.toString());
         userTO = userRequestService.submitForm(form);
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 e667020..9bdabe1 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
@@ -40,7 +40,6 @@ import org.apache.syncope.common.lib.to.UserRequest;
 import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.WorkflowTaskExecInput;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
-import org.apache.syncope.common.rest.api.beans.UserRequestFormQuery;
 import org.apache.syncope.common.rest.api.beans.UserRequestQuery;
 import org.apache.syncope.common.rest.api.service.UserRequestService;
 import org.apache.syncope.fit.AbstractITCase;
@@ -78,7 +77,7 @@ public class UserRequestITCase extends AbstractITCase {
         assertFalse(user.getMembership("ebf97068-aa4b-4a85-9f01-680e8c4cf227").isPresent());
 
         // start request
-        UserRequest req = userRequestService.start("directorGroupRequest", user.getKey(), null);
+        UserRequest req = userRequestService.startRequest("directorGroupRequest", user.getKey(), null);
         assertNotNull(req);
         assertEquals("directorGroupRequest", req.getBpmnProcess());
         assertNotNull(req.getExecutionId());
@@ -87,59 +86,59 @@ public class UserRequestITCase extends AbstractITCase {
         // check that user can see the ongoing request
         SyncopeClient client = clientFactory.create(user.getUsername(), "password123");
         PagedResult<UserRequest> requests = client.getService(UserRequestService.class).
-                list(new UserRequestQuery.Builder().user(user.getKey()).build());
+                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.getForms(
-                new UserRequestFormQuery.Builder().user(user.getKey()).build()).getResult().get(0);
+        UserRequestForm form = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().get(0);
         form = userRequestService.claimForm(form.getTaskId());
         form.getProperty("firstLevelApprove").get().setValue(Boolean.FALSE.toString());
         userRequestService.submitForm(form);
 
         // no more forms, group not assigned
-        assertTrue(userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(user.getKey()).build()).getResult().isEmpty());
+        assertTrue(userRequestService.listForms(
+                new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().isEmpty());
         assertFalse(userService.read(user.getKey()).getMembership("ebf97068-aa4b-4a85-9f01-680e8c4cf227").isPresent());
 
         // start request again
-        req = userRequestService.start("directorGroupRequest", user.getKey(), null);
+        req = userRequestService.startRequest("directorGroupRequest", user.getKey(), null);
         assertNotNull(req);
 
         // 1st approval -> accept
-        form = userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(user.getKey()).build()).getResult().get(0);
+        form = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().get(0);
         form = userRequestService.claimForm(form.getTaskId());
         form.getProperty("firstLevelApprove").get().setValue(Boolean.TRUE.toString());
         userRequestService.submitForm(form);
 
         // 2nd approval -> reject
-        form = userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(user.getKey()).build()).getResult().get(0);
+        form = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().get(0);
         form = userRequestService.claimForm(form.getTaskId());
         form.getProperty("secondLevelApprove").get().setValue(Boolean.FALSE.toString());
         user = userRequestService.submitForm(form);
 
         // no more forms, group not assigned
-        assertTrue(userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(user.getKey()).build()).getResult().isEmpty());
+        assertTrue(userRequestService.listForms(
+                new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().isEmpty());
         assertFalse(userService.read(user.getKey()).getMembership("ebf97068-aa4b-4a85-9f01-680e8c4cf227").isPresent());
 
         // start request again
-        req = userRequestService.start("directorGroupRequest", user.getKey(), null);
+        req = userRequestService.startRequest("directorGroupRequest", user.getKey(), null);
         assertNotNull(req);
 
         // 1st approval -> accept
-        form = userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(user.getKey()).build()).getResult().get(0);
+        form = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().get(0);
         form = userRequestService.claimForm(form.getTaskId());
         form.getProperty("firstLevelApprove").get().setValue(Boolean.TRUE.toString());
         userRequestService.submitForm(form);
 
         // 2nd approval -> accept
-        form = userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(user.getKey()).build()).getResult().get(0);
+        form = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().get(0);
         form = userRequestService.claimForm(form.getTaskId());
         form.getProperty("secondLevelApprove").get().setValue(Boolean.TRUE.toString());
         user = userRequestService.submitForm(form);
@@ -152,7 +151,7 @@ public class UserRequestITCase extends AbstractITCase {
     @Test
     public void cancel() {
         PagedResult<UserRequestForm> forms =
-                userRequestService.getForms(new UserRequestFormQuery.Builder().build());
+                userRequestService.listForms(new UserRequestQuery.Builder().build());
         int preForms = forms.getTotalCount();
 
         UserTO user = createUser(UserITCase.getUniqueSampleTO("twoLevelsApproval@tirasa.net")).getEntity();
@@ -160,31 +159,31 @@ public class UserRequestITCase extends AbstractITCase {
         assertFalse(user.getMembership("ebf97068-aa4b-4a85-9f01-680e8c4cf227").isPresent());
 
         // start request
-        UserRequest req = userRequestService.start("directorGroupRequest", user.getKey(), null);
+        UserRequest req = userRequestService.startRequest("directorGroupRequest", user.getKey(), null);
         assertNotNull(req);
 
         // check that form was generated
-        forms = userRequestService.getForms(new UserRequestFormQuery.Builder().build());
+        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms + 1, forms.getTotalCount());
 
-        assertEquals(1, userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(user.getKey()).build()).getResult().size());
+        assertEquals(1, userRequestService.listForms(
+                new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().size());
 
         // cancel request
-        userRequestService.cancel(req.getExecutionId(), "nothing in particular");
+        userRequestService.cancelRequest(req.getExecutionId(), "nothing in particular");
 
         // check that form was removed
-        forms = userRequestService.getForms(new UserRequestFormQuery.Builder().build());
+        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms, forms.getTotalCount());
 
-        assertTrue(userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(user.getKey()).build()).getResult().isEmpty());
+        assertTrue(userRequestService.listForms(
+                new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().isEmpty());
     }
 
     @Test
     public void userSelection() {
         PagedResult<UserRequestForm> forms =
-                userRequestService.getForms(new UserRequestFormQuery.Builder().build());
+                userRequestService.listForms(new UserRequestQuery.Builder().build());
         int preForms = forms.getTotalCount();
 
         UserTO user = createUser(UserITCase.getUniqueSampleTO("userSelection@tirasa.net")).getEntity();
@@ -195,16 +194,16 @@ public class UserRequestITCase extends AbstractITCase {
         SyncopeClient client = clientFactory.create(user.getUsername(), "password123");
 
         // start request as user
-        UserRequest req = client.getService(UserRequestService.class).start("assignPrinterRequest", null, null);
+        UserRequest req = client.getService(UserRequestService.class).startRequest("assignPrinterRequest", null, null);
         assertNotNull(req);
 
         // check (as admin) that a new form is available
-        forms = userRequestService.getForms(new UserRequestFormQuery.Builder().build());
+        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms + 1, forms.getTotalCount());
 
         // get (as user) the form, claim and submit
         PagedResult<UserRequestForm> userForms = client.getService(UserRequestService.class).
-                getForms(new UserRequestFormQuery.Builder().user(user.getKey()).build());
+                listForms(new UserRequestQuery.Builder().user(user.getKey()).build());
         assertEquals(1, userForms.getTotalCount());
 
         UserRequestForm form = userForms.getResult().get(0);
@@ -219,19 +218,19 @@ public class UserRequestITCase extends AbstractITCase {
 
         client.getService(UserRequestService.class).submitForm(form);
 
-        userForms = client.getService(UserRequestService.class).getForms(
-                new UserRequestFormQuery.Builder().user(user.getKey()).build());
+        userForms = client.getService(UserRequestService.class).listForms(
+                new UserRequestQuery.Builder().user(user.getKey()).build());
         assertEquals(0, userForms.getTotalCount());
 
         // check that user can see the ongoing request
         PagedResult<UserRequest> requests = client.getService(UserRequestService.class).
-                list(new UserRequestQuery.Builder().user(user.getKey()).build());
+                listRequests(new UserRequestQuery.Builder().user(user.getKey()).build());
         assertEquals(1, requests.getTotalCount());
         assertEquals("assignPrinterRequest", requests.getResult().get(0).getBpmnProcess());
 
         // get (as admin) the new form, claim and submit
-        form = userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(user.getKey()).build()).getResult().get(0);
+        form = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().get(0);
         assertEquals("assignPrinterRequest", form.getBpmnProcess());
         form = userRequestService.claimForm(form.getTaskId());
 
@@ -241,11 +240,11 @@ public class UserRequestITCase extends AbstractITCase {
         userRequestService.submitForm(form);
 
         // no more forms available
-        forms = userRequestService.getForms(new UserRequestFormQuery.Builder().build());
+        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms, forms.getTotalCount());
 
         assertTrue(client.getService(UserRequestService.class).
-                list(new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().isEmpty());
+                listRequests(new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().isEmpty());
 
         // check that relationship was made effective by approval
         relationships = userService.read(user.getKey()).getRelationships();
@@ -257,7 +256,7 @@ public class UserRequestITCase extends AbstractITCase {
     @Test
     public void addVariablesToUserRequestAtStart() {
         PagedResult<UserRequestForm> forms =
-                userRequestService.getForms(new UserRequestFormQuery.Builder().build());
+                userRequestService.listForms(new UserRequestQuery.Builder().build());
         int preForms = forms.getTotalCount();
 
         UserTO user = createUser(UserITCase.getUniqueSampleTO("addVariables@tirasa.net")).getEntity();
@@ -269,16 +268,17 @@ public class UserRequestITCase extends AbstractITCase {
         testInput.getVariables().put("providedVariable", "test");
 
         // start request as user
-        UserRequest req = client.getService(UserRequestService.class).start("verifyAddedVariables", null, testInput);
+        UserRequest req = client.getService(UserRequestService.class).
+                startRequest("verifyAddedVariables", null, testInput);
         assertNotNull(req);
 
         // check that a new form is available
-        forms = userRequestService.getForms(new UserRequestFormQuery.Builder().build());
+        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms + 1, forms.getTotalCount());
 
         // get the form and verify the property value
-        PagedResult<UserRequestForm> userForms = userRequestService.
-                getForms(new UserRequestFormQuery.Builder().user(user.getKey()).build());
+        PagedResult<UserRequestForm> userForms = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(user.getKey()).build());
         assertEquals(1, userForms.getTotalCount());
 
         UserRequestForm form = userForms.getResult().get(0);
@@ -286,14 +286,14 @@ public class UserRequestITCase extends AbstractITCase {
         assertEquals(form.getProperty("providedVariable").get().getValue(), "test");
 
         // cancel request
-        userRequestService.cancel(req.getExecutionId(), "nothing in particular");
+        userRequestService.cancelRequest(req.getExecutionId(), "nothing in particular");
 
         // no more forms available
-        forms = userRequestService.getForms(new UserRequestFormQuery.Builder().build());
+        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms, forms.getTotalCount());
 
         assertTrue(client.getService(UserRequestService.class).
-                list(new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().isEmpty());
+                listRequests(new UserRequestQuery.Builder().user(user.getKey()).build()).getResult().isEmpty());
     }
 
     @Test
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 781875c..7e9a1e0 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
@@ -58,7 +58,7 @@ 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.rest.api.beans.AnyQuery;
-import org.apache.syncope.common.rest.api.beans.UserRequestFormQuery;
+import org.apache.syncope.common.rest.api.beans.UserRequestQuery;
 import org.apache.syncope.common.rest.api.service.AccessTokenService;
 import org.apache.syncope.common.rest.api.service.UserRequestService;
 import org.apache.syncope.common.rest.api.service.UserSelfService;
@@ -134,8 +134,8 @@ public class UserSelfITCase extends AbstractITCase {
         }
 
         // 2. now approve and verify that propagation has happened
-        UserRequestForm form = userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
+        UserRequestForm form = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
         form = userRequestService.claimForm(form.getTaskId());
         form.getProperty("approveCreate").get().setValue(Boolean.TRUE.toString());
         userTO = userRequestService.submitForm(form);
@@ -171,8 +171,8 @@ public class UserSelfITCase extends AbstractITCase {
         }
 
         // 2. unclaim and verify that propagation has NOT happened
-        UserRequestForm form = userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
+        UserRequestForm form = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
         form = userRequestService.unclaimForm(form.getTaskId());
         assertNull(form.getAssignee());
         assertNotNull(userTO);
@@ -185,8 +185,8 @@ public class UserSelfITCase extends AbstractITCase {
         }
 
         // 3. approve and verify that propagation has happened
-        form = userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
+        form = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
         form = userRequestService.claimForm(form.getTaskId());
         form.getProperty("approveCreate").get().setValue(Boolean.TRUE.toString());
         userTO = userRequestService.submitForm(form);
@@ -285,8 +285,8 @@ public class UserSelfITCase extends AbstractITCase {
         }
 
         // 3. approve self-update as admin
-        UserRequestForm form = userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(updated.getKey()).build()).getResult().get(0);
+        UserRequestForm form = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(updated.getKey()).build()).getResult().get(0);
         form = userRequestService.claimForm(form.getTaskId());
         form.getProperty("approveUpdate").get().setValue(Boolean.TRUE.toString());
         updated = userRequestService.submitForm(form);
@@ -486,8 +486,8 @@ public class UserSelfITCase extends AbstractITCase {
         assertEquals("createApproval", userTO.getStatus());
 
         // 2. request if there is any pending task for user just created
-        UserRequestForm form = userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
+        UserRequestForm form = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
         assertNotNull(form);
         assertNotNull(form.getUsername());
         assertEquals(userTO.getUsername(), form.getUsername());
@@ -518,8 +518,8 @@ public class UserSelfITCase extends AbstractITCase {
         // 4. claim task from bellini, with role "User manager" and in groupForWorkflowApproval
         UserRequestService userService3 = clientFactory.create("bellini", ADMIN_PWD).
                 getService(UserRequestService.class);
-        assertEquals(1, userService3.getForms(
-                new UserRequestFormQuery.Builder().user(userTO.getKey()).build()).getTotalCount());
+        assertEquals(1, userService3.listForms(
+                new UserRequestQuery.Builder().user(userTO.getKey()).build()).getTotalCount());
         form = userService3.claimForm(form.getTaskId());
         assertNotNull(form);
         assertNotNull(form.getTaskId());
@@ -550,7 +550,7 @@ public class UserSelfITCase extends AbstractITCase {
         assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(syncopeService));
 
         // read forms *before* any operation
-        PagedResult<UserRequestForm> forms = userRequestService.getForms(new UserRequestFormQuery.Builder().build());
+        PagedResult<UserRequestForm> forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
         int preForms = forms.getTotalCount();
 
         UserTO userTO = UserITCase.getUniqueSampleTO("createWithApproval@syncope.apache.org");
@@ -583,7 +583,7 @@ public class UserSelfITCase extends AbstractITCase {
         assertNotNull(exception);
 
         // 2. request if there is any pending form for user just created
-        forms = userRequestService.getForms(new UserRequestFormQuery.Builder().build());
+        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms + 1, forms.getTotalCount());
 
         // 3. as admin, update user: still pending approval
@@ -593,8 +593,8 @@ public class UserSelfITCase extends AbstractITCase {
         userPatch.setUsername(new StringReplacePatchItem.Builder().value(updatedUsername).build());
         updateUser(userPatch);
 
-        UserRequestForm form = userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
+        UserRequestForm form = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
         assertNotNull(form);
         assertNotNull(form.getTaskId());
         assertNotNull(form.getUserTO());
@@ -638,8 +638,8 @@ public class UserSelfITCase extends AbstractITCase {
         assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(syncopeService));
 
         // read forms *before* any operation
-        PagedResult<UserRequestForm> forms = userRequestService.getForms(
-                new UserRequestFormQuery.Builder().build());
+        PagedResult<UserRequestForm> forms = userRequestService.listForms(
+                new UserRequestQuery.Builder().build());
         int preForms = forms.getTotalCount();
 
         UserTO created = createUser(UserITCase.getUniqueSampleTO("updateApproval@syncope.apache.org")).getEntity();
@@ -656,11 +656,11 @@ public class UserSelfITCase extends AbstractITCase {
         assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
         assertEquals("updateApproval", userService.read(created.getKey()).getStatus());
 
-        forms = userRequestService.getForms(new UserRequestFormQuery.Builder().build());
+        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms + 1, forms.getTotalCount());
 
-        UserRequestForm form = userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(created.getKey()).build()).getResult().get(0);
+        UserRequestForm form = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(created.getKey()).build()).getResult().get(0);
         assertNotNull(form);
         assertNotNull(form.getTaskId());
         assertNull(form.getAssignee());
@@ -679,8 +679,8 @@ public class UserSelfITCase extends AbstractITCase {
         assertEquals(0, updated.getMemberships().size());
 
         // the patch is not updated in the approval form
-        form = userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(created.getKey()).build()).getResult().get(0);
+        form = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(created.getKey()).build()).getResult().get(0);
         assertEquals(patch, form.getUserPatch());
 
         // approve the user
@@ -716,7 +716,7 @@ public class UserSelfITCase extends AbstractITCase {
         assumeTrue(FlowableDetector.isFlowableEnabledForUserWorkflow(syncopeService));
 
         // read forms *before* any operation
-        PagedResult<UserRequestForm> forms = userRequestService.getForms(new UserRequestFormQuery.Builder().build());
+        PagedResult<UserRequestForm> forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
         int preForms = forms.getTotalCount();
 
         UserTO userTO = UserITCase.getUniqueSampleTO("issueSYNCOPE15@syncope.apache.org");
@@ -740,11 +740,11 @@ public class UserSelfITCase extends AbstractITCase {
         assertEquals(userTO.getCreationDate(), userTO.getLastChangeDate());
 
         // 2. request if there is any pending form for user just created
-        forms = userRequestService.getForms(new UserRequestFormQuery.Builder().build());
+        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms + 1, forms.getTotalCount());
 
-        UserRequestForm form = userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
+        UserRequestForm form = userRequestService.listForms(
+                new UserRequestQuery.Builder().user(userTO.getKey()).build()).getResult().get(0);
         assertNotNull(form);
 
         // 3. first claim by bellini ....
@@ -766,12 +766,12 @@ public class UserSelfITCase extends AbstractITCase {
         userTO = userRequestService.submitForm(form);
         assertNotNull(userTO);
         assertEquals(preForms,
-                userRequestService.getForms(new UserRequestFormQuery.Builder().build()).getTotalCount());
-        assertTrue(userRequestService.getForms(
-                new UserRequestFormQuery.Builder().user(userTO.getKey()).build()).getResult().isEmpty());
+                userRequestService.listForms(new UserRequestQuery.Builder().build()).getTotalCount());
+        assertTrue(userRequestService.listForms(
+                new UserRequestQuery.Builder().user(userTO.getKey()).build()).getResult().isEmpty());
 
         // 7.check that no more forms are still to be processed
-        forms = userRequestService.getForms(new UserRequestFormQuery.Builder().build());
+        forms = userRequestService.listForms(new UserRequestQuery.Builder().build());
         assertEquals(preForms, forms.getTotalCount());
     }