You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by an...@apache.org on 2017/09/01 09:21:26 UTC

syncope git commit: [SYNCOPE-1200] added functionality in console to edit user while in create or update approval state

Repository: syncope
Updated Branches:
  refs/heads/2_0_X b2dc833c9 -> 89247f0f4


[SYNCOPE-1200] added functionality in console to edit user while in create or update approval state


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

Branch: refs/heads/2_0_X
Commit: 89247f0f4625ec0a1a71f93e52b7b4e1626cfe20
Parents: b2dc833
Author: Andrea Patricelli <an...@apache.org>
Authored: Fri Sep 1 11:18:34 2017 +0200
Committer: Andrea Patricelli <an...@apache.org>
Committed: Fri Sep 1 11:19:54 2017 +0200

----------------------------------------------------------------------
 .../approvals/ApprovalDirectoryPanel.java       | 182 +++++++++++++++++--
 .../console/rest/UserWorkflowRestClient.java    |   9 +
 .../wicket/markup/html/form/ActionLink.java     |   4 +-
 .../wicket/markup/html/form/ActionPanel.java    |   1 +
 .../client/console/wizards/any/Details.java     |  24 ++-
 .../console/approvals/Approval.properties       |   1 +
 .../console/approvals/Approval_it.properties    |   1 +
 .../console/approvals/Approval_pt_BR.properties |   1 +
 .../console/approvals/Approval_ru.properties    |   3 +-
 .../client/console/pages/Approvals.properties   |   4 +-
 .../console/pages/Approvals_it.properties       |   4 +-
 .../console/pages/Approvals_pt_BR.properties    |   2 +
 .../console/pages/Approvals_ru.properties       |  35 ++--
 .../markup/html/form/ActionPanel.properties     |  16 ++
 .../markup/html/form/ActionPanel_it.properties  |  16 ++
 .../html/form/ActionPanel_pt_BR.properties      |  16 ++
 .../markup/html/form/ActionPanel_ru.properties  |  18 +-
 .../src/main/resources/userWorkflow.bpmn20.xml  |  10 +-
 .../syncope/fit/core/AuthenticationITCase.java  |   2 +-
 .../apache/syncope/fit/core/UserSelfITCase.java |   4 +-
 .../syncope/fit/core/UserWorkflowITCase.java    |   8 +-
 21 files changed, 302 insertions(+), 59 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/java/org/apache/syncope/client/console/approvals/ApprovalDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/approvals/ApprovalDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/approvals/ApprovalDirectoryPanel.java
index f40d7c6..42258ba 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/approvals/ApprovalDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/approvals/ApprovalDirectoryPanel.java
@@ -19,11 +19,13 @@
 package org.apache.syncope.client.console.approvals;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
 import org.apache.syncope.client.console.commons.DirectoryDataProvider;
@@ -31,16 +33,30 @@ import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
 import org.apache.syncope.client.console.panels.DirectoryPanel;
 import org.apache.syncope.client.console.rest.UserWorkflowRestClient;
 import org.apache.syncope.client.console.approvals.ApprovalDirectoryPanel.ApprovalProvider;
+import org.apache.syncope.client.console.layout.FormLayoutInfoUtils;
+import org.apache.syncope.client.console.layout.UserFormLayoutInfo;
 import org.apache.syncope.client.console.pages.BasePage;
+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;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionsPanel;
+import org.apache.syncope.client.console.wizards.AjaxWizard;
+import org.apache.syncope.client.console.wizards.any.AnyWrapper;
+import org.apache.syncope.client.console.wizards.any.UserWizardBuilder;
+import org.apache.syncope.common.lib.AnyOperations;
 import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.patch.PasswordPatch;
+import org.apache.syncope.common.lib.patch.UserPatch;
+import org.apache.syncope.common.lib.to.ProvisioningResult;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.WorkflowFormTO;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
 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.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;
@@ -57,15 +73,28 @@ public class ApprovalDirectoryPanel
 
     private static final long serialVersionUID = -7122136682275797903L;
 
+    protected final BaseModal<WorkflowFormTO> manageApprovalModal = new BaseModal<WorkflowFormTO>("outer") {
+
+        private static final long serialVersionUID = 389935548143327858L;
+
+        @Override
+        protected void onConfigure() {
+            super.onConfigure();
+            addSubmitButton();
+            size(Modal.Size.Large);
+        }
+
+    };
+
     public ApprovalDirectoryPanel(final String id, final PageReference pageReference) {
-        super(id, pageReference, false);
+        super(id, pageReference, true);
         disableCheckBoxes();
-
-        setFooterVisibility(true);
-        modal.addSubmitButton();
+        setFooterVisibility(false);
         modal.size(Modal.Size.Large);
 
-        modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
+        addOuterObject(manageApprovalModal);
+
+        manageApprovalModal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
 
             private static final long serialVersionUID = 8804221891699487139L;
 
@@ -73,7 +102,7 @@ public class ApprovalDirectoryPanel
             public void onClose(final AjaxRequestTarget target) {
                 updateResultTable(target);
                 ((BasePage) pageReference.getPage()).getApprovalsWidget().refreshLatestAlerts(target);
-                modal.show(false);
+                manageApprovalModal.show(false);
             }
         });
 
@@ -113,12 +142,7 @@ public class ApprovalDirectoryPanel
 
             @Override
             public void onClick(final AjaxRequestTarget target, final WorkflowFormTO ignore) {
-                try {
-                    restClient.claimForm(model.getObject().getTaskId());
-                    SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
-                } catch (SyncopeClientException scee) {
-                    SyncopeConsoleSession.get().error(getString(Constants.ERROR) + ": " + scee.getMessage());
-                }
+                claimForm(model.getObject().getTaskId());
                 ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
                 target.add(container);
             }
@@ -131,9 +155,10 @@ public class ApprovalDirectoryPanel
             @Override
             public void onClick(final AjaxRequestTarget target, final WorkflowFormTO ignore) {
                 final IModel<WorkflowFormTO> formModel = new CompoundPropertyModel<>(model.getObject());
-                modal.setFormModel(formModel);
+                manageApprovalModal.setFormModel(formModel);
 
-                target.add(modal.setContent(new ApprovalModal(modal, pageRef, model.getObject()) {
+                target.add(manageApprovalModal.setContent(new ApprovalModal(manageApprovalModal, pageRef, model.
+                        getObject()) {
 
                     private static final long serialVersionUID = 5546519445061007248L;
 
@@ -150,9 +175,61 @@ public class ApprovalDirectoryPanel
                     }
 
                 }));
-                
-                modal.header(new Model<>(getString("approval.edit", new Model<>(model.getObject()))));
-                modal.show(true);
+
+                manageApprovalModal.header(new Model<>(getString("approval.manage", new Model<>(model.getObject()))));
+                manageApprovalModal.show(true);
+            }
+
+            @Override
+            protected boolean statusCondition(final WorkflowFormTO modelObject) {
+                return SyncopeConsoleSession.get().getSelfTO().getUsername().
+                        equals(model.getObject().getOwner());
+            }
+
+        }, ActionLink.ActionType.MANAGE_APPROVAL, StandardEntitlement.WORKFLOW_FORM_READ);
+
+        // SYNCOPE-1200 edit user while in approval state
+        panel.add(new ActionLink<WorkflowFormTO>() {
+
+            private static final long serialVersionUID = -3722207913631435501L;
+
+            @Override
+            public void onClick(final AjaxRequestTarget target, final WorkflowFormTO ignore) {
+                final IModel<WorkflowFormTO> formModel = new CompoundPropertyModel<>(model.getObject());
+                modal.setFormModel(formModel);
+
+                final WorkflowFormTO formTO = formModel.getObject();
+                final UserTO newUserTO;
+                final UserTO previousUserTO;
+                if (formTO.getUserPatch() == null) {
+                    newUserTO = formTO.getUserTO();
+                    previousUserTO = null;
+                } else if (formTO.getUserTO() == null) {
+                    // make it stronger by handling possible NPE
+                    previousUserTO = new UserTO();
+                    previousUserTO.setKey(formTO.getUserPatch().getKey());
+                    newUserTO = AnyOperations.patch(previousUserTO, formTO.getUserPatch());
+                } else {
+                    formTO.getUserTO().setKey(formTO.getUserPatch().getKey());
+                    newUserTO = AnyOperations.patch(formTO.getUserTO(), formTO.getUserPatch());
+                    previousUserTO = formTO.getUserTO();
+                }
+
+                AjaxWizard.EditItemActionEvent<UserTO> editItemActionEvent =
+                        new AjaxWizard.EditItemActionEvent<>(newUserTO, target);
+
+                editItemActionEvent.forceModalPanel(
+                        new ApprovalUserWizardBuilder(
+                                target,
+                                formModel.getObject(),
+                                previousUserTO,
+                                newUserTO,
+                                new AnyTypeRestClient().read(AnyTypeKind.USER.name()).getClasses(),
+                                FormLayoutInfoUtils.fetch(Collections.singletonList(AnyTypeKind.USER.name())).getLeft(),
+                                pageRef
+                        ).build(BaseModal.CONTENT_ID, AjaxWizard.Mode.EDIT));
+
+                send(ApprovalDirectoryPanel.this, Broadcast.EXACT, editItemActionEvent);
             }
 
             @Override
@@ -161,7 +238,7 @@ public class ApprovalDirectoryPanel
                         equals(model.getObject().getOwner());
             }
 
-        }, ActionLink.ActionType.EDIT, StandardEntitlement.WORKFLOW_FORM_READ);
+        }, ActionLink.ActionType.EDIT_APPROVAL, StandardEntitlement.WORKFLOW_FORM_SUBMIT);
 
         return panel;
     }
@@ -220,4 +297,73 @@ public class ApprovalDirectoryPanel
     protected Collection<ActionLink.ActionType> getBulkActions() {
         return Collections.<ActionLink.ActionType>emptyList();
     }
+
+    private void claimForm(final String taskId) {
+        try {
+            restClient.claimForm(taskId);
+            SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
+        } catch (SyncopeClientException scee) {
+            SyncopeConsoleSession.get().error(getString(Constants.ERROR) + ": " + scee.getMessage());
+        }
+    }
+
+    private class ApprovalUserWizardBuilder extends UserWizardBuilder {
+
+        private static final long serialVersionUID = 1854981134836384069L;
+
+        private final WorkflowFormTO formTO;
+
+        private final AjaxRequestTarget target;
+
+        ApprovalUserWizardBuilder(
+                final AjaxRequestTarget target,
+                final WorkflowFormTO formTO,
+                final UserTO previousUserTO,
+                final UserTO userTO,
+                final List<String> anyTypeClasses,
+                final UserFormLayoutInfo formLayoutInfo,
+                final PageReference pageRef) {
+            super(previousUserTO, userTO, anyTypeClasses, formLayoutInfo, pageRef);
+            this.formTO = formTO;
+            this.target = target;
+        }
+
+        @Override
+        protected Serializable onApplyInternal(final AnyWrapper<UserTO> modelObject) {
+            UserTO inner = modelObject.getInnerObject();
+
+            ProvisioningResult<UserTO> actual;
+
+            if (formTO.getUserPatch() == null) {
+                actual = new ProvisioningResult<>();
+                UserTO user = new UserWorkflowRestClient().executeTask("default", inner);
+                actual.setEntity(user);
+                claimForm(restClient.getFormForUser(actual.getEntity().getKey()).getTaskId());
+                ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+            } else {
+
+                UserPatch patch = AnyOperations.diff(inner, formTO.getUserTO(), false);
+
+                if (StringUtils.isNotBlank(inner.getPassword())) {
+                    PasswordPatch passwordPatch = new PasswordPatch.Builder().
+                            value(inner.getPassword()).onSyncope(true).resources(inner.
+                            getResources()).
+                            build();
+                    patch.setPassword(passwordPatch);
+                }
+                // update just if it is changed
+                if (patch.isEmpty()) {
+                    actual = new ProvisioningResult<>();
+                    actual.setEntity(inner);
+                } else {
+                    actual = userRestClient.update(getOriginalItem().getInnerObject().getETagValue(), patch);
+                    claimForm(restClient.getFormForUser(actual.getEntity().getKey()).getTaskId());
+                    ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+                }
+
+            }
+            return actual;
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/java/org/apache/syncope/client/console/rest/UserWorkflowRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/UserWorkflowRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/UserWorkflowRestClient.java
index c9d6436..fc42f9b 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/UserWorkflowRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/UserWorkflowRestClient.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.client.console.rest;
 
 import java.util.List;
+import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.lib.to.WorkflowFormTO;
 import org.apache.syncope.common.rest.api.service.UserWorkflowService;
 
@@ -30,6 +31,10 @@ public class UserWorkflowRestClient extends BaseRestClient {
         return getService(UserWorkflowService.class).getForms();
     }
 
+    public WorkflowFormTO getFormForUser(final String userKey) {
+        return getService(UserWorkflowService.class).getFormForUser(userKey);
+    }
+
     public WorkflowFormTO claimForm(final String taskKey) {
         return getService(UserWorkflowService.class).claimForm(taskKey);
     }
@@ -37,4 +42,8 @@ public class UserWorkflowRestClient extends BaseRestClient {
     public void submitForm(final WorkflowFormTO form) {
         getService(UserWorkflowService.class).submitForm(form);
     }
+
+    public UserTO executeTask(final String taskId, final UserTO form) {
+        return getService(UserWorkflowService.class).executeTask(taskId, form);
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
index 9e55595..37b0ba0 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
@@ -97,7 +97,9 @@ public abstract class ActionLink<T extends Serializable> implements Serializable
         ZOOM_OUT("zoomout"),
         WORKFLOW_MODELER("workflowModeler"),
         VIEW_EXECUTIONS("read"),
-        VIEW_DETAILS("read");
+        VIEW_DETAILS("read"),
+        MANAGE_APPROVAL("edit"),
+        EDIT_APPROVAL("edit");
 
         private final String actionId;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
index 73fdbf3..91f83b9 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.java
@@ -188,6 +188,7 @@ public final class ActionPanel<T extends Serializable> extends Panel {
             case MAPPING:
             case SET_LATEST_SYNC_TOKEN:
             case REMOVE_SYNC_TOKEN:
+            case EDIT_APPROVAL:
             case CLAIM:
                 send(this, Broadcast.BUBBLE, new ActionLinksTogglePanel.ActionLinkToggleCloseEventPayload(target));
                 break;

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java
index a7dd79a..ade2537 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/Details.java
@@ -23,6 +23,7 @@ import java.util.List;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.Transformer;
 import org.apache.syncope.client.console.pages.Realms;
+import org.apache.syncope.client.console.rest.RealmRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.FieldPanel;
@@ -60,14 +61,9 @@ public class Details<T extends AnyTO> extends WizardStep {
                     "destinationRealm", "destinationRealm", new PropertyModel<String>(inner, "realm"), false);
             AjaxTextFieldPanel.class.cast(realm).enableJexlHelp();
         } else {
-            final List<AbstractLink> realmLinks = Realms.class.cast(pageRef.getPage()).getRealmChoicePanel().getLinks();
-            final List<RealmTO> realms = new ArrayList<>();
-            for (AbstractLink link : realmLinks) {
-                Object obj = link.getDefaultModelObject();
-                if (obj instanceof RealmTO) {
-                    realms.add((RealmTO) obj);
-                }
-            }
+            final List<RealmTO> realms = pageRef.getPage() instanceof Realms
+                    ? getRealmsFromLinks(Realms.class.cast(pageRef.getPage()).getRealmChoicePanel().getLinks())
+                    : new RealmRestClient().list();
 
             realm = new AjaxDropDownChoicePanel<>(
                     "destinationRealm", "destinationRealm", new PropertyModel<String>(inner, "realm"), false);
@@ -94,4 +90,16 @@ public class Details<T extends AnyTO> extends WizardStep {
     protected AnnotatedBeanPanel getGeneralStatusInformation(final String id, final T anyTO) {
         return new AnnotatedBeanPanel(id, anyTO);
     }
+
+    private List<RealmTO> getRealmsFromLinks(final List<AbstractLink> realmLinks) {
+        List<RealmTO> realms = new ArrayList<>();
+
+        for (AbstractLink link : realmLinks) {
+            Object obj = link.getDefaultModelObject();
+            if (obj instanceof RealmTO) {
+                realms.add((RealmTO) obj);
+            }
+        }
+        return realms;
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval.properties b/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval.properties
index 5d29cc4..450ff50 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval.properties
@@ -15,3 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 userDetails=User details
+userForm=Edit User

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval_it.properties
index b96f57c..92c475d 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval_it.properties
@@ -15,3 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 userDetails=Dettagli utente
+userForm=Modifica utente

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval_pt_BR.properties
index b2b000a..00a8971 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval_pt_BR.properties
@@ -15,3 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 userDetails=Detalhes do Usu\u00e1rio
+userForm=Detalhes do Usu\u00e1rio

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval_ru.properties
index 4a016d8..02c159a 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/approvals/Approval_ru.properties
@@ -15,5 +15,6 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-# userDetails=Информация о пользователе
+# userDetails=\u00d0\u0098\u00d0\u00bd\u00d1\u0084\u00d0\u00be\u00d1\u0080\u00d0\u00bc\u00d0\u00b0\u00d1\u0086\u00d0\u00b8\u00d1\u008f \u00d0\u00be \u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d0\u00b5
 userDetails=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435
+userForm=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals.properties
index aaa46f2..1ea8063 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals.properties
@@ -29,4 +29,6 @@ username=Username
 new_user=New User
 creationDate = Creation Date
 claimDate = Claim Dare
-approval.edit=Approval
+approval.edit=Approval Edit
+approval.manage=Approval Manage
+any.edit=Edit ${anyTO.type} ${anyTO.username}

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals_it.properties
index af65a7e..7e12ce5 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals_it.properties
@@ -29,4 +29,6 @@ username=Utente
 new_user=Nuovo utente
 creationDate = Data creazione
 claimDate = Data rivendicazione
-approval.edit=Approvazione
+approval.manage=Gestisci Approvazione
+approval.edit=Modifica Approvazione
+any.edit=Edit ${anyTO.type} ${anyTO.username}

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals_pt_BR.properties
index 4baa78e..e5ff74c 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals_pt_BR.properties
@@ -29,4 +29,6 @@ username=Usu\u00e1rio
 new_user=Novo Usu\u00e1rio
 creationDate = Data de cria\u00e7\u00e3o
 claimDate = Data de reivindica\u00e7\u00e3o
+approval.manage=Aprova\u00e7\u00e3o
 approval.edit=Aprova\u00e7\u00e3o
+any.edit=Edit ${anyTO.type} ${anyTO.username}

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals_ru.properties
index 4015825..6f4fb58 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Approvals_ru.properties
@@ -15,35 +15,38 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-# taskId=Заявка
+# taskId=\u00d0\u0097\u00d0\u00b0\u00d1\u008f\u00d0\u00b2\u00d0\u00ba\u00d0\u00b0
 taskId=\u0417\u0430\u044f\u0432\u043a\u0430
-# key=Идентификатор
+# key=\u00d0\u0098\u00d0\u00b4\u00d0\u00b5\u00d0\u00bd\u00d1\u0082\u00d0\u00b8\u00d1\u0084\u00d0\u00b8\u00d0\u00ba\u00d0\u00b0\u00d1\u0082\u00d0\u00be\u00d1\u0080
 key=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440
-# description=Описание
+# description=\u00d0\u009e\u00d0\u00bf\u00d0\u00b8\u00d1\u0081\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
 description=\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435
-# createTime=Дата создания
+# createTime=\u00d0\u0094\u00d0\u00b0\u00d1\u0082\u00d0\u00b0 \u00d1\u0081\u00d0\u00be\u00d0\u00b7\u00d0\u00b4\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d1\u008f
 createTime=\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f
-# dueDate=Срок
+# dueDate=\u00d0\u00a1\u00d1\u0080\u00d0\u00be\u00d0\u00ba
 dueDate=\u0421\u0440\u043e\u043a
-# owner=Владелец
+# owner=\u00d0\u0092\u00d0\u00bb\u00d0\u00b0\u00d0\u00b4\u00d0\u00b5\u00d0\u00bb\u00d0\u00b5\u00d1\u0086
 owner=\u0412\u043b\u0430\u0434\u0435\u043b\u0435\u0446
-# claim=Выполнить согласование
+# claim=\u00d0\u0092\u00d1\u008b\u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d0\u00bd\u00d0\u00b8\u00d1\u0082\u00d1\u008c \u00d1\u0081\u00d0\u00be\u00d0\u00b3\u00d0\u00bb\u00d0\u00b0\u00d1\u0081\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
 claim=\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u0435
-# manage=Управление
+# manage=\u00d0\u00a3\u00d0\u00bf\u00d1\u0080\u00d0\u00b0\u00d0\u00b2\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
 manage=\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435
-# approvals=Заявки
+# approvals=\u00d0\u0097\u00d0\u00b0\u00d1\u008f\u00d0\u00b2\u00d0\u00ba\u00d0\u00b8
 approvals=\u0417\u0430\u044f\u0432\u043a\u0438
-# delete=Удалить
+# delete=\u00d0\u00a3\u00d0\u00b4\u00d0\u00b0\u00d0\u00bb\u00d0\u00b8\u00d1\u0082\u00d1\u008c
 delete=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
-# type=Тип
+# type=\u00d0\u00a2\u00d0\u00b8\u00d0\u00bf
 type=\u0422\u0438\u043f
-# username=Имя пользователя
+# username=\u00d0\u0098\u00d0\u00bc\u00d1\u008f \u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d1\u008f
 username=\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f
-# new_user=Создание пользователя
+# new_user=\u00d0\u00a1\u00d0\u00be\u00d0\u00b7\u00d0\u00b4\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5 \u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d1\u008f
 new_user=\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f
-# creationDate=Дата создания
+# creationDate=\u00d0\u0094\u00d0\u00b0\u00d1\u0082\u00d0\u00b0 \u00d1\u0081\u00d0\u00be\u00d0\u00b7\u00d0\u00b4\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d1\u008f
 creationDate=\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f
-# claimDate=Дата начала согласования
+# claimDate=\u00d0\u0094\u00d0\u00b0\u00d1\u0082\u00d0\u00b0 \u00d0\u00bd\u00d0\u00b0\u00d1\u0087\u00d0\u00b0\u00d0\u00bb\u00d0\u00b0 \u00d1\u0081\u00d0\u00be\u00d0\u00b3\u00d0\u00bb\u00d0\u00b0\u00d1\u0081\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d1\u008f
 claimDate=\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f
-# approval.edit=Согласование
+# approval.edit=\u00d0\u00a1\u00d0\u00be\u00d0\u00b3\u00d0\u00bb\u00d0\u00b0\u00d1\u0081\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
 approval.edit=\u0421\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u0435
+# approval.manage=\u00d0\u00a1\u00d0\u00be\u00d0\u00b3\u00d0\u00bb\u00d0\u00b0\u00d1\u0081\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
+approval.manage=\u0421\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u0435
+any.edit=Edit ${anyTO.type} ${anyTO.username}

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.properties
index 994ab1c..69214cd 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel.properties
@@ -46,6 +46,14 @@ edit.class=glyphicon glyphicon-pencil
 edit.title=edit
 edit.alt=edit icon
 
+manage_approval.class=fa fa-pencil-square-o
+manage_approval.title=manage
+manage_approval.alt=manage approval icon
+
+edit_approval.class=glyphicon glyphicon-pencil
+edit_approval.title=edit
+edit_approval.alt=edit approval icon
+
 type_extensions.class=fa fa-expand
 type_extensions.title=extensions
 type_extensions.alt=extensions icon
@@ -54,6 +62,14 @@ fo_edit.class=fa fa-file-code-o
 fo_edit.title=fo
 fo_edit.alt=fo icon
 
+fo_manage_approval.class=fa fa-file-code-o
+fo_manage_approval.title=fo
+fo_manage_approval.alt=fo icon
+
+fo_edit_approval.class=fa fa-file-code-o
+fo_edit_approval.title=fo
+fo_edit_approval.alt=fo icon
+
 html.class=fa fa-file-code-o
 html.title=html
 html.alt=html icon

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel_it.properties
index 70ca259..c2e6b1f 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel_it.properties
@@ -46,6 +46,14 @@ edit.class=glyphicon glyphicon-pencil
 edit.title=edit
 edit.alt=edit icon
 
+manage_approval.class=fa fa-pencil-square-o
+manage_approval.title=manage
+manage_approval.alt=manage approval icon
+
+edit_approval.class=glyphicon glyphicon-pencil
+edit_approval.title=edit
+edit_approval.alt=edit approval icon
+
 type_extensions.class=fa fa-expand
 type_extensions.title=extensions
 type_extensions.alt=extensions icon
@@ -54,6 +62,14 @@ fo_edit.class=fa fa-file-code-o
 fo_edit.title=fo
 fo_edit.alt=fo icon
 
+fo_manage_approval.class=fa fa-file-code-o
+fo_manage_approval.title=fo
+fo_manage_approval.alt=fo icon
+
+fo_edit_approval.class=fa fa-file-code-o
+fo_edit_approval.title=fo
+fo_edit_approval.alt=fo icon
+
 html.class=fa fa-file-code-o
 html.title=html
 html.alt=html icon

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel_pt_BR.properties
index 70ca259..c2e882d 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel_pt_BR.properties
@@ -46,6 +46,18 @@ edit.class=glyphicon glyphicon-pencil
 edit.title=edit
 edit.alt=edit icon
 
+manage_approval.class=fa fa-pencil-square-o
+manage_approval.title=manage
+manage_approval.alt=manage approval icon
+
+edit_approval.class=glyphicon glyphicon-pencil
+edit_approval.title=edit
+edit_approval.alt=edit approval icon
+
+fo_edit_approval.class=fa fa-file-code-o
+fo_edit_approval.title=fo
+fo_edit_approval.alt=fo icon
+
 type_extensions.class=fa fa-expand
 type_extensions.title=extensions
 type_extensions.alt=extensions icon
@@ -54,6 +66,10 @@ fo_edit.class=fa fa-file-code-o
 fo_edit.title=fo
 fo_edit.alt=fo icon
 
+fo_manage_approval.class=fa fa-file-code-o
+fo_manage_approval.title=fo
+fo_manage_approval.alt=fo icon
+
 html.class=fa fa-file-code-o
 html.title=html
 html.alt=html icon

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel_ru.properties
index 70ca259..80fb014 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionPanel_ru.properties
@@ -46,7 +46,15 @@ edit.class=glyphicon glyphicon-pencil
 edit.title=edit
 edit.alt=edit icon
 
-type_extensions.class=fa fa-expand
+manage_approval.class=fa fa-pencil-square-o
+manage_approval.title=manage
+manage_approval.alt=manage approval icon
+
+edit_approval.class=glyphicon glyphicon-pencil
+edit_approval.title=edit
+edit_approval.alt=edit approval icon
+
+type_extensions.class=fa fa-expand 
 type_extensions.title=extensions
 type_extensions.alt=extensions icon
 
@@ -54,6 +62,14 @@ fo_edit.class=fa fa-file-code-o
 fo_edit.title=fo
 fo_edit.alt=fo icon
 
+fo_manage_approval.class=fa fa-file-code-o
+fo_manage_approval.title=fo
+fo_manage_approval.alt=fo icon
+
+fo_edit_approval.class=fa fa-file-code-o
+fo_edit_approval.title=fo
+fo_edit_approval.alt=fo icon
+
 html.class=fa fa-file-code-o
 html.title=html
 html.alt=html icon

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/fit/core-reference/src/main/resources/userWorkflow.bpmn20.xml
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/main/resources/userWorkflow.bpmn20.xml b/fit/core-reference/src/main/resources/userWorkflow.bpmn20.xml
index 6981dbd..3782173 100644
--- a/fit/core-reference/src/main/resources/userWorkflow.bpmn20.xml
+++ b/fit/core-reference/src/main/resources/userWorkflow.bpmn20.xml
@@ -47,7 +47,7 @@ under the License.
               activiti:candidateGroups="managingDirector" activiti:formKey="createApproval">
       <extensionElements>
         <activiti:formProperty id="username" name="Username" type="string" expression="${user.username}" writable="false"/>
-        <activiti:formProperty id="approve" name="Approve?" type="boolean" variable="approve" required="true"/>
+        <activiti:formProperty id="approveCreate" name="Approve?" type="boolean" variable="approveCreate" required="true"/>
         <activiti:formProperty id="rejectReason" name="Reason for rejecting" type="string" variable="rejectReason"/>
       </extensionElements>
     </userTask>
@@ -55,7 +55,7 @@ under the License.
     <scriptTask id="CreateApprovalEvaluation" name="Create approval evaluation" scriptFormat="groovy" activiti:autoStoreVariables="false">
       <script><![CDATA[
 try {
-  if (approve){
+  if (approveCreate){
     execution.setVariable("task", 'approve');
   } else {
     execution.setVariable("task", 'reject');
@@ -145,7 +145,7 @@ try {
               activiti:candidateGroups="managingDirector" activiti:formKey="updateApproval">
       <extensionElements>
         <activiti:formProperty id="username" name="Username" type="string" expression="${user.username}" writable="false"/>
-        <activiti:formProperty id="approve" name="Approve?" type="boolean" variable="approve" required="true"/>
+        <activiti:formProperty id="approveUpdate" name="Approve?" type="boolean" variable="approveUpdate" required="true"/>
         <activiti:formProperty id="rejectReason" name="Reason for rejecting" type="string" variable="rejectReason"/>
       </extensionElements>
     </userTask>
@@ -153,7 +153,7 @@ try {
     <scriptTask id="UpdateApprovalEvaluation" name="Update approval evaluation" scriptFormat="groovy" activiti:autoStoreVariables="false">
       <script><![CDATA[
 try {
-  if (approve){
+  if (approveUpdate){
     execution.setVariable("task", 'approve');
   } else {
     execution.setVariable("task", 'reject');
@@ -243,7 +243,7 @@ try {
               activiti:candidateGroups="managingDirector" activiti:formKey="deleteApproval">
       <extensionElements>
         <activiti:formProperty id="username" name="Username" type="string" expression="${user.username}" writable="false"/>
-        <activiti:formProperty id="approve" name="Approve?" type="boolean" variable="approve" required="true"/>
+        <activiti:formProperty id="approveDelete" name="Approve?" type="boolean" variable="approveDelete" required="true"/>
         <activiti:formProperty id="rejectReason" name="Reason for rejecting" type="string" variable="rejectReason"/>
       </extensionElements>
     </userTask>

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/fit/core-reference/src/test/java/org/apache/syncope/fit/core/AuthenticationITCase.java
----------------------------------------------------------------------
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 ddabfac..82ef773 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
@@ -522,7 +522,7 @@ public class AuthenticationITCase extends AbstractITCase {
         // 3. approve user
         WorkflowFormTO form = userWorkflowService.getFormForUser(userTO.getKey());
         form = userWorkflowService.claimForm(form.getTaskId());
-        form.getProperty("approve").setValue(Boolean.TRUE.toString());
+        form.getProperty("approveCreate").setValue(Boolean.TRUE.toString());
         userTO = userWorkflowService.submitForm(form);
         assertNotNull(userTO);
         assertEquals("active", userTO.getStatus());

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserSelfITCase.java
----------------------------------------------------------------------
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 aba92ef..f4b6dd4 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
@@ -126,7 +126,7 @@ public class UserSelfITCase extends AbstractITCase {
         // now approve and verify that propagation has happened
         WorkflowFormTO form = userWorkflowService.getFormForUser(userTO.getKey());
         form = userWorkflowService.claimForm(form.getTaskId());
-        form.getProperty("approve").setValue(Boolean.TRUE.toString());
+        form.getProperty("approveCreate").setValue(Boolean.TRUE.toString());
         userTO = userWorkflowService.submitForm(form);
         assertNotNull(userTO);
         assertEquals("active", userTO.getStatus());
@@ -224,7 +224,7 @@ public class UserSelfITCase extends AbstractITCase {
         // 3. approve self-update as admin
         WorkflowFormTO form = userWorkflowService.getFormForUser(updated.getKey());
         form = userWorkflowService.claimForm(form.getTaskId());
-        form.getProperty("approve").setValue(Boolean.TRUE.toString());
+        form.getProperty("approveUpdate").setValue(Boolean.TRUE.toString());
         updated = userWorkflowService.submitForm(form);
         assertNotNull(updated);
         assertEquals("active", updated.getStatus());

http://git-wip-us.apache.org/repos/asf/syncope/blob/89247f0f/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserWorkflowITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserWorkflowITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserWorkflowITCase.java
index 6ea2f25..fc4877d 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserWorkflowITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/UserWorkflowITCase.java
@@ -120,7 +120,7 @@ public class UserWorkflowITCase extends AbstractITCase {
         assertNotNull(form.getOwner());
 
         // 5. reject user
-        form.getProperty("approve").setValue(Boolean.FALSE.toString());
+        form.getProperty("approveCreate").setValue(Boolean.FALSE.toString());
         form.getProperty("rejectReason").setValue("I don't like him.");
         userTO = userService3.submitForm(form);
         assertNotNull(userTO);
@@ -204,7 +204,7 @@ public class UserWorkflowITCase extends AbstractITCase {
         assertNotNull(form.getOwner());
 
         // 5. approve user (and verify that propagation occurred)
-        form.getProperty("approve").setValue(Boolean.TRUE.toString());
+        form.getProperty("approveCreate").setValue(Boolean.TRUE.toString());
         userTO = userWorkflowService.submitForm(form);
         assertNotNull(userTO);
         assertEquals(updatedUsername, userTO.getUsername());
@@ -271,7 +271,7 @@ public class UserWorkflowITCase extends AbstractITCase {
 
         // approve the user
         form = userWorkflowService.claimForm(form.getTaskId());
-        form.getProperty("approve").setValue(Boolean.TRUE.toString());
+        form.getProperty("approveUpdate").setValue(Boolean.TRUE.toString());
         userWorkflowService.submitForm(form);
 
         // verify that the approved user bears both original and further changes
@@ -331,7 +331,7 @@ public class UserWorkflowITCase extends AbstractITCase {
         assertNotNull(form);
 
         // 5. approve user
-        form.getProperty("approve").setValue(Boolean.TRUE.toString());
+        form.getProperty("approveCreate").setValue(Boolean.TRUE.toString());
 
         // 6. submit approve
         userTO = userWorkflowService.submitForm(form);