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 2015/01/26 15:48:17 UTC

[11/12] syncope git commit: [SYNCOPE-620] IT with Activiti

[SYNCOPE-620] IT with Activiti


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

Branch: refs/heads/2_0_X
Commit: 1327b2a44abe1cc1cea08540af17749bdbd88d4e
Parents: 702810d
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Jan 26 15:47:02 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Jan 26 15:47:02 2015 +0100

----------------------------------------------------------------------
 .../syncope/common/to/WorkflowFormTO.java       |   1 -
 .../syncope/client/lib/SyncopeClient.java       |  28 -
 .../apache/syncope/common/lib/to/SyncopeTO.java | 186 ++++
 .../common/lib/to/WorkflowFormPropertyTO.java   |  12 +-
 .../syncope/common/lib/to/WorkflowFormTO.java   |  24 +-
 .../common/lib/wrap/CorrelationRuleClass.java   |  30 -
 .../syncope/common/lib/wrap/JobClass.java       |  30 -
 .../syncope/common/lib/wrap/MailTemplate.java   |  30 -
 .../common/lib/wrap/PropagationActionClass.java |  30 -
 .../common/lib/wrap/PushActionClass.java        |  30 -
 .../common/lib/wrap/SyncActionClass.java        |  30 -
 .../syncope/common/lib/wrap/Validator.java      |  30 -
 .../rest/api/service/ConfigurationService.java  |  23 -
 .../common/rest/api/service/PolicyService.java  |  11 -
 .../rest/api/service/ResourceService.java       |  11 -
 .../common/rest/api/service/SyncopeService.java |  33 +
 .../common/rest/api/service/TaskService.java    |  36 +-
 syncope620/fit/reference/pom.xml                |  56 +-
 .../src/main/resources/userWorkflow.bpmn20.xml  | 577 ++++++++++++
 .../src/main/resources/workflow.properties      |  20 +
 .../fit/server/reference/AbstractITCase.java    |   4 +
 .../fit/server/reference/ActivitiDetector.java  |  10 +-
 .../server/reference/AuthenticationITCase.java  |   2 +-
 .../fit/server/reference/PolicyITCase.java      |   2 +-
 .../fit/server/reference/ResourceITCase.java    |   3 +-
 .../fit/server/reference/TaskITCase.java        |  12 +-
 .../fit/server/reference/UserITCase.java        |   6 +-
 .../fit/server/reference/UserSelfITCase.java    |  14 +-
 .../server/reference/UserWorkflowITCase.java    |   6 +-
 .../fit/server/reference/WorkflowITCase.java    |  17 +-
 .../src/test/resources/addActivitiToContent.xsl |  50 ++
 syncope620/pom.xml                              |  15 +-
 .../server/logic/ConfigurationLogic.java        |  47 -
 .../syncope/server/logic/EntitlementLogic.java  |   2 +-
 .../syncope/server/logic/LoggerLogic.java       |   2 +-
 .../syncope/server/logic/NotificationLogic.java |  12 +-
 .../syncope/server/logic/PolicyLogic.java       |  10 -
 .../syncope/server/logic/ReportLogic.java       |  40 +-
 .../syncope/server/logic/ResourceLogic.java     |  27 +-
 .../apache/syncope/server/logic/RoleLogic.java  |  14 +-
 .../syncope/server/logic/SchemaLogic.java       |  19 +-
 .../server/logic/SecurityQuestionLogic.java     |  12 +-
 .../syncope/server/logic/SyncopeLogic.java      | 143 +++
 .../apache/syncope/server/logic/TaskLogic.java  |  32 +-
 .../apache/syncope/server/logic/UserLogic.java  |  16 +-
 .../init/ImplementationClassNamesLoader.java    |  15 +-
 .../logic/src/main/resources/logicContext.xml   |   4 +
 .../src/test/resources/content.xml              |   2 +-
 .../provisioning/api/ConnIdBundleManager.java   |   2 +
 .../java/ConnIdBundleManagerImpl.java           |   7 +
 .../provisioning/java/sync/SyncJobImpl.java     |   4 +-
 .../cxf/service/ConfigurationServiceImpl.java   |  14 -
 .../rest/cxf/service/PolicyServiceImpl.java     |   9 +-
 .../rest/cxf/service/ResourceServiceImpl.java   |   7 -
 .../rest/cxf/service/SyncopeServiceImpl.java    |  38 +
 .../rest/cxf/service/TaskServiceImpl.java       |  19 -
 syncope620/server/workflow-activiti/pom.xml     |   5 +
 .../activiti/ActivitiDefinitionLoader.java      | 104 +++
 .../workflow/activiti/ActivitiImportUtils.java  |  92 ++
 .../activiti/ActivitiUserWorkflowAdapter.java   | 893 +++++++++++++++++++
 .../activiti/SyncopeEntitiesVariableType.java   |  35 +
 .../workflow/activiti/SyncopeGroupManager.java  | 122 +++
 .../activiti/SyncopeGroupQueryImpl.java         | 157 ++++
 .../workflow/activiti/SyncopeSession.java       |  26 +
 .../activiti/SyncopeSessionFactory.java         |  45 +
 .../workflow/activiti/SyncopeUserManager.java   | 170 ++++
 .../workflow/activiti/SyncopeUserQueryImpl.java | 218 +++++
 .../task/AbstractActivitiServiceTask.java       |  48 +
 .../workflow/activiti/task/AutoActivate.java    |  31 +
 .../server/workflow/activiti/task/Create.java   |  51 ++
 .../server/workflow/activiti/task/Delete.java   |  40 +
 .../workflow/activiti/task/GenerateToken.java   |  43 +
 .../server/workflow/activiti/task/Notify.java   |  62 ++
 .../workflow/activiti/task/PasswordReset.java   |  44 +
 .../workflow/activiti/task/Reactivate.java      |  29 +
 .../server/workflow/activiti/task/Suspend.java  |  29 +
 .../server/workflow/activiti/task/Update.java   |  54 ++
 .../activiti/ActivitiDefinitionLoader.java      | 104 ---
 .../workflow/activiti/ActivitiImportUtils.java  |  92 --
 .../activiti/ActivitiUserWorkflowAdapter.java   | 893 -------------------
 .../activiti/SyncopeEntitiesVariableType.java   |  35 -
 .../workflow/activiti/SyncopeGroupManager.java  | 122 ---
 .../activiti/SyncopeGroupQueryImpl.java         | 157 ----
 .../workflow/activiti/SyncopeSession.java       |  26 -
 .../activiti/SyncopeSessionFactory.java         |  45 -
 .../workflow/activiti/SyncopeUserManager.java   | 170 ----
 .../workflow/activiti/SyncopeUserQueryImpl.java | 218 -----
 .../task/AbstractActivitiServiceTask.java       |  48 -
 .../workflow/activiti/task/AutoActivate.java    |  31 -
 .../syncope/workflow/activiti/task/Create.java  |  51 --
 .../syncope/workflow/activiti/task/Delete.java  |  40 -
 .../workflow/activiti/task/GenerateToken.java   |  43 -
 .../syncope/workflow/activiti/task/Notify.java  |  62 --
 .../workflow/activiti/task/PasswordReset.java   |  44 -
 .../workflow/activiti/task/Reactivate.java      |  29 -
 .../syncope/workflow/activiti/task/Suspend.java |  29 -
 .../syncope/workflow/activiti/task/Update.java  |  54 --
 .../src/main/resources/workflow.properties      |  20 +
 .../main/resources/workflowActivitiContext.xml  |  14 +-
 .../src/main/resources/workflow.properties      |   2 +
 100 files changed, 3584 insertions(+), 2909 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/common/src/main/java/org/apache/syncope/common/to/WorkflowFormTO.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/syncope/common/to/WorkflowFormTO.java b/common/src/main/java/org/apache/syncope/common/to/WorkflowFormTO.java
index 0269e92..26d023b 100644
--- a/common/src/main/java/org/apache/syncope/common/to/WorkflowFormTO.java
+++ b/common/src/main/java/org/apache/syncope/common/to/WorkflowFormTO.java
@@ -32,7 +32,6 @@ import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 import org.apache.syncope.common.AbstractBaseBean;
-import org.apache.syncope.common.to.WorkflowFormPropertyTO;
 
 @XmlRootElement(name = "workflowForm")
 @XmlType

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
----------------------------------------------------------------------
diff --git a/syncope620/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java b/syncope620/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
index 8407662..11bfa51 100644
--- a/syncope620/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
+++ b/syncope620/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java
@@ -20,16 +20,13 @@ package org.apache.syncope.client.lib;
 
 import javax.ws.rs.core.EntityTag;
 import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.syncope.common.lib.search.OrderByClauseBuilder;
 import org.apache.syncope.common.lib.search.RoleFiqlSearchConditionBuilder;
 import org.apache.syncope.common.lib.search.UserFiqlSearchConditionBuilder;
-import org.apache.syncope.common.lib.types.SubjectType;
 import org.apache.syncope.common.rest.api.Preference;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 import org.apache.syncope.common.rest.api.service.UserSelfService;
-import org.apache.syncope.common.rest.api.service.WorkflowService;
 
 /**
  * Entry point for client access to all REST services exposed by Syncope core; obtain instances via
@@ -239,31 +236,6 @@ public class SyncopeClient {
     }
 
     /**
-     * Checks whether Activiti workflow is enabled for users / roles, by calling <tt>WorkflowService</tt>'s options.
-     *
-     * @param subjectType user / role
-     * @return whether Activiti workflow is enabled for given attributable type
-     * @see WorkflowService#getOptions(org.apache.syncope.common.types.SubjectType)
-     */
-    public boolean isActivitiEnabledFor(final SubjectType subjectType) {
-        Response options = getService(WorkflowService.class).getOptions(subjectType);
-
-        boolean result;
-        switch (subjectType) {
-            case ROLE:
-                result = Boolean.valueOf(options.getHeaderString(RESTHeaders.ACTIVITI_ROLE_ENABLED));
-                break;
-
-            case USER:
-            default:
-                result = Boolean.valueOf(options.getHeaderString(RESTHeaders.ACTIVITI_USER_ENABLED));
-                break;
-        }
-
-        return result;
-    }
-
-    /**
      * Fetches <tt>ETag</tt> header value from latest service run (if available).
      *
      * @param <T> any service class

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncopeTO.java
----------------------------------------------------------------------
diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncopeTO.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncopeTO.java
new file mode 100644
index 0000000..d21e03f
--- /dev/null
+++ b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncopeTO.java
@@ -0,0 +1,186 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.common.lib.to;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.apache.syncope.common.lib.AbstractBaseBean;
+
+@XmlRootElement(name = "syncope")
+@XmlType
+public class SyncopeTO extends AbstractBaseBean {
+
+    private static final long serialVersionUID = -7941853999417673827L;
+
+    private String version;
+
+    private final List<String> connIdLocations = new ArrayList<>();
+
+    private String attributableTransformer;
+
+    private String userWorkflowAdapter;
+
+    private String roleWorkflowAdapter;
+
+    private String userProvisioningManager;
+
+    private String roleProvisioningManager;
+
+    private final List<String> reportlets = new ArrayList<>();
+
+    private final List<String> taskJobs = new ArrayList<>();
+
+    private final List<String> propagationActions = new ArrayList<>();
+
+    private final List<String> syncActions = new ArrayList<>();
+
+    private final List<String> pushActions = new ArrayList<>();
+
+    private final List<String> syncCorrelationRules = new ArrayList<>();
+
+    private final List<String> pushCorrelationRules = new ArrayList<>();
+
+    private final List<String> validators = new ArrayList<>();
+
+    private final List<String> mailTemplates = new ArrayList<>();
+
+    public String getVersion() {
+        return version;
+    }
+
+    @XmlElementWrapper(name = "connIdLocations")
+    @XmlElement(name = "connIdLocation")
+    @JsonProperty("connIdLocations")
+    public List<String> getConnIdLocations() {
+        return connIdLocations;
+    }
+
+    public String getAttributableTransformer() {
+        return attributableTransformer;
+    }
+
+    public String getUserWorkflowAdapter() {
+        return userWorkflowAdapter;
+    }
+
+    public String getRoleWorkflowAdapter() {
+        return roleWorkflowAdapter;
+    }
+
+    public String getUserProvisioningManager() {
+        return userProvisioningManager;
+    }
+
+    public String getRoleProvisioningManager() {
+        return roleProvisioningManager;
+    }
+
+    @XmlElementWrapper(name = "reportlets")
+    @XmlElement(name = "reportlet")
+    @JsonProperty("reportlets")
+    public List<String> getReportlets() {
+        return reportlets;
+    }
+
+    @XmlElementWrapper(name = "taskJobs")
+    @XmlElement(name = "taskJob")
+    @JsonProperty("taskJobs")
+    public List<String> getTaskJobs() {
+        return taskJobs;
+    }
+
+    @XmlElementWrapper(name = "propagationActions")
+    @XmlElement(name = "propagationAction")
+    @JsonProperty("propagationActions")
+    public List<String> getPropagationActions() {
+        return propagationActions;
+    }
+
+    @XmlElementWrapper(name = "syncActions")
+    @XmlElement(name = "syncAction")
+    @JsonProperty("syncActions")
+    public List<String> getSyncActions() {
+        return syncActions;
+    }
+
+    @XmlElementWrapper(name = "pushActions")
+    @XmlElement(name = "pushAction")
+    @JsonProperty("pushActions")
+    public List<String> getPushActions() {
+        return pushActions;
+    }
+
+    @XmlElementWrapper(name = "syncCorrelationRules")
+    @XmlElement(name = "syncCorrelationRule")
+    @JsonProperty("syncCorrelationRules")
+    public List<String> getSyncCorrelationRules() {
+        return syncCorrelationRules;
+    }
+
+    @XmlElementWrapper(name = "pushCorrelationRules")
+    @XmlElement(name = "pushCorrelationRule")
+    @JsonProperty("pushCorrelationRules")
+    public List<String> getPushCorrelationRules() {
+        return pushCorrelationRules;
+    }
+
+    @XmlElementWrapper(name = "validators")
+    @XmlElement(name = "validator")
+    @JsonProperty("validators")
+    public List<String> getValidators() {
+        return validators;
+    }
+
+    @XmlElementWrapper(name = "mailTemplates")
+    @XmlElement(name = "mailTemplate")
+    @JsonProperty("mailTemplates")
+    public List<String> getMailTemplates() {
+        return mailTemplates;
+    }
+
+    public void setVersion(final String version) {
+        this.version = version;
+    }
+
+    public void setAttributableTransformer(final String attributableTransformer) {
+        this.attributableTransformer = attributableTransformer;
+    }
+
+    public void setUserWorkflowAdapter(final String userWorkflowAdapter) {
+        this.userWorkflowAdapter = userWorkflowAdapter;
+    }
+
+    public void setRoleWorkflowAdapter(final String roleWorkflowAdapter) {
+        this.roleWorkflowAdapter = roleWorkflowAdapter;
+    }
+
+    public void setUserProvisioningManager(final String userProvisioningManager) {
+        this.userProvisioningManager = userProvisioningManager;
+    }
+
+    public void setRoleProvisioningManager(final String roleProvisioningManager) {
+        this.roleProvisioningManager = roleProvisioningManager;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormPropertyTO.java
----------------------------------------------------------------------
diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormPropertyTO.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormPropertyTO.java
index c89bfcd..5b67c92 100644
--- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormPropertyTO.java
+++ b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormPropertyTO.java
@@ -31,7 +31,7 @@ public class WorkflowFormPropertyTO extends AbstractBaseBean {
 
     private static final long serialVersionUID = 9139969592634304261L;
 
-    private String key;
+    private String id;
 
     private String name;
 
@@ -47,14 +47,14 @@ public class WorkflowFormPropertyTO extends AbstractBaseBean {
 
     private String datePattern;
 
-    private Map<String, String> enumValues = new HashMap<>();
+    private final Map<String, String> enumValues = new HashMap<>();
 
-    public String getKey() {
-        return key;
+    public String getId() {
+        return id;
     }
 
-    public void setKey(final String key) {
-        this.key = key;
+    public void setId(final String id) {
+        this.id = id;
     }
 
     public String getName() {

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormTO.java
----------------------------------------------------------------------
diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormTO.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormTO.java
index f63d9fe..90dc7c2 100644
--- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormTO.java
+++ b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormTO.java
@@ -52,11 +52,7 @@ public class WorkflowFormTO extends AbstractBaseBean {
 
     private String owner;
 
-    private final List<WorkflowFormPropertyTO> properties;
-
-    public WorkflowFormTO() {
-        properties = new ArrayList<>();
-    }
+    private final List<WorkflowFormPropertyTO> properties = new ArrayList<>();
 
     public long getUserKey() {
         return userKey;
@@ -133,27 +129,21 @@ public class WorkflowFormTO extends AbstractBaseBean {
 
     @JsonIgnore
     public Map<String, WorkflowFormPropertyTO> getPropertyMap() {
-        Map<String, WorkflowFormPropertyTO> result;
-
-        if (getProperties() == null) {
-            result = Collections.emptyMap();
-        } else {
-            result = new HashMap<>();
-            for (WorkflowFormPropertyTO prop : getProperties()) {
-                result.put(prop.getKey(), prop);
-            }
-            result = Collections.unmodifiableMap(result);
+        Map<String, WorkflowFormPropertyTO> result = new HashMap<>();
+        for (WorkflowFormPropertyTO prop : getProperties()) {
+            result.put(prop.getId(), prop);
         }
+        result = Collections.unmodifiableMap(result);
 
         return result;
     }
 
     @JsonIgnore
     public Map<String, String> getPropertiesForSubmit() {
-        Map<String, String> props = new HashMap<String, String>();
+        Map<String, String> props = new HashMap<>();
         for (WorkflowFormPropertyTO prop : getProperties()) {
             if (prop.isWritable()) {
-                props.put(prop.getKey(), prop.getValue());
+                props.put(prop.getId(), prop.getValue());
             }
         }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/CorrelationRuleClass.java
----------------------------------------------------------------------
diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/CorrelationRuleClass.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/CorrelationRuleClass.java
deleted file mode 100644
index 6a8997c..0000000
--- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/CorrelationRuleClass.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.common.lib.wrap;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-@XmlRootElement(name = "correlationRuleClass")
-@XmlType
-public class CorrelationRuleClass extends AbstractWrappable<String> {
-
-    private static final long serialVersionUID = -6715106427060816725L;
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/JobClass.java
----------------------------------------------------------------------
diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/JobClass.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/JobClass.java
deleted file mode 100644
index b85a6f5..0000000
--- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/JobClass.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.common.lib.wrap;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-@XmlRootElement(name = "jobClass")
-@XmlType
-public class JobClass extends AbstractWrappable<String> {
-
-    private static final long serialVersionUID = -1953799905627918822L;
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/MailTemplate.java
----------------------------------------------------------------------
diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/MailTemplate.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/MailTemplate.java
deleted file mode 100644
index 11e254d..0000000
--- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/MailTemplate.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.common.lib.wrap;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-@XmlRootElement(name = "mailTemplate")
-@XmlType
-public class MailTemplate extends AbstractWrappable<String> {
-
-    private static final long serialVersionUID = 7232619557172031478L;
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/PropagationActionClass.java
----------------------------------------------------------------------
diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/PropagationActionClass.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/PropagationActionClass.java
deleted file mode 100644
index f8e54b6..0000000
--- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/PropagationActionClass.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.common.lib.wrap;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-@XmlRootElement(name = "propagationActionClass")
-@XmlType
-public class PropagationActionClass extends AbstractWrappable<String> {
-
-    private static final long serialVersionUID = 2187654394121198308L;
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/PushActionClass.java
----------------------------------------------------------------------
diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/PushActionClass.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/PushActionClass.java
deleted file mode 100644
index e12fd8e..0000000
--- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/PushActionClass.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.common.lib.wrap;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-@XmlRootElement(name = "pushActionClass")
-@XmlType
-public class PushActionClass extends AbstractWrappable<String> {
-
-    private static final long serialVersionUID = 1669581609310071906L;
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/SyncActionClass.java
----------------------------------------------------------------------
diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/SyncActionClass.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/SyncActionClass.java
deleted file mode 100644
index d6c7a77..0000000
--- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/SyncActionClass.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.common.lib.wrap;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-@XmlRootElement(name = "syncActionClass")
-@XmlType
-public class SyncActionClass extends AbstractWrappable<String> {
-
-    private static final long serialVersionUID = 1669581609310071905L;
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/Validator.java
----------------------------------------------------------------------
diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/Validator.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/Validator.java
deleted file mode 100644
index 71cad00..0000000
--- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/Validator.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.common.lib.wrap;
-
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
-
-@XmlRootElement(name = "validator")
-@XmlType
-public class Validator extends AbstractWrappable<String> {
-
-    private static final long serialVersionUID = 7233619557177034453L;
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConfigurationService.java
----------------------------------------------------------------------
diff --git a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConfigurationService.java b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConfigurationService.java
index d886b91..3fa5f8a 100644
--- a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConfigurationService.java
+++ b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConfigurationService.java
@@ -18,7 +18,6 @@
  */
 package org.apache.syncope.common.rest.api.service;
 
-import java.util.List;
 import javax.validation.constraints.NotNull;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
@@ -31,8 +30,6 @@ import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import org.apache.syncope.common.lib.to.AttrTO;
 import org.apache.syncope.common.lib.to.ConfTO;
-import org.apache.syncope.common.lib.wrap.MailTemplate;
-import org.apache.syncope.common.lib.wrap.Validator;
 
 /**
  * REST operations for configuration.
@@ -50,26 +47,6 @@ public interface ConfigurationService extends JAXRSService {
     Response export();
 
     /**
-     * Returns a list of known mail-template names.
-     *
-     * @return a list of known mail-template names
-     */
-    @GET
-    @Path("mailTemplates")
-    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-    List<MailTemplate> getMailTemplates();
-
-    /**
-     * Returns a list of known validator names.
-     *
-     * @return a list of known validator names
-     */
-    @GET
-    @Path("validators")
-    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-    List<Validator> getValidators();
-
-    /**
      * Returns all configuration parameters.
      *
      * @return all configuration parameters

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java
----------------------------------------------------------------------
diff --git a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java
index 6050d9c..c2a4e6a 100644
--- a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java
+++ b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java
@@ -36,7 +36,6 @@ import org.apache.cxf.jaxrs.model.wadl.Descriptions;
 import org.apache.cxf.jaxrs.model.wadl.DocTarget;
 import org.apache.syncope.common.lib.to.AbstractPolicyTO;
 import org.apache.syncope.common.lib.types.PolicyType;
-import org.apache.syncope.common.lib.wrap.CorrelationRuleClass;
 
 /**
  * REST operations for policies.
@@ -45,16 +44,6 @@ import org.apache.syncope.common.lib.wrap.CorrelationRuleClass;
 public interface PolicyService extends JAXRSService {
 
     /**
-     * Returns a list of classes to be used as correlation rules.
-     *
-     * @return list of classes to be used as correlation rules
-     */
-    @GET
-    @Path("syncCorrelationRuleClasses")
-    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-    List<CorrelationRuleClass> getSyncCorrelationRuleClasses();
-
-    /**
      * Returns the policy matching the given key.
      *
      * @param policyKey key of requested policy

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceService.java
----------------------------------------------------------------------
diff --git a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceService.java b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceService.java
index 044025b..313b0e9 100644
--- a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceService.java
+++ b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceService.java
@@ -40,7 +40,6 @@ import org.apache.syncope.common.lib.to.ConnObjectTO;
 import org.apache.syncope.common.lib.to.ResourceTO;
 import org.apache.syncope.common.lib.types.ResourceDeassociationActionType;
 import org.apache.syncope.common.lib.types.SubjectType;
-import org.apache.syncope.common.lib.wrap.PropagationActionClass;
 import org.apache.syncope.common.lib.wrap.SubjectId;
 
 /**
@@ -64,16 +63,6 @@ public interface ResourceService extends JAXRSService {
             @NotNull @PathParam("type") SubjectType type, @NotNull @PathParam("key") Long key);
 
     /**
-     * Returns a list of classes that can be used to customize the propagation process.
-     *
-     * @return list of classes that can be used to customize the propagation process
-     */
-    @GET
-    @Path("propagationActionsClasses")
-    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-    List<PropagationActionClass> getPropagationActionsClasses();
-
-    /**
      * Returns the resource with matching name.
      *
      * @param resourceKey Name of resource to be read

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SyncopeService.java
----------------------------------------------------------------------
diff --git a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SyncopeService.java b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SyncopeService.java
new file mode 100644
index 0000000..55cc092
--- /dev/null
+++ b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SyncopeService.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.common.rest.api.service;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import org.apache.syncope.common.lib.to.SyncopeTO;
+
+@Path("")
+public interface SyncopeService extends JAXRSService {
+
+    @GET
+    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_XHTML_XML })
+    SyncopeTO info();
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java
----------------------------------------------------------------------
diff --git a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java
index c3296dd..24c9b0e 100644
--- a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java
+++ b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java
@@ -18,7 +18,6 @@
  */
 package org.apache.syncope.common.rest.api.service;
 
-import java.util.List;
 import javax.validation.constraints.Min;
 import javax.validation.constraints.NotNull;
 import javax.ws.rs.Consumes;
@@ -45,9 +44,6 @@ import org.apache.syncope.common.lib.to.ReportExecTO;
 import org.apache.syncope.common.lib.to.SchedTaskTO;
 import org.apache.syncope.common.lib.to.TaskExecTO;
 import org.apache.syncope.common.lib.types.TaskType;
-import org.apache.syncope.common.lib.wrap.JobClass;
-import org.apache.syncope.common.lib.wrap.PushActionClass;
-import org.apache.syncope.common.lib.wrap.SyncActionClass;
 
 /**
  * REST operations for tasks.
@@ -56,37 +52,7 @@ import org.apache.syncope.common.lib.wrap.SyncActionClass;
 public interface TaskService extends JAXRSService {
 
     /**
-     * Returns a list of classes to be used for jobs.
-     *
-     * @return list of classes to be used for jobs
-     */
-    @GET
-    @Path("jobClasses")
-    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-    List<JobClass> getJobClasses();
-
-    /**
-     * Returns a list of classes to be used as synchronization actions.
-     *
-     * @return list of classes to be used as synchronization actions
-     */
-    @GET
-    @Path("syncActionsClasses")
-    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-    List<SyncActionClass> getSyncActionsClasses();
-
-    /**
-     * Returns a list of classes to be used as push actions.
-     *
-     * @return list of classes to be used as push actions
-     */
-    @GET
-    @Path("pushActionsClasses")
-    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-    List<PushActionClass> getPushActionsClasses();
-
-    /**
-     * Returns the task matching the given id.
+     * Returns the task matching the given key.
      *
      * @param taskKey key of task to be read
      * @param <T> type of taskTO

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/fit/reference/pom.xml
----------------------------------------------------------------------
diff --git a/syncope620/fit/reference/pom.xml b/syncope620/fit/reference/pom.xml
index 564d8f0..ec094cb 100644
--- a/syncope620/fit/reference/pom.xml
+++ b/syncope620/fit/reference/pom.xml
@@ -241,7 +241,7 @@ under the License.
               <cargo.tomcat.ajp.port>${cargo.tomcat.ajp.port}</cargo.tomcat.ajp.port>
               <cargo.rmi.port>${cargo.rmi.port}</cargo.rmi.port>
 
-              <cargo.jvmargs>-noverify -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=256m</cargo.jvmargs>
+              <cargo.jvmargs>-XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=512m</cargo.jvmargs>
             </properties>
             <configfiles>
               <configfile>
@@ -355,7 +355,7 @@ under the License.
               <configuration>
                 <properties>
                   <cargo.jvmargs>-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
-                    -noverify -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=256m</cargo.jvmargs>
+                    -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=512m</cargo.jvmargs>
                 </properties>
               </configuration>
             </configuration>
@@ -427,5 +427,57 @@ under the License.
         </plugins>
       </build>
     </profile>
+    
+    <profile>
+      <id>all</id>
+      <activation>
+        <activeByDefault>true</activeByDefault>
+      </activation>
+      
+      <dependencies>
+        <dependency>
+          <groupId>org.apache.syncope.server</groupId>
+          <artifactId>syncope-server-workflow-activiti</artifactId>
+          <version>${project.version}</version>
+        </dependency>
+      </dependencies>
+      
+      <build>
+        <plugins>
+          <!-- Adds Activiti test content -->
+          <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>xml-maven-plugin</artifactId>
+            <inherited>true</inherited>
+            <executions>
+              <execution>
+                <phase>prepare-package</phase>
+                <goals>
+                  <goal>transform</goal>
+                </goals>
+              </execution>
+            </executions>
+            <configuration>
+              <transformationSets>
+                <transformationSet>
+                  <dir>${project.build.directory}/classes</dir>
+                  <includes>
+                    <include>content.xml</include>
+                  </includes>
+                  <outputDir>${project.build.directory}/classes</outputDir>
+                  <stylesheet>${basedir}/src/test/resources/addActivitiToContent.xsl</stylesheet>
+                  <outputProperties>
+                    <outputProperty>
+                      <name>indent</name>
+                      <value>yes</value>
+                    </outputProperty>
+                  </outputProperties>
+                </transformationSet>
+              </transformationSets>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
   </profiles>
 </project>

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/fit/reference/src/main/resources/userWorkflow.bpmn20.xml
----------------------------------------------------------------------
diff --git a/syncope620/fit/reference/src/main/resources/userWorkflow.bpmn20.xml b/syncope620/fit/reference/src/main/resources/userWorkflow.bpmn20.xml
new file mode 100644
index 0000000..d26dbe3
--- /dev/null
+++ b/syncope620/fit/reference/src/main/resources/userWorkflow.bpmn20.xml
@@ -0,0 +1,577 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+             xmlns:activiti="http://activiti.org/bpmn" 
+             xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" 
+             xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" 
+             xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" 
+             typeLanguage="http://www.w3.org/2001/XMLSchema" 
+             expressionLanguage="http://www.w3.org/1999/XPath" 
+             targetNamespace="http://activiti.org/bpmn20">
+  
+  <process id="userWorkflow" name="User Workflow" isExecutable="true">
+    <startEvent id="theStart"/>
+    <sequenceFlow id="flow1" sourceRef="theStart" targetRef="create"/>
+    <serviceTask id="create" name="Create" activiti:expression="#{create.execute(execution.processInstanceId)}"/>
+    <sequenceFlow id="flow2" sourceRef="create" targetRef="createGW"/>
+    <exclusiveGateway id="createGW"/>
+    <sequenceFlow id="createAsAnonymous2Approval" sourceRef="createGW" targetRef="createApproval">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${wfExecutor == 'anonymous' || user.getRoleKeys().contains(9)}]]></conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow id="create2Activate" sourceRef="createGW" targetRef="enableGW">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!user.getRoleKeys().contains(9)}]]></conditionExpression>
+    </sequenceFlow>
+    <userTask id="createApproval" name="Create approval" activiti:candidateGroups="7" 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="rejectReason" name="Reason for rejecting" type="string" variable="rejectReason"/>
+      </extensionElements>
+    </userTask>
+    <sequenceFlow id="flow3" sourceRef="createApproval" targetRef="createApprovalGW"/>
+    <exclusiveGateway id="createApprovalGW"/>
+    <sequenceFlow id="createApprovalGW2EnableGW" sourceRef="createApprovalGW" targetRef="enableGW">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve}]]></conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow id="createApproval2Reject" sourceRef="createApprovalGW" targetRef="reject">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approve}]]></conditionExpression>
+    </sequenceFlow>
+    <exclusiveGateway id="enableGW"/>
+    <sequenceFlow id="createApprovalGW2OptIn" sourceRef="enableGW" targetRef="generateToken">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${user.getRoleKeys().contains(11)}]]></conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow id="createApprovalGW2Activate" sourceRef="enableGW" targetRef="activate">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${enabled == null}]]></conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow id="createApprovalGW2Active" sourceRef="enableGW" targetRef="active">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${enabled}]]></conditionExpression>
+    </sequenceFlow>    
+    <sequenceFlow id="createApprovalGW2Suspended" sourceRef="enableGW" targetRef="suspend">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!enabled}]]></conditionExpression>
+    </sequenceFlow>
+    <serviceTask id="activate" name="Activate" activiti:expression="#{autoActivate.execute(execution.processInstanceId)}"/>
+    <sequenceFlow id="flow4" sourceRef="activate" targetRef="active"/>
+    <serviceTask id="generateToken" name="Generate token" activiti:expression="#{generateToken.execute(execution.processInstanceId)}"/>
+    <sequenceFlow id="flow5" sourceRef="generateToken" targetRef="created"/>
+    <userTask id="created" name="Created"/>
+    <sequenceFlow id="flow6" sourceRef="created" targetRef="optinGW"/>
+    <exclusiveGateway id="optinGW"/>
+    <sequenceFlow id="created2Activate" sourceRef="optinGW" targetRef="removeToken">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${user.checkToken(token)}]]></conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow id="created2Created" sourceRef="optinGW" targetRef="created">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!user.checkToken(token)}]]></conditionExpression>
+    </sequenceFlow>
+    <scriptTask id="removeToken" name="Remove Token and Activate" scriptFormat="groovy" activiti:autoStoreVariables="false">
+      <script>
+        user.removeToken()    
+      </script>
+    </scriptTask>
+    <sequenceFlow id="flow7" sourceRef="removeToken" targetRef="active"/>
+    <userTask id="active" name="Active"/>
+    <sequenceFlow id="flow8" sourceRef="active" targetRef="activeGw"/>
+    <exclusiveGateway id="activeGw"/>
+    <sequenceFlow id="active2UpdateApproval" sourceRef="activeGw" targetRef="updateApproval">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${wfExecutor == user.getUsername() and task == 'update' 
+        and (!userMod.getMembershipsToAdd().isEmpty() or !userMod.getMembershipsToRemove().isEmpty())}]]></conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow id="active2DeleteApproval" sourceRef="activeGw" targetRef="deleteApproval">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${wfExecutor == user.getUsername() and task == 'delete'}]]></conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow id="active2Update" sourceRef="activeGw" targetRef="update">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'update'}]]></conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow id="active2Suspend" sourceRef="activeGw" targetRef="suspend">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'suspend'}]]></conditionExpression>
+    </sequenceFlow>    
+    <sequenceFlow id="active2Delete" sourceRef="activeGw" targetRef="delete">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'delete'}]]></conditionExpression>
+    </sequenceFlow>    
+    <sequenceFlow id="active2RequestPasswordReset" sourceRef="activeGw" targetRef="generateToken4PasswordReset">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'requestPasswordReset'}]]></conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow id="active2ConfirmPasswordReset" sourceRef="activeGw" targetRef="checkToken4ConfirmPasswordReset">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'confirmPasswordReset'}]]></conditionExpression>
+    </sequenceFlow>    
+    <userTask id="updateApproval" name="Update approval" activiti:candidateGroups="7" 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="rejectReason" name="Reason for rejecting" type="string" variable="rejectReason"/>
+      </extensionElements>
+    </userTask>
+    <sequenceFlow id="flow8bis" sourceRef="updateApproval" targetRef="updateApprovalGW"/>
+    <exclusiveGateway id="updateApprovalGW"/>
+    <sequenceFlow id="updateApprovalGW2Update" sourceRef="updateApprovalGW" targetRef="update">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve}]]></conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow id="updateApprovalGW2Reject" sourceRef="updateApprovalGW" targetRef="rejectUpdate">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approve}]]></conditionExpression>
+    </sequenceFlow>
+    <scriptTask id="rejectUpdate" name="Reject update" scriptFormat="groovy" activiti:autoStoreVariables="false">
+      <script>
+        execution.setVariable("propByResource", null);
+      </script>
+    </scriptTask>
+    <sequenceFlow id="flow8ter" sourceRef="rejectUpdate" targetRef="active"/>
+    <serviceTask id="update" name="Update" activiti:expression="#{update.execute(execution.processInstanceId)}"/>
+    <sequenceFlow id="flow9" sourceRef="update" targetRef="active"/>    
+    <serviceTask id="suspend" name="Suspend" activiti:expression="#{suspend.execute(execution.processInstanceId)}"/>
+    <sequenceFlow id="flow10" sourceRef="suspend" targetRef="suspended"/>
+    <userTask id="suspended" name="Suspended"/>
+    <sequenceFlow id="flow11" sourceRef="suspended" targetRef="suspendedGw"/>
+    <exclusiveGateway id="suspendedGw"/>
+    <sequenceFlow id="suspended2Reactivate" sourceRef="suspendedGw" targetRef="reactivate">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'reactivate'}]]></conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow id="suspended2Delete" sourceRef="suspendedGw" targetRef="delete">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'delete'}]]></conditionExpression>
+    </sequenceFlow>
+    <serviceTask id="reactivate" name="Reactivate" activiti:expression="#{reactivate.execute(execution.processInstanceId)}"/>
+    <sequenceFlow id="flow12" sourceRef="reactivate" targetRef="active"/>
+    <scriptTask id="reject" name="Reject" scriptFormat="groovy" activiti:autoStoreVariables="false">
+      <script>
+        def scriptVar = rejectReason
+        execution.setVariable("propByResource", null);
+      </script>
+    </scriptTask>
+    <sequenceFlow id="flow13" sourceRef="reject" targetRef="rejected"/>
+    <userTask id="rejected" name="Rejected"/>
+    <sequenceFlow id="flow14" sourceRef="rejected" targetRef="rejectedGw"/>
+    <exclusiveGateway id="rejectedGw"/>
+    <sequenceFlow id="rejected2Delete" sourceRef="rejectedGw" targetRef="delete">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'delete'}]]></conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow id="rejected2Rejected" sourceRef="rejectedGw" targetRef="rejected">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${empty task}]]></conditionExpression>
+    </sequenceFlow>    
+    <userTask id="deleteApproval" name="Delete approval" activiti:candidateGroups="7" 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="rejectReason" name="Reason for rejecting" type="string" variable="rejectReason"/>
+      </extensionElements>
+    </userTask>
+    <sequenceFlow id="flow14bis" sourceRef="deleteApproval" targetRef="deleteApprovalGW"/>
+    <exclusiveGateway id="deleteApprovalGW"/>
+    <sequenceFlow id="deleteApprovalGW2Delete" sourceRef="deleteApprovalGW" targetRef="delete">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve}]]></conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow id="deleteApprovalGW2Reject" sourceRef="deleteApprovalGW" targetRef="rejectDelete">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approve}]]></conditionExpression>
+    </sequenceFlow>
+    <scriptTask id="rejectDelete" name="Reject delete" scriptFormat="groovy" activiti:autoStoreVariables="false">
+      <script>
+        execution.setVariable("propByResource", null);
+      </script>
+    </scriptTask>
+    <sequenceFlow id="flow14ter" sourceRef="rejectDelete" targetRef="active"/>            
+
+    <serviceTask id="generateToken4PasswordReset" name="Generate token" activiti:expression="#{generateToken.execute(execution.processInstanceId)}"/>
+    <sequenceFlow id="flow15" sourceRef="generateToken4PasswordReset" targetRef="notify4RequestPasswordReset"/>
+    <serviceTask id="notify4RequestPasswordReset" name="Notification" activiti:expression="#{notify.execute(execution.processInstanceId)}"/>
+    <sequenceFlow id="flow16" sourceRef="notify4RequestPasswordReset" targetRef="active"/>
+    
+    <serviceTask id="checkToken4ConfirmPasswordReset" name="Check token, remove and update password" activiti:expression="#{passwordReset.execute(execution.processInstanceId)}"/>
+    <sequenceFlow id="flow17" sourceRef="checkToken4ConfirmPasswordReset" targetRef="notify4ConfirmPasswordReset"/>
+    <serviceTask id="notify4ConfirmPasswordReset" name="Notification" activiti:expression="#{notify.execute(execution.processInstanceId)}"/>
+    <sequenceFlow id="flow18" sourceRef="notify4ConfirmPasswordReset" targetRef="active"/>    
+    
+    <serviceTask id="delete" name="Delete" activiti:expression="#{delete.execute(execution.processInstanceId)}"/>
+    <sequenceFlow id="flow99" sourceRef="delete" targetRef="theEnd"/>
+    <endEvent id="theEnd"/>
+  </process>
+  
+  <bpmndi:BPMNDiagram id="BPMNDiagram_userWorkflow">
+    <bpmndi:BPMNPlane bpmnElement="userWorkflow" id="BPMNPlane_userWorkflow">
+      <bpmndi:BPMNShape bpmnElement="theStart" id="BPMNShape_theStart">
+        <omgdc:Bounds height="30.0" width="30.0" x="0.0" y="512.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="create" id="BPMNShape_create">
+        <omgdc:Bounds height="60.0" width="100.0" x="80.0" y="497.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="createGW" id="BPMNShape_createGW">
+        <omgdc:Bounds height="40.0" width="40.0" x="230.0" y="506.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="createApproval" id="BPMNShape_createApproval">
+        <omgdc:Bounds height="60.0" width="100.0" x="320.0" y="560.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="createApprovalGW" id="BPMNShape_createApprovalGW">
+        <omgdc:Bounds height="40.0" width="40.0" x="470.0" y="556.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="enableGW" id="BPMNShape_enableGW">
+        <omgdc:Bounds height="40.0" width="40.0" x="590.0" y="429.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="activate" id="BPMNShape_activate">
+        <omgdc:Bounds height="60.0" width="100.0" x="710.0" y="610.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="generateToken" id="BPMNShape_generateToken">
+        <omgdc:Bounds height="60.0" width="100.0" x="702.0" y="188.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="created" id="BPMNShape_created">
+        <omgdc:Bounds height="60.0" width="100.0" x="852.0" y="213.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="optinGW" id="BPMNShape_optinGW">
+        <omgdc:Bounds height="40.0" width="40.0" x="1002.0" y="240.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="removeToken" id="BPMNShape_removeToken">
+        <omgdc:Bounds height="60.0" width="100.0" x="1092.0" y="248.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="active" id="BPMNShape_active">
+        <omgdc:Bounds height="60.0" width="100.0" x="1030.0" y="511.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="activeGw" id="BPMNShape_activeGw">
+        <omgdc:Bounds height="40.0" width="40.0" x="1400.0" y="520.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="updateApproval" id="BPMNShape_updateApproval">
+        <omgdc:Bounds height="60.0" width="100.0" x="1490.0" y="740.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="updateApprovalGW" id="BPMNShape_updateApprovalGW">
+        <omgdc:Bounds height="40.0" width="40.0" x="1670.0" y="740.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="rejectUpdate" id="BPMNShape_rejectUpdate">
+        <omgdc:Bounds height="60.0" width="100.0" x="1790.0" y="840.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="update" id="BPMNShape_update">
+        <omgdc:Bounds height="60.0" width="100.0" x="1790.0" y="700.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="suspend" id="BPMNShape_suspend">
+        <omgdc:Bounds height="60.0" width="100.0" x="1490.0" y="100.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="suspended" id="BPMNShape_suspended">
+        <omgdc:Bounds height="60.0" width="100.0" x="1640.0" y="120.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="suspendedGw" id="BPMNShape_suspendedGw">
+        <omgdc:Bounds height="40.0" width="40.0" x="1820.0" y="180.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="reactivate" id="BPMNShape_reactivate">
+        <omgdc:Bounds height="60.0" width="100.0" x="1940.0" y="110.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="reject" id="BPMNShape_reject">
+        <omgdc:Bounds height="60.0" width="100.0" x="560.0" y="659.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="rejected" id="BPMNShape_rejected">
+        <omgdc:Bounds height="60.0" width="100.0" x="710.0" y="770.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="rejectedGw" id="BPMNShape_rejectedGw">
+        <omgdc:Bounds height="40.0" width="40.0" x="890.0" y="775.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="deleteApproval" id="BPMNShape_deleteApproval">
+        <omgdc:Bounds height="60.0" width="100.0" x="1490.0" y="280.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="deleteApprovalGW" id="BPMNShape_deleteApprovalGW">
+        <omgdc:Bounds height="40.0" width="40.0" x="1670.0" y="300.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="rejectDelete" id="BPMNShape_rejectDelete">
+        <omgdc:Bounds height="60.0" width="100.0" x="1790.0" y="240.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="delete" id="BPMNShape_delete">
+        <omgdc:Bounds height="60.0" width="100.0" x="1940.0" y="358.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="theEnd" id="BPMNShape_theEnd">
+        <omgdc:Bounds height="28.0" width="28.0" x="2078.1893792531678" y="374.0"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="generateToken4PasswordReset" id="BPMNShape_generateToken4PasswordReset">
+        <omgdc:Bounds height="59.99999999999994" width="100.0" x="1543.209935088986" y="452.6749142927693"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="notify4RequestPasswordReset" id="BPMNShape_notify4RequestPasswordReset">
+        <omgdc:Bounds height="60.00000000000006" width="100.0" x="1748.9712597675173" y="452.6749142927692"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="checkToken4ConfirmPasswordReset" id="BPMNShape_checkToken4ConfirmPasswordReset">
+        <omgdc:Bounds height="60.0" width="100.0" x="1558.797798366986" y="561.167207412115"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="notify4ConfirmPasswordReset" id="BPMNShape_notify4ConfirmPasswordReset">
+        <omgdc:Bounds height="60.0" width="100.0" x="1748.971259767517" y="561.167207412115"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge bpmnElement="flow17" id="BPMNEdge_flow17">
+        <omgdi:waypoint x="1658.797798366986" y="591.167207412115"/>
+        <omgdi:waypoint x="1748.971259767517" y="591.167207412115"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow12" id="BPMNEdge_flow12">
+        <omgdi:waypoint x="1940.0" y="129.51612903225805"/>
+        <omgdi:waypoint x="1928.0" y="127.0"/>
+        <omgdi:waypoint x="1378.0" y="40.0"/>
+        <omgdi:waypoint x="1097.8443113772455" y="511.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow11" id="BPMNEdge_flow11">
+        <omgdi:waypoint x="1740.0" y="150.0"/>
+        <omgdi:waypoint x="1752.0" y="150.0"/>
+        <omgdi:waypoint x="1752.0" y="200.0"/>
+        <omgdi:waypoint x="1820.0" y="200.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="active2DeleteApproval" id="BPMNEdge_active2DeleteApproval">
+        <omgdi:waypoint x="1440.0" y="540.0"/>
+        <omgdi:waypoint x="1454.0" y="540.0"/>
+        <omgdi:waypoint x="1454.0" y="310.0"/>
+        <omgdi:waypoint x="1490.0" y="310.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow14bis" id="BPMNEdge_flow14bis">
+        <omgdi:waypoint x="1590.0" y="310.0"/>
+        <omgdi:waypoint x="1602.0" y="310.0"/>
+        <omgdi:waypoint x="1602.0" y="320.0"/>
+        <omgdi:waypoint x="1670.0" y="320.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow10" id="BPMNEdge_flow10">
+        <omgdi:waypoint x="1590.0" y="130.0"/>
+        <omgdi:waypoint x="1602.0" y="130.0"/>
+        <omgdi:waypoint x="1602.0" y="150.0"/>
+        <omgdi:waypoint x="1640.0" y="150.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="active2RequestPasswordReset" id="BPMNEdge_active2RequestPasswordReset">
+        <omgdi:waypoint x="1439.5" y="540.5"/>
+        <omgdi:waypoint x="1593.209935088986" y="540.5"/>
+        <omgdi:waypoint x="1593.209935088986" y="512.6749142927692"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="active2ConfirmPasswordReset" id="BPMNEdge_active2ConfirmPasswordReset">
+        <omgdi:waypoint x="1439.5" y="540.5"/>
+        <omgdi:waypoint x="1608.797798366986" y="540.5"/>
+        <omgdi:waypoint x="1608.797798366986" y="561.167207412115"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="deleteApprovalGW2Delete" id="BPMNEdge_deleteApprovalGW2Delete">
+        <omgdi:waypoint x="1710.0" y="320.0"/>
+        <omgdi:waypoint x="1752.0" y="320.0"/>
+        <omgdi:waypoint x="1752.0" y="388.0"/>
+        <omgdi:waypoint x="1940.0" y="388.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="createApproval2Reject" id="BPMNEdge_createApproval2Reject">
+        <omgdi:waypoint x="510.0" y="576.0"/>
+        <omgdi:waypoint x="522.0" y="576.0"/>
+        <omgdi:waypoint x="522.0" y="689.0"/>
+        <omgdi:waypoint x="560.0" y="689.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="active2Delete" id="BPMNEdge_active2Delete">
+        <omgdi:waypoint x="1440.0" y="540.0"/>
+        <omgdi:waypoint x="1452.0" y="540.0"/>
+        <omgdi:waypoint x="1452.0" y="680.6812757582483"/>
+        <omgdi:waypoint x="1955.9214707261015" y="680.6812757582483"/>
+        <omgdi:waypoint x="1986.506931044467" y="418.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="updateApprovalGW2Update" id="BPMNEdge_updateApprovalGW2Update">
+        <omgdi:waypoint x="1710.0" y="760.0"/>
+        <omgdi:waypoint x="1752.0" y="760.0"/>
+        <omgdi:waypoint x="1752.0" y="730.0"/>
+        <omgdi:waypoint x="1790.0" y="730.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="active2UpdateApproval" id="BPMNEdge_active2UpdateApproval">
+        <omgdi:waypoint x="1440.0" y="540.0"/>
+        <omgdi:waypoint x="1454.0" y="540.0"/>
+        <omgdi:waypoint x="1454.0" y="770.0"/>
+        <omgdi:waypoint x="1490.0" y="770.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="rejected2Delete" id="BPMNEdge_rejected2Delete">
+        <omgdi:waypoint x="930.0" y="795.0"/>
+        <omgdi:waypoint x="972.0" y="795.0"/>
+        <omgdi:waypoint x="1470.0" y="911.0"/>
+        <omgdi:waypoint x="1990.0" y="911.0"/>
+        <omgdi:waypoint x="1990.0" y="418.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="createApprovalGW2Active" id="BPMNEdge_createApprovalGW2Active">
+        <omgdi:waypoint x="630.0" y="449.0"/>
+        <omgdi:waypoint x="674.0" y="449.0"/>
+        <omgdi:waypoint x="674.0" y="540.0"/>
+        <omgdi:waypoint x="1030.0" y="540.8768472906404"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="updateApprovalGW2Reject" id="BPMNEdge_updateApprovalGW2Reject">
+        <omgdi:waypoint x="1710.0" y="760.0"/>
+        <omgdi:waypoint x="1752.0" y="760.0"/>
+        <omgdi:waypoint x="1752.0" y="870.0"/>
+        <omgdi:waypoint x="1790.0" y="870.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow8ter" id="BPMNEdge_flow8ter">
+        <omgdi:waypoint x="1790.0" y="879.6774193548387"/>
+        <omgdi:waypoint x="1778.0" y="882.0"/>
+        <omgdi:waypoint x="1225.0" y="787.0"/>
+        <omgdi:waypoint x="1080.0" y="726.0"/>
+        <omgdi:waypoint x="1080.0" y="571.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow15" id="BPMNEdge_flow15">
+        <omgdi:waypoint x="1643.209935088986" y="482.6749142927693"/>
+        <omgdi:waypoint x="1748.9712597675173" y="482.67491429276924"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="suspended2Reactivate" id="BPMNEdge_suspended2Reactivate">
+        <omgdi:waypoint x="1860.0" y="200.0"/>
+        <omgdi:waypoint x="1902.0" y="200.0"/>
+        <omgdi:waypoint x="1902.0" y="140.0"/>
+        <omgdi:waypoint x="1940.0" y="140.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow13" id="BPMNEdge_flow13">
+        <omgdi:waypoint x="660.0" y="689.0"/>
+        <omgdi:waypoint x="672.0" y="689.0"/>
+        <omgdi:waypoint x="672.0" y="800.0"/>
+        <omgdi:waypoint x="710.0" y="800.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow14" id="BPMNEdge_flow14">
+        <omgdi:waypoint x="760.0" y="770.0"/>
+        <omgdi:waypoint x="760.0" y="732.8074937730017"/>
+        <omgdi:waypoint x="910.0" y="732.8074937730017"/>
+        <omgdi:waypoint x="910.0" y="775.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="createApprovalGW2EnableGW" id="BPMNEdge_createApprovalGW2EnableGW">
+        <omgdi:waypoint x="510.0" y="576.0"/>
+        <omgdi:waypoint x="522.0" y="576.0"/>
+        <omgdi:waypoint x="522.0" y="449.0"/>
+        <omgdi:waypoint x="590.0" y="449.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="active2Update" id="BPMNEdge_active2Update">
+        <omgdi:waypoint x="1440.0" y="540.0"/>
+        <omgdi:waypoint x="1456.0" y="540.0"/>
+        <omgdi:waypoint x="1456.0" y="730.0"/>
+        <omgdi:waypoint x="1790.0" y="730.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="create2Activate" id="BPMNEdge_create2Activate">
+        <omgdi:waypoint x="270.0" y="526.0"/>
+        <omgdi:waypoint x="282.0" y="526.0"/>
+        <omgdi:waypoint x="282.0" y="449.0"/>
+        <omgdi:waypoint x="590.0" y="449.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="active2Suspend" id="BPMNEdge_active2Suspend">
+        <omgdi:waypoint x="1440.0" y="540.0"/>
+        <omgdi:waypoint x="1452.0" y="540.0"/>
+        <omgdi:waypoint x="1452.0" y="130.0"/>
+        <omgdi:waypoint x="1490.0" y="130.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="suspended2Delete" id="BPMNEdge_suspended2Delete">
+        <omgdi:waypoint x="1860.0" y="200.0"/>
+        <omgdi:waypoint x="1990.0" y="200.0"/>
+        <omgdi:waypoint x="1990.0" y="358.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="created2Activate" id="BPMNEdge_created2Activate">
+        <omgdi:waypoint x="1042.0" y="260.0"/>
+        <omgdi:waypoint x="1054.0" y="260.0"/>
+        <omgdi:waypoint x="1054.0" y="278.0"/>
+        <omgdi:waypoint x="1092.0" y="278.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="createAsAnonymous2Approval" id="BPMNEdge_createAsAnonymous2Approval">
+        <omgdi:waypoint x="270.0" y="526.0"/>
+        <omgdi:waypoint x="282.0" y="526.0"/>
+        <omgdi:waypoint x="282.0" y="590.0"/>
+        <omgdi:waypoint x="320.0" y="590.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3">
+        <omgdi:waypoint x="420.0" y="590.0"/>
+        <omgdi:waypoint x="432.0" y="590.0"/>
+        <omgdi:waypoint x="432.0" y="576.0"/>
+        <omgdi:waypoint x="470.0" y="576.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
+        <omgdi:waypoint x="180.0" y="527.0"/>
+        <omgdi:waypoint x="192.0" y="527.0"/>
+        <omgdi:waypoint x="192.0" y="526.0"/>
+        <omgdi:waypoint x="230.0" y="526.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="rejected2Rejected" id="BPMNEdge_rejected2Rejected">
+        <omgdi:waypoint x="890.6451612903226" y="795.6451612903226"/>
+        <omgdi:waypoint x="810.0" y="798.3333333333334"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow5" id="BPMNEdge_flow5">
+        <omgdi:waypoint x="802.0" y="218.0"/>
+        <omgdi:waypoint x="814.0" y="218.0"/>
+        <omgdi:waypoint x="814.0" y="243.0"/>
+        <omgdi:waypoint x="852.0" y="243.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4">
+        <omgdi:waypoint x="810.0" y="640.0"/>
+        <omgdi:waypoint x="822.0" y="640.0"/>
+        <omgdi:waypoint x="959.0" y="640.0"/>
+        <omgdi:waypoint x="1043.3333333333333" y="571.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="createApprovalGW2Suspended" id="BPMNEdge_createApprovalGW2Suspended">
+        <omgdi:waypoint x="630.0" y="449.0"/>
+        <omgdi:waypoint x="672.0" y="449.0"/>
+        <omgdi:waypoint x="672.0" y="130.0"/>
+        <omgdi:waypoint x="1490.0" y="130.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow14ter" id="BPMNEdge_flow14ter">
+        <omgdi:waypoint x="1790.0" y="260.7608891486752"/>
+        <omgdi:waypoint x="1424.117736926915" y="193.1523534073587"/>
+        <omgdi:waypoint x="1109.678315230625" y="511.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="createApprovalGW2OptIn" id="BPMNEdge_createApprovalGW2OptIn">
+        <omgdi:waypoint x="630.0" y="449.0"/>
+        <omgdi:waypoint x="674.0" y="449.0"/>
+        <omgdi:waypoint x="700.0" y="449.0"/>
+        <omgdi:waypoint x="745.2467532467532" y="248.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
+        <omgdi:waypoint x="30.0" y="527.0"/>
+        <omgdi:waypoint x="80.0" y="527.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow16" id="BPMNEdge_flow16">
+        <omgdi:waypoint x="1748.9712597675173" y="459.5470829510475"/>
+        <omgdi:waypoint x="1592.4096593525787" y="387.128477171313"/>
+        <omgdi:waypoint x="1130.0" y="525.9854974413342"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="created2Created" id="BPMNEdge_created2Created">
+        <omgdi:waypoint x="1002.0" y="260.0"/>
+        <omgdi:waypoint x="990.0" y="260.0"/>
+        <omgdi:waypoint x="990.0" y="243.0"/>
+        <omgdi:waypoint x="952.0" y="243.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow18" id="BPMNEdge_flow18">
+        <omgdi:waypoint x="1748.971259767517" y="619.7464352880323"/>
+        <omgdi:waypoint x="1673.525420205687" y="662.8701121105813"/>
+        <omgdi:waypoint x="1130.0" y="551.266629529393"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="createApprovalGW2Activate" id="BPMNEdge_createApprovalGW2Activate">
+        <omgdi:waypoint x="630.0" y="449.0"/>
+        <omgdi:waypoint x="672.0" y="449.0"/>
+        <omgdi:waypoint x="672.0" y="640.0"/>
+        <omgdi:waypoint x="710.0" y="640.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow7" id="BPMNEdge_flow7">
+        <omgdi:waypoint x="1134.9277566539924" y="308.0"/>
+        <omgdi:waypoint x="1087.0722433460076" y="511.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow6" id="BPMNEdge_flow6">
+        <omgdi:waypoint x="952.0" y="252.67741935483872"/>
+        <omgdi:waypoint x="964.0" y="255.0"/>
+        <omgdi:waypoint x="964.0" y="260.0"/>
+        <omgdi:waypoint x="1002.0" y="260.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow9" id="BPMNEdge_flow9">
+        <omgdi:waypoint x="1828.6246202240113" y="760.0"/>
+        <omgdi:waypoint x="1811.88836468294" y="804.1381014189917"/>
+        <omgdi:waypoint x="1474.4398193359375" y="804.1381014189917"/>
+        <omgdi:waypoint x="1124.969521769241" y="571.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="deleteApprovalGW2Reject" id="BPMNEdge_deleteApprovalGW2Reject">
+        <omgdi:waypoint x="1710.0" y="320.0"/>
+        <omgdi:waypoint x="1752.0" y="320.0"/>
+        <omgdi:waypoint x="1752.0" y="270.0"/>
+        <omgdi:waypoint x="1790.0" y="270.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow8bis" id="BPMNEdge_flow8bis">
+        <omgdi:waypoint x="1590.0" y="770.0"/>
+        <omgdi:waypoint x="1602.0" y="770.0"/>
+        <omgdi:waypoint x="1602.0" y="760.0"/>
+        <omgdi:waypoint x="1670.0" y="760.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow99" id="BPMNEdge_flow99">
+        <omgdi:waypoint x="2040.0" y="388.0"/>
+        <omgdi:waypoint x="2078.1893792531678" y="388.0"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow8" id="BPMNEdge_flow8">
+        <omgdi:waypoint x="1130.0" y="540.8529411764706"/>
+        <omgdi:waypoint x="1400.058651026393" y="540.0586510263929"/>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</definitions>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/fit/reference/src/main/resources/workflow.properties
----------------------------------------------------------------------
diff --git a/syncope620/fit/reference/src/main/resources/workflow.properties b/syncope620/fit/reference/src/main/resources/workflow.properties
new file mode 100644
index 0000000..0cad37e
--- /dev/null
+++ b/syncope620/fit/reference/src/main/resources/workflow.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.
+wf.directory=${conf.directory}
+jobExecutorActivate=true
+uwfAdapter=org.apache.syncope.server.workflow.activiti.ActivitiUserWorkflowAdapter
+rwfAdapter=org.apache.syncope.server.workflow.java.DefaultRoleWorkflowAdapter
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AbstractITCase.java
----------------------------------------------------------------------
diff --git a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AbstractITCase.java b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AbstractITCase.java
index fc81657..255666c 100644
--- a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AbstractITCase.java
+++ b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AbstractITCase.java
@@ -59,6 +59,7 @@ import org.apache.syncope.common.rest.api.service.ResourceService;
 import org.apache.syncope.common.rest.api.service.RoleService;
 import org.apache.syncope.common.rest.api.service.SchemaService;
 import org.apache.syncope.common.rest.api.service.SecurityQuestionService;
+import org.apache.syncope.common.rest.api.service.SyncopeService;
 import org.apache.syncope.common.rest.api.service.TaskService;
 import org.apache.syncope.common.rest.api.service.UserSelfService;
 import org.apache.syncope.common.rest.api.service.UserService;
@@ -142,6 +143,8 @@ public abstract class AbstractITCase {
 
     protected static SyncopeClient adminClient;
 
+    protected static SyncopeService syncopeService;
+
     protected static UserService userService;
 
     protected static UserSelfService userSelfService;
@@ -207,6 +210,7 @@ public abstract class AbstractITCase {
 
         adminClient = clientFactory.create(ADMIN_UNAME, ADMIN_PWD);
 
+        syncopeService = adminClient.getService(SyncopeService.class);
         userService = adminClient.getService(UserService.class);
         userSelfService = adminClient.getService(UserSelfService.class);
         userWorkflowService = adminClient.getService(UserWorkflowService.class);

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ActivitiDetector.java
----------------------------------------------------------------------
diff --git a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ActivitiDetector.java b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ActivitiDetector.java
index ae35a23..03b686b 100644
--- a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ActivitiDetector.java
+++ b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ActivitiDetector.java
@@ -18,19 +18,19 @@
  */
 package org.apache.syncope.fit.server.reference;
 
+import org.apache.syncope.common.rest.api.service.SyncopeService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-// TODO: REMOVE!!!
 public class ActivitiDetector {
 
     private static final Logger LOG = LoggerFactory.getLogger(ActivitiDetector.class);
 
-    public static boolean isActivitiEnabledForUsers() {
-        return false;
+    public static boolean isActivitiEnabledForUsers(final SyncopeService syncopeService) {
+        return syncopeService.info().getUserWorkflowAdapter().indexOf("Activiti") != -1;
     }
 
-    public static boolean isActivitiEnabledForRoles() {
-        return false;
+    public static boolean isActivitiEnabledForRoles(final SyncopeService syncopeService) {
+        return syncopeService.info().getRoleWorkflowAdapter().indexOf("Activiti") != -1;
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AuthenticationITCase.java
----------------------------------------------------------------------
diff --git a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AuthenticationITCase.java b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AuthenticationITCase.java
index 9c18a4d..5b3b4b0 100644
--- a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AuthenticationITCase.java
+++ b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AuthenticationITCase.java
@@ -366,7 +366,7 @@ public class AuthenticationITCase extends AbstractITCase {
 
     @Test
     public void issueSYNCOPE434() {
-        Assume.assumeTrue(ActivitiDetector.isActivitiEnabledForUsers());
+        Assume.assumeTrue(ActivitiDetector.isActivitiEnabledForUsers(syncopeService));
 
         // 1. create user with role 9 (users with role 9 are defined in workflow as subject to approval)
         UserTO userTO = UserITCase.getUniqueSampleTO("createWithReject@syncope.apache.org");

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/PolicyITCase.java
----------------------------------------------------------------------
diff --git a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/PolicyITCase.java b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/PolicyITCase.java
index 075cdd9..c25dc7f 100644
--- a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/PolicyITCase.java
+++ b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/PolicyITCase.java
@@ -205,7 +205,7 @@ public class PolicyITCase extends AbstractITCase {
 
     @Test
     public void getCorrelationRules() {
-        assertEquals(1, policyService.getSyncCorrelationRuleClasses().size());
+        assertEquals(1, syncopeService.info().getSyncCorrelationRules().size());
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ResourceITCase.java
----------------------------------------------------------------------
diff --git a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ResourceITCase.java b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ResourceITCase.java
index 6cb624a..69f26e3 100644
--- a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ResourceITCase.java
+++ b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ResourceITCase.java
@@ -43,7 +43,6 @@ import org.apache.syncope.common.lib.types.ConnConfProperty;
 import org.apache.syncope.common.lib.types.EntityViolationType;
 import org.apache.syncope.common.lib.types.IntMappingType;
 import org.apache.syncope.common.lib.types.MappingPurpose;
-import org.apache.syncope.common.lib.wrap.PropagationActionClass;
 import org.apache.syncope.common.rest.api.service.ResourceService;
 import org.junit.FixMethodOrder;
 import org.junit.Test;
@@ -88,7 +87,7 @@ public class ResourceITCase extends AbstractITCase {
 
     @Test
     public void getPropagationActionsClasses() {
-        List<PropagationActionClass> actions = resourceService.getPropagationActionsClasses();
+        List<String> actions = syncopeService.info().getPropagationActions();
         assertNotNull(actions);
         assertFalse(actions.isEmpty());
     }