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 2017/07/18 10:22:54 UTC

[11/12] syncope git commit: [SYNCOPE-1164] Realm provisioning now features complete mapping, as Anys

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder.java
index 37abe22..e13d6bb 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ProvisionWizardBuilder.java
@@ -37,6 +37,7 @@ import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownCho
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.FieldPanel;
 import org.apache.syncope.client.console.wizards.AjaxWizardBuilder;
+import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.MappingTO;
 import org.apache.syncope.common.lib.to.ProvisionTO;
 import org.apache.syncope.common.lib.to.ResourceTO;
@@ -52,7 +53,7 @@ import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.StringResourceModel;
 
-public class ProvisionWizardBuilder extends AjaxWizardBuilder<ProvisionTO> {
+public class ProvisionWizardBuilder extends AjaxWizardBuilder<ResourceProvision> {
 
     private static final long serialVersionUID = 3739399543837732640L;
 
@@ -76,13 +77,18 @@ public class ProvisionWizardBuilder extends AjaxWizardBuilder<ProvisionTO> {
                 }
             }, currentlyAdded);
 
-            return ListUtils.select(new AnyTypeRestClient().list(), new Predicate<String>() {
+            List<String> result = ListUtils.select(new AnyTypeRestClient().list(), new Predicate<String>() {
 
                 @Override
                 public boolean evaluate(final String key) {
                     return !currentlyAdded.contains(key);
                 }
             });
+            if (resourceTO.getOrgUnit() == null) {
+                result.add(0, SyncopeConstants.REALM_ANYTYPE);
+            }
+
+            return result;
         }
     };
 
@@ -93,7 +99,7 @@ public class ProvisionWizardBuilder extends AjaxWizardBuilder<ProvisionTO> {
 
         private static final long serialVersionUID = -1657800545799468278L;
 
-        ObjectType(final ProvisionTO item) {
+        ObjectType(final ResourceProvision item) {
             super(new ResourceModel("type.title", StringUtils.EMPTY),
                     new ResourceModel("type.summary", StringUtils.EMPTY), new Model<>(item));
 
@@ -135,14 +141,23 @@ public class ProvisionWizardBuilder extends AjaxWizardBuilder<ProvisionTO> {
     /**
      * AuxClasses definition step.
      */
-    private static final class AuxClasses extends WizardStep {
+    private static final class AuxClasses extends WizardStep implements WizardModel.ICondition {
 
         private static final long serialVersionUID = 5315236191866427500L;
 
-        AuxClasses(final ProvisionTO item) {
+        private final ResourceProvision provision;
+
+        AuxClasses(final ResourceProvision item) {
+            this.provision = item;
+
             setTitleModel(new ResourceModel("auxClasses.title"));
             setSummaryModel(new StringResourceModel("auxClasses.summary", this, new Model<>(item)));
-            add(new ProvisionAuxClassesPanel("auxClasses", item));
+            add(new ProvisionAuxClassesPanel("auxClasses", item.getProvisionTO()));
+        }
+
+        @Override
+        public boolean evaluate() {
+            return provision.getProvisionTO() != null;
         }
     }
 
@@ -153,7 +168,7 @@ public class ProvisionWizardBuilder extends AjaxWizardBuilder<ProvisionTO> {
 
         private static final long serialVersionUID = 3454904947720856253L;
 
-        Mapping(final ProvisionTO item) {
+        Mapping(final ResourceProvision item) {
             setTitleModel(Model.of("Mapping"));
             setSummaryModel(Model.of(StringUtils.EMPTY));
         }
@@ -166,7 +181,7 @@ public class ProvisionWizardBuilder extends AjaxWizardBuilder<ProvisionTO> {
 
         private static final long serialVersionUID = 2359955465172450478L;
 
-        ConnObjectLink(final ProvisionTO item) {
+        ConnObjectLink(final ResourceProvision item) {
             super(new ResourceModel("link.title", StringUtils.EMPTY),
                     new ResourceModel("link.summary", StringUtils.EMPTY));
 
@@ -175,7 +190,7 @@ public class ProvisionWizardBuilder extends AjaxWizardBuilder<ProvisionTO> {
             add(connObjectLinkContainer);
 
             boolean connObjectLinkEnabled = false;
-            if (StringUtils.isNotBlank(item.getMapping().getConnObjectLink())) {
+            if (StringUtils.isNotBlank(item.getConnObjectLink())) {
                 connObjectLinkEnabled = true;
             }
 
@@ -191,8 +206,9 @@ public class ProvisionWizardBuilder extends AjaxWizardBuilder<ProvisionTO> {
             final AjaxTextFieldPanel connObjectLink = new AjaxTextFieldPanel(
                     "connObjectLink",
                     new ResourceModel("connObjectLink", "connObjectLink").getObject(),
-                    new PropertyModel<String>(item.getMapping(), "connObjectLink"),
+                    new PropertyModel<String>(item, "connObjectLink"),
                     false);
+            connObjectLink.enableJexlHelp();
             connObjectLink.setEnabled(connObjectLinkEnabled);
             connObjectLinkContainer.add(connObjectLink);
 
@@ -218,28 +234,27 @@ public class ProvisionWizardBuilder extends AjaxWizardBuilder<ProvisionTO> {
      * @param pageRef Caller page reference.
      */
     public ProvisionWizardBuilder(final ResourceTO resurceTO, final PageReference pageRef) {
-        super(new ProvisionTO(), pageRef);
+        super(new ResourceProvision(), pageRef);
         this.resourceTO = resurceTO;
     }
 
     @Override
-    protected WizardModel buildModelSteps(final ProvisionTO modelObject, final WizardModel wizardModel) {
+    protected WizardModel buildModelSteps(final ResourceProvision modelObject, final WizardModel wizardModel) {
         wizardModel.add(new ObjectType(modelObject));
         wizardModel.add(new AuxClasses(modelObject));
 
         Mapping mapping = new Mapping(modelObject);
         mapping.setOutputMarkupId(true);
 
-        MappingItemTransformersTogglePanel mapItemTransformers =
-                new MappingItemTransformersTogglePanel(mapping, pageRef);
-        addOuterObject(mapItemTransformers);
+        ItemTransformersTogglePanel itemTransformers = new ItemTransformersTogglePanel(mapping, pageRef);
+        addOuterObject(itemTransformers);
         JEXLTransformersTogglePanel jexlTransformers = new JEXLTransformersTogglePanel(mapping, pageRef);
         addOuterObject(jexlTransformers);
-        if (modelObject.getMapping() == null) {
-            modelObject.setMapping(new MappingTO());
+        if (modelObject.getProvisionTO() != null && modelObject.getProvisionTO().getMapping() == null) {
+            modelObject.getProvisionTO().setMapping(new MappingTO());
         }
         mapping.add(new ResourceMappingPanel(
-                "mapping", resourceTO, modelObject, mapItemTransformers, jexlTransformers));
+                "mapping", resourceTO, modelObject, itemTransformers, jexlTransformers));
 
         wizardModel.add(mapping);
 
@@ -248,28 +263,41 @@ public class ProvisionWizardBuilder extends AjaxWizardBuilder<ProvisionTO> {
     }
 
     @Override
-    protected Serializable onApplyInternal(final ProvisionTO modelObject) {
-        final List<ProvisionTO> provisions;
-        if (modelObject.getKey() == null) {
-            provisions = ListUtils.select(this.resourceTO.getProvisions(), new Predicate<ProvisionTO>() {
+    protected Serializable onApplyInternal(final ResourceProvision modelObject) {
+        if (modelObject.getOrgUnitTO() != null) {
+            this.resourceTO.setOrgUnit(modelObject.getOrgUnitTO());
+
+            this.resourceTO.getOrgUnit().getItems().clear();
+            this.resourceTO.getOrgUnit().getItems().addAll(modelObject.getItems());
+        } else if (modelObject.getProvisionTO() != null) {
+            final List<ProvisionTO> provisions;
+            if (modelObject.getKey() == null) {
+                provisions = ListUtils.select(this.resourceTO.getProvisions(), new Predicate<ProvisionTO>() {
+
+                    @Override
+                    public boolean evaluate(final ProvisionTO object) {
+                        return !modelObject.getAnyType().equals(object.getAnyType());
+                    }
+                });
+            } else {
+                provisions = ListUtils.select(this.resourceTO.getProvisions(), new Predicate<ProvisionTO>() {
 
-                @Override
-                public boolean evaluate(final ProvisionTO object) {
-                    return !modelObject.getAnyType().equals(object.getAnyType());
-                }
-            });
-        } else {
-            provisions = ListUtils.select(this.resourceTO.getProvisions(), new Predicate<ProvisionTO>() {
+                    @Override
+                    public boolean evaluate(final ProvisionTO object) {
+                        return !modelObject.getKey().equals(object.getKey());
+                    }
+                });
+            }
 
-                @Override
-                public boolean evaluate(final ProvisionTO object) {
-                    return !modelObject.getKey().equals(object.getKey());
-                }
-            });
+            ProvisionTO provisionTO = modelObject.getProvisionTO();
+            provisionTO.getMapping().getItems().clear();
+            provisionTO.getMapping().getItems().addAll(modelObject.getItems());
+            provisions.add(provisionTO);
+
+            this.resourceTO.getProvisions().clear();
+            this.resourceTO.getProvisions().addAll(provisions);
         }
-        provisions.add(modelObject);
-        this.resourceTO.getProvisions().clear();
-        this.resourceTO.getProvisions().addAll(provisions);
+
         return modelObject;
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.java
index 93988e4..853873e 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.java
@@ -26,10 +26,10 @@ import java.util.Set;
 import org.apache.syncope.client.console.rest.ConnectorRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.console.wizards.AbstractMappingPanel;
+import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.to.AnyTypeClassTO;
 import org.apache.syncope.common.lib.to.AnyTypeTO;
-import org.apache.syncope.common.lib.to.MappingItemTO;
-import org.apache.syncope.common.lib.to.ProvisionTO;
+import org.apache.syncope.common.lib.to.ItemTO;
 import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.MappingPurpose;
@@ -47,7 +47,7 @@ public class ResourceMappingPanel extends AbstractMappingPanel {
     /**
      * External resource provisioning configuration instance to be updated.
      */
-    private final ProvisionTO provisionTO;
+    private final ResourceProvision provision;
 
     private final LoadableDetachableModel<List<String>> extAttrNames;
 
@@ -56,28 +56,28 @@ public class ResourceMappingPanel extends AbstractMappingPanel {
      *
      * @param id panel id
      * @param resourceTO external resource to be updated
-     * @param provisionTO external resource provisioning configuration instance
-     * @param mapItemTransformers mapping item transformers toggle panel
+     * @param provision external resource provisioning configuration instance
+     * @param itemTransformers mapping item transformers toggle panel
      * @param jexlTransformers JEXL transformers toggle panel
      */
     public ResourceMappingPanel(
             final String id,
             final ResourceTO resourceTO,
-            final ProvisionTO provisionTO,
-            final MappingItemTransformersTogglePanel mapItemTransformers,
+            final ResourceProvision provision,
+            final ItemTransformersTogglePanel itemTransformers,
             final JEXLTransformersTogglePanel jexlTransformers) {
 
         super(id,
-                mapItemTransformers,
+                itemTransformers,
                 jexlTransformers,
-                new ListModel<MappingItemTO>(provisionTO.getMapping().getItems()),
+                new ListModel<ItemTO>(provision.getItems()),
                 resourceTO.getConnector() != null,
                 false,
                 MappingPurpose.BOTH);
 
         setOutputMarkupId(true);
 
-        this.provisionTO = provisionTO;
+        this.provision = provision;
 
         extAttrNames = new LoadableDetachableModel<List<String>>() {
 
@@ -86,7 +86,7 @@ public class ResourceMappingPanel extends AbstractMappingPanel {
             @Override
             protected List<String> load() {
                 return new ConnectorRestClient().getExtAttrNames(
-                        provisionTO.getObjectClass(),
+                        provision.getObjectClass(),
                         resourceTO.getConnector(),
                         resourceTO.getConfOverride());
             }
@@ -95,7 +95,7 @@ public class ResourceMappingPanel extends AbstractMappingPanel {
 
     @Override
     protected boolean hidePassword() {
-        return !AnyTypeKind.USER.name().equals(provisionTO.getAnyType());
+        return !AnyTypeKind.USER.name().equals(provision.getAnyType());
     }
 
     @Override
@@ -106,7 +106,7 @@ public class ResourceMappingPanel extends AbstractMappingPanel {
     @Override
     protected void onBeforeRender() {
         super.onBeforeRender();
-        passwordLabel.setVisible(AnyTypeKind.USER.name().equals(this.provisionTO.getAnyType()));
+        passwordLabel.setVisible(AnyTypeKind.USER.name().equals(this.provision.getAnyType()));
     }
 
     @Override
@@ -114,33 +114,38 @@ public class ResourceMappingPanel extends AbstractMappingPanel {
         toBeUpdated.setRequired(true);
         toBeUpdated.setEnabled(true);
 
-        AnyTypeTO anyTypeTO = anyTypeRestClient.read(provisionTO.getAnyType());
-
-        List<AnyTypeClassTO> anyTypeClassTOs = new ArrayList<>();
-        anyTypeClassTOs.addAll(anyTypeClassRestClient.list(anyTypeTO.getClasses()));
-        for (String auxClass : provisionTO.getAuxClasses()) {
-            anyTypeClassTOs.add(anyTypeClassRestClient.read(auxClass));
-        }
-
         Set<String> choices = new HashSet<>();
+        if (SyncopeConstants.REALM_ANYTYPE.equals(provision.getAnyType())) {
+            choices.add("key");
+            choices.add("name");
+            choices.add("fullpath");
+        } else {
+            AnyTypeTO anyTypeTO = anyTypeRestClient.read(provision.getAnyType());
+
+            List<AnyTypeClassTO> anyTypeClassTOs = new ArrayList<>();
+            anyTypeClassTOs.addAll(anyTypeClassRestClient.list(anyTypeTO.getClasses()));
+            for (String auxClass : provision.getAuxClasses()) {
+                anyTypeClassTOs.add(anyTypeClassRestClient.read(auxClass));
+            }
 
-        switch (provisionTO.getAnyType()) {
-            case "USER":
-                choices.addAll(USER_FIELD_NAMES);
-                break;
+            switch (provision.getAnyType()) {
+                case "USER":
+                    choices.addAll(USER_FIELD_NAMES);
+                    break;
 
-            case "GROUP":
-                choices.addAll(GROUP_FIELD_NAMES);
-                break;
+                case "GROUP":
+                    choices.addAll(GROUP_FIELD_NAMES);
+                    break;
 
-            default:
-                choices.addAll(ANY_OBJECT_FIELD_NAMES);
-        }
+                default:
+                    choices.addAll(ANY_OBJECT_FIELD_NAMES);
+            }
 
-        for (AnyTypeClassTO anyTypeClassTO : anyTypeClassTOs) {
-            choices.addAll(anyTypeClassTO.getPlainSchemas());
-            choices.addAll(anyTypeClassTO.getDerSchemas());
-            choices.addAll(anyTypeClassTO.getVirSchemas());
+            for (AnyTypeClassTO anyTypeClassTO : anyTypeClassTOs) {
+                choices.addAll(anyTypeClassTO.getPlainSchemas());
+                choices.addAll(anyTypeClassTO.getDerSchemas());
+                choices.addAll(anyTypeClassTO.getVirSchemas());
+            }
         }
 
         final List<String> names = new ArrayList<>(choices);

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvision.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvision.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvision.java
new file mode 100644
index 0000000..796fb76
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvision.java
@@ -0,0 +1,151 @@
+/*
+ * 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.wizards.resources;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.to.ItemTO;
+import org.apache.syncope.common.lib.to.MappingTO;
+import org.apache.syncope.common.lib.to.OrgUnitTO;
+import org.apache.syncope.common.lib.to.ProvisionTO;
+
+public class ResourceProvision implements Serializable {
+
+    private static final long serialVersionUID = 1103991919577739952L;
+
+    private ProvisionTO provisionTO;
+
+    private OrgUnitTO orgUnitTO;
+
+    private List<ItemTO> items;
+
+    public ResourceProvision() {
+        this.items = new ArrayList<>();
+    }
+
+    public ResourceProvision(final ProvisionTO provisionTO) {
+        setProvisionTO(provisionTO);
+    }
+
+    public ResourceProvision(final OrgUnitTO orgUnitTO) {
+        setOrgUnitTO(orgUnitTO);
+    }
+
+    public ProvisionTO getProvisionTO() {
+        return provisionTO;
+    }
+
+    public final void setProvisionTO(final ProvisionTO provisionTO) {
+        this.provisionTO = provisionTO;
+        this.orgUnitTO = null;
+
+        if (this.items == null) {
+            this.items = new ArrayList<>();
+        } else {
+            this.items.clear();
+        }
+        if (provisionTO.getMapping() != null) {
+            this.items.addAll(provisionTO.getMapping().getItems());
+        }
+    }
+
+    public OrgUnitTO getOrgUnitTO() {
+        return orgUnitTO;
+    }
+
+    public final void setOrgUnitTO(final OrgUnitTO orgUnitTO) {
+        this.orgUnitTO = orgUnitTO;
+        this.provisionTO = null;
+
+        if (this.items == null) {
+            this.items = new ArrayList<>();
+        } else {
+            this.items.clear();
+        }
+        this.items.addAll(orgUnitTO.getItems());
+    }
+
+    public String getKey() {
+        return provisionTO == null
+                ? orgUnitTO == null
+                        ? null
+                        : orgUnitTO.getKey()
+                : provisionTO.getKey();
+    }
+
+    public String getAnyType() {
+        return provisionTO == null
+                ? orgUnitTO == null
+                        ? null
+                        : SyncopeConstants.REALM_ANYTYPE : provisionTO.getAnyType();
+    }
+
+    public void setAnyType(final String anyType) {
+        if (SyncopeConstants.REALM_ANYTYPE.equals(anyType)) {
+            setOrgUnitTO(new OrgUnitTO());
+        } else {
+            setProvisionTO(new ProvisionTO());
+            getProvisionTO().setAnyType(anyType);
+            getProvisionTO().setMapping(new MappingTO());
+        }
+    }
+
+    public String getObjectClass() {
+        return provisionTO == null
+                ? orgUnitTO == null
+                        ? null
+                        : orgUnitTO.getObjectClass() : provisionTO.getObjectClass();
+    }
+
+    public void setObjectClass(final String objectClass) {
+        if (provisionTO == null) {
+            orgUnitTO.setObjectClass(objectClass);
+        } else {
+            provisionTO.setObjectClass(objectClass);
+        }
+    }
+
+    public List<String> getAuxClasses() {
+        return provisionTO == null ? Collections.<String>emptyList() : provisionTO.getAuxClasses();
+    }
+
+    public String getConnObjectLink() {
+        return provisionTO == null
+                ? orgUnitTO == null
+                        ? null
+                        : orgUnitTO.getConnObjectLink()
+                : provisionTO.getMapping().getConnObjectLink();
+    }
+
+    public void setConnObjectLink(final String connObjectLink) {
+        if (provisionTO == null) {
+            orgUnitTO.setConnObjectLink(connObjectLink);
+        } else {
+            provisionTO.getMapping().setConnObjectLink(connObjectLink);
+        }
+    }
+
+    public List<ItemTO> getItems() {
+        return items;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
index 33e254a..26ce5d5 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
@@ -20,14 +20,12 @@ package org.apache.syncope.client.console.wizards.resources;
 
 import java.io.Serializable;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 import org.apache.commons.collections4.IterableUtils;
 import org.apache.commons.collections4.IteratorUtils;
 import org.apache.commons.collections4.Predicate;
-import org.apache.commons.lang3.SerializationUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
@@ -36,45 +34,33 @@ import org.apache.syncope.client.console.panels.AbstractModalPanel;
 import org.apache.syncope.client.console.panels.ListViewPanel;
 import org.apache.syncope.client.console.panels.ListViewPanel.ListViewReload;
 import org.apache.syncope.client.console.rest.AnyTypeRestClient;
-import org.apache.syncope.client.console.rest.ConnectorRestClient;
 import org.apache.syncope.client.console.rest.ResourceRestClient;
-import org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
 import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
 import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
-import org.apache.syncope.client.console.wicket.markup.html.form.AjaxCheckBoxPanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.console.wizards.AjaxWizard;
 import org.apache.syncope.client.console.wizards.WizardMgtPanel;
 import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.MappingItemTO;
+import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.syncope.common.lib.to.ItemTO;
 import org.apache.syncope.common.lib.to.ProvisionTO;
 import org.apache.syncope.common.lib.to.ResourceTO;
-import org.apache.syncope.common.lib.to.OrgUnitTO;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.event.Broadcast;
-import org.apache.wicket.event.IEvent;
-import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.StringResourceModel;
 
 public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
 
     private static final long serialVersionUID = -7982691107029848579L;
 
-    private final ConnectorRestClient connectorRestClient = new ConnectorRestClient();
-
     private final ResourceRestClient resourceRestClient = new ResourceRestClient();
 
     private final ResourceTO resourceTO;
 
-    private Model<OrgUnitTO> baseModel;
-
-    private final WebMarkupContainer aboutRealmProvison;
+    private final List<ResourceProvision> provisions;
 
     public ResourceProvisionPanel(
             final BaseModal<Serializable> modal,
@@ -84,108 +70,25 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
         super(modal, pageRef);
         this.resourceTO = resourceTO;
 
-        baseModel = Model.of(resourceTO.getOrgUnit() == null ? new OrgUnitTO() : resourceTO.getOrgUnit());
-
         setOutputMarkupId(true);
 
-        // ----------------------------------------------------------------------
-        // Realms provisioning
-        // ----------------------------------------------------------------------
-        aboutRealmProvison = new WebMarkupContainer("aboutRealmProvison");
-        aboutRealmProvison.setOutputMarkupPlaceholderTag(true);
-        add(aboutRealmProvison);
-
-        boolean realmProvisionEnabled = resourceTO.getOrgUnit() != null;
-
-        final AjaxCheckBoxPanel enableRealmsProvision = new AjaxCheckBoxPanel(
-                "enableRealmsProvision",
-                "enableRealmsProvision",
-                Model.of(realmProvisionEnabled),
-                false);
-        aboutRealmProvison.add(enableRealmsProvision);
-        enableRealmsProvision.setIndex(1).setTitle(getString("enableRealmsProvision.title"));
-
-        final WebMarkupContainer realmsProvisionContainer = new WebMarkupContainer("realmsProvisionContainer");
-        realmsProvisionContainer.setOutputMarkupPlaceholderTag(true);
-        realmsProvisionContainer.setEnabled(realmProvisionEnabled).setVisible(realmProvisionEnabled);
-        aboutRealmProvison.add(realmsProvisionContainer);
-
-        final AjaxTextFieldPanel objectClass = new AjaxTextFieldPanel(
-                "objectClass",
-                getString("objectClass"),
-                new PropertyModel<String>(baseModel.getObject(), "objectClass"),
-                false);
-        realmsProvisionContainer.add(objectClass.addRequiredLabel());
-
-        final AjaxTextFieldPanel extAttrName = new AjaxTextFieldPanel(
-                "extAttrName",
-                getString("extAttrName"),
-                new PropertyModel<String>(baseModel.getObject(), "extAttrName"),
-                false);
-        if (resourceTO.getOrgUnit() != null) {
-            extAttrName.setChoices(connectorRestClient.getExtAttrNames(
-                    resourceTO.getOrgUnit().getObjectClass(),
-                    resourceTO.getConnector(),
-                    resourceTO.getConfOverride()));
-        }
-        realmsProvisionContainer.add(extAttrName.addRequiredLabel());
-
-        objectClass.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_BLUR) {
-
-            private static final long serialVersionUID = -1107858522700306810L;
-
-            @Override
-            protected void onUpdate(final AjaxRequestTarget target) {
-                extAttrName.setChoices(connectorRestClient.getExtAttrNames(
-                        objectClass.getModelObject(),
-                        resourceTO.getConnector(),
-                        resourceTO.getConfOverride()));
-                target.focusComponent(extAttrName);
-            }
-        });
-
-        final AjaxTextFieldPanel connObjectLink = new AjaxTextFieldPanel(
-                "connObjectLink",
-                new ResourceModel("connObjectLink", "connObjectLink").getObject(),
-                new PropertyModel<String>(baseModel.getObject(), "connObjectLink"),
-                false);
-        realmsProvisionContainer.add(connObjectLink.addRequiredLabel());
-
-        enableRealmsProvision.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
-
-            private static final long serialVersionUID = -1107858522700306810L;
-
-            @Override
-            protected void onUpdate(final AjaxRequestTarget target) {
-                boolean realmProvisionEnabled = enableRealmsProvision.getModelObject();
-                realmsProvisionContainer.setEnabled(realmProvisionEnabled).setVisible(realmProvisionEnabled);
-                target.add(realmsProvisionContainer);
-
-                if (realmProvisionEnabled) {
-                    resourceTO.setOrgUnit(baseModel.getObject());
-                } else {
-                    resourceTO.setOrgUnit(null);
-                }
-
-            }
-        });
-        // ----------------------------------------------------------------------
-
         final ProvisionWizardBuilder wizard = new ProvisionWizardBuilder(resourceTO, pageRef);
 
-        final ListViewPanel.Builder<ProvisionTO> builder = new ListViewPanel.Builder<ProvisionTO>(
-                ProvisionTO.class, pageRef) {
+        final ListViewPanel.Builder<ResourceProvision> builder = new ListViewPanel.Builder<ResourceProvision>(
+                ResourceProvision.class, pageRef) {
 
             private static final long serialVersionUID = 4907732721283972943L;
 
             @Override
-            protected ProvisionTO getActualItem(final ProvisionTO item, final List<ProvisionTO> list) {
+            protected ResourceProvision getActualItem(
+                    final ResourceProvision item, final List<ResourceProvision> list) {
+
                 return item == null
                         ? null
-                        : IteratorUtils.find(list.iterator(), new Predicate<ProvisionTO>() {
+                        : IteratorUtils.find(list.iterator(), new Predicate<ResourceProvision>() {
 
                             @Override
-                            public boolean evaluate(final ProvisionTO in) {
+                            public boolean evaluate(final ResourceProvision in) {
                                 return ((item.getKey() == null && in.getKey() == null)
                                         || (in.getKey() != null && in.getKey().equals(item.getKey())))
                                         && ((item.getAnyType() == null && in.getAnyType() == null)
@@ -202,45 +105,46 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
 
             @Override
             protected void customActionOnCancelCallback(final AjaxRequestTarget target) {
-                ResourceProvisionPanel.this.aboutRealmProvison.setVisible(true);
-                target.add(ResourceProvisionPanel.this.aboutRealmProvison);
-
                 // change modal footer visibility
                 send(ResourceProvisionPanel.this, Broadcast.BUBBLE, new BaseModal.ChangeFooterVisibilityEvent(target));
             }
 
             @Override
             protected void customActionOnFinishCallback(final AjaxRequestTarget target) {
-                ResourceProvisionPanel.this.aboutRealmProvison.setVisible(true);
-                target.add(ResourceProvisionPanel.this.aboutRealmProvison);
-
                 // keep list ordered - SYNCOPE-1154
-                sortProvisionList();
+                sortProvisions();
 
                 // change modal footer visibility
                 send(ResourceProvisionPanel.this, Broadcast.BUBBLE, new BaseModal.ChangeFooterVisibilityEvent(target));
             }
         };
 
+        provisions = new ArrayList<>();
+        if (resourceTO.getOrgUnit() != null) {
+            provisions.add(new ResourceProvision(resourceTO.getOrgUnit()));
+        }
+        for (ProvisionTO provision : resourceTO.getProvisions()) {
+            provisions.add(new ResourceProvision(provision));
+        }
         // keep list ordered - SYNCOPE-1154
-        sortProvisionList();
+        sortProvisions();
 
-        builder.setItems(resourceTO.getProvisions());
+        builder.setItems(provisions);
         builder.includes("anyType", "objectClass", "auxClasses");
         builder.setReuseItem(false);
 
-        builder.addAction(new ActionLink<ProvisionTO>() {
+        builder.addAction(new ActionLink<ResourceProvision>() {
 
             private static final long serialVersionUID = -3722207913631435504L;
 
             @Override
-            public void onClick(final AjaxRequestTarget target, final ProvisionTO provisionTO) {
+            public void onClick(final AjaxRequestTarget target, final ResourceProvision provision) {
                 try {
                     send(ResourceProvisionPanel.this, Broadcast.DEPTH,
-                            new AjaxWizard.NewItemActionEvent<>(provisionTO, 2, target).setResourceModel(
+                            new AjaxWizard.NewItemActionEvent<>(provision, 2, target).setResourceModel(
                                     new StringResourceModel("inner.provision.mapping",
                                             ResourceProvisionPanel.this,
-                                            Model.of(provisionTO))));
+                                            Model.of(provision))));
                 } catch (SyncopeClientException e) {
                     LOG.error("While contacting resource", e);
                     SyncopeConsoleSession.get().error(
@@ -249,105 +153,97 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
                 }
             }
         }, ActionLink.ActionType.MAPPING, StandardEntitlement.RESOURCE_UPDATE).
-                addAction(new ActionLink<ProvisionTO>() {
+                addAction(new ActionLink<ResourceProvision>() {
 
                     private static final long serialVersionUID = -7780999687733432439L;
 
                     @Override
-                    public void onClick(final AjaxRequestTarget target, final ProvisionTO provisionTO) {
+                    public void onClick(final AjaxRequestTarget target, final ResourceProvision provision) {
                         try {
-                            resourceRestClient.setLatestSyncToken(resourceTO.getKey(), provisionTO.getAnyType());
+                            resourceRestClient.setLatestSyncToken(resourceTO.getKey(), provision.getAnyType());
                             SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
                         } catch (Exception e) {
                             LOG.error("While setting latest sync token for {}/{}",
-                                    resourceTO.getKey(), provisionTO.getAnyType(), e);
+                                    resourceTO.getKey(), provision.getAnyType(), e);
                             SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
                                     ? e.getClass().getName() : e.getMessage());
                         }
                         ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
                     }
                 }, ActionLink.ActionType.SET_LATEST_SYNC_TOKEN, StandardEntitlement.RESOURCE_UPDATE).
-                addAction(new ActionLink<ProvisionTO>() {
+                addAction(new ActionLink<ResourceProvision>() {
 
                     private static final long serialVersionUID = -7780999687733432439L;
 
                     @Override
-                    public void onClick(final AjaxRequestTarget target, final ProvisionTO provisionTO) {
+                    public void onClick(final AjaxRequestTarget target, final ResourceProvision provision) {
                         try {
-                            resourceRestClient.removeSyncToken(resourceTO.getKey(), provisionTO.getAnyType());
+                            resourceRestClient.removeSyncToken(resourceTO.getKey(), provision.getAnyType());
                             SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
                         } catch (Exception e) {
                             LOG.error("While removing sync token for {}/{}",
-                                    resourceTO.getKey(), provisionTO.getAnyType(), e);
+                                    resourceTO.getKey(), provision.getAnyType(), e);
                             SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
                                     ? e.getClass().getName() : e.getMessage());
                         }
                         ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
                     }
                 }, ActionLink.ActionType.REMOVE_SYNC_TOKEN, StandardEntitlement.RESOURCE_UPDATE).
-                addAction(new ActionLink<ProvisionTO>() {
-
-                    private static final long serialVersionUID = -3722207913631435534L;
-
-                    @Override
-                    public void onClick(final AjaxRequestTarget target, final ProvisionTO provisionTO) {
-                        final ProvisionTO clone = SerializationUtils.clone(provisionTO);
-                        clone.setKey(null);
-                        clone.setAnyType(null);
-                        clone.setObjectClass(null);
-                        send(ResourceProvisionPanel.this, Broadcast.DEPTH,
-                                new AjaxWizard.NewItemActionEvent<>(clone, target).setResourceModel(
-                                        new StringResourceModel("inner.provision.clone",
-                                                ResourceProvisionPanel.this,
-                                                Model.of(provisionTO))));
-                    }
-                }, ActionLink.ActionType.CLONE, StandardEntitlement.RESOURCE_CREATE).
-                addAction(new ActionLink<ProvisionTO>() {
+                addAction(new ActionLink<ResourceProvision>() {
 
                     private static final long serialVersionUID = -3722207913631435544L;
 
                     @Override
-                    public void onClick(final AjaxRequestTarget target, final ProvisionTO provisionTO) {
-                        resourceTO.getProvisions().remove(provisionTO);
+                    public void onClick(final AjaxRequestTarget target, final ResourceProvision provision) {
+                        if (provision.getOrgUnitTO() != null) {
+                            resourceTO.setOrgUnit(null);
+                        } else if (provision.getProvisionTO() != null) {
+                            resourceTO.getProvisions().remove(provision.getProvisionTO());
+                        }
+                        provisions.remove(provision);
                         send(ResourceProvisionPanel.this, Broadcast.DEPTH, new ListViewReload<>(target));
                     }
-                }, ActionLink.ActionType.DELETE, StandardEntitlement.RESOURCE_DELETE);
+                }, ActionLink.ActionType.DELETE, StandardEntitlement.RESOURCE_UPDATE);
 
         builder.addNewItemPanelBuilder(wizard);
 
-        final WizardMgtPanel<ProvisionTO> list = builder.build("provision");
+        final WizardMgtPanel<ResourceProvision> list = builder.build("provision");
         add(list);
     }
 
+    private void checkConnObjectKeyCount(final String anyType, final List<ItemTO> items) {
+        long connObjectKeyCount = IterableUtils.countMatches(items, new Predicate<ItemTO>() {
+
+            @Override
+            public boolean evaluate(final ItemTO item) {
+                return item.isConnObjectKey();
+            }
+        });
+
+        if (connObjectKeyCount != 1) {
+            throw new IllegalArgumentException(anyType + ": "
+                    + new StringResourceModel("connObjectKeyValidation", ResourceProvisionPanel.this).getString());
+        }
+    }
+
     @Override
     public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
         try {
-            final Collection<ProvisionTO> provisions = new ArrayList<>(resourceTO.getProvisions());
+            if (resourceTO.getOrgUnit() != null) {
+                checkConnObjectKeyCount(SyncopeConstants.REALM_ANYTYPE, resourceTO.getOrgUnit().getItems());
+            }
 
-            for (ProvisionTO provision : provisions) {
+            for (ProvisionTO provision : new ArrayList<>(resourceTO.getProvisions())) {
                 if (provision != null) {
                     if (provision.getMapping() == null || provision.getMapping().getItems().isEmpty()) {
                         resourceTO.getProvisions().remove(provision);
                     } else {
-                        long connObjectKeyCount = IterableUtils.countMatches(
-                                provision.getMapping().getItems(), new Predicate<MappingItemTO>() {
-
-                            @Override
-                            public boolean evaluate(final MappingItemTO item) {
-                                return item.isConnObjectKey();
-                            }
-                        });
-
-                        if (connObjectKeyCount != 1) {
-                            throw new IllegalArgumentException(provision.getAnyType() + ": "
-                                    + new StringResourceModel("connObjectKeyValidation", ResourceProvisionPanel.this).
-                                            getString());
-                        }
+                        checkConnObjectKeyCount(provision.getAnyType(), provision.getMapping().getItems());
                     }
                 }
             }
 
-            new ResourceRestClient().update(resourceTO);
+            resourceRestClient.update(resourceTO);
             SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
             modal.close(target);
         } catch (Exception e) {
@@ -358,24 +254,13 @@ public class ResourceProvisionPanel extends AbstractModalPanel<Serializable> {
         ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
     }
 
-    private void sortProvisionList() {
-        Collections.sort(resourceTO.getProvisions(), new Comparator<ProvisionTO>() {
+    private void sortProvisions() {
+        Collections.sort(provisions, new Comparator<ResourceProvision>() {
 
             @Override
-            public int compare(final ProvisionTO o1, final ProvisionTO o2) {
+            public int compare(final ResourceProvision o1, final ResourceProvision o2) {
                 return new AnyTypeRestClient.AnyTypeKeyComparator().compare(o1.getAnyType(), o2.getAnyType());
             }
         });
     }
-
-    @Override
-    public void onEvent(final IEvent<?> event) {
-        if (event.getPayload() instanceof AjaxWizard.NewItemActionEvent) {
-            aboutRealmProvison.setVisible(false);
-            final AjaxRequestTarget target = ((AjaxWizard.NewItemEvent) event.getPayload()).getTarget();
-            target.add(aboutRealmProvison);
-        }
-
-        super.onEvent(event);
-    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
index 5b81fc2..8763e9a 100644
--- a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
+++ b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
@@ -575,7 +575,7 @@ div#startAt {
   z-index: 6000 !important;
 }
 
-div#mappingItemTransformersTogglePanel {
+div#itemTransformersTogglePanel {
   min-width: 1000px;
 }
 
@@ -994,12 +994,12 @@ div.transformersContainer #body {
   display: block;
 }
 
-div.mappingItemTransformersContainer #body select {
+div.itemTransformersContainer #body select {
   border: 1px solid #ccc !important;
   background: rgba(240, 240, 240, 0.95) !important
 }
 
-div.mappingItemTransformersContainer #body a {
+div.itemTransformersContainer #body a {
   color: #ccc !important;
   cursor: pointer !important;
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/widgets/ItemTransformerWidget.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/ItemTransformerWidget.properties b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/ItemTransformerWidget.properties
new file mode 100644
index 0000000..5c2d15d
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/ItemTransformerWidget.properties
@@ -0,0 +1,18 @@
+# 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.
+alerts.view.all=View All Mapping Item Tranformers
+summary=${number} selected transformer(s)

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/widgets/ItemTransformerWidget_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/ItemTransformerWidget_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/ItemTransformerWidget_it.properties
new file mode 100644
index 0000000..8e23aef
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/ItemTransformerWidget_it.properties
@@ -0,0 +1,18 @@
+# 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.
+alerts.view.all=View All Mapping Item Tranformers
+summary=${number} transformer selezionati

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/widgets/ItemTransformerWidget_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/ItemTransformerWidget_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/ItemTransformerWidget_pt_BR.properties
new file mode 100644
index 0000000..0fd94d7
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/ItemTransformerWidget_pt_BR.properties
@@ -0,0 +1,18 @@
+# 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.
+alerts.view.all=View All Mapping Item Tranformers
+summary=${number} JEXL transforming expression(s)

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/widgets/ItemTransformerWidget_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/ItemTransformerWidget_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/ItemTransformerWidget_ru.properties
new file mode 100644
index 0000000..e79d679
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/ItemTransformerWidget_ru.properties
@@ -0,0 +1,19 @@
+# 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.
+#
+alerts.view.all=\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432
+summary=\u0412\u044b\u0431\u0440\u0430\u043d\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432: ${number}

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/widgets/MappingItemTransformerWidget.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/MappingItemTransformerWidget.properties b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/MappingItemTransformerWidget.properties
deleted file mode 100644
index 5c2d15d..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/MappingItemTransformerWidget.properties
+++ /dev/null
@@ -1,18 +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.
-alerts.view.all=View All Mapping Item Tranformers
-summary=${number} selected transformer(s)

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/widgets/MappingItemTransformerWidget_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/MappingItemTransformerWidget_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/MappingItemTransformerWidget_it.properties
deleted file mode 100644
index 8e23aef..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/MappingItemTransformerWidget_it.properties
+++ /dev/null
@@ -1,18 +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.
-alerts.view.all=View All Mapping Item Tranformers
-summary=${number} transformer selezionati

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/widgets/MappingItemTransformerWidget_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/MappingItemTransformerWidget_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/MappingItemTransformerWidget_pt_BR.properties
deleted file mode 100644
index 0fd94d7..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/MappingItemTransformerWidget_pt_BR.properties
+++ /dev/null
@@ -1,18 +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.
-alerts.view.all=View All Mapping Item Tranformers
-summary=${number} JEXL transforming expression(s)

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/widgets/MappingItemTransformerWidget_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/MappingItemTransformerWidget_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/widgets/MappingItemTransformerWidget_ru.properties
deleted file mode 100644
index e79d679..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/widgets/MappingItemTransformerWidget_ru.properties
+++ /dev/null
@@ -1,19 +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.
-#
-alerts.view.all=\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432
-summary=\u0412\u044b\u0431\u0440\u0430\u043d\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432: ${number}

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/wizards/AbstractMappingPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/AbstractMappingPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/AbstractMappingPanel.html
index 538d804..57339dd 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/AbstractMappingPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/AbstractMappingPanel.html
@@ -57,7 +57,7 @@ under the License.
               </td>
               <td>
                 <div class="alert-widget dropdown tasks-menu">
-                  <span wicket:id="mappingItemTransformers">[Mapping Item Transformers]</span>
+                  <span wicket:id="itemTransformers">[Mapping Item Transformers]</span>
                 </div>
               </td>
               <td>

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel.html
new file mode 100644
index 0000000..01ef653
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel.html
@@ -0,0 +1,32 @@
+<!--
+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:extend>
+    <div id="itemTransformersContainer" class="transformersContainer">
+      <form wicket:id="form">
+        <div id="body">
+          <span wicket:id="classes"/>
+        </div>
+        <div id="footer">
+          <input type="button" wicket:id="submit" class="btn" wicket:message="value:finish"></input>
+        </div>
+      </form>
+    </div>
+  </wicket:extend>
+</html>

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel.properties
new file mode 100644
index 0000000..06d3702
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel.properties
@@ -0,0 +1,19 @@
+# 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.
+finish=Finish
+palette.available=Available Mapping Item Transformers
+palette.selected=Selected Mapping Item Transformers

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel_it.properties
new file mode 100644
index 0000000..9e80b99
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel_it.properties
@@ -0,0 +1,19 @@
+# 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.
+finish=Fine
+palette.available=Mapping Item Transformer Disponibili
+palette.selected=Mapping Item Transformer Selezionati

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel_pt_BR.properties
new file mode 100644
index 0000000..d5a72dc
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel_pt_BR.properties
@@ -0,0 +1,19 @@
+# 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.
+finish=Finish
+palette.available=Available Mapping Item Transformers
+palette.selected=Mapping Item

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel_ru.properties
new file mode 100644
index 0000000..5f823ee
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ItemTransformersTogglePanel_ru.properties
@@ -0,0 +1,20 @@
+# 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.
+#
+finish=\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c
+palette.available=\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0434\u043b\u044f \u043c\u0430\u043f\u043f\u0438\u043d\u0433\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432
+palette.selected=\u041c\u0430\u043f\u043f\u0438\u043d\u0433 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel.html
deleted file mode 100644
index 8983a41..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
-  <wicket:extend>
-    <div id="mappingItemTransformersContainer" class="transformersContainer">
-      <form wicket:id="form">
-        <div id="body">
-          <span wicket:id="classes"/>
-        </div>
-        <div id="footer">
-          <input type="button" wicket:id="submit" class="btn" wicket:message="value:finish"></input>
-        </div>
-      </form>
-    </div>
-  </wicket:extend>
-</html>

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel.properties
deleted file mode 100644
index 06d3702..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel.properties
+++ /dev/null
@@ -1,19 +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.
-finish=Finish
-palette.available=Available Mapping Item Transformers
-palette.selected=Selected Mapping Item Transformers

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel_it.properties
deleted file mode 100644
index 9e80b99..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel_it.properties
+++ /dev/null
@@ -1,19 +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.
-finish=Fine
-palette.available=Mapping Item Transformer Disponibili
-palette.selected=Mapping Item Transformer Selezionati

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel_pt_BR.properties
deleted file mode 100644
index d5a72dc..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel_pt_BR.properties
+++ /dev/null
@@ -1,19 +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.
-finish=Finish
-palette.available=Available Mapping Item Transformers
-palette.selected=Mapping Item

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel_ru.properties
deleted file mode 100644
index 5f823ee..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/MappingItemTransformersTogglePanel_ru.properties
+++ /dev/null
@@ -1,20 +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.
-#
-finish=\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c
-palette.available=\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0434\u043b\u044f \u043c\u0430\u043f\u043f\u0438\u043d\u0433\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432
-palette.selected=\u041c\u0430\u043f\u043f\u0438\u043d\u0433 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.html
index de5c92f..ef243a8 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.html
@@ -18,14 +18,6 @@ under the License.
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
   <wicket:panel>
-    <div wicket:id="aboutRealmProvison" class="col-xs-12 panel-body">
-      <span wicket:id="enableRealmsProvision"/>
-      <div wicket:id="realmsProvisionContainer">
-        <span wicket:id="objectClass"/>
-        <span wicket:id="extAttrName"/>
-        <span wicket:id="connObjectLink"/>
-      </div>
-    </div>
     <span wicket:id="provision">[PROVISION]</span>
   </wicket:panel>
 </html>

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.properties
index a50917d..47bfff5 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.properties
@@ -18,13 +18,8 @@ anyType=Object Type
 objectClass= Object Class
 auxClasses=Auxiliary Classes
 
-extAttrName=External attribute
-
 connObjectKeyValidation=There must be exactly one Remote Key
 propagationMode=Propagation mode
-connObjectLink=Object Link
 enable=Enable
 inner.provision.mapping=${anyType} provision
 inner.provision.clone=Clone provision '${key}'
-enableRealmsProvision=Enable realm provisioning
-enableRealmsProvision.title=Enable the possibility to provision realms towards external resource

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_it.properties
index 6e7dac6..da47b7f 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_it.properties
@@ -18,13 +18,8 @@ anyType=Tipo oggetto
 objectClass=Classe
 auxClasses=Classi Ausiliarie
 
-extAttrName=Attributo esterno
-
 connObjectKeyValidation=Deve essere definito esattamente una Chiave remota
 propagationMode=Modalit\u00e0 di propagazione
-connObjectLink=ID Remoto
 enable=Abilita
 inner.provision.mapping=Provision ${anyType}
 inner.provision.clone=Clona il provision '${key}'
-enableRealmsProvision=Abilita il provisioning dei realm
-enableRealmsProvision.title=Abilita la possibilit\u00e0 di effettuare il provisioning dei realm verso la risorsa esterna

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_pt_BR.properties
index bdd9e92..9f49625 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_pt_BR.properties
@@ -18,13 +18,8 @@ anyType=Object Type
 objectClass=Classe
 auxClasses=Classes Auxiliares
 
-extAttrName=Atributo Externo
-
 connObjectKeyValidation=Precisa ser exatamente um Remote Key
 propagationMode=Modo de propaga\u00e7\u00e3o
-connObjectLink=Remote ID
 enable=Habilitado
 inner.provision.mapping=${anyType} provision
 inner.provision.clone=Clone provision '${key}'
-enableRealmsProvision=Enable realm provisioning
-enableRealmsProvision.title=Enable the possibility to provision realms towards external resource

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_ru.properties
index b06c382..919bd00 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel_ru.properties
@@ -18,13 +18,8 @@ anyType=\u0422\u0438\u043f \u043e\u0431\u044a\u0435\u043a\u0442\u0430
 objectClass=\u041a\u043b\u0430\u0441\u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430
 auxClasses=\u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447
 
-extAttrName=\u0412\u043d\u0435\u0448\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b
-
 connObjectKeyValidation=\u0422\u0430\u043c \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430
 propagationMode=\u0420\u0435\u0436\u0438\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439
-connObjectLink=\u0421\u0432\u044f\u0437\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432
 enable=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c
 inner.provision.mapping=\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 ${anyType}
 inner.provision.clone=\u0414\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 '${key}'
-enableRealmsProvision=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u0438
-enableRealmsProvision.title=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430

http://git-wip-us.apache.org/repos/asf/syncope/blob/eebca673/common/lib/src/main/java/org/apache/syncope/common/lib/info/PlatformInfo.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/info/PlatformInfo.java b/common/lib/src/main/java/org/apache/syncope/common/lib/info/PlatformInfo.java
index 0594db4..76495b7 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/info/PlatformInfo.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/info/PlatformInfo.java
@@ -81,7 +81,7 @@ public class PlatformInfo extends AbstractBaseBean {
 
     private final Set<String> passwordRules = new HashSet<>();
 
-    private final Set<String> mappingItemTransformers = new HashSet<>();
+    private final Set<String> itemTransformers = new HashSet<>();
 
     private final Set<String> taskJobs = new HashSet<>();
 
@@ -233,11 +233,11 @@ public class PlatformInfo extends AbstractBaseBean {
         return passwordRules;
     }
 
-    @XmlElementWrapper(name = "mappingItemTransformers")
-    @XmlElement(name = "mappingItemTransformer")
-    @JsonProperty("mappingItemTransformers")
-    public Set<String> getMappingItemTransformers() {
-        return mappingItemTransformers;
+    @XmlElementWrapper(name = "itemTransformers")
+    @XmlElement(name = "itemTransformer")
+    @JsonProperty("itemTransformers")
+    public Set<String> getItemTransformers() {
+        return itemTransformers;
     }
 
     @XmlElementWrapper(name = "taskJobs")