Bump upgrade to Syncope 2.0.1
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..126b27d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+common/target/
+console/target/
+core/target/
+enduser/target/
+target/
diff --git a/common/pom.xml b/common/pom.xml
index ae4527d..6b386ec 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -24,14 +24,18 @@
   <parent>
     <groupId>org.apache.infra</groupId>
     <artifactId>iampoc</artifactId>
-    <version>0.1-SNAPSHOT</version>
+    <version>1.0-SNAPSHOT</version>
   </parent>
 
   <name>IAM PoC - Common</name>
   <groupId>org.apache.infra</groupId>
-  <artifactId>common</artifactId>
+  <artifactId>syncope-common</artifactId>
   <packaging>jar</packaging>
 
+  <properties>
+    <rootpom.basedir>${basedir}/..</rootpom.basedir>
+  </properties>
+
   <dependencies>
 
     <dependency>
diff --git a/console/pom.xml b/console/pom.xml
index 0516063..08d8914 100644
--- a/console/pom.xml
+++ b/console/pom.xml
@@ -24,14 +24,18 @@
   <parent>
     <groupId>org.apache.infra</groupId>
     <artifactId>iampoc</artifactId>
-    <version>0.1-SNAPSHOT</version>
+    <version>1.0-SNAPSHOT</version>
   </parent>
 
   <name>IAM PoC - Console</name>
   <groupId>org.apache.infra</groupId>
-  <artifactId>console</artifactId>
+  <artifactId>syncope-console</artifactId>
   <packaging>war</packaging>
 
+  <properties>
+    <rootpom.basedir>${basedir}/..</rootpom.basedir>
+  </properties>
+
   <dependencies>
 
     <dependency> 
@@ -49,7 +53,7 @@
 
     <dependency>
       <groupId>org.apache.infra</groupId>
-      <artifactId>common</artifactId>
+      <artifactId>syncope-common</artifactId>
       <version>${project.version}</version>
     </dependency>  
     
@@ -105,7 +109,7 @@
     </dependency>
     <dependency>
       <groupId>org.activiti</groupId>
-      <artifactId>activiti-webapp-explorer2</artifactId>
+      <artifactId>activiti-webapp-explorer2</artifactId>            
       <type>war</type>
       <scope>test</scope>
     </dependency>
@@ -316,5 +320,17 @@
         </plugins>  
       </build>
     </profile>
+    
+    <profile>
+      <id>all</id>
+      
+      <dependencies>
+        <dependency>
+          <groupId>org.apache.syncope.ext.camel</groupId>
+          <artifactId>syncope-ext-camel-client-console</artifactId>
+          <version>${syncope.version}</version>
+        </dependency> 
+      </dependencies>
+    </profile>
   </profiles>
 </project>
diff --git a/console/src/main/resources/console.properties b/console/src/main/resources/console.properties
index eb7ea39..03326ff 100644
--- a/console/src/main/resources/console.properties
+++ b/console/src/main/resources/console.properties
@@ -18,7 +18,6 @@
 
 version=${syncope.version}
 site=${project.parent.url}
-license=${licenseUrl}
 
 anonymousUser=${anonymousUser}
 anonymousKey=${anonymousKey}
@@ -27,5 +26,22 @@
 host=localhost
 port=8080
 rootPath=/syncope/rest/
+useGZIPCompression=true
 
 activitiModelerDirectory=${activiti-modeler.directory}
+
+reconciliationReportKey=c3520ad9-179f-49e7-b315-d684d216dd97
+
+page.dashboard=org.apache.syncope.client.console.pages.Dashboard
+page.realms=org.apache.syncope.client.console.pages.Realms
+page.topology=org.apache.syncope.client.console.topology.Topology
+page.reports=org.apache.syncope.client.console.pages.Reports
+page.workflow=org.apache.syncope.client.console.pages.Workflow
+page.audit=org.apache.syncope.client.console.pages.Audit
+page.logs=org.apache.syncope.client.console.pages.Logs
+page.securityquestions=org.apache.syncope.client.console.pages.SecurityQuestions
+page.types=org.apache.syncope.client.console.pages.Types
+page.roles=org.apache.syncope.client.console.pages.Roles
+page.policies=org.apache.syncope.client.console.pages.Policies
+page.notifications=org.apache.syncope.client.console.pages.Notifications
+page.parameters=org.apache.syncope.client.console.pages.Parameters
diff --git a/console/src/test/resources/console.properties b/console/src/test/resources/console.properties
index be99423..00834e6 100644
--- a/console/src/test/resources/console.properties
+++ b/console/src/test/resources/console.properties
@@ -18,7 +18,6 @@
 
 version=${syncope.version}
 site=${project.parent.url}
-license=${licenseUrl}
 
 anonymousUser=${anonymousUser}
 anonymousKey=${anonymousKey}
@@ -27,5 +26,22 @@
 host=localhost
 port=9080
 rootPath=/syncope/rest/
+useGZIPCompression=true
 
 activitiModelerDirectory=${activiti-modeler.directory}
+
+reconciliationReportKey=c3520ad9-179f-49e7-b315-d684d216dd97
+
+page.dashboard=org.apache.syncope.client.console.pages.Dashboard
+page.realms=org.apache.syncope.client.console.pages.Realms
+page.topology=org.apache.syncope.client.console.topology.Topology
+page.reports=org.apache.syncope.client.console.pages.Reports
+page.workflow=org.apache.syncope.client.console.pages.Workflow
+page.audit=org.apache.syncope.client.console.pages.Audit
+page.logs=org.apache.syncope.client.console.pages.Logs
+page.securityquestions=org.apache.syncope.client.console.pages.SecurityQuestions
+page.types=org.apache.syncope.client.console.pages.Types
+page.roles=org.apache.syncope.client.console.pages.Roles
+page.policies=org.apache.syncope.client.console.pages.Policies
+page.notifications=org.apache.syncope.client.console.pages.Notifications
+page.parameters=org.apache.syncope.client.console.pages.Parameters
diff --git a/core/pom.xml b/core/pom.xml
index 846d5c9..894ed19 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -24,14 +24,18 @@
   <parent>
     <groupId>org.apache.infra</groupId>
     <artifactId>iampoc</artifactId>
-    <version>0.1-SNAPSHOT</version>
+    <version>1.0-SNAPSHOT</version>
   </parent>
 
   <name>IAM PoC - Core</name>
   <groupId>org.apache.infra</groupId>
-  <artifactId>core</artifactId>
+  <artifactId>syncope-core</artifactId>
   <packaging>war</packaging>
 
+  <properties>
+    <rootpom.basedir>${basedir}/..</rootpom.basedir>
+  </properties>
+
   <dependencies>
     <dependency> 
       <groupId>javax.servlet</groupId> 
@@ -48,7 +52,7 @@
     
     <dependency>
       <groupId>org.apache.infra</groupId>
-      <artifactId>common</artifactId>
+      <artifactId>syncope-common</artifactId>
       <version>${project.version}</version>
     </dependency>
     
@@ -64,12 +68,7 @@
       <groupId>org.apache.syncope.core</groupId>
       <artifactId>syncope-core-persistence-jpa</artifactId>
     </dependency>
-    
-    <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-workflow-activiti</artifactId>
-    </dependency>
-      
+  
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
@@ -149,4 +148,92 @@
     </testResources>
   </build>
 
+  <profiles>
+    <profile>
+      <id>all</id>
+      
+      <dependencies>
+        <dependency>
+          <groupId>org.apache.syncope.core</groupId>
+          <artifactId>syncope-core-workflow-activiti</artifactId>
+          <version>${syncope.version}</version>
+        </dependency>
+
+        <dependency>
+          <groupId>org.apache.syncope.ext.camel</groupId>
+          <artifactId>syncope-ext-camel-rest-cxf</artifactId>
+          <version>${syncope.version}</version>
+        </dependency>
+        <dependency>
+          <groupId>org.apache.syncope.ext.camel</groupId>
+          <artifactId>syncope-ext-camel-persistence-jpa</artifactId>
+          <version>${syncope.version}</version>
+        </dependency>
+        <dependency>
+          <groupId>org.apache.syncope.ext.camel</groupId>
+          <artifactId>syncope-ext-camel-provisioning</artifactId>
+          <version>${syncope.version}</version>
+        </dependency>
+        
+        <dependency>
+          <groupId>org.apache.syncope.ext</groupId>
+          <artifactId>syncope-ext-swagger-ui</artifactId>
+          <version>${syncope.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}/test-classes</dir>
+                  <includes>
+                    <include>domains/MasterContent.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>
+        
+        <resources>
+          <resource>
+            <directory>src/main/resources</directory>
+            <filtering>true</filtering>
+            <excludes>
+              <exclude>workflow.properties</exclude>
+              <exclude>provisioning.properties</exclude>
+            </excludes>
+          </resource>
+          <resource>
+            <directory>src/main/resources/all</directory>
+            <filtering>true</filtering>
+          </resource>
+        </resources>
+      </build>
+    </profile>
+  </profiles>
+
 </project>
diff --git a/core/src/main/resources/META-INF/spring-orm-oracle.xml b/core/src/main/resources/META-INF/spring-orm-oracle.xml
index 72fadcd..da39ce3 100644
--- a/core/src/main/resources/META-INF/spring-orm-oracle.xml
+++ b/core/src/main/resources/META-INF/spring-orm-oracle.xml
@@ -34,193 +34,8 @@
     </persistence-unit-defaults>
   </persistence-unit-metadata>
   
-  <table-generator name="SEQ_UPlainAttrValue" pk-column-value="SEQ_UPlainAttrValue" initial-value="100"/>
-  <table-generator name="SEQ_GPlainAttrValue" pk-column-value="SEQ_GPlainAttrValue" initial-value="100"/>
-  <table-generator name="SEQ_APlainAttrValue" pk-column-value="SEQ_APlainAttrValue" initial-value="100"/>
-  <table-generator name="SEQ_CPlainAttrValue" pk-column-value="SEQ_CPlainAttrValue" initial-value="100"/>
+  <sequence-generator name="uuid" sequence-name="org.apache.syncope.core.persistence.jpa.openjpa.UUIDGenerator()"/>
 
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPARealm">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Realm" strategy="TABLE"/>
-        <table-generator name="SEQ_Realm" pk-column-value="SEQ_Realm" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAnyObject">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AnyObject" strategy="TABLE"/>
-        <table-generator name="SEQ_AnyObject" pk-column-value="SEQ_AnyObject" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAARelationship">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_ARelationship" strategy="TABLE"/>
-        <table-generator name="SEQ_ARelationship" pk-column-value="SEQ_ARelationship" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAMembership">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AMembership" strategy="TABLE"/>
-        <table-generator name="SEQ_AMembership" pk-column-value="SEQ_AMembership" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPADynRoleMembership">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_DynRoleMembership" strategy="TABLE"/>
-        <table-generator name="SEQ_DynRoleMembership" pk-column-value="SEQ_DynRoleMembership" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUser">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_User" strategy="TABLE"/>
-        <table-generator name="SEQ_User" pk-column-value="SEQ_User" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAURelationship">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_URelationship" strategy="TABLE"/>
-        <table-generator name="SEQ_URelationship" pk-column-value="SEQ_URelationship" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUMembership">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_UMembership" strategy="TABLE"/>
-        <table-generator name="SEQ_UMembership" pk-column-value="SEQ_UMembership" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Group" strategy="TABLE"/>
-        <table-generator name="SEQ_Group" pk-column-value="SEQ_Group" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPATypeExtension">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_TypeExtension" strategy="TABLE"/>
-        <table-generator name="SEQ_TypeExtension" pk-column-value="SEQ_TypeExtension" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAADynGroupMembership">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_ADynGroupMembership" strategy="TABLE"/>
-        <table-generator name="SEQ_ADynGroupMembership" pk-column-value="SEQ_ADynGroupMembership" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUDynGroupMembership">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_UDynGroupMembership" strategy="TABLE"/>
-        <table-generator name="SEQ_UDynGroupMembership" pk-column-value="SEQ_UDynGroupMembership" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.resource.JPAProvision">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Provision" strategy="TABLE"/>
-        <table-generator name="SEQ_Provision" pk-column-value="SEQ_Provision" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.resource.JPAMapping">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Mapping" strategy="TABLE"/>
-        <table-generator name="SEQ_Mapping" pk-column-value="SEQ_Mapping" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.resource.JPAMappingItem">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_MappingItem" strategy="TABLE"/>
-        <table-generator name="SEQ_MappingItem" pk-column-value="SEQ_MappingItem" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAConnInstance">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_ConnInstance" strategy="TABLE"/>
-        <table-generator name="SEQ_ConnInstance" pk-column-value="SEQ_ConnInstance" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttr">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_APlainAttr" strategy="TABLE"/>
-        <table-generator name="SEQ_APlainAttr" pk-column-value="SEQ_APlainAttr" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttr">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_UPlainAttr" strategy="TABLE"/>
-        <table-generator name="SEQ_UPlainAttr" pk-column-value="SEQ_UPlainAttr" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttr">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_GPlainAttr" strategy="TABLE"/>
-        <table-generator name="SEQ_GPlainAttr" pk-column-value="SEQ_GPlainAttr" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttr">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_CAttrPlain" strategy="TABLE"/>
-        <table-generator name="SEQ_CAttrPlain" pk-column-value="SEQ_CAttrPlain" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttrValue">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_APlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
-  </entity>
   <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttrUniqueValue">
     <table>
       <unique-constraint>
@@ -229,22 +44,10 @@
         <column-name>stringValue</column-name>
         <column-name>doubleValue</column-name>
         <column-name>longValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
     </table>
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_APlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
   </entity>    
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttrValue">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_UPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
-  </entity>
   <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttrUniqueValue">
     <table>
       <unique-constraint>
@@ -253,21 +56,9 @@
         <column-name>stringValue</column-name>
         <column-name>doubleValue</column-name>
         <column-name>longValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
     </table>
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_UPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrValue">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_GPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
   </entity>
   <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrUniqueValue">
     <table>
@@ -277,21 +68,9 @@
         <column-name>stringValue</column-name>
         <column-name>doubleValue</column-name>
         <column-name>longValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
     </table>
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_GPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrValue">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_CPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
   </entity>
   <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrUniqueValue">
     <table>
@@ -301,133 +80,8 @@
         <column-name>stringValue</column-name>
         <column-name>doubleValue</column-name>
         <column-name>longValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
     </table>
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_CPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAAnyTemplateRealm">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AnyTemplateRealm" strategy="TABLE"/>
-        <table-generator name="SEQ_AnyTemplateRealm" pk-column-value="SEQ_AnyTemplateRealm" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.task.JPAAnyTemplateSyncTask">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AnyTemplateSyncTask" strategy="TABLE"/>
-        <table-generator name="SEQ_AnyTemplateSyncTask" pk-column-value="SEQ_AnyTemplateSyncTask" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.task.JPAPushTaskAnyFilter">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_PushTaskAnyFilter" strategy="TABLE"/>
-        <table-generator name="SEQ_PushTaskAnyFilter" pk-column-value="SEQ_PushTaskAnyFilter" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.task.AbstractTask">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Task" strategy="TABLE"/>
-        <table-generator name="SEQ_Task" pk-column-value="SEQ_Task" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.task.JPATaskExec">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_TaskExec" strategy="TABLE"/>
-        <table-generator name="SEQ_TaskExec" pk-column-value="SEQ_TaskExec" initial-value="10"/>
-      </id>
-    </attributes>
-  </entity>
-    
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.policy.AbstractPolicy">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Policy" strategy="TABLE"/>
-        <table-generator name="SEQ_Policy" pk-column-value="SEQ_Policy" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.policy.JPAAccountRuleConfInstance">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AccountRuleConfInstance" strategy="TABLE"/>
-        <table-generator name="SEQ_AccountRuleConfInstance" pk-column-value="SEQ_AccountRuleConfInstance" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.policy.JPAPasswordRuleConfInstance">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_PasswordRuleConfInstance" strategy="TABLE"/>
-        <table-generator name="SEQ_PasswordRuleConfInstance" pk-column-value="SEQ_PasswordRuleConfInstance" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAReport">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Report" strategy="TABLE"/>
-        <table-generator name="SEQ_Report" pk-column-value="SEQ_Report" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAReportExec">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_ReportExec" strategy="TABLE"/>
-        <table-generator name="SEQ_ReportExec" pk-column-value="SEQ_ReportExec" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAReportletConfInstance">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_ReportletConfInstance" strategy="TABLE"/>
-        <table-generator name="SEQ_ReportletConfInstance" pk-column-value="SEQ_ReportletConfInstance" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAAnyAbout">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AnyAbout" strategy="TABLE"/>
-        <table-generator name="SEQ_AnyAbout" pk-column-value="SEQ_AnyAbout" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPANotification">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Notification" strategy="TABLE"/>
-        <table-generator name="SEQ_Notification" pk-column-value="SEQ_Notification" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPASecurityQuestion">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_SecurityQuestion" strategy="TABLE"/>
-        <table-generator name="SEQ_SecurityQuestion" pk-column-value="SEQ_SecurityQuestion" initial-value="100"/>
-      </id>
-    </attributes>
   </entity>
 </entity-mappings>
diff --git a/core/src/main/resources/META-INF/spring-orm-sqlserver.xml b/core/src/main/resources/META-INF/spring-orm-sqlserver.xml
index 72fadcd..8bcb833 100644
--- a/core/src/main/resources/META-INF/spring-orm-sqlserver.xml
+++ b/core/src/main/resources/META-INF/spring-orm-sqlserver.xml
@@ -22,7 +22,7 @@
                  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm 
                                      http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"
                  version="2.0">
-  
+
   <persistence-unit-metadata>
     <persistence-unit-defaults>
       <entity-listeners>
@@ -33,194 +33,9 @@
       </entity-listeners>
     </persistence-unit-defaults>
   </persistence-unit-metadata>
-  
-  <table-generator name="SEQ_UPlainAttrValue" pk-column-value="SEQ_UPlainAttrValue" initial-value="100"/>
-  <table-generator name="SEQ_GPlainAttrValue" pk-column-value="SEQ_GPlainAttrValue" initial-value="100"/>
-  <table-generator name="SEQ_APlainAttrValue" pk-column-value="SEQ_APlainAttrValue" initial-value="100"/>
-  <table-generator name="SEQ_CPlainAttrValue" pk-column-value="SEQ_CPlainAttrValue" initial-value="100"/>
 
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPARealm">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Realm" strategy="TABLE"/>
-        <table-generator name="SEQ_Realm" pk-column-value="SEQ_Realm" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
+  <sequence-generator name="uuid" sequence-name="org.apache.syncope.core.persistence.jpa.openjpa.UUIDGenerator()"/>
   
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAnyObject">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AnyObject" strategy="TABLE"/>
-        <table-generator name="SEQ_AnyObject" pk-column-value="SEQ_AnyObject" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAARelationship">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_ARelationship" strategy="TABLE"/>
-        <table-generator name="SEQ_ARelationship" pk-column-value="SEQ_ARelationship" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAMembership">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AMembership" strategy="TABLE"/>
-        <table-generator name="SEQ_AMembership" pk-column-value="SEQ_AMembership" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPADynRoleMembership">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_DynRoleMembership" strategy="TABLE"/>
-        <table-generator name="SEQ_DynRoleMembership" pk-column-value="SEQ_DynRoleMembership" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUser">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_User" strategy="TABLE"/>
-        <table-generator name="SEQ_User" pk-column-value="SEQ_User" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAURelationship">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_URelationship" strategy="TABLE"/>
-        <table-generator name="SEQ_URelationship" pk-column-value="SEQ_URelationship" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUMembership">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_UMembership" strategy="TABLE"/>
-        <table-generator name="SEQ_UMembership" pk-column-value="SEQ_UMembership" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Group" strategy="TABLE"/>
-        <table-generator name="SEQ_Group" pk-column-value="SEQ_Group" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPATypeExtension">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_TypeExtension" strategy="TABLE"/>
-        <table-generator name="SEQ_TypeExtension" pk-column-value="SEQ_TypeExtension" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAADynGroupMembership">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_ADynGroupMembership" strategy="TABLE"/>
-        <table-generator name="SEQ_ADynGroupMembership" pk-column-value="SEQ_ADynGroupMembership" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUDynGroupMembership">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_UDynGroupMembership" strategy="TABLE"/>
-        <table-generator name="SEQ_UDynGroupMembership" pk-column-value="SEQ_UDynGroupMembership" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.resource.JPAProvision">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Provision" strategy="TABLE"/>
-        <table-generator name="SEQ_Provision" pk-column-value="SEQ_Provision" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.resource.JPAMapping">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Mapping" strategy="TABLE"/>
-        <table-generator name="SEQ_Mapping" pk-column-value="SEQ_Mapping" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.resource.JPAMappingItem">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_MappingItem" strategy="TABLE"/>
-        <table-generator name="SEQ_MappingItem" pk-column-value="SEQ_MappingItem" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAConnInstance">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_ConnInstance" strategy="TABLE"/>
-        <table-generator name="SEQ_ConnInstance" pk-column-value="SEQ_ConnInstance" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttr">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_APlainAttr" strategy="TABLE"/>
-        <table-generator name="SEQ_APlainAttr" pk-column-value="SEQ_APlainAttr" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttr">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_UPlainAttr" strategy="TABLE"/>
-        <table-generator name="SEQ_UPlainAttr" pk-column-value="SEQ_UPlainAttr" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttr">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_GPlainAttr" strategy="TABLE"/>
-        <table-generator name="SEQ_GPlainAttr" pk-column-value="SEQ_GPlainAttr" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttr">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_CAttrPlain" strategy="TABLE"/>
-        <table-generator name="SEQ_CAttrPlain" pk-column-value="SEQ_CAttrPlain" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttrValue">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_APlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
-  </entity>
   <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttrUniqueValue">
     <table>
       <unique-constraint>
@@ -229,22 +44,10 @@
         <column-name>stringValue</column-name>
         <column-name>doubleValue</column-name>
         <column-name>longValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
     </table>
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_APlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
   </entity>    
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttrValue">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_UPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
-  </entity>
   <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttrUniqueValue">
     <table>
       <unique-constraint>
@@ -253,21 +56,9 @@
         <column-name>stringValue</column-name>
         <column-name>doubleValue</column-name>
         <column-name>longValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
     </table>
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_UPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrValue">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_GPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
   </entity>
   <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrUniqueValue">
     <table>
@@ -277,21 +68,9 @@
         <column-name>stringValue</column-name>
         <column-name>doubleValue</column-name>
         <column-name>longValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
     </table>
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_GPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrValue">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_CPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
   </entity>
   <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrUniqueValue">
     <table>
@@ -301,133 +80,8 @@
         <column-name>stringValue</column-name>
         <column-name>doubleValue</column-name>
         <column-name>longValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
     </table>
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_CPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAAnyTemplateRealm">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AnyTemplateRealm" strategy="TABLE"/>
-        <table-generator name="SEQ_AnyTemplateRealm" pk-column-value="SEQ_AnyTemplateRealm" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.task.JPAAnyTemplateSyncTask">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AnyTemplateSyncTask" strategy="TABLE"/>
-        <table-generator name="SEQ_AnyTemplateSyncTask" pk-column-value="SEQ_AnyTemplateSyncTask" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.task.JPAPushTaskAnyFilter">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_PushTaskAnyFilter" strategy="TABLE"/>
-        <table-generator name="SEQ_PushTaskAnyFilter" pk-column-value="SEQ_PushTaskAnyFilter" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.task.AbstractTask">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Task" strategy="TABLE"/>
-        <table-generator name="SEQ_Task" pk-column-value="SEQ_Task" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.task.JPATaskExec">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_TaskExec" strategy="TABLE"/>
-        <table-generator name="SEQ_TaskExec" pk-column-value="SEQ_TaskExec" initial-value="10"/>
-      </id>
-    </attributes>
-  </entity>
-    
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.policy.AbstractPolicy">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Policy" strategy="TABLE"/>
-        <table-generator name="SEQ_Policy" pk-column-value="SEQ_Policy" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.policy.JPAAccountRuleConfInstance">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AccountRuleConfInstance" strategy="TABLE"/>
-        <table-generator name="SEQ_AccountRuleConfInstance" pk-column-value="SEQ_AccountRuleConfInstance" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.policy.JPAPasswordRuleConfInstance">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_PasswordRuleConfInstance" strategy="TABLE"/>
-        <table-generator name="SEQ_PasswordRuleConfInstance" pk-column-value="SEQ_PasswordRuleConfInstance" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAReport">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Report" strategy="TABLE"/>
-        <table-generator name="SEQ_Report" pk-column-value="SEQ_Report" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAReportExec">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_ReportExec" strategy="TABLE"/>
-        <table-generator name="SEQ_ReportExec" pk-column-value="SEQ_ReportExec" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAReportletConfInstance">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_ReportletConfInstance" strategy="TABLE"/>
-        <table-generator name="SEQ_ReportletConfInstance" pk-column-value="SEQ_ReportletConfInstance" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAAnyAbout">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AnyAbout" strategy="TABLE"/>
-        <table-generator name="SEQ_AnyAbout" pk-column-value="SEQ_AnyAbout" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPANotification">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Notification" strategy="TABLE"/>
-        <table-generator name="SEQ_Notification" pk-column-value="SEQ_Notification" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPASecurityQuestion">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_SecurityQuestion" strategy="TABLE"/>
-        <table-generator name="SEQ_SecurityQuestion" pk-column-value="SEQ_SecurityQuestion" initial-value="100"/>
-      </id>
-    </attributes>
   </entity>
 </entity-mappings>
diff --git a/core/src/main/resources/META-INF/spring-orm.xml b/core/src/main/resources/META-INF/spring-orm.xml
index 5fc68ea..c0033a5 100644
--- a/core/src/main/resources/META-INF/spring-orm.xml
+++ b/core/src/main/resources/META-INF/spring-orm.xml
@@ -33,449 +33,103 @@
       </entity-listeners>
     </persistence-unit-defaults>
   </persistence-unit-metadata>
-  
-  <table-generator name="SEQ_UPlainAttrValue" pk-column-value="SEQ_UPlainAttrValue" initial-value="100"/>
-  <table-generator name="SEQ_GPlainAttrValue" pk-column-value="SEQ_GPlainAttrValue" initial-value="100"/>
-  <table-generator name="SEQ_APlainAttrValue" pk-column-value="SEQ_APlainAttrValue" initial-value="100"/>
-  <table-generator name="SEQ_CPlainAttrValue" pk-column-value="SEQ_CPlainAttrValue" initial-value="100"/>
 
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPARealm">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Realm" strategy="TABLE"/>
-        <table-generator name="SEQ_Realm" pk-column-value="SEQ_Realm" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
+  <sequence-generator name="uuid" sequence-name="org.apache.syncope.core.persistence.jpa.openjpa.UUIDGenerator()"/>
   
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAnyObject">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AnyObject" strategy="TABLE"/>
-        <table-generator name="SEQ_AnyObject" pk-column-value="SEQ_AnyObject" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAARelationship">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_ARelationship" strategy="TABLE"/>
-        <table-generator name="SEQ_ARelationship" pk-column-value="SEQ_ARelationship" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAMembership">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AMembership" strategy="TABLE"/>
-        <table-generator name="SEQ_AMembership" pk-column-value="SEQ_AMembership" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPADynRoleMembership">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_DynRoleMembership" strategy="TABLE"/>
-        <table-generator name="SEQ_DynRoleMembership" pk-column-value="SEQ_DynRoleMembership" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUser">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_User" strategy="TABLE"/>
-        <table-generator name="SEQ_User" pk-column-value="SEQ_User" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAURelationship">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_URelationship" strategy="TABLE"/>
-        <table-generator name="SEQ_URelationship" pk-column-value="SEQ_URelationship" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUMembership">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_UMembership" strategy="TABLE"/>
-        <table-generator name="SEQ_UMembership" pk-column-value="SEQ_UMembership" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Group" strategy="TABLE"/>
-        <table-generator name="SEQ_Group" pk-column-value="SEQ_Group" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPATypeExtension">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_TypeExtension" strategy="TABLE"/>
-        <table-generator name="SEQ_TypeExtension" pk-column-value="SEQ_TypeExtension" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAADynGroupMembership">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_ADynGroupMembership" strategy="TABLE"/>
-        <table-generator name="SEQ_ADynGroupMembership" pk-column-value="SEQ_ADynGroupMembership" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUDynGroupMembership">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_UDynGroupMembership" strategy="TABLE"/>
-        <table-generator name="SEQ_UDynGroupMembership" pk-column-value="SEQ_UDynGroupMembership" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.resource.JPAProvision">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Provision" strategy="TABLE"/>
-        <table-generator name="SEQ_Provision" pk-column-value="SEQ_Provision" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.resource.JPAMapping">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Mapping" strategy="TABLE"/>
-        <table-generator name="SEQ_Mapping" pk-column-value="SEQ_Mapping" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.resource.JPAMappingItem">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_MappingItem" strategy="TABLE"/>
-        <table-generator name="SEQ_MappingItem" pk-column-value="SEQ_MappingItem" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAConnInstance">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_ConnInstance" strategy="TABLE"/>
-        <table-generator name="SEQ_ConnInstance" pk-column-value="SEQ_ConnInstance" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttr">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_APlainAttr" strategy="TABLE"/>
-        <table-generator name="SEQ_APlainAttr" pk-column-value="SEQ_APlainAttr" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttr">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_UPlainAttr" strategy="TABLE"/>
-        <table-generator name="SEQ_UPlainAttr" pk-column-value="SEQ_UPlainAttr" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttr">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_GPlainAttr" strategy="TABLE"/>
-        <table-generator name="SEQ_GPlainAttr" pk-column-value="SEQ_GPlainAttr" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttr">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_CAttrPlain" strategy="TABLE"/>
-        <table-generator name="SEQ_CAttrPlain" pk-column-value="SEQ_CAttrPlain" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttrValue">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_APlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
-  </entity>
   <entity class="org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAPlainAttrUniqueValue">
     <table>
       <unique-constraint>
         <column-name>booleanValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
       <unique-constraint>
         <column-name>dateValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
       <unique-constraint>
         <column-name>stringValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
       <unique-constraint>
         <column-name>doubleValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
       <unique-constraint>
         <column-name>longValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
     </table>
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_APlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
   </entity>    
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttrValue">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_UPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
-  </entity>
   <entity class="org.apache.syncope.core.persistence.jpa.entity.user.JPAUPlainAttrUniqueValue">
     <table>
       <unique-constraint>
         <column-name>booleanValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
       <unique-constraint>
         <column-name>dateValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
       <unique-constraint>
         <column-name>stringValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
       <unique-constraint>
         <column-name>doubleValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
       <unique-constraint>
         <column-name>longValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
     </table>
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_UPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrValue">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_GPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
   </entity>
   <entity class="org.apache.syncope.core.persistence.jpa.entity.group.JPAGPlainAttrUniqueValue">
     <table>
       <unique-constraint>
         <column-name>booleanValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
       <unique-constraint>
         <column-name>dateValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
       <unique-constraint>
         <column-name>stringValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
       <unique-constraint>
         <column-name>doubleValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
       <unique-constraint>
         <column-name>longValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
     </table>
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_GPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrValue">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_CPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
   </entity>
   <entity class="org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrUniqueValue">
     <table>
       <unique-constraint>
         <column-name>booleanValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
       <unique-constraint>
         <column-name>dateValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
       <unique-constraint>
         <column-name>stringValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
       <unique-constraint>
         <column-name>doubleValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
       <unique-constraint>
         <column-name>longValue</column-name>
-        <column-name>schema_name</column-name>
+        <column-name>schema_id</column-name>
       </unique-constraint>
     </table>
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_CPlainAttrValue" strategy="TABLE"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAAnyTemplateRealm">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AnyTemplateRealm" strategy="TABLE"/>
-        <table-generator name="SEQ_AnyTemplateRealm" pk-column-value="SEQ_AnyTemplateRealm" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.task.JPAAnyTemplateSyncTask">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AnyTemplateSyncTask" strategy="TABLE"/>
-        <table-generator name="SEQ_AnyTemplateSyncTask" pk-column-value="SEQ_AnyTemplateSyncTask" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.task.JPAPushTaskAnyFilter">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_PushTaskAnyFilter" strategy="TABLE"/>
-        <table-generator name="SEQ_PushTaskAnyFilter" pk-column-value="SEQ_PushTaskAnyFilter" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.task.AbstractTask">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Task" strategy="TABLE"/>
-        <table-generator name="SEQ_Task" pk-column-value="SEQ_Task" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.task.JPATaskExec">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_TaskExec" strategy="TABLE"/>
-        <table-generator name="SEQ_TaskExec" pk-column-value="SEQ_TaskExec" initial-value="10"/>
-      </id>
-    </attributes>
-  </entity>
-    
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.policy.AbstractPolicy">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Policy" strategy="TABLE"/>
-        <table-generator name="SEQ_Policy" pk-column-value="SEQ_Policy" initial-value="1000"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.policy.JPAAccountRuleConfInstance">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AccountRuleConfInstance" strategy="TABLE"/>
-        <table-generator name="SEQ_AccountRuleConfInstance" pk-column-value="SEQ_AccountRuleConfInstance" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.policy.JPAPasswordRuleConfInstance">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_PasswordRuleConfInstance" strategy="TABLE"/>
-        <table-generator name="SEQ_PasswordRuleConfInstance" pk-column-value="SEQ_PasswordRuleConfInstance" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-    
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAReport">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Report" strategy="TABLE"/>
-        <table-generator name="SEQ_Report" pk-column-value="SEQ_Report" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAReportExec">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_ReportExec" strategy="TABLE"/>
-        <table-generator name="SEQ_ReportExec" pk-column-value="SEQ_ReportExec" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAReportletConfInstance">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_ReportletConfInstance" strategy="TABLE"/>
-        <table-generator name="SEQ_ReportletConfInstance" pk-column-value="SEQ_ReportletConfInstance" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPAAnyAbout">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_AnyAbout" strategy="TABLE"/>
-        <table-generator name="SEQ_AnyAbout" pk-column-value="SEQ_AnyAbout" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPANotification">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_Notification" strategy="TABLE"/>
-        <table-generator name="SEQ_Notification" pk-column-value="SEQ_Notification" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
-  
-  <entity class="org.apache.syncope.core.persistence.jpa.entity.JPASecurityQuestion">
-    <attributes>
-      <id name="id">
-        <generated-value generator="SEQ_SecurityQuestion" strategy="TABLE"/>
-        <table-generator name="SEQ_SecurityQuestion" pk-column-value="SEQ_SecurityQuestion" initial-value="100"/>
-      </id>
-    </attributes>
-  </entity>
+  </entity>  
 </entity-mappings>
diff --git a/core/src/main/resources/all/provisioning.properties b/core/src/main/resources/all/provisioning.properties
new file mode 100644
index 0000000..8147828
--- /dev/null
+++ b/core/src/main/resources/all/provisioning.properties
@@ -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.
+camel.directory=${conf.directory}
+
+asyncConnectorFacadeExecutor.poolSize=10
+
+# see http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html#scheduling-task-namespace-executor
+propagationTaskExecutorAsyncExecutor.poolSize=5-25
+propagationTaskExecutorAsyncExecutor.queueCapacity=100
+propagationTaskExecutor=org.apache.syncope.core.provisioning.java.propagation.PriorityPropagationTaskExecutor
+
+userProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelUserProvisioningManager
+groupProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelGroupProvisioningManager
+anyObjectProvisioningManager=org.apache.syncope.core.provisioning.camel.CamelAnyObjectProvisioningManager
+virAttrCache=org.apache.syncope.core.provisioning.java.cache.MemoryVirAttrCache
+
+quartz.jobstore=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
+quartz.sql=tables_h2.sql
+quartz.scheduler.idleWaitTime=5000
diff --git a/core/src/main/resources/workflow.properties b/core/src/main/resources/all/workflow.properties
similarity index 97%
rename from core/src/main/resources/workflow.properties
rename to core/src/main/resources/all/workflow.properties
index 61f1a3e..771b11c 100644
--- a/core/src/main/resources/workflow.properties
+++ b/core/src/main/resources/all/workflow.properties
@@ -15,6 +15,7 @@
 # specific language governing permissions and limitations
 # under the License.
 wf.directory=${conf.directory}
+historyLevel=activity
 jobExecutorActivate=true
 uwfAdapter=org.apache.syncope.core.workflow.activiti.ActivitiUserWorkflowAdapter
 gwfAdapter=org.apache.syncope.core.workflow.java.DefaultGroupWorkflowAdapter
diff --git a/core/src/main/resources/audit/audit_oracle.sql b/core/src/main/resources/audit/audit_oracle.sql
index e1b7d81..9115bee 100644
--- a/core/src/main/resources/audit/audit_oracle.sql
+++ b/core/src/main/resources/audit/audit_oracle.sql
@@ -15,24 +15,10 @@
 -- specific language governing permissions and limitations
 -- under the License.
 
-BEGIN
-    BEGIN
-         EXECUTE IMMEDIATE 'DROP TABLE SYNCOPEAUDIT';
-    EXCEPTION
-         WHEN OTHERS THEN
-                IF SQLCODE != -942 THEN
-                     RAISE;
-                END IF;
-    END;
-
-    EXECUTE IMMEDIATE '
 CREATE TABLE SYNCOPEAUDIT (
   EVENT_DATE TIMESTAMP,
   LOGGER_LEVEL VARCHAR(255) NOT NULL,
   LOGGER VARCHAR(255) NOT NULL,
   MESSAGE CLOB NOT NULL,
   THROWABLE CLOB
-)
-';
-
-END;
+);
diff --git a/core/src/main/resources/coreContext.xml b/core/src/main/resources/coreContext.xml
index ecdb57d..de4a865 100644
--- a/core/src/main/resources/coreContext.xml
+++ b/core/src/main/resources/coreContext.xml
@@ -22,7 +22,7 @@
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans.xsd">
 
-  <bean id="confDirectoryPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+  <bean id="confDirectoryPropertyConfigurer" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
     <property name="order" value="1"/>
     <property name="ignoreResourceNotFound" value="true"/>
     <property name="ignoreUnresolvablePlaceholders" value="true"/>
@@ -39,7 +39,7 @@
       </list>
     </property>
   </bean>
-  <bean id="classpathPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+  <bean id="classpathPropertyConfigurer" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
     <property name="locations">
       <list>
         <value>classpath:persistence.properties</value>
@@ -54,6 +54,6 @@
     </property>
   </bean>
 
-  <bean class="org.apache.syncope.core.misc.spring.ApplicationContextProvider"/>
+  <bean class="org.apache.syncope.core.spring.ApplicationContextProvider"/>
 
 </beans>
diff --git a/core/src/main/resources/domains.xml b/core/src/main/resources/domains.xml
index 5d6b5ab..c793d83 100644
--- a/core/src/main/resources/domains.xml
+++ b/core/src/main/resources/domains.xml
@@ -24,7 +24,7 @@
   
   <import resource="classpath*:domains/*Domain.xml"/>
   
-  <bean class="org.apache.syncope.core.misc.spring.DomainTransactionInterceptorInjector"/>
+  <bean class="org.apache.syncope.core.persistence.jpa.spring.DomainTransactionInterceptorInjector"/>
   
   <bean id="commonEMFConf" class="org.apache.syncope.core.persistence.jpa.spring.CommonEntityManagerFactoryConf">
     <property name="packagesToScan" value="org.apache.syncope.core.persistence.jpa.entity"/>
@@ -42,9 +42,9 @@
         value="PrintParameters=true, PrettyPrint=true, PrettyPrintLineLength=80"/>-->
                                 
         <entry key="openjpa.NontransactionalWrite" value="false"/>
-        <entry key="openjpa.AutoDetach" value="close, commit, nontx-read, rollback"/>
 
-        <entry key="openjpa.jdbc.SchemaFactory" value="native(ForeignKeys=true)"/>
+        <!-- Removed: see https://s.apache.org/openjpaSchemaFactory for more information
+        <entry key="openjpa.jdbc.SchemaFactory" value="native(ForeignKeys=true)"/>-->
         <entry key="openjpa.jdbc.MappingDefaults" 
                value="ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict"/>
                 
@@ -52,7 +52,7 @@
         <entry key="openjpa.QueryCache" value="true"/>
         <entry key="openjpa.RemoteCommitProvider" value="sjvm"/>
       </map>
-    </property>    
+    </property>
   </bean>
   
 </beans>
diff --git a/core/src/main/resources/domains/MasterContent.xml b/core/src/main/resources/domains/MasterContent.xml
index ed1c035..05f3921 100644
--- a/core/src/main/resources/domains/MasterContent.xml
+++ b/core/src/main/resources/domains/MasterContent.xml
@@ -18,113 +18,193 @@
 under the License.
 -->
 <dataset>
-  <Realm id="1" name="/"/>
+  <Realm id="ea696a4f-e77a-4ef1-be67-8f8093bc8686" name="/"/>
 
-  <SyncopeConf id="1" 
-               creator="admin" lastModifier="admin"
-               creationDate="2014-06-20 11:00:00" lastChangeDate="2014-06-20 11:00:00"/>
+  <SyncopeConf id="cd64d66f-6fff-4008-b966-a06b1cc1436d"/>
 
-  <PlainSchema name="password.cipher.algorithm" type="String"
+  <SyncopeSchema id="password.cipher.algorithm"/>
+  <PlainSchema id="password.cipher.algorithm" type="String"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="1" owner_id="1" schema_name="password.cipher.algorithm"/>
-  <CPlainAttrValue id="1" attribute_id="1" stringValue="SHA1"/>
+  <CPlainAttr id="56db89b9-119e-4923-a16e-f42823b90c66" 
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="password.cipher.algorithm"/>
+  <CPlainAttrValue id="870323e8-8db6-4a64-b512-15f9fa094905" 
+                   attribute_id="56db89b9-119e-4923-a16e-f42823b90c66" stringValue="SHA1"/>
 
   <!-- notificationjob.cronExpression:
-  + not existing: NotificationJob runs according to Notification.DEFAULT_CRON_EXP
+  + not existing: NotificationJob runs according to NotificationJob.DEFAULT_CRON_EXP
   + provided as empty string: NotificationJob disabled
   + provided as non-empty string: NotificationJob runs according to the given value -->
-  <PlainSchema name="notificationjob.cronExpression" type="String"
+  <SyncopeSchema id="notificationjob.cronExpression"/>
+  <PlainSchema id="notificationjob.cronExpression" type="String"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="2" owner_id="1" schema_name="notificationjob.cronExpression"/>
-  <CPlainAttrValue id="2" attribute_id="2" stringValue=""/>
-
-  <PlainSchema name="notification.maxRetries" type="Long"
+  <CPlainAttr id="abd5a2d2-25ee-48b7-b5ca-76813b54a6f2"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="notificationjob.cronExpression"/>
+  <CPlainAttrValue id="4828ea70-d151-4c16-b344-2d07b1956bee"
+                   attribute_id="abd5a2d2-25ee-48b7-b5ca-76813b54a6f2" stringValue=""/>
+  
+  <SyncopeSchema id="notification.maxRetries"/>
+  <PlainSchema id="notification.maxRetries" type="Long"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="3" owner_id="1" schema_name="notification.maxRetries"/>
-  <CPlainAttrValue id="3" attribute_id="3" longValue="3"/>
+  <CPlainAttr id="0523d7e6-af13-4e1e-9edb-e35971aacee7"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="notification.maxRetries"/>
+  <CPlainAttrValue id="010e2bdc-0094-4918-bac3-d0d5ea17b54a"
+                   attribute_id="0523d7e6-af13-4e1e-9edb-e35971aacee7" longValue="3"/>
 
-  <PlainSchema name="token.length" type="Long"
+  <SyncopeSchema id="token.length"/>
+  <PlainSchema id="token.length" type="Long"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="4" owner_id="1" schema_name="token.length"/>
-  <CPlainAttrValue id="4" attribute_id="4" longValue="256"/>
+  <CPlainAttr id="58977caa-dcf7-4ae3-8591-7e3d0a395200"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="token.length"/>
+  <CPlainAttrValue id="372e28e0-3af1-4774-b668-81aa84903b75"
+                   attribute_id="58977caa-dcf7-4ae3-8591-7e3d0a395200" longValue="256"/>
 
-  <PlainSchema name="token.expireTime" type="Long"
+  <SyncopeSchema id="token.expireTime"/>
+  <PlainSchema id="token.expireTime" type="Long"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="5" owner_id="1" schema_name="token.expireTime"/>
-  <CPlainAttrValue id="5" attribute_id="5" longValue="60"/>
+  <CPlainAttr id="01f69abd-df85-4e1b-bb88-ad570594e045"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="token.expireTime"/>
+  <CPlainAttrValue id="963970cf-4af6-46bb-875b-a1b758ac8d05"
+                   attribute_id="01f69abd-df85-4e1b-bb88-ad570594e045" longValue="60"/>
 
-  <PlainSchema name="selfRegistration.allowed" type="Boolean"
+  <SyncopeSchema id="selfRegistration.allowed"/>
+  <PlainSchema id="selfRegistration.allowed" type="Boolean"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="6" owner_id="1" schema_name="selfRegistration.allowed"/>
-  <CPlainAttrValue id="6" attribute_id="6" booleanValue="1"/>
+  <CPlainAttr id="7b19cefa-d606-477c-8431-c9464f53fe8b"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="selfRegistration.allowed"/>
+  <CPlainAttrValue id="c8b9a0f1-0168-4e2a-95b8-4819fc70e620"
+                   attribute_id="7b19cefa-d606-477c-8431-c9464f53fe8b" booleanValue="1"/>
 
-  <PlainSchema name="passwordReset.allowed" type="Boolean"
+  <SyncopeSchema id="passwordReset.allowed"/>
+  <PlainSchema id="passwordReset.allowed" type="Boolean"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="7" owner_id="1" schema_name="passwordReset.allowed"/>
-  <CPlainAttrValue id="7" attribute_id="7" booleanValue="1"/>
+  <CPlainAttr id="dc35cc97-6ed9-4bb2-bb3b-509f4cd8f3d3"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="passwordReset.allowed"/>
+  <CPlainAttrValue id="b1ecea41-ab7c-4dd3-9e3e-b6baf0f98046"
+                   attribute_id="dc35cc97-6ed9-4bb2-bb3b-509f4cd8f3d3" booleanValue="1"/>
 
-  <PlainSchema name="passwordReset.securityQuestion" type="Boolean"
+  <SyncopeSchema id="passwordReset.securityQuestion"/>
+  <PlainSchema id="passwordReset.securityQuestion" type="Boolean"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="8" owner_id="1" schema_name="passwordReset.securityQuestion"/>
-  <CPlainAttrValue id="8" attribute_id="8" booleanValue="1"/>
+  <CPlainAttr id="e5a712ad-53fd-4102-ba55-fb45caed5f7b"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="passwordReset.securityQuestion"/>
+  <CPlainAttrValue id="b5e8e79d-8039-4318-9698-fe5e181ebe98"
+                   attribute_id="e5a712ad-53fd-4102-ba55-fb45caed5f7b" booleanValue="1"/>
 
-  <PlainSchema name="authentication.statuses" type="String"
-               mandatoryCondition="true" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="9" owner_id="1" schema_name="authentication.statuses"/>
-  <CPlainAttrValue id="9" attribute_id="9" stringValue="created"/>
-  <CPlainAttrValue id="10" attribute_id="9" stringValue="active"/>
+  <SyncopeSchema id="authentication.statuses"/>
+  <PlainSchema id="authentication.statuses" type="String" multivalue="1" uniqueConstraint="0" readonly="0"/>
+  <CPlainAttr id="888ae8e1-a295-4ee2-a15e-31dbf6dfc3f9"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="authentication.statuses"/>
+  <CPlainAttrValue id="4b8e7d2b-f527-43a3-a2e2-5530dcab2f52"
+                   attribute_id="888ae8e1-a295-4ee2-a15e-31dbf6dfc3f9" stringValue="created"/>
+  <CPlainAttrValue id="f0c89f2c-ea87-4c95-a1cf-142bf6e6f523"
+                   attribute_id="888ae8e1-a295-4ee2-a15e-31dbf6dfc3f9" stringValue="active"/>
 
   <!-- Save user login date upon successful authentication -->
-  <PlainSchema name="log.lastlogindate" type="Boolean"
+  <SyncopeSchema id="log.lastlogindate"/>
+  <PlainSchema id="log.lastlogindate" type="Boolean"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="11" owner_id="1" schema_name="log.lastlogindate"/>
-  <CPlainAttrValue id="11" attribute_id="11" booleanValue="1"/>
+  <CPlainAttr id="9891c0a7-27ee-4215-9eea-ca32e580b4e4"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="log.lastlogindate"/>
+  <CPlainAttrValue id="162dd874-0417-4bb9-9724-db1ff2952dd1"
+                   attribute_id="9891c0a7-27ee-4215-9eea-ca32e580b4e4" booleanValue="1"/>
 
-  <PlainSchema name="tasks.interruptMaxRetries" type="Long"
+  <SyncopeSchema id="tasks.interruptMaxRetries"/>
+  <PlainSchema id="tasks.interruptMaxRetries" type="Long"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="12" owner_id="1" schema_name="tasks.interruptMaxRetries"/>
-  <CPlainAttrValue id="12" attribute_id="12" longValue="20"/>
-
-  <!-- Return hashed password values when reading users -->
-  <PlainSchema name="return.password.value" type="Boolean"
-               mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="14" owner_id="1" schema_name="return.password.value"/>
-  <CPlainAttrValue id="14" attribute_id="14" booleanValue="0"/>
-
-  <AnyType name="USER" kind="USER"/>
-  <AnyTypeClass name="BaseUser"/>
-  <AnyType_AnyTypeClass anyType_name="USER" anyTypeClass_name="BaseUser"/>
-
-  <AnyType name="GROUP" kind="GROUP"/>
+  <CPlainAttr id="c2b9ca96-c6ef-433d-8287-0e0cfd0ad0db"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="tasks.interruptMaxRetries"/>
+  <CPlainAttrValue id="5dc3f4e3-ff9f-4558-a9ac-15336b63a2ad"
+                   attribute_id="c2b9ca96-c6ef-433d-8287-0e0cfd0ad0db" longValue="20"/>
   
-  <!-- For usage with admin console -->
-  <PlainSchema name="admin.user.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="self.user.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="admin.group.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="self.group.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="admin.membership.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="self.membership.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
+  <!-- Return hashed password values when reading users -->
+  <SyncopeSchema id="return.password.value"/>
+  <PlainSchema id="return.password.value" type="Boolean"
+               mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
+  <CPlainAttr id="bcfd7efc-0605-4b5e-b4bb-85c1d5f6493a"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="return.password.value"/>
+  <CPlainAttrValue id="e5fa94db-b524-4309-908d-8198d0b3f779"
+                   attribute_id="bcfd7efc-0605-4b5e-b4bb-85c1d5f6493a" booleanValue="0"/>
+
+  <!-- Identity Recertification interval in days -->                   
+  <SyncopeSchema id="identity.recertification.day.interval"/>
+  <PlainSchema id="identity.recertification.day.interval" type="Long"
+               mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
+  <CPlainAttr id="bcfd7efc-0605-4b5e-b4bb-85c1d5f64bbb"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="identity.recertification.day.interval"/>
+  <CPlainAttrValue id="e5fa94db-b524-4309-908d-8198d0b3f77b"
+                   attribute_id="bcfd7efc-0605-4b5e-b4bb-85c1d5f64bbb" longValue="-1"/>
+  
+  <AnyType id="USER" kind="USER"/>
+  <AnyTypeClass id="BaseUser"/>
+  <AnyType_AnyTypeClass anyType_id="USER" anyTypeClass_id="BaseUser"/>
+
+  <AnyType id="GROUP" kind="GROUP"/>
+  <AnyTypeClass id="BaseGroup"/>
+  <AnyType_AnyTypeClass anyType_id="GROUP" anyTypeClass_id="BaseGroup"/>
         
-  <PlainSchema name="email" type="String" anyTypeClass_name="BaseUser"
+  <!-- Actual plain schemas -->
+  <SyncopeSchema id="email"/>
+  <PlainSchema id="email" type="String" anyTypeClass_id="BaseUser"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
                validatorClass="org.apache.syncope.core.persistence.jpa.attrvalue.validation.EmailAddressValidator"/>
+
+  <Task DTYPE="SchedTask" id="e95555d2-1b09-42c8-b25b-f4c4ec598989" name="Identity Recertification Task"  active="0"
+        jobDelegateClassName="org.apache.syncope.core.provisioning.java.job.IdentityRecertification"/>
   
   <!-- Password reset notifications -->
-  <Notification id="1" active="1" recipientAttrName="email" recipientAttrType="UserPlainSchema" selfAsRecipient="1" 
-                sender="admin@syncope.apache.org" subject="Password Reset request" template="requestPasswordReset" 
+  <MailTemplate id="requestPasswordReset"
+                textTemplate="Hi,
+a password reset was request for ${user.getUsername()}.
+
+In order to complete this request, you need to visit this link:
+
+http://localhost:9080/syncope-enduser/app/#/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')}
+
+If you did not request this reset, just ignore the present e-mail.
+
+Best regards."
+                htmlTemplate="&lt;html&gt;
+&lt;body&gt;
+&lt;p&gt;Hi,
+a password reset was request for ${user.getUsername()}.&lt;/p&gt;
+
+&lt;p&gt;In order to complete this request, you need to visit this 
+&lt;a href=&quot;http://localhost:9080/syncope-enduser/app/#/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')}&quot;&gt;link&lt;/a&gt;&lt;/p&gt;.
+
+&lt;p&gt;If you did not request this reset, just ignore the present e-mail.&lt;/p&gt;
+
+&lt;p&gt;Best regards.&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;"/>
+  <MailTemplate id="confirmPasswordReset"
+                textTemplate="Hi,
+we are happy to inform you that the password request was successfully executed for your account.
+
+Best regards."
+                htmlTemplate="&lt;html&gt;
+&lt;body&gt;
+&lt;p&gt;Hi,&lt;/br&gt;
+we are happy to inform you that the password request was successfully executed for your account.&lt;/p&gt;
+
+&lt;p&gt;Best regards.&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;"/>
+
+  <Notification id="e00945b5-1184-4d43-8e45-4318a8dcdfd4" active="1" recipientAttrName="email" selfAsRecipient="1" 
+                sender="admin@syncope.apache.org" subject="Password Reset request" template_id="requestPasswordReset" 
                 traceLevel="FAILURES"/> 
-  <AnyAbout id="1" anyType_name="USER" notification_id="1" about="token!=$null"/>
-  <Notification_events Notification_id="1" event="[CUSTOM]:[]:[]:[requestPasswordReset]:[SUCCESS]"/>
+  <AnyAbout id="a328f2e6-25e9-4cc1-badf-7425d7be4b39" anyType_id="USER" notification_id="e00945b5-1184-4d43-8e45-4318a8dcdfd4" filter="token!=$null"/>
+  <Notification_events notification_id="e00945b5-1184-4d43-8e45-4318a8dcdfd4" event="[CUSTOM]:[]:[]:[requestPasswordReset]:[SUCCESS]"/>
   
-  <Notification id="2" active="1" recipientAttrName="email" recipientAttrType="UserPlainSchema" selfAsRecipient="1" 
-                sender="admin@syncope.apache.org" subject="Password Reset successful" template="confirmPasswordReset" 
+  <Notification id="bef0c250-e8a7-4848-bb63-2564fc409ce2" active="1" recipientAttrName="email" selfAsRecipient="1" 
+                sender="admin@syncope.apache.org" subject="Password Reset successful" template_id="confirmPasswordReset" 
                 traceLevel="FAILURES"/> 
-  <Notification_events Notification_id="2" event="[CUSTOM]:[]:[]:[confirmPasswordReset]:[SUCCESS]"/>
+  <Notification_events notification_id="bef0c250-e8a7-4848-bb63-2564fc409ce2" event="[CUSTOM]:[]:[]:[confirmPasswordReset]:[SUCCESS]"/>
+
+  <ReportTemplate id="empty"/>  
+
+  <Report id="c3520ad9-179f-49e7-b315-d684d216dd97" name="reconciliation" active="1" template_id="empty"/>
+  <ReportletConfInstance id="d6c2b475-4860-4eb1-8fde-618299c2a97c" report_id="c3520ad9-179f-49e7-b315-d684d216dd97" 
+                         serializedInstance='{"@class":"org.apache.syncope.common.lib.report.ReconciliationReportletConf","name":"dashboardReconciliationReportlet","userMatchingCond":null,"groupMatchingCond":null,"anyObjectMatchingCond":null,"features":["id","username","groupName"]}'/>
 
 </dataset>
diff --git a/core/src/main/resources/domains/MasterDomain.xml b/core/src/main/resources/domains/MasterDomain.xml
index 5cb38c2..f949e32 100644
--- a/core/src/main/resources/domains/MasterDomain.xml
+++ b/core/src/main/resources/domains/MasterDomain.xml
@@ -28,11 +28,11 @@
                            http://www.springframework.org/schema/util
                            http://www.springframework.org/schema/util/spring-util.xsd">
   
-  <bean id="MasterContentXML" class="org.apache.syncope.core.misc.spring.ResourceWithFallbackLoader">
+  <bean id="MasterContentXML" class="org.apache.syncope.core.spring.ResourceWithFallbackLoader">
     <property name="primary" value="file:${content.directory}/domains/MasterContent.xml"/>
     <property name="fallback" value="classpath:domains/MasterContent.xml"/>
   </bean>
-  <bean id="MasterProperties" class="org.apache.syncope.core.misc.spring.ResourceWithFallbackLoader">
+  <bean id="MasterProperties" class="org.apache.syncope.core.spring.ResourceWithFallbackLoader">
     <property name="primary" value="file:${content.directory}/domains/Master.properties"/>
     <property name="fallback" value="classpath:domains/Master.properties"/>
   </bean>
diff --git a/core/src/main/resources/indexes.xml b/core/src/main/resources/indexes.xml
index 3807b35..4d2ffcb 100644
--- a/core/src/main/resources/indexes.xml
+++ b/core/src/main/resources/indexes.xml
@@ -60,9 +60,9 @@
   <entry key="APlainAttrValue_attrIndex">CREATE INDEX APlainAttrValue_attrIndex on APlainAttrValue(attribute_id)</entry>
   <entry key="CPlainAttrValue_attrIndex">CREATE INDEX CPlainAttrValue_attrIndex on CPlainAttrValue(attribute_id)</entry>
 
-  <entry key="UPlainAttr_owner_id_index">CREATE INDEX UPlainAttr_owner_id_index on UPlainAttr(owner_id)</entry>
-  <entry key="GPlainAttr_owner_id_index">CREATE INDEX GPlainAttr_owner_id_index on GPlainAttr(owner_id)</entry>
-  <entry key="APlainAttr_owner_id_index">CREATE INDEX APlainAttr_owner_id_index on APlainAttr(owner_id)</entry>
+  <entry key="UPlainAttr_owner_idindex">CREATE INDEX UPlainAttr_owner_idindex on UPlainAttr(owner_id)</entry>
+  <entry key="GPlainAttr_owner_idindex">CREATE INDEX GPlainAttr_owner_idindex on GPlainAttr(owner_id)</entry>
+  <entry key="APlainAttr_owner_idindex">CREATE INDEX APlainAttr_owner_idindex on APlainAttr(owner_id)</entry>
 
   <entry key="Task_executedIndex">CREATE INDEX Task_executedIndex ON Task(executed)</entry>
 </properties>
diff --git a/core/src/main/resources/log4j2.xml b/core/src/main/resources/log4j2.xml
index 7ef0997..02bb591 100644
--- a/core/src/main/resources/log4j2.xml
+++ b/core/src/main/resources/log4j2.xml
@@ -124,6 +124,9 @@
     <asyncLogger name="org.apache.camel" additivity="false" level="ERROR">
       <appender-ref ref="main"/>
     </asyncLogger>
+    <asyncLogger name="io.swagger" additivity="false" level="ERROR">
+      <appender-ref ref="main"/>
+    </asyncLogger>
     
     <root level="INFO">
       <appender-ref ref="main"/>
diff --git a/core/src/main/resources/logic.properties b/core/src/main/resources/logic.properties
index 4af398a..a9a71b1 100644
--- a/core/src/main/resources/logic.properties
+++ b/core/src/main/resources/logic.properties
@@ -15,3 +15,4 @@
 # specific language governing permissions and limitations
 # under the License.
 logicInvocationHandler=org.apache.syncope.core.logic.LogicInvocationHandler
+classPathScanImplementationLookup=org.apache.syncope.core.logic.init.ClassPathScanImplementationLookup
diff --git a/core/src/main/resources/mail.properties b/core/src/main/resources/mail.properties
index 12f04e7..7a6653e 100644
--- a/core/src/main/resources/mail.properties
+++ b/core/src/main/resources/mail.properties
@@ -14,7 +14,6 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-templates.directory=${conf.directory}
 smtpHost=none.syncope.apache.org
 smtpPort=25
 smtpUser=
diff --git a/core/src/main/resources/mailTemplates/confirmPasswordReset.txt.vm b/core/src/main/resources/mailTemplates/confirmPasswordReset.txt.vm
deleted file mode 100644
index 33f75dc..0000000
--- a/core/src/main/resources/mailTemplates/confirmPasswordReset.txt.vm
+++ /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.
-Hi,
-we are happy to inform you that the password request was execute successfully for your account.
-
-Best regards.
\ No newline at end of file
diff --git a/core/src/main/resources/mailTemplates/optin.html.vm b/core/src/main/resources/mailTemplates/optin.html.vm
deleted file mode 100644
index 3f36035..0000000
--- a/core/src/main/resources/mailTemplates/optin.html.vm
+++ /dev/null
@@ -1,72 +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>
-<body>
-<h3>Hi $user.getPlainAttrMap().get("firstname").getValues().get(0) $user.getPlainAttrMap().get("surname").getValues().get(0), welcome to Syncope!</h3>
-
-<p>
-   Your username is $user.getUsername().<br/>
-   Your email address is $user.getPlainAttrMap().get("email").getValues().get(0).
-   Your email address inside a <a href="http://localhost/?email=$esc.url($user.getPlainAttrMap().get("email").getValues().get(0))">link</a>.
-</p>
-
-<p>
-    This message was sent to the following recipients:
-<ul>
-#foreach($recipient in $recipients)
-  <li>$recipient.getPlainAttrMap().get("email").getValues().get(0)</li>
-#end
-</ul>
-
-because one of the following events occurred:
-<ul>
-#foreach($event in $events)
-  <li>$event</i>
-#end
-</ul>
-</p>
-
-#if(!$user.getMemberships().isEmpty())
-You have been provided with the following groups:
-<ul>
-#foreach($membership in $user.getMemberships())
-  <li>$membership.groupName</i>
-#end
-</ul>
-#end
-
-#if(${output.class.simpleName} == "TaskExec")
-Below you can read execution details of task $output.getTask().getClass().getSimpleName(), id $output.getId().
-Task Details:
-<ul>
-<li>
-START DATE:&nbsp$output.getStartDate()
-</li>
-<li>
-MESSAGE:<br/>
-$output.getMessage()
-</li>
-<li>
-END DATE:&nbsp$output.getEndDate()
-</li>
-</ul>
-#end
-
-</body>
-</html>
diff --git a/core/src/main/resources/mailTemplates/optin.txt.vm b/core/src/main/resources/mailTemplates/optin.txt.vm
deleted file mode 100644
index c2b211e..0000000
--- a/core/src/main/resources/mailTemplates/optin.txt.vm
+++ /dev/null
@@ -1,51 +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.
-Hi $user.getPlainAttrMap().get("firstname").getValues().get(0) $user.getPlainAttrMap().get("surname").getValues().get(0), welcome to Syncope!
-
-Your username is $user.getUsername().
-Your email address is $user.getPlainAttrMap().get("email").getValues().get(0).
-Your email address inside a link: http://localhost/?email=$esc.url($user.getPlainAttrMap().get("email").getValues().get(0)) .
-
-This message was sent to the following recipients:
-#foreach($recipient in $recipients)
-   * $recipient.getPlainAttrMap().get("surname").getValues().get(0)
-#end
-
-because one of the following events occurred:
-#foreach($event in $events)
-  * $event
-#end
-
-#if(!$user.getMemberships().isEmpty())
-You have been provided with the following groups:
-#foreach($membership in $user.getMemberships())
-  * $membership.groupName
-#end
-#end
-
-#if(${output.class.simpleName} == "TaskExec")
-Below you can read execution details of task $output.getTask().getClass().getSimpleName(), id $output.getId()
-
-Task Details:
-
-  * START DATE: $output.getStartDate() 
-
-  * MESSAGE:
-$output.getMessage()
-
-  * END DATE: $output.getEndDate()
-#end
diff --git a/core/src/main/resources/mailTemplates/requestPasswordReset.txt.vm b/core/src/main/resources/mailTemplates/requestPasswordReset.txt.vm
deleted file mode 100644
index 5ac028a..0000000
--- a/core/src/main/resources/mailTemplates/requestPasswordReset.txt.vm
+++ /dev/null
@@ -1,26 +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.
-Hi,
-a password reset was request for $user.getUsername().
-
-In order to complete this request, you need to visit this link:
-
-http://localhost:9080/syncope-console/?pwdResetToken=$input.get(0)
-
-If you did not request this reset, just ignore the present e-mail.
-
-Best regards.
\ No newline at end of file
diff --git a/core/src/main/resources/report/report2csv.xsl b/core/src/main/resources/persistence-enhance.xml
similarity index 61%
rename from core/src/main/resources/report/report2csv.xsl
rename to core/src/main/resources/persistence-enhance.xml
index 2036c68..1fbd550 100644
--- a/core/src/main/resources/report/report2csv.xsl
+++ b/core/src/main/resources/persistence-enhance.xml
@@ -17,20 +17,15 @@
 specific language governing permissions and limitations
 under the License.
 -->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                version="1.0">
-
-  <xsl:import href="userReportlet2csv.xsl"/>
-  <xsl:import href="groupReportlet2csv.xsl"/>
-  <xsl:import href="staticReportlet2csv.xsl"/>
- 
-  <xsl:param name="status"/>
-  <xsl:param name="message"/>
-  <xsl:param name="start"/>
-  <xsl:param name="end"/>
-    
-  <xsl:template match="/">
-    <xsl:apply-templates/>
-  </xsl:template>
-
-</xsl:stylesheet>
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
+                                 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
+             version="2.0">
+  
+  <persistence-unit name="Master">
+    <mapping-file>META-INF/spring-orm.xml</mapping-file>
+    <validation-mode>NONE</validation-mode>
+  </persistence-unit>
+  
+</persistence>
diff --git a/core/src/main/resources/report/groupReportlet2csv.xsl b/core/src/main/resources/report/groupReportlet2csv.xsl
deleted file mode 100644
index 86fe635..0000000
--- a/core/src/main/resources/report/groupReportlet2csv.xsl
+++ /dev/null
@@ -1,106 +0,0 @@
-<?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.
--->
-  
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                version="1.0">
-
-  <xsl:variable name="delimiter" select="';'"/>
-  
-  <xsl:template match="reportlet[@class='org.apache.syncope.core.report.GroupReportlet']">
-    
-    <xsl:call-template name="header">
-      <xsl:with-param name="node" select="configurations/groupAttributes"/>
-    </xsl:call-template>
-    <xsl:for-each select="group">
-      <xsl:call-template name="groupAttributes">
-        <xsl:with-param name="header" select="../configurations/groupAttributes"/>
-        <xsl:with-param name="attrs" select="."/>
-      </xsl:call-template>
-      <xsl:text>&#10;</xsl:text>
-    </xsl:for-each>
-  </xsl:template>
-  
-  <xsl:template name="header">
-    <xsl:param name="node"/>  
-    <xsl:for-each select="$node/*">
-      <xsl:value-of select="text()"/>   
-      <xsl:if test="position() != last()">
-        <xsl:value-of select="$delimiter"/>
-      </xsl:if>
-    </xsl:for-each>
-    <xsl:text>&#10;</xsl:text>
-  </xsl:template>
-    
-  <xsl:template name="groupAttributes">
-    <xsl:param name="header"/>
-    <xsl:param name="attrs"/>
-    
-    <xsl:for-each select="$header/*">
-      <xsl:variable name="nameAttr" select="text()"/>
-      
-      <xsl:choose> 
-        <xsl:when test="string-length($attrs/@*[name()=$nameAttr]) &gt; 0">
-          <xsl:variable name="groupAttr" select="$attrs/@*[name()=$nameAttr]"/>
-          <xsl:text>"</xsl:text>
-          <xsl:value-of select="$groupAttr/."/>
-          <xsl:text>"</xsl:text>
-        </xsl:when>
-        <xsl:when test="name($attrs/*[name(.)=$nameAttr]/*[name(.)='resource']) 
-                        and count($attrs/*[name(.)=$nameAttr]/node()) &gt; 0">
-          <xsl:text>"</xsl:text>       
-          <xsl:for-each select="$attrs/*/resource">
-            <xsl:variable name="value" select="@name"/>
-            <xsl:value-of select="$value"/>
-            <xsl:if test="position() != last()">
-              <xsl:value-of select="$delimiter"/>
-            </xsl:if>
-          </xsl:for-each>
-          <xsl:text>"</xsl:text>
-        </xsl:when>
-        <xsl:when test="name($attrs/*[name(.)=$nameAttr]/*[name(.)='user']) 
-                        and count($attrs/*[name(.)=$nameAttr]/node()) &gt; 0">
-          <xsl:text>"</xsl:text>       
-          <xsl:for-each select="$attrs/*/user">
-            <xsl:variable name="value" select="@userUsername"/>
-            <xsl:value-of select="$value"/>
-            <xsl:if test="position() != last()">
-              <xsl:value-of select="$delimiter"/>
-            </xsl:if>
-          </xsl:for-each>
-          <xsl:text>"</xsl:text>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:text>"</xsl:text>
-          <xsl:if test="string-length($attrs/*/*[@name=$nameAttr]/value/text()) &gt; 0"> 
-            <xsl:variable name="value" select="$attrs/*/*[@name=$nameAttr]/value/text()"/>
-            <xsl:value-of select="$value"/>
-          </xsl:if>
-          <xsl:text>"</xsl:text>
-        </xsl:otherwise>
-      </xsl:choose>
-      <xsl:if test="position() != last()">
-        <xsl:value-of select="$delimiter"/>
-      </xsl:if>
-    
-    </xsl:for-each>
-  </xsl:template>
-  
-</xsl:stylesheet>
-
diff --git a/core/src/main/resources/report/groupReportlet2fo.xsl b/core/src/main/resources/report/groupReportlet2fo.xsl
deleted file mode 100644
index e95d170..0000000
--- a/core/src/main/resources/report/groupReportlet2fo.xsl
+++ /dev/null
@@ -1,185 +0,0 @@
-<?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.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns:fo="http://www.w3.org/1999/XSL/Format"
-                version="1.0">
-
-  <xsl:template match="reportlet[@class='org.apache.syncope.core.report.GroupReportlet']">
-   
-    <fo:block font-size="16pt" font-weight="bold" space-after="0.5cm" space-before="5mm">Reportlet: <xsl:value-of select="@name"/></fo:block>
-        
-    <xsl:for-each select="group">
-      <fo:block font-size="14pt" font-weight="bold" space-before="15mm" space-after="5mm" background-color="(#8888ff)">Group <xsl:value-of select="@name"/></fo:block>
-      <fo:table table-layout="fixed" space-after="7mm">
-        <fo:table-column/>
-        <fo:table-column/>
-        <fo:table-body>
-          <fo:table-row background-color="(#ccccff)">
-            <fo:table-cell>
-              <fo:block>Id:</fo:block>
-            </fo:table-cell>
-            <fo:table-cell>
-              <fo:block font-style="italic">
-                <xsl:value-of select="@id"/>
-              </fo:block>
-            </fo:table-cell>
-          </fo:table-row>
-          <xsl:if test="@groupOwner != 'null'">
-            <fo:table-row background-color="(#ccccff)">
-              <fo:table-cell>
-                <fo:block>Group Owner:</fo:block>
-              </fo:table-cell>
-              <fo:table-cell>
-                <fo:block font-style="italic">
-                  <xsl:value-of select="@groupOwner"/>
-                </fo:block>
-              </fo:table-cell>
-            </fo:table-row>
-          </xsl:if>
-          <xsl:if test="@userOwner != 'null'">
-            <fo:table-row background-color="(#ccccff)">
-              <fo:table-cell>
-                <fo:block>Last Login Date:</fo:block>
-              </fo:table-cell>
-              <fo:table-cell>
-                <fo:block font-style="italic">
-                  <xsl:value-of select="@userOwner"/>
-                </fo:block>
-              </fo:table-cell>
-            </fo:table-row>
-          </xsl:if>
-        </fo:table-body>
-      </fo:table>
-      <xsl:choose>
-        <xsl:when test="string-length(attributes/attribute) &gt; 0">
-          <xsl:call-template name="attributes">
-            <xsl:with-param name="label">Attributes</xsl:with-param>
-            <xsl:with-param name="node" select="attributes/attribute"/>
-          </xsl:call-template>
-        </xsl:when>
-        <xsl:otherwise>
-          <fo:block color="red" font-size="9pt" space-after="3mm">THIS GROUP HASN'T ANY ATTRIBUTE</fo:block>
-        </xsl:otherwise>
-      </xsl:choose>
-      
-      <xsl:choose>
-        <xsl:when test="string-length(derivedAttributes/derivedAttribute) &gt; 0">
-          <xsl:call-template name="attributes">
-            <xsl:with-param name="label">Derived Attributes</xsl:with-param>
-            <xsl:with-param name="node" select="derivedAttributes/derivedAttribute"/>
-          </xsl:call-template>
-        </xsl:when>
-        <xsl:otherwise>
-          <fo:block color="red" font-size="9pt" space-after="3mm">THIS GROUP HASN'T ANY DERIVED ATTRIBUTE</fo:block>
-        </xsl:otherwise>
-      </xsl:choose>
-      <xsl:choose>
-        <xsl:when test="string-length(virtualAttributes/virtualAttribute) &gt; 0">
-          <xsl:call-template name="attributes">
-            <xsl:with-param name="label">Virtual Attributes</xsl:with-param>
-            <xsl:with-param name="node" select="virtualAttributes/virtualAttribute"/>
-          </xsl:call-template>
-        </xsl:when>
-        <xsl:otherwise>
-          <fo:block color="red" font-size="9pt" space-after="3mm">THIS GROUP HASN'T ANY VIRTUAL ATTRIBUTE</fo:block>
-        </xsl:otherwise>
-      </xsl:choose>
-      
-      <xsl:choose>
-        <xsl:when test="users/user">
-          <fo:block font-size="11pt" font-weight="bold">Users</fo:block>
-          <xsl:for-each select="users/user">
-            <fo:block background-color="(#ccccff)" font-size="9pt" font-weight="bold" space-before="4mm">User: <xsl:value-of select="@userUsername"/> (Id: <xsl:value-of select="@userId"/>)</fo:block>
-                 
-          </xsl:for-each> 
-        </xsl:when>
-        <xsl:otherwise>
-          <fo:block color="red" font-size="9pt" space-after="3mm">THIS GROUP HASN'T ANY USER ASSIGNED TO</fo:block>
-        </xsl:otherwise>
-      </xsl:choose>
-      <xsl:call-template name="groupResources">
-        <xsl:with-param name="node" select="resources/resource"/>
-      </xsl:call-template>
-    </xsl:for-each>
-
-  </xsl:template>
-  
-  <xsl:template name="attributes">
-    <xsl:param name="label"/>
-    <xsl:param name="node"/>
-    <fo:block font-size="11pt" font-weight="bold" space-after="2mm">
-      <xsl:value-of select="$label"/>
-    </fo:block>
-    <fo:table table-layout="fixed" space-after="7mm">
-      <fo:table-column/>
-      <fo:table-column/>
-      <fo:table-header>
-        <fo:table-row height="7mm" background-color="(#ccccba)">
-          <fo:table-cell>
-            <fo:block font-weight="bold">Schema name</fo:block>
-          </fo:table-cell>
-          <fo:table-cell>
-            <fo:block font-weight="bold">Value(s)</fo:block>
-          </fo:table-cell>
-        </fo:table-row>
-      </fo:table-header>
-      <fo:table-body>
-        <xsl:for-each select="$node">
-          <xsl:if test="string-length(value/text()) &gt; 0">
-            <fo:table-row height="4mm" background-color="(#ccccff)">
-              <fo:table-cell>
-                <fo:block>
-                  <xsl:value-of select="@name"/>
-                </fo:block>
-              </fo:table-cell>
-              <fo:table-cell>
-                <xsl:for-each select="value">
-                  <fo:block></fo:block><!--                        <fo:block>&#x2022;</fo:block>-->
-                  <fo:block font-style="italic">
-                    <xsl:value-of select="text()"/>
-                  </fo:block>
-                </xsl:for-each>
-              </fo:table-cell>
-            </fo:table-row>
-          </xsl:if>
-          <fo:table-row>
-            <fo:table-cell>
-              <fo:block></fo:block>
-            </fo:table-cell>
-            <fo:table-cell>
-              <fo:block></fo:block>
-            </fo:table-cell>
-          </fo:table-row>
-        </xsl:for-each>
-      </fo:table-body>
-    </fo:table>
-  </xsl:template>
-  
-  <xsl:template name="groupResources">
-    <xsl:param name="node"/>
-    <fo:block font-size="11pt" font-weight="bold" space-after="3mm" space-before="5mm">Group Resources</fo:block>
-    <xsl:for-each select="$node">
-      <fo:block></fo:block> <!--            <fo:block>&#x2022;</fo:block>-->
-      <fo:block background-color="(#ccccff)">
-        <xsl:value-of select="@name"/>
-      </fo:block>
-    </xsl:for-each>
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/core/src/main/resources/report/groupReportlet2html.xsl b/core/src/main/resources/report/groupReportlet2html.xsl
deleted file mode 100644
index 7e2a52f..0000000
--- a/core/src/main/resources/report/groupReportlet2html.xsl
+++ /dev/null
@@ -1,160 +0,0 @@
-<?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.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                version="1.0">
-
-  <xsl:template match="reportlet[@class='org.apache.syncope.core.report.GroupReportlet']">
-    <h2>Reportlet: <xsl:value-of select="@name"/></h2>
-    <xsl:for-each select="group">
-      <h3>Group <xsl:value-of select="@name"/></h3>
-      
-      <table style="border: 1px solid black;">
-        <tr>
-          <td>Id:</td>
-          <td>
-            <xsl:value-of select="@id"/>
-          </td>
-        </tr>
-        <xsl:if test="@groupOwner != 'null'"> <!--!= null test="not(USER/FIRSTNAME)" -->
-          <tr>
-            <td>Group Owner:</td>
-            <td>
-              <xsl:value-of select="@groupOwner"/>
-            </td>
-          </tr>
-        </xsl:if>
-        <xsl:if test="@userOwner != 'null'">
-          <tr>
-            <td>User Owner:</td>
-            <td>
-              <xsl:value-of select="@userOwner"/>
-            </td>
-          </tr>
-        </xsl:if>
-        
-      </table>
-
-      <xsl:choose>
-        <xsl:when test="string-length(attributes/attribute) &gt; 0">
-          <xsl:call-template name="attributes">
-            <xsl:with-param name="label">Attributes</xsl:with-param>
-            <xsl:with-param name="node" select="attributes/attribute"/>
-          </xsl:call-template>
-        </xsl:when>
-        <xsl:otherwise>
-          <h5>THIS GROUP HASN'T ANY ATTRIBUTE</h5>
-        </xsl:otherwise>
-      </xsl:choose>
-
-      <xsl:choose>
-        <xsl:when test="string-length(derivedAttributes/derivedAttribute) &gt; 0">
-          <xsl:call-template name="attributes">
-            <xsl:with-param name="label">Derived Attributes</xsl:with-param>
-            <xsl:with-param name="node" select="derivedAttributes/derivedAttribute"/>
-          </xsl:call-template>
-        </xsl:when>
-        <xsl:otherwise>
-          <h5>THIS GROUP HASN'T ANY DERIVED ATTRIBUTE</h5>
-        </xsl:otherwise>
-      </xsl:choose>
-      <!--</xsl:if>-->
-      <xsl:choose>
-        <xsl:when test="string-length(virtualAttributes/virtualAttribute) &gt; 0">
-          <xsl:call-template name="attributes">
-            <xsl:with-param name="label">Virtual Attributes</xsl:with-param>
-            <xsl:with-param name="node" select="virtualAttributes/virtualAttribute"/>
-          </xsl:call-template>
-        </xsl:when>
-        <xsl:otherwise>
-          <h5>THIS GROUP HASN'T ANY VIRTUAL ATTRIBUTE</h5>
-        </xsl:otherwise>
-      </xsl:choose>
-      
-      <xsl:choose>
-        <xsl:when test="users/user">
-          <h4>Users</h4>
-          <xsl:for-each select="users/user">
-            <h5>User: <xsl:value-of select="@userUsername"/> (Id: <xsl:value-of select="@userId"/>)</h5>
-          </xsl:for-each>
-        </xsl:when>
-        <xsl:otherwise>
-          <h5>THIS GROUP HASN'T ANY USER ASSIGNED TO</h5>
-        </xsl:otherwise>
-      </xsl:choose>
-      
-      <xsl:call-template name="groupResources">
-        <xsl:with-param name="node" select="resources/resource"/>
-      </xsl:call-template>
-      <hr/>
-      
-    </xsl:for-each>
-  </xsl:template>
-
-  <xsl:template name="attributes">
-    <xsl:param name="label"/>
-    <xsl:param name="node"/>
-
-    <h4>
-      <xsl:value-of select="$label"/>
-    </h4>
-    
-    <table>
-      <thead>
-        <tr>
-          <th>Schema name</th>
-          <th>Value(s)</th>
-        </tr>
-      </thead>
-      <tbody>
-        <xsl:for-each select="$node">
-          <xsl:if test="string-length(value/text()) &gt; 0">
-            <tr>
-              <td>
-                <xsl:value-of select="@name"/>
-              </td>
-              <td>
-                <ul>
-                  <xsl:for-each select="value">
-                    <li>
-                      <xsl:value-of select="text()"/>
-                    </li>
-                  </xsl:for-each>
-                </ul>
-              </td>
-            </tr>
-          </xsl:if>
-        </xsl:for-each>
-      </tbody>
-    </table>
-  </xsl:template>
-
-  <xsl:template name="groupResources">
-    <xsl:param name="node"/>
-    
-    <h4>Group Resources</h4>
-    <ul>
-      <xsl:for-each select="$node">
-        <li>
-          <xsl:value-of select="@name"/>
-        </li>
-      </xsl:for-each>
-    </ul>
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/core/src/main/resources/report/report2fo.xsl b/core/src/main/resources/report/report2fo.xsl
deleted file mode 100644
index 2ad86cc..0000000
--- a/core/src/main/resources/report/report2fo.xsl
+++ /dev/null
@@ -1,97 +0,0 @@
-<?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.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns:fo="http://www.w3.org/1999/XSL/Format"
-                version="1.0">
-
-  <xsl:import href="userReportlet2fo.xsl"/>
-  <xsl:import href="groupReportlet2fo.xsl"/>
-  <xsl:import href="staticReportlet2fo.xsl"/>
- 
-  <xsl:param name="status"/>
-  <xsl:param name="message"/>
-  <xsl:param name="start"/>
-  <xsl:param name="end"/>
-  
-  <xsl:template match="/">
-    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="Helvetica" font-size="10pt">
-      
-      <!-- defines the layout master -->
-      <fo:layout-master-set>
-        <fo:simple-page-master master-name="first" page-height="29.7cm" page-width="21cm" 
-                               margin-top="1cm" margin-bottom="2cm" margin-left="2.5cm" margin-right="2.5cm">
-          <fo:region-body margin-top="1cm"/>
-          <fo:region-before extent="1cm"/>
-          <fo:region-after extent="1.5cm"/>
-        </fo:simple-page-master>
-      </fo:layout-master-set>
-
-      <!-- starts actual layout -->
-      <fo:page-sequence master-reference="first">
-	
-        <fo:flow flow-name="xsl-region-body">
-          <fo:block font-size="24pt" font-weight="bold" text-align="center" space-after="1cm">
-            Apache Syncope Report - <xsl:value-of select="report/@name"/>
-          </fo:block>
-
-          <fo:table table-layout="fixed" border-width="0.5mm" border-style="solid" width="100%" space-after="1cm">
-            <fo:table-column column-width="proportional-column-width(1)"/>
-            <fo:table-column column-width="proportional-column-width(1)"/>
-            <fo:table-body>
-              <fo:table-row>
-                <fo:table-cell>
-                  <fo:block font-size="18pt" font-weight="bold">Report Name:</fo:block>
-                </fo:table-cell>
-                <fo:table-cell>
-                  <fo:block font-size="18pt" font-weight="bold">
-                    <xsl:value-of select="report/@name"/>
-                  </fo:block>
-                </fo:table-cell>
-              </fo:table-row>
-              <fo:table-row>
-                <fo:table-cell>
-                  <fo:block font-size="18pt" font-weight="bold">Start Date:</fo:block>
-                </fo:table-cell>
-                <fo:table-cell>
-                  <fo:block font-size="18pt" font-weight="bold">
-                    <xsl:value-of select="$start"/>
-                  </fo:block>
-                </fo:table-cell>
-              </fo:table-row>
-              <fo:table-row>
-                <fo:table-cell>
-                  <fo:block font-size="18pt" font-weight="bold">End Date:</fo:block>
-                </fo:table-cell>
-                <fo:table-cell>
-                  <fo:block font-size="18pt" font-weight="bold">
-                    <xsl:value-of select="$end"/>
-                  </fo:block>
-                </fo:table-cell>
-              </fo:table-row>
-            </fo:table-body>
-          </fo:table>
-
-          <xsl:apply-templates/>
-        </fo:flow>
-      </fo:page-sequence>
-    </fo:root>
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/core/src/main/resources/report/report2html.xsl b/core/src/main/resources/report/report2html.xsl
deleted file mode 100644
index 920a4f9..0000000
--- a/core/src/main/resources/report/report2html.xsl
+++ /dev/null
@@ -1,77 +0,0 @@
-<?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.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                version="1.0">
-
-  <xsl:import href="userReportlet2html.xsl"/>
-  <xsl:import href="groupReportlet2html.xsl"/>
-  <xsl:import href="staticReportlet2html.xsl"/>
- 
-  <xsl:param name="status"/>
-  <xsl:param name="message"/>
-  <xsl:param name="start"/>
-  <xsl:param name="end"/>
-  
-  <xsl:template match="/">
-    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-      <head>
-        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
-        <title>Apache Syncope Report - <xsl:value-of select="report/@name"/></title>
-      </head>
-      <body>
-        <table style="border: 1px solid black;">
-          <tr>
-            <td>
-              <h1>Report Name:</h1>
-            </td>
-            <td>
-              <h1>
-                <xsl:value-of select="report/@name"/>
-              </h1>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <h2>Start Date:</h2>
-            </td>
-            <td>
-              <h2>
-                <xsl:value-of select="$start"/>
-              </h2>
-            </td>
-          </tr>
-          <tr>
-            <td>
-              <h2>End Date:</h2>
-            </td>
-            <td>
-              <h2>
-                <xsl:value-of select="$end"/>
-              </h2>
-            </td>
-          </tr>
-        </table>
-
-        <xsl:apply-templates/>
-      </body>
-    </html>
-  </xsl:template>
-
-</xsl:stylesheet>
diff --git a/core/src/main/resources/report/staticReportlet2csv.xsl b/core/src/main/resources/report/staticReportlet2csv.xsl
deleted file mode 100644
index 90879d9..0000000
--- a/core/src/main/resources/report/staticReportlet2csv.xsl
+++ /dev/null
@@ -1,81 +0,0 @@
-<?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.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-  <xsl:variable name="delimiter" select="';'"/>
-   
-  <xsl:template match="reportlet[@class='org.apache.syncope.core.report.StaticReportlet']">
-    <xsl:call-template name="header">
-      <xsl:with-param name="node" select="configurations/staticAttributes"/>
-    </xsl:call-template>
-    
-    <xsl:call-template name="staticAttributes">
-      <xsl:with-param name="header" select="configurations/staticAttributes"/>
-    </xsl:call-template>
-  </xsl:template>
-  
-  <xsl:template name="header">
-    <xsl:param name="node"/>  
-    <xsl:for-each select="$node/*">
-      <xsl:text>"</xsl:text>
-      <xsl:value-of select="text()"/>
-      <xsl:text>"</xsl:text> 
-      <xsl:if test="position() != last()">
-        <xsl:value-of select="$delimiter"/>
-      </xsl:if>
-    </xsl:for-each>
-    <xsl:text>&#10;</xsl:text>
-  </xsl:template>
-    
-  <xsl:template name="staticAttributes">
-    <xsl:param name="header"/>
-    
-    <xsl:variable name="attrs" select="."/>
-    <xsl:for-each select="$header/*">
-      <xsl:variable name="nameAttr" select="text()"/> 
-      <xsl:if test="string-length($attrs/*[name(.)=$nameAttr]/text()) &gt; 0 
-                      and count($attrs/*[name(.)=$nameAttr]/*/node()) = 0">
-        <xsl:variable name="value" select="$attrs/*[name(.)=$nameAttr]/text()"/>
-        <xsl:text>"</xsl:text>
-        <xsl:value-of select="$value"/>
-        <xsl:text>"</xsl:text>
-      </xsl:if>
-      
-      <xsl:if test="string-length($attrs/*[name(.)=$nameAttr]/*/text()) &gt; 0 
-                      and count($attrs/*[name(.)=$nameAttr]/*/node()) &gt; 0">
-        <xsl:text>"</xsl:text>
-        <xsl:for-each select="$attrs/*[name(.)=$nameAttr]/*">
-          <xsl:variable name="value" select="text()"/>
-          <xsl:text></xsl:text>
-          <xsl:value-of select="$value"/>
-          <xsl:if test="position() != last()">
-            <xsl:value-of select="$delimiter"/>
-          </xsl:if>
-        </xsl:for-each>
-        <xsl:text>"</xsl:text>
-      </xsl:if>
-      
-      <xsl:if test="position() != last()">
-        <xsl:value-of select="$delimiter"/>
-      </xsl:if>
-    
-    </xsl:for-each>
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/core/src/main/resources/report/staticReportlet2fo.xsl b/core/src/main/resources/report/staticReportlet2fo.xsl
deleted file mode 100644
index c123d51..0000000
--- a/core/src/main/resources/report/staticReportlet2fo.xsl
+++ /dev/null
@@ -1,84 +0,0 @@
-<?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.
-
--->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns:fo="http://www.w3.org/1999/XSL/Format"
-                version="1.0">
-
-  <xsl:template match="reportlet[@class='org.apache.syncope.core.report.StaticReportlet']">
-
-    <fo:block font-size="14pt" font-weight="bold" space-after="0.5cm">Reportlet: 
-      <xsl:value-of select="@name"/>
-    </fo:block>
-
-    <xsl:if test="string-length(string/text()) &gt; 0">
-      <fo:block font-size="11pt">String value: 
-        <xsl:value-of select="string/text()"/>
-      </fo:block>
-    </xsl:if>
-
-    <xsl:if test="string-length(long/text()) &gt; 0">
-      <fo:block font-size="11pt">Long value: 
-        <xsl:value-of select="long/text()"/>
-      </fo:block>
-    </xsl:if>
-
-    <xsl:if test="string-length(double/text()) &gt; 0">
-      <fo:block font-size="11pt">Double value: 
-        <xsl:value-of select="double/text()"/>
-      </fo:block>
-    </xsl:if>
-
-    <xsl:if test="string-length(date/text()) &gt; 0">
-      <fo:block font-size="11pt">Date value: 
-        <xsl:value-of select="date/text()"/>
-      </fo:block>
-    </xsl:if>
-
-    <xsl:if test="string-length(enum/text()) &gt; 0">
-      <fo:block font-size="11pt">Enum value: 
-        <xsl:value-of select="enum/text()"/>
-      </fo:block>
-    </xsl:if>
-
-    <xsl:if test="string-length(list) &gt; 0">
-      <fo:block font-size="11pt">List values:</fo:block>
-            
-      <fo:list-block provisional-label-separation="4mm" provisional-distance-between-starts="2mm">
-        <xsl:for-each select="list/string">
-          <xsl:if test="string-length(string/text()) &gt; 0">
-            <fo:list-item>
-              <fo:list-item-label end-indent="label-end()">
-                <fo:block>&#x2022;</fo:block>
-              </fo:list-item-label>
-              <fo:list-item-body start-indent="body-start()">
-                <fo:block>
-                  <xsl:value-of select="text()"/>
-                </fo:block>
-              </fo:list-item-body>
-            </fo:list-item>
-          </xsl:if>
-        </xsl:for-each>
-      </fo:list-block>
-    </xsl:if>
-        
-  </xsl:template>
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/core/src/main/resources/report/staticReportlet2html.xsl b/core/src/main/resources/report/staticReportlet2html.xsl
deleted file mode 100644
index da0ba85..0000000
--- a/core/src/main/resources/report/staticReportlet2html.xsl
+++ /dev/null
@@ -1,74 +0,0 @@
-<?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.
-
--->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                version="1.0">
-
-  <xsl:template match="reportlet[@class='org.apache.syncope.core.report.StaticReportlet']">
-    <h2>Reportlet: 
-      <xsl:value-of select="@name"/>
-    </h2>
-        
-    <xsl:if test="string-length(string/text()) &gt; 0">
-      <p>String value:                 
-        <xsl:value-of select="string/text()"/>
-      </p>
-    </xsl:if>
-
-    <xsl:if test="string-length(long/text()) &gt; 0">
-      <p>Long value: 
-        <xsl:value-of select="long/text()"/>
-      </p>
-    </xsl:if>
-
-    <xsl:if test="string-length(double/text()) &gt; 0">
-      <p>Double value: 
-        <xsl:value-of select="double/text()"/>
-      </p>
-    </xsl:if>
-
-    <xsl:if test="string-length(date/text()) &gt; 0">
-      <p>Date value: 
-        <xsl:value-of select="date/text()"/>
-      </p>
-    </xsl:if>
-
-    <xsl:if test="string-length(enum/text()) &gt; 0">
-      <p>Enum value: 
-        <xsl:value-of select="enum/text()"/>
-      </p>
-    </xsl:if>
-
-    <xsl:if test="string-length(list) &gt; 0">
-      <p>List values:</p>
-            
-      <ul>
-        <xsl:for-each select="list/string">
-          <xsl:if test="string-length(string/text()) &gt; 0">
-            <li>
-              <xsl:value-of select="text()"/>
-            </li>
-          </xsl:if>
-        </xsl:for-each>
-      </ul>
-    </xsl:if>
-  </xsl:template>
-</xsl:stylesheet>
\ No newline at end of file
diff --git a/core/src/main/resources/report/userReportlet2csv.xsl b/core/src/main/resources/report/userReportlet2csv.xsl
deleted file mode 100644
index 8fd9f51..0000000
--- a/core/src/main/resources/report/userReportlet2csv.xsl
+++ /dev/null
@@ -1,119 +0,0 @@
-<?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.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                version="1.0">
-
-  <xsl:variable name="delimiter" select="';'"/>
-  
-  <xsl:template match="reportlet[@class='org.apache.syncope.core.report.UserReportlet']">
-    
-    <xsl:call-template name="header">
-      <xsl:with-param name="node" select="configurations/userAttributes"/>
-    </xsl:call-template>
-    <xsl:for-each select="user">
-      <xsl:call-template name="userAttributes">
-        <xsl:with-param name="header" select="../configurations/userAttributes"/>
-      </xsl:call-template>
-      <xsl:text>&#10;</xsl:text>
-    </xsl:for-each>
-  </xsl:template>
-  
-  <xsl:template name="header">
-    <xsl:param name="node"/>  
-    <xsl:for-each select="$node/*">
-      <xsl:text>"</xsl:text>
-      <xsl:value-of select="text()"/>   
-      <xsl:text>"</xsl:text>
-      <xsl:if test="position() != last()">
-        <xsl:value-of select="$delimiter"/>
-      </xsl:if>
-    </xsl:for-each>
-    <xsl:text>&#10;</xsl:text>
-  </xsl:template>
-    
-  <xsl:template name="userAttributes">
-    <xsl:param name="header"/>
-  
-    <xsl:variable name="attrs" select="."/>
-    <xsl:for-each select="$header/*">
-      <xsl:variable name="nameAttr" select="text()"/>
-      <xsl:choose>      
-        <xsl:when test="count($attrs/@*[name()=$nameAttr]) &gt; 0">
-          <xsl:variable name="userAttr" select="$attrs/@*[name()=$nameAttr]"/>
-          <xsl:text>"</xsl:text>
-          <xsl:value-of select="$userAttr/."/>
-          <xsl:text>"</xsl:text>
-        </xsl:when>
-        <xsl:when test="string-length($attrs/*/*[@name=$nameAttr]/value/text()) &gt; 0 
-                        and count($attrs/*/*[@name=$nameAttr]/node()) = 0">
-          <xsl:variable name="value" select="$attrs/*/*[@name=$nameAttr]/value/text()"/>
-          <xsl:text>"</xsl:text>
-          <xsl:value-of select="$value"/>
-          <xsl:text>"</xsl:text>
-        </xsl:when>
-        <xsl:when test="string-length($attrs/*/*[@name=$nameAttr]/value/text()) &gt; 0 
-                        and count($attrs/*/*[@name=$nameAttr]/node()) &gt; 0">
-          <xsl:text>"</xsl:text>
-          <xsl:for-each select="$attrs/*/*[@name=$nameAttr]/*">
-            <xsl:variable name="value" select="$attrs/*/*[@name=$nameAttr]/value/text()"/>
-            <xsl:value-of select="$value"/>
-            <xsl:if test="position() != last()">
-              <xsl:value-of select="$delimiter"/>
-            </xsl:if>
-          </xsl:for-each>
-          <xsl:text>"</xsl:text>
-        </xsl:when>
-        <xsl:when test="name($attrs/*[name(.)=$nameAttr]/*[name(.)='membership']) 
-                        and count($attrs/*[name(.)=$nameAttr]/node()) &gt; 0">
-          <xsl:text>"</xsl:text>       
-          <xsl:variable name="value" select="@groupName"/>
-          <xsl:for-each select="$attrs/*/membership">
-            <xsl:variable name="value" select="@groupName"/>
-            <xsl:value-of select="$value"/>
-            <xsl:if test="position() != last()">
-              <xsl:value-of select="$delimiter"/>
-            </xsl:if>
-          </xsl:for-each>
-          <xsl:text>"</xsl:text>
-        </xsl:when>
-        <xsl:when test="name($attrs/*[name(.)=$nameAttr]/*[name(.)='resource']) 
-                        and count($attrs/*[name(.)=$nameAttr]/node()) &gt; 0">
-          <xsl:text>"</xsl:text>
-          <xsl:variable name="value" select="@name"/>
-          <xsl:for-each select="$attrs/*/resource">
-            <xsl:variable name="value" select="@name"/>
-            <xsl:value-of select="$value"/>
-            <xsl:if test="position() != last()">
-              <xsl:value-of select="$delimiter"/>
-            </xsl:if>
-          </xsl:for-each>
-          <xsl:text>"</xsl:text>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:text>""</xsl:text> 
-        </xsl:otherwise>  
-      </xsl:choose>
-      <xsl:if test="position() != last()">
-        <xsl:value-of select="$delimiter"/>
-      </xsl:if>  
-    </xsl:for-each>
-  </xsl:template>
-  
-</xsl:stylesheet>
diff --git a/core/src/main/resources/report/userReportlet2fo.xsl b/core/src/main/resources/report/userReportlet2fo.xsl
deleted file mode 100644
index 222229d..0000000
--- a/core/src/main/resources/report/userReportlet2fo.xsl
+++ /dev/null
@@ -1,247 +0,0 @@
-<?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.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns:fo="http://www.w3.org/1999/XSL/Format"
-                version="1.0">
-
-  <xsl:template match="reportlet[@class='org.apache.syncope.core.report.UserReportlet']">
-   
-    <fo:block font-size="16pt" font-weight="bold" space-after="0.5cm" space-before="5mm">Reportlet: <xsl:value-of select="@name"/></fo:block>
-        
-    <xsl:for-each select="user">
-      <fo:block font-size="14pt" font-weight="bold" space-before="15mm" space-after="5mm" background-color="(#8888ff)">User <xsl:value-of select="@username"/></fo:block>
-      <fo:table table-layout="fixed" space-after="7mm">
-        <fo:table-column/>
-        <fo:table-column/>
-        <fo:table-body>
-          <fo:table-row background-color="(#ccccff)">
-            <fo:table-cell>
-              <fo:block>Status:</fo:block>
-            </fo:table-cell>
-            <fo:table-cell>
-              <fo:block font-style="italic">
-                <xsl:value-of select="@status"/>
-              </fo:block>
-            </fo:table-cell>
-          </fo:table-row>
-          <xsl:if test="string-length(@creationDate) &gt; 0">
-            <fo:table-row background-color="(#ccccff)">
-              <fo:table-cell>
-                <fo:block>Creation Date:</fo:block>
-              </fo:table-cell>
-              <fo:table-cell>
-                <fo:block font-style="italic">
-                  <xsl:value-of select="@creationDate"/>
-                </fo:block>
-              </fo:table-cell>
-            </fo:table-row>
-          </xsl:if>
-          <xsl:if test="string-length(@lastLoginDate) &gt; 0">
-            <fo:table-row background-color="(#ccccff)">
-              <fo:table-cell>
-                <fo:block>Last Login Date:</fo:block>
-              </fo:table-cell>
-              <fo:table-cell>
-                <fo:block font-style="italic">
-                  <xsl:value-of select="@lastLoginDate"/>
-                </fo:block>
-              </fo:table-cell>
-            </fo:table-row>
-          </xsl:if>
-          <xsl:if test="string-length(@changePwdDate) &gt; 0">
-            <fo:table-row background-color="(#ccccff)">
-              <fo:table-cell>
-                <fo:block>Change Password Date:</fo:block>
-              </fo:table-cell>
-              <fo:table-cell>
-                <fo:block font-style="italic">
-                  <xsl:value-of select="@changePwdDate"/>
-                </fo:block>
-              </fo:table-cell>
-            </fo:table-row>
-          </xsl:if>
-          <xsl:if test="string-length(@passwordHistorySize) &gt; 0">
-            <fo:table-row background-color="(#ccccff)">
-              <fo:table-cell>
-                <fo:block>Password History Size:</fo:block>
-              </fo:table-cell>
-              <fo:table-cell>
-                <fo:block font-style="italic">
-                  <xsl:value-of select="@passwordHistorySize"/>
-                </fo:block>
-              </fo:table-cell>
-            </fo:table-row>
-          </xsl:if>
-          <xsl:if test="string-length(@failedLoginCount) &gt; 0">
-            <fo:table-row background-color="(#ccccff)">
-              <fo:table-cell>
-                <fo:block>Number of Failed Login Attempts:</fo:block>
-              </fo:table-cell>
-              <fo:table-cell>
-                <fo:block font-style="italic">
-                  <xsl:value-of select="@failedLoginCount"/>
-                </fo:block>
-              </fo:table-cell>
-            </fo:table-row>
-          </xsl:if>
-        </fo:table-body>
-      </fo:table>
-      <xsl:call-template name="attributes">
-        <xsl:with-param name="label">Attributes</xsl:with-param>
-        <xsl:with-param name="node" select="attributes/attribute"/>
-      </xsl:call-template>
-      <xsl:choose>
-        <xsl:when test="string-length(derivedAttributes/derivedAttribute) &gt; 0">
-          <xsl:call-template name="attributes">
-            <xsl:with-param name="label">Derived Attributes</xsl:with-param>
-            <xsl:with-param name="node" select="derivedAttributes/derivedAttribute"/>
-          </xsl:call-template>
-        </xsl:when>
-        <xsl:otherwise>
-          <fo:block color="red" font-size="9pt" space-after="3mm">THIS USER HASN'T ANY DERIVED ATTRIBUTE</fo:block>
-        </xsl:otherwise>
-      </xsl:choose>
-      <xsl:choose>
-        <xsl:when test="string-length(virtualAttributes/virtualAttribute) &gt; 0">
-          <xsl:call-template name="attributes">
-            <xsl:with-param name="label">Virtual Attributes</xsl:with-param>
-            <xsl:with-param name="node" select="virtualAttributes/virtualAttribute"/>
-          </xsl:call-template>
-        </xsl:when>
-        <xsl:otherwise>
-          <fo:block color="red" font-size="9pt" space-after="3mm">THIS USER HASN'T ANY VIRTUAL ATTRIBUTE</fo:block>
-        </xsl:otherwise>
-      </xsl:choose>
-      <xsl:choose>
-        <xsl:when test="string-length(memberships/membership) &gt; 0">
-          <fo:block font-size="11pt" font-weight="bold">Memberships</fo:block>
-          <xsl:for-each select="memberships/membership">
-            <fo:block font-size="10pt" font-weight="bold" space-before="2mm">Group: <xsl:value-of select="@groupName"/>(<xsl:value-of select="@groupId"/>)</fo:block>
-            <fo:block start-indent="1cm" space-before="3mm" space-after="0.5cm">
-              <xsl:choose>
-                <xsl:when test="string-length(attributes/attribute) &gt; 0">
-                  <xsl:call-template name="attributes">
-                    <xsl:with-param name="label">Attributes</xsl:with-param>
-                    <xsl:with-param name="node" select="attributes/attribute"/>
-                  </xsl:call-template>
-                </xsl:when>
-                <xsl:otherwise>
-                  <fo:block color="red" font-size="8pt" space-after="2mm">THIS GROUP HASN'T ANY ATTRIBUTE</fo:block>
-                </xsl:otherwise>
-              </xsl:choose>
-              <xsl:choose>
-                <xsl:when test="string-length(derivedAttributes/derivedAttribute) &gt; 0">
-                  <xsl:call-template name="attributes">
-                    <xsl:with-param name="label">Derived Attributes</xsl:with-param>
-                    <xsl:with-param name="node" select="derivedAttributes/derivedAttribute"/>
-                  </xsl:call-template>
-                </xsl:when>
-                <xsl:otherwise>
-                  <fo:block color="red" font-size="8pt" space-after="2mm">THIS GROUP HASN'T ANY DERIVED ATTRIBUTE</fo:block>
-                </xsl:otherwise>
-              </xsl:choose>
-              <xsl:choose>
-                <xsl:when test="string-length(virtualAttributes/virtualAttribute) &gt; 0">
-                  <xsl:call-template name="attributes">
-                    <xsl:with-param name="label">Virtual Attributes</xsl:with-param>
-                    <xsl:with-param name="node" select="virtualAttributes/virtualAttribute"/>
-                  </xsl:call-template>
-                </xsl:when>
-                <xsl:otherwise>
-                  <fo:block color="red" font-size="8pt" space-after="2mm">THIS GROUP HASN'T ANY VIRTUAL ATTRIBUTE</fo:block>
-                </xsl:otherwise>
-              </xsl:choose>
-              <!-- 'groupResources" is defined in groupReportlet2fo.xsl -->
-              <xsl:call-template name="groupResources">
-                <xsl:with-param name="node" select="resources/resource"/>
-              </xsl:call-template>
-            </fo:block>
-          </xsl:for-each>
-        </xsl:when>
-        <xsl:otherwise>
-          <fo:block color="red" font-size="9pt" space-after="3mm">THIS USER HASN'T BEEN ASSIGNED TO ANY GROUP</fo:block>
-        </xsl:otherwise>
-      </xsl:choose>
-      <xsl:call-template name="resources">
-        <xsl:with-param name="node" select="resources/resource"/>
-      </xsl:call-template>
-    </xsl:for-each>
-  </xsl:template>
-  <xsl:template name="attributes">
-    <xsl:param name="label"/>
-    <xsl:param name="node"/>
-    <fo:block font-size="11pt" font-weight="bold" space-after="2mm">
-      <xsl:value-of select="$label"/>
-    </fo:block>
-    <fo:table table-layout="fixed" space-after="7mm">
-      <fo:table-column/>
-      <fo:table-column/>
-      <fo:table-header>
-        <fo:table-row height="7mm" background-color="(#ccccba)">
-          <fo:table-cell>
-            <fo:block font-weight="bold">Schema name</fo:block>
-          </fo:table-cell>
-          <fo:table-cell>
-            <fo:block font-weight="bold">Value(s)</fo:block>
-          </fo:table-cell>
-        </fo:table-row>
-      </fo:table-header>
-      <fo:table-body>
-        <xsl:for-each select="$node">
-          <xsl:if test="string-length(value/text()) &gt; 0">
-            <fo:table-row height="4mm" background-color="(#ccccff)">
-              <fo:table-cell>
-                <fo:block>
-                  <xsl:value-of select="@name"/>
-                </fo:block>
-              </fo:table-cell>
-              <fo:table-cell>
-                <xsl:for-each select="value">
-                  <fo:block></fo:block><!--                        <fo:block>&#x2022;</fo:block>-->
-                  <fo:block font-style="italic">
-                    <xsl:value-of select="text()"/>
-                  </fo:block>
-                </xsl:for-each>
-              </fo:table-cell>
-            </fo:table-row>
-          </xsl:if>
-          <fo:table-row>
-            <fo:table-cell>
-              <fo:block></fo:block>
-            </fo:table-cell>
-            <fo:table-cell>
-              <fo:block></fo:block>
-            </fo:table-cell>
-          </fo:table-row>
-        </xsl:for-each>
-      </fo:table-body>
-    </fo:table>
-  </xsl:template>
-  <xsl:template name="resources">
-    <xsl:param name="node"/>
-    <fo:block font-size="11pt" font-weight="bold" space-after="3mm">Resources</fo:block>
-    <xsl:for-each select="$node">
-      <fo:block></fo:block> <!--            <fo:block>&#x2022;</fo:block>-->
-      <fo:block background-color="(#ccccff)">
-        <xsl:value-of select="@name"/>
-      </fo:block>
-    </xsl:for-each>
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/core/src/main/resources/report/userReportlet2html.xsl b/core/src/main/resources/report/userReportlet2html.xsl
deleted file mode 100644
index 0a0e5c5..0000000
--- a/core/src/main/resources/report/userReportlet2html.xsl
+++ /dev/null
@@ -1,219 +0,0 @@
-<?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.
--->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                version="1.0">
-
-  <xsl:template match="reportlet[@class='org.apache.syncope.core.report.UserReportlet']">
-    
-    <h3>Reportlet: <xsl:value-of select="@name"/></h3>
-    
-    <xsl:for-each select="user">
-      <h4>User <xsl:value-of select="@username"/></h4>
-      
-      <table style="border: 1px solid black;">
-        <tr>
-          <td>Status:</td>
-          <td>
-            <xsl:value-of select="@status"/>
-          </td>
-        </tr>
-        <xsl:if test="string-length(@creationDate) &gt; 0">
-          <tr>
-            <td>Creation Date:</td>
-            <td>
-              <xsl:value-of select="@creationDate"/>
-            </td>
-          </tr>
-        </xsl:if>
-        <xsl:if test="string-length(@lastLoginDate) &gt; 0">
-          <tr>
-            <td>Last Login Date:</td>
-            <td>
-              <xsl:value-of select="@lastLoginDate"/>
-            </td>
-          </tr>
-        </xsl:if>
-        <xsl:if test="string-length(@changePwdDate) &gt; 0">
-          <tr>
-            <td>Change Password Date:</td>
-            <td>
-              <xsl:value-of select="@changePwdDate"/>
-            </td>
-          </tr>
-        </xsl:if>
-        <xsl:if test="string-length(@passwordHistorySize) &gt; 0">
-          <tr>
-            <td>Password History Size:</td>
-            <td>
-              <xsl:value-of select="@passwordHistorySize"/>
-            </td>
-          </tr>
-        </xsl:if>
-        <xsl:if test="string-length(@failedLoginCount) &gt; 0">
-          <tr>
-            <td>Number of Failed Login Attempts:</td>
-            <td>
-              <xsl:value-of select="@failedLoginCount"/>
-            </td>
-          </tr>
-        </xsl:if>
-      </table>
-
-      <xsl:call-template name="attributes">
-        <xsl:with-param name="label">Attributes</xsl:with-param>
-        <xsl:with-param name="node" select="attributes/attribute"/>
-      </xsl:call-template>
-
-      <!--<xsl:if test="string-length(derivedAttributes/derivedAttribute) &gt; 0">-->
-      <xsl:choose>
-        <xsl:when test="string-length(derivedAttributes/derivedAttribute) &gt; 0">
-          <xsl:call-template name="attributes">
-            <xsl:with-param name="label">Derived Attributes</xsl:with-param>
-            <xsl:with-param name="node" select="derivedAttributes/derivedAttribute"/>
-          </xsl:call-template>
-        </xsl:when>
-        <xsl:otherwise>
-          <h5>THIS USER HASN'T DERIVED ATTRIBUTES</h5>
-        </xsl:otherwise>
-      </xsl:choose>
-      <!--</xsl:if>-->
-      <xsl:choose>
-        <xsl:when test="string-length(virtualAttributes/virtualAttribute) &gt; 0">
-          <xsl:call-template name="attributes">
-            <xsl:with-param name="label">Virtual Attributes</xsl:with-param>
-            <xsl:with-param name="node" select="virtualAttributes/virtualAttribute"/>
-          </xsl:call-template>
-        </xsl:when>
-        <xsl:otherwise>
-          <h5>THIS USER HASN'T VIRTUAL ATTRIBUTES</h5>
-        </xsl:otherwise>
-      </xsl:choose>
-      
-      <xsl:choose>
-        <xsl:when test="string-length(memberships/membership) &gt; 0">
-          <h4>Memberships</h4>
-          <xsl:for-each select="memberships/membership">
-            <h5>Group: <xsl:value-of select="@groupName"/>(<xsl:value-of select="@groupId"/>)</h5>
-            <blockquote>
-              <xsl:choose>
-                <xsl:when test="string-length(attributes/attribute) &gt; 0">
-                  <xsl:call-template name="attributes">
-                    <xsl:with-param name="label">Attributes</xsl:with-param>
-                    <xsl:with-param name="node" select="attributes/attribute"/>
-                  </xsl:call-template>
-                </xsl:when>
-                <xsl:otherwise>
-                  <h5>THIS GROUP HASN'T ATTRIBUTES</h5>
-                </xsl:otherwise>
-              </xsl:choose>
-              <xsl:choose>
-                <xsl:when test="string-length(derivedAttributes/derivedAttribute) &gt; 0">
-                  <xsl:call-template name="attributes">
-                    <xsl:with-param name="label">Derived Attributes</xsl:with-param>
-                    <xsl:with-param name="node" select="derivedAttributes/derivedAttribute"/>
-                  </xsl:call-template>
-                </xsl:when>
-                <xsl:otherwise>
-                  <h5>THIS GROUP HASN'T DERIVED ATTRIBUTES</h5>
-                </xsl:otherwise>
-              </xsl:choose>
-              <xsl:choose>
-                <xsl:when test="string-length(virtualAttributes/virtualAttribute) &gt; 0">
-                  <xsl:call-template name="attributes">
-                    <xsl:with-param name="label">Virtual Attributes</xsl:with-param>
-                    <xsl:with-param name="node" select="virtualAttributes/virtualAttribute"/>
-                  </xsl:call-template>
-                </xsl:when>
-                <xsl:otherwise>
-                  <h5>THIS GROUP HASN'T VIRTUAL ATTRIBUTES</h5>
-                </xsl:otherwise>
-              </xsl:choose>
-              <!-- 'groupResources" is defined in groupReportlet2html.xsl -->
-              <xsl:call-template name="groupResources">
-                <xsl:with-param name="node" select="resources/resource"/>
-              </xsl:call-template>
-            </blockquote>
-          </xsl:for-each>
-        </xsl:when>
-        <xsl:otherwise>
-          <h5>THIS USER ISN'T ASSIGNED TO A GROUP</h5>
-        </xsl:otherwise>
-      </xsl:choose>
-      <xsl:if test="string-length(resources) &gt; 0">
-        <xsl:call-template name="resources">
-          <xsl:with-param name="node" select="resources/resource"/>
-        </xsl:call-template>
-      </xsl:if>
-      <hr/>
-    </xsl:for-each>
-       
-  </xsl:template>
-
-  <xsl:template name="attributes">
-    <xsl:param name="label"/>
-    <xsl:param name="node"/>
-
-    <h4>
-      <xsl:value-of select="$label"/>
-    </h4>
-    
-    <table>
-      <thead>
-        <tr>
-          <th>Schema name</th>
-          <th>Value(s)</th>
-        </tr>
-      </thead>
-      <tbody>
-        <xsl:for-each select="$node">
-          <xsl:if test="string-length(value/text()) &gt; 0">
-            <tr>
-              <td>
-                <xsl:value-of select="@name"/>
-              </td>
-              <td>
-                <ul>
-                  <xsl:for-each select="value">
-                    <li>
-                      <xsl:value-of select="text()"/>
-                    </li>
-                  </xsl:for-each>
-                </ul>
-              </td>
-            </tr>
-          </xsl:if>
-        </xsl:for-each>
-      </tbody>
-    </table>
-  </xsl:template>
-
-  <xsl:template name="resources">
-    <xsl:param name="node"/>
-    
-    <h4>Resources</h4>
-    <ul>
-      <xsl:for-each select="$node">
-        <li>
-          <xsl:value-of select="@name"/>
-        </li>
-      </xsl:for-each>
-    </ul>
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/core/src/main/resources/security.properties b/core/src/main/resources/security.properties
index 73db510..8c85e21 100644
--- a/core/src/main/resources/security.properties
+++ b/core/src/main/resources/security.properties
@@ -14,7 +14,7 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
-adminUser=admin
+adminUser=${adminUser}
 adminPassword=5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
 adminPasswordAlgorithm=SHA1
 
@@ -29,4 +29,4 @@
 digester.invertPositionOfSaltInMessageBeforeDigesting=true
 digester.useLenientSaltSizeCheck=true
 
-passwordGenerator=org.apache.syncope.core.misc.security.DefaultPasswordGenerator
+passwordGenerator=org.apache.syncope.core.spring.security.DefaultPasswordGenerator
diff --git a/core/src/main/resources/views.xml b/core/src/main/resources/views.xml
index 48c801e..59ec334 100644
--- a/core/src/main/resources/views.xml
+++ b/core/src/main/resources/views.xml
@@ -31,7 +31,7 @@
     CREATE VIEW user_search_unique_attr AS
 
     SELECT ua.owner_id AS any_id,
-    ua.schema_name AS schema_name,
+    ua.schema_id AS schema_id,
     uav.booleanvalue AS booleanvalue,
     uav.datevalue AS datevalue,
     uav.doublevalue AS doublevalue,
@@ -44,7 +44,7 @@
     CREATE VIEW user_search_attr AS
 
     SELECT ua.owner_id AS any_id,
-    ua.schema_name AS schema_name,
+    ua.schema_id AS schema_id,
     uav.booleanvalue AS booleanvalue,
     uav.datevalue AS datevalue,
     uav.doublevalue AS doublevalue,
@@ -57,20 +57,20 @@
     CREATE VIEW user_search_null_attr AS
 
     SELECT u.id AS any_id,
-    PlainSchema.name AS schema_name,
+    PlainSchema.id AS schema_id,
     NULL AS booleanvalue,
     NULL AS datevalue,
     NULL AS doublevalue,
     NULL AS longvalue,
     NULL AS stringvalue
     FROM SyncopeUser u CROSS JOIN PlainSchema
-    LEFT OUTER JOIN UPlainAttr ua ON (PlainSchema.name = ua.schema_name AND ua.owner_id = u.id)
+    LEFT OUTER JOIN UPlainAttr ua ON (PlainSchema.id = ua.schema_id AND ua.owner_id = u.id)
     WHERE ua.id IS NULL
   </entry>
   <entry key="user_search_urelationship">
     CREATE VIEW user_search_urelationship AS
 
-    SELECT m.user_id AS any_id, m.anyObject_id AS right_any_id, m.type_name AS type
+    SELECT m.user_id AS any_id, m.anyObject_id AS right_any_id, m.type_id AS type
     FROM URelationship m
   </entry>
   <entry key="user_search_umembership">
@@ -90,26 +90,26 @@
   <entry key="user_search_role">
     CREATE VIEW user_search_role AS
 
-    SELECT ss.user_id AS any_id, ss.role_name AS role_name
+    SELECT ss.user_id AS any_id, ss.role_id AS role_id
     FROM SyncopeUser_SyncopeRole ss
   </entry>
   <entry key="user_search_dynrmemb">
     CREATE VIEW user_search_dynrmemb AS
 
-    SELECT ds.user_id AS any_id, d.role_name AS role_name
+    SELECT ds.user_id AS any_id, d.role_id AS role_id
     FROM DynRoleMembership d, DynRoleMembership_User ds
     WHERE d.id = ds.dynRoleMembership_id
   </entry>
   <entry key="user_search_resource">
     CREATE VIEW user_search_resource AS
 
-    SELECT st.user_id AS any_id, st.resource_name AS resource_name
+    SELECT st.user_id AS any_id, st.resource_id AS resource_id
     FROM SyncopeUser_ExternalResource st
   </entry>
   <entry key="user_search_group_res">
     CREATE VIEW user_search_group_res AS
 
-    SELECT m.user_id AS any_id, st.resource_name AS resource_name
+    SELECT m.user_id AS any_id, st.resource_id AS resource_id
     FROM UMembership m, SyncopeGroup r, SyncopeGroup_ExternalResource st
     WHERE m.group_id = r.id AND st.group_id = r.id
   </entry>
@@ -124,7 +124,7 @@
     CREATE VIEW anyObject_search_unique_attr AS
 
     SELECT ua.owner_id AS any_id,
-    ua.schema_name AS schema_name,
+    ua.schema_id AS schema_id,
     uav.booleanvalue AS booleanvalue,
     uav.datevalue AS datevalue,
     uav.doublevalue AS doublevalue,
@@ -137,7 +137,7 @@
     CREATE VIEW anyObject_search_attr AS
 
     SELECT ua.owner_id AS any_id,
-    ua.schema_name AS schema_name,
+    ua.schema_id AS schema_id,
     uav.booleanvalue AS booleanvalue,
     uav.datevalue AS datevalue,
     uav.doublevalue AS doublevalue,
@@ -150,20 +150,20 @@
     CREATE VIEW anyObject_search_null_attr AS
 
     SELECT u.id AS any_id,
-    PlainSchema.name AS schema_name,
+    PlainSchema.id AS schema_id,
     NULL AS booleanvalue,
     NULL AS datevalue,
     NULL AS doublevalue,
     NULL AS longvalue,
     NULL AS stringvalue
     FROM AnyObject u CROSS JOIN PlainSchema
-    LEFT OUTER JOIN APlainAttr ua ON (PlainSchema.name = ua.schema_name AND ua.owner_id = u.id)
+    LEFT OUTER JOIN APlainAttr ua ON (PlainSchema.id = ua.schema_id AND ua.owner_id = u.id)
     WHERE ua.id IS NULL
   </entry>
   <entry key="anyObject_search_arelationship">
     CREATE VIEW anyObject_search_arelationship AS
 
-    SELECT m.left_anyObject_id AS any_id, m.right_anyObject_id AS right_any_id, m.type_name AS type
+    SELECT m.left_anyObject_id AS any_id, m.right_anyObject_id AS right_any_id, m.type_id AS type
     FROM ARelationship m
   </entry>
   <entry key="anyObject_search_amembership">
@@ -183,13 +183,13 @@
   <entry key="anyObject_search_resource">
     CREATE VIEW anyObject_search_resource AS
 
-    SELECT st.anyObject_id AS any_id, st.resource_name AS resource_name
+    SELECT st.anyObject_id AS any_id, st.resource_id AS resource_id
     FROM AnyObject_ExternalResource st
   </entry>
   <entry key="anyObject_search_group_res">
     CREATE VIEW anyObject_search_group_res AS
 
-    SELECT m.anyObject_id AS any_id, st.resource_name AS resource_name
+    SELECT m.anyObject_id AS any_id, st.resource_id AS resource_id
     FROM AMembership m, SyncopeGroup r, SyncopeGroup_ExternalResource st
     WHERE m.group_id = r.id AND st.group_id = r.id
   </entry>
@@ -204,7 +204,7 @@
     CREATE VIEW group_search_unique_attr AS
 
     SELECT ua.owner_id AS any_id,
-    ua.schema_name AS schema_name,
+    ua.schema_id AS schema_id,
     uav.booleanvalue AS booleanvalue,
     uav.datevalue AS datevalue,
     uav.doublevalue AS doublevalue,
@@ -217,7 +217,7 @@
     CREATE VIEW group_search_attr AS
 
     SELECT ua.owner_id AS any_id,
-    ua.schema_name AS schema_name,
+    ua.schema_id AS schema_id,
     uav.booleanvalue AS booleanvalue,
     uav.datevalue AS datevalue,
     uav.doublevalue AS doublevalue,
@@ -230,20 +230,20 @@
     CREATE VIEW group_search_null_attr AS
 
     SELECT u.id AS any_id,
-    PlainSchema.name AS schema_name,
+    PlainSchema.id AS schema_id,
     NULL AS booleanvalue,
     NULL AS datevalue,
     NULL AS doublevalue,
     NULL AS longvalue,
     NULL AS stringvalue
     FROM SyncopeGroup u CROSS JOIN PlainSchema
-    LEFT OUTER JOIN GPlainAttr ua ON (PlainSchema.name = ua.schema_name AND ua.owner_id = u.id)
+    LEFT OUTER JOIN GPlainAttr ua ON (PlainSchema.id = ua.schema_id AND ua.owner_id = u.id)
     WHERE ua.id IS NULL
   </entry>
   <entry key="group_search_resource">
     CREATE VIEW group_search_resource AS
 
-    SELECT st.group_id AS any_id, st.resource_name AS resource_name
+    SELECT st.group_id AS any_id, st.resource_id AS resource_id
     FROM SyncopeGroup_ExternalResource st
   </entry>
 
diff --git a/core/src/main/webapp/WEB-INF/weblogic.xml b/core/src/main/webapp/WEB-INF/weblogic.xml
index 6eeb9c2..e3db665 100644
--- a/core/src/main/webapp/WEB-INF/weblogic.xml
+++ b/core/src/main/webapp/WEB-INF/weblogic.xml
@@ -28,7 +28,6 @@
     <prefer-application-packages>
       <package-name>javax.ws.rs.*</package-name>
       <package-name>javax.validation.*</package-name>
-      <package-name>org.hibernate.validator.*</package-name>
       <package-name>org.apache.cxf.*</package-name>
       <package-name>org.apache.commons.*</package-name>
       <package-name>org.apache.openjpa.*</package-name>
diff --git a/core/src/test/resources/addActivitiToContent.xsl b/core/src/test/resources/addActivitiToContent.xsl
new file mode 100644
index 0000000..44fd18e
--- /dev/null
+++ b/core/src/test/resources/addActivitiToContent.xsl
@@ -0,0 +1,50 @@
+<?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.
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version="1.0">
+  
+  <xsl:template match="/dataset">
+    <dataset>
+      <xsl:apply-templates/>
+      
+      <ACT_RU_EXECUTION ID_="4" REV_="2" PROC_INST_ID_="4" PROC_DEF_ID_="userWorkflow:1:4" ACT_ID_="active" IS_ACTIVE_="1" IS_CONCURRENT_="0" IS_SCOPE_="1" IS_EVENT_SCOPE_="0" SUSPENSION_STATE_="1"/>
+      <ACT_RU_TASK ID_="5" REV_="2" EXECUTION_ID_="4" PROC_INST_ID_="4" PROC_DEF_ID_="userWorkflow:1:4" NAME_="Active" TASK_DEF_KEY_="active" PRIORITY_="50" CREATE_TIME_="2013-02-25T17:19:03+0100"/>
+
+      <ACT_RU_EXECUTION ID_="6" REV_="2" PROC_INST_ID_="6" PROC_DEF_ID_="userWorkflow:1:4" ACT_ID_="active" IS_ACTIVE_="1" IS_CONCURRENT_="0" IS_SCOPE_="1" IS_EVENT_SCOPE_="0" SUSPENSION_STATE_="1"/>
+      <ACT_RU_TASK ID_="7" REV_="2" EXECUTION_ID_="6" PROC_INST_ID_="6" PROC_DEF_ID_="userWorkflow:1:4" NAME_="Active" TASK_DEF_KEY_="active" PRIORITY_="50" CREATE_TIME_="2013-02-25T17:19:03+0100"/>
+
+      <ACT_RU_EXECUTION ID_="8" REV_="2" PROC_INST_ID_="8" PROC_DEF_ID_="userWorkflow:1:4" ACT_ID_="active" IS_ACTIVE_="1" IS_CONCURRENT_="0" IS_SCOPE_="1" IS_EVENT_SCOPE_="0" SUSPENSION_STATE_="1"/>
+      <ACT_RU_TASK ID_="9" REV_="2" EXECUTION_ID_="8" PROC_INST_ID_="8" PROC_DEF_ID_="userWorkflow:1:4" NAME_="Active" TASK_DEF_KEY_="active" PRIORITY_="50" CREATE_TIME_="2013-02-25T17:19:03+0100"/>
+
+      <ACT_RU_EXECUTION ID_="10" REV_="2" PROC_INST_ID_="10" PROC_DEF_ID_="userWorkflow:1:4" ACT_ID_="active" IS_ACTIVE_="1" IS_CONCURRENT_="0" IS_SCOPE_="1" IS_EVENT_SCOPE_="0" SUSPENSION_STATE_="1"/>
+      <ACT_RU_TASK ID_="11" REV_="2" EXECUTION_ID_="10" PROC_INST_ID_="10" PROC_DEF_ID_="userWorkflow:1:4" NAME_="Active" TASK_DEF_KEY_="active" PRIORITY_="50" CREATE_TIME_="2013-02-25T17:19:03+0100"/>
+
+      <ACT_RU_EXECUTION ID_="12" REV_="2" PROC_INST_ID_="12" PROC_DEF_ID_="userWorkflow:1:4" ACT_ID_="active" IS_ACTIVE_="1" IS_CONCURRENT_="0" IS_SCOPE_="1" IS_EVENT_SCOPE_="0" SUSPENSION_STATE_="1"/>
+      <ACT_RU_TASK ID_="13" REV_="2" EXECUTION_ID_="12" PROC_INST_ID_="12" PROC_DEF_ID_="userWorkflow:1:4" NAME_="Active" TASK_DEF_KEY_="active" PRIORITY_="50" CREATE_TIME_="2013-02-25T17:19:03+0100"/>
+    </dataset>
+  </xsl:template>
+  
+  <xsl:template match="node()|@*|comment()">
+    <xsl:copy>
+      <xsl:apply-templates select="@*|node()"/>
+    </xsl:copy>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/core/src/test/resources/cacheStats.jsp b/core/src/test/resources/cacheStats.jsp
index ba380c5..b599365 100644
--- a/core/src/test/resources/cacheStats.jsp
+++ b/core/src/test/resources/cacheStats.jsp
@@ -16,13 +16,13 @@
 specific language governing permissions and limitations
 under the License.
 --%>
-<%@page import="org.springframework.beans.factory.support.DefaultListableBeanFactory"%>
-<%@page import="org.apache.syncope.common.lib.SyncopeConstants"%>
-<%@page import="org.apache.syncope.core.misc.spring.ApplicationContextProvider"%>
 <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 <%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
-<%@page import="java.text.SimpleDateFormat"%>
+<%@page import="org.springframework.beans.factory.support.DefaultListableBeanFactory"%>
+<%@page import="org.apache.syncope.common.lib.SyncopeConstants"%>
+<%@page import="org.apache.syncope.core.spring.ApplicationContextProvider"%>
+<%@page import="org.apache.commons.lang3.time.FastDateFormat"%>
 <%@page import="java.util.Date"%>
 <%@page import="org.apache.openjpa.datacache.CacheStatisticsImpl"%>
 <%@page import="javax.persistence.EntityManagerFactory"%>
@@ -98,7 +98,7 @@
             info.append("Statistics cleared\n");
         }
 
-        SimpleDateFormat sdf = new SimpleDateFormat(SyncopeConstants.DEFAULT_DATE_PATTERN);
+        FastDateFormat sdf = FastDateFormat.getInstance(SyncopeConstants.DEFAULT_DATE_PATTERN);
         if (info.length() > 0) {
     %>
     <p/><div class="success">
diff --git a/core/src/test/resources/domains/MasterContent.xml b/core/src/test/resources/domains/MasterContent.xml
index 10c8819..40a2e63 100644
--- a/core/src/test/resources/domains/MasterContent.xml
+++ b/core/src/test/resources/domains/MasterContent.xml
@@ -18,1109 +18,2382 @@
 under the License.
 -->
 <dataset>
-  <SyncopeDomain name="Two" adminCipherAlgorithm="SHA" adminPwd="2AA60A8FF7FCD473D321E0146AFD9E26DF395147"/>  
+  <SyncopeDomain id="Two" adminCipherAlgorithm="SHA" adminPwd="2AA60A8FF7FCD473D321E0146AFD9E26DF395147"/>  
   
-  <SyncopeConf id="1" 
-               creator="admin" lastModifier="admin"
-               creationDate="2014-06-20 11:00:00" lastChangeDate="2014-06-20 11:00:00"/>
+  <SyncopeConf id="cd64d66f-6fff-4008-b966-a06b1cc1436d"/>
 
-  <PlainSchema name="password.cipher.algorithm" type="String"
+  <SyncopeSchema id="password.cipher.algorithm"/>
+  <PlainSchema id="password.cipher.algorithm" type="String"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="1" owner_id="1" schema_name="password.cipher.algorithm"/>
-  <CPlainAttrValue id="1" attribute_id="1" stringValue="SHA1"/>
+  <CPlainAttr id="56db89b9-119e-4923-a16e-f42823b90c66" 
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="password.cipher.algorithm"/>
+  <CPlainAttrValue id="870323e8-8db6-4a64-b512-15f9fa094905" 
+                   attribute_id="56db89b9-119e-4923-a16e-f42823b90c66" stringValue="SHA1"/>
 
   <!-- notificationjob.cronExpression:
   + not existing: NotificationJob runs according to NotificationJob.DEFAULT_CRON_EXP
   + provided as empty string: NotificationJob disabled
   + provided as non-empty string: NotificationJob runs according to the given value -->
-  <PlainSchema name="notificationjob.cronExpression" type="String"
+  <SyncopeSchema id="notificationjob.cronExpression"/>
+  <PlainSchema id="notificationjob.cronExpression" type="String"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="2" owner_id="1" schema_name="notificationjob.cronExpression"/>
-  <CPlainAttrValue id="2" attribute_id="2" stringValue="0/20 * * * * ?"/>
+  <CPlainAttr id="abd5a2d2-25ee-48b7-b5ca-76813b54a6f2"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="notificationjob.cronExpression"/>
+  <CPlainAttrValue id="4828ea70-d151-4c16-b344-2d07b1956bee"
+                   attribute_id="abd5a2d2-25ee-48b7-b5ca-76813b54a6f2" stringValue="0/20 * * * * ?"/>
   
-  <PlainSchema name="notification.maxRetries" type="Long"
+  <SyncopeSchema id="notification.maxRetries"/>
+  <PlainSchema id="notification.maxRetries" type="Long"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="3" owner_id="1" schema_name="notification.maxRetries"/>
-  <CPlainAttrValue id="3" attribute_id="3" longValue="3"/>
+  <CPlainAttr id="0523d7e6-af13-4e1e-9edb-e35971aacee7"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="notification.maxRetries"/>
+  <CPlainAttrValue id="010e2bdc-0094-4918-bac3-d0d5ea17b54a"
+                   attribute_id="0523d7e6-af13-4e1e-9edb-e35971aacee7" longValue="3"/>
 
-  <PlainSchema name="token.length" type="Long"
+  <SyncopeSchema id="token.length"/>
+  <PlainSchema id="token.length" type="Long"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="4" owner_id="1" schema_name="token.length"/>
-  <CPlainAttrValue id="4" attribute_id="4" longValue="256"/>
+  <CPlainAttr id="58977caa-dcf7-4ae3-8591-7e3d0a395200"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="token.length"/>
+  <CPlainAttrValue id="372e28e0-3af1-4774-b668-81aa84903b75"
+                   attribute_id="58977caa-dcf7-4ae3-8591-7e3d0a395200" longValue="256"/>
 
-  <PlainSchema name="token.expireTime" type="Long"
+  <SyncopeSchema id="token.expireTime"/>
+  <PlainSchema id="token.expireTime" type="Long"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="5" owner_id="1" schema_name="token.expireTime"/>
-  <CPlainAttrValue id="5" attribute_id="5" longValue="60"/>
+  <CPlainAttr id="01f69abd-df85-4e1b-bb88-ad570594e045"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="token.expireTime"/>
+  <CPlainAttrValue id="963970cf-4af6-46bb-875b-a1b758ac8d05"
+                   attribute_id="01f69abd-df85-4e1b-bb88-ad570594e045" longValue="60"/>
 
-  <PlainSchema name="selfRegistration.allowed" type="Boolean"
+  <SyncopeSchema id="selfRegistration.allowed"/>
+  <PlainSchema id="selfRegistration.allowed" type="Boolean"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="6" owner_id="1" schema_name="selfRegistration.allowed"/>
-  <CPlainAttrValue id="6" attribute_id="6" booleanValue="1"/>
+  <CPlainAttr id="7b19cefa-d606-477c-8431-c9464f53fe8b"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="selfRegistration.allowed"/>
+  <CPlainAttrValue id="c8b9a0f1-0168-4e2a-95b8-4819fc70e620"
+                   attribute_id="7b19cefa-d606-477c-8431-c9464f53fe8b" booleanValue="1"/>
 
-  <PlainSchema name="passwordReset.allowed" type="Boolean"
+  <SyncopeSchema id="passwordReset.allowed"/>
+  <PlainSchema id="passwordReset.allowed" type="Boolean"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="7" owner_id="1" schema_name="passwordReset.allowed"/>
-  <CPlainAttrValue id="7" attribute_id="7" booleanValue="1"/>
+  <CPlainAttr id="dc35cc97-6ed9-4bb2-bb3b-509f4cd8f3d3"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="passwordReset.allowed"/>
+  <CPlainAttrValue id="b1ecea41-ab7c-4dd3-9e3e-b6baf0f98046"
+                   attribute_id="dc35cc97-6ed9-4bb2-bb3b-509f4cd8f3d3" booleanValue="1"/>
 
-  <PlainSchema name="passwordReset.securityQuestion" type="Boolean"
+  <SyncopeSchema id="passwordReset.securityQuestion"/>
+  <PlainSchema id="passwordReset.securityQuestion" type="Boolean"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="8" owner_id="1" schema_name="passwordReset.securityQuestion"/>
-  <CPlainAttrValue id="8" attribute_id="8" booleanValue="1"/>
+  <CPlainAttr id="e5a712ad-53fd-4102-ba55-fb45caed5f7b"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="passwordReset.securityQuestion"/>
+  <CPlainAttrValue id="b5e8e79d-8039-4318-9698-fe5e181ebe98"
+                   attribute_id="e5a712ad-53fd-4102-ba55-fb45caed5f7b" booleanValue="1"/>
 
-  <PlainSchema name="authentication.statuses" type="String"
-               mandatoryCondition="true" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="9" owner_id="1" schema_name="authentication.statuses"/>
-  <CPlainAttrValue id="9" attribute_id="9" stringValue="created"/>
-  <CPlainAttrValue id="10" attribute_id="9" stringValue="active"/>
+  <SyncopeSchema id="authentication.statuses"/>
+  <PlainSchema id="authentication.statuses" type="String" multivalue="1" uniqueConstraint="0" readonly="0"/>
+  <CPlainAttr id="888ae8e1-a295-4ee2-a15e-31dbf6dfc3f9"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="authentication.statuses"/>
+  <CPlainAttrValue id="4b8e7d2b-f527-43a3-a2e2-5530dcab2f52"
+                   attribute_id="888ae8e1-a295-4ee2-a15e-31dbf6dfc3f9" stringValue="created"/>
+  <CPlainAttrValue id="f0c89f2c-ea87-4c95-a1cf-142bf6e6f523"
+                   attribute_id="888ae8e1-a295-4ee2-a15e-31dbf6dfc3f9" stringValue="active"/>
 
   <!-- Save user login date upon successful authentication -->
-  <PlainSchema name="log.lastlogindate" type="Boolean"
+  <SyncopeSchema id="log.lastlogindate"/>
+  <PlainSchema id="log.lastlogindate" type="Boolean"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="11" owner_id="1" schema_name="log.lastlogindate"/>
-  <CPlainAttrValue id="11" attribute_id="11" booleanValue="1"/>
+  <CPlainAttr id="9891c0a7-27ee-4215-9eea-ca32e580b4e4"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="log.lastlogindate"/>
+  <CPlainAttrValue id="162dd874-0417-4bb9-9724-db1ff2952dd1"
+                   attribute_id="9891c0a7-27ee-4215-9eea-ca32e580b4e4" booleanValue="1"/>
 
-  <PlainSchema name="tasks.interruptMaxRetries" type="Long"
+  <SyncopeSchema id="tasks.interruptMaxRetries"/>
+  <PlainSchema id="tasks.interruptMaxRetries" type="Long"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="12" owner_id="1" schema_name="tasks.interruptMaxRetries"/>
-  <CPlainAttrValue id="12" attribute_id="12" longValue="20"/>
+  <CPlainAttr id="c2b9ca96-c6ef-433d-8287-0e0cfd0ad0db"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="tasks.interruptMaxRetries"/>
+  <CPlainAttrValue id="5dc3f4e3-ff9f-4558-a9ac-15336b63a2ad"
+                   attribute_id="c2b9ca96-c6ef-433d-8287-0e0cfd0ad0db" longValue="20"/>
   
   <!-- Return hashed password values when reading users -->
-  <PlainSchema name="return.password.value" type="Boolean"
+  <SyncopeSchema id="return.password.value"/>
+  <PlainSchema id="return.password.value" type="Boolean"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="14" owner_id="1" schema_name="return.password.value"/>
-  <CPlainAttrValue id="14" attribute_id="14" booleanValue="0"/>
+  <CPlainAttr id="bcfd7efc-0605-4b5e-b4bb-85c1d5f6493a"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="return.password.value"/>
+  <CPlainAttrValue id="e5fa94db-b524-4309-908d-8198d0b3f779"
+                   attribute_id="bcfd7efc-0605-4b5e-b4bb-85c1d5f6493a" booleanValue="0"/>
   
-  <!-- For usage with admin console -->
-  <PlainSchema name="admin.user.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="self.user.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="admin.group.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="self.group.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="admin.membership.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="self.membership.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  
+  <!-- Identity Recertification interval in days -->                   
+  <SyncopeSchema id="identity.recertification.day.interval"/>
+  <PlainSchema id="identity.recertification.day.interval" type="Long"
+               mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
+  <CPlainAttr id="bcfd7efc-0605-4b5e-b4bb-85c1d5f64bbb"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="identity.recertification.day.interval"/>
+  <CPlainAttrValue id="e5fa94db-b524-4309-908d-8198d0b3f77b"
+                   attribute_id="bcfd7efc-0605-4b5e-b4bb-85c1d5f64bbb" longValue="365"/>
+
   <!-- sample policies -->
-  <SyncPolicy id="1" description="a sync policy" type="SYNC" 
-              specification='{"conflictResolutionAction":"IGNORE"'/>
-  <PasswordPolicy id="2" description="a password policy" type="PASSWORD" 
+  <PullPolicy id="66691e96-285f-4464-bc19-e68384ea4c85" description="a pull policy"
+              specification='{"conflictResolutionAction":"IGNORE"}'/>
+  <PasswordPolicy id="ce93fcda-dc3a-4369-a7b0-a6108c261c85" description="a password policy"
                   historyLength="1" allowNullPassword="1"/> 
-  <PasswordRuleConfInstance id="2" passwordPolicy_id="2"
+  <PasswordRuleConfInstance id="2e3fb762-d37a-46c6-a2e5-662b527dead3"
+                            passwordPolicy_id="ce93fcda-dc3a-4369-a7b0-a6108c261c85"
                             serializedInstance='{"@class":"org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf","maxLength":0,"minLength":8,"nonAlphanumericRequired":false,"alphanumericRequired":false,"digitRequired":false,"lowercaseRequired":false,"uppercaseRequired":false,"mustStartWithDigit":false,"mustntStartWithDigit":false,"mustEndWithDigit":false,"mustntEndWithDigit":false,"mustStartWithNonAlpha":false,"mustStartWithAlpha":false,"mustntStartWithNonAlpha":false,"mustntStartWithAlpha":false,"mustEndWithNonAlpha":false,"mustEndWithAlpha":false,"mustntEndWithNonAlpha":false,"mustntEndWithAlpha":false,"wordsNotPermitted":[],"schemasNotPermitted":[],"prefixesNotPermitted":["notpermitted1","notpermitted2"],"suffixesNotPermitted":[]}'/>
-  <SyncPolicy id="3" description="sync policy 2" type="SYNC" 
+  <PullPolicy id="880f8553-069b-4aed-9930-2cd53873f544" description="another pull policy"
               specification='{"conflictResolutionAction":"ALL","correlationRules":{"USER":"[\"username\",\"firstname\"]"}}'/>
-  <PasswordPolicy id="4" description="sample password policy" type="PASSWORD"
-                  historyLength="0"  allowNullPassword="1"/> 
-  <PasswordRuleConfInstance id="4" passwordPolicy_id="4"
+  <PasswordPolicy id="986d1236-3ac5-4a19-810c-5ab21d79cba1"
+                  description="sample password policy" historyLength="0" allowNullPassword="1"/> 
+  <PasswordRuleConfInstance id="62fe25b4-9124-4f01-9bc4-0013399da893"
+                            passwordPolicy_id="986d1236-3ac5-4a19-810c-5ab21d79cba1"
                             serializedInstance='{"@class":"org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf","maxLength":0,"minLength":10,"nonAlphanumericRequired":false,"alphanumericRequired":false,"digitRequired":true,"lowercaseRequired":false,"uppercaseRequired":false,"mustStartWithDigit":false,"mustntStartWithDigit":false,"mustEndWithDigit":false,"mustntEndWithDigit":false,"mustStartWithNonAlpha":false,"mustStartWithAlpha":false,"mustntStartWithNonAlpha":false,"mustntStartWithAlpha":false,"mustEndWithNonAlpha":false,"mustEndWithAlpha":false,"mustntEndWithNonAlpha":false,"mustntEndWithAlpha":false,"wordsNotPermitted":[],"schemasNotPermitted":[],"prefixesNotPermitted":["notpermitted1","notpermitted2"],"suffixesNotPermitted":[]}'/>
-  <AccountPolicy id="5" description="an account policy" type="ACCOUNT"
+  <AccountPolicy id="20ab5a8c-4b0c-432c-b957-f7fb9784d9f7" description="an account policy"
                  propagateSuspension="0" maxAuthenticationAttempts="0"/>
-  <AccountRuleConfInstance id="5" accountPolicy_id="5"
+  <AccountRuleConfInstance id="5" accountPolicy_id="20ab5a8c-4b0c-432c-b957-f7fb9784d9f7"
                            serializedInstance='{"@class":"org.apache.syncope.common.lib.policy.DefaultAccountRuleConf","maxLength":0,"minLength":0,"pattern":null,"allUpperCase":false,"allLowerCase":false,"wordsNotPermitted":[],"schemasNotPermitted":[],"prefixesNotPermitted":[],"suffixesNotPermitted":[]}'/>
-  <AccountPolicy id="6" description="sample account policy" type="ACCOUNT"
+  <AccountPolicy id="06e2ed52-6966-44aa-a177-a0ca7434201f" description="sample account policy"
                  propagateSuspension="0" maxAuthenticationAttempts="3"/>
-  <AccountRuleConfInstance id="6" accountPolicy_id="6"
+  <AccountRuleConfInstance id="6" accountPolicy_id="06e2ed52-6966-44aa-a177-a0ca7434201f"
                            serializedInstance='{"@class":"org.apache.syncope.common.lib.policy.DefaultAccountRuleConf","maxLength":0,"minLength":4,"pattern":null,"allUpperCase":false,"allLowerCase":false,"wordsNotPermitted":[],"schemasNotPermitted":[],"prefixesNotPermitted":["notpermitted1","notpermitted2"],"suffixesNotPermitted":[]}'/>
-  <SyncPolicy id="7" description="sync policy 1" type="SYNC" 
-              specification='{"conflictResolutionAction":"IGNORE"}'/>
-  <PasswordPolicy id="8" description="sample password policy" type="PASSWORD"
-                  historyLength="0" allowNullPassword="0"/> 
-  <PasswordRuleConfInstance id="8" passwordPolicy_id="8"
+  <PullPolicy id="4ad10d94-e002-4b3f-b771-16089cc71da9" description="pull policy 1" specification='{"conflictResolutionAction":"IGNORE"}'/>
+  <PasswordPolicy id="55e5de0b-c79c-4e66-adda-251b6fb8579a" description="sample password policy" historyLength="0" allowNullPassword="0"/> 
+  <PasswordRuleConfInstance id="69b9d9fb-b37b-48f0-adba-5080f4768a8f"
+                            passwordPolicy_id="55e5de0b-c79c-4e66-adda-251b6fb8579a"
                             serializedInstance='{"@class":"org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf","maxLength":0,"minLength":10,"nonAlphanumericRequired":true,"alphanumericRequired":false,"digitRequired":true,"lowercaseRequired":true,"uppercaseRequired":true,"mustStartWithDigit":true,"mustntStartWithDigit":false,"mustEndWithDigit":true,"mustntEndWithDigit":false,"mustStartWithNonAlpha":false,"mustStartWithAlpha":false,"mustntStartWithNonAlpha":false,"mustntStartWithAlpha":false,"mustEndWithNonAlpha":false,"mustEndWithAlpha":false,"mustntEndWithNonAlpha":false,"mustntEndWithAlpha":false,"wordsNotPermitted":[],"schemasNotPermitted":[],"prefixesNotPermitted":["notpermitted1","notpermitted2"],"suffixesNotPermitted":[]}'/>
-  <SyncPolicy id="9" description="sync policy for java rule" type="SYNC" 
+  <PullPolicy id="9454b0d7-2610-400a-be82-fc23cf553dd6" description="pull policy for java rule"
               specification='{"conflictResolutionAction":"IGNORE"}'/>
 
-  <RelationshipType name="inclusion" description="Models the act that an object is included in another"/>
-  <RelationshipType name="neighborhood"/>
+  <RelationshipType id="inclusion" description="Models the act that an object is included in another"/>
+  <RelationshipType id="neighborhood" description="Models the act that an object is near another"/>
   
-  <AnyTypeClass name="generic membership"/>
+  <AnyTypeClass id="generic membership"/>
 
-  <AnyType name="USER" kind="USER"/>
-  <AnyTypeClass name="minimal user"/>
-  <AnyType_AnyTypeClass anyType_name="USER" anyTypeClass_name="minimal user"/>
-  <AnyTypeClass name="other"/>
-  <AnyType_AnyTypeClass anyType_name="USER" anyTypeClass_name="other"/>
+  <AnyType id="USER" kind="USER"/>
+  <AnyTypeClass id="minimal user"/>
+  <AnyType_AnyTypeClass anyType_id="USER" anyTypeClass_id="minimal user"/>
+  <AnyTypeClass id="other"/>
+  <AnyType_AnyTypeClass anyType_id="USER" anyTypeClass_id="other"/>
 
-  <AnyType name="GROUP" kind="GROUP"/>
-  <AnyTypeClass name="minimal group"/>
-  <AnyType_AnyTypeClass anyType_name="GROUP" anyTypeClass_name="minimal group"/>
+  <AnyType id="GROUP" kind="GROUP"/>
+  <AnyTypeClass id="minimal group"/>
+  <AnyType_AnyTypeClass anyType_id="GROUP" anyTypeClass_id="minimal group"/>
   
-  <AnyType name="PRINTER" kind="ANY_OBJECT"/>
-  <AnyTypeClass name="minimal printer"/>
-  <AnyType_AnyTypeClass anyType_name="PRINTER" anyTypeClass_name="minimal printer"/>
+  <AnyType id="PRINTER" kind="ANY_OBJECT"/>
+  <AnyTypeClass id="minimal printer"/>
+  <AnyType_AnyTypeClass anyType_id="PRINTER" anyTypeClass_id="minimal printer"/>
       
-  <AnyTypeClass name="csv"/>
+  <AnyTypeClass id="csv"/>
 
-  <Realm id="1" name="/" passwordPolicy_id="4"/>
-  <Realm id="2" name="odd" parent_id="1" accountPolicy_id="6"/>
-  <Realm id="3" name="even" parent_id="1"/>
-  <Realm id="4" name="two" parent_id="3" accountPolicy_id="5" passwordPolicy_id="2"/>
+  <Realm id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" name="/" passwordPolicy_id="986d1236-3ac5-4a19-810c-5ab21d79cba1"/>
+  <Realm id="722f3d84-9c2b-4525-8f6e-e4b82c55a36c" name="odd" 
+         parent_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" accountPolicy_id="06e2ed52-6966-44aa-a177-a0ca7434201f"/>
+  <Realm id="c5b75db1-fce7-470f-b780-3b9934d82a9d" name="even" 
+         parent_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"/>
+  <Realm id="0679e069-7355-4b20-bd11-a5a0a5453c7c" name="two" 
+         parent_id="c5b75db1-fce7-470f-b780-3b9934d82a9d"
+         accountPolicy_id="20ab5a8c-4b0c-432c-b957-f7fb9784d9f7"
+         passwordPolicy_id="ce93fcda-dc3a-4369-a7b0-a6108c261c85"/>
   
-  <AnyObject id="1" realm_id="1" type_name="PRINTER"
+  <AnyObject id="fc6dbc3a-6c07-4965-8781-921e7401a4a5" name="HP LJ 1300n"
+             realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" type_id="PRINTER"
              creator="admin" lastModifier="admin" 
              creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <AnyObject id="2" realm_id="1" type_name="PRINTER"
+  <AnyObject id="8559d14d-58c2-46eb-a2d4-a7d35161e8f8" name="Canon MF 8030cn"
+             realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" type_id="PRINTER"
              creator="admin" lastModifier="admin" 
              creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <AnyObject id="3" realm_id="4" type_name="PRINTER"
+  <AnyObject id="9e1d130c-d6a3-48b1-98b3-182477ed0688" name="Epson Stylus Color"
+             realm_id="0679e069-7355-4b20-bd11-a5a0a5453c7c" type_id="PRINTER"
              creator="admin" lastModifier="admin" 
              creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
   
-  <ARelationship id="1" left_anyObject_id="1" right_anyObject_id="2" type_name="neighborhood"/>
+  <ARelationship id="11a0ec66-b59b-428a-af3d-f856950ff1c5" type_id="neighborhood"
+                 left_anyObject_id="fc6dbc3a-6c07-4965-8781-921e7401a4a5"
+                 right_anyObject_id="8559d14d-58c2-46eb-a2d4-a7d35161e8f8"/>
   
-  <SyncopeRole name="User reviewer"/>
-  <SyncopeRole_entitlements entitlement="USER_READ" role_name="User reviewer"/>
-  <SyncopeRole_entitlements entitlement="USER_LIST" role_name="User reviewer"/>
-  <SyncopeRole_entitlements entitlement="USER_SEARCH" role_name="User reviewer"/>
-  <SyncopeRole_Realm role_name="User reviewer" realm_id="2"/>
-  <SyncopeRole_Realm role_name="User reviewer" realm_id="3"/>
+  <SyncopeRole id="User reviewer"/>
+  <SyncopeRole_entitlements entitlement="USER_READ" role_id="User reviewer"/>
+  <SyncopeRole_entitlements entitlement="USER_LIST" role_id="User reviewer"/>
+  <SyncopeRole_entitlements entitlement="USER_SEARCH" role_id="User reviewer"/>
+  <SyncopeRole_Realm role_id="User reviewer" realm_id="722f3d84-9c2b-4525-8f6e-e4b82c55a36c"/>
+  <SyncopeRole_Realm role_id="User reviewer" realm_id="c5b75db1-fce7-470f-b780-3b9934d82a9d"/>
   
-  <SyncopeRole name="User manager"/>
-  <SyncopeRole_entitlements entitlement="USER_READ" role_name="User manager"/>
-  <SyncopeRole_entitlements entitlement="USER_LIST" role_name="User manager"/>
-  <SyncopeRole_entitlements entitlement="USER_SEARCH" role_name="User manager"/>
-  <SyncopeRole_entitlements entitlement="WORKFLOW_FORM_CLAIM" role_name="User manager"/>
-  <SyncopeRole_entitlements entitlement="WORKFLOW_FORM_SUBMIT" role_name="User manager"/>
-  <SyncopeRole_Realm role_name="User manager" realm_id="1"/>
+  <SyncopeRole id="User manager"/>
+  <SyncopeRole_entitlements entitlement="USER_READ" role_id="User manager"/>
+  <SyncopeRole_entitlements entitlement="USER_LIST" role_id="User manager"/>
+  <SyncopeRole_entitlements entitlement="USER_SEARCH" role_id="User manager"/>
+  <SyncopeRole_entitlements entitlement="WORKFLOW_FORM_CLAIM" role_id="User manager"/>
+  <SyncopeRole_entitlements entitlement="WORKFLOW_FORM_SUBMIT" role_id="User manager"/>
+  <SyncopeRole_Realm role_id="User manager" realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"/>
 
-  <SyncopeRole name="Other"/>
-  <SyncopeRole_entitlements entitlement="SCHEMA_READ" role_name="Other"/>
-  <SyncopeRole_entitlements entitlement="GROUP_READ" role_name="Other"/>
-  <SyncopeRole_entitlements entitlement="WORKFLOW_FORM_CLAIM" role_name="Other"/>
-  <SyncopeRole_Realm role_name="Other" realm_id="2"/>
+  <SyncopeRole id="Other"/>
+  <SyncopeRole_entitlements entitlement="SCHEMA_READ" role_id="Other"/>
+  <SyncopeRole_entitlements entitlement="GROUP_READ" role_id="Other"/>
+  <SyncopeRole_entitlements entitlement="WORKFLOW_FORM_CLAIM" role_id="Other"/>
+  <SyncopeRole_Realm role_id="Other" realm_id="722f3d84-9c2b-4525-8f6e-e4b82c55a36c"/>
   
-  <SyncopeRole name="Search for realm evenTwo"/>
-  <SyncopeRole_entitlements entitlement="USER_READ" role_name="Search for realm evenTwo"/>
-  <SyncopeRole_entitlements entitlement="USER_SEARCH" role_name="Search for realm evenTwo"/>
-  <SyncopeRole_Realm role_name="Search for realm evenTwo" realm_id="4"/>
+  <SyncopeRole id="Search for realm evenTwo"/>
+  <SyncopeRole_entitlements entitlement="USER_READ" role_id="Search for realm evenTwo"/>
+  <SyncopeRole_entitlements entitlement="USER_SEARCH" role_id="Search for realm evenTwo"/>
+  <SyncopeRole_Realm role_id="Search for realm evenTwo" realm_id="0679e069-7355-4b20-bd11-a5a0a5453c7c"/>
 
-  <SyncopeUser id="1" workflowId="4" status="active" password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
-               realm_id="3"
+  <SyncopeUser id="1417acbe-cbf6-4277-9372-e75e04f97000" workflowId="4" status="active"
+               password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
+               realm_id="c5b75db1-fce7-470f-b780-3b9934d82a9d"
                username="rossini" creator="admin" lastModifier="admin"
                creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00" suspended="0"/>
-  <SyncopeUser_SyncopeRole user_id="1" role_name="Other"/>
-  <SyncopeUser id="2" workflowId="6" status="active" password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
-               realm_id="1"
+  <SyncopeUser_SyncopeRole user_id="1417acbe-cbf6-4277-9372-e75e04f97000" role_id="Other"/>
+  <SyncopeUser id="74cd8ece-715a-44a4-a736-e17b46c4e7e6" workflowId="6" status="active"
+               password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
+               realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                username="verdi" creator="admin" lastModifier="admin"
                creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00" suspended="0"/>
-  <SyncopeUser id="3" workflowId="8" status="active" password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
-               realm_id="1"
+  <SyncopeUser id="b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee" workflowId="8" status="active"
+               password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
+               realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                username="vivaldi" creator="admin" lastModifier="admin"
                creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00" suspended="0"/>
-  <SyncopeUser id="4" workflowId="10" status="active" password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
-               realm_id="1"
+  <SyncopeUser id="c9b2dec2-00a7-4855-97c0-d854842b4b24" workflowId="10" status="active"
+               password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
+               realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                username="bellini" creator="admin" lastModifier="admin"
                creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00" suspended="0"/>
-  <SyncopeUser_SyncopeRole user_id="4" role_name="User reviewer"/>
-  <SyncopeUser_SyncopeRole user_id="4" role_name="User manager"/>
-  <SyncopeUser id="5" workflowId="12" status="active" password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
-               realm_id="1"
+  <SyncopeUser_SyncopeRole user_id="c9b2dec2-00a7-4855-97c0-d854842b4b24" role_id="User reviewer"/>
+  <SyncopeUser_SyncopeRole user_id="c9b2dec2-00a7-4855-97c0-d854842b4b24" role_id="User manager"/>
+  <SyncopeUser id="823074dc-d280-436d-a7dd-07399fae48ec" workflowId="12" status="active"
+               password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
+               realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                username="puccini" creator="admin" lastModifier="admin" 
                creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00" suspended="0"/>
-  <SyncopeUser_SyncopeRole user_id="5" role_name="Search for realm evenTwo"/>
+  <SyncopeUser_SyncopeRole user_id="823074dc-d280-436d-a7dd-07399fae48ec" role_id="Search for realm evenTwo"/>
   
-  <SyncopeGroup id="1" name="root"
-                realm_id="1"
+  <SyncopeGroup id="37d15e4c-cdc1-460b-a591-8505c8133806" name="root"
+                realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                 creator="admin" lastModifier="admin" 
                 creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <SyncopeGroup id="2" name="child"
-                realm_id="1"
+  <SyncopeGroup id="b1f7c12d-ec83-441f-a50e-1691daaedf3b" name="child"
+                realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                 creator="admin" lastModifier="admin" 
                 creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <SyncopeGroup id="3" name="citizen"
-                realm_id="1"
+  <SyncopeGroup id="29f96485-729e-4d31-88a1-6fc60e4677f3" name="citizen"
+                realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                 creator="admin" lastModifier="admin" 
                 creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <SyncopeGroup id="4" name="employee"
-                realm_id="1"
+  <SyncopeGroup id="8fb2d51e-c605-4e80-a72b-13ffecf1aa9a" name="employee"
+                realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                 creator="admin" lastModifier="admin" 
                 creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <SyncopeGroup id="5" name="secretary"
-                realm_id="1"
+  <SyncopeGroup id="a3c1a693-a6be-483f-a2b3-5cfec146f4bf" name="secretary"
+                realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                 creator="admin" lastModifier="admin" 
                 creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <SyncopeGroup id="6" name="director" userOwner_id="5"
-                realm_id="1"
+  <SyncopeGroup id="ebf97068-aa4b-4a85-9f01-680e8c4cf227" name="director"
+                userOwner_id="823074dc-d280-436d-a7dd-07399fae48ec"
+                realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                 creator="admin" lastModifier="admin" 
                 creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <SyncopeGroup id="7" name="managingDirector"
-                realm_id="1"
+  <SyncopeGroup id="bf825fe1-7320-4a54-bd64-143b5c18ab97" name="managingDirector"
+                realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                 creator="admin" lastModifier="admin" 
                 creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <SyncopeGroup id="8" name="otherchild"
-                realm_id="1"
+  <SyncopeGroup id="f779c0d4-633b-4be5-8f57-32eb478a3ca5" name="otherchild"
+                realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                 creator="admin" lastModifier="admin" 
                 creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <SyncopeGroup id="9" name="groupForWorkflowApproval"
-                realm_id="1"
+  <SyncopeGroup id="0cbcabd2-4410-4b6b-8f05-a052b451d18f" name="groupForWorkflowApproval"
+                realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                 creator="admin" lastModifier="admin" 
                 creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <SyncopeGroup id="10" name="managingConsultant"
-                realm_id="1"
+  <SyncopeGroup id="b8d38784-57e7-4595-859a-076222644b55" name="managingConsultant"
+                realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                 creator="admin" lastModifier="admin" 
                 creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <SyncopeGroup id="11" name="groupForWorkflowOptIn"
-                realm_id="1"
+  <SyncopeGroup id="268fed79-f440-4390-9435-b273768eb5d6" name="groupForWorkflowOptIn"
+                realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                 creator="admin" lastModifier="admin" 
                 creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <SyncopeGroup id="12" name="aGroupForPropagation"
-                realm_id="1"
+  <SyncopeGroup id="0626100b-a4ba-4e00-9971-86fad52a6216" name="aGroupForPropagation"
+                realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                 creator="admin" lastModifier="admin" 
                 creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <SyncopeGroup_AnyTypeClass group_id="12" anyTypeClass_name="csv"/>  
-  <SyncopeGroup id="13" name="bGroupForPropagation"
-                realm_id="1"
+  <SyncopeGroup_AnyTypeClass group_id="0626100b-a4ba-4e00-9971-86fad52a6216" anyTypeClass_id="csv"/>  
+  <SyncopeGroup id="ba9ed509-b1f5-48ab-a334-c8530a6422dc" name="bGroupForPropagation"
+                realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                 creator="admin" lastModifier="admin" 
                 creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <SyncopeGroup_AnyTypeClass group_id="13" anyTypeClass_name="csv"/>  
-  <SyncopeGroup id="14" name="artDirector"
-                realm_id="1"
+  <SyncopeGroup_AnyTypeClass group_id="ba9ed509-b1f5-48ab-a334-c8530a6422dc" anyTypeClass_id="csv"/>  
+  <SyncopeGroup id="ece66293-8f31-4a84-8e8d-23da36e70846" name="artDirector"
+                realm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28"
                 creator="admin" lastModifier="admin" 
                 creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>  
-  <SyncopeGroup id="15" name="additional"
-                realm_id="3"
+  <SyncopeGroup id="034740a9-fa10-453b-af37-dc7897e98fb1" name="additional"
+                realm_id="c5b75db1-fce7-470f-b780-3b9934d82a9d"
                 creator="admin" lastModifier="admin" 
                 creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <TypeExtension id="1" group_id="15" anyType_name="USER"/>
-  <TypeExtension_AnyTypeClass typeExtension_id="1" anyTypeClass_name="csv"/>
-  <TypeExtension_AnyTypeClass typeExtension_id="1" anyTypeClass_name="other"/>
-  <SyncopeGroup id="16" name="fake"
-                realm_id="2"
+  <TypeExtension id="84c1490c-a1d9-4b91-859c-fafbb0113a85"
+                 group_id="034740a9-fa10-453b-af37-dc7897e98fb1" anyType_id="USER"/>
+  <TypeExtension_AnyTypeClass typeExtension_id="84c1490c-a1d9-4b91-859c-fafbb0113a85" anyTypeClass_id="csv"/>
+  <TypeExtension_AnyTypeClass typeExtension_id="84c1490c-a1d9-4b91-859c-fafbb0113a85" anyTypeClass_id="other"/>
+  <SyncopeGroup id="e7ff94e8-19c9-4f0a-b8b7-28327edbf6ed" name="fake"
+                realm_id="722f3d84-9c2b-4525-8f6e-e4b82c55a36c"
                 creator="admin" lastModifier="admin" 
                 creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
   
-  <URelationship id="1" user_id="4" anyObject_id="1" type_name="neighborhood"/>
+  <URelationship id="ca20ffca-1305-442f-be9a-3723a0cd88ca"
+                 user_id="c9b2dec2-00a7-4855-97c0-d854842b4b24"
+                 anyObject_id="fc6dbc3a-6c07-4965-8781-921e7401a4a5" type_id="neighborhood"/>
 
-  <UMembership id="1" user_id="1" group_id="1"/>
-  <UMembership id="2" user_id="2" group_id="1"/>
-  <UMembership id="3" user_id="2" group_id="2"/>
-  <UMembership id="4" user_id="4" group_id="7"/>
-  <UMembership id="5" user_id="1" group_id="8"/>
-  <UMembership id="6" user_id="2" group_id="3"/>
-  <UMembership id="7" user_id="5" group_id="14"/>
+  <UMembership id="3d5e91f6-305e-45f9-ad30-4897d3d43bd9"
+               user_id="1417acbe-cbf6-4277-9372-e75e04f97000" group_id="37d15e4c-cdc1-460b-a591-8505c8133806"/>
+  <UMembership id="d53f7657-2b22-4e10-a2cd-c3379a4d1a31"
+               user_id="74cd8ece-715a-44a4-a736-e17b46c4e7e6" group_id="37d15e4c-cdc1-460b-a591-8505c8133806"/>
+  <UMembership id="8e42a132-55ae-4860-bebd-2ca00ba5e959"
+               user_id="74cd8ece-715a-44a4-a736-e17b46c4e7e6" group_id="b1f7c12d-ec83-441f-a50e-1691daaedf3b"/>
+  <UMembership id="40e409a4-d870-4792-b820-30668f1269b9"
+               user_id="c9b2dec2-00a7-4855-97c0-d854842b4b24" group_id="bf825fe1-7320-4a54-bd64-143b5c18ab97"/>
+  <UMembership id="6d8a7dc0-d4bc-4b7e-b058-abcd3df28f28"
+               user_id="1417acbe-cbf6-4277-9372-e75e04f97000" group_id="f779c0d4-633b-4be5-8f57-32eb478a3ca5"/>
+  <UMembership id="34f2d776-58b1-4640-8e64-e979b4242a18"
+               user_id="74cd8ece-715a-44a4-a736-e17b46c4e7e6" group_id="29f96485-729e-4d31-88a1-6fc60e4677f3"/>
+  <UMembership id="8cfb78fc-d0e7-4f08-a0ae-d7abf3223b6f"
+               user_id="823074dc-d280-436d-a7dd-07399fae48ec" group_id="ece66293-8f31-4a84-8e8d-23da36e70846"/>
 
-  <PlainSchema name="fullname" type="String" anyTypeClass_name="minimal user"
+  <SyncopeSchema id="fullname"/>
+  <PlainSchema id="fullname" type="String" anyTypeClass_id="minimal user"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="1" readonly="0"/>
-  <PlainSchema name="userId" type="String" anyTypeClass_name="minimal user"
+  <SyncopeSchema id="userId"/>
+  <PlainSchema id="userId" type="String" anyTypeClass_id="minimal user"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="1" readonly="0"
                validatorClass="org.apache.syncope.core.persistence.jpa.attrvalue.validation.EmailAddressValidator"/>
-  <PlainSchema name="loginDate" type="Date" anyTypeClass_name="other"
+  <SyncopeSchema id="loginDate"/>
+  <PlainSchema id="loginDate" type="Date" anyTypeClass_id="other"
                mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"
                conversionPattern="yyyy-MM-dd"/>
-  <PlainSchema name="firstname" type="String" anyTypeClass_name="minimal user"
+  <SyncopeSchema id="firstname"/>
+  <PlainSchema id="firstname" type="String" anyTypeClass_id="minimal user"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="surname" type="String" anyTypeClass_name="minimal user"
+  <SyncopeSchema id="surname"/>
+  <PlainSchema id="surname" type="String" anyTypeClass_id="minimal user"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="type" type="String" anyTypeClass_name="other"
+  <SyncopeSchema id="ctype"/>
+  <PlainSchema id="ctype" type="String" anyTypeClass_id="other"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="email" type="String" anyTypeClass_name="minimal user"
+  <SyncopeSchema id="email"/>
+  <PlainSchema id="email" type="String" anyTypeClass_id="minimal user"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
                validatorClass="org.apache.syncope.core.persistence.jpa.attrvalue.validation.EmailAddressValidator"/>
-  <PlainSchema name="activationDate" type="Date" anyTypeClass_name="other"
+  <SyncopeSchema id="activationDate"/>
+  <PlainSchema id="activationDate" type="Date" anyTypeClass_id="other"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
                conversionPattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ"/>
-  <PlainSchema name="uselessReadonly" type="String" anyTypeClass_name="other"
+  <SyncopeSchema id="uselessReadonly"/>
+  <PlainSchema id="uselessReadonly" type="String" anyTypeClass_id="other"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="1"/>
-  <PlainSchema name="cool" type="Boolean" anyTypeClass_name="other" 
+  <SyncopeSchema id="cool"/>
+  <PlainSchema id="cool" type="Boolean" anyTypeClass_id="other" 
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="gender" type="Enum" anyTypeClass_name="other"
+  <SyncopeSchema id="gender"/>
+  <PlainSchema id="gender" type="Enum" anyTypeClass_id="other"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
                enumerationValues="M;F"/>
-  <PlainSchema name="aLong" type="Long" anyTypeClass_name="other"
+  <SyncopeSchema id="aLong"/>
+  <PlainSchema id="aLong" type="Long" anyTypeClass_id="other"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="makeItDouble" type="Long" anyTypeClass_name="other"
+  <SyncopeSchema id="makeItDouble"/>
+  <PlainSchema id="makeItDouble" type="Long" anyTypeClass_id="other"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="obscure" type="Encrypted" anyTypeClass_name="other"
+  <SyncopeSchema id="obscure"/>
+  <PlainSchema id="obscure" type="Encrypted" anyTypeClass_id="other"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
                secretKey="7abcdefghilmnopqrstuvz9#" cipherAlgorithm="SHA"/>
-  <PlainSchema name="photo" type="Binary" anyTypeClass_name="other"
+  <SyncopeSchema id="photo"/>
+  <PlainSchema id="photo" type="Binary" anyTypeClass_id="other"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
                mimeType="image/jpeg"/>
 
-  <DerSchema name="csvuserid" expression="firstname + ',' + surname" anyTypeClass_name="csv"/>
-  <DerSchema name="cn" expression="surname + ', ' + firstname" anyTypeClass_name="minimal user"/>
-  <DerSchema name="noschema" expression="surname + ', ' + notfound" anyTypeClass_name="other"/>
-  <DerSchema name="info" expression="username + ' - ' + creationDate + '[' + failedLogins + ']'" anyTypeClass_name="minimal user"/>
+  <SyncopeSchema id="csvuserid"/>
+  <DerSchema id="csvuserid" expression="firstname + ',' + surname" anyTypeClass_id="csv"/>
+  <SyncopeSchema id="cn"/>
+  <DerSchema id="cn" expression="surname + ', ' + firstname" anyTypeClass_id="minimal user"/>
+  <SyncopeSchema id="noschema"/>
+  <DerSchema id="noschema" expression="surname + ', ' + notfound" anyTypeClass_id="other"/>
+  <SyncopeSchema id="info"/>
+  <DerSchema id="info" expression="username + ' - ' + creationDate + '[' + failedLogins + ']'" anyTypeClass_id="minimal user"/>
 
-  <PlainSchema name="icon" type="String" anyTypeClass_name="minimal group"
+  <SyncopeSchema id="icon"/>
+  <PlainSchema id="icon" type="String" anyTypeClass_id="minimal group"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>                
-  <PlainSchema name="show" type="Boolean" anyTypeClass_name="minimal group"
+  <SyncopeSchema id="show"/>
+  <PlainSchema id="show" type="Boolean" anyTypeClass_id="minimal group"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="rderived_sx" type="String" anyTypeClass_name="minimal group"
+  <SyncopeSchema id="rderived_sx"/>
+  <PlainSchema id="rderived_sx" type="String" anyTypeClass_id="minimal group"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="rderived_dx" type="String" anyTypeClass_name="minimal group"
+  <SyncopeSchema id="rderived_dx"/>
+  <PlainSchema id="rderived_dx" type="String" anyTypeClass_id="minimal group"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>           
-  <PlainSchema name="title" type="String" anyTypeClass_name="minimal group"
+  <SyncopeSchema id="title"/>
+  <PlainSchema id="title" type="String" anyTypeClass_id="minimal group"
                mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
 
-  <DerSchema name="rderiveddata" expression="rderived_sx + '-' + rderived_dx"
-             anyTypeClass_name="minimal group"/>
-  <DerSchema name="displayProperty" expression="icon + ': ' + show"
-             anyTypeClass_name="minimal group"/>
-  <DerSchema name="rderToBePropagated" expression="rderived_sx + '-' + rderived_dx"
-             anyTypeClass_name="minimal group"/>
+  <SyncopeSchema id="rderiveddata"/>
+  <DerSchema id="rderiveddata" expression="rderived_sx + '-' + rderived_dx"
+             anyTypeClass_id="minimal group"/>
+  <SyncopeSchema id="displayProperty"/>
+  <DerSchema id="displayProperty" expression="icon + ': ' + show"
+             anyTypeClass_id="minimal group"/>
+  <SyncopeSchema id="rderToBePropagated"/>
+  <DerSchema id="rderToBePropagated" expression="rderived_sx + '-' + rderived_dx"
+             anyTypeClass_id="minimal group"/>
 
-  <DerSchema name="rderivedschema" expression="rderived_sx + '-' + rderived_dx"  anyTypeClass_name="minimal group"/>
+  <SyncopeSchema id="rderivedschema"/>
+  <DerSchema id="rderivedschema" expression="rderived_sx + '-' + rderived_dx"  anyTypeClass_id="minimal group"/>
 
-  <PlainSchema name="subscriptionDate" type="Date" anyTypeClass_name="generic membership"
+  <SyncopeSchema id="subscriptionDate"/>
+  <PlainSchema id="subscriptionDate" type="Date" anyTypeClass_id="generic membership"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
                conversionPattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ"/>
-  <PlainSchema name="mderived_sx" type="String" anyTypeClass_name="generic membership"
+  <SyncopeSchema id="mderived_sx"/>
+  <PlainSchema id="mderived_sx" type="String" anyTypeClass_id="generic membership"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="mderived_dx" type="String" anyTypeClass_name="generic membership"
+  <SyncopeSchema id="mderived_dx"/>
+  <PlainSchema id="mderived_dx" type="String" anyTypeClass_id="generic membership"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>          
-  <PlainSchema name="postalAddress" type="String" anyTypeClass_name="generic membership"
+  <SyncopeSchema id="postalAddress"/>
+  <PlainSchema id="postalAddress" type="String" anyTypeClass_id="generic membership"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
 
-  <DerSchema name="mderiveddata" expression="mderived_sx + '-' + mderived_dx"/>
-  <DerSchema name="mderToBePropagated" expression="mderived_sx + '-' + mderived_dx" 
-             anyTypeClass_name="generic membership"/>
-        
-  <PlainSchema name="model" type="String" anyTypeClass_name="minimal printer"
+  <SyncopeSchema id="mderiveddata"/>
+  <DerSchema id="mderiveddata" expression="mderived_sx + '-' + mderived_dx"/>
+  <SyncopeSchema id="mderToBePropagated"/>
+  <DerSchema id="mderToBePropagated" expression="mderived_sx + '-' + mderived_dx" 
+             anyTypeClass_id="generic membership"/>
+         
+  <SyncopeSchema id="model"/>
+  <PlainSchema id="model" type="String" anyTypeClass_id="minimal printer"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="location" type="String" anyTypeClass_name="minimal printer"
+  <SyncopeSchema id="location"/>
+  <PlainSchema id="location" type="String" anyTypeClass_id="minimal printer"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
     
-  <APlainAttr id="1" owner_id="1" schema_name="model"/>
-  <APlainAttrValue id="1" attribute_id="1" stringValue="Canon MFC8030"/>
-  <APlainAttr id="2" owner_id="1" schema_name="location"/>
-  <APlainAttrValue id="2" attribute_id="2" stringValue="1st floor"/>
+  <APlainAttr id="956a8440-1df7-4ed6-b156-04173ca47528" owner_id="fc6dbc3a-6c07-4965-8781-921e7401a4a5" schema_id="model"/>
+  <APlainAttrValue id="15f64e99-20cc-42ec-a77a-3396dea4248f" attribute_id="956a8440-1df7-4ed6-b156-04173ca47528" stringValue="Canon MFC8030"/>
+  <APlainAttr id="1fa796fd-c7e2-414e-8ad3-ac86b729d62c" owner_id="fc6dbc3a-6c07-4965-8781-921e7401a4a5" schema_id="location"/>
+  <APlainAttrValue id="ad0452c9-93b9-4248-b2ca-48ef8a1cf5b5" attribute_id="1fa796fd-c7e2-414e-8ad3-ac86b729d62c" stringValue="1st floor"/>
     
-  <APlainAttr id="3" owner_id="2" schema_name="model"/>
-  <APlainAttrValue id="3" attribute_id="3" stringValue="HP Laserjet 1300n"/>
-  <APlainAttr id="4" owner_id="2" schema_name="location"/>
-  <APlainAttrValue id="4" attribute_id="4" stringValue="2nd floor"/>
+  <APlainAttr id="b8342732-81bd-440b-91ac-b8cdad288ed5" owner_id="8559d14d-58c2-46eb-a2d4-a7d35161e8f8" schema_id="model"/>
+  <APlainAttrValue id="50e852ac-68ba-4b12-85ca-e366987fd855" attribute_id="b8342732-81bd-440b-91ac-b8cdad288ed5" stringValue="HP Laserjet 1300n"/>
+  <APlainAttr id="c4cb0684-a033-425c-8b1b-d283597f999b" owner_id="8559d14d-58c2-46eb-a2d4-a7d35161e8f8" schema_id="location"/>
+  <APlainAttrValue id="7b954dee-8a14-4fa1-a433-cff0d1f888f8" attribute_id="c4cb0684-a033-425c-8b1b-d283597f999b" stringValue="2nd floor"/>
 
-  <UPlainAttr id="99" owner_id="1" schema_name="type"/>
-  <UPlainAttrValue id="9" attribute_id="99" stringValue="G"/>
-  <UPlainAttr id="100" owner_id="1" schema_name="fullname"/>
-  <UPlainAttrUniqueValue id="10" attribute_id="100" schema_name="fullname" stringValue="Gioacchino Rossini"/>
-  <UPlainAttr id="101" owner_id="1" schema_name="firstname"/>
-  <UPlainAttrValue id="11" attribute_id="101" stringValue="Gioacchino"/>
-  <UPlainAttr id="102" owner_id="1" schema_name="surname"/>
-  <UPlainAttrValue id="12" attribute_id="102" stringValue="Rossini"/>
-  <UPlainAttr id="103" owner_id="1" schema_name="userId"/>
-  <UPlainAttrUniqueValue id="13" attribute_id="103" schema_name="userId" stringValue="rossini@apache.org"/>
-  <UPlainAttr id="104" owner_id="1" schema_name="loginDate"/>
-  <UPlainAttrValue id="14" attribute_id="104" dateValue="2009-05-26"/>
-  <UPlainAttrValue id="15" attribute_id="104" dateValue="2010-05-26 15:40:04"/>
+  <UPlainAttr id="57eed138-a94f-475c-b2de-fdb4ae8cb0fb" owner_id="1417acbe-cbf6-4277-9372-e75e04f97000" schema_id="ctype"/>
+  <UPlainAttrValue id="56189459-5ea3-4051-8f88-39c5c07d3e44" attribute_id="57eed138-a94f-475c-b2de-fdb4ae8cb0fb" stringValue="G"/>
+  <UPlainAttr id="01f22fbd-b672-40af-b528-686d9b27ebc4" owner_id="1417acbe-cbf6-4277-9372-e75e04f97000" schema_id="fullname"/>
+  <UPlainAttrUniqueValue id="5e06f081-4859-422c-bbac-e44f2e09a7fc" attribute_id="01f22fbd-b672-40af-b528-686d9b27ebc4" schema_id="fullname" stringValue="Gioacchino Rossini"/>
+  <UPlainAttr id="9d137d0c-1b04-4e9c-81f6-6203ae8baab4" owner_id="1417acbe-cbf6-4277-9372-e75e04f97000" schema_id="firstname"/>
+  <UPlainAttrValue id="c56d9faa-4192-4e6c-92c5-345189352d2e" attribute_id="9d137d0c-1b04-4e9c-81f6-6203ae8baab4" stringValue="Gioacchino"/>
+  <UPlainAttr id="65f4ef2c-f249-424b-9390-7faacebf1725" owner_id="1417acbe-cbf6-4277-9372-e75e04f97000" schema_id="surname"/>
+  <UPlainAttrValue id="c8d941b5-b64b-44ed-8f5d-a87520f773cb" attribute_id="65f4ef2c-f249-424b-9390-7faacebf1725" stringValue="Rossini"/>
+  <UPlainAttr id="1861e249-fc54-4aea-b8b8-3eed7a4d14c8" owner_id="1417acbe-cbf6-4277-9372-e75e04f97000" schema_id="userId"/>
+  <UPlainAttrUniqueValue id="25b0bdc7-ef0d-4aca-8cb6-fcaff45a1041" attribute_id="1861e249-fc54-4aea-b8b8-3eed7a4d14c8" schema_id="userId" stringValue="rossini@apache.org"/>
+  <UPlainAttr id="9d0d9e40-1b18-488e-9482-37dab82163c9" owner_id="1417acbe-cbf6-4277-9372-e75e04f97000" schema_id="loginDate"/>
+  <UPlainAttrValue id="7034de3b-3687-4db5-8454-363468f1a9de" attribute_id="9d0d9e40-1b18-488e-9482-37dab82163c9" dateValue="2009-05-26"/>
+  <UPlainAttrValue id="bd8278a7-adcd-4627-9fba-3b621c26b64d" attribute_id="9d0d9e40-1b18-488e-9482-37dab82163c9" dateValue="2010-05-26 15:40:04"/>
 
-  <UPlainAttr id="105" owner_id="2" schema_name="fullname"/>
-  <UPlainAttrUniqueValue id="16" attribute_id="105" schema_name="fullname" stringValue="Giuseppe Verdi"/>
-  <UPlainAttr id="106" owner_id="2" schema_name="firstname"/>
-  <UPlainAttrValue id="17" attribute_id="106" stringValue="Giuseppe"/>
-  <UPlainAttr id="107" owner_id="2" schema_name="surname"/>
-  <UPlainAttrValue id="18" attribute_id="107" stringValue="Verdi"/>
-  <UPlainAttr id="108" owner_id="2" schema_name="userId"/>
-  <UPlainAttrUniqueValue id="19" attribute_id="108" schema_name="userId" stringValue="verdi@apache.org"/>
+  <UPlainAttr id="b8cde98a-16e7-446c-9bf3-db0fac6bc5cf" owner_id="74cd8ece-715a-44a4-a736-e17b46c4e7e6" schema_id="fullname"/>
+  <UPlainAttrUniqueValue id="1fbda591-9421-4511-ae8e-35b59b68487c" attribute_id="b8cde98a-16e7-446c-9bf3-db0fac6bc5cf" schema_id="fullname" stringValue="Giuseppe Verdi"/>
+  <UPlainAttr id="f67e6ade-5d5e-467a-869a-b29653ec8c89" owner_id="74cd8ece-715a-44a4-a736-e17b46c4e7e6" schema_id="firstname"/>
+  <UPlainAttrValue id="f80b0c29-99db-47a7-a5aa-b4e054d25741" attribute_id="f67e6ade-5d5e-467a-869a-b29653ec8c89" stringValue="Giuseppe"/>
+  <UPlainAttr id="24348fd6-d6a6-4cb7-a97e-f184b91395bc" owner_id="74cd8ece-715a-44a4-a736-e17b46c4e7e6" schema_id="surname"/>
+  <UPlainAttrValue id="4d19a121-511d-414e-b082-c72581700961" attribute_id="24348fd6-d6a6-4cb7-a97e-f184b91395bc" stringValue="Verdi"/>
+  <UPlainAttr id="bf296d5f-10df-421d-a2c0-bc489371b48c" owner_id="74cd8ece-715a-44a4-a736-e17b46c4e7e6" schema_id="userId"/>
+  <UPlainAttrUniqueValue id="5812647b-86b3-4cd9-85db-2639dd19af3d" attribute_id="bf296d5f-10df-421d-a2c0-bc489371b48c" schema_id="userId" stringValue="verdi@apache.org"/>
 
-  <UPlainAttr id="109" owner_id="3" schema_name="firstname"/>
-  <UPlainAttrValue id="20" attribute_id="109" stringValue="Antonio"/>
-  <UPlainAttr id="110" owner_id="3" schema_name="surname"/>
-  <UPlainAttrValue id="21" attribute_id="110" stringValue="Vivaldi"/>
-  <UPlainAttr id="111" owner_id="3" schema_name="fullname"/>
-  <UPlainAttrUniqueValue id="22" attribute_id="111" schema_name="fullname" stringValue="Antonio Vivaldi"/>
-  <UPlainAttr id="112" owner_id="3" schema_name="userId"/>
-  <UPlainAttrUniqueValue id="23" attribute_id="112" schema_name="userId" stringValue="vivaldi@apache.org"/>
+  <UPlainAttr id="ef97c9bd-f899-4d23-b43f-2fb27064fee5" owner_id="b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee" schema_id="firstname"/>
+  <UPlainAttrValue id="39ee0a93-0cb9-4921-b033-2715b2b72131" attribute_id="ef97c9bd-f899-4d23-b43f-2fb27064fee5" stringValue="Antonio"/>
+  <UPlainAttr id="d610b2e3-81d9-4a9a-8a1e-26a96e7eeb6e" owner_id="b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee" schema_id="surname"/>
+  <UPlainAttrValue id="8531b8d3-0214-412f-b115-f6cc81124576" attribute_id="d610b2e3-81d9-4a9a-8a1e-26a96e7eeb6e" stringValue="Vivaldi"/>
+  <UPlainAttr id="75c2e13f-8d17-4232-ae70-6ac8d6b6b95e" owner_id="b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee" schema_id="fullname"/>
+  <UPlainAttrUniqueValue id="fbbdc4cb-c7da-42dd-9fc2-1516ac2a8672" attribute_id="75c2e13f-8d17-4232-ae70-6ac8d6b6b95e" schema_id="fullname" stringValue="Antonio Vivaldi"/>
+  <UPlainAttr id="d4fe3920-903a-4168-b151-d53dc0297284" owner_id="b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee" schema_id="userId"/>
+  <UPlainAttrUniqueValue id="aa8a6cbf-5afb-43a6-862b-f2da32c71d09" attribute_id="d4fe3920-903a-4168-b151-d53dc0297284" schema_id="userId" stringValue="vivaldi@apache.org"/>
 
-  <UPlainAttr id="113" owner_id="4" schema_name="firstname"/>
-  <UPlainAttrValue id="24" attribute_id="113" stringValue="Vincenzo"/>
-  <UPlainAttr id="114" owner_id="4" schema_name="surname"/>
-  <UPlainAttrValue id="25" attribute_id="114" stringValue="Bellini"/>
-  <UPlainAttr id="115" owner_id="4" schema_name="fullname"/>
-  <UPlainAttrUniqueValue id="26" attribute_id="115" schema_name="fullname" stringValue="Vincenzo Bellini"/>
-  <UPlainAttr id="116" owner_id="4" schema_name="userId"/>
-  <UPlainAttrUniqueValue id="27" attribute_id="116" schema_name="userId" stringValue="bellini@apache.org"/>
-  <UPlainAttr id="117" owner_id="4" schema_name="loginDate"/>
-  <UPlainAttrValue id="28" attribute_id="117" dateValue="2009-06-24"/>
-  <UPlainAttr id="118" owner_id="4" schema_name="cool"/>
-  <UPlainAttrValue id="29" attribute_id="118" booleanValue="1"/>
-  <UPlainAttr id="119" owner_id="4" schema_name="gender"/>
-  <UPlainAttrValue id="30" attribute_id="119" stringValue="M"/>
+  <UPlainAttr id="c2511535-dfc1-4141-8ffd-9bbbca4b0f6b" owner_id="c9b2dec2-00a7-4855-97c0-d854842b4b24" schema_id="firstname"/>
+  <UPlainAttrValue id="24" attribute_id="c2511535-dfc1-4141-8ffd-9bbbca4b0f6b" stringValue="Vincenzo"/>
+  <UPlainAttr id="05b10553-343b-4703-977f-21b2e16c64ab" owner_id="c9b2dec2-00a7-4855-97c0-d854842b4b24" schema_id="surname"/>
+  <UPlainAttrValue id="e88156c6-73eb-47a5-985c-878b8d18cca4" attribute_id="05b10553-343b-4703-977f-21b2e16c64ab" stringValue="Bellini"/>
+  <UPlainAttr id="33cefe5c-c708-46f5-9588-d9bd862e9b51" owner_id="c9b2dec2-00a7-4855-97c0-d854842b4b24" schema_id="fullname"/>
+  <UPlainAttrUniqueValue id="14da5ad6-8204-45c6-81e5-332a1260837e" attribute_id="33cefe5c-c708-46f5-9588-d9bd862e9b51" schema_id="fullname" stringValue="Vincenzo Bellini"/>
+  <UPlainAttr id="0f71c875-82dd-40d6-b352-ced78e041be5" owner_id="c9b2dec2-00a7-4855-97c0-d854842b4b24" schema_id="userId"/>
+  <UPlainAttrUniqueValue id="c052271f-84ac-4cc4-9156-2159544e5ae2" attribute_id="0f71c875-82dd-40d6-b352-ced78e041be5" schema_id="userId" stringValue="bellini@apache.org"/>
+  <UPlainAttr id="35f407a2-d254-4890-9e45-5a7dd8c8df7d" owner_id="c9b2dec2-00a7-4855-97c0-d854842b4b24" schema_id="loginDate"/>
+  <UPlainAttrValue id="0c67225a-030a-4c56-b337-17cf7a311f0f" attribute_id="35f407a2-d254-4890-9e45-5a7dd8c8df7d" dateValue="2009-06-24"/>
+  <UPlainAttr id="a38423c2-4c29-4eeb-aa14-d984f78c083d" owner_id="c9b2dec2-00a7-4855-97c0-d854842b4b24" schema_id="cool"/>
+  <UPlainAttrValue id="16dd73d3-4f89-4ebc-a446-41a06848bdb3" attribute_id="a38423c2-4c29-4eeb-aa14-d984f78c083d" booleanValue="1"/>
+  <UPlainAttr id="3e86f9fa-a19b-4f7b-b19a-f28e1b052a68" owner_id="c9b2dec2-00a7-4855-97c0-d854842b4b24" schema_id="gender"/>
+  <UPlainAttrValue id="55efeccf-c124-4115-99e1-50e04dfc18e1" attribute_id="3e86f9fa-a19b-4f7b-b19a-f28e1b052a68" stringValue="M"/>
   
-  <UPlainAttr id="120" owner_id="5" schema_name="firstname"/>
-  <UPlainAttrValue id="31" attribute_id="120" stringValue="Giacomo"/>
-  <UPlainAttr id="121" owner_id="5" schema_name="surname"/>
-  <UPlainAttrValue id="32" attribute_id="121" stringValue="Puccini"/>
-  <UPlainAttr id="122" owner_id="5" schema_name="fullname"/>
-  <UPlainAttrUniqueValue id="33" attribute_id="122" schema_name="fullname" stringValue="Giacomo Puccini"/>
-  <UPlainAttr id="123" owner_id="5" schema_name="userId"/>
-  <UPlainAttrUniqueValue id="34" attribute_id="123" schema_name="userId" stringValue="puccini@apache.org"/>
+  <UPlainAttr id="185ce8e4-fc28-4b0b-9f41-595b6ca53e6f" owner_id="823074dc-d280-436d-a7dd-07399fae48ec" schema_id="firstname"/>
+  <UPlainAttrValue id="1e76b9b8-2fa3-4a96-8098-f96b6bfe3284" attribute_id="185ce8e4-fc28-4b0b-9f41-595b6ca53e6f" stringValue="Giacomo"/>
+  <UPlainAttr id="28023d9c-18bc-431c-80e2-412741d235e6" owner_id="823074dc-d280-436d-a7dd-07399fae48ec" schema_id="surname"/>
+  <UPlainAttrValue id="506d5503-d963-4005-aae9-22c16a20e81d" attribute_id="28023d9c-18bc-431c-80e2-412741d235e6" stringValue="Puccini"/>
+  <UPlainAttr id="17141999-5e09-4364-9cd2-dc05632e0a63" owner_id="823074dc-d280-436d-a7dd-07399fae48ec" schema_id="fullname"/>
+  <UPlainAttrUniqueValue id="c9afa8f6-9a8a-4c8e-b4d1-a46f50996a38" attribute_id="17141999-5e09-4364-9cd2-dc05632e0a63" schema_id="fullname" stringValue="Giacomo Puccini"/>
+  <UPlainAttr id="15704022-315d-4740-8f79-7d60dd6165d4" owner_id="823074dc-d280-436d-a7dd-07399fae48ec" schema_id="userId"/>
+  <UPlainAttrUniqueValue id="1e565925-30e3-4ed0-8894-2b70d2ebaa6a" attribute_id="15704022-315d-4740-8f79-7d60dd6165d4" schema_id="userId" stringValue="puccini@apache.org"/>
   
-  <UPlainAttr id="124" owner_id="2" schema_name="email"/>
-  <UPlainAttrValue id="35" attribute_id="124" stringValue="verdi@syncope.org"/>
-  <UPlainAttr id="125" owner_id="3" schema_name="email"/>
-  <UPlainAttrValue id="36" attribute_id="125" stringValue="vivaldi@syncope.org"/>
-  <UPlainAttr id="126" owner_id="3" schema_name="type"/>
-  <UPlainAttrValue id="37" attribute_id="126" stringValue="F"/>
+  <UPlainAttr id="cf2eb45f-0877-49f3-9eb7-844fea0e1a64" owner_id="74cd8ece-715a-44a4-a736-e17b46c4e7e6" schema_id="email"/>
+  <UPlainAttrValue id="e5cfa8e0-6089-415a-bf5d-54a123c2cb6b" attribute_id="cf2eb45f-0877-49f3-9eb7-844fea0e1a64" stringValue="verdi@syncope.org"/>
+  <UPlainAttr id="514f586e-fd38-45a8-a2af-730d297f1022" owner_id="b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee" schema_id="email"/>
+  <UPlainAttrValue id="272b5971-15b5-4435-b816-34ca3b8184f3" attribute_id="514f586e-fd38-45a8-a2af-730d297f1022" stringValue="vivaldi@syncope.org"/>
+  <UPlainAttr id="4192de6e-11dd-4435-80a8-4340d3586af1" owner_id="b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee" schema_id="ctype"/>
+  <UPlainAttrValue id="e171e555-b47e-45b9-b291-d027a5bf9596" attribute_id="4192de6e-11dd-4435-80a8-4340d3586af1" stringValue="F"/>
    
-  <GPlainAttr id="600" owner_id="1" schema_name="icon"/>
-  <GPlainAttrValue attribute_id="600" id="40" stringValue="niceIcon"/>
+  <GPlainAttr id="86eeb796-e419-4409-b5e2-7c2adb342ca4" owner_id="37d15e4c-cdc1-460b-a591-8505c8133806" schema_id="icon"/>
+  <GPlainAttrValue attribute_id="86eeb796-e419-4409-b5e2-7c2adb342ca4" id="4a6a769e-a9c8-40f1-9746-b23d5af5a50a" stringValue="niceIcon"/>
 
-  <GPlainAttr id="700" owner_id="2" schema_name="icon"/>
-  <GPlainAttrValue attribute_id="700" id="41" stringValue="badIcon"/>
+  <GPlainAttr id="f82fc61f-8e74-4a4b-9f9e-b8a41f38aad9" owner_id="b1f7c12d-ec83-441f-a50e-1691daaedf3b" schema_id="icon"/>
+  <GPlainAttrValue attribute_id="f82fc61f-8e74-4a4b-9f9e-b8a41f38aad9" id="49f35879-2510-4f11-a901-24152f753538" stringValue="badIcon"/>
 
-  <GPlainAttr id="800" owner_id="1"  schema_name="show"/>
-  <GPlainAttrValue attribute_id="800" id="42" booleanValue="1"/>
+  <GPlainAttr id="8a9eb141-a946-4f50-9dfa-7a59b5e54e47" owner_id="37d15e4c-cdc1-460b-a591-8505c8133806"  schema_id="show"/>
+  <GPlainAttrValue attribute_id="8a9eb141-a946-4f50-9dfa-7a59b5e54e47" id="06dc6390-ca18-4d13-86e3-06aaae247c1b" booleanValue="1"/>
 
-  <GPlainAttr id="900" owner_id="6" schema_name="icon"/>
-  <GPlainAttrValue attribute_id="900" id="43" stringValue="icon6"/>
+  <GPlainAttr id="03f91f9f-95ce-44f9-a3e2-681fba8a0bc9" owner_id="ebf97068-aa4b-4a85-9f01-680e8c4cf227" schema_id="icon"/>
+  <GPlainAttrValue attribute_id="03f91f9f-95ce-44f9-a3e2-681fba8a0bc9" id="88c44e8f-c3c6-40f6-a564-5872d1b14299" stringValue="icon6"/>
 
-  <GPlainAttr id="950" owner_id="4" schema_name="icon"/>
-  <GPlainAttrValue attribute_id="950" id="44" stringValue="icon4"/>
+  <GPlainAttr id="cd3d4567-aeca-4f73-98c1-545136080abd" owner_id="8fb2d51e-c605-4e80-a72b-13ffecf1aa9a" schema_id="icon"/>
+  <GPlainAttrValue attribute_id="cd3d4567-aeca-4f73-98c1-545136080abd" id="5d59450a-2f50-4249-8548-64e529b75e21" stringValue="icon4"/>
 
-  <GPlainAttr id="992" owner_id="1" schema_name="rderived_sx"/>
-  <GPlainAttrValue attribute_id="992" id="92" stringValue="sx"/>
+  <GPlainAttr id="ddfda04c-62ad-4a6f-bc15-f25f848a575e" owner_id="37d15e4c-cdc1-460b-a591-8505c8133806" schema_id="rderived_sx"/>
+  <GPlainAttrValue id="caf45fb5-f91d-4bdb-b9c5-c3fe75890f24" attribute_id="ddfda04c-62ad-4a6f-bc15-f25f848a575e" stringValue="sx"/>
 
-  <GPlainAttr id="993" owner_id="1" schema_name="rderived_dx"/>
-  <GPlainAttrValue attribute_id="993" id="93" stringValue="dx"/>
+  <GPlainAttr id="4fcba413-8097-4cd3-8629-21a56ebb95ba" owner_id="37d15e4c-cdc1-460b-a591-8505c8133806" schema_id="rderived_dx"/>
+  <GPlainAttrValue attribute_id="4fcba413-8097-4cd3-8629-21a56ebb95ba" id="04b7b7ca-c2e9-44a4-8e86-000d9b982bf8" stringValue="dx"/>
 
-  <GPlainAttr id="994" owner_id="12" schema_name="title"/>
-  <GPlainAttrValue attribute_id="994" id="94" stringValue="r12"/>
+  <GPlainAttr id="1be7cf7e-b05c-4089-8ecb-fcafe0a162b9" owner_id="0626100b-a4ba-4e00-9971-86fad52a6216" schema_id="title"/>
+  <GPlainAttrValue attribute_id="1be7cf7e-b05c-4089-8ecb-fcafe0a162b9" id="0f5255af-34f5-4372-93a3-ede2778303d8" stringValue="r12"/>
   
-  <GPlainAttr id="995" owner_id="13" schema_name="title"/>
-  <GPlainAttrValue attribute_id="995" id="95" stringValue="r13"/>
+  <GPlainAttr id="22690472-ed3f-4972-8979-4c9251fab044" owner_id="ba9ed509-b1f5-48ab-a334-c8530a6422dc" schema_id="title"/>
+  <GPlainAttrValue attribute_id="22690472-ed3f-4972-8979-4c9251fab044" id="e16765e6-f806-469e-ae34-1ddf56f2102a" stringValue="r13"/>
 
-  <ConnInstance id="100" displayName="ConnInstance100"
+  <ConnInstance id="88a7a819-dab5-46b4-9b90-0b9769eabdb8" displayName="ConnInstance100"
                 location="${connid.location}"
                 bundleName="net.tirasa.connid.bundles.soap"
                 connectorName="net.tirasa.connid.bundles.soap.WebServiceConnector"
                 version="${connid.soap.version}"
                 jsonConf='[{"schema":{"name":"endpoint","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["http://localhost:${cargo.servlet.port}/wssample/services/provisioning"]},{"schema":{"name":"servicename","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["net.tirasa.connid.bundles.soap.provisioning.interfaces.Provisioning"]}]'/>
-  <ConnInstance_capabilities ConnInstance_id="100" capability="CREATE"/>
-  <ConnInstance_capabilities ConnInstance_id="100" capability="UPDATE"/>
-  <ConnInstance_capabilities ConnInstance_id="100" capability="DELETE"/>
-  <ConnInstance_capabilities ConnInstance_id="100" capability="SEARCH"/>
+  <ConnInstance_capabilities connInstance_id="88a7a819-dab5-46b4-9b90-0b9769eabdb8" capability="CREATE"/>
+  <ConnInstance_capabilities connInstance_id="88a7a819-dab5-46b4-9b90-0b9769eabdb8" capability="UPDATE"/>
+  <ConnInstance_capabilities connInstance_id="88a7a819-dab5-46b4-9b90-0b9769eabdb8" capability="DELETE"/>
+  <ConnInstance_capabilities connInstance_id="88a7a819-dab5-46b4-9b90-0b9769eabdb8" capability="SEARCH"/>
 
-  <ConnInstance id="101" displayName="H2"
+  <ConnInstance id="5aa5b8be-7521-481a-9651-c557aea078c1" displayName="H2"
                 location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}"
                 bundleName="net.tirasa.connid.bundles.db.table"
                 connectorName="net.tirasa.connid.bundles.db.table.DatabaseTableConnector"
                 version="${connid.database.version}"
                 jsonConf='[{"schema":{"name":"disabledStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"user","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"keyColumn","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["id"]},{"schema":{"name":"retrievePassword","displayName":null,"helpMessage":null,"type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"cipherAlgorithm","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["SHA1"]},{"schema":{"name":"enabledStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"passwordColumn","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["password"]},{"schema":{"name":"jdbcDriver","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["org.h2.Driver"]},{"schema":{"name":"defaultStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"table","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["test"]},{"schema":{"name":"password","displayName":null,"helpMessage":null,"type":"org.identityconnectors.common.security.GuardedString","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"statusColumn","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["status"]},{"schema":{"name":"jdbcUrlTemplate","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["${testdb.url}"]}]'/>
-  <ConnInstance_capabilities ConnInstance_id="101" capability="AUTHENTICATE"/>
-  <ConnInstance_capabilities ConnInstance_id="101" capability="CREATE"/>
-  <ConnInstance_capabilities ConnInstance_id="101" capability="UPDATE"/>
-  <ConnInstance_capabilities ConnInstance_id="101" capability="DELETE"/>
-  <ConnInstance_capabilities ConnInstance_id="101" capability="SEARCH"/>
-  <ConnInstance_capabilities ConnInstance_id="101" capability="SYNC"/>
+  <ConnInstance_capabilities connInstance_id="5aa5b8be-7521-481a-9651-c557aea078c1" capability="AUTHENTICATE"/>
+  <ConnInstance_capabilities connInstance_id="5aa5b8be-7521-481a-9651-c557aea078c1" capability="CREATE"/>
+  <ConnInstance_capabilities connInstance_id="5aa5b8be-7521-481a-9651-c557aea078c1" capability="UPDATE"/>
+  <ConnInstance_capabilities connInstance_id="5aa5b8be-7521-481a-9651-c557aea078c1" capability="DELETE"/>
+  <ConnInstance_capabilities connInstance_id="5aa5b8be-7521-481a-9651-c557aea078c1" capability="SEARCH"/>
+  <ConnInstance_capabilities connInstance_id="5aa5b8be-7521-481a-9651-c557aea078c1" capability="SYNC"/>
 
-  <ConnInstance id="102" displayName="ConnInstance102"
+  <ConnInstance id="5ffbb4ac-a8c3-4b44-b699-11b398a1ba08" displayName="ConnInstance102"
                 location="${connid.location}"
                 bundleName="net.tirasa.connid.bundles.soap"
                 connectorName="net.tirasa.connid.bundles.soap.WebServiceConnector"
                 version="${connid.soap.version}"
                 connRequestTimeout="10"
                 jsonConf='[{"schema":{"name":"servicename","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["net.tirasa.connid.bundles.soap.provisioning.interfaces.Provisioning"]},{"schema":{"name":"endpoint","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":true,"values":["http://localhost:${cargo.servlet.port}/wssample/services/provisioning"]}]'/>
-  <ConnInstance_capabilities ConnInstance_id="102" capability="CREATE"/>
-  <ConnInstance_capabilities ConnInstance_id="102" capability="UPDATE"/>
-  <ConnInstance_capabilities ConnInstance_id="102" capability="DELETE"/>
-  <ConnInstance_capabilities ConnInstance_id="102" capability="SEARCH"/>
+  <ConnInstance_capabilities connInstance_id="5ffbb4ac-a8c3-4b44-b699-11b398a1ba08" capability="CREATE"/>
+  <ConnInstance_capabilities connInstance_id="5ffbb4ac-a8c3-4b44-b699-11b398a1ba08" capability="UPDATE"/>
+  <ConnInstance_capabilities connInstance_id="5ffbb4ac-a8c3-4b44-b699-11b398a1ba08" capability="DELETE"/>
+  <ConnInstance_capabilities connInstance_id="5ffbb4ac-a8c3-4b44-b699-11b398a1ba08" capability="SEARCH"/>
 
-  <ConnInstance id="103" displayName="ConnInstance103"
+  <ConnInstance id="fcf9f2b0-f7d6-42c9-84a6-61b28255a42b" displayName="ConnInstance103"
                 location="${connid.location}"
                 bundleName="net.tirasa.connid.bundles.soap"
                 connectorName="net.tirasa.connid.bundles.soap.WebServiceConnector"
                 version="${connid.soap.version}"
                 jsonConf='[{"schema":{"name":"endpoint","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["http://localhost:${cargo.servlet.port}/wssample/services/provisioning"]},{"schema":{"name":"servicename","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["net.tirasa.connid.bundles.soap.provisioning.interfaces.Provisioning"]}]'/>
 
-  <ConnInstance id="104" displayName="CSVDir"
+  <ConnInstance id="6c2acf1b-b052-46f0-8c56-7a8ad6905edf" displayName="CSVDir"
                 location="${connid.location}"
                 bundleName="net.tirasa.connid.bundles.csvdir"
                 connectorName="net.tirasa.connid.bundles.csvdir.CSVDirConnector"
                 version="${connid.csvdir.version}"
                 jsonConf='[{"schema":{"name":"fields","displayName":"fields","helpMessage":"Column names separated by comma","type":"[Ljava.lang.String;","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["id","name","surname","email","password","theirgroup","membership","status","deleted"]},{"schema":{"name":"keyColumnNames","displayName":"Key column name","helpMessage":"Name of the column used to identify user uniquely","type":"[Ljava.lang.String;","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["name","surname"]},{"schema":{"name":"deleteColumnName","displayName":"Delete column name","helpMessage":"Name of the column used to specify users to be deleted","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["deleted"]},{"schema":{"name":"passwordColumnName","displayName":"Password column name","helpMessage":"Name of the column used to specify user password","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["password"]},{"schema":{"name":"keyseparator","displayName":"Key separator","helpMessage":"Character used to separate keys in a multi-key scenario","type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[","]},{"schema":{"name":"ignoreHeader","displayName":"Ignore header","helpMessage":"Specify it first line file must be ignored","type":"java.lang.Boolean","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[false]},{"schema":{"name":"fieldDelimiter","displayName":"fieldDelimiter","helpMessage":"fieldDelimiter","type":"char","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[","]},{"schema":{"name":"quotationRequired","displayName":"Value quotation required","helpMessage":"Specify if value quotation is required","type":"java.lang.Boolean","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[false]},{"schema":{"name":"statusColumn","displayName":"statusColumn","helpMessage":"Status column","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["status"]},{"schema":{"name":"sourcePath","displayName":"Source path","helpMessage":"Absolute path of a directory where are located CSV files to be processed","type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["${test.csvdir.path}"]},{"schema":{"name":"fileMask","displayName":"File mask","helpMessage":"Regular expression describing files to be processed","type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["test.csv"]}]'/>
-  <ConnInstance_capabilities ConnInstance_id="104" capability="CREATE"/>
-  <ConnInstance_capabilities ConnInstance_id="104" capability="UPDATE"/>
-  <ConnInstance_capabilities ConnInstance_id="104" capability="DELETE"/>
-  <ConnInstance_capabilities ConnInstance_id="104" capability="SEARCH"/>
-  <ConnInstance_capabilities ConnInstance_id="104" capability="SYNC"/>
+  <ConnInstance_capabilities connInstance_id="6c2acf1b-b052-46f0-8c56-7a8ad6905edf" capability="CREATE"/>
+  <ConnInstance_capabilities connInstance_id="6c2acf1b-b052-46f0-8c56-7a8ad6905edf" capability="UPDATE"/>
+  <ConnInstance_capabilities connInstance_id="6c2acf1b-b052-46f0-8c56-7a8ad6905edf" capability="DELETE"/>
+  <ConnInstance_capabilities connInstance_id="6c2acf1b-b052-46f0-8c56-7a8ad6905edf" capability="SEARCH"/>
+  <ConnInstance_capabilities connInstance_id="6c2acf1b-b052-46f0-8c56-7a8ad6905edf" capability="SYNC"/>
     
-  <ConnInstance id="105" bundleName="net.tirasa.connid.bundles.ldap" displayName="ApacheDS"
+  <ConnInstance id="74141a3b-0762-4720-a4aa-fc3e374ef3ef" bundleName="net.tirasa.connid.bundles.ldap" displayName="ApacheDS"
                 location="${connid.location}"
                 connectorName="net.tirasa.connid.bundles.ldap.LdapConnector"
                 version="${connid.ldap.version}" 
-                jsonConf='[{"schema":{"name":"synchronizePasswords","displayName":"Enable Password Synchronization","helpMessage":"If true, the connector will synchronize passwords. The Password Capture Plugin needs to be installed for password synchronization to work.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"maintainLdapGroupMembership","displayName":"Maintain LDAP Group Membership","helpMessage":"When enabled and a user is renamed or deleted, update any LDAP groups to which the user belongs to reflect the new name. Otherwise, the LDAP resource must maintain referential integrity with respect to group membership.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"host","displayName":"Host","helpMessage":"The name or IP address of the host where the LDAP server is running.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["localhost"]},{"schema":{"name":"passwordHashAlgorithm","displayName":"Password Hash Algorithm","helpMessage":"Indicates the algorithm that the Identity system should use to hash the password. Currently supported values are SSHA, SHA, SSHA1, and SHA1. A blank value indicates that the system will not hash passwords. This will cause cleartext passwords to be stored in LDAP unless the LDAP server performs the hash (Netscape Directory Server and iPlanet Directory Server do).","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["SHA"]},{"schema":{"name":"port","displayName":"TCP Port","helpMessage":"TCP/IP port number used to communicate with the LDAP server.","type":"int","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[1389]},{"schema":{"name":"vlvSortAttribute","displayName":"VLV Sort Attribute","helpMessage":"Specify the sort attribute to use for VLV indexes on the resource.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"statusManagementClass","displayName":"Status management class ","helpMessage":"Class to be used to manage enabled/disabled status. If no class is specified then identity status management wont be possible.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["net.tirasa.connid.bundles.ldap.commons.AttributeStatusManagement"]},{"schema":{"name":"accountObjectClasses","displayName":"Account Object Classes","helpMessage":"The object class or classes that will be used when creating new user objects in the LDAP tree. When entering more than one object class, each entry should be on its own line; do not use commas or semi-colons to separate multiple object classes. Some object classes may require that you specify all object classes in the class hierarchy.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["inetOrgPerson"]},{"schema":{"name":"accountUserNameAttributes","displayName":"Account User Name Attributes","helpMessage":"Attribute or attributes which holds the account user name. They will be used when authenticating to find the LDAP entry for the user name to authenticate.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid"]},{"schema":{"name":"baseContextsToSynchronize","displayName":"Base Contexts to Synchronize","helpMessage":"One or more starting points in the LDAP tree that will be used to determine if a change should be synchronized. The base contexts attribute will be used to synchronize a change if this property is not set.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["ou=people,o=isp","ou=groups,o=isp"]},{"schema":{"name":"accountSynchronizationFilter","displayName":"LDAP Filter for Accounts to Synchronize","helpMessage":"An optional LDAP filter for the objects to synchronize. Because the change log is for all objects, this filter updates only objects that match the specified filter. If you specify a filter, an object will be synchronized only if it matches the filter and includes a synchronized object class.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"removeLogEntryObjectClassFromFilter","displayName":"Remove Log Entry Object Class from Filter","helpMessage":"If this property is set (the default), the filter used to fetch change log entries does not contain the \"changeLogEntry\" object class, expecting that there are no entries of other object types in the change log.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"passwordDecryptionKey","displayName":"Password Decryption Key","helpMessage":"The key to decrypt passwords with when performing password synchronization.","type":"org.identityconnectors.common.security.GuardedByteArray","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"readSchema","displayName":"Read Schema","helpMessage":"If true, the connector will read the schema from the server. If false, the connector will provide a default schema based on the object classes in the configuration. This property must be true in order to use extended object classes.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"ssl","displayName":"SSL","helpMessage":"Select the check box to connect to the LDAP server using SSL.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"passwordAttributeToSynchronize","displayName":"Password Attribute to Synchronize","helpMessage":"The name of the password attribute to synchronize when performing password synchronization.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"accountSearchFilter","displayName":"LDAP Filter for Retrieving Accounts","helpMessage":"An optional LDAP filter to control which accounts are returned from the LDAP resource. If no filter is specified, only accounts that include all specified object classes are returned.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid=*"]},{"schema":{"name":"passwordDecryptionInitializationVector","displayName":"Password Decryption Initialization Vector","helpMessage":"The initialization vector to decrypt passwords with when performing password synchronization.","type":"org.identityconnectors.common.security.GuardedByteArray","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"groupMemberAttribute","displayName":"Group Member Attribute","helpMessage":"The name of the group attribute that will be updated with the distinguished name of the user when the user is added to the group.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"failover","displayName":"Failover Servers","helpMessage":"List all servers that should be used for failover in case the preferred server fails. If the preferred server fails, JNDI will connect to the next available server in the list. List all servers in the form of \"ldap://ldap.example.com:389/\", which follows the standard LDAP v3 URLs described in RFC 2255. Only the host and port parts of the URL are relevant in this setting.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"modifiersNamesToFilterOut","displayName":"Filter Out Changes By","helpMessage":"The names (DNs) of directory administrators to filter from the changes. Changes with the attribute \"modifiersName\" that match entries in this list will be filtered out. The standard value is the administrator name used by this adapter, to prevent loops. Entries should be of the format \"cn=Directory Manager\".","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"groupNameAttributes","displayName":"Group Name Attributes","helpMessage":"Attribute or attributes which holds the group name.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["cn"]},{"schema":{"name":"uidAttribute","displayName":"Uid Attribute","helpMessage":"The name of the LDAP attribute which is mapped to the Uid attribute.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["cn"]},{"schema":{"name":"respectResourcePasswordPolicyChangeAfterReset","displayName":"Respect Resource Password Policy Change-After-Reset","helpMessage":"When this resource is specified in a Login Module (i.e., this resource is a pass-through authentication target) and the resource password policy is configured for change-after-reset, a user whose resource account password has been administratively reset will be required to change that password after successfully authenticating.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"filterWithOrInsteadOfAnd","displayName":"Filter with Or Instead of And","helpMessage":"Normally the the filter used to fetch change log entries is an and-based filter retrieving an interval of change entries. If this property is set, the filter will or together the required change numbers instead.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"principal","displayName":"Principal","helpMessage":"The distinguished name with which to authenticate to the LDAP server.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid=admin,ou=system"]},{"schema":{"name":"changeLogBlockSize","displayName":"Change Log Block Size","helpMessage":"The number of change log entries to fetch per query.","type":"int","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[100]},{"schema":{"name":"baseContexts","displayName":"Base Contexts","helpMessage":"One or more starting points in the LDAP tree that will be used when searching the tree. Searches are performed when discovering users from the LDAP server or when looking for the groups of which a user is a member.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["ou=people,o=isp","ou=groups,o=isp"]},{"schema":{"name":"passwordAttribute","displayName":"Password Attribute","helpMessage":"The name of the LDAP attribute which holds the password. When changing an user password, the new password is set to this attribute.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["userpassword"]},{"schema":{"name":"changeNumberAttribute","displayName":"Change Number Attribute","helpMessage":"The name of the change number attribute in the change log entry.","type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["changeNumber"]},{"schema":{"name":"objectClassesToSynchronize","displayName":"Object Classes to Synchronize","helpMessage":"The object classes to synchronize. The change log is for all objects; this filters updates to just the listed object classes. You should not list the superclasses of an object class unless you intend to synchronize objects with any of the superclass values. For example, if only \"inetOrgPerson\" objects should be synchronized, but the superclasses of \"inetOrgPerson\" (\"person\", \"organizationalperson\" and \"top\") should be filtered out, then list only \"inetOrgPerson\" here. All objects in LDAP are subclassed from \"top\". For this reason, you should never list \"top\", otherwise no object would be filtered.","type":"[Ljava.lang.String;","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["inetOrgPerson","groupOfUniqueNames"]},{"schema":{"name":"credentials","displayName":"Password","helpMessage":"Password for the principal.","type":"org.identityconnectors.common.security.GuardedString","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["secret"]},{"schema":{"name":"attributesToSynchronize","displayName":"Attributes to Synchronize","helpMessage":"The names of the attributes to synchronize. This ignores updates from the change log if they do not update any of the named attributes. For example, if only \"department\" is listed, then only changes that affect \"department\" will be processed. All other updates are ignored. If blank (the default), then all changes are processed.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"maintainPosixGroupMembership","displayName":"Maintain POSIX Group Membership","helpMessage":"When enabled and a user is renamed or deleted, update any POSIX groups to which the user belongs to reflect the new name. Otherwise, the LDAP resource must maintain referential integrity with respect to group membership.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]}]'/>
-  <ConnInstance_capabilities ConnInstance_id="105" capability="CREATE"/>
-  <ConnInstance_capabilities ConnInstance_id="105" capability="UPDATE"/>
-  <ConnInstance_capabilities ConnInstance_id="105" capability="DELETE"/>
-  <ConnInstance_capabilities ConnInstance_id="105" capability="SEARCH"/>
+                jsonConf='[{"schema":{"name":"synchronizePasswords","displayName":"Enable Password Synchronization","helpMessage":"If true, the connector will synchronize passwords. The Password Capture Plugin needs to be installed for password synchronization to work.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"maintainLdapGroupMembership","displayName":"Maintain LDAP Group Membership","helpMessage":"When enabled and a user is renamed or deleted, update any LDAP groups to which the user belongs to reflect the new name. Otherwise, the LDAP resource must maintain referential integrity with respect to group membership.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"host","displayName":"Host","helpMessage":"The name or IP address of the host where the LDAP server is running.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["localhost"]},{"schema":{"name":"passwordHashAlgorithm","displayName":"Password Hash Algorithm","helpMessage":"Indicates the algorithm that the Identity system should use to hash the password. Currently supported values are SSHA, SHA, SSHA1, and SHA1. A blank value indicates that the system will not hash passwords. This will cause cleartext passwords to be stored in LDAP unless the LDAP server performs the hash (Netscape Directory Server and iPlanet Directory Server do).","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["SHA"]},{"schema":{"name":"port","displayName":"TCP Port","helpMessage":"TCP/IP port number used to communicate with the LDAP server.","type":"int","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[1389]},{"schema":{"name":"vlvSortAttribute","displayName":"VLV Sort Attribute","helpMessage":"Specify the sort attribute to use for VLV indexes on the resource.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"statusManagementClass","displayName":"Status management class ","helpMessage":"Class to be used to manage enabled/disabled status. If no class is specified then identity status management wont be possible.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["net.tirasa.connid.bundles.ldap.commons.AttributeStatusManagement"]},{"schema":{"name":"accountObjectClasses","displayName":"Account Object Classes","helpMessage":"The object class or classes that will be used when creating new user objects in the LDAP tree. When entering more than one object class, each entry should be on its own line; do not use commas or semi-colons to separate multiple object classes. Some object classes may require that you specify all object classes in the class hierarchy.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["inetOrgPerson"]},{"schema":{"name":"accountUserNameAttributes","displayName":"Account User Name Attributes","helpMessage":"Attribute or attributes which holds the account user name. They will be used when authenticating to find the LDAP entry for the user name to authenticate.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid"]},{"schema":{"name":"baseContextsToSynchronize","displayName":"Base Contexts to Synchronize","helpMessage":"One or more starting points in the LDAP tree that will be used to determine if a change should be synchronized. The base contexts attribute will be used to synchronize a change if this property is not set.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["ou=people,o=isp","ou=groups,o=isp"]},{"schema":{"name":"accountSynchronizationFilter","displayName":"LDAP Filter for Accounts to Synchronize","helpMessage":"An optional LDAP filter for the objects to synchronize. Because the change log is for all objects, this filter updates only objects that match the specified filter. If you specify a filter, an object will be synchronized only if it matches the filter and includes a synchronized object class.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"removeLogEntryObjectClassFromFilter","displayName":"Remove Log Entry Object Class from Filter","helpMessage":"If this property is set (the default), the filter used to fetch change log entries does not contain the \"changeLogEntry\" object class, expecting that there are no entries of other object types in the change log.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"passwordDecryptionKey","displayName":"Password Decryption Key","helpMessage":"The key to decrypt passwords with when performing password synchronization.","type":"org.identityconnectors.common.security.GuardedByteArray","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"readSchema","displayName":"Read Schema","helpMessage":"If true, the connector will read the schema from the server. If false, the connector will provide a default schema based on the object classes in the configuration. This property must be true in order to use extended object classes.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"ssl","displayName":"SSL","helpMessage":"Select the check box to connect to the LDAP server using SSL.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"passwordAttributeToSynchronize","displayName":"Password Attribute to Synchronize","helpMessage":"The name of the password attribute to synchronize when performing password synchronization.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"accountSearchFilter","displayName":"LDAP Filter for Retrieving Accounts","helpMessage":"An optional LDAP filter to control which accounts are returned from the LDAP resource. If no filter is specified, only accounts that include all specified object classes are returned.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid=*"]},{"schema":{"name":"passwordDecryptionInitializationVector","displayName":"Password Decryption Initialization Vector","helpMessage":"The initialization vector to decrypt passwords with when performing password synchronization.","type":"org.identityconnectors.common.security.GuardedByteArray","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"groupMemberAttribute","displayName":"Group Member Attribute","helpMessage":"The name of the group attribute that will be updated with the distinguished name of the user when the user is added to the group.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"failover","displayName":"Failover Servers","helpMessage":"List all servers that should be used for failover in case the preferred server fails. If the preferred server fails, JNDI will connect to the next available server in the list. List all servers in the form of \"ldap://ldap.example.com:389/\", which follows the standard LDAP v3 URLs described in RFC 2255. Only the host and port parts of the URL are relevant in this setting.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"modifiersNamesToFilterOut","displayName":"Filter Out Changes By","helpMessage":"The names (DNs) of directory administrators to filter from the changes. Changes with the attribute \"modifiersName\" that match entries in this list will be filtered out. The standard value is the administrator name used by this adapter, to prevent loops. Entries should be of the format \"cn=Directory Manager\".","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"groupNameAttributes","displayName":"Group Name Attributes","helpMessage":"Attribute or attributes which holds the group name.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["cn"]},{"schema":{"name":"uidAttribute","displayName":"Uid Attribute","helpMessage":"The name of the LDAP attribute which is mapped to the Uid attribute.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":true,"values":["cn"]},{"schema":{"name":"respectResourcePasswordPolicyChangeAfterReset","displayName":"Respect Resource Password Policy Change-After-Reset","helpMessage":"When this resource is specified in a Login Module (i.e., this resource is a pass-through authentication target) and the resource password policy is configured for change-after-reset, a user whose resource account password has been administratively reset will be required to change that password after successfully authenticating.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"filterWithOrInsteadOfAnd","displayName":"Filter with Or Instead of And","helpMessage":"Normally the the filter used to fetch change log entries is an and-based filter retrieving an interval of change entries. If this property is set, the filter will or together the required change numbers instead.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"principal","displayName":"Principal","helpMessage":"The distinguished name with which to authenticate to the LDAP server.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid=admin,ou=system"]},{"schema":{"name":"changeLogBlockSize","displayName":"Change Log Block Size","helpMessage":"The number of change log entries to fetch per query.","type":"int","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[100]},{"schema":{"name":"baseContexts","displayName":"Base Contexts","helpMessage":"One or more starting points in the LDAP tree that will be used when searching the tree. Searches are performed when discovering users from the LDAP server or when looking for the groups of which a user is a member.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":true,"values":["ou=people,o=isp","ou=groups,o=isp"]},{"schema":{"name":"passwordAttribute","displayName":"Password Attribute","helpMessage":"The name of the LDAP attribute which holds the password. When changing an user password, the new password is set to this attribute.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["userpassword"]},{"schema":{"name":"changeNumberAttribute","displayName":"Change Number Attribute","helpMessage":"The name of the change number attribute in the change log entry.","type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["changeNumber"]},{"schema":{"name":"objectClassesToSynchronize","displayName":"Object Classes to Synchronize","helpMessage":"The object classes to synchronize. The change log is for all objects; this filters updates to just the listed object classes. You should not list the superclasses of an object class unless you intend to synchronize objects with any of the superclass values. For example, if only \"inetOrgPerson\" objects should be synchronized, but the superclasses of \"inetOrgPerson\" (\"person\", \"organizationalperson\" and \"top\") should be filtered out, then list only \"inetOrgPerson\" here. All objects in LDAP are subclassed from \"top\". For this reason, you should never list \"top\", otherwise no object would be filtered.","type":"[Ljava.lang.String;","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["inetOrgPerson","groupOfUniqueNames"]},{"schema":{"name":"credentials","displayName":"Password","helpMessage":"Password for the principal.","type":"org.identityconnectors.common.security.GuardedString","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["secret"]},{"schema":{"name":"attributesToSynchronize","displayName":"Attributes to Synchronize","helpMessage":"The names of the attributes to synchronize. This ignores updates from the change log if they do not update any of the named attributes. For example, if only \"department\" is listed, then only changes that affect \"department\" will be processed. All other updates are ignored. If blank (the default), then all changes are processed.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"maintainPosixGroupMembership","displayName":"Maintain POSIX Group Membership","helpMessage":"When enabled and a user is renamed or deleted, update any POSIX groups to which the user belongs to reflect the new name. Otherwise, the LDAP resource must maintain referential integrity with respect to group membership.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]}]'/>
+  <ConnInstance_capabilities connInstance_id="74141a3b-0762-4720-a4aa-fc3e374ef3ef" capability="CREATE"/>
+  <ConnInstance_capabilities connInstance_id="74141a3b-0762-4720-a4aa-fc3e374ef3ef" capability="UPDATE"/>
+  <ConnInstance_capabilities connInstance_id="74141a3b-0762-4720-a4aa-fc3e374ef3ef" capability="DELETE"/>
+  <ConnInstance_capabilities connInstance_id="74141a3b-0762-4720-a4aa-fc3e374ef3ef" capability="SEARCH"/>
   
-  <ConnInstance id="106" displayName="H2-test2"
+  <ConnInstance id="a28abd9b-9f4a-4ef6-a7a8-d19ad2a8f29d" displayName="H2-test2"
                 location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}"
                 bundleName="net.tirasa.connid.bundles.db.table"
                 connectorName="net.tirasa.connid.bundles.db.table.DatabaseTableConnector"
                 version="${connid.database.version}"
                 jsonConf='[{"schema":{"name":"disabledStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"user","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"keyColumn","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["id"]},{"schema":{"name":"cipherAlgorithm","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["SHA1"]},{"schema":{"name":"enabledStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"passwordColumn","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["password"]},{"schema":{"name":"jdbcDriver","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["org.h2.Driver"]},{"schema":{"name":"retrievePassword","displayName":null,"helpMessage":null,"type":"java.lang.Boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"defaultStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"password","displayName":null,"helpMessage":null,"type":"org.identityconnectors.common.security.GuardedString","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"statusColumn","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["status"]},{"schema":{"name":"jdbcUrlTemplate","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["${testdb.url}"]},{"schema":{"name":"table","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["test2"]}]'/>
-  <ConnInstance_capabilities ConnInstance_id="106" capability="CREATE"/>
-  <ConnInstance_capabilities ConnInstance_id="106" capability="UPDATE"/>
-  <ConnInstance_capabilities ConnInstance_id="106" capability="SEARCH"/>
-  <ConnInstance_capabilities ConnInstance_id="106" capability="SYNC"/>
+  <ConnInstance_capabilities connInstance_id="a28abd9b-9f4a-4ef6-a7a8-d19ad2a8f29d" capability="CREATE"/>
+  <ConnInstance_capabilities connInstance_id="a28abd9b-9f4a-4ef6-a7a8-d19ad2a8f29d" capability="UPDATE"/>
+  <ConnInstance_capabilities connInstance_id="a28abd9b-9f4a-4ef6-a7a8-d19ad2a8f29d" capability="SEARCH"/>
+  <ConnInstance_capabilities connInstance_id="a28abd9b-9f4a-4ef6-a7a8-d19ad2a8f29d" capability="SYNC"/>
   
-  <ConnInstance id="107" bundleName="net.tirasa.connid.bundles.db.table" 
+  <ConnInstance id="be24b061-019d-4e3e-baf0-0a6d0a45cb9c" bundleName="net.tirasa.connid.bundles.db.table" 
                 location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}"
                 connectorName="net.tirasa.connid.bundles.db.table.DatabaseTableConnector" 
-                displayName="H2-testsync" version="${connid.database.version}"
-                jsonConf='[{"schema":{"name":"changeLogColumn","displayName":"Change Log Column (Sync)","helpMessage":"=&lt;b&gt;Change Log Column&lt;/b&gt;&lt;br&gt;The change log column store the latest change time. Providing this value the Sync capabilities are activated.","type":"java.lang.String","required":false,"order":21,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"nativeTimestamps","displayName":"Native Timestamps ","helpMessage":"&lt;b&gt;Native Timestamps&lt;/b&gt;&lt;br&gt;Select to retrieve Timestamp data type of the columns in java.sql.Timestamp format from the database table.","type":"boolean","required":false,"order":18,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"cipherAlgorithm","displayName":"Password cipher algorithm (defaults to CLEARTEXT)","helpMessage":"Cipher algorithm used to encode password before to store it onto the database table.\nSpecify one of the values among CLEARTEXT,AES, MD5, SHA1, SHA256 or a custom implementation identified by its class name.","type":"java.lang.String","required":false,"order":24,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"enabledStatusValue","displayName":"Enabled Status Value","helpMessage":"&lt;b&gt;Enabled Status Value&lt;/b&gt;&lt;br&gt;Enter the value for enabled status.","type":"java.lang.String","required":false,"order":12,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"retrievePassword","displayName":"Retrieve password","helpMessage":"Specify if password must be retrieved by default.","type":"boolean","required":true,"order":27,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"datasource","displayName":"Datasource Path","helpMessage":"&lt;b&gt;JDBC Data Source Name/Path&lt;/b&gt;&lt;br&gt;Enter the JDBC Data Source Name/Path to connect to the Oracle server. If specified, connector will only try to connect using Datasource and ignore other resource parameters specified.&lt;br&gt;the example value is: &lt;CODE&gt;jdbc/SampleDataSourceName&lt;/CODE&gt;","type":"java.lang.String","required":false,"order":22,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"allNative","displayName":"All native","helpMessage":"&lt;b&gt;All native&lt;/b&gt;&lt;br&gt;Select to retrieve all data type of the columns in a native format from the database table.","type":"boolean","required":false,"order":19,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"user","displayName":"User","helpMessage":"&lt;b&gt;User&lt;/b&gt;&lt;br&gt;Enter the name of the mandatory Database user with permission to account table.","type":"java.lang.String","required":false,"order":4,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"pwdEncodeToLowerCase","displayName":"Force password encoding to lower case","helpMessage":"Force password encoding to lower case.","type":"boolean","required":false,"order":26,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"jdbcUrlTemplate","displayName":"JDBC Connection URL","helpMessage":"&lt;b&gt;JDBC Connection URL&lt;/b&gt;&lt;br&gt;Specify the JDBC Driver Connection URL.&lt;br&gt; Oracle template is jdbc:oracle:thin:@[host]:[port(1521)]:[DB].&lt;br&gt;  MySQL template is jdbc:mysql://[host]:[port(3306)]/[db], for more info, read the JDBC driver documentation.&lt;br&gt;Could be empty if datasource is provided.","type":"java.lang.String","required":false,"order":15,"confidential":false,"defaultValues":null},"overridable":false,"values":["${testdb.url}"]},{"schema":{"name":"keyColumn","displayName":"Key Column","helpMessage":"&lt;b&gt;Key Column&lt;/b&gt;&lt;br&gt;This mandatory column value will be used as the unique identifier for rows in the table.&lt;br&gt;","type":"java.lang.String","required":true,"order":8,"confidential":false,"defaultValues":null},"overridable":false,"values":["id"]},{"schema":{"name":"validConnectionQuery","displayName":"Validate Connection Query","helpMessage":"&lt;b&gt;Validate Connection Query&lt;/b&gt;&lt;br&gt;There can be specified the check connection alive query. If empty, default implementation will test it using the switch on/off the autocommit. Some select 1 from dummy table could be more efficient.","type":"java.lang.String","required":false,"order":20,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"rethrowAllSQLExceptions","displayName":"Rethrow all SQLExceptions","helpMessage":"If this is not checked, SQL statements which throw SQLExceptions with a 0 ErrorCode will be have the exception caught and suppressed. Check it to have exceptions with 0 ErrorCodes rethrown.","type":"boolean","required":false,"order":17,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"passwordColumn","displayName":"Password Column","helpMessage":"&lt;b&gt;Password Column&lt;/b&gt;&lt;br&gt;Enter the name of the column in the table that will hold the password values. If empty, no validation on resource and passwords are activated.","type":"java.lang.String","required":false,"order":9,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"jndiProperties","displayName":"Initial JNDI Properties","helpMessage":"&lt;b&gt;Initial JNDI Properties&lt;/b&gt;&lt;br&gt;Could be empty or enter the JDBC JNDI Initial context factory, context provider in a format: key = value.","type":"[Ljava.lang.String;","required":false,"order":23,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"password","displayName":"User Password","helpMessage":"&lt;b&gt;User Password&lt;/b&gt;&lt;br&gt;Enter a user account that has permission to access accounts table.","type":"org.identityconnectors.common.security.GuardedString","required":false,"order":5,"confidential":true,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"host","displayName":"Host","helpMessage":"&lt;b&gt;Host&lt;/b&gt;&lt;br&gt;Enter the name of the host where the database is running.","type":"java.lang.String","required":false,"order":2,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"port","displayName":"Port","helpMessage":"&lt;b&gt;TCP Port&lt;/b&gt;&lt;br&gt;Enter the port number the database server is listening on.","type":"java.lang.String","required":false,"order":3,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"statusColumn","displayName":"Status Column","helpMessage":"&lt;b&gt;Status Column&lt;/b&gt;&lt;br&gt;Enter the name of the column in the table that will hold the status values. If empty enabled and disabled operation wont be performed.","type":"java.lang.String","required":false,"order":10,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"pwdEncodeToUpperCase","displayName":"Force password encoding to upper case","helpMessage":"Force password encoding to upper case.","type":"boolean","required":false,"order":25,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"enableEmptyString","displayName":"Enable writing empty string","helpMessage":"&lt;b&gt;Enable writing empty string&lt;/b&gt;&lt;br&gt;Select to enable support for writing an empty strings, instead of a NULL value, in character based columns defined as not-null in the table schema. This option does not influence the way strings are written for Oracle based tables. By default empty strings are written as a NULL value.","type":"boolean","required":false,"order":16,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"database","displayName":"Database","helpMessage":"&lt;b&gt;Database&lt;/b&gt;&lt;br&gt;Enter the name of the database on the database server that contains the table.","type":"java.lang.String","required":false,"order":6,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"defaultStatusValue","displayName":"Default Status Value","helpMessage":"&lt;b&gt;Default Status Value&lt;/b&gt;&lt;br&gt;Enter the value for status in case of status not specified.","type":"java.lang.String","required":false,"order":13,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"table","displayName":"Table","helpMessage":"&lt;b&gt;Table&lt;/b&gt;&lt;br&gt;Enter the name of the table in the database that contains the accounts.","type":"java.lang.String","required":true,"order":7,"confidential":false,"defaultValues":null},"overridable":false,"values":["testsync"]},{"schema":{"name":"disabledStatusValue","displayName":"Disabled Status Value","helpMessage":"&lt;b&gt;Disabled Status Value&lt;/b&gt;&lt;br&gt;Enter the value for disabled status.","type":"java.lang.String","required":false,"order":11,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"jdbcDriver","displayName":"JDBC Driver","helpMessage":"&lt;b&gt;JDBC Driver&lt;/b&gt;&lt;br&gt;Specify the JDBC Driver class name. Oracle is oracle.jdbc.driver.OracleDriver. MySQL is org.gjt.mm.mysql.Driver.&lt;br&gt;Could be empty if datasource is provided.","type":"java.lang.String","required":false,"order":14,"confidential":false,"defaultValues":null},"overridable":false,"values":["org.h2.Driver"]},{"schema":{"name":"quoting","displayName":"Name Quoting","helpMessage":"&lt;b&gt;Name Quoting&lt;/b&gt;&lt;br&gt;Select whether database column names for this resource should be quoted, and the quoting characters. By default, database column names are not quoted (None). For other selections (Single, Double, Back, or Brackets), column names will appear between single quotes, double quotes, back quotes, or brackets in the SQL generated to access the database.","type":"java.lang.String","required":false,"order":1,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"cipherKey","displayName":"Password cipher key","helpMessage":"Specify key in case of reversible algorithm.","type":"java.lang.String","required":false,"order":25,"confidential":false,"defaultValues":null},"overridable":false,"values":[]}]'/>
-  <ConnInstance_capabilities ConnInstance_id="107" capability="CREATE"/>
-  <ConnInstance_capabilities ConnInstance_id="107" capability="UPDATE"/>
-  <ConnInstance_capabilities ConnInstance_id="107" capability="DELETE"/>
-  <ConnInstance_capabilities ConnInstance_id="107" capability="SEARCH"/>
+                displayName="H2-testpull" version="${connid.database.version}"
+                jsonConf='[{"schema":{"name":"changeLogColumn","displayName":"Change Log Column (Sync)","helpMessage":"=&lt;b&gt;Change Log Column&lt;/b&gt;&lt;br&gt;The change log column store the latest change time. Providing this value the Pull capabilities are activated.","type":"java.lang.String","required":false,"order":21,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"nativeTimestamps","displayName":"Native Timestamps ","helpMessage":"&lt;b&gt;Native Timestamps&lt;/b&gt;&lt;br&gt;Select to retrieve Timestamp data type of the columns in java.sql.Timestamp format from the database table.","type":"boolean","required":false,"order":18,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"cipherAlgorithm","displayName":"Password cipher algorithm (defaults to CLEARTEXT)","helpMessage":"Cipher algorithm used to encode password before to store it onto the database table.\nSpecify one of the values among CLEARTEXT,AES, MD5, SHA1, SHA256 or a custom implementation identified by its class name.","type":"java.lang.String","required":false,"order":24,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"enabledStatusValue","displayName":"Enabled Status Value","helpMessage":"&lt;b&gt;Enabled Status Value&lt;/b&gt;&lt;br&gt;Enter the value for enabled status.","type":"java.lang.String","required":false,"order":12,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"retrievePassword","displayName":"Retrieve password","helpMessage":"Specify if password must be retrieved by default.","type":"boolean","required":true,"order":27,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"datasource","displayName":"Datasource Path","helpMessage":"&lt;b&gt;JDBC Data Source Name/Path&lt;/b&gt;&lt;br&gt;Enter the JDBC Data Source Name/Path to connect to the Oracle server. If specified, connector will only try to connect using Datasource and ignore other resource parameters specified.&lt;br&gt;the example value is: &lt;CODE&gt;jdbc/SampleDataSourceName&lt;/CODE&gt;","type":"java.lang.String","required":false,"order":22,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"allNative","displayName":"All native","helpMessage":"&lt;b&gt;All native&lt;/b&gt;&lt;br&gt;Select to retrieve all data type of the columns in a native format from the database table.","type":"boolean","required":false,"order":19,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"user","displayName":"User","helpMessage":"&lt;b&gt;User&lt;/b&gt;&lt;br&gt;Enter the name of the mandatory Database user with permission to account table.","type":"java.lang.String","required":false,"order":4,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"pwdEncodeToLowerCase","displayName":"Force password encoding to lower case","helpMessage":"Force password encoding to lower case.","type":"boolean","required":false,"order":26,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"jdbcUrlTemplate","displayName":"JDBC Connection URL","helpMessage":"&lt;b&gt;JDBC Connection URL&lt;/b&gt;&lt;br&gt;Specify the JDBC Driver Connection URL.&lt;br&gt; Oracle template is jdbc:oracle:thin:@[host]:[port(1521)]:[DB].&lt;br&gt;  MySQL template is jdbc:mysql://[host]:[port(3306)]/[db], for more info, read the JDBC driver documentation.&lt;br&gt;Could be empty if datasource is provided.","type":"java.lang.String","required":false,"order":15,"confidential":false,"defaultValues":null},"overridable":false,"values":["${testdb.url}"]},{"schema":{"name":"keyColumn","displayName":"Key Column","helpMessage":"&lt;b&gt;Key Column&lt;/b&gt;&lt;br&gt;This mandatory column value will be used as the unique identifier for rows in the table.&lt;br&gt;","type":"java.lang.String","required":true,"order":8,"confidential":false,"defaultValues":null},"overridable":false,"values":["id"]},{"schema":{"name":"validConnectionQuery","displayName":"Validate Connection Query","helpMessage":"&lt;b&gt;Validate Connection Query&lt;/b&gt;&lt;br&gt;There can be specified the check connection alive query. If empty, default implementation will test it using the switch on/off the autocommit. Some select 1 from dummy table could be more efficient.","type":"java.lang.String","required":false,"order":20,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"rethrowAllSQLExceptions","displayName":"Rethrow all SQLExceptions","helpMessage":"If this is not checked, SQL statements which throw SQLExceptions with a 0 ErrorCode will be have the exception caught and suppressed. Check it to have exceptions with 0 ErrorCodes rethrown.","type":"boolean","required":false,"order":17,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"passwordColumn","displayName":"Password Column","helpMessage":"&lt;b&gt;Password Column&lt;/b&gt;&lt;br&gt;Enter the name of the column in the table that will hold the password values. If empty, no validation on resource and passwords are activated.","type":"java.lang.String","required":false,"order":9,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"jndiProperties","displayName":"Initial JNDI Properties","helpMessage":"&lt;b&gt;Initial JNDI Properties&lt;/b&gt;&lt;br&gt;Could be empty or enter the JDBC JNDI Initial context factory, context provider in a format: key = value.","type":"[Ljava.lang.String;","required":false,"order":23,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"password","displayName":"User Password","helpMessage":"&lt;b&gt;User Password&lt;/b&gt;&lt;br&gt;Enter a user account that has permission to access accounts table.","type":"org.identityconnectors.common.security.GuardedString","required":false,"order":5,"confidential":true,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"host","displayName":"Host","helpMessage":"&lt;b&gt;Host&lt;/b&gt;&lt;br&gt;Enter the name of the host where the database is running.","type":"java.lang.String","required":false,"order":2,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"port","displayName":"Port","helpMessage":"&lt;b&gt;TCP Port&lt;/b&gt;&lt;br&gt;Enter the port number the database server is listening on.","type":"java.lang.String","required":false,"order":3,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"statusColumn","displayName":"Status Column","helpMessage":"&lt;b&gt;Status Column&lt;/b&gt;&lt;br&gt;Enter the name of the column in the table that will hold the status values. If empty enabled and disabled operation wont be performed.","type":"java.lang.String","required":false,"order":10,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"pwdEncodeToUpperCase","displayName":"Force password encoding to upper case","helpMessage":"Force password encoding to upper case.","type":"boolean","required":false,"order":25,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"enableEmptyString","displayName":"Enable writing empty string","helpMessage":"&lt;b&gt;Enable writing empty string&lt;/b&gt;&lt;br&gt;Select to enable support for writing an empty strings, instead of a NULL value, in character based columns defined as not-null in the table schema. This option does not influence the way strings are written for Oracle based tables. By default empty strings are written as a NULL value.","type":"boolean","required":false,"order":16,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"database","displayName":"Database","helpMessage":"&lt;b&gt;Database&lt;/b&gt;&lt;br&gt;Enter the name of the database on the database server that contains the table.","type":"java.lang.String","required":false,"order":6,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"defaultStatusValue","displayName":"Default Status Value","helpMessage":"&lt;b&gt;Default Status Value&lt;/b&gt;&lt;br&gt;Enter the value for status in case of status not specified.","type":"java.lang.String","required":false,"order":13,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"table","displayName":"Table","helpMessage":"&lt;b&gt;Table&lt;/b&gt;&lt;br&gt;Enter the name of the table in the database that contains the accounts.","type":"java.lang.String","required":true,"order":7,"confidential":false,"defaultValues":null},"overridable":false,"values":["testpull"]},{"schema":{"name":"disabledStatusValue","displayName":"Disabled Status Value","helpMessage":"&lt;b&gt;Disabled Status Value&lt;/b&gt;&lt;br&gt;Enter the value for disabled status.","type":"java.lang.String","required":false,"order":11,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"jdbcDriver","displayName":"JDBC Driver","helpMessage":"&lt;b&gt;JDBC Driver&lt;/b&gt;&lt;br&gt;Specify the JDBC Driver class name. Oracle is oracle.jdbc.driver.OracleDriver. MySQL is org.gjt.mm.mysql.Driver.&lt;br&gt;Could be empty if datasource is provided.","type":"java.lang.String","required":false,"order":14,"confidential":false,"defaultValues":null},"overridable":false,"values":["org.h2.Driver"]},{"schema":{"name":"quoting","displayName":"Name Quoting","helpMessage":"&lt;b&gt;Name Quoting&lt;/b&gt;&lt;br&gt;Select whether database column names for this resource should be quoted, and the quoting characters. By default, database column names are not quoted (None). For other selections (Single, Double, Back, or Brackets), column names will appear between single quotes, double quotes, back quotes, or brackets in the SQL generated to access the database.","type":"java.lang.String","required":false,"order":1,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"cipherKey","displayName":"Password cipher key","helpMessage":"Specify key in case of reversible algorithm.","type":"java.lang.String","required":false,"order":25,"confidential":false,"defaultValues":null},"overridable":false,"values":[]}]'/>
+  <ConnInstance_capabilities connInstance_id="be24b061-019d-4e3e-baf0-0a6d0a45cb9c" capability="CREATE"/>
+  <ConnInstance_capabilities connInstance_id="be24b061-019d-4e3e-baf0-0a6d0a45cb9c" capability="UPDATE"/>
+  <ConnInstance_capabilities connInstance_id="be24b061-019d-4e3e-baf0-0a6d0a45cb9c" capability="DELETE"/>
+  <ConnInstance_capabilities connInstance_id="be24b061-019d-4e3e-baf0-0a6d0a45cb9c" capability="SEARCH"/>
   
-  <ConnInstance id="108" bundleName="net.tirasa.connid.bundles.db.scriptedsql" 
+  <ConnInstance id="a6d017fd-a705-4507-bb7c-6ab6a6745997" bundleName="net.tirasa.connid.bundles.db.scriptedsql" 
                 location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}"
                 connectorName="net.tirasa.connid.bundles.db.scriptedsql.ScriptedSQLConnector"
                 displayName="Scripted SQL" version="${connid.database.version}"
                 jsonConf='[{&quot;schema&quot;:{&quot;name&quot;:&quot;updateScriptFileName&quot;,&quot;displayName&quot;:&quot;updateScriptFileName&quot;,&quot;helpMessage&quot;:&quot;updateScriptFileName&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[]},&quot;overridable&quot;:false,&quot;values&quot;:[&quot;${conf.directory}/scriptedsql/UpdateScript.groovy&quot;]},{&quot;schema&quot;:{&quot;name&quot;:&quot;testScript&quot;,&quot;displayName&quot;:&quot;testScript&quot;,&quot;helpMessage&quot;:&quot;testScript&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[&quot;&quot;]},&quot;overridable&quot;:false,&quot;values&quot;:[]},{&quot;schema&quot;:{&quot;name&quot;:&quot;host&quot;,&quot;displayName&quot;:&quot;Host&quot;,&quot;helpMessage&quot;:&quot;&lt;b&gt;Host&lt;/b&gt;&lt;br/&gt;Enter the name of the host where the database is running.&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:2,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[&quot;localhost&quot;]},&quot;overridable&quot;:false},{&quot;schema&quot;:{&quot;name&quot;:&quot;port&quot;,&quot;displayName&quot;:&quot;Port&quot;,&quot;helpMessage&quot;:&quot;&lt;b&gt;TCP Port&lt;/b&gt;&lt;br/&gt;Enter the port number the database server is listening on.&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:3,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[&quot;3306&quot;]},&quot;overridable&quot;:false},{&quot;schema&quot;:{&quot;name&quot;:&quot;database&quot;,&quot;displayName&quot;:&quot;Database&quot;,&quot;helpMessage&quot;:&quot;&lt;b&gt;Database&lt;/b&gt;&lt;br/&gt;Enter the name of the database on the database server that contains the table.&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:6,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[&quot;&quot;]},&quot;overridable&quot;:false},{&quot;schema&quot;:{&quot;name&quot;:&quot;createScript&quot;,&quot;displayName&quot;:&quot;createScript&quot;,&quot;helpMessage&quot;:&quot;createScript&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[&quot;&quot;]},&quot;overridable&quot;:false,&quot;values&quot;:[]},{&quot;schema&quot;:{&quot;name&quot;:&quot;jdbcUrlTemplate&quot;,&quot;displayName&quot;:&quot;JDBC Connection URL&quot;,&quot;helpMessage&quot;:&quot;&lt;b&gt;JDBC Connection URL&lt;/b&gt;&lt;br/&gt;Specify the JDBC Driver Connection URL.&lt;br/&gt; Oracle template is jdbc:oracle:thin:@[host]:[port(1521)]:[DB].&lt;br/&gt;  MySQL template is jdbc:mysql://[host]:[port(3306)]/[db], for more info, read the JDBC driver documentation.&lt;br/&gt;Could be empty if datasource is provided.&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:11,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[&quot;jdbc:mysql://%h:%p/%d&quot;]},&quot;overridable&quot;:false,&quot;values&quot;:[&quot;${testdb.url}&quot;]},{&quot;schema&quot;:{&quot;name&quot;:&quot;jndiProperties&quot;,&quot;displayName&quot;:&quot;Initial JNDI Properties&quot;,&quot;helpMessage&quot;:&quot;&lt;b&gt;Initial JNDI Properties&lt;/b&gt;&lt;br/&gt;Could be empty or enter the JDBC JNDI Initial context factory, context provider in a format: key = value.&quot;,&quot;type&quot;:&quot;[Ljava.lang.String;&quot;,&quot;required&quot;:false,&quot;order&quot;:21,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[]},&quot;overridable&quot;:false,&quot;values&quot;:[]},{&quot;schema&quot;:{&quot;name&quot;:&quot;enableEmptyString&quot;,&quot;displayName&quot;:&quot;Enable writing empty string&quot;,&quot;helpMessage&quot;:&quot;&lt;b&gt;Enable writing empty string&lt;/b&gt;&lt;br/&gt;Select to enable support for writing an empty strings, instead of a NULL value, in character based columns defined as not-null in the table schema. This option does not influence the way strings are written for Oracle based tables. By default empty strings are written as a NULL value.&quot;,&quot;type&quot;:&quot;boolean&quot;,&quot;required&quot;:false,&quot;order&quot;:12,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[false]},&quot;overridable&quot;:false,&quot;values&quot;:[&quot;false&quot;]},{&quot;schema&quot;:{&quot;name&quot;:&quot;allNative&quot;,&quot;displayName&quot;:&quot;All native&quot;,&quot;helpMessage&quot;:&quot;&lt;b&gt;All native&lt;/b&gt;&lt;br/&gt;Select to retrieve all data type of the columns in a native format from the database table.&quot;,&quot;type&quot;:&quot;boolean&quot;,&quot;required&quot;:false,&quot;order&quot;:16,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[false]},&quot;overridable&quot;:false,&quot;values&quot;:[false]},{&quot;schema&quot;:{&quot;name&quot;:&quot;password&quot;,&quot;displayName&quot;:&quot;User Password&quot;,&quot;helpMessage&quot;:&quot;&lt;b&gt;User Password&lt;/b&gt;&lt;br/&gt;Enter a user account that has permission to access accounts table.&quot;,&quot;type&quot;:&quot;org.identityconnectors.common.security.GuardedString&quot;,&quot;required&quot;:false,&quot;order&quot;:5,&quot;confidential&quot;:true,&quot;defaultValues&quot;:[]},&quot;overridable&quot;:false,&quot;values&quot;:[&quot;${testdb.password}&quot;]},{&quot;schema&quot;:{&quot;name&quot;:&quot;validConnectionQuery&quot;,&quot;displayName&quot;:&quot;Validate Connection Query&quot;,&quot;helpMessage&quot;:&quot;&lt;b&gt;Validate Connection Query&lt;/b&gt;&lt;br/&gt;There can be specified the check connection alive query. If empty, default implementation will test it using the switch on/off the autocommit. Some select 1 from dummy table could be more efficient.&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:17,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[]},&quot;overridable&quot;:false,&quot;values&quot;:[]},{&quot;schema&quot;:{&quot;name&quot;:&quot;reloadScriptOnExecution&quot;,&quot;displayName&quot;:&quot;reloadScriptOnExecution&quot;,&quot;helpMessage&quot;:&quot;reloadScriptOnExecution&quot;,&quot;type&quot;:&quot;boolean&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[false]},&quot;overridable&quot;:false,&quot;values&quot;:[&quot;true&quot;]},{&quot;schema&quot;:{&quot;name&quot;:&quot;schemaScriptFileName&quot;,&quot;displayName&quot;:&quot;schemaScriptFileName&quot;,&quot;helpMessage&quot;:&quot;schemaScriptFileName&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[]},&quot;overridable&quot;:true,&quot;values&quot;:[&quot;${conf.directory}/scriptedsql/SchemaScript.groovy&quot;]},{&quot;schema&quot;:{&quot;name&quot;:&quot;jdbcDriver&quot;,&quot;displayName&quot;:&quot;JDBC Driver&quot;,&quot;helpMessage&quot;:&quot;&lt;b&gt;JDBC Driver&lt;/b&gt;&lt;br/&gt;Specify the JDBC Driver class name. Oracle is oracle.jdbc.driver.OracleDriver. MySQL is org.gjt.mm.mysql.Driver.&lt;br/&gt;Could be empty if datasource is provided.&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:10,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[&quot;com.mysql.jdbc.Driver&quot;]},&quot;overridable&quot;:false,&quot;values&quot;:[&quot;${testdb.driver}&quot;]},{&quot;schema&quot;:{&quot;name&quot;:&quot;testScriptFileName&quot;,&quot;displayName&quot;:&quot;testScriptFileName&quot;,&quot;helpMessage&quot;:&quot;testScriptFileName&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[]},&quot;overridable&quot;:true,&quot;values&quot;:[&quot;${conf.directory}/scriptedsql/TestScript.groovy&quot;]},{&quot;schema&quot;:{&quot;name&quot;:&quot;quoting&quot;,&quot;displayName&quot;:&quot;Name Quoting&quot;,&quot;helpMessage&quot;:&quot;&lt;b&gt;Name Quoting&lt;/b&gt;&lt;br/&gt;Select whether database column names for this resource should be quoted, and the quoting characters. By default, database column names are not quoted (None). For other selections (Single, Double, Back, or Brackets), column names will appear between single quotes, double quotes, back quotes, or brackets in the SQL generated to access the database.&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:-1,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[&quot;&quot;]},&quot;overridable&quot;:false,&quot;values&quot;:[]},{&quot;schema&quot;:{&quot;name&quot;:&quot;createScriptFileName&quot;,&quot;displayName&quot;:&quot;createScriptFileName&quot;,&quot;helpMessage&quot;:&quot;createScriptFileName&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[]},&quot;overridable&quot;:false,&quot;values&quot;:[&quot;${conf.directory}/scriptedsql/CreateScript.groovy&quot;]},{&quot;schema&quot;:{&quot;name&quot;:&quot;clearTextPasswordToScript&quot;,&quot;displayName&quot;:&quot;clearTextPasswordToScript&quot;,&quot;helpMessage&quot;:&quot;clearTextPasswordToScript&quot;,&quot;type&quot;:&quot;boolean&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[true]},&quot;overridable&quot;:false,&quot;values&quot;:[&quot;false&quot;]},{&quot;schema&quot;:{&quot;name&quot;:&quot;nativeTimestamps&quot;,&quot;displayName&quot;:&quot;Native Timestamps&quot;,&quot;helpMessage&quot;:&quot;&lt;b&gt;Native Timestamps&lt;/b&gt;&lt;br/&gt;Select to retrieve Timestamp data type of the columns in java.sql.Timestamp format from the database table.&quot;,&quot;type&quot;:&quot;boolean&quot;,&quot;required&quot;:false,&quot;order&quot;:15,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[false]},&quot;overridable&quot;:false,&quot;values&quot;:[false]},{&quot;schema&quot;:{&quot;name&quot;:&quot;syncScript&quot;,&quot;displayName&quot;:&quot;syncScript&quot;,&quot;helpMessage&quot;:&quot;syncScript&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[&quot;&quot;]},&quot;overridable&quot;:false,&quot;values&quot;:[]},{&quot;schema&quot;:{&quot;name&quot;:&quot;autoCommit&quot;,&quot;displayName&quot;:&quot;autoCommit&quot;,&quot;helpMessage&quot;:&quot;autoCommit&quot;,&quot;type&quot;:&quot;boolean&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[true]},&quot;overridable&quot;:false,&quot;values&quot;:[true]},{&quot;schema&quot;:{&quot;name&quot;:&quot;scriptingLanguage&quot;,&quot;displayName&quot;:&quot;scriptingLanguage&quot;,&quot;helpMessage&quot;:&quot;scriptingLanguage&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[&quot;GROOVY&quot;]},&quot;overridable&quot;:false,&quot;values&quot;:[&quot;GROOVY&quot;]},{&quot;schema&quot;:{&quot;name&quot;:&quot;datasource&quot;,&quot;displayName&quot;:&quot;Datasource Path&quot;,&quot;helpMessage&quot;:&quot;&lt;b&gt;JDBC Data Source Name/Path&lt;/b&gt;&lt;br/&gt;Enter the JDBC Data Source Name/Path to connect to the Oracle server. If specified, connector will only try to connect using Datasource and ignore other resource parameters specified.&lt;br/&gt;the example value is: &lt;CODE&gt;jdbc/SampleDataSourceName&lt;/CODE&gt;&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:20,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[&quot;&quot;]},&quot;overridable&quot;:false,&quot;values&quot;:[]},{&quot;schema&quot;:{&quot;name&quot;:&quot;deleteScript&quot;,&quot;displayName&quot;:&quot;deleteScript&quot;,&quot;helpMessage&quot;:&quot;deleteScript&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[&quot;&quot;]},&quot;overridable&quot;:false,&quot;values&quot;:[]},{&quot;schema&quot;:{&quot;name&quot;:&quot;rethrowAllSQLExceptions&quot;,&quot;displayName&quot;:&quot;Rethrow all SQLExceptions&quot;,&quot;helpMessage&quot;:&quot;If this is not checked, SQL statements which throw SQLExceptions with a 0 ErrorCode will be have the exception caught and suppressed. Check it to have exceptions with 0 ErrorCodes rethrown.&quot;,&quot;type&quot;:&quot;boolean&quot;,&quot;required&quot;:false,&quot;order&quot;:14,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[true]},&quot;overridable&quot;:false,&quot;values&quot;:[true]},{&quot;schema&quot;:{&quot;name&quot;:&quot;syncScriptFileName&quot;,&quot;displayName&quot;:&quot;syncScriptFileName&quot;,&quot;helpMessage&quot;:&quot;syncScriptFileName&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[]},&quot;overridable&quot;:true,&quot;values&quot;:[&quot;${conf.directory}/scriptedsql/SyncScript.groovy&quot;]},{&quot;schema&quot;:{&quot;name&quot;:&quot;updateScript&quot;,&quot;displayName&quot;:&quot;updateScript&quot;,&quot;helpMessage&quot;:&quot;updateScript&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[&quot;&quot;]},&quot;overridable&quot;:false,&quot;values&quot;:[]},{&quot;schema&quot;:{&quot;name&quot;:&quot;user&quot;,&quot;displayName&quot;:&quot;User&quot;,&quot;helpMessage&quot;:&quot;&lt;b&gt;User&lt;/b&gt;&lt;br/&gt;Enter the name of the mandatory Database user with permission to account table.&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:4,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[&quot;&quot;]},&quot;overridable&quot;:false,&quot;values&quot;:[&quot;${testdb.username}&quot;]},{&quot;schema&quot;:{&quot;name&quot;:&quot;deleteScriptFileName&quot;,&quot;displayName&quot;:&quot;deleteScriptFileName&quot;,&quot;helpMessage&quot;:&quot;deleteScriptFileName&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[]},&quot;overridable&quot;:false,&quot;values&quot;:[&quot;${conf.directory}/scriptedsql/DeleteScript.groovy&quot;]},{&quot;schema&quot;:{&quot;name&quot;:&quot;searchScriptFileName&quot;,&quot;displayName&quot;:&quot;searchScriptFileName&quot;,&quot;helpMessage&quot;:&quot;searchScriptFileName&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[]},&quot;overridable&quot;:true,&quot;values&quot;:[&quot;${conf.directory}/scriptedsql/SearchScript.groovy&quot;]},{&quot;schema&quot;:{&quot;name&quot;:&quot;searchScript&quot;,&quot;displayName&quot;:&quot;searchScript&quot;,&quot;helpMessage&quot;:&quot;searchScript&quot;,&quot;type&quot;:&quot;java.lang.String&quot;,&quot;required&quot;:false,&quot;order&quot;:0,&quot;confidential&quot;:false,&quot;defaultValues&quot;:[&quot;&quot;]},&quot;overridable&quot;:false,&quot;values&quot;:[]}]'/>
-  <ConnInstance_capabilities ConnInstance_id="108" capability="CREATE"/>
-  <ConnInstance_capabilities ConnInstance_id="108" capability="UPDATE"/>
-  <ConnInstance_capabilities ConnInstance_id="108" capability="DELETE"/>
-  <ConnInstance_capabilities ConnInstance_id="108" capability="SEARCH"/>
-  <ConnInstance_capabilities ConnInstance_id="108" capability="SYNC"/>
+  <ConnInstance_capabilities connInstance_id="a6d017fd-a705-4507-bb7c-6ab6a6745997" capability="CREATE"/>
+  <ConnInstance_capabilities connInstance_id="a6d017fd-a705-4507-bb7c-6ab6a6745997" capability="UPDATE"/>
+  <ConnInstance_capabilities connInstance_id="a6d017fd-a705-4507-bb7c-6ab6a6745997" capability="DELETE"/>
+  <ConnInstance_capabilities connInstance_id="a6d017fd-a705-4507-bb7c-6ab6a6745997" capability="SEARCH"/>
+  <ConnInstance_capabilities connInstance_id="a6d017fd-a705-4507-bb7c-6ab6a6745997" capability="SYNC"/>
   
-  <ExternalResource name="ws-target-resource-1" connector_id="100"
+  <ExternalResource id="ws-target-resource-1" connector_id="88a7a819-dab5-46b4-9b90-0b9769eabdb8"
                     randomPwdIfNotProvided="0" enforceMandatoryCondition="0" overrideCapabilities="0"
-                    propagationPriority="1" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
-                    creator="admin" lastModifier="admin"
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <ExternalResource name="ws-target-resource-2" connector_id="100"
+                    propagationPriority="1" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" provisioningTraceLevel="ALL"/>
+  <ExternalResource id="ws-target-resource-2" connector_id="88a7a819-dab5-46b4-9b90-0b9769eabdb8"
                     randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
-                    createTraceLevel="FAILURES" deleteTraceLevel="NONE" updateTraceLevel="ALL" syncTraceLevel="ALL"
-                    syncPolicy_id="9"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <ExternalResource name="ws-target-resource-timeout" connector_id="102"
+                    createTraceLevel="FAILURES" deleteTraceLevel="NONE" updateTraceLevel="ALL" provisioningTraceLevel="ALL"
+                    pullPolicy_id="9454b0d7-2610-400a-be82-fc23cf553dd6"/>
+  <ExternalResource id="ws-target-resource-timeout" connector_id="5ffbb4ac-a8c3-4b44-b699-11b398a1ba08"
                     randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
-                    propagationPriority="1" createTraceLevel="FAILURES" deleteTraceLevel="NONE" updateTraceLevel="ALL" syncTraceLevel="ALL"
-                    jsonConf='[{"schema":{"name":"endpoint","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":true,"values":["http://localhost:${cargo.servlet.port}/syncope-fit-build-tools/services/provisioning"]}]'
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <ExternalResource name="ws-target-resource-list-mappings-1" connector_id="100"
+                    propagationPriority="1" createTraceLevel="FAILURES" deleteTraceLevel="NONE" updateTraceLevel="ALL" provisioningTraceLevel="ALL"
+                    jsonConf='[{"schema":{"name":"endpoint","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":true,"values":["http://localhost:${cargo.servlet.port}/syncope-fit-build-tools/services/provisioning"]}]'/>
+  <ExternalResource id="ws-target-resource-list-mappings-1" connector_id="88a7a819-dab5-46b4-9b90-0b9769eabdb8"
                     randomPwdIfNotProvided="0" enforceMandatoryCondition="0" overrideCapabilities="0"
-                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <ExternalResource name="ws-target-resource-list-mappings-2" connector_id="100"
+                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" provisioningTraceLevel="ALL"/>
+  <ExternalResource id="ws-target-resource-list-mappings-2" connector_id="88a7a819-dab5-46b4-9b90-0b9769eabdb8"
                     randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
-                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <ExternalResource name="ws-target-resource-delete" connector_id="102"
+                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" provisioningTraceLevel="ALL"/>
+  <ExternalResource id="ws-target-resource-delete" connector_id="5ffbb4ac-a8c3-4b44-b699-11b398a1ba08"
                     randomPwdIfNotProvided="0" enforceMandatoryCondition="0" overrideCapabilities="0"
-                    propagationPriority="2" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <ExternalResource name="ws-target-resource-update" connector_id="100"
+                    propagationPriority="2" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" provisioningTraceLevel="ALL"/>
+  <ExternalResource id="ws-target-resource-update" connector_id="88a7a819-dab5-46b4-9b90-0b9769eabdb8"
                     randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
-                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <ExternalResource name="resource-testdb" connector_id="101"
+                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" provisioningTraceLevel="ALL"/>
+  <ExternalResource id="resource-testdb" connector_id="5aa5b8be-7521-481a-9651-c557aea078c1"
                     randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
-                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <ExternalResource name="resource-testdb2" connector_id="106"
+                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" provisioningTraceLevel="ALL"/>
+  <ExternalResource id="resource-testdb2" connector_id="a28abd9b-9f4a-4ef6-a7a8-d19ad2a8f29d"
                     randomPwdIfNotProvided="1" enforceMandatoryCondition="1" overrideCapabilities="0"
-                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <ExternalResource name="resource-csv" connector_id="104"
+                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" provisioningTraceLevel="ALL"/>
+  <ExternalResource id="resource-csv" connector_id="6c2acf1b-b052-46f0-8c56-7a8ad6905edf"
                     randomPwdIfNotProvided="0" enforceMandatoryCondition="0" overrideCapabilities="0"
-                    syncPolicy_id="3"
-                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <ExternalResource name="ws-target-resource-update-resetsynctoken" connector_id="100" enforceMandatoryCondition="1"
-                    randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <ExternalResource name="resource-ldap" connector_id="105"
+                    pullPolicy_id="880f8553-069b-4aed-9930-2cd53873f544"
+                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" provisioningTraceLevel="ALL"/>
+  <ExternalResource id="ws-target-resource-update-resetsynctoken" connector_id="88a7a819-dab5-46b4-9b90-0b9769eabdb8" enforceMandatoryCondition="1"
+                    randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" provisioningTraceLevel="ALL"/>
+  <ExternalResource id="resource-ldap" connector_id="74141a3b-0762-4720-a4aa-fc3e374ef3ef"
                     randomPwdIfNotProvided="1" enforceMandatoryCondition="1" overrideCapabilities="0"
                     propagationPriority="1"
-                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <ExternalResource_PropActions resource_name="resource-ldap"
+                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" provisioningTraceLevel="ALL"/>
+  <ExternalResource_PropActions resource_id="resource-ldap"
                                 actionClassName="org.apache.syncope.core.provisioning.java.propagation.LDAPMembershipPropagationActions"/>
-  <ExternalResource name="ws-target-resource-nopropagation" connector_id="103"
+  <ExternalResource id="resource-ldap-orgunit" connector_id="74141a3b-0762-4720-a4aa-fc3e374ef3ef"
+                    randomPwdIfNotProvided="1" enforceMandatoryCondition="1" overrideCapabilities="0"
+                    propagationPriority="1"
+                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" provisioningTraceLevel="ALL"
+                    jsonConf='[{"schema":{"name":"uidAttribute","displayName":"Uid Attribute","helpMessage":"The name of the LDAP attribute which is mapped to the Uid attribute. Default is \"entryUUID\".","type":"java.lang.String","required":false,"order":21,"confidential":false,"defaultValues":["entryUUID"]},"overridable":true,"values":["entryUUID"]},{"schema":{"name":"baseContexts","displayName":"Base Contexts","helpMessage":"One or more starting points in the LDAP tree that will be used when searching the tree. Searches are performed when discovering users from the LDAP server or when looking for the groups of which a user is a member.","type":"[Ljava.lang.String;","required":true,"order":7,"confidential":false,"defaultValues":[]},"overridable":true,"values":["o=isp"]}]'/>
+  <OrgUnit id="599a59cf-9a23-4447-9a59-cf9a2334473a" connObjectLink="'ou=' + name + ',o=isp'"
+           extAttrName="ou" objectClass="organizationalUnit" resource_id="resource-ldap-orgunit"/>
+  <ExternalResource id="ws-target-resource-nopropagation" connector_id="fcf9f2b0-f7d6-42c9-84a6-61b28255a42b"
                     randomPwdIfNotProvided="0" enforceMandatoryCondition="1" overrideCapabilities="0"
-                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL" 
-                    passwordPolicy_id="4"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
+                    createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" provisioningTraceLevel="ALL"
+                    passwordPolicy_id="986d1236-3ac5-4a19-810c-5ab21d79cba1"/>
   
   <!-- The following three resources have been added to verify the issue SYNCOPE-68 -->
-  <ExternalResource name="ws-target-resource-nopropagation2" connector_id="103" 
+  <ExternalResource id="ws-target-resource-nopropagation2" connector_id="fcf9f2b0-f7d6-42c9-84a6-61b28255a42b" 
                     enforceMandatoryCondition="1" overrideCapabilities="0"
-                    randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <ExternalResource name="ws-target-resource-nopropagation3" connector_id="103" 
+                    randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" provisioningTraceLevel="ALL"/>
+  <ExternalResource id="ws-target-resource-nopropagation3" connector_id="fcf9f2b0-f7d6-42c9-84a6-61b28255a42b" 
                     enforceMandatoryCondition="1" overrideCapabilities="0"
-                    randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-  <ExternalResource name="ws-target-resource-nopropagation4" connector_id="103" 
+                    randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" provisioningTraceLevel="ALL"/>
+  <ExternalResource id="ws-target-resource-nopropagation4" connector_id="fcf9f2b0-f7d6-42c9-84a6-61b28255a42b" 
                     enforceMandatoryCondition="1" overrideCapabilities="0"
-                    randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
+                    randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" provisioningTraceLevel="ALL"/>
                     
   <!-- External resource for issue SYNCOPE-230 -->
-  <ExternalResource name="resource-db-sync" connector_id="107"
-                    randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" syncTraceLevel="ALL" updateTraceLevel="ALL"
-                    enforceMandatoryCondition="0" 
-                    overrideCapabilities="0"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
+  <ExternalResource id="resource-db-pull" connector_id="be24b061-019d-4e3e-baf0-0a6d0a45cb9c"
+                    randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" provisioningTraceLevel="ALL" updateTraceLevel="ALL"
+                    enforceMandatoryCondition="0" overrideCapabilities="0"/>
                     
   <!-- External resource for issue SYNCOPE-267 -->
-  <ExternalResource name="resource-db-virattr" connector_id="107"
-                    randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" syncTraceLevel="ALL" updateTraceLevel="ALL"
-                    enforceMandatoryCondition="0" 
-                    overrideCapabilities="0"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
+  <ExternalResource id="resource-db-virattr" connector_id="be24b061-019d-4e3e-baf0-0a6d0a45cb9c"
+                    randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" provisioningTraceLevel="ALL" updateTraceLevel="ALL"
+                    enforceMandatoryCondition="0" overrideCapabilities="0"/>
 
-  <ExternalResource name="resource-db-scripted" connector_id="108"
-                    randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" syncTraceLevel="ALL" updateTraceLevel="ALL"
-                    enforceMandatoryCondition="0"
-                    overrideCapabilities="0"
-                    creator="admin" lastModifier="admin" 
-                    creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
+  <ExternalResource id="resource-db-scripted" connector_id="a6d017fd-a705-4507-bb7c-6ab6a6745997"
+                    randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" provisioningTraceLevel="ALL" updateTraceLevel="ALL"
+                    enforceMandatoryCondition="0" overrideCapabilities="0"/>
 
   <!-- Use resource-testdb for passthrough authentication (SYNCOPE-164) -->
-  <AccountPolicy_ExternalResource accountPolicy_id="5" resource_name="resource-testdb"/>
+  <AccountPolicy_ExternalResource accountPolicy_id="20ab5a8c-4b0c-432c-b957-f7fb9784d9f7" resource_id="resource-testdb"/>
     
-  <SyncopeUser_ExternalResource user_id="1" resource_name="resource-testdb2"/>
-  <SyncopeUser_ExternalResource user_id="3" resource_name="ws-target-resource-delete"/>
-  <SyncopeUser_ExternalResource user_id="3" resource_name="ws-target-resource-2"/>
-  <SyncopeUser_ExternalResource user_id="3" resource_name="ws-target-resource-1"/>
-  <SyncopeUser_ExternalResource user_id="5" resource_name="resource-testdb2"/>
-  <SyncopeGroup_ExternalResource group_id="3" resource_name="ws-target-resource-list-mappings-1"/>
-  <SyncopeGroup_ExternalResource group_id="8" resource_name="ws-target-resource-2"/>
-  <SyncopeGroup_ExternalResource group_id="3" resource_name="ws-target-resource-list-mappings-2"/>
-  <SyncopeGroup_ExternalResource group_id="7" resource_name="ws-target-resource-nopropagation"/>
-  <SyncopeGroup_ExternalResource group_id="10" resource_name="ws-target-resource-nopropagation3"/>
-  <SyncopeGroup_ExternalResource group_id="12" resource_name="resource-csv"/>
-  <SyncopeGroup_ExternalResource group_id="13" resource_name="resource-csv"/>
+  <SyncopeUser_ExternalResource user_id="1417acbe-cbf6-4277-9372-e75e04f97000" resource_id="resource-testdb2"/>
+  <SyncopeUser_ExternalResource user_id="b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee" resource_id="ws-target-resource-delete"/>
+  <SyncopeUser_ExternalResource user_id="b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee" resource_id="ws-target-resource-2"/>
+  <SyncopeUser_ExternalResource user_id="b3cbc78d-32e6-4bd4-92e0-bbe07566a2ee" resource_id="ws-target-resource-1"/>
+  <SyncopeUser_ExternalResource user_id="823074dc-d280-436d-a7dd-07399fae48ec" resource_id="resource-testdb2"/>
+  <SyncopeGroup_ExternalResource group_id="29f96485-729e-4d31-88a1-6fc60e4677f3" resource_id="ws-target-resource-list-mappings-1"/>
+  <SyncopeGroup_ExternalResource group_id="f779c0d4-633b-4be5-8f57-32eb478a3ca5" resource_id="ws-target-resource-2"/>
+  <SyncopeGroup_ExternalResource group_id="29f96485-729e-4d31-88a1-6fc60e4677f3" resource_id="ws-target-resource-list-mappings-2"/>
+  <SyncopeGroup_ExternalResource group_id="bf825fe1-7320-4a54-bd64-143b5c18ab97" resource_id="ws-target-resource-nopropagation"/>
+  <SyncopeGroup_ExternalResource group_id="b8d38784-57e7-4595-859a-076222644b55" resource_id="ws-target-resource-nopropagation3"/>
+  <SyncopeGroup_ExternalResource group_id="0626100b-a4ba-4e00-9971-86fad52a6216" resource_id="resource-csv"/>
+  <SyncopeGroup_ExternalResource group_id="ba9ed509-b1f5-48ab-a334-c8530a6422dc" resource_id="resource-csv"/>
      
-  <Provision id="15" resource_name="ws-target-resource-1" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="15" provision_id="15"/>
-  <MappingItem id="99" mapping_id="15" extAttrName="userId"
-               intMappingType="UserKey" mandatoryCondition="true"
+  <Provision id="209ea85f-f964-49c7-a498-6c9c2baa3bd8" resource_id="ws-target-resource-1" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Mapping id="bc0cf27b-16b7-4e83-a4b0-09af7ea4aacc" provision_id="209ea85f-f964-49c7-a498-6c9c2baa3bd8"/>
+  <MappingItem id="96aad4e0-2678-4903-a52f-0a7d090a2863" mapping_id="bc0cf27b-16b7-4e83-a4b0-09af7ea4aacc" extAttrName="userId"
+               intAttrName="username" mandatoryCondition="true"
                connObjectKey="1" password="0" purpose="PROPAGATION"/>
-  <MappingItem id="100" extAttrName="email" mapping_id="15"
-               intAttrName="email" intMappingType="UserPlainSchema" mandatoryCondition="true"
+  <MappingItem id="7f55b09c-b573-41dc-a9eb-ccd80bd3ea7a" extAttrName="email" mapping_id="bc0cf27b-16b7-4e83-a4b0-09af7ea4aacc"
+               intAttrName="email" mandatoryCondition="true"
                connObjectKey="0" password="0" purpose="PROPAGATION"/>
-  <MappingItem id="101" extAttrName="surname" mapping_id="15"
-               intAttrName="surname" intMappingType="UserPlainSchema" mandatoryCondition="true"
+  <MappingItem id="a9749641-0556-49e2-a519-9bec35a4e06e" extAttrName="surname" mapping_id="bc0cf27b-16b7-4e83-a4b0-09af7ea4aacc"
+               intAttrName="surname" mandatoryCondition="true"
                connObjectKey="0" password="0" purpose="PROPAGATION"/>
-  <MappingItem id="102" mapping_id="15"
-               extAttrName="__PASSWORD__" intMappingType="Password" mandatoryCondition="true"
+  <MappingItem id="d118671c-2e3e-4aa3-a3dd-fde2ba4c4ded" mapping_id="bc0cf27b-16b7-4e83-a4b0-09af7ea4aacc"
+               extAttrName="__PASSWORD__" intAttrName="password" mandatoryCondition="true"
                connObjectKey="0" password="1" purpose="PROPAGATION"/>
-  <MappingItem id="335" mapping_id="15" 
-               extAttrName="fullname" intAttrName="surname" intMappingType="UserPlainSchema" mandatoryCondition="true"
+  <MappingItem id="dca9de4f-9a5a-4280-8e9a-357e321ba7a5" mapping_id="bc0cf27b-16b7-4e83-a4b0-09af7ea4aacc" 
+               extAttrName="fullname" intAttrName="surname" mandatoryCondition="true"
                connObjectKey="0" password="0" purpose="PROPAGATION"/>
-  <MappingItem id="336" mapping_id="15"
-               extAttrName="type" intAttrName="type" intMappingType="UserPlainSchema" mandatoryCondition="true"
+  <MappingItem id="471f0e2e-2bde-4442-9abf-0effb533f2ee" mapping_id="bc0cf27b-16b7-4e83-a4b0-09af7ea4aacc"
+               extAttrName="type" intAttrName="ctype" mandatoryCondition="true"
                connObjectKey="0" password="0" purpose="PROPAGATION"/>
-  <MappingItem id="337" mapping_id="15"
-               extAttrName="name" intAttrName="firstname" intMappingType="UserPlainSchema" mandatoryCondition="false"
+  <MappingItem id="72324cda-a66c-4ffe-b6b6-1d9b6cee9bf2" mapping_id="bc0cf27b-16b7-4e83-a4b0-09af7ea4aacc"
+               extAttrName="name" intAttrName="firstname" mandatoryCondition="false"
                connObjectKey="0" password="0" purpose="NONE"/>
   
-  <Provision id="12" resource_name="ws-target-resource-list-mappings-1" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="12" provision_id="12"/>
-  <MappingItem id="103" mapping_id="12"
-               extAttrName="email" intAttrName="email" intMappingType="UserPlainSchema" mandatoryCondition="true"
+  <Provision id="41a53a00-0b35-4047-831a-d5238f74c7ba" resource_id="ws-target-resource-list-mappings-1" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Mapping id="bf8afa4a-1522-44b9-91d0-c7b035e4fd99" provision_id="41a53a00-0b35-4047-831a-d5238f74c7ba"/>
+  <MappingItem id="6f8d7b42-44f4-4697-aff5-1736c4b01ee4" mapping_id="bf8afa4a-1522-44b9-91d0-c7b035e4fd99"
+               extAttrName="email" intAttrName="email" mandatoryCondition="true"
                connObjectKey="1" password="0" purpose="PROPAGATION"/>
-  <MappingItem id="104" extAttrName="surname" mapping_id="12"
-               intAttrName="surname" intMappingType="UserPlainSchema" mandatoryCondition="true"
+  <MappingItem id="8515e385-3bf1-4928-adc9-489dee65829a" extAttrName="surname"
+               mapping_id="bf8afa4a-1522-44b9-91d0-c7b035e4fd99"
+               intAttrName="surname" mandatoryCondition="true"
                connObjectKey="0" password="0" purpose="PROPAGATION"/>
 
-  <Provision id="13" resource_name="ws-target-resource-list-mappings-2" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="13" provision_id="13"/>
-  <MappingItem id="105" mapping_id="13"
-               extAttrName="userId" intAttrName="userId" intMappingType="UserPlainSchema" mandatoryCondition="true"
+  <Provision id="09a65250-d9de-44b1-9412-11ed996d356d" resource_id="ws-target-resource-list-mappings-2" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Mapping id="b12c4fad-f0f1-406d-b143-f2d68ed28e3a" provision_id="09a65250-d9de-44b1-9412-11ed996d356d"/>
+  <MappingItem id="55a4cf7f-ac96-4e8b-931c-2d0eab6a6bca" mapping_id="b12c4fad-f0f1-406d-b143-f2d68ed28e3a"
+               extAttrName="userId" intAttrName="userId" mandatoryCondition="true"
                connObjectKey="1" password="0" purpose="PROPAGATION"/>
 
-  <Provision id="1" resource_name="ws-target-resource-2" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="1" provision_id="1"/>
-  <MappingItem id="106" mapping_id="1" extAttrName="fullname"
-               intAttrName="fullname" intMappingType="UserPlainSchema" mandatoryCondition="true"
+  <Provision id="3d75991b-caee-4993-8e46-afb13d1bfbd4" resource_id="ws-target-resource-2" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Mapping id="240a0291-f89d-4557-a547-2a3b9aad625b" provision_id="3d75991b-caee-4993-8e46-afb13d1bfbd4"/>
+  <MappingItem id="d5c4d467-cd18-4148-8195-015808b4b3e6" mapping_id="240a0291-f89d-4557-a547-2a3b9aad625b"
+               extAttrName="fullname" intAttrName="fullname" mandatoryCondition="true"
                connObjectKey="1" password="0" purpose="BOTH"/>
-  <MappingItem id="107" mapping_id="1"
-               extAttrName="__PASSWORD__" intMappingType="Password" mandatoryCondition="true"
+  <MappingItem id="370a8673-f3f7-4328-a9ce-acd946f687c5" mapping_id="240a0291-f89d-4557-a547-2a3b9aad625b"
+               extAttrName="__PASSWORD__" intAttrName="password" mandatoryCondition="true"
                connObjectKey="0" password="1" purpose="BOTH"/>
-  <MappingItem id="108" extAttrName="type" mapping_id="1"
-               intAttrName="type" intMappingType="UserPlainSchema" mandatoryCondition="true"
+  <MappingItem id="c8d1a47a-1846-47b8-9f68-30aa21e94dcc" extAttrName="type" mapping_id="240a0291-f89d-4557-a547-2a3b9aad625b"
+               intAttrName="ctype" mandatoryCondition="true"
                connObjectKey="0" password="0" purpose="BOTH"/>
-  <MappingItem id="109" extAttrName="surname" mapping_id="1"
-               intAttrName="surname" intMappingType="UserPlainSchema" mandatoryCondition="type == 'F'"
+  <MappingItem id="f0a06b24-7d4d-480e-8188-e53045885569" extAttrName="surname" mapping_id="240a0291-f89d-4557-a547-2a3b9aad625b"
+               intAttrName="surname" mandatoryCondition="type == 'F'"
                connObjectKey="0" password="0" purpose="BOTH"/>
-  <MappingItem id="110" extAttrName="name" mapping_id="1"
-               intAttrName="virtualdata" intMappingType="UserVirtualSchema" mandatoryCondition="type == 'F'"
+  <MappingItem id="adc3c628-27b3-4740-be01-2f83c210ace9" extAttrName="name" mapping_id="240a0291-f89d-4557-a547-2a3b9aad625b"
+               intAttrName="virtualdata" mandatoryCondition="type == 'F'"
                connObjectKey="0" password="0" purpose="PROPAGATION"/>
-  <MappingItem id="111" extAttrName="fullname" mapping_id="1"
-               intAttrName="cn" intMappingType="UserDerivedSchema" mandatoryCondition="true"
+  <MappingItem id="6972a78b-2570-45d9-bc0b-31d2f2f9c860" extAttrName="fullname" mapping_id="240a0291-f89d-4557-a547-2a3b9aad625b"
+               intAttrName="cn" mandatoryCondition="true"
                connObjectKey="0" password="0" purpose="PROPAGATION"/>
     
-  <Provision id="2" resource_name="ws-target-resource-update" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="2" provision_id="2"/>
-  <MappingItem id="112" extAttrName="email" mapping_id="2"
-               intAttrName="email" intMappingType="UserPlainSchema" mandatoryCondition="false"
+  <Provision id="9ebc3237-49fa-4dce-9a4c-3070e931812f" resource_id="ws-target-resource-update" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Mapping id="c17813c0-4e90-4118-bb28-cd36ad6d5a4d" provision_id="9ebc3237-49fa-4dce-9a4c-3070e931812f"/>
+  <MappingItem id="cc973ed6-d031-4790-adab-fc059ac0c818" extAttrName="email" mapping_id="c17813c0-4e90-4118-bb28-cd36ad6d5a4d"
+               intAttrName="email" mandatoryCondition="false"
                connObjectKey="0" password="0" purpose="PROPAGATION"/>
-  <MappingItem id="113" extAttrName="userId" mapping_id="2"
-               intAttrName="userId" intMappingType="UserPlainSchema" mandatoryCondition="false"
+  <MappingItem id="7a72c812-1897-4db0-bed4-4e7e8ea51afe" extAttrName="userId" mapping_id="c17813c0-4e90-4118-bb28-cd36ad6d5a4d"
+               intAttrName="userId" mandatoryCondition="false"
                connObjectKey="1" password="0" purpose="PROPAGATION"/>
-  <MappingItem id="114" extAttrName="test3" mapping_id="2" 
-               intAttrName="fullname" intMappingType="UserPlainSchema" mandatoryCondition="false"
+  <MappingItem id="946a3c7f-6359-4ab7-8a5f-adb08bdb4b5b" extAttrName="test3" mapping_id="c17813c0-4e90-4118-bb28-cd36ad6d5a4d"
+               intAttrName="fullname" mandatoryCondition="false"
                connObjectKey="0" password="0" purpose="PROPAGATION"/>
     
-  <Provision id="3" resource_name="ws-target-resource-nopropagation" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="3" provision_id="3"/>
-  <MappingItem id="115" mapping_id="3" extAttrName="fullname" 
-               intAttrName="fullname" intMappingType="UserPlainSchema" mandatoryCondition="true"
+  <Provision id="8680bc79-dfa1-4719-9886-1d582bf1124f" resource_id="ws-target-resource-nopropagation" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Mapping id="63ddd4c8-efed-4a22-a4b4-1f4e6f47c8d0" provision_id="8680bc79-dfa1-4719-9886-1d582bf1124f"/>
+  <MappingItem id="ffcfbb5e-7bbd-489a-a69e-2dd84f00731a" mapping_id="63ddd4c8-efed-4a22-a4b4-1f4e6f47c8d0" extAttrName="fullname" 
+               intAttrName="fullname" mandatoryCondition="true"
                connObjectKey="1" password="0" purpose="PROPAGATION"/>
                      
-  <Provision id="4" resource_name="ws-target-resource-nopropagation2" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="4" provision_id="4"/>
-  <MappingItem id="116" mapping_id="4" extAttrName="fullname" 
-               intAttrName="fullname" intMappingType="UserPlainSchema" mandatoryCondition="true"
+  <Provision id="0bfa7c3e-2bb3-43d7-ac0e-d57cff7a18c8" resource_id="ws-target-resource-nopropagation2" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Mapping id="3f636292-6edb-4d20-ab24-fe0c5fc3dec3" provision_id="0bfa7c3e-2bb3-43d7-ac0e-d57cff7a18c8"/>
+  <MappingItem id="e34928b8-ca57-4b6c-81c1-70bc87ff3fdc" mapping_id="3f636292-6edb-4d20-ab24-fe0c5fc3dec3" extAttrName="fullname" 
+               intAttrName="fullname" mandatoryCondition="true"
                connObjectKey="1" password="0" purpose="PROPAGATION"/>
                      
-  <Provision id="5" resource_name="ws-target-resource-nopropagation3" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="5" provision_id="5"/>
-  <MappingItem id="117" mapping_id="5" extAttrName="fullname"
-               intAttrName="fullname" intMappingType="UserPlainSchema" mandatoryCondition="true"
+  <Provision id="5bd76fec-f8d7-4ab9-acd7-89e099d534e8" resource_id="ws-target-resource-nopropagation3" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Mapping id="c2a0cec1-32c4-4493-8f01-d1176e557fc1" provision_id="5bd76fec-f8d7-4ab9-acd7-89e099d534e8"/>
+  <MappingItem id="f3ba0859-b0f0-44a5-abfd-4a1a5ca29fbf" mapping_id="c2a0cec1-32c4-4493-8f01-d1176e557fc1" extAttrName="fullname"
+               intAttrName="fullname" mandatoryCondition="true"
                connObjectKey="1" password="0" purpose="PROPAGATION"/>
                      
-  <Provision id="6" resource_name="ws-target-resource-nopropagation4" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="6" provision_id="6"/>
-  <MappingItem id="118" mapping_id="6"
-               extAttrName="fullname" intAttrName="fullname" intMappingType="UserPlainSchema" mandatoryCondition="true"
+  <Provision id="18de6376-7051-4216-96f0-26629076abb9" resource_id="ws-target-resource-nopropagation4" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Mapping id="906452d9-3eeb-4ef7-ac90-5ffc14513fbf" provision_id="18de6376-7051-4216-96f0-26629076abb9"/>
+  <MappingItem id="118" mapping_id="906452d9-3eeb-4ef7-ac90-5ffc14513fbf"
+               extAttrName="fullname" intAttrName="fullname" mandatoryCondition="true"
                connObjectKey="1" password="0" purpose="PROPAGATION"/>
                        
-  <Provision id="7" resource_name="resource-testdb" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="7" provision_id="7"/>
-  <MappingItem id="119" mapping_id="7"
-               extAttrName="id" intMappingType="Username" mandatoryCondition="true"
+  <Provision id="779fefb5-dd25-4078-915d-3c199ee32158" resource_id="resource-testdb" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Mapping id="cb624b93-874b-40a0-8021-3b8116b781ab" provision_id="779fefb5-dd25-4078-915d-3c199ee32158"/>
+  <MappingItem id="1e0d30cd-2569-4a80-b9dc-af1467bd1c0b" mapping_id="cb624b93-874b-40a0-8021-3b8116b781ab"
+               extAttrName="ID" intAttrName="username" mandatoryCondition="true"
                connObjectKey="1" password="0" purpose="BOTH"/>
-  <MappingItem id="120" mapping_id="7"
-               extAttrName="__PASSWORD__" intMappingType="Password" mandatoryCondition="true"
+  <MappingItem id="7fd1a178-77a1-4c4c-aca2-3c3f1834b77b" mapping_id="cb624b93-874b-40a0-8021-3b8116b781ab"
+               extAttrName="__PASSWORD__" intAttrName="password" mandatoryCondition="true"
                connObjectKey="0" password="1" purpose="BOTH"/>
                      
-  <Provision id="8" resource_name="resource-testdb2" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="8" provision_id="8"/>
-  <MappingItem id="121" mapping_id="8" extAttrName="id" 
-               intMappingType="Username" mandatoryCondition="true"
+  <Provision id="0359084d-68fe-4bf8-b42b-2ebe4f578ae7" resource_id="resource-testdb2" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Mapping id="935a0fc2-4a0b-4d82-9931-3c5ce44a33c1" provision_id="0359084d-68fe-4bf8-b42b-2ebe4f578ae7"/>
+  <MappingItem id="6d90658a-f470-4450-912d-6fe7d3bcda46" mapping_id="935a0fc2-4a0b-4d82-9931-3c5ce44a33c1" extAttrName="ID" 
+               intAttrName="username" mandatoryCondition="true"
                connObjectKey="1" password="0" purpose="PROPAGATION"/>
-  <MappingItem id="122" mapping_id="8" extAttrName="__PASSWORD__" 
-               intMappingType="Password" mandatoryCondition="true"
+  <MappingItem id="2fb9eb01-50df-456e-86c1-b55f68cde2da" mapping_id="935a0fc2-4a0b-4d82-9931-3c5ce44a33c1" extAttrName="__PASSWORD__" 
+               intAttrName="password" mandatoryCondition="true"
                connObjectKey="0" password="1" purpose="PROPAGATION"/>
                          
-  <Provision id="9" resource_name="resource-csv" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="9" provision_id="9"/>
-  <MappingItem id="200" extAttrName="id" mapping_id="9"
-               intMappingType="Username" mandatoryCondition="true"
+  <Provision id="2adb6537-e207-4d9b-804f-90bf18cd6f48" resource_id="resource-csv" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Provision_AnyTypeClass provision_id="2adb6537-e207-4d9b-804f-90bf18cd6f48" anyTypeClass_id="csv"/>
+  <Provision_AnyTypeClass provision_id="2adb6537-e207-4d9b-804f-90bf18cd6f48" anyTypeClass_id="generic membership"/>
+  <Provision_AnyTypeClass provision_id="2adb6537-e207-4d9b-804f-90bf18cd6f48" anyTypeClass_id="minimal group"/>
+  <Mapping id="538c27dc-d260-4c53-9fc8-bf02ee226911" provision_id="2adb6537-e207-4d9b-804f-90bf18cd6f48"/>
+  <MappingItem id="517dc983-99a2-43c9-b4b4-78fd838e5ad1" extAttrName="id" mapping_id="538c27dc-d260-4c53-9fc8-bf02ee226911"
+               intAttrName="username" mandatoryCondition="true"
                connObjectKey="0" password="0" purpose="BOTH"/>
-  <MappingItem id="201" extAttrName="id" mapping_id="9"
-               intAttrName="fullname" intMappingType="UserPlainSchema" mandatoryCondition="true"
+  <MappingItem id="ba6fb125-466e-4109-8e5d-133936437674" extAttrName="id" mapping_id="538c27dc-d260-4c53-9fc8-bf02ee226911"
+               intAttrName="fullname" mandatoryCondition="true"
                connObjectKey="0" password="0" purpose="BOTH"/>
-  <MappingItem id="202" mapping_id="9"
-               extAttrName="__PASSWORD__" intMappingType="Password" mandatoryCondition="true"
+  <MappingItem id="c426b070-0290-42be-9ee1-4046c7649635" mapping_id="538c27dc-d260-4c53-9fc8-bf02ee226911"
+               extAttrName="__PASSWORD__" intAttrName="password" mandatoryCondition="true"
                connObjectKey="0" password="1" purpose="BOTH"/>
-  <MappingItem id="203" extAttrName="name" mapping_id="9"
-               intAttrName="firstname" intMappingType="UserPlainSchema" mandatoryCondition="false"
+  <MappingItem id="20dbe358-5b71-4edd-8670-2bbde982e5c4" extAttrName="name" mapping_id="538c27dc-d260-4c53-9fc8-bf02ee226911"
+               intAttrName="firstname" mandatoryCondition="false"
                connObjectKey="0" password="0" purpose="BOTH"/>
-  <MappingItem id="204" extAttrName="surname" mapping_id="9"
-               intAttrName="surname" intMappingType="UserPlainSchema" mandatoryCondition="false"
+  <MappingItem id="4d70850e-9fc5-4e75-83ea-432fe090e1c0" extAttrName="surname" mapping_id="538c27dc-d260-4c53-9fc8-bf02ee226911"
+               intAttrName="surname" mandatoryCondition="false"
                connObjectKey="0" password="0" purpose="BOTH"/>
-  <MappingItem id="205" extAttrName="email" mapping_id="9"
-               intAttrName="userId" intMappingType="UserPlainSchema" mandatoryCondition="true"
-               connObjectKey="0" password="0" purpose="SYNCHRONIZATION"/>
-  <MappingItem id="206" extAttrName="email" mapping_id="9"
-               intAttrName="email" intMappingType="UserPlainSchema" mandatoryCondition="true"
-               connObjectKey="0" password="0" purpose="SYNCHRONIZATION"/>
-  <MappingItem id="207" extAttrName="__NAME__" mapping_id="9"
-               intAttrName="csvuserid" intMappingType="UserDerivedSchema" mandatoryCondition="true"
+  <MappingItem id="4b2f4292-d8ab-4948-a341-3f8c9e23e72d" extAttrName="email" mapping_id="538c27dc-d260-4c53-9fc8-bf02ee226911"
+               intAttrName="userId" mandatoryCondition="true"
+               connObjectKey="0" password="0" purpose="PULL"/>
+  <MappingItem id="20d6c914-54e7-4968-b1fc-685ae9c2c4a4" extAttrName="email" mapping_id="538c27dc-d260-4c53-9fc8-bf02ee226911"
+               intAttrName="email" mandatoryCondition="true"
+               connObjectKey="0" password="0" purpose="PULL"/>
+  <MappingItem id="09237f39-0d45-4258-a7cc-2400f7536b72" extAttrName="__NAME__" mapping_id="538c27dc-d260-4c53-9fc8-bf02ee226911"
+               intAttrName="csvuserid" mandatoryCondition="true"
                connObjectKey="1" password="0" purpose="PROPAGATION"/>
-  <MappingItem id="208" extAttrName="theirgroup" mapping_id="9"
-               intAttrName="rderToBePropagated" intMappingType="GroupDerivedSchema" mandatoryCondition="false"
-               connObjectKey="0" password="0" purpose="PROPAGATION"/>
-  <MappingItem id="209" extAttrName="membership" mapping_id="9"
-               intAttrName="mderToBePropagated" intMappingType="AnyObjectDerivedSchema" mandatoryCondition="false"
+  <MappingItem id="63151b89-2eb3-4980-a682-0215d54ab4a2" extAttrName="theirgroup" mapping_id="538c27dc-d260-4c53-9fc8-bf02ee226911"
+               intAttrName="groups[root].rderToBePropagated" mandatoryCondition="false"
                connObjectKey="0" password="0" purpose="PROPAGATION"/>
                          
-  <Provision id="10" resource_name="ws-target-resource-update-resetsynctoken" anyType_name="USER" objectClass="__ACCOUNT__"
+  <Provision id="1b53c74e-6a63-49ef-b2f1-96eeb7f1bbb8" resource_id="ws-target-resource-update-resetsynctoken" anyType_id="USER" objectClass="__ACCOUNT__"
              serializedSyncToken='{"value":null}'/>
-  <Mapping id="10" provision_id="10"/>
-  <MappingItem id="300" mapping_id="10"
-               extAttrName="userId" intAttrName="userId" intMappingType="UserPlainSchema" mandatoryCondition="false"
+  <Mapping id="23e20ce6-1ff9-495e-aa59-a58e5127a008" provision_id="1b53c74e-6a63-49ef-b2f1-96eeb7f1bbb8"/>
+  <MappingItem id="608f01c5-eb7c-462a-b4d6-b7c3c9632a50" mapping_id="23e20ce6-1ff9-495e-aa59-a58e5127a008"
+               extAttrName="userId" intAttrName="userId" mandatoryCondition="false"
                connObjectKey="1" password="0" purpose="BOTH"/>
-  <MappingItem id="301" mapping_id="10"
-               extAttrName="__PASSWORD__" intAttrName="fullname" intMappingType="UserPlainSchema" mandatoryCondition="false"
+  <MappingItem id="79ada054-5f8b-4e77-b405-bfec58b06e7b" mapping_id="23e20ce6-1ff9-495e-aa59-a58e5127a008"
+               extAttrName="__PASSWORD__" intAttrName="fullname" mandatoryCondition="false"
                connObjectKey="0" password="1" purpose="BOTH"/>
 
-  <Provision id="11" resource_name="resource-ldap" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="11" provision_id="11"
+  <Provision id="8b938d63-aa92-448c-89a8-a685fc0a67c8" resource_id="resource-ldap" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Provision_AnyTypeClass provision_id="8b938d63-aa92-448c-89a8-a685fc0a67c8" anyTypeClass_id="generic membership"/>
+  <Provision_AnyTypeClass provision_id="8b938d63-aa92-448c-89a8-a685fc0a67c8" anyTypeClass_id="minimal group"/>
+  <Mapping id="ae1c77c3-2f1d-4258-ad06-710bb09041a9" provision_id="8b938d63-aa92-448c-89a8-a685fc0a67c8"
            connObjectLink="&apos;uid=&apos; + username + &apos;,ou=people,o=isp&apos;"/>
-  <MappingItem id="311" connObjectKey="1" password="0" mapping_id="11"
-               extAttrName="cn" intAttrName="Username" intMappingType="Username"
+  <MappingItem id="9ff7d686-452c-4cec-a475-c1137c5d88c7" connObjectKey="1" password="0" mapping_id="ae1c77c3-2f1d-4258-ad06-710bb09041a9"
+               extAttrName="cn" intAttrName="username"
                mandatoryCondition="true" purpose="BOTH"/>
-  <MappingItem id="312" connObjectKey="0" password="1" mapping_id="11"
-               extAttrName="__PASSWORD__" intAttrName="Password" intMappingType="Password"
+  <MappingItem id="73d97083-cfda-44e6-be62-3f9ac558b5eb" connObjectKey="0" password="1" mapping_id="ae1c77c3-2f1d-4258-ad06-710bb09041a9"
+               extAttrName="__PASSWORD__" intAttrName="password"
                mandatoryCondition="true" purpose="BOTH"/>
-  <MappingItem id="313" connObjectKey="0" password="0" mapping_id="11"
-               extAttrName="sn" intAttrName="surname" intMappingType="UserPlainSchema"
+  <MappingItem id="cf0a222c-36ea-41e6-987c-7908614ccd23" connObjectKey="0" password="0" mapping_id="ae1c77c3-2f1d-4258-ad06-710bb09041a9"
+               extAttrName="sn" intAttrName="surname"
                mandatoryCondition="true" purpose="BOTH"/>
-  <MappingItem id="314" connObjectKey="0" password="0" mapping_id="11"
-               extAttrName="cn" intAttrName="fullname" intMappingType="UserPlainSchema"
+  <MappingItem id="b3a12364-e471-4e37-83ad-476c33a43617" connObjectKey="0" password="0" mapping_id="ae1c77c3-2f1d-4258-ad06-710bb09041a9"
+               extAttrName="cn" intAttrName="fullname"
                mandatoryCondition="true" purpose="BOTH"/>
-  <MappingItem id="315" connObjectKey="0" password="0" mapping_id="11"
-               extAttrName="mail" intAttrName="email" intMappingType="UserPlainSchema"
+  <MappingItem id="aad2b7d7-3201-4bba-b496-f6587b4b7518" connObjectKey="0" password="0" mapping_id="ae1c77c3-2f1d-4258-ad06-710bb09041a9"
+               extAttrName="mail" intAttrName="email"
                mandatoryCondition="false" purpose="BOTH"/>
-  <MappingItem id="316" connObjectKey="0" password="0" mapping_id="11"
-               extAttrName="title" intAttrName="title" intMappingType="GroupPlainSchema"
+  <MappingItem id="81b83c98-127b-469b-a497-412ba50acbeb" connObjectKey="0" password="0" mapping_id="ae1c77c3-2f1d-4258-ad06-710bb09041a9"
+               extAttrName="title" intAttrName="title"
                mandatoryCondition="false" purpose="BOTH"/>
-  <MappingItem id="317" connObjectKey="0" password="0" mapping_id="11"
-               extAttrName="postalAddress" intAttrName="postalAddress" intMappingType="UserPlainSchema"
+  <MappingItem id="318e92a1-3acb-49c5-b2fd-dba819c40ef1" connObjectKey="0" password="0" mapping_id="ae1c77c3-2f1d-4258-ad06-710bb09041a9"
+               extAttrName="postalAddress" intAttrName="postalAddress"
                mandatoryCondition="false" purpose="BOTH"/>
-  <MappingItem id="318" connObjectKey="0" password="0" mapping_id="11"
-               extAttrName="mail" intAttrName="userId" intMappingType="UserPlainSchema"
+  <MappingItem id="78fa504f-213c-41ac-a922-7c9f98e5ce11" connObjectKey="0" password="0" mapping_id="ae1c77c3-2f1d-4258-ad06-710bb09041a9"
+               extAttrName="mail" intAttrName="userId"
                mandatoryCondition="false" purpose="BOTH"/>
-  <MappingItem id="320" connObjectKey="0" password="0" mapping_id="11"
-               extAttrName="registeredAddress" intAttrName="obscure" intMappingType="UserPlainSchema"
+  <MappingItem id="af6085cb-d0e8-47c9-b5f9-4b7d491a9750" connObjectKey="0" password="0" mapping_id="ae1c77c3-2f1d-4258-ad06-710bb09041a9"
+               extAttrName="registeredAddress" intAttrName="obscure"
                mandatoryCondition="false" purpose="BOTH"/>
-  <MappingItem id="321" connObjectKey="0" password="0" mapping_id="11"
-               extAttrName="jpegPhoto" intAttrName="photo" intMappingType="UserPlainSchema"
+  <MappingItem id="5bb62bd2-5007-4eb8-b4f9-9df8917dc767" connObjectKey="0" password="0" mapping_id="ae1c77c3-2f1d-4258-ad06-710bb09041a9"
+               extAttrName="jpegPhoto" intAttrName="photo"
                mandatoryCondition="false" purpose="BOTH"/>
         
-  <VirSchema name="virtualReadOnly" READONLY="1" anyTypeClass_name="minimal user"
-             provision_id="11" extAttrName="givenname"/>
+  <SyncopeSchema id="virtualReadOnly"/>
+  <VirSchema id="virtualReadOnly" READONLY="1" anyTypeClass_id="minimal user"
+             provision_id="8b938d63-aa92-448c-89a8-a685fc0a67c8" extAttrName="givenname"/>
 
-  <Provision id="20" resource_name="resource-ldap" anyType_name="GROUP" objectClass="__GROUP__"/>
-  <Mapping id="20" provision_id="20"
+  <Provision id="20a75199-3f2e-4b9a-9510-c68dd7fc7b3d" resource_id="resource-ldap" anyType_id="GROUP" objectClass="__GROUP__"/>
+  <Mapping id="128412c8-be4f-4d7b-8bed-5ab89134f718" provision_id="20a75199-3f2e-4b9a-9510-c68dd7fc7b3d"
            connObjectLink="&apos;cn=&apos; + name + &apos;,ou=groups,o=isp&apos;"/>
-  <MappingItem id="1" connObjectKey="1" password="0" mapping_id="20"
-               extAttrName="cn" intAttrName="groupName" intMappingType="GroupName"
+  <MappingItem id="a2bf43c8-74cb-4250-92cf-fb8889409ac1"
+               connObjectKey="1" password="0" mapping_id="128412c8-be4f-4d7b-8bed-5ab89134f718"
+               extAttrName="cn" intAttrName="name"
                mandatoryCondition="true" purpose="BOTH"/>
-  <MappingItem id="2" connObjectKey="0" password="0" mapping_id="20"
-               extAttrName="owner" intAttrName="groupOwnerSchema" intMappingType="GroupOwnerSchema"
+  <MappingItem id="da2a69bc-5ca0-4657-9a18-ec1f8c986046"
+               connObjectKey="0" password="0" mapping_id="128412c8-be4f-4d7b-8bed-5ab89134f718"
+               extAttrName="owner" intAttrName="userOwner"
                mandatoryCondition="false" purpose="BOTH"/>
-  <MappingItem id="3" connObjectKey="0" password="0" mapping_id="20"
-               extAttrName="description" intAttrName="title" intMappingType="GroupPlainSchema"
+  <MappingItem id="9dde8bd5-f158-499e-9d81-3d7fcf9ea1e8"
+               connObjectKey="0" password="0" mapping_id="128412c8-be4f-4d7b-8bed-5ab89134f718"
+               extAttrName="description" intAttrName="title"
                mandatoryCondition="false" purpose="BOTH"/>
   
-  <VirSchema name="rvirtualdata" anyTypeClass_name="minimal group" provision_id="20" extAttrName="businessCategory"/>
+  <SyncopeSchema id="rvirtualdata"/>
+  <VirSchema id="rvirtualdata" anyTypeClass_id="minimal group" provision_id="20a75199-3f2e-4b9a-9510-c68dd7fc7b3d" extAttrName="businessCategory"/>
 
-  <Provision id="16" resource_name="resource-db-sync" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="16" provision_id="16"/>
-  <MappingItem id="322" connObjectKey="0" mapping_id="16"
-               extAttrName="EMAIL" intAttrName="email" intMappingType="UserPlainSchema" 
+  <Provision id="46b54e2a-e43e-4cd7-8c13-1af1bd65c3d3" resource_id="resource-db-pull" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Mapping id="cda910bd-fc28-4f63-890e-66edc62d428b" provision_id="46b54e2a-e43e-4cd7-8c13-1af1bd65c3d3"/>
+  <MappingItem id="1a345706-a498-41bb-a948-820307a4365e" connObjectKey="0" mapping_id="cda910bd-fc28-4f63-890e-66edc62d428b"
+               extAttrName="EMAIL" intAttrName="email" 
                mandatoryCondition="false" password="0" purpose="BOTH"/>
-  <MappingItem id="323" connObjectKey="0" mapping_id="16"
-               extAttrName="SURNAME" intAttrName="fullname" intMappingType="UserPlainSchema" 
+  <MappingItem id="a234bde8-b431-408c-8ec9-c986c5b7f98d" connObjectKey="0" mapping_id="cda910bd-fc28-4f63-890e-66edc62d428b"
+               extAttrName="SURNAME" intAttrName="fullname" 
                mandatoryCondition="false" password="0" purpose="BOTH"/>
-  <MappingItem id="324" connObjectKey="1" mapping_id="16"
-               extAttrName="ID" intAttrName="aLong" intMappingType="UserPlainSchema" 
+  <MappingItem id="51a856de-ae25-41cd-967a-86920c834b70" connObjectKey="1" mapping_id="cda910bd-fc28-4f63-890e-66edc62d428b"
+               extAttrName="ID" intAttrName="firstname" 
                mandatoryCondition="false" password="0" purpose="BOTH"/>
-  <MappingItem id="325" connObjectKey="0" mapping_id="16"
-               extAttrName="SURNAME" intAttrName="surname" intMappingType="UserPlainSchema" 
+  <MappingItem id="f4e5178e-ef37-4949-933a-7ec7eaea64c6" connObjectKey="0" mapping_id="cda910bd-fc28-4f63-890e-66edc62d428b"
+               extAttrName="SURNAME" intAttrName="surname" 
                mandatoryCondition="false" password="0" purpose="BOTH"/>
-  <MappingItem id="326" connObjectKey="0" mapping_id="16"
-               extAttrName="USERNAME" intAttrName="Username" intMappingType="Username" 
+  <MappingItem id="3ac0ecaf-d9a1-4fc1-9ae9-84dc34576810" connObjectKey="0" mapping_id="cda910bd-fc28-4f63-890e-66edc62d428b"
+               extAttrName="USERNAME" intAttrName="username" 
                mandatoryCondition="false" password="0" purpose="BOTH"/>
-  <MappingItem id="327" connObjectKey="0" mapping_id="16"
-               extAttrName="EMAIL" intAttrName="userId" intMappingType="UserPlainSchema" 
+  <MappingItem id="e7215305-93c9-460b-b862-46f7b60de72d" connObjectKey="0" mapping_id="cda910bd-fc28-4f63-890e-66edc62d428b"
+               extAttrName="EMAIL" intAttrName="userId" 
                mandatoryCondition="false" password="0" purpose="BOTH"/>
               
-  <Provision id="17" resource_name="resource-db-virattr" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="17" provision_id="17"/>
-  <MappingItem id="331" mapping_id="17" connObjectKey="1" password="0"
-               extAttrName="id" intMappingType="UserKey" 
+  <Provision id="6d7cb60a-c4ad-4a70-94ae-e5b88eb24930" resource_id="resource-db-virattr" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Mapping id="45280585-308f-4571-9788-c7a4734b3614" provision_id="6d7cb60a-c4ad-4a70-94ae-e5b88eb24930"/>
+  <MappingItem id="6cb2f9f0-5fb4-4686-a375-31e2c34a6cd8" mapping_id="45280585-308f-4571-9788-c7a4734b3614" connObjectKey="1" password="0"
+               extAttrName="ID" intAttrName="key" 
                mandatoryCondition="true" purpose="BOTH"/>
                 
-  <VirSchema name="virtualdata" anyTypeClass_name="minimal user" provision_id="17" extAttrName="USERNAME"/>
+  <SyncopeSchema id="virtualdata"/>
+  <VirSchema id="virtualdata" anyTypeClass_id="minimal user" provision_id="6d7cb60a-c4ad-4a70-94ae-e5b88eb24930" extAttrName="USERNAME"/>
   
-  <Provision id="18" resource_name="ws-target-resource-timeout" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="18" provision_id="18"/>
-  <MappingItem id="333" mapping_id="18" connObjectKey="1" password="0"
-               extAttrName="fullname" intAttrName="fullname" intMappingType="UserPlainSchema"
+  <Provision id="cfa86cbe-94b6-4712-a40a-a4861be1d425" resource_id="ws-target-resource-timeout" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Mapping id="c71d690a-3dd9-48a5-b76f-32805186c4dc" provision_id="cfa86cbe-94b6-4712-a40a-a4861be1d425"/>
+  <MappingItem id="321bc904-e1fc-4a54-bf7c-74c8cbcc0815" mapping_id="c71d690a-3dd9-48a5-b76f-32805186c4dc" connObjectKey="1" password="0"
+               extAttrName="fullname" intAttrName="fullname"
                mandatoryCondition="true" purpose="PROPAGATION"/>
   
-  <Provision id="19" resource_name="ws-target-resource-delete" anyType_name="USER" objectClass="__ACCOUNT__"/>
-  <Mapping id="19" provision_id="19"/>
-  <MappingItem id="334" mapping_id="19" extAttrName="userId" 
-               intMappingType="Username" mandatoryCondition="true"
+  <Provision id="ac1659dc-3ea3-45eb-8ae6-626e3d916492" resource_id="ws-target-resource-delete" anyType_id="USER" objectClass="__ACCOUNT__"/>
+  <Mapping id="72f590ae-2754-456b-aabb-eda7d8459dd3" provision_id="ac1659dc-3ea3-45eb-8ae6-626e3d916492"/>
+  <MappingItem id="4c98536f-10df-4953-b2df-59d7cd057fd2" mapping_id="72f590ae-2754-456b-aabb-eda7d8459dd3" extAttrName="userId" 
+               intAttrName="username" mandatoryCondition="true"
                connObjectKey="1" password="0" purpose="PROPAGATION"/>
 
-  <Provision id="21" resource_name="resource-db-scripted" anyType_name="PRINTER" objectClass="__PRINTER__"/>
-  <Mapping id="21" provision_id="21"/>
-  <MappingItem id="405" mapping_id="21" extAttrName="id" 
-               intMappingType="AnyObjectKey" mandatoryCondition="true"
+  <Provision id="f1b55b66-eb13-4a93-a49c-448e93756eb6" resource_id="resource-db-scripted" anyType_id="PRINTER" objectClass="__PRINTER__"/>
+  <Mapping id="16439b5f-50c3-4604-97e9-f4004933abd8" provision_id="f1b55b66-eb13-4a93-a49c-448e93756eb6"/>
+  <MappingItem id="23aa0299-ddbb-4e59-8918-0ab2a32465fa" mapping_id="16439b5f-50c3-4604-97e9-f4004933abd8" extAttrName="ID" 
+               intAttrName="key" mandatoryCondition="true"
                connObjectKey="1" password="0" purpose="BOTH"/>
-  <MappingItem id="406" mapping_id="21" extAttrName="location" 
-               intAttrName="location" intMappingType="AnyObjectPlainSchema"
+  <MappingItem id="3dc96af0-5d0a-4ec1-be84-244716d88401" mapping_id="16439b5f-50c3-4604-97e9-f4004933abd8" extAttrName="PRINTERNAME" 
+               intAttrName="name" mandatoryCondition="true"
+               connObjectKey="0" password="0" purpose="BOTH"/>
+  <MappingItem id="f3ef9f8b-e667-4b18-969f-ba98c3d78bc0" mapping_id="16439b5f-50c3-4604-97e9-f4004933abd8" extAttrName="LOCATION" 
+               intAttrName="location"
                mandatoryCondition="false" connObjectKey="0" password="0" purpose="BOTH"/>
     
-  <Task DTYPE="PropagationTask" type="PROPAGATION" id="1" operation="UPDATE"
-        objectClassName="__ACCOUNT__" resource_name="ws-target-resource-2" anyTypeKind="USER" anyKey="1"
+  <Task DTYPE="PropagationTask" id="1e697572-b896-484c-ae7f-0c8f63fcbc6c" operation="UPDATE"
+        objectClassName="__ACCOUNT__" resource_id="ws-target-resource-2" anyTypeKind="USER" entityKey="1417acbe-cbf6-4277-9372-e75e04f97000"
         attributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
-  <TaskExec id="1" task_id="1" start="2015-12-17 09:40:00.506" end="2015-12-17 09:42:00.506" status="SUCCESS"/>
-  <Task DTYPE="PropagationTask" type="PROPAGATION" id="2" operation="CREATE"
-        objectClassName="__ACCOUNT__" resource_name="ws-target-resource-2" anyTypeKind="USER" anyKey="1"
+  <TaskExec id="e58ca1c7-178a-4012-8a71-8aa14eaf0655" task_id="1e697572-b896-484c-ae7f-0c8f63fcbc6c" startDate="2015-12-17 09:40:00.506" endDate="2015-12-17 09:42:00.506" status="SUCCESS"/>
+  <Task DTYPE="PropagationTask" id="b8870cfb-3c1e-4fc4-abcb-2559826232e6" operation="CREATE"
+        objectClassName="__ACCOUNT__" resource_id="ws-target-resource-2" anyTypeKind="USER" entityKey="1417acbe-cbf6-4277-9372-e75e04f97000"
         attributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
-  <Task DTYPE="PropagationTask" type="PROPAGATION" id="3" operation="DELETE"
-        objectClassName="__ACCOUNT__" resource_name="ws-target-resource-2" anyTypeKind="USER" anyKey="1"
+  <Task DTYPE="PropagationTask" id="316285cc-ae52-4ea2-a33b-7355e189ac3f" operation="DELETE"
+        objectClassName="__ACCOUNT__" resource_id="ws-target-resource-2" anyTypeKind="USER" entityKey="1417acbe-cbf6-4277-9372-e75e04f97000"
         attributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"type","value":["type"]}]'/>
-  <Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="4" name="CSV (update matching; assign unmatching)" resource_name="resource-csv"
-        destinationRealm_id="1" performCreate="1" performUpdate="1" performDelete="1" syncStatus="1"
-        syncMode="INCREMENTAL" unmatchingRule="ASSIGN" matchingRule="UPDATE" active="1"/>
-  <AnyTemplateSyncTask id="41" syncTask_id="4" anyType_name="USER"
-                       template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":["csv"],"derAttrs":[{"schema":"cn","readonly":false,"values":[""]}],"virAttrs":[],"resources":["resource-testdb"],"relationships":[],"memberships":[{"leftType":null,"leftKey":0,"rightType":"GROUP","rightKey":8,"groupName":null}],"dynGroups":[],"roles":[],"dynRoles":[],"plainAttrs":[{"schema":"type","readonly":false,"values":["email == &apos;test8@syncope.apache.org&apos;? &apos;TYPE_8&apos;: &apos;TYPE_OTHER&apos;"]}]}'/>
-  <AnyTemplateSyncTask id="42" syncTask_id="4" anyType_name="GROUP"
-                       template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[]}'/>
-  <Task DTYPE="SchedTask" type="SCHEDULED" id="5" name="SampleJob Task"  active="1"
+  <Task DTYPE="PullTask" id="c41b9b71-9bfa-4f90-89f2-84787def4c5c" name="CSV (update matching; assign unmatching)" resource_id="resource-csv"
+        destinationRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" performCreate="1" performUpdate="1" performDelete="1" syncStatus="1"
+        pullMode="INCREMENTAL" unmatchingRule="ASSIGN" matchingRule="UPDATE" active="1"/>
+  <AnyTemplatePullTask id="3a6173a9-8c34-4e37-b3b1-0c2ea385fac0"
+                       pullTask_id="c41b9b71-9bfa-4f90-89f2-84787def4c5c" anyType_id="USER"
+                       template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":["csv"],"derAttrs":[{"schema":"cn","values":[""]}],"virAttrs":[],"resources":["resource-testdb"],"relationships":[],"memberships":[{"rightType":"GROUP","rightKey":"f779c0d4-633b-4be5-8f57-32eb478a3ca5","groupName":null}],"dynGroups":[],"roles":[],"dynRoles":[],"plainAttrs":[{"schema":"ctype","values":["email == &apos;test8@syncope.apache.org&apos;? &apos;TYPE_8&apos;: &apos;TYPE_OTHER&apos;"]}]}'/>
+  <AnyTemplatePullTask id="b3772d66-ec06-4133-bf38-b3273845ac5b"
+                       pullTask_id="c41b9b71-9bfa-4f90-89f2-84787def4c5c" anyType_id="GROUP"
+                       template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[]}'/>
+  <Task DTYPE="SchedTask" id="e95555d2-1b09-42c8-b25b-f4c4ec597979" name="SampleJob Task"  active="1"
         jobDelegateClassName="org.apache.syncope.fit.core.reference.TestSampleJobDelegate" cronExpression="0 0 0 1 * ?"/>
-  <Task DTYPE="PropagationTask" type="PROPAGATION" id="6" operation="UPDATE"
-        objectClassName="__ACCOUNT__" resource_name="ws-target-resource-nopropagation" anyTypeKind="USER" anyKey="1"
+  <Task DTYPE="SchedTask" id="e95555d2-1b09-42c8-b25b-f4c4ec598989" name="Identity Recertification Task"  active="1"
+        jobDelegateClassName="org.apache.syncope.core.provisioning.java.job.IdentityRecertification"/>
+  <Task DTYPE="PropagationTask" id="d6c2d6d3-6329-44c1-9187-f1469ead1cfa" operation="UPDATE"
+        objectClassName="__ACCOUNT__" resource_id="ws-target-resource-nopropagation" anyTypeKind="USER" entityKey="1417acbe-cbf6-4277-9372-e75e04f97000"
         attributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
-  <TaskExec id="6" task_id="6" start="2015-12-17 09:40:00.506" end="2015-12-17 09:42:00.506" status="SUCCESS"/>
-  <Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="7" name="TestDB Task" resource_name="resource-testdb"
-        destinationRealm_id="1" performCreate="1" performUpdate="1" performDelete="0" syncStatus="1" syncMode="FULL_RECONCILIATION"
+  <TaskExec id="d789462f-e395-424f-bd8e-0db44a93222f" task_id="d6c2d6d3-6329-44c1-9187-f1469ead1cfa" startDate="2015-12-17 09:40:00.506" endDate="2015-12-17 09:42:00.506" status="SUCCESS"/>
+  <Task DTYPE="PullTask" id="83f7e85d-9774-43fe-adba-ccd856312994" name="TestDB Task" resource_id="resource-testdb"
+        destinationRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" performCreate="1" performUpdate="1" performDelete="0" syncStatus="1" pullMode="FULL_RECONCILIATION"
         unmatchingRule="PROVISION" matchingRule="UPDATE" active="1"/>
-  <AnyTemplateSyncTask id="71" syncTask_id="7" anyType_name="USER"
-                       template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"relationships":[],"memberships":[],"dynGroups":[],"roles":[],"dynRoles":[],"plainAttrs":[{"schema":"type","readonly":false,"values":["&apos;type a&apos;"]},{"schema":"userId","readonly":false,"values":["&apos;reconciled@syncope.apache.org&apos;"]},{"schema":"fullname","readonly":false,"values":["&apos;reconciled fullname&apos;"]},{"schema":"surname","readonly":false,"values":["&apos;surname&apos;"]}]}'/>
-  <AnyTemplateSyncTask id="72" syncTask_id="7" anyType_name="GROUP"
-                       template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[]}'/>
-  <Task DTYPE="NotificationTask" type="NOTIFICATION" id="8" sender="admin@prova.org" subject="Notification for SYNCOPE-81" 
-        textBody="NOTIFICATION-81" htmlBody="NOTIFICATION-81" traceLevel="ALL"/>
-  <Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="9" name="TestDB2 Task" resource_name="resource-testdb2"
-        destinationRealm_id="1" performCreate="1" performUpdate="1" performDelete="0" syncStatus="1" syncMode="FULL_RECONCILIATION"
+  <AnyTemplatePullTask id="6c3f578d-327b-4a7c-8037-6f5ba24eb770" pullTask_id="83f7e85d-9774-43fe-adba-ccd856312994" anyType_id="USER"
+                       template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"relationships":[],"memberships":[],"dynGroups":[],"roles":[],"dynRoles":[],"plainAttrs":[{"schema":"ctype","values":["&apos;type a&apos;"]},{"schema":"userId","values":["&apos;reconciled@syncope.apache.org&apos;"]},{"schema":"fullname","values":["&apos;reconciled fullname&apos;"]},{"schema":"surname","values":["&apos;surname&apos;"]}]}'/>
+  <AnyTemplatePullTask id="45b61137-c7c3-49ee-86e0-9efffa75ae68" pullTask_id="83f7e85d-9774-43fe-adba-ccd856312994" anyType_id="GROUP"
+                       template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[]}'/>
+  <Task DTYPE="PullTask" id="81d88f73-d474-4450-9031-605daa4e313f" name="TestDB2 Task" resource_id="resource-testdb2"
+        destinationRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" performCreate="1" performUpdate="1" performDelete="0" syncStatus="1" pullMode="FULL_RECONCILIATION"
         unmatchingRule="PROVISION" matchingRule="UPDATE" active="1"/>
-  <Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="10" name="TestDB Sync Task" resource_name="resource-db-sync"
-        destinationRealm_id="1" syncMode="FULL_RECONCILIATION" performCreate="1" performDelete="1" performUpdate="1" syncStatus="0"
+  <Task DTYPE="PullTask" id="7c2242f4-14af-4ab5-af31-cdae23783655" name="TestDB Pull Task" resource_id="resource-db-pull"
+        destinationRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" pullMode="FULL_RECONCILIATION" performCreate="1" performDelete="1" performUpdate="1" syncStatus="0"
         unmatchingRule="PROVISION" matchingRule="UPDATE" active="1"/>
-  <Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="11" name="LDAP Sync Task" resource_name="resource-ldap"
-        destinationRealm_id="1" syncMode="FULL_RECONCILIATION" performCreate="1" performDelete="1" performUpdate="1" syncStatus="0"
+  <Task DTYPE="PullTask" id="1e419ca4-ea81-4493-a14f-28b90113686d" name="LDAP Pull Task" resource_id="resource-ldap"
+        destinationRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" pullMode="FULL_RECONCILIATION" performCreate="1" performDelete="1" performUpdate="1" syncStatus="0"
         unmatchingRule="PROVISION" matchingRule="UPDATE" active="1"/>
-  <AnyTemplateSyncTask id="1" syncTask_id="11" anyType_name="USER"
-                       template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":[],"derAttrs":[],"virAttrs":[{"schema":"virtualReadOnly","readonly":true,"values":[""]}],"resources":["resource-ldap"],"roles":[],"dynRoles":[],"relationships":[],"memberships":[],"dynGroups":[],"plainAttrs":[]}'/>
-  <AnyTemplateSyncTask id="2" syncTask_id="11" anyType_name="GROUP"
-                       template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[{"schema":"show","readonly":false,"values":["true"]}]}'/>
-  <SyncTask_actionsClassNames SyncTask_id="11" actionClassName="org.apache.syncope.core.provisioning.java.sync.LDAPMembershipSyncActions"/>
-  <Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="12" name="VirAttrCache test" resource_name="resource-csv"
-        destinationRealm_id="1" performCreate="0" performUpdate="1" performDelete="0" syncStatus="0" syncMode="FULL_RECONCILIATION"
+  <AnyTemplatePullTask id="df655a2a-40c0-43b1-a157-3f4988802f58" pullTask_id="1e419ca4-ea81-4493-a14f-28b90113686d" anyType_id="USER"
+                       template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"USER","realm":"&apos;/&apos; + title","status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":["minimal group"],"derAttrs":[],"virAttrs":[{"schema":"virtualReadOnly","values":[""]}],"resources":["resource-ldap"],"roles":[],"dynRoles":[],"relationships":[],"memberships":[],"dynGroups":[],"plainAttrs":[]}'/>
+  <AnyTemplatePullTask id="fda22ff3-98f3-42e4-a2ae-cd9a28282d57" pullTask_id="1e419ca4-ea81-4493-a14f-28b90113686d" anyType_id="GROUP"
+                       template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[{"schema":"show","values":["true"]}]}'/>
+  <PullTask_actionsClassNames pullTask_id="1e419ca4-ea81-4493-a14f-28b90113686d" actionClassName="org.apache.syncope.core.provisioning.java.pushpull.LDAPMembershipPullActions"/>
+  <Task DTYPE="PullTask" id="38abbf9e-a1a3-40a1-a15f-7d0ac02f47f1" name="VirAttrCache test" resource_id="resource-csv"
+        destinationRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" performCreate="0" performUpdate="1" performDelete="0" syncStatus="0" pullMode="FULL_RECONCILIATION"
         unmatchingRule="PROVISION" matchingRule="UPDATE" active="1"/>
-  <Task DTYPE="PushTask" type="PUSH" id="13" name="Export on resource-testdb2" resource_name="resource-testdb2"
+  <Task DTYPE="PushTask" id="af558be4-9d2f-4359-bf85-a554e6e90be1" name="Export on resource-testdb2" resource_id="resource-testdb2"
         performCreate="1" performUpdate="1" performDelete="1" syncStatus="1"         
         unmatchingRule="ASSIGN" matchingRule="IGNORE" active="1"/>  
-  <PushTaskAnyFilter id="131" anyType_name="USER" pushTask_id="13" fiql="surname==Vivaldi"/>
-  <PushTaskAnyFilter id="132" anyType_name="GROUP" pushTask_id="13" fiql="name==_NO_ONE_"/>
-  <Task DTYPE="PushTask" type="PUSH" id="14" name="Export on resource-testdb2" resource_name="resource-testdb2"
+  <PushTaskAnyFilter id="1fdcff65-765f-4a6e-98a7-13ef7cca47e2" anyType_id="USER" pushTask_id="af558be4-9d2f-4359-bf85-a554e6e90be1" fiql="surname==Vivaldi"/>
+  <PushTaskAnyFilter id="3b564c51-5d64-48b3-8da5-fd4ebc10e0a8" anyType_id="GROUP" pushTask_id="af558be4-9d2f-4359-bf85-a554e6e90be1" fiql="name==_NO_ONE_"/>
+  <Task DTYPE="PushTask" id="97f327b6-2eff-4d35-85e8-d581baaab855" name="Export on resource-testdb2" resource_id="resource-testdb2"
         performCreate="1" performUpdate="1" performDelete="1" syncStatus="1"         
         unmatchingRule="PROVISION" matchingRule="IGNORE" active="1"/>
-  <PushTaskAnyFilter id="141" anyType_name="USER" pushTask_id="14" fiql="surname==Bellini"/>
-  <PushTaskAnyFilter id="142" anyType_name="GROUP" pushTask_id="14" fiql="name==_NO_ONE_"/>
-  <Task DTYPE="PushTask" type="PUSH" id="15" name="Export on resource-testdb2" resource_name="resource-testdb2"
+  <PushTaskAnyFilter id="199efd21-5e89-46ac-95de-f47e9d0569fc" anyType_id="USER" pushTask_id="97f327b6-2eff-4d35-85e8-d581baaab855" fiql="surname==Bellini"/>
+  <PushTaskAnyFilter id="7672a167-77d6-4639-8b1d-0af561293c7d" anyType_id="GROUP" pushTask_id="97f327b6-2eff-4d35-85e8-d581baaab855" fiql="name==_NO_ONE_"/>
+  <Task DTYPE="PushTask" id="03aa2a04-4881-4573-9117-753f81b04865" name="Export on resource-testdb2" resource_id="resource-testdb2"
         performCreate="1" performUpdate="1" performDelete="1" syncStatus="1"        
         unmatchingRule="UNLINK" matchingRule="IGNORE" active="1"/>
-  <PushTaskAnyFilter id="151" anyType_name="USER" pushTask_id="15" fiql="surname==Puccini"/>
-  <PushTaskAnyFilter id="152" anyType_name="GROUP" pushTask_id="15" fiql="name==_NO_ONE_"/>
-  <Task DTYPE="PushTask" type="PUSH" id="16" name="Export on resource-testdb2" resource_name="resource-testdb2"
+  <PushTaskAnyFilter id="39a11ba6-397a-4c94-8bfe-1f4f757d6501" anyType_id="USER" pushTask_id="03aa2a04-4881-4573-9117-753f81b04865" fiql="surname==Puccini"/>
+  <PushTaskAnyFilter id="5bd7501e-8a18-4fbd-a3fe-a1e731ba95db" anyType_id="GROUP" pushTask_id="03aa2a04-4881-4573-9117-753f81b04865" fiql="name==_NO_ONE_"/>
+  <Task DTYPE="PushTask" id="5e5f7c7e-9de7-4c6a-99f1-4df1af959807" name="Export on resource-testdb2" resource_id="resource-testdb2"
         performCreate="1" performUpdate="1" performDelete="1" syncStatus="1"         
         unmatchingRule="IGNORE" matchingRule="IGNORE" active="1"/>
-  <PushTaskAnyFilter id="161" anyType_name="USER" pushTask_id="16" fiql="surname==Verdi"/>
-  <PushTaskAnyFilter id="162" anyType_name="GROUP" pushTask_id="16" fiql="name==_NO_ONE_"/>
-  <Task DTYPE="PushTask" type="PUSH" id="17" name="Export on resource-testdb2" resource_name="resource-testdb2"
+  <PushTaskAnyFilter id="0d0371a3-5772-4b4c-ad14-139adf1d346a" anyType_id="USER" pushTask_id="5e5f7c7e-9de7-4c6a-99f1-4df1af959807" fiql="surname==Verdi"/>
+  <PushTaskAnyFilter id="2e7488ae-a2fc-4657-a93b-159b8433c0e7" anyType_id="GROUP" pushTask_id="5e5f7c7e-9de7-4c6a-99f1-4df1af959807" fiql="name==_NO_ONE_"/>
+  <Task DTYPE="PushTask" id="0bc11a19-6454-45c2-a4e3-ceef84e5d79b" name="Export on resource-testdb2" resource_id="resource-testdb2"
         performCreate="1" performUpdate="1" performDelete="1" syncStatus="1"        
         unmatchingRule="ASSIGN" matchingRule="UPDATE" active="1"/>
-  <PushTaskAnyFilter id="171" anyType_name="USER" pushTask_id="17" fiql="username==_NO_ONE_"/>
-  <PushTaskAnyFilter id="172" anyType_name="GROUP" pushTask_id="17" fiql="name==_NO_ONE_"/>
-  <Task DTYPE="PushTask" type="PUSH" id="18" name="Export on resource-testdb2" resource_name="resource-testdb2"
+  <PushTaskAnyFilter id="41bf22fe-a014-41af-9a75-402b987eb433" anyType_id="USER" pushTask_id="0bc11a19-6454-45c2-a4e3-ceef84e5d79b" fiql="username==_NO_ONE_"/>
+  <PushTaskAnyFilter id="fa983fde-795e-4c89-a6f7-1ccd80a8adeb" anyType_id="GROUP" pushTask_id="0bc11a19-6454-45c2-a4e3-ceef84e5d79b" fiql="name==_NO_ONE_"/>
+  <Task DTYPE="PushTask" id="ec674143-480a-4816-98ad-b61fa090821e" name="Export on resource-testdb2" resource_id="resource-testdb2"
         performCreate="1" performUpdate="1" performDelete="1" syncStatus="1"        
         unmatchingRule="IGNORE" matchingRule="DEPROVISION" active="1"/>
-  <PushTaskAnyFilter id="181" anyType_name="USER" pushTask_id="18" fiql="surname==Verdi"/>
-  <PushTaskAnyFilter id="182" anyType_name="GROUP" pushTask_id="18" fiql="name==_NO_ONE_"/>
-  <Task DTYPE="PushTask" type="PUSH" id="19" name="Export on resource-testdb2" resource_name="resource-testdb2"
+  <PushTaskAnyFilter id="e238a6dc-0b04-46cf-9bfa-be68bd9f2da0" anyType_id="USER" pushTask_id="ec674143-480a-4816-98ad-b61fa090821e" fiql="surname==Verdi"/>
+  <PushTaskAnyFilter id="0eaa643e-0add-4c46-8273-539f9d6abec5" anyType_id="GROUP" pushTask_id="ec674143-480a-4816-98ad-b61fa090821e" fiql="name==_NO_ONE_"/>
+  <Task DTYPE="PushTask" id="c46edc3a-a18b-4af2-b707-f4a415507496" name="Export on resource-testdb2" resource_id="resource-testdb2"
         performCreate="1" performUpdate="1" performDelete="1" syncStatus="1"        
         unmatchingRule="IGNORE" matchingRule="UNASSIGN" active="1"/>
-  <PushTaskAnyFilter id="191" anyType_name="USER" pushTask_id="19" fiql="surname==Rossini"/>
-  <PushTaskAnyFilter id="192" anyType_name="GROUP" pushTask_id="19" fiql="name==_NO_ONE_"/>
-  <Task DTYPE="PushTask" type="PUSH" id="20" name="Export on resource-testdb2" resource_name="resource-testdb2"
+  <PushTaskAnyFilter id="335b4f11-589a-44c5-80b0-ba94892f0c62" anyType_id="USER" pushTask_id="c46edc3a-a18b-4af2-b707-f4a415507496" fiql="surname==Rossini"/>
+  <PushTaskAnyFilter id="b32eecc2-aa4f-43c6-a501-a692c3e93113" anyType_id="GROUP" pushTask_id="c46edc3a-a18b-4af2-b707-f4a415507496" fiql="name==_NO_ONE_"/>
+  <Task DTYPE="PushTask" id="51318433-cce4-4f71-8f45-9534b6c9c819" name="Export on resource-testdb2" resource_id="resource-testdb2"
         performCreate="1" performUpdate="1" performDelete="1" syncStatus="1"        
         unmatchingRule="IGNORE" matchingRule="LINK" active="1"/>
-  <PushTaskAnyFilter id="201" anyType_name="USER" pushTask_id="20" fiql="surname==Verdi"/>
-  <PushTaskAnyFilter id="202" anyType_name="GROUP" pushTask_id="20" fiql="name==_NO_ONE_"/>
-  <Task DTYPE="PushTask" type="PUSH" id="21" name="Export on resource-testdb2" resource_name="resource-testdb2"
+  <PushTaskAnyFilter id="9f974a0d-87d8-4cae-9ea9-1fc245bc1dbf" anyType_id="USER" pushTask_id="51318433-cce4-4f71-8f45-9534b6c9c819" fiql="surname==Verdi"/>
+  <PushTaskAnyFilter id="0dc46ba4-1270-4fa9-b3e1-79f940d4308f" anyType_id="GROUP" pushTask_id="51318433-cce4-4f71-8f45-9534b6c9c819" fiql="name==_NO_ONE_"/>
+  <Task DTYPE="PushTask" id="24b1be9c-7e3b-443a-86c9-798ebce5eaf2" name="Export on resource-testdb2" resource_id="resource-testdb2"
         performCreate="1" performUpdate="1" performDelete="1" syncStatus="1"        
         unmatchingRule="IGNORE" matchingRule="UNLINK" active="1"/>
-  <PushTaskAnyFilter id="211" anyType_name="USER" pushTask_id="21" fiql="surname==Verdi"/>
-  <PushTaskAnyFilter id="212" anyType_name="GROUP" pushTask_id="21" fiql="name==_NO_ONE_"/>
-  <Task DTYPE="PushTask" type="PUSH" id="22" name="Export on resource-testdb2" resource_name="resource-testdb2"
+  <PushTaskAnyFilter id="3aa3b0b8-7469-4859-89d5-476ae5915101" anyType_id="USER" pushTask_id="24b1be9c-7e3b-443a-86c9-798ebce5eaf2" fiql="surname==Verdi"/>
+  <PushTaskAnyFilter id="f054810e-6842-4017-8f60-5b4031fa2c72" anyType_id="GROUP" pushTask_id="24b1be9c-7e3b-443a-86c9-798ebce5eaf2" fiql="name==_NO_ONE_"/>
+  <Task DTYPE="PushTask" id="375c7b7f-9e3a-4833-88c9-b7787b0a69f2" name="Export on resource-testdb2" resource_id="resource-testdb2"
         performCreate="1" performUpdate="1" performDelete="1" syncStatus="1"        
         unmatchingRule="IGNORE" matchingRule="UPDATE"  active="1"/>
-  <PushTaskAnyFilter id="221" anyType_name="USER" pushTask_id="22" fiql="surname==Verdi"/>
-  <PushTaskAnyFilter id="222" anyType_name="GROUP" pushTask_id="22" fiql="name==_NO_ONE_"/>
-  <Task DTYPE="PushTask" type="PUSH" id="23" name="Export on resource-ldap" resource_name="resource-ldap"
+  <PushTaskAnyFilter id="95f047fc-1a8a-45f4-b56c-6e04d8ca5567" anyType_id="USER" pushTask_id="375c7b7f-9e3a-4833-88c9-b7787b0a69f2" fiql="surname==Verdi"/>
+  <PushTaskAnyFilter id="013a4298-4b14-4f8b-9f59-191c2d53dbd8" anyType_id="GROUP" pushTask_id="375c7b7f-9e3a-4833-88c9-b7787b0a69f2" fiql="name==_NO_ONE_"/>
+  <Task DTYPE="PushTask" id="fd905ba5-9d56-4f51-83e2-859096a67b75" name="Export on resource-ldap" resource_id="resource-ldap"
         performCreate="1" performUpdate="1" performDelete="1" syncStatus="1"        
         unmatchingRule="ASSIGN" matchingRule="UNLINK" active="1"/>
-  <PushTaskAnyFilter id="231" anyType_name="USER" pushTask_id="23" fiql="username==_NO_ONE_"/>
-  <PushTaskAnyFilter id="232" anyType_name="GROUP" pushTask_id="23" fiql="name==citizen"/>
-  <Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="24" name="CSV Task (update matching; provision unmatching)" resource_name="resource-csv"
-        destinationRealm_id="1" performCreate="1" performUpdate="1" performDelete="1" syncStatus="1" syncMode="INCREMENTAL"
+  <PushTaskAnyFilter id="30842acc-f2dd-4d47-b359-20db06c30803" anyType_id="USER" pushTask_id="fd905ba5-9d56-4f51-83e2-859096a67b75" fiql="username==_NO_ONE_"/>
+  <PushTaskAnyFilter id="9e4c0233-440e-4b5b-9563-11ec0f55a334" anyType_id="GROUP" pushTask_id="fd905ba5-9d56-4f51-83e2-859096a67b75" fiql="name==citizen"/>
+  <Task DTYPE="PullTask" id="986867e2-993b-430e-8feb-aa9abb4c1dcd" name="CSV Task (update matching; provision unmatching)" resource_id="resource-csv"
+        destinationRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" performCreate="1" performUpdate="1" performDelete="1" syncStatus="1" pullMode="INCREMENTAL"
         unmatchingRule="PROVISION" matchingRule="UPDATE" active="1"/>
-  <AnyTemplateSyncTask id="3" syncTask_id="24" anyType_name="USER"
-                       template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":["resource-testdb"],"roles":[],"dynRoles":[],"relationships":[],"memberships":[],"dynGroups":[],"plainAttrs":[{"schema":"firstname","readonly":false,"values":[""]},{"schema":"userId","readonly":false,"values":["&apos;test&apos;"]},{"schema":"fullname","readonly":false,"values":["&apos;test&apos;"]},{"schema":"surname","readonly":false,"values":["&apos;test&apos;"]}]}'/>
-  <AnyTemplateSyncTask id="4" syncTask_id="24" anyType_name="GROUP"
-                       template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":0,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[]}'/>
-  <Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="25" name="CSV (unlink matching; ignore unmatching)" resource_name="resource-csv"
-        destinationRealm_id="1" performCreate="1" performUpdate="1" performDelete="1" syncStatus="1" syncMode="INCREMENTAL"
+  <AnyTemplatePullTask id="8bc41ba1-cc1d-4ee0-bb43-61cd148b414f" pullTask_id="986867e2-993b-430e-8feb-aa9abb4c1dcd" anyType_id="USER"
+                       template='{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":["resource-testdb"],"roles":[],"dynRoles":[],"relationships":[],"memberships":[],"dynGroups":[],"plainAttrs":[{"schema":"firstname","values":[""]},{"schema":"userId","values":["&apos;test&apos;"]},{"schema":"fullname","values":["&apos;test&apos;"]},{"schema":"surname","values":["&apos;test&apos;"]}]}'/>
+  <AnyTemplatePullTask id="9af0e343-8a37-42d2-9bc7-6e2e3b103219" pullTask_id="986867e2-993b-430e-8feb-aa9abb4c1dcd" anyType_id="GROUP"
+                       template='{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[]}'/>
+  <Task DTYPE="PullTask" id="feae4e57-15ca-40d9-b973-8b9015efca49" name="CSV (unlink matching; ignore unmatching)" resource_id="resource-csv"
+        destinationRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" performCreate="1" performUpdate="1" performDelete="1" syncStatus="1" pullMode="FULL_RECONCILIATION"
         unmatchingRule="IGNORE" matchingRule="UNLINK" active="1"/>
-  <Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="26" name="CSV (ignore matching; assign unmatching)" resource_name="resource-csv"
-        destinationRealm_id="1" performCreate="1" performUpdate="1" performDelete="1" syncStatus="1" syncMode="INCREMENTAL"
+  <Task DTYPE="PullTask" id="55d5e74b-497e-4bc0-9156-73abef4b9adc" name="CSV (ignore matching; assign unmatching)" resource_id="resource-csv"
+        destinationRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" performCreate="1" performUpdate="1" performDelete="1" syncStatus="1" pullMode="FULL_RECONCILIATION"
         unmatchingRule="ASSIGN" matchingRule="IGNORE" active="1"/>
-  <Task DTYPE="PropagationTask" type="PROPAGATION" id="27" operation="CREATE"
-        objectClassName="__ACCOUNT__" resource_name="resource-testdb" anyTypeKind="USER" anyKey="1"
+  <Task DTYPE="PropagationTask" id="0f618183-17ce-48bc-80bc-cc535f38983a" operation="CREATE"
+        objectClassName="__ACCOUNT__" resource_id="resource-testdb" anyTypeKind="USER" entityKey="1417acbe-cbf6-4277-9372-e75e04f97000"
         attributes='[{"name":"__PASSWORD__","value":[{"readOnly":false,"disposed":false,"encryptedBytes":"m9nh2US0Sa6m+cXccCq0Xw==","base64SHA1Hash":"GFJ69qfjxEOdrmt+9q+0Cw2uz60="}]},{"name":"__NAME__","value":["userId"],"nameValue":"userId"},{"name":"fullname","value":["fullname"]},{"name":"type","value":["type"]}]'/>
-  <Task DTYPE="SyncTask" type="SYNCHRONIZATION" id="28" name="Scripted SQL" resource_name="resource-db-scripted"
-        destinationRealm_id="1" performCreate="1" performUpdate="1" performDelete="1" syncStatus="0" syncMode="INCREMENTAL"
+  <Task DTYPE="PullTask" id="30cfd653-257b-495f-8665-281281dbcb3d" name="Scripted SQL" resource_id="resource-db-scripted"
+        destinationRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" performCreate="1" performUpdate="1" performDelete="0" syncStatus="0" pullMode="INCREMENTAL"
         unmatchingRule="PROVISION" matchingRule="UPDATE" active="1"/>
 
-  <Notification id="1" active="1" recipientAttrName="email" recipientAttrType="UserPlainSchema" selfAsRecipient="1" 
-                sender="admin@syncope.apache.org" subject="Password Reset request" template="requestPasswordReset" 
-                traceLevel="FAILURES"/> 
-  <AnyAbout id="1" anyType_name="USER" notification_id="1" about="token!=$null"/>
-  <Notification_events Notification_id="1" event="[CUSTOM]:[]:[]:[requestPasswordReset]:[SUCCESS]"/>
-  
-  <Notification id="2" active="1" recipientAttrName="email" recipientAttrType="UserPlainSchema" selfAsRecipient="1" 
-                sender="admin@syncope.apache.org" subject="Password Reset successful" template="confirmPasswordReset" 
-                traceLevel="FAILURES"/> 
-  <Notification_events Notification_id="2" event="[CUSTOM]:[]:[]:[confirmPasswordReset]:[SUCCESS]"/>
+  <MailTemplate id="requestPasswordReset"
+                textTemplate="Hi,
+a password reset was request for ${user.getUsername()}.
 
-  <Notification id="10" sender="test@syncope.apache.org" subject="Test subject" template="test" selfAsRecipient="0" 
+In order to complete this request, you need to visit this link:
+
+http://localhost:9080/syncope-enduser/app/#/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')}
+
+If you did not request this reset, just ignore the present e-mail.
+
+Best regards."
+                htmlTemplate="&lt;html&gt;
+&lt;body&gt;
+&lt;p&gt;Hi,
+a password reset was request for ${user.getUsername()}.&lt;/p&gt;
+
+&lt;p&gt;In order to complete this request, you need to visit this 
+&lt;a href=&quot;http://localhost:9080/syncope-enduser/app/#/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')}&quot;&gt;link&lt;/a&gt;&lt;/p&gt;.
+
+&lt;p&gt;If you did not request this reset, just ignore the present e-mail.&lt;/p&gt;
+
+&lt;p&gt;Best regards.&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;"/>
+  <MailTemplate id="confirmPasswordReset"
+                textTemplate="Hi,
+we are happy to inform you that the password request was successfully executed for your account.
+
+Best regards."
+                htmlTemplate="&lt;html&gt;
+&lt;body&gt;
+&lt;p&gt;Hi,&lt;br/&gt;
+we are happy to inform you that the password request was successfully executed for your account.&lt;/p&gt;
+
+&lt;p&gt;Best regards.&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;"/>
+  <MailTemplate id="test"/>
+  <MailTemplate id="optin"
+                textTemplate="Hi ${user.plainAttrMap[&quot;firstname&quot;].values[0]} ${user.plainAttrMap[&quot;surname&quot;].values[0]}, welcome to Syncope!
+
+Your username is ${user.username}.
+Your email address is ${user.plainAttrMap[&quot;email&quot;].values[0]}.
+Your email address inside a link: http://localhost/?email=${user.plainAttrMap[&quot;email&quot;].values[0].replace('@', '%40')}
+
+This message was sent to the following recipients:&#10;
+$$ for (recipient: recipients) {&#10;
+  * ${recipient.plainAttrMap[&quot;email&quot;].values[0]}&#10;
+$$ }&#10;
+&#10;
+because one of the following events occurred:&#10;
+$$ for (event: events) {&#10;
+  * ${event}&#10;
+$$ }&#10;
+&#10;
+$$ if (!empty(user.memberships)) {&#10;
+You have been provided with the following groups:&#10;
+$$ for(membership : user.memberships) {&#10;
+  * ${membership.groupName}&#10;
+$$ }&#10;
+$$ }&#10;"
+                htmlTemplate="&lt;html&gt;
+&lt;body&gt;
+&lt;h3&gt;Hi ${user.plainAttrMap[&quot;firstname&quot;].values[0]} ${user.plainAttrMap[&quot;surname&quot;].values[0]}, welcome to Syncope!&lt;/h3&gt;
+
+&lt;p&gt;
+   Your username is ${user.username}.&lt;br/&gt;
+   Your email address is ${user.plainAttrMap[&quot;email&quot;].values[0]}.
+   Your email address inside a &lt;a href=&quot;http://localhost/?email=${user.plainAttrMap[&quot;email&quot;].values[0].replace('@', '%40')}&quot;&gt;link&lt;/a&gt;.
+&lt;/p&gt;
+
+&lt;p&gt;
+    This message was sent to the following recipients:
+&lt;ul&gt;&#10;
+$$ for (recipient: recipients) {&#10;Na
+  &lt;li&gt;${recipient.plainAttrMap[&quot;email&quot;].values[0]}&lt;/li&gt;&#10;
+$$ }&#10;
+&lt;/ul&gt;&#10;
+
+because one of the following events occurred:
+&lt;ul&gt;&#10;
+$$ for (event: events) {&#10;
+  &lt;li&gt;${event}&lt;/li&gt;&#10;
+$$ }&#10;
+&lt;/ul&gt;&#10;
+&lt;/p&gt;
+&#10;
+$$ if (!empty(user.memberships)) {&#10;
+You have been provided with the following groups:&#10;
+&lt;ul&gt;&#10;
+$$ for(membership : user.memberships) {&#10;
+  &lt;li&gt;${membership.groupName}&lt;/li&gt;&#10;
+$$ }&#10;
+&lt;/ul&gt;&#10;
+$$ }&#10;
+&lt;/body&gt;
+&lt;/html&gt;"/>
+
+  <Notification id="e00945b5-1184-4d43-8e45-4318a8dcdfd4" active="1" recipientAttrName="email" selfAsRecipient="1" 
+                sender="admin@syncope.apache.org" subject="Password Reset request" template_id="requestPasswordReset" 
+                traceLevel="FAILURES"/> 
+  <AnyAbout id="a328f2e6-25e9-4cc1-badf-7425d7be4b39" anyType_id="USER" notification_id="e00945b5-1184-4d43-8e45-4318a8dcdfd4" filter="token!=$null"/>
+  <Notification_events notification_id="e00945b5-1184-4d43-8e45-4318a8dcdfd4" event="[CUSTOM]:[]:[]:[requestPasswordReset]:[SUCCESS]"/>
+  <Task DTYPE="NotificationTask" id="e1e520f0-2cbd-4e11-9a89-ea58a0f957e7" notification_id="e00945b5-1184-4d43-8e45-4318a8dcdfd4"
+        sender="admin@prova.org" subject="Notification for SYNCOPE-81" 
+        textBody="NOTIFICATION-81" htmlBody="NOTIFICATION-81" traceLevel="ALL"/>
+  <NotificationTask_recipients notificationTask_id="e1e520f0-2cbd-4e11-9a89-ea58a0f957e7" address="recipient@prova.org"/>  
+  
+  <Notification id="bef0c250-e8a7-4848-bb63-2564fc409ce2" active="1" recipientAttrName="email" selfAsRecipient="1" 
+                sender="admin@syncope.apache.org" subject="Password Reset successful" template_id="confirmPasswordReset" 
+                traceLevel="FAILURES"/> 
+  <Notification_events notification_id="bef0c250-e8a7-4848-bb63-2564fc409ce2" event="[CUSTOM]:[]:[]:[confirmPasswordReset]:[SUCCESS]"/>
+
+  <Notification id="9e2b911c-25de-4c77-bcea-b86ed9451050" sender="test@syncope.apache.org" subject="Test subject" template_id="test" selfAsRecipient="0" 
                 traceLevel="FAILURES"
                 recipientsFIQL="$groups==7"
-                recipientAttrType="UserPlainSchema" recipientAttrName="email" active="1"/>
-  <AnyAbout id="10" anyType_name="USER" notification_id="10" about="fullname==*o*;fullname==*i*"/>
-  <Notification_events Notification_id="10" event="[CUSTOM]:[]:[]:[unexisting1]:[FAILURE]"/>
-  <Notification_events Notification_id="10" event="[CUSTOM]:[]:[]:[unexisting2]:[SUCCESS]"/>
-    
-  <NotificationTask_recipients notificationtask_id="8" address="recipient@prova.org"/>  
+                recipientAttrName="email" active="1"/>
+  <AnyAbout id="2e2ee845-2abf-43c6-b543-49243a84e2f1" anyType_id="USER" notification_id="9e2b911c-25de-4c77-bcea-b86ed9451050" filter="fullname==*o*;fullname==*i*"/>
+  <Notification_events notification_id="9e2b911c-25de-4c77-bcea-b86ed9451050" event="[CUSTOM]:[]:[]:[unexisting1]:[FAILURE]"/>
+  <Notification_events notification_id="9e2b911c-25de-4c77-bcea-b86ed9451050" event="[CUSTOM]:[]:[]:[unexisting2]:[SUCCESS]"/>
+
+  <ReportTemplate id="empty"/>  
+  <ReportTemplate id="sample"
+                  htmlTemplate="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;
+&lt;xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&#10;
+                version=&quot;1.0&quot;&gt;&#10;
+&#10;
+  &lt;xsl:param name=&quot;status&quot;/&gt;&#10;
+  &lt;xsl:param name=&quot;message&quot;/&gt;&#10;
+  &lt;xsl:param name=&quot;start&quot;/&gt;&#10;
+  &lt;xsl:param name=&quot;end&quot;/&gt;&#10;
+  &#10;
+  &lt;xsl:template match=&quot;/&quot;&gt;&#10;
+    &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;&#10;
+      &lt;head&gt;&#10;
+        &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;&#10;
+        &lt;title&gt;Apache Syncope Report - &lt;xsl:value-of select=&quot;report/@name&quot;/&gt;&lt;/title&gt;&#10;
+      &lt;/head&gt;&#10;
+      &lt;body&gt;&#10;
+        &lt;table style=&quot;border: 1px solid black;&quot;&gt;&#10;
+          &lt;tr&gt;&#10;
+            &lt;td&gt;&#10;
+              &lt;h1&gt;Report Name:&lt;/h1&gt;&#10;
+            &lt;/td&gt;&#10;
+            &lt;td&gt;&#10;
+              &lt;h1&gt;&#10;
+                &lt;xsl:value-of select=&quot;report/@name&quot;/&gt;&#10;
+              &lt;/h1&gt;&#10;
+            &lt;/td&gt;&#10;
+          &lt;/tr&gt;&#10;
+          &lt;tr&gt;&#10;
+            &lt;td&gt;&#10;
+              &lt;h2&gt;Start Date:&lt;/h2&gt;&#10;
+            &lt;/td&gt;&#10;
+            &lt;td&gt;&#10;
+              &lt;h2&gt;&#10;
+                &lt;xsl:value-of select=&quot;$start&quot;/&gt;&#10;
+              &lt;/h2&gt;&#10;
+            &lt;/td&gt;&#10;
+          &lt;/tr&gt;&#10;
+          &lt;tr&gt;&#10;
+            &lt;td&gt;&#10;
+              &lt;h2&gt;End Date:&lt;/h2&gt;&#10;
+            &lt;/td&gt;&#10;
+            &lt;td&gt;&#10;
+              &lt;h2&gt;&#10;
+                &lt;xsl:value-of select=&quot;$end&quot;/&gt;&#10;
+              &lt;/h2&gt;&#10;
+            &lt;/td&gt;&#10;
+          &lt;/tr&gt;&#10;
+        &lt;/table&gt;&#10;
+&#10;
+        &lt;xsl:apply-templates/&gt;&#10;
+      &lt;/body&gt;&#10;
+    &lt;/html&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+&#10;
+  &lt;xsl:template match=&quot;reportlet[@class='org.apache.syncope.core.logic.report.StaticReportlet']&quot;&gt;&#10;
+    &lt;h2&gt;Reportlet: &#10;
+      &lt;xsl:value-of select=&quot;@name&quot;/&gt;&#10;
+    &lt;/h2&gt;&#10;
+        &#10;
+    &lt;xsl:if test=&quot;string-length(string/text()) &amp;gt; 0&quot;&gt;&#10;
+      &lt;p&gt;String value:                 &#10;
+        &lt;xsl:value-of select=&quot;string/text()&quot;/&gt;&#10;
+      &lt;/p&gt;&#10;
+    &lt;/xsl:if&gt;&#10;
+&#10;
+    &lt;xsl:if test=&quot;string-length(long/text()) &amp;gt; 0&quot;&gt;&#10;
+      &lt;p&gt;Long value: &#10;
+        &lt;xsl:value-of select=&quot;long/text()&quot;/&gt;&#10;
+      &lt;/p&gt;&#10;
+    &lt;/xsl:if&gt;&#10;
+&#10;
+    &lt;xsl:if test=&quot;string-length(double/text()) &amp;gt; 0&quot;&gt;&#10;
+      &lt;p&gt;Double value: &#10;
+        &lt;xsl:value-of select=&quot;double/text()&quot;/&gt;&#10;
+      &lt;/p&gt;&#10;
+    &lt;/xsl:if&gt;&#10;
+&#10;
+    &lt;xsl:if test=&quot;string-length(date/text()) &amp;gt; 0&quot;&gt;&#10;
+      &lt;p&gt;Date value: &#10;
+        &lt;xsl:value-of select=&quot;date/text()&quot;/&gt;&#10;
+      &lt;/p&gt;&#10;
+    &lt;/xsl:if&gt;&#10;
+&#10;
+    &lt;xsl:if test=&quot;string-length(enum/text()) &amp;gt; 0&quot;&gt;&#10;
+      &lt;p&gt;Enum value: &#10;
+        &lt;xsl:value-of select=&quot;enum/text()&quot;/&gt;&#10;
+      &lt;/p&gt;&#10;
+    &lt;/xsl:if&gt;&#10;
+&#10;
+    &lt;xsl:if test=&quot;string-length(list) &amp;gt; 0&quot;&gt;&#10;
+      &lt;p&gt;List values:&lt;/p&gt;&#10;
+            &#10;
+      &lt;ul&gt;&#10;
+        &lt;xsl:for-each select=&quot;list/string&quot;&gt;&#10;
+          &lt;xsl:if test=&quot;string-length(string/text()) &amp;gt; 0&quot;&gt;&#10;
+            &lt;li&gt;&#10;
+              &lt;xsl:value-of select=&quot;text()&quot;/&gt;&#10;
+            &lt;/li&gt;&#10;
+          &lt;/xsl:if&gt;&#10;
+        &lt;/xsl:for-each&gt;&#10;
+      &lt;/ul&gt;&#10;
+    &lt;/xsl:if&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+  &#10;
+  &lt;xsl:template match=&quot;reportlet[@class='org.apache.syncope.core.logic.report.UserReportlet']&quot;&gt;&#10;
+    &#10;
+    &lt;h3&gt;Reportlet: &lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/h3&gt;&#10;
+    &#10;
+    &lt;xsl:for-each select=&quot;user&quot;&gt;&#10;
+      &lt;h4&gt;User &lt;xsl:value-of select=&quot;@username&quot;/&gt;&lt;/h4&gt;&#10;
+      &#10;
+      &lt;table style=&quot;border: 1px solid black;&quot;&gt;&#10;
+        &lt;tr&gt;&#10;
+          &lt;td&gt;Status:&lt;/td&gt;&#10;
+          &lt;td&gt;&#10;
+            &lt;xsl:value-of select=&quot;@status&quot;/&gt;&#10;
+          &lt;/td&gt;&#10;
+        &lt;/tr&gt;&#10;
+        &lt;xsl:if test=&quot;string-length(@creationDate) &amp;gt; 0&quot;&gt;&#10;
+          &lt;tr&gt;&#10;
+            &lt;td&gt;Creation Date:&lt;/td&gt;&#10;
+            &lt;td&gt;&#10;
+              &lt;xsl:value-of select=&quot;@creationDate&quot;/&gt;&#10;
+            &lt;/td&gt;&#10;
+          &lt;/tr&gt;&#10;
+        &lt;/xsl:if&gt;&#10;
+        &lt;xsl:if test=&quot;string-length(@lastLoginDate) &amp;gt; 0&quot;&gt;&#10;
+          &lt;tr&gt;&#10;
+            &lt;td&gt;Last Login Date:&lt;/td&gt;&#10;
+            &lt;td&gt;&#10;
+              &lt;xsl:value-of select=&quot;@lastLoginDate&quot;/&gt;&#10;
+            &lt;/td&gt;&#10;
+          &lt;/tr&gt;&#10;
+        &lt;/xsl:if&gt;&#10;
+        &lt;xsl:if test=&quot;string-length(@changePwdDate) &amp;gt; 0&quot;&gt;&#10;
+          &lt;tr&gt;&#10;
+            &lt;td&gt;Change Password Date:&lt;/td&gt;&#10;
+            &lt;td&gt;&#10;
+              &lt;xsl:value-of select=&quot;@changePwdDate&quot;/&gt;&#10;
+            &lt;/td&gt;&#10;
+          &lt;/tr&gt;&#10;
+        &lt;/xsl:if&gt;&#10;
+        &lt;xsl:if test=&quot;string-length(@passwordHistorySize) &amp;gt; 0&quot;&gt;&#10;
+          &lt;tr&gt;&#10;
+            &lt;td&gt;Password History Size:&lt;/td&gt;&#10;
+            &lt;td&gt;&#10;
+              &lt;xsl:value-of select=&quot;@passwordHistorySize&quot;/&gt;&#10;
+            &lt;/td&gt;&#10;
+          &lt;/tr&gt;&#10;
+        &lt;/xsl:if&gt;&#10;
+        &lt;xsl:if test=&quot;string-length(@failedLoginCount) &amp;gt; 0&quot;&gt;&#10;
+          &lt;tr&gt;&#10;
+            &lt;td&gt;Number of Failed Login Attempts:&lt;/td&gt;&#10;
+            &lt;td&gt;&#10;
+              &lt;xsl:value-of select=&quot;@failedLoginCount&quot;/&gt;&#10;
+            &lt;/td&gt;&#10;
+          &lt;/tr&gt;&#10;
+        &lt;/xsl:if&gt;&#10;
+      &lt;/table&gt;&#10;
+&#10;
+      &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+        &lt;xsl:with-param name=&quot;label&quot;&gt;Attributes&lt;/xsl:with-param&gt;&#10;
+        &lt;xsl:with-param name=&quot;node&quot; select=&quot;attributes/attribute&quot;/&gt;&#10;
+      &lt;/xsl:call-template&gt;&#10;
+&#10;
+      &lt;!--&lt;xsl:if test=&quot;string-length(derivedAttributes/derivedAttribute) &amp;gt; 0&quot;&gt;--&gt;&#10;
+      &lt;xsl:choose&gt;&#10;
+        &lt;xsl:when test=&quot;string-length(derivedAttributes/derivedAttribute) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+            &lt;xsl:with-param name=&quot;label&quot;&gt;Derived Attributes&lt;/xsl:with-param&gt;&#10;
+            &lt;xsl:with-param name=&quot;node&quot; select=&quot;derivedAttributes/derivedAttribute&quot;/&gt;&#10;
+          &lt;/xsl:call-template&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:otherwise&gt;&#10;
+          &lt;h5&gt;THIS USER HASN'T DERIVED ATTRIBUTES&lt;/h5&gt;&#10;
+        &lt;/xsl:otherwise&gt;&#10;
+      &lt;/xsl:choose&gt;&#10;
+      &lt;!--&lt;/xsl:if&gt;--&gt;&#10;
+      &lt;xsl:choose&gt;&#10;
+        &lt;xsl:when test=&quot;string-length(virtualAttributes/virtualAttribute) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+            &lt;xsl:with-param name=&quot;label&quot;&gt;Virtual Attributes&lt;/xsl:with-param&gt;&#10;
+            &lt;xsl:with-param name=&quot;node&quot; select=&quot;virtualAttributes/virtualAttribute&quot;/&gt;&#10;
+          &lt;/xsl:call-template&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:otherwise&gt;&#10;
+          &lt;h5&gt;THIS USER HASN'T VIRTUAL ATTRIBUTES&lt;/h5&gt;&#10;
+        &lt;/xsl:otherwise&gt;&#10;
+      &lt;/xsl:choose&gt;&#10;
+      &#10;
+      &lt;xsl:choose&gt;&#10;
+        &lt;xsl:when test=&quot;string-length(memberships/membership) &amp;gt; 0&quot;&gt;&#10;
+          &lt;h4&gt;Memberships&lt;/h4&gt;&#10;
+          &lt;xsl:for-each select=&quot;memberships/membership&quot;&gt;&#10;
+            &lt;h5&gt;Group: &lt;xsl:value-of select=&quot;@groupName&quot;/&gt;(&lt;xsl:value-of select=&quot;@groupId&quot;/&gt;)&lt;/h5&gt;&#10;
+            &lt;blockquote&gt;&#10;
+              &lt;xsl:choose&gt;&#10;
+                &lt;xsl:when test=&quot;string-length(attributes/attribute) &amp;gt; 0&quot;&gt;&#10;
+                  &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+                    &lt;xsl:with-param name=&quot;label&quot;&gt;Attributes&lt;/xsl:with-param&gt;&#10;
+                    &lt;xsl:with-param name=&quot;node&quot; select=&quot;attributes/attribute&quot;/&gt;&#10;
+                  &lt;/xsl:call-template&gt;&#10;
+                &lt;/xsl:when&gt;&#10;
+                &lt;xsl:otherwise&gt;&#10;
+                  &lt;h5&gt;THIS GROUP HASN'T ATTRIBUTES&lt;/h5&gt;&#10;
+                &lt;/xsl:otherwise&gt;&#10;
+              &lt;/xsl:choose&gt;&#10;
+              &lt;xsl:choose&gt;&#10;
+                &lt;xsl:when test=&quot;string-length(derivedAttributes/derivedAttribute) &amp;gt; 0&quot;&gt;&#10;
+                  &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+                    &lt;xsl:with-param name=&quot;label&quot;&gt;Derived Attributes&lt;/xsl:with-param&gt;&#10;
+                    &lt;xsl:with-param name=&quot;node&quot; select=&quot;derivedAttributes/derivedAttribute&quot;/&gt;&#10;
+                  &lt;/xsl:call-template&gt;&#10;
+                &lt;/xsl:when&gt;&#10;
+                &lt;xsl:otherwise&gt;&#10;
+                  &lt;h5&gt;THIS GROUP HASN'T DERIVED ATTRIBUTES&lt;/h5&gt;&#10;
+                &lt;/xsl:otherwise&gt;&#10;
+              &lt;/xsl:choose&gt;&#10;
+              &lt;xsl:choose&gt;&#10;
+                &lt;xsl:when test=&quot;string-length(virtualAttributes/virtualAttribute) &amp;gt; 0&quot;&gt;&#10;
+                  &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+                    &lt;xsl:with-param name=&quot;label&quot;&gt;Virtual Attributes&lt;/xsl:with-param&gt;&#10;
+                    &lt;xsl:with-param name=&quot;node&quot; select=&quot;virtualAttributes/virtualAttribute&quot;/&gt;&#10;
+                  &lt;/xsl:call-template&gt;&#10;
+                &lt;/xsl:when&gt;&#10;
+                &lt;xsl:otherwise&gt;&#10;
+                  &lt;h5&gt;THIS GROUP HASN'T VIRTUAL ATTRIBUTES&lt;/h5&gt;&#10;
+                &lt;/xsl:otherwise&gt;&#10;
+              &lt;/xsl:choose&gt;&#10;
+              &lt;xsl:call-template name=&quot;groupResources&quot;&gt;&#10;
+                &lt;xsl:with-param name=&quot;node&quot; select=&quot;resources/resource&quot;/&gt;&#10;
+              &lt;/xsl:call-template&gt;&#10;
+            &lt;/blockquote&gt;&#10;
+          &lt;/xsl:for-each&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:otherwise&gt;&#10;
+          &lt;h5&gt;THIS USER ISN'T ASSIGNED TO A GROUP&lt;/h5&gt;&#10;
+        &lt;/xsl:otherwise&gt;&#10;
+      &lt;/xsl:choose&gt;&#10;
+      &lt;xsl:if test=&quot;string-length(resources) &amp;gt; 0&quot;&gt;&#10;
+        &lt;xsl:call-template name=&quot;resources&quot;&gt;&#10;
+          &lt;xsl:with-param name=&quot;node&quot; select=&quot;resources/resource&quot;/&gt;&#10;
+        &lt;/xsl:call-template&gt;&#10;
+      &lt;/xsl:if&gt;&#10;
+      &lt;hr/&gt;&#10;
+    &lt;/xsl:for-each&gt;&#10;
+       &#10;
+  &lt;/xsl:template&gt;&#10;
+&#10;
+  &lt;xsl:template match=&quot;reportlet[@class='org.apache.syncope.core.logic.report.GroupReportlet']&quot;&gt;&#10;
+    &lt;h2&gt;Reportlet: &lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/h2&gt;&#10;
+    &lt;xsl:for-each select=&quot;group&quot;&gt;&#10;
+      &lt;h3&gt;Group &lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/h3&gt;&#10;
+      &#10;
+      &lt;table style=&quot;border: 1px solid black;&quot;&gt;&#10;
+        &lt;tr&gt;&#10;
+          &lt;td&gt;Id:&lt;/td&gt;&#10;
+          &lt;td&gt;&#10;
+            &lt;xsl:value-of select=&quot;@id&quot;/&gt;&#10;
+          &lt;/td&gt;&#10;
+        &lt;/tr&gt;&#10;
+        &lt;xsl:if test=&quot;@groupOwner != 'null'&quot;&gt; &lt;!--!= null test=&quot;not(USER/FIRSTNAME)&quot; --&gt;&#10;
+          &lt;tr&gt;&#10;
+            &lt;td&gt;Group Owner:&lt;/td&gt;&#10;
+            &lt;td&gt;&#10;
+              &lt;xsl:value-of select=&quot;@groupOwner&quot;/&gt;&#10;
+            &lt;/td&gt;&#10;
+          &lt;/tr&gt;&#10;
+        &lt;/xsl:if&gt;&#10;
+        &lt;xsl:if test=&quot;@userOwner != 'null'&quot;&gt;&#10;
+          &lt;tr&gt;&#10;
+            &lt;td&gt;User Owner:&lt;/td&gt;&#10;
+            &lt;td&gt;&#10;
+              &lt;xsl:value-of select=&quot;@userOwner&quot;/&gt;&#10;
+            &lt;/td&gt;&#10;
+          &lt;/tr&gt;&#10;
+        &lt;/xsl:if&gt;&#10;
+        &#10;
+      &lt;/table&gt;&#10;
+&#10;
+      &lt;xsl:choose&gt;&#10;
+        &lt;xsl:when test=&quot;string-length(attributes/attribute) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+            &lt;xsl:with-param name=&quot;label&quot;&gt;Attributes&lt;/xsl:with-param&gt;&#10;
+            &lt;xsl:with-param name=&quot;node&quot; select=&quot;attributes/attribute&quot;/&gt;&#10;
+          &lt;/xsl:call-template&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:otherwise&gt;&#10;
+          &lt;h5&gt;THIS GROUP HASN'T ANY ATTRIBUTE&lt;/h5&gt;&#10;
+        &lt;/xsl:otherwise&gt;&#10;
+      &lt;/xsl:choose&gt;&#10;
+&#10;
+      &lt;xsl:choose&gt;&#10;
+        &lt;xsl:when test=&quot;string-length(derivedAttributes/derivedAttribute) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+            &lt;xsl:with-param name=&quot;label&quot;&gt;Derived Attributes&lt;/xsl:with-param&gt;&#10;
+            &lt;xsl:with-param name=&quot;node&quot; select=&quot;derivedAttributes/derivedAttribute&quot;/&gt;&#10;
+          &lt;/xsl:call-template&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:otherwise&gt;&#10;
+          &lt;h5&gt;THIS GROUP HASN'T ANY DERIVED ATTRIBUTE&lt;/h5&gt;&#10;
+        &lt;/xsl:otherwise&gt;&#10;
+      &lt;/xsl:choose&gt;&#10;
+      &lt;!--&lt;/xsl:if&gt;--&gt;&#10;
+      &lt;xsl:choose&gt;&#10;
+        &lt;xsl:when test=&quot;string-length(virtualAttributes/virtualAttribute) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+            &lt;xsl:with-param name=&quot;label&quot;&gt;Virtual Attributes&lt;/xsl:with-param&gt;&#10;
+            &lt;xsl:with-param name=&quot;node&quot; select=&quot;virtualAttributes/virtualAttribute&quot;/&gt;&#10;
+          &lt;/xsl:call-template&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:otherwise&gt;&#10;
+          &lt;h5&gt;THIS GROUP HASN'T ANY VIRTUAL ATTRIBUTE&lt;/h5&gt;&#10;
+        &lt;/xsl:otherwise&gt;&#10;
+      &lt;/xsl:choose&gt;&#10;
+      &#10;
+      &lt;xsl:choose&gt;&#10;
+        &lt;xsl:when test=&quot;users/user&quot;&gt;&#10;
+          &lt;h4&gt;Users&lt;/h4&gt;&#10;
+          &lt;xsl:for-each select=&quot;users/user&quot;&gt;&#10;
+            &lt;h5&gt;User: &lt;xsl:value-of select=&quot;@userUsername&quot;/&gt; (Id: &lt;xsl:value-of select=&quot;@userId&quot;/&gt;)&lt;/h5&gt;&#10;
+          &lt;/xsl:for-each&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:otherwise&gt;&#10;
+          &lt;h5&gt;THIS GROUP HASN'T ANY USER ASSIGNED TO&lt;/h5&gt;&#10;
+        &lt;/xsl:otherwise&gt;&#10;
+      &lt;/xsl:choose&gt;&#10;
+      &#10;
+      &lt;xsl:call-template name=&quot;groupResources&quot;&gt;&#10;
+        &lt;xsl:with-param name=&quot;node&quot; select=&quot;resources/resource&quot;/&gt;&#10;
+      &lt;/xsl:call-template&gt;&#10;
+      &lt;hr/&gt;&#10;
+      &#10;
+    &lt;/xsl:for-each&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+  &#10;
+  &lt;xsl:template name=&quot;attributes&quot;&gt;&#10;
+    &lt;xsl:param name=&quot;label&quot;/&gt;&#10;
+    &lt;xsl:param name=&quot;node&quot;/&gt;&#10;
+&#10;
+    &lt;h4&gt;&#10;
+      &lt;xsl:value-of select=&quot;$label&quot;/&gt;&#10;
+    &lt;/h4&gt;&#10;
+    &#10;
+    &lt;table&gt;&#10;
+      &lt;thead&gt;&#10;
+        &lt;tr&gt;&#10;
+          &lt;th&gt;Schema name&lt;/th&gt;&#10;
+          &lt;th&gt;Value(s)&lt;/th&gt;&#10;
+        &lt;/tr&gt;&#10;
+      &lt;/thead&gt;&#10;
+      &lt;tbody&gt;&#10;
+        &lt;xsl:for-each select=&quot;$node&quot;&gt;&#10;
+          &lt;xsl:if test=&quot;string-length(value/text()) &amp;gt; 0&quot;&gt;&#10;
+            &lt;tr&gt;&#10;
+              &lt;td&gt;&#10;
+                &lt;xsl:value-of select=&quot;@name&quot;/&gt;&#10;
+              &lt;/td&gt;&#10;
+              &lt;td&gt;&#10;
+                &lt;ul&gt;&#10;
+                  &lt;xsl:for-each select=&quot;value&quot;&gt;&#10;
+                    &lt;li&gt;&#10;
+                      &lt;xsl:value-of select=&quot;text()&quot;/&gt;&#10;
+                    &lt;/li&gt;&#10;
+                  &lt;/xsl:for-each&gt;&#10;
+                &lt;/ul&gt;&#10;
+              &lt;/td&gt;&#10;
+            &lt;/tr&gt;&#10;
+          &lt;/xsl:if&gt;&#10;
+        &lt;/xsl:for-each&gt;&#10;
+      &lt;/tbody&gt;&#10;
+    &lt;/table&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+&#10;
+  &lt;xsl:template name=&quot;resources&quot;&gt;&#10;
+    &lt;xsl:param name=&quot;node&quot;/&gt;&#10;
+    &#10;
+    &lt;h4&gt;Resources&lt;/h4&gt;&#10;
+    &lt;ul&gt;&#10;
+      &lt;xsl:for-each select=&quot;$node&quot;&gt;&#10;
+        &lt;li&gt;&#10;
+          &lt;xsl:value-of select=&quot;@name&quot;/&gt;&#10;
+        &lt;/li&gt;&#10;
+      &lt;/xsl:for-each&gt;&#10;
+    &lt;/ul&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+  &#10;
+  &lt;xsl:template name=&quot;groupResources&quot;&gt;&#10;
+    &lt;xsl:param name=&quot;node&quot;/&gt;&#10;
+    &#10;
+    &lt;h4&gt;Group Resources&lt;/h4&gt;&#10;
+    &lt;ul&gt;&#10;
+      &lt;xsl:for-each select=&quot;$node&quot;&gt;&#10;
+        &lt;li&gt;&#10;
+          &lt;xsl:value-of select=&quot;@name&quot;/&gt;&#10;
+        &lt;/li&gt;&#10;
+      &lt;/xsl:for-each&gt;&#10;
+    &lt;/ul&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+&lt;/xsl:stylesheet&gt;&#10;"
+                  csvTemplate="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;
+&lt;xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&#10;
+                version=&quot;1.0&quot;&gt;&#10;
+ &#10;
+  &lt;xsl:param name=&quot;status&quot;/&gt;&#10;
+  &lt;xsl:param name=&quot;message&quot;/&gt;&#10;
+  &lt;xsl:param name=&quot;start&quot;/&gt;&#10;
+  &lt;xsl:param name=&quot;end&quot;/&gt;&#10;
+    &#10;
+  &lt;xsl:template match=&quot;/&quot;&gt;&#10;
+    &lt;xsl:apply-templates/&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+&#10;
+  &lt;xsl:variable name=&quot;delimiter&quot; select=&quot;';'&quot;/&gt;&#10;
+   &#10;
+  &lt;xsl:template match=&quot;reportlet[@class='org.apache.syncope.core.logic.report.StaticReportlet']&quot;&gt;&#10;
+    &lt;xsl:call-template name=&quot;header&quot;&gt;&#10;
+      &lt;xsl:with-param name=&quot;node&quot; select=&quot;configurations/staticAttributes&quot;/&gt;&#10;
+    &lt;/xsl:call-template&gt;&#10;
+    &#10;
+    &lt;xsl:call-template name=&quot;staticAttributes&quot;&gt;&#10;
+      &lt;xsl:with-param name=&quot;header&quot; select=&quot;configurations/staticAttributes&quot;/&gt;&#10;
+    &lt;/xsl:call-template&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+  &#10;
+  &lt;xsl:template name=&quot;header&quot;&gt;&#10;
+    &lt;xsl:param name=&quot;node&quot;/&gt;  &#10;
+    &lt;xsl:for-each select=&quot;$node/*&quot;&gt;&#10;
+      &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+      &lt;xsl:value-of select=&quot;text()&quot;/&gt;&#10;
+      &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt; &#10;
+      &lt;xsl:if test=&quot;position() != last()&quot;&gt;&#10;
+        &lt;xsl:value-of select=&quot;$delimiter&quot;/&gt;&#10;
+      &lt;/xsl:if&gt;&#10;
+    &lt;/xsl:for-each&gt;&#10;
+    &lt;xsl:text&gt;&amp;#10;&lt;/xsl:text&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+    &#10;
+  &lt;xsl:template name=&quot;staticAttributes&quot;&gt;&#10;
+    &lt;xsl:param name=&quot;header&quot;/&gt;&#10;
+    &#10;
+    &lt;xsl:variable name=&quot;attrs&quot; select=&quot;.&quot;/&gt;&#10;
+    &lt;xsl:for-each select=&quot;$header/*&quot;&gt;&#10;
+      &lt;xsl:variable name=&quot;nameAttr&quot; select=&quot;text()&quot;/&gt; &#10;
+      &lt;xsl:if test=&quot;string-length($attrs/*[name(.)=$nameAttr]/text()) &amp;gt; 0 &#10;
+                      and count($attrs/*[name(.)=$nameAttr]/*/node()) = 0&quot;&gt;&#10;
+        &lt;xsl:variable name=&quot;value&quot; select=&quot;$attrs/*[name(.)=$nameAttr]/text()&quot;/&gt;&#10;
+        &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+        &lt;xsl:value-of select=&quot;$value&quot;/&gt;&#10;
+        &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+      &lt;/xsl:if&gt;&#10;
+      &#10;
+      &lt;xsl:if test=&quot;string-length($attrs/*[name(.)=$nameAttr]/*/text()) &amp;gt; 0 &#10;
+                      and count($attrs/*[name(.)=$nameAttr]/*/node()) &amp;gt; 0&quot;&gt;&#10;
+        &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+        &lt;xsl:for-each select=&quot;$attrs/*[name(.)=$nameAttr]/*&quot;&gt;&#10;
+          &lt;xsl:variable name=&quot;value&quot; select=&quot;text()&quot;/&gt;&#10;
+          &lt;xsl:text&gt;&lt;/xsl:text&gt;&#10;
+          &lt;xsl:value-of select=&quot;$value&quot;/&gt;&#10;
+          &lt;xsl:if test=&quot;position() != last()&quot;&gt;&#10;
+            &lt;xsl:value-of select=&quot;$delimiter&quot;/&gt;&#10;
+          &lt;/xsl:if&gt;&#10;
+        &lt;/xsl:for-each&gt;&#10;
+        &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+      &lt;/xsl:if&gt;&#10;
+      &#10;
+      &lt;xsl:if test=&quot;position() != last()&quot;&gt;&#10;
+        &lt;xsl:value-of select=&quot;$delimiter&quot;/&gt;&#10;
+      &lt;/xsl:if&gt;&#10;
+    &#10;
+    &lt;/xsl:for-each&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+  &#10;
+  &lt;xsl:template match=&quot;reportlet[@class='org.apache.syncope.core.logic.report.UserReportlet']&quot;&gt;&#10;
+    &#10;
+    &lt;xsl:call-template name=&quot;header&quot;&gt;&#10;
+      &lt;xsl:with-param name=&quot;node&quot; select=&quot;configurations/userAttributes&quot;/&gt;&#10;
+    &lt;/xsl:call-template&gt;&#10;
+    &lt;xsl:for-each select=&quot;user&quot;&gt;&#10;
+      &lt;xsl:call-template name=&quot;userAttributes&quot;&gt;&#10;
+        &lt;xsl:with-param name=&quot;header&quot; select=&quot;../configurations/userAttributes&quot;/&gt;&#10;
+      &lt;/xsl:call-template&gt;&#10;
+      &lt;xsl:text&gt;&amp;#10;&lt;/xsl:text&gt;&#10;
+    &lt;/xsl:for-each&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+    &#10;
+  &lt;xsl:template name=&quot;userAttributes&quot;&gt;&#10;
+    &lt;xsl:param name=&quot;header&quot;/&gt;&#10;
+  &#10;
+    &lt;xsl:variable name=&quot;attrs&quot; select=&quot;.&quot;/&gt;&#10;
+    &lt;xsl:for-each select=&quot;$header/*&quot;&gt;&#10;
+      &lt;xsl:variable name=&quot;nameAttr&quot; select=&quot;text()&quot;/&gt;&#10;
+      &lt;xsl:choose&gt;      &#10;
+        &lt;xsl:when test=&quot;count($attrs/@*[name()=$nameAttr]) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:variable name=&quot;userAttr&quot; select=&quot;$attrs/@*[name()=$nameAttr]&quot;/&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+          &lt;xsl:value-of select=&quot;$userAttr/.&quot;/&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:when test=&quot;string-length($attrs/*/*[@name=$nameAttr]/value/text()) &amp;gt; 0 &#10;
+                        and count($attrs/*/*[@name=$nameAttr]/node()) = 0&quot;&gt;&#10;
+          &lt;xsl:variable name=&quot;value&quot; select=&quot;$attrs/*/*[@name=$nameAttr]/value/text()&quot;/&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+          &lt;xsl:value-of select=&quot;$value&quot;/&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:when test=&quot;string-length($attrs/*/*[@name=$nameAttr]/value/text()) &amp;gt; 0 &#10;
+                        and count($attrs/*/*[@name=$nameAttr]/node()) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+          &lt;xsl:for-each select=&quot;$attrs/*/*[@name=$nameAttr]/*&quot;&gt;&#10;
+            &lt;xsl:variable name=&quot;value&quot; select=&quot;$attrs/*/*[@name=$nameAttr]/value/text()&quot;/&gt;&#10;
+            &lt;xsl:value-of select=&quot;$value&quot;/&gt;&#10;
+            &lt;xsl:if test=&quot;position() != last()&quot;&gt;&#10;
+              &lt;xsl:value-of select=&quot;$delimiter&quot;/&gt;&#10;
+            &lt;/xsl:if&gt;&#10;
+          &lt;/xsl:for-each&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:when test=&quot;name($attrs/*[name(.)=$nameAttr]/*[name(.)='membership']) &#10;
+                        and count($attrs/*[name(.)=$nameAttr]/node()) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;       &#10;
+          &lt;xsl:variable name=&quot;value&quot; select=&quot;@groupName&quot;/&gt;&#10;
+          &lt;xsl:for-each select=&quot;$attrs/*/membership&quot;&gt;&#10;
+            &lt;xsl:variable name=&quot;value&quot; select=&quot;@groupName&quot;/&gt;&#10;
+            &lt;xsl:value-of select=&quot;$value&quot;/&gt;&#10;
+            &lt;xsl:if test=&quot;position() != last()&quot;&gt;&#10;
+              &lt;xsl:value-of select=&quot;$delimiter&quot;/&gt;&#10;
+            &lt;/xsl:if&gt;&#10;
+          &lt;/xsl:for-each&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:when test=&quot;name($attrs/*[name(.)=$nameAttr]/*[name(.)='resource']) &#10;
+                        and count($attrs/*[name(.)=$nameAttr]/node()) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+          &lt;xsl:variable name=&quot;value&quot; select=&quot;@name&quot;/&gt;&#10;
+          &lt;xsl:for-each select=&quot;$attrs/*/resource&quot;&gt;&#10;
+            &lt;xsl:variable name=&quot;value&quot; select=&quot;@name&quot;/&gt;&#10;
+            &lt;xsl:value-of select=&quot;$value&quot;/&gt;&#10;
+            &lt;xsl:if test=&quot;position() != last()&quot;&gt;&#10;
+              &lt;xsl:value-of select=&quot;$delimiter&quot;/&gt;&#10;
+            &lt;/xsl:if&gt;&#10;
+          &lt;/xsl:for-each&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:otherwise&gt;&#10;
+          &lt;xsl:text&gt;&quot;&quot;&lt;/xsl:text&gt; &#10;
+        &lt;/xsl:otherwise&gt;  &#10;
+      &lt;/xsl:choose&gt;&#10;
+      &lt;xsl:if test=&quot;position() != last()&quot;&gt;&#10;
+        &lt;xsl:value-of select=&quot;$delimiter&quot;/&gt;&#10;
+      &lt;/xsl:if&gt;  &#10;
+    &lt;/xsl:for-each&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+  &#10;
+  &lt;xsl:template match=&quot;reportlet[@class='org.apache.syncope.core.logic.report.GroupReportlet']&quot;&gt;&#10;
+    &#10;
+    &lt;xsl:call-template name=&quot;header&quot;&gt;&#10;
+      &lt;xsl:with-param name=&quot;node&quot; select=&quot;configurations/groupAttributes&quot;/&gt;&#10;
+    &lt;/xsl:call-template&gt;&#10;
+    &lt;xsl:for-each select=&quot;group&quot;&gt;&#10;
+      &lt;xsl:call-template name=&quot;groupAttributes&quot;&gt;&#10;
+        &lt;xsl:with-param name=&quot;header&quot; select=&quot;../configurations/groupAttributes&quot;/&gt;&#10;
+        &lt;xsl:with-param name=&quot;attrs&quot; select=&quot;.&quot;/&gt;&#10;
+      &lt;/xsl:call-template&gt;&#10;
+      &lt;xsl:text&gt;&amp;#10;&lt;/xsl:text&gt;&#10;
+    &lt;/xsl:for-each&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+    &#10;
+  &lt;xsl:template name=&quot;groupAttributes&quot;&gt;&#10;
+    &lt;xsl:param name=&quot;header&quot;/&gt;&#10;
+    &lt;xsl:param name=&quot;attrs&quot;/&gt;&#10;
+    &#10;
+    &lt;xsl:for-each select=&quot;$header/*&quot;&gt;&#10;
+      &lt;xsl:variable name=&quot;nameAttr&quot; select=&quot;text()&quot;/&gt;&#10;
+      &#10;
+      &lt;xsl:choose&gt; &#10;
+        &lt;xsl:when test=&quot;string-length($attrs/@*[name()=$nameAttr]) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:variable name=&quot;groupAttr&quot; select=&quot;$attrs/@*[name()=$nameAttr]&quot;/&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+          &lt;xsl:value-of select=&quot;$groupAttr/.&quot;/&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:when test=&quot;name($attrs/*[name(.)=$nameAttr]/*[name(.)='resource']) &#10;
+                        and count($attrs/*[name(.)=$nameAttr]/node()) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;       &#10;
+          &lt;xsl:for-each select=&quot;$attrs/*/resource&quot;&gt;&#10;
+            &lt;xsl:variable name=&quot;value&quot; select=&quot;@name&quot;/&gt;&#10;
+            &lt;xsl:value-of select=&quot;$value&quot;/&gt;&#10;
+            &lt;xsl:if test=&quot;position() != last()&quot;&gt;&#10;
+              &lt;xsl:value-of select=&quot;$delimiter&quot;/&gt;&#10;
+            &lt;/xsl:if&gt;&#10;
+          &lt;/xsl:for-each&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:when test=&quot;name($attrs/*[name(.)=$nameAttr]/*[name(.)='user']) &#10;
+                        and count($attrs/*[name(.)=$nameAttr]/node()) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;       &#10;
+          &lt;xsl:for-each select=&quot;$attrs/*/user&quot;&gt;&#10;
+            &lt;xsl:variable name=&quot;value&quot; select=&quot;@userUsername&quot;/&gt;&#10;
+            &lt;xsl:value-of select=&quot;$value&quot;/&gt;&#10;
+            &lt;xsl:if test=&quot;position() != last()&quot;&gt;&#10;
+              &lt;xsl:value-of select=&quot;$delimiter&quot;/&gt;&#10;
+            &lt;/xsl:if&gt;&#10;
+          &lt;/xsl:for-each&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:otherwise&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+          &lt;xsl:if test=&quot;string-length($attrs/*/*[@name=$nameAttr]/value/text()) &amp;gt; 0&quot;&gt; &#10;
+            &lt;xsl:variable name=&quot;value&quot; select=&quot;$attrs/*/*[@name=$nameAttr]/value/text()&quot;/&gt;&#10;
+            &lt;xsl:value-of select=&quot;$value&quot;/&gt;&#10;
+          &lt;/xsl:if&gt;&#10;
+          &lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;&#10;
+        &lt;/xsl:otherwise&gt;&#10;
+      &lt;/xsl:choose&gt;&#10;
+      &lt;xsl:if test=&quot;position() != last()&quot;&gt;&#10;
+        &lt;xsl:value-of select=&quot;$delimiter&quot;/&gt;&#10;
+      &lt;/xsl:if&gt;&#10;
+    &#10;
+    &lt;/xsl:for-each&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+&lt;/xsl:stylesheet&gt;&#10;"
+                  foTemplate="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;
+&lt;xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&#10;
+                xmlns:fo=&quot;http://www.w3.org/1999/XSL/Format&quot;&#10;
+                version=&quot;1.0&quot;&gt;&#10;
+&#10;
+  &lt;xsl:param name=&quot;status&quot;/&gt;&#10;
+  &lt;xsl:param name=&quot;message&quot;/&gt;&#10;
+  &lt;xsl:param name=&quot;start&quot;/&gt;&#10;
+  &lt;xsl:param name=&quot;end&quot;/&gt;&#10;
+  &#10;
+  &lt;xsl:template match=&quot;/&quot;&gt;&#10;
+    &lt;fo:root xmlns:fo=&quot;http://www.w3.org/1999/XSL/Format&quot; font-family=&quot;Helvetica&quot; font-size=&quot;10pt&quot;&gt;&#10;
+      &#10;
+      &lt;!-- defines the layout master --&gt;&#10;
+      &lt;fo:layout-master-set&gt;&#10;
+        &lt;fo:simple-page-master master-name=&quot;first&quot; page-height=&quot;29.7cm&quot; page-width=&quot;21cm&quot; &#10;
+                               margin-top=&quot;1cm&quot; margin-bottom=&quot;2cm&quot; margin-left=&quot;2.5cm&quot; margin-right=&quot;2.5cm&quot;&gt;&#10;
+          &lt;fo:region-body margin-top=&quot;1cm&quot;/&gt;&#10;
+          &lt;fo:region-before extent=&quot;1cm&quot;/&gt;&#10;
+          &lt;fo:region-after extent=&quot;1.5cm&quot;/&gt;&#10;
+        &lt;/fo:simple-page-master&gt;&#10;
+      &lt;/fo:layout-master-set&gt;&#10;
+&#10;
+      &lt;!-- starts actual layout --&gt;&#10;
+      &lt;fo:page-sequence master-reference=&quot;first&quot;&gt;&#10;
+        &#10;
+        &lt;fo:flow flow-name=&quot;xsl-region-body&quot;&gt;&#10;
+          &lt;fo:block font-size=&quot;24pt&quot; font-weight=&quot;bold&quot; text-align=&quot;center&quot; space-after=&quot;1cm&quot;&gt;&#10;
+            Apache Syncope Report - &lt;xsl:value-of select=&quot;report/@name&quot;/&gt;&#10;
+          &lt;/fo:block&gt;&#10;
+&#10;
+          &lt;fo:table table-layout=&quot;fixed&quot; border-width=&quot;0.5mm&quot; border-style=&quot;solid&quot; width=&quot;100%&quot; space-after=&quot;1cm&quot;&gt;&#10;
+            &lt;fo:table-column column-width=&quot;proportional-column-width(1)&quot;/&gt;&#10;
+            &lt;fo:table-column column-width=&quot;proportional-column-width(1)&quot;/&gt;&#10;
+            &lt;fo:table-body&gt;&#10;
+              &lt;fo:table-row&gt;&#10;
+                &lt;fo:table-cell&gt;&#10;
+                  &lt;fo:block font-size=&quot;18pt&quot; font-weight=&quot;bold&quot;&gt;Report Name:&lt;/fo:block&gt;&#10;
+                &lt;/fo:table-cell&gt;&#10;
+                &lt;fo:table-cell&gt;&#10;
+                  &lt;fo:block font-size=&quot;18pt&quot; font-weight=&quot;bold&quot;&gt;&#10;
+                    &lt;xsl:value-of select=&quot;report/@name&quot;/&gt;&#10;
+                  &lt;/fo:block&gt;&#10;
+                &lt;/fo:table-cell&gt;&#10;
+              &lt;/fo:table-row&gt;&#10;
+              &lt;fo:table-row&gt;&#10;
+                &lt;fo:table-cell&gt;&#10;
+                  &lt;fo:block font-size=&quot;18pt&quot; font-weight=&quot;bold&quot;&gt;Start Date:&lt;/fo:block&gt;&#10;
+                &lt;/fo:table-cell&gt;&#10;
+                &lt;fo:table-cell&gt;&#10;
+                  &lt;fo:block font-size=&quot;18pt&quot; font-weight=&quot;bold&quot;&gt;&#10;
+                    &lt;xsl:value-of select=&quot;$start&quot;/&gt;&#10;
+                  &lt;/fo:block&gt;&#10;
+                &lt;/fo:table-cell&gt;&#10;
+              &lt;/fo:table-row&gt;&#10;
+              &lt;fo:table-row&gt;&#10;
+                &lt;fo:table-cell&gt;&#10;
+                  &lt;fo:block font-size=&quot;18pt&quot; font-weight=&quot;bold&quot;&gt;End Date:&lt;/fo:block&gt;&#10;
+                &lt;/fo:table-cell&gt;&#10;
+                &lt;fo:table-cell&gt;&#10;
+                  &lt;fo:block font-size=&quot;18pt&quot; font-weight=&quot;bold&quot;&gt;&#10;
+                    &lt;xsl:value-of select=&quot;$end&quot;/&gt;&#10;
+                  &lt;/fo:block&gt;&#10;
+                &lt;/fo:table-cell&gt;&#10;
+              &lt;/fo:table-row&gt;&#10;
+            &lt;/fo:table-body&gt;&#10;
+          &lt;/fo:table&gt;&#10;
+&#10;
+          &lt;xsl:apply-templates/&gt;&#10;
+        &lt;/fo:flow&gt;&#10;
+      &lt;/fo:page-sequence&gt;&#10;
+    &lt;/fo:root&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+&#10;
+  &lt;xsl:template match=&quot;reportlet[@class='org.apache.syncope.core.logic.report.StaticReportlet']&quot;&gt;&#10;
+&#10;
+    &lt;fo:block font-size=&quot;14pt&quot; font-weight=&quot;bold&quot; space-after=&quot;0.5cm&quot;&gt;Reportlet: &#10;
+      &lt;xsl:value-of select=&quot;@name&quot;/&gt;&#10;
+    &lt;/fo:block&gt;&#10;
+&#10;
+    &lt;xsl:if test=&quot;string-length(string/text()) &amp;gt; 0&quot;&gt;&#10;
+      &lt;fo:block font-size=&quot;11pt&quot;&gt;String value: &#10;
+        &lt;xsl:value-of select=&quot;string/text()&quot;/&gt;&#10;
+      &lt;/fo:block&gt;&#10;
+    &lt;/xsl:if&gt;&#10;
+&#10;
+    &lt;xsl:if test=&quot;string-length(long/text()) &amp;gt; 0&quot;&gt;&#10;
+      &lt;fo:block font-size=&quot;11pt&quot;&gt;Long value: &#10;
+        &lt;xsl:value-of select=&quot;long/text()&quot;/&gt;&#10;
+      &lt;/fo:block&gt;&#10;
+    &lt;/xsl:if&gt;&#10;
+&#10;
+    &lt;xsl:if test=&quot;string-length(double/text()) &amp;gt; 0&quot;&gt;&#10;
+      &lt;fo:block font-size=&quot;11pt&quot;&gt;Double value: &#10;
+        &lt;xsl:value-of select=&quot;double/text()&quot;/&gt;&#10;
+      &lt;/fo:block&gt;&#10;
+    &lt;/xsl:if&gt;&#10;
+&#10;
+    &lt;xsl:if test=&quot;string-length(date/text()) &amp;gt; 0&quot;&gt;&#10;
+      &lt;fo:block font-size=&quot;11pt&quot;&gt;Date value: &#10;
+        &lt;xsl:value-of select=&quot;date/text()&quot;/&gt;&#10;
+      &lt;/fo:block&gt;&#10;
+    &lt;/xsl:if&gt;&#10;
+&#10;
+    &lt;xsl:if test=&quot;string-length(enum/text()) &amp;gt; 0&quot;&gt;&#10;
+      &lt;fo:block font-size=&quot;11pt&quot;&gt;Enum value: &#10;
+        &lt;xsl:value-of select=&quot;enum/text()&quot;/&gt;&#10;
+      &lt;/fo:block&gt;&#10;
+    &lt;/xsl:if&gt;&#10;
+&#10;
+    &lt;xsl:if test=&quot;string-length(list) &amp;gt; 0&quot;&gt;&#10;
+      &lt;fo:block font-size=&quot;11pt&quot;&gt;List values:&lt;/fo:block&gt;&#10;
+            &#10;
+      &lt;fo:list-block provisional-label-separation=&quot;4mm&quot; provisional-distance-between-starts=&quot;2mm&quot;&gt;&#10;
+        &lt;xsl:for-each select=&quot;list/string&quot;&gt;&#10;
+          &lt;xsl:if test=&quot;string-length(string/text()) &amp;gt; 0&quot;&gt;&#10;
+            &lt;fo:list-item&gt;&#10;
+              &lt;fo:list-item-label end-indent=&quot;label-end()&quot;&gt;&#10;
+                &lt;fo:block&gt;&#x2022;&lt;/fo:block&gt;&#10;
+              &lt;/fo:list-item-label&gt;&#10;
+              &lt;fo:list-item-body start-indent=&quot;body-start()&quot;&gt;&#10;
+                &lt;fo:block&gt;&#10;
+                  &lt;xsl:value-of select=&quot;text()&quot;/&gt;&#10;
+                &lt;/fo:block&gt;&#10;
+              &lt;/fo:list-item-body&gt;&#10;
+            &lt;/fo:list-item&gt;&#10;
+          &lt;/xsl:if&gt;&#10;
+        &lt;/xsl:for-each&gt;&#10;
+      &lt;/fo:list-block&gt;&#10;
+    &lt;/xsl:if&gt;&#10;
+        &#10;
+  &lt;/xsl:template&gt;&#10;
+  &#10;
+  &lt;xsl:template match=&quot;reportlet[@class='org.apache.syncope.core.logic.report.UserReportlet']&quot;&gt;&#10;
+   &#10;
+    &lt;fo:block font-size=&quot;16pt&quot; font-weight=&quot;bold&quot; space-after=&quot;0.5cm&quot; space-before=&quot;5mm&quot;&gt;Reportlet: &lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/fo:block&gt;&#10;
+        &#10;
+    &lt;xsl:for-each select=&quot;user&quot;&gt;&#10;
+      &lt;fo:block font-size=&quot;14pt&quot; font-weight=&quot;bold&quot; space-before=&quot;15mm&quot; space-after=&quot;5mm&quot; background-color=&quot;(#8888ff)&quot;&gt;User &lt;xsl:value-of select=&quot;@username&quot;/&gt;&lt;/fo:block&gt;&#10;
+      &lt;fo:table table-layout=&quot;fixed&quot; space-after=&quot;7mm&quot;&gt;&#10;
+        &lt;fo:table-column/&gt;&#10;
+        &lt;fo:table-column/&gt;&#10;
+        &lt;fo:table-body&gt;&#10;
+          &lt;fo:table-row background-color=&quot;(#ccccff)&quot;&gt;&#10;
+            &lt;fo:table-cell&gt;&#10;
+              &lt;fo:block&gt;Status:&lt;/fo:block&gt;&#10;
+            &lt;/fo:table-cell&gt;&#10;
+            &lt;fo:table-cell&gt;&#10;
+              &lt;fo:block font-style=&quot;italic&quot;&gt;&#10;
+                &lt;xsl:value-of select=&quot;@status&quot;/&gt;&#10;
+              &lt;/fo:block&gt;&#10;
+            &lt;/fo:table-cell&gt;&#10;
+          &lt;/fo:table-row&gt;&#10;
+          &lt;xsl:if test=&quot;string-length(@creationDate) &amp;gt; 0&quot;&gt;&#10;
+            &lt;fo:table-row background-color=&quot;(#ccccff)&quot;&gt;&#10;
+              &lt;fo:table-cell&gt;&#10;
+                &lt;fo:block&gt;Creation Date:&lt;/fo:block&gt;&#10;
+              &lt;/fo:table-cell&gt;&#10;
+              &lt;fo:table-cell&gt;&#10;
+                &lt;fo:block font-style=&quot;italic&quot;&gt;&#10;
+                  &lt;xsl:value-of select=&quot;@creationDate&quot;/&gt;&#10;
+                &lt;/fo:block&gt;&#10;
+              &lt;/fo:table-cell&gt;&#10;
+            &lt;/fo:table-row&gt;&#10;
+          &lt;/xsl:if&gt;&#10;
+          &lt;xsl:if test=&quot;string-length(@lastLoginDate) &amp;gt; 0&quot;&gt;&#10;
+            &lt;fo:table-row background-color=&quot;(#ccccff)&quot;&gt;&#10;
+              &lt;fo:table-cell&gt;&#10;
+                &lt;fo:block&gt;Last Login Date:&lt;/fo:block&gt;&#10;
+              &lt;/fo:table-cell&gt;&#10;
+              &lt;fo:table-cell&gt;&#10;
+                &lt;fo:block font-style=&quot;italic&quot;&gt;&#10;
+                  &lt;xsl:value-of select=&quot;@lastLoginDate&quot;/&gt;&#10;
+                &lt;/fo:block&gt;&#10;
+              &lt;/fo:table-cell&gt;&#10;
+            &lt;/fo:table-row&gt;&#10;
+          &lt;/xsl:if&gt;&#10;
+          &lt;xsl:if test=&quot;string-length(@changePwdDate) &amp;gt; 0&quot;&gt;&#10;
+            &lt;fo:table-row background-color=&quot;(#ccccff)&quot;&gt;&#10;
+              &lt;fo:table-cell&gt;&#10;
+                &lt;fo:block&gt;Change Password Date:&lt;/fo:block&gt;&#10;
+              &lt;/fo:table-cell&gt;&#10;
+              &lt;fo:table-cell&gt;&#10;
+                &lt;fo:block font-style=&quot;italic&quot;&gt;&#10;
+                  &lt;xsl:value-of select=&quot;@changePwdDate&quot;/&gt;&#10;
+                &lt;/fo:block&gt;&#10;
+              &lt;/fo:table-cell&gt;&#10;
+            &lt;/fo:table-row&gt;&#10;
+          &lt;/xsl:if&gt;&#10;
+          &lt;xsl:if test=&quot;string-length(@passwordHistorySize) &amp;gt; 0&quot;&gt;&#10;
+            &lt;fo:table-row background-color=&quot;(#ccccff)&quot;&gt;&#10;
+              &lt;fo:table-cell&gt;&#10;
+                &lt;fo:block&gt;Password History Size:&lt;/fo:block&gt;&#10;
+              &lt;/fo:table-cell&gt;&#10;
+              &lt;fo:table-cell&gt;&#10;
+                &lt;fo:block font-style=&quot;italic&quot;&gt;&#10;
+                  &lt;xsl:value-of select=&quot;@passwordHistorySize&quot;/&gt;&#10;
+                &lt;/fo:block&gt;&#10;
+              &lt;/fo:table-cell&gt;&#10;
+            &lt;/fo:table-row&gt;&#10;
+          &lt;/xsl:if&gt;&#10;
+          &lt;xsl:if test=&quot;string-length(@failedLoginCount) &amp;gt; 0&quot;&gt;&#10;
+            &lt;fo:table-row background-color=&quot;(#ccccff)&quot;&gt;&#10;
+              &lt;fo:table-cell&gt;&#10;
+                &lt;fo:block&gt;Number of Failed Login Attempts:&lt;/fo:block&gt;&#10;
+              &lt;/fo:table-cell&gt;&#10;
+              &lt;fo:table-cell&gt;&#10;
+                &lt;fo:block font-style=&quot;italic&quot;&gt;&#10;
+                  &lt;xsl:value-of select=&quot;@failedLoginCount&quot;/&gt;&#10;
+                &lt;/fo:block&gt;&#10;
+              &lt;/fo:table-cell&gt;&#10;
+            &lt;/fo:table-row&gt;&#10;
+          &lt;/xsl:if&gt;&#10;
+        &lt;/fo:table-body&gt;&#10;
+      &lt;/fo:table&gt;&#10;
+      &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+        &lt;xsl:with-param name=&quot;label&quot;&gt;Attributes&lt;/xsl:with-param&gt;&#10;
+        &lt;xsl:with-param name=&quot;node&quot; select=&quot;attributes/attribute&quot;/&gt;&#10;
+      &lt;/xsl:call-template&gt;&#10;
+      &lt;xsl:choose&gt;&#10;
+        &lt;xsl:when test=&quot;string-length(derivedAttributes/derivedAttribute) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+            &lt;xsl:with-param name=&quot;label&quot;&gt;Derived Attributes&lt;/xsl:with-param&gt;&#10;
+            &lt;xsl:with-param name=&quot;node&quot; select=&quot;derivedAttributes/derivedAttribute&quot;/&gt;&#10;
+          &lt;/xsl:call-template&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:otherwise&gt;&#10;
+          &lt;fo:block color=&quot;red&quot; font-size=&quot;9pt&quot; space-after=&quot;3mm&quot;&gt;THIS USER HASN'T ANY DERIVED ATTRIBUTE&lt;/fo:block&gt;&#10;
+        &lt;/xsl:otherwise&gt;&#10;
+      &lt;/xsl:choose&gt;&#10;
+      &lt;xsl:choose&gt;&#10;
+        &lt;xsl:when test=&quot;string-length(virtualAttributes/virtualAttribute) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+            &lt;xsl:with-param name=&quot;label&quot;&gt;Virtual Attributes&lt;/xsl:with-param&gt;&#10;
+            &lt;xsl:with-param name=&quot;node&quot; select=&quot;virtualAttributes/virtualAttribute&quot;/&gt;&#10;
+          &lt;/xsl:call-template&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:otherwise&gt;&#10;
+          &lt;fo:block color=&quot;red&quot; font-size=&quot;9pt&quot; space-after=&quot;3mm&quot;&gt;THIS USER HASN'T ANY VIRTUAL ATTRIBUTE&lt;/fo:block&gt;&#10;
+        &lt;/xsl:otherwise&gt;&#10;
+      &lt;/xsl:choose&gt;&#10;
+      &lt;xsl:choose&gt;&#10;
+        &lt;xsl:when test=&quot;string-length(memberships/membership) &amp;gt; 0&quot;&gt;&#10;
+          &lt;fo:block font-size=&quot;11pt&quot; font-weight=&quot;bold&quot;&gt;Memberships&lt;/fo:block&gt;&#10;
+          &lt;xsl:for-each select=&quot;memberships/membership&quot;&gt;&#10;
+            &lt;fo:block font-size=&quot;10pt&quot; font-weight=&quot;bold&quot; space-before=&quot;2mm&quot;&gt;Group: &lt;xsl:value-of select=&quot;@groupName&quot;/&gt;(&lt;xsl:value-of select=&quot;@groupId&quot;/&gt;)&lt;/fo:block&gt;&#10;
+            &lt;fo:block start-indent=&quot;1cm&quot; space-before=&quot;3mm&quot; space-after=&quot;0.5cm&quot;&gt;&#10;
+              &lt;xsl:choose&gt;&#10;
+                &lt;xsl:when test=&quot;string-length(attributes/attribute) &amp;gt; 0&quot;&gt;&#10;
+                  &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+                    &lt;xsl:with-param name=&quot;label&quot;&gt;Attributes&lt;/xsl:with-param&gt;&#10;
+                    &lt;xsl:with-param name=&quot;node&quot; select=&quot;attributes/attribute&quot;/&gt;&#10;
+                  &lt;/xsl:call-template&gt;&#10;
+                &lt;/xsl:when&gt;&#10;
+                &lt;xsl:otherwise&gt;&#10;
+                  &lt;fo:block color=&quot;red&quot; font-size=&quot;8pt&quot; space-after=&quot;2mm&quot;&gt;THIS GROUP HASN'T ANY ATTRIBUTE&lt;/fo:block&gt;&#10;
+                &lt;/xsl:otherwise&gt;&#10;
+              &lt;/xsl:choose&gt;&#10;
+              &lt;xsl:choose&gt;&#10;
+                &lt;xsl:when test=&quot;string-length(derivedAttributes/derivedAttribute) &amp;gt; 0&quot;&gt;&#10;
+                  &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+                    &lt;xsl:with-param name=&quot;label&quot;&gt;Derived Attributes&lt;/xsl:with-param&gt;&#10;
+                    &lt;xsl:with-param name=&quot;node&quot; select=&quot;derivedAttributes/derivedAttribute&quot;/&gt;&#10;
+                  &lt;/xsl:call-template&gt;&#10;
+                &lt;/xsl:when&gt;&#10;
+                &lt;xsl:otherwise&gt;&#10;
+                  &lt;fo:block color=&quot;red&quot; font-size=&quot;8pt&quot; space-after=&quot;2mm&quot;&gt;THIS GROUP HASN'T ANY DERIVED ATTRIBUTE&lt;/fo:block&gt;&#10;
+                &lt;/xsl:otherwise&gt;&#10;
+              &lt;/xsl:choose&gt;&#10;
+              &lt;xsl:choose&gt;&#10;
+                &lt;xsl:when test=&quot;string-length(virtualAttributes/virtualAttribute) &amp;gt; 0&quot;&gt;&#10;
+                  &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+                    &lt;xsl:with-param name=&quot;label&quot;&gt;Virtual Attributes&lt;/xsl:with-param&gt;&#10;
+                    &lt;xsl:with-param name=&quot;node&quot; select=&quot;virtualAttributes/virtualAttribute&quot;/&gt;&#10;
+                  &lt;/xsl:call-template&gt;&#10;
+                &lt;/xsl:when&gt;&#10;
+                &lt;xsl:otherwise&gt;&#10;
+                  &lt;fo:block color=&quot;red&quot; font-size=&quot;8pt&quot; space-after=&quot;2mm&quot;&gt;THIS GROUP HASN'T ANY VIRTUAL ATTRIBUTE&lt;/fo:block&gt;&#10;
+                &lt;/xsl:otherwise&gt;&#10;
+              &lt;/xsl:choose&gt;&#10;
+              &lt;!-- 'groupResources&quot; is defined in groupReportlet2fo.xsl --&gt;&#10;
+              &lt;xsl:call-template name=&quot;groupResources&quot;&gt;&#10;
+                &lt;xsl:with-param name=&quot;node&quot; select=&quot;resources/resource&quot;/&gt;&#10;
+              &lt;/xsl:call-template&gt;&#10;
+            &lt;/fo:block&gt;&#10;
+          &lt;/xsl:for-each&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:otherwise&gt;&#10;
+          &lt;fo:block color=&quot;red&quot; font-size=&quot;9pt&quot; space-after=&quot;3mm&quot;&gt;THIS USER HASN'T BEEN ASSIGNED TO ANY GROUP&lt;/fo:block&gt;&#10;
+        &lt;/xsl:otherwise&gt;&#10;
+      &lt;/xsl:choose&gt;&#10;
+      &lt;xsl:call-template name=&quot;resources&quot;&gt;&#10;
+        &lt;xsl:with-param name=&quot;node&quot; select=&quot;resources/resource&quot;/&gt;&#10;
+      &lt;/xsl:call-template&gt;&#10;
+    &lt;/xsl:for-each&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+  &#10;
+  &lt;xsl:template match=&quot;reportlet[@class='org.apache.syncope.core.logic.report.GroupReportlet']&quot;&gt;&#10;
+   &#10;
+    &lt;fo:block font-size=&quot;16pt&quot; font-weight=&quot;bold&quot; space-after=&quot;0.5cm&quot; space-before=&quot;5mm&quot;&gt;Reportlet: &lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/fo:block&gt;&#10;
+        &#10;
+    &lt;xsl:for-each select=&quot;group&quot;&gt;&#10;
+      &lt;fo:block font-size=&quot;14pt&quot; font-weight=&quot;bold&quot; space-before=&quot;15mm&quot; space-after=&quot;5mm&quot; background-color=&quot;(#8888ff)&quot;&gt;Group &lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/fo:block&gt;&#10;
+      &lt;fo:table table-layout=&quot;fixed&quot; space-after=&quot;7mm&quot;&gt;&#10;
+        &lt;fo:table-column/&gt;&#10;
+        &lt;fo:table-column/&gt;&#10;
+        &lt;fo:table-body&gt;&#10;
+          &lt;fo:table-row background-color=&quot;(#ccccff)&quot;&gt;&#10;
+            &lt;fo:table-cell&gt;&#10;
+              &lt;fo:block&gt;Id:&lt;/fo:block&gt;&#10;
+            &lt;/fo:table-cell&gt;&#10;
+            &lt;fo:table-cell&gt;&#10;
+              &lt;fo:block font-style=&quot;italic&quot;&gt;&#10;
+                &lt;xsl:value-of select=&quot;@id&quot;/&gt;&#10;
+              &lt;/fo:block&gt;&#10;
+            &lt;/fo:table-cell&gt;&#10;
+          &lt;/fo:table-row&gt;&#10;
+          &lt;xsl:if test=&quot;@groupOwner != 'null'&quot;&gt;&#10;
+            &lt;fo:table-row background-color=&quot;(#ccccff)&quot;&gt;&#10;
+              &lt;fo:table-cell&gt;&#10;
+                &lt;fo:block&gt;Group Owner:&lt;/fo:block&gt;&#10;
+              &lt;/fo:table-cell&gt;&#10;
+              &lt;fo:table-cell&gt;&#10;
+                &lt;fo:block font-style=&quot;italic&quot;&gt;&#10;
+                  &lt;xsl:value-of select=&quot;@groupOwner&quot;/&gt;&#10;
+                &lt;/fo:block&gt;&#10;
+              &lt;/fo:table-cell&gt;&#10;
+            &lt;/fo:table-row&gt;&#10;
+          &lt;/xsl:if&gt;&#10;
+          &lt;xsl:if test=&quot;@userOwner != 'null'&quot;&gt;&#10;
+            &lt;fo:table-row background-color=&quot;(#ccccff)&quot;&gt;&#10;
+              &lt;fo:table-cell&gt;&#10;
+                &lt;fo:block&gt;Last Login Date:&lt;/fo:block&gt;&#10;
+              &lt;/fo:table-cell&gt;&#10;
+              &lt;fo:table-cell&gt;&#10;
+                &lt;fo:block font-style=&quot;italic&quot;&gt;&#10;
+                  &lt;xsl:value-of select=&quot;@userOwner&quot;/&gt;&#10;
+                &lt;/fo:block&gt;&#10;
+              &lt;/fo:table-cell&gt;&#10;
+            &lt;/fo:table-row&gt;&#10;
+          &lt;/xsl:if&gt;&#10;
+        &lt;/fo:table-body&gt;&#10;
+      &lt;/fo:table&gt;&#10;
+      &lt;xsl:choose&gt;&#10;
+        &lt;xsl:when test=&quot;string-length(attributes/attribute) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+            &lt;xsl:with-param name=&quot;label&quot;&gt;Attributes&lt;/xsl:with-param&gt;&#10;
+            &lt;xsl:with-param name=&quot;node&quot; select=&quot;attributes/attribute&quot;/&gt;&#10;
+          &lt;/xsl:call-template&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:otherwise&gt;&#10;
+          &lt;fo:block color=&quot;red&quot; font-size=&quot;9pt&quot; space-after=&quot;3mm&quot;&gt;THIS GROUP HASN'T ANY ATTRIBUTE&lt;/fo:block&gt;&#10;
+        &lt;/xsl:otherwise&gt;&#10;
+      &lt;/xsl:choose&gt;&#10;
+      &#10;
+      &lt;xsl:choose&gt;&#10;
+        &lt;xsl:when test=&quot;string-length(derivedAttributes/derivedAttribute) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+            &lt;xsl:with-param name=&quot;label&quot;&gt;Derived Attributes&lt;/xsl:with-param&gt;&#10;
+            &lt;xsl:with-param name=&quot;node&quot; select=&quot;derivedAttributes/derivedAttribute&quot;/&gt;&#10;
+          &lt;/xsl:call-template&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:otherwise&gt;&#10;
+          &lt;fo:block color=&quot;red&quot; font-size=&quot;9pt&quot; space-after=&quot;3mm&quot;&gt;THIS GROUP HASN'T ANY DERIVED ATTRIBUTE&lt;/fo:block&gt;&#10;
+        &lt;/xsl:otherwise&gt;&#10;
+      &lt;/xsl:choose&gt;&#10;
+      &lt;xsl:choose&gt;&#10;
+        &lt;xsl:when test=&quot;string-length(virtualAttributes/virtualAttribute) &amp;gt; 0&quot;&gt;&#10;
+          &lt;xsl:call-template name=&quot;attributes&quot;&gt;&#10;
+            &lt;xsl:with-param name=&quot;label&quot;&gt;Virtual Attributes&lt;/xsl:with-param&gt;&#10;
+            &lt;xsl:with-param name=&quot;node&quot; select=&quot;virtualAttributes/virtualAttribute&quot;/&gt;&#10;
+          &lt;/xsl:call-template&gt;&#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:otherwise&gt;&#10;
+          &lt;fo:block color=&quot;red&quot; font-size=&quot;9pt&quot; space-after=&quot;3mm&quot;&gt;THIS GROUP HASN'T ANY VIRTUAL ATTRIBUTE&lt;/fo:block&gt;&#10;
+        &lt;/xsl:otherwise&gt;&#10;
+      &lt;/xsl:choose&gt;&#10;
+      &#10;
+      &lt;xsl:choose&gt;&#10;
+        &lt;xsl:when test=&quot;users/user&quot;&gt;&#10;
+          &lt;fo:block font-size=&quot;11pt&quot; font-weight=&quot;bold&quot;&gt;Users&lt;/fo:block&gt;&#10;
+          &lt;xsl:for-each select=&quot;users/user&quot;&gt;&#10;
+            &lt;fo:block background-color=&quot;(#ccccff)&quot; font-size=&quot;9pt&quot; font-weight=&quot;bold&quot; space-before=&quot;4mm&quot;&gt;User: &lt;xsl:value-of select=&quot;@userUsername&quot;/&gt; (Id: &lt;xsl:value-of select=&quot;@userId&quot;/&gt;)&lt;/fo:block&gt;&#10;
+                 &#10;
+          &lt;/xsl:for-each&gt; &#10;
+        &lt;/xsl:when&gt;&#10;
+        &lt;xsl:otherwise&gt;&#10;
+          &lt;fo:block color=&quot;red&quot; font-size=&quot;9pt&quot; space-after=&quot;3mm&quot;&gt;THIS GROUP HASN'T ANY USER ASSIGNED TO&lt;/fo:block&gt;&#10;
+        &lt;/xsl:otherwise&gt;&#10;
+      &lt;/xsl:choose&gt;&#10;
+      &lt;xsl:call-template name=&quot;groupResources&quot;&gt;&#10;
+        &lt;xsl:with-param name=&quot;node&quot; select=&quot;resources/resource&quot;/&gt;&#10;
+      &lt;/xsl:call-template&gt;&#10;
+    &lt;/xsl:for-each&gt;&#10;
+&#10;
+  &lt;/xsl:template&gt;&#10;
+  &#10;
+  &lt;xsl:template name=&quot;attributes&quot;&gt;&#10;
+    &lt;xsl:param name=&quot;label&quot;/&gt;&#10;
+    &lt;xsl:param name=&quot;node&quot;/&gt;&#10;
+    &lt;fo:block font-size=&quot;11pt&quot; font-weight=&quot;bold&quot; space-after=&quot;2mm&quot;&gt;&#10;
+      &lt;xsl:value-of select=&quot;$label&quot;/&gt;&#10;
+    &lt;/fo:block&gt;&#10;
+    &lt;fo:table table-layout=&quot;fixed&quot; space-after=&quot;7mm&quot;&gt;&#10;
+      &lt;fo:table-column/&gt;&#10;
+      &lt;fo:table-column/&gt;&#10;
+      &lt;fo:table-header&gt;&#10;
+        &lt;fo:table-row height=&quot;7mm&quot; background-color=&quot;(#ccccba)&quot;&gt;&#10;
+          &lt;fo:table-cell&gt;&#10;
+            &lt;fo:block font-weight=&quot;bold&quot;&gt;Schema name&lt;/fo:block&gt;&#10;
+          &lt;/fo:table-cell&gt;&#10;
+          &lt;fo:table-cell&gt;&#10;
+            &lt;fo:block font-weight=&quot;bold&quot;&gt;Value(s)&lt;/fo:block&gt;&#10;
+          &lt;/fo:table-cell&gt;&#10;
+        &lt;/fo:table-row&gt;&#10;
+      &lt;/fo:table-header&gt;&#10;
+      &lt;fo:table-body&gt;&#10;
+        &lt;xsl:for-each select=&quot;$node&quot;&gt;&#10;
+          &lt;xsl:if test=&quot;string-length(value/text()) &amp;gt; 0&quot;&gt;&#10;
+            &lt;fo:table-row height=&quot;4mm&quot; background-color=&quot;(#ccccff)&quot;&gt;&#10;
+              &lt;fo:table-cell&gt;&#10;
+                &lt;fo:block&gt;&#10;
+                  &lt;xsl:value-of select=&quot;@name&quot;/&gt;&#10;
+                &lt;/fo:block&gt;&#10;
+              &lt;/fo:table-cell&gt;&#10;
+              &lt;fo:table-cell&gt;&#10;
+                &lt;xsl:for-each select=&quot;value&quot;&gt;&#10;
+                  &lt;fo:block&gt;&lt;/fo:block&gt;&#10;
+                  &lt;fo:block font-style=&quot;italic&quot;&gt;&#10;
+                    &lt;xsl:value-of select=&quot;text()&quot;/&gt;&#10;
+                  &lt;/fo:block&gt;&#10;
+                &lt;/xsl:for-each&gt;&#10;
+              &lt;/fo:table-cell&gt;&#10;
+            &lt;/fo:table-row&gt;&#10;
+          &lt;/xsl:if&gt;&#10;
+          &lt;fo:table-row&gt;&#10;
+            &lt;fo:table-cell&gt;&#10;
+              &lt;fo:block&gt;&lt;/fo:block&gt;&#10;
+            &lt;/fo:table-cell&gt;&#10;
+            &lt;fo:table-cell&gt;&#10;
+              &lt;fo:block&gt;&lt;/fo:block&gt;&#10;
+            &lt;/fo:table-cell&gt;&#10;
+          &lt;/fo:table-row&gt;&#10;
+        &lt;/xsl:for-each&gt;&#10;
+      &lt;/fo:table-body&gt;&#10;
+    &lt;/fo:table&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+  &#10;
+  &lt;xsl:template name=&quot;resources&quot;&gt;&#10;
+    &lt;xsl:param name=&quot;node&quot;/&gt;&#10;
+    &lt;fo:block font-size=&quot;11pt&quot; font-weight=&quot;bold&quot; space-after=&quot;3mm&quot;&gt;Resources&lt;/fo:block&gt;&#10;
+    &lt;xsl:for-each select=&quot;$node&quot;&gt;&#10;
+      &lt;fo:block&gt;&lt;/fo:block&gt; &lt;!--            &lt;fo:block&gt;&#x2022;&lt;/fo:block&gt;--&gt;&#10;
+      &lt;fo:block background-color=&quot;(#ccccff)&quot;&gt;&#10;
+        &lt;xsl:value-of select=&quot;@name&quot;/&gt;&#10;
+      &lt;/fo:block&gt;&#10;
+    &lt;/xsl:for-each&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+&#10;
+  &lt;xsl:template name=&quot;groupResources&quot;&gt;&#10;
+    &lt;xsl:param name=&quot;node&quot;/&gt;&#10;
+    &lt;fo:block font-size=&quot;11pt&quot; font-weight=&quot;bold&quot; space-after=&quot;3mm&quot; space-before=&quot;5mm&quot;&gt;Group Resources&lt;/fo:block&gt;&#10;
+    &lt;xsl:for-each select=&quot;$node&quot;&gt;&#10;
+      &lt;fo:block&gt;&lt;/fo:block&gt; &lt;!--            &lt;fo:block&gt;&#x2022;&lt;/fo:block&gt;--&gt;&#10;
+      &lt;fo:block background-color=&quot;(#ccccff)&quot;&gt;&#10;
+        &lt;xsl:value-of select=&quot;@name&quot;/&gt;&#10;
+      &lt;/fo:block&gt;&#10;
+    &lt;/xsl:for-each&gt;&#10;
+  &lt;/xsl:template&gt;&#10;
+&#10;
+&lt;/xsl:stylesheet&gt;&#10;"/>
   
-  <Report id="1" name="test" active="1"/>
-  <ReportletConfInstance id="1" Report_id="1" 
+  <Report id="0062ea9c-924d-4ecf-9961-4492a8cc6d1b" name="test" active="1" template_id="sample"/>
+  <ReportletConfInstance id="5874f3fa-578c-42c6-83b0-c11adafc98b2" report_id="0062ea9c-924d-4ecf-9961-4492a8cc6d1b" 
                          serializedInstance='{"@class":"org.apache.syncope.common.lib.report.UserReportletConf","name":"testUserReportlet","matchingCond":null,"plainAttrs":["fullname","gender"],"derAttrs":["cn"],"virAttrs":["virtualdata"],"features":["key","username","workflowId","status","creationDate","lastLoginDate","changePwdDate","passwordHistorySize","failedLoginCount","memberships","resources"]}'/>
-  <ReportExec Report_id="1" id="1" status="SUCCESS" start="2012-02-26 15:40:04" end="2012-02-26 15:41:04"/>
+  <ReportExec report_id="0062ea9c-924d-4ecf-9961-4492a8cc6d1b" id="c13f39c5-0d35-4bff-ba79-3cd5de940369"
+              status="SUCCESS" startDate="2012-02-26 15:40:04" endDate="2012-02-26 15:41:04"/>
+
+  <Report id="c3520ad9-179f-49e7-b315-d684d216dd97" name="reconciliation" active="1" template_id="empty"/>
+  <ReportletConfInstance id="d6c2b475-4860-4eb1-8fde-618299c2a97c" report_id="c3520ad9-179f-49e7-b315-d684d216dd97" 
+                         serializedInstance='{"@class":"org.apache.syncope.common.lib.report.ReconciliationReportletConf","name":"dashboardReconciliationReportlet","userMatchingCond":null,"groupMatchingCond":null,"anyObjectMatchingCond":null,"features":["key","username","groupName"]}'/>
   
-  <SyncopeLogger logName="syncope.audit.[REST]:[EntitlementLogic]:[]:[getOwn]:[SUCCESS]" logLevel="DEBUG" logType="AUDIT"/>
+  <SyncopeLogger logName="syncope.audit.[LOGIC]:[SyncopeLogic]:[]:[isSelfRegAllowed]:[SUCCESS]" logLevel="DEBUG" logType="AUDIT"/>
   
-  <SecurityQuestion id="1" content="What's your mother's maiden name?"/>
+  <SecurityQuestion id="887028ea-66fc-41e7-b397-620d7ea6dfbb" content="What's your mother's maiden name?"/>
 </dataset>
\ No newline at end of file
diff --git a/core/src/test/resources/domains/TwoContent.xml b/core/src/test/resources/domains/TwoContent.xml
index cc36a9d..437debc 100644
--- a/core/src/test/resources/domains/TwoContent.xml
+++ b/core/src/test/resources/domains/TwoContent.xml
@@ -18,109 +18,162 @@
 under the License.
 -->
 <dataset>
-  <Realm id="1" name="/"/>
+  <Realm id="ea696a4f-e77a-4ef1-be67-8f8093bc8686" name="/"/>
 
-  <SyncopeConf id="1" 
-               creator="admin" lastModifier="admin"
-               creationDate="2014-06-20 11:00:00" lastChangeDate="2014-06-20 11:00:00"/>
+  <SyncopeConf id="cd64d66f-6fff-4008-b966-a06b1cc1436d"/>
 
-  <PlainSchema name="password.cipher.algorithm" type="String"
+  <SyncopeSchema id="password.cipher.algorithm"/>
+  <PlainSchema id="password.cipher.algorithm" type="String"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="1" owner_id="1" schema_name="password.cipher.algorithm"/>
-  <CPlainAttrValue id="1" attribute_id="1" stringValue="SHA1"/>
+  <CPlainAttr id="56db89b9-119e-4923-a16e-f42823b90c66" 
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="password.cipher.algorithm"/>
+  <CPlainAttrValue id="870323e8-8db6-4a64-b512-15f9fa094905" 
+                   attribute_id="56db89b9-119e-4923-a16e-f42823b90c66" stringValue="SHA1"/>
 
-  <PlainSchema name="token.length" type="Long"
+  <SyncopeSchema id="token.length"/>
+  <PlainSchema id="token.length" type="Long"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="4" owner_id="1" schema_name="token.length"/>
-  <CPlainAttrValue id="4" attribute_id="4" longValue="256"/>
+  <CPlainAttr id="58977caa-dcf7-4ae3-8591-7e3d0a395200"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="token.length"/>
+  <CPlainAttrValue id="372e28e0-3af1-4774-b668-81aa84903b75"
+                   attribute_id="58977caa-dcf7-4ae3-8591-7e3d0a395200" longValue="256"/>
 
-  <PlainSchema name="token.expireTime" type="Long"
+  <SyncopeSchema id="token.expireTime"/>
+  <PlainSchema id="token.expireTime" type="Long"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="5" owner_id="1" schema_name="token.expireTime"/>
-  <CPlainAttrValue id="5" attribute_id="5" longValue="60"/>
+  <CPlainAttr id="01f69abd-df85-4e1b-bb88-ad570594e045"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="token.expireTime"/>
+  <CPlainAttrValue id="963970cf-4af6-46bb-875b-a1b758ac8d05"
+                   attribute_id="01f69abd-df85-4e1b-bb88-ad570594e045" longValue="60"/>
 
-  <PlainSchema name="selfRegistration.allowed" type="Boolean"
+  <SyncopeSchema id="selfRegistration.allowed"/>
+  <PlainSchema id="selfRegistration.allowed" type="Boolean"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="6" owner_id="1" schema_name="selfRegistration.allowed"/>
-  <CPlainAttrValue id="6" attribute_id="6" booleanValue="1"/>
+  <CPlainAttr id="7b19cefa-d606-477c-8431-c9464f53fe8b"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="selfRegistration.allowed"/>
+  <CPlainAttrValue id="c8b9a0f1-0168-4e2a-95b8-4819fc70e620"
+                   attribute_id="7b19cefa-d606-477c-8431-c9464f53fe8b" booleanValue="1"/>
 
-  <PlainSchema name="passwordReset.allowed" type="Boolean"
+  <SyncopeSchema id="passwordReset.allowed"/>
+  <PlainSchema id="passwordReset.allowed" type="Boolean"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="7" owner_id="1" schema_name="passwordReset.allowed"/>
-  <CPlainAttrValue id="7" attribute_id="7" booleanValue="1"/>
+  <CPlainAttr id="dc35cc97-6ed9-4bb2-bb3b-509f4cd8f3d3"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="passwordReset.allowed"/>
+  <CPlainAttrValue id="b1ecea41-ab7c-4dd3-9e3e-b6baf0f98046"
+                   attribute_id="dc35cc97-6ed9-4bb2-bb3b-509f4cd8f3d3" booleanValue="1"/>
 
-  <PlainSchema name="passwordReset.securityQuestion" type="Boolean"
+  <SyncopeSchema id="passwordReset.securityQuestion"/>
+  <PlainSchema id="passwordReset.securityQuestion" type="Boolean"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="8" owner_id="1" schema_name="passwordReset.securityQuestion"/>
-  <CPlainAttrValue id="8" attribute_id="8" booleanValue="1"/>
+  <CPlainAttr id="e5a712ad-53fd-4102-ba55-fb45caed5f7b"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="passwordReset.securityQuestion"/>
+  <CPlainAttrValue id="b5e8e79d-8039-4318-9698-fe5e181ebe98"
+                   attribute_id="e5a712ad-53fd-4102-ba55-fb45caed5f7b" booleanValue="1"/>
 
-  <PlainSchema name="authentication.statuses" type="String"
-               mandatoryCondition="true" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="9" owner_id="1" schema_name="authentication.statuses"/>
-  <CPlainAttrValue id="9" attribute_id="9" stringValue="created"/>
-  <CPlainAttrValue id="10" attribute_id="9" stringValue="active"/>
+  <SyncopeSchema id="authentication.statuses"/>
+  <PlainSchema id="authentication.statuses" type="String" multivalue="1" uniqueConstraint="0" readonly="0"/>
+  <CPlainAttr id="888ae8e1-a295-4ee2-a15e-31dbf6dfc3f9"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="authentication.statuses"/>
+  <CPlainAttrValue id="4b8e7d2b-f527-43a3-a2e2-5530dcab2f52"
+                   attribute_id="888ae8e1-a295-4ee2-a15e-31dbf6dfc3f9" stringValue="created"/>
+  <CPlainAttrValue id="f0c89f2c-ea87-4c95-a1cf-142bf6e6f523"
+                   attribute_id="888ae8e1-a295-4ee2-a15e-31dbf6dfc3f9" stringValue="active"/>
 
   <!-- Save user login date upon successful authentication -->
-  <PlainSchema name="log.lastlogindate" type="Boolean"
+  <SyncopeSchema id="log.lastlogindate"/>
+  <PlainSchema id="log.lastlogindate" type="Boolean"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="11" owner_id="1" schema_name="log.lastlogindate"/>
-  <CPlainAttrValue id="11" attribute_id="11" booleanValue="1"/>
+  <CPlainAttr id="9891c0a7-27ee-4215-9eea-ca32e580b4e4"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="log.lastlogindate"/>
+  <CPlainAttrValue id="162dd874-0417-4bb9-9724-db1ff2952dd1"
+                   attribute_id="9891c0a7-27ee-4215-9eea-ca32e580b4e4" booleanValue="1"/>
 
-  <PlainSchema name="tasks.interruptMaxRetries" type="Long"
+  <SyncopeSchema id="tasks.interruptMaxRetries"/>
+  <PlainSchema id="tasks.interruptMaxRetries" type="Long"
                mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="12" owner_id="1" schema_name="tasks.interruptMaxRetries"/>
-  <CPlainAttrValue id="12" attribute_id="12" longValue="20"/>
-
+  <CPlainAttr id="c2b9ca96-c6ef-433d-8287-0e0cfd0ad0db"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="tasks.interruptMaxRetries"/>
+  <CPlainAttrValue id="5dc3f4e3-ff9f-4558-a9ac-15336b63a2ad"
+                   attribute_id="c2b9ca96-c6ef-433d-8287-0e0cfd0ad0db" longValue="20"/>
+  
   <!-- Return hashed password values when reading users -->
-  <PlainSchema name="return.password.value" type="Boolean"
+  <SyncopeSchema id="return.password.value"/>
+  <PlainSchema id="return.password.value" type="Boolean"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
-  <CPlainAttr id="14" owner_id="1" schema_name="return.password.value"/>
-  <CPlainAttrValue id="14" attribute_id="14" booleanValue="0"/>
+  <CPlainAttr id="bcfd7efc-0605-4b5e-b4bb-85c1d5f6493a"
+              owner_id="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_id="return.password.value"/>
+  <CPlainAttrValue id="e5fa94db-b524-4309-908d-8198d0b3f779"
+                   attribute_id="bcfd7efc-0605-4b5e-b4bb-85c1d5f6493a" booleanValue="0"/>
   
-  <AnyType name="USER" kind="USER"/>
-  <AnyTypeClass name="BaseUser"/>
-  <AnyType_AnyTypeClass anyType_name="USER" anyTypeClass_name="BaseUser"/>
+  <AnyType id="USER" kind="USER"/>
+  <AnyTypeClass id="BaseUser"/>
+  <AnyType_AnyTypeClass anyType_id="USER" anyTypeClass_id="BaseUser"/>
 
-  <AnyType name="GROUP" kind="GROUP"/>
-  
-  <!-- For usage with admin console -->
-  <PlainSchema name="admin.user.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="self.user.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="admin.group.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="self.group.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="admin.membership.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="self.membership.layout" type="String"
-               mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
+  <AnyType id="GROUP" kind="GROUP"/>
         
-  <PlainSchema name="email" type="String" anyTypeClass_name="BaseUser"
+  <SyncopeSchema id="email"/>
+  <PlainSchema id="email" type="String" anyTypeClass_id="BaseUser"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
                validatorClass="org.apache.syncope.core.persistence.jpa.attrvalue.validation.EmailAddressValidator"/>
   
   <!-- Password reset notifications -->
-  <Notification id="1" active="1" recipientAttrName="email" recipientAttrType="UserPlainSchema" selfAsRecipient="1" 
-                sender="admin@syncope.apache.org" subject="Password Reset request" template="requestPasswordReset" 
-                traceLevel="FAILURES"/> 
-  <AnyAbout id="1" anyType_name="USER" notification_id="1" about="token!=$null"/>
-  <Notification_events Notification_id="1" event="[CUSTOM]:[]:[]:[requestPasswordReset]:[SUCCESS]"/>
-  
-  <Notification id="2" active="1" recipientAttrName="email" recipientAttrType="UserPlainSchema" selfAsRecipient="1" 
-                sender="admin@syncope.apache.org" subject="Password Reset successful" template="confirmPasswordReset" 
-                traceLevel="FAILURES"/> 
-  <Notification_events Notification_id="2" event="[CUSTOM]:[]:[]:[confirmPasswordReset]:[SUCCESS]"/>
+  <MailTemplate id="requestPasswordReset"
+                textTemplate="Hi,
+a password reset was request for ${user.getUsername()}.
 
-  <ConnInstance id="100" bundleName="net.tirasa.connid.bundles.ldap" displayName="LDAP"
+In order to complete this request, you need to visit this link:
+
+http://localhost:9080/syncope-console/?pwdResetToken=${input.get(0).replaceAll(' ', '%20')}
+
+If you did not request this reset, just ignore the present e-mail.
+
+Best regards."
+                htmlTemplate="&lt;html&gt;
+&lt;body&gt;
+&lt;p&gt;Hi,
+a password reset was request for ${user.getUsername()}.&lt;/p&gt;
+
+&lt;p&gt;In order to complete this request, you need to visit this 
+&lt;a href=&quot;http://localhost:9080/syncope-console/?pwdResetToken=${input.get(0).replaceAll(' ', '%20')}&quot;&gt;link&lt;/a&gt;&lt;/p&gt;.
+
+&lt;p&gt;If you did not request this reset, just ignore the present e-mail.&lt;/p&gt;
+
+&lt;p&gt;Best regards.&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;"/>
+  <MailTemplate id="confirmPasswordReset"
+                textTemplate="Hi,
+we are happy to inform you that the password request was successfully executed for your account.
+
+Best regards."
+                htmlTemplate="&lt;html&gt;
+&lt;body&gt;
+&lt;p&gt;Hi,&lt;/br&gt;
+we are happy to inform you that the password request was successfully executed for your account.&lt;/p&gt;
+
+&lt;p&gt;Best regards.&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;"/>
+
+  <Notification id="c74b4616-9c63-4350-b4bf-ae0077b1ae6a" active="1" recipientAttrName="email" selfAsRecipient="1" 
+                sender="admin@syncope.apache.org" subject="Password Reset request" template_id="requestPasswordReset" 
+                traceLevel="FAILURES"/> 
+  <AnyAbout id="0d4e37a1-a4f4-4865-afcb-4be01da3da53" anyType_id="USER" notification_id="c74b4616-9c63-4350-b4bf-ae0077b1ae6a" filter="token!=$null"/>
+  <Notification_events notification_id="c74b4616-9c63-4350-b4bf-ae0077b1ae6a" event="[CUSTOM]:[]:[]:[requestPasswordReset]:[SUCCESS]"/>
+  
+  <Notification id="71769807-7f74-4dc3-ba61-e4a7a00eb8ad" active="1" recipientAttrName="email" selfAsRecipient="1" 
+                sender="admin@syncope.apache.org" subject="Password Reset successful" template_id="confirmPasswordReset" 
+                traceLevel="FAILURES"/> 
+  <Notification_events notification_id="71769807-7f74-4dc3-ba61-e4a7a00eb8ad" event="[CUSTOM]:[]:[]:[confirmPasswordReset]:[SUCCESS]"/>
+
+  <ConnInstance id="b7ea96c3-c633-488b-98a0-b52ac35850f7" bundleName="net.tirasa.connid.bundles.ldap" displayName="LDAP"
                 location="${connid.location}"
                 connectorName="net.tirasa.connid.bundles.ldap.LdapConnector"
                 version="${connid.ldap.version}" 
                 jsonConf='[{"schema":{"name":"synchronizePasswords","displayName":"Enable Password Synchronization","helpMessage":"If true, the connector will synchronize passwords. The Password Capture Plugin needs to be installed for password synchronization to work.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"maintainLdapGroupMembership","displayName":"Maintain LDAP Group Membership","helpMessage":"When enabled and a user is renamed or deleted, update any LDAP groups to which the user belongs to reflect the new name. Otherwise, the LDAP resource must maintain referential integrity with respect to group membership.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"host","displayName":"Host","helpMessage":"The name or IP address of the host where the LDAP server is running.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["localhost"]},{"schema":{"name":"passwordHashAlgorithm","displayName":"Password Hash Algorithm","helpMessage":"Indicates the algorithm that the Identity system should use to hash the password. Currently supported values are SSHA, SHA, SSHA1, and SHA1. A blank value indicates that the system will not hash passwords. This will cause cleartext passwords to be stored in LDAP unless the LDAP server performs the hash (Netscape Directory Server and iPlanet Directory Server do).","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["SHA"]},{"schema":{"name":"port","displayName":"TCP Port","helpMessage":"TCP/IP port number used to communicate with the LDAP server.","type":"int","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[1389]},{"schema":{"name":"vlvSortAttribute","displayName":"VLV Sort Attribute","helpMessage":"Specify the sort attribute to use for VLV indexes on the resource.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"statusManagementClass","displayName":"Status management class ","helpMessage":"Class to be used to manage enabled/disabled status. If no class is specified then identity status management wont be possible.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["net.tirasa.connid.bundles.ldap.commons.AttributeStatusManagement"]},{"schema":{"name":"accountObjectClasses","displayName":"Account Object Classes","helpMessage":"The object class or classes that will be used when creating new user objects in the LDAP tree. When entering more than one object class, each entry should be on its own line; do not use commas or semi-colons to separate multiple object classes. Some object classes may require that you specify all object classes in the class hierarchy.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["inetOrgPerson"]},{"schema":{"name":"accountUserNameAttributes","displayName":"Account User Name Attributes","helpMessage":"Attribute or attributes which holds the account user name. They will be used when authenticating to find the LDAP entry for the user name to authenticate.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid"]},{"schema":{"name":"baseContextsToSynchronize","displayName":"Base Contexts to Synchronize","helpMessage":"One or more starting points in the LDAP tree that will be used to determine if a change should be synchronized. The base contexts attribute will be used to synchronize a change if this property is not set.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["ou=people,o=isp","ou=groups,o=isp"]},{"schema":{"name":"accountSynchronizationFilter","displayName":"LDAP Filter for Accounts to Synchronize","helpMessage":"An optional LDAP filter for the objects to synchronize. Because the change log is for all objects, this filter updates only objects that match the specified filter. If you specify a filter, an object will be synchronized only if it matches the filter and includes a synchronized object class.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"removeLogEntryObjectClassFromFilter","displayName":"Remove Log Entry Object Class from Filter","helpMessage":"If this property is set (the default), the filter used to fetch change log entries does not contain the \"changeLogEntry\" object class, expecting that there are no entries of other object types in the change log.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"passwordDecryptionKey","displayName":"Password Decryption Key","helpMessage":"The key to decrypt passwords with when performing password synchronization.","type":"org.identityconnectors.common.security.GuardedByteArray","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"readSchema","displayName":"Read Schema","helpMessage":"If true, the connector will read the schema from the server. If false, the connector will provide a default schema based on the object classes in the configuration. This property must be true in order to use extended object classes.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"ssl","displayName":"SSL","helpMessage":"Select the check box to connect to the LDAP server using SSL.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"passwordAttributeToSynchronize","displayName":"Password Attribute to Synchronize","helpMessage":"The name of the password attribute to synchronize when performing password synchronization.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"accountSearchFilter","displayName":"LDAP Filter for Retrieving Accounts","helpMessage":"An optional LDAP filter to control which accounts are returned from the LDAP resource. If no filter is specified, only accounts that include all specified object classes are returned.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid=*"]},{"schema":{"name":"passwordDecryptionInitializationVector","displayName":"Password Decryption Initialization Vector","helpMessage":"The initialization vector to decrypt passwords with when performing password synchronization.","type":"org.identityconnectors.common.security.GuardedByteArray","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"groupMemberAttribute","displayName":"Group Member Attribute","helpMessage":"The name of the group attribute that will be updated with the distinguished name of the user when the user is added to the group.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"failover","displayName":"Failover Servers","helpMessage":"List all servers that should be used for failover in case the preferred server fails. If the preferred server fails, JNDI will connect to the next available server in the list. List all servers in the form of \"ldap://ldap.example.com:389/\", which follows the standard LDAP v3 URLs described in RFC 2255. Only the host and port parts of the URL are relevant in this setting.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"modifiersNamesToFilterOut","displayName":"Filter Out Changes By","helpMessage":"The names (DNs) of directory administrators to filter from the changes. Changes with the attribute \"modifiersName\" that match entries in this list will be filtered out. The standard value is the administrator name used by this adapter, to prevent loops. Entries should be of the format \"cn=Directory Manager\".","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"groupNameAttributes","displayName":"Group Name Attributes","helpMessage":"Attribute or attributes which holds the group name.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["cn"]},{"schema":{"name":"uidAttribute","displayName":"Uid Attribute","helpMessage":"The name of the LDAP attribute which is mapped to the Uid attribute.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["cn"]},{"schema":{"name":"respectResourcePasswordPolicyChangeAfterReset","displayName":"Respect Resource Password Policy Change-After-Reset","helpMessage":"When this resource is specified in a Login Module (i.e., this resource is a pass-through authentication target) and the resource password policy is configured for change-after-reset, a user whose resource account password has been administratively reset will be required to change that password after successfully authenticating.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"filterWithOrInsteadOfAnd","displayName":"Filter with Or Instead of And","helpMessage":"Normally the the filter used to fetch change log entries is an and-based filter retrieving an interval of change entries. If this property is set, the filter will or together the required change numbers instead.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"principal","displayName":"Principal","helpMessage":"The distinguished name with which to authenticate to the LDAP server.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid=admin,ou=system"]},{"schema":{"name":"changeLogBlockSize","displayName":"Change Log Block Size","helpMessage":"The number of change log entries to fetch per query.","type":"int","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[100]},{"schema":{"name":"baseContexts","displayName":"Base Contexts","helpMessage":"One or more starting points in the LDAP tree that will be used when searching the tree. Searches are performed when discovering users from the LDAP server or when looking for the groups of which a user is a member.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["ou=people,o=isp","ou=groups,o=isp"]},{"schema":{"name":"passwordAttribute","displayName":"Password Attribute","helpMessage":"The name of the LDAP attribute which holds the password. When changing an user password, the new password is set to this attribute.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["userpassword"]},{"schema":{"name":"changeNumberAttribute","displayName":"Change Number Attribute","helpMessage":"The name of the change number attribute in the change log entry.","type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["changeNumber"]},{"schema":{"name":"objectClassesToSynchronize","displayName":"Object Classes to Synchronize","helpMessage":"The object classes to synchronize. The change log is for all objects; this filters updates to just the listed object classes. You should not list the superclasses of an object class unless you intend to synchronize objects with any of the superclass values. For example, if only \"inetOrgPerson\" objects should be synchronized, but the superclasses of \"inetOrgPerson\" (\"person\", \"organizationalperson\" and \"top\") should be filtered out, then list only \"inetOrgPerson\" here. All objects in LDAP are subclassed from \"top\". For this reason, you should never list \"top\", otherwise no object would be filtered.","type":"[Ljava.lang.String;","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["inetOrgPerson","groupOfUniqueNames"]},{"schema":{"name":"credentials","displayName":"Password","helpMessage":"Password for the principal.","type":"org.identityconnectors.common.security.GuardedString","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["secret"]},{"schema":{"name":"attributesToSynchronize","displayName":"Attributes to Synchronize","helpMessage":"The names of the attributes to synchronize. This ignores updates from the change log if they do not update any of the named attributes. For example, if only \"department\" is listed, then only changes that affect \"department\" will be processed. All other updates are ignored. If blank (the default), then all changes are processed.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"maintainPosixGroupMembership","displayName":"Maintain POSIX Group Membership","helpMessage":"When enabled and a user is renamed or deleted, update any POSIX groups to which the user belongs to reflect the new name. Otherwise, the LDAP resource must maintain referential integrity with respect to group membership.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["truemaintainLdapGroupMembership"]}]'/>
-  <ConnInstance_capabilities ConnInstance_id="100" capability="CREATE"/>
-  <ConnInstance_capabilities ConnInstance_id="100" capability="UPDATE"/>
-  <ConnInstance_capabilities ConnInstance_id="100" capability="DELETE"/>
-  <ConnInstance_capabilities ConnInstance_id="100" capability="SEARCH"/>
+  <ConnInstance_capabilities connInstance_id="b7ea96c3-c633-488b-98a0-b52ac35850f7" capability="CREATE"/>
+  <ConnInstance_capabilities connInstance_id="b7ea96c3-c633-488b-98a0-b52ac35850f7" capability="UPDATE"/>
+  <ConnInstance_capabilities connInstance_id="b7ea96c3-c633-488b-98a0-b52ac35850f7" capability="DELETE"/>
+  <ConnInstance_capabilities ConnInstance_id="b7ea96c3-c633-488b-98a0-b52ac35850f7" capability="SEARCH"/>
   
 </dataset>
diff --git a/core/src/test/resources/domains/TwoDomain.xml b/core/src/test/resources/domains/TwoDomain.xml
index c7e7a9b..506c068 100644
--- a/core/src/test/resources/domains/TwoDomain.xml
+++ b/core/src/test/resources/domains/TwoDomain.xml
@@ -28,11 +28,11 @@
                            http://www.springframework.org/schema/util
                            http://www.springframework.org/schema/util/spring-util.xsd">
   
-  <bean id="TwoContentXML" class="org.apache.syncope.core.misc.spring.ResourceWithFallbackLoader">
+  <bean id="TwoContentXML" class="org.apache.syncope.core.spring.ResourceWithFallbackLoader">
     <property name="primary" value="file:${content.directory}/domains/TwoContent.xml"/>
     <property name="fallback" value="classpath:domains/TwoContent.xml"/>
   </bean>
-  <bean id="TwoProperties" class="org.apache.syncope.core.misc.spring.ResourceWithFallbackLoader">
+  <bean id="TwoProperties" class="org.apache.syncope.core.spring.ResourceWithFallbackLoader">
     <property name="primary" value="file:${content.directory}/domains/Two.properties"/>
     <property name="fallback" value="classpath:domains/Two.properties"/>
   </bean>
diff --git a/core/src/test/resources/scriptedsql/CreateScript.groovy b/core/src/test/resources/scriptedsql/CreateScript.groovy
index 52c10f9..779c285 100644
--- a/core/src/test/resources/scriptedsql/CreateScript.groovy
+++ b/core/src/test/resources/scriptedsql/CreateScript.groovy
@@ -35,12 +35,13 @@
 
 def sql = new Sql(connection);
 
-switch ( objectClass ) {
+switch ( objectClass ) {  
 case "__PRINTER__":
-  sql.execute("INSERT INTO TESTPRINTER (id, location, lastmodification) values (?,?,?)",
+  sql.execute("INSERT INTO TESTPRINTER (id, printername, location, lastmodification) VALUES (?,?,?,?)",
     [
       id,
-      attributes.get("location").get(0),
+      attributes.get("PRINTERNAME").get(0),
+      attributes.get("LOCATION").get(0),
       new Date()
     ])
   break
diff --git a/core/src/test/resources/scriptedsql/DeleteScript.groovy b/core/src/test/resources/scriptedsql/DeleteScript.groovy
index cdd7f5b..a0ec224 100644
--- a/core/src/test/resources/scriptedsql/DeleteScript.groovy
+++ b/core/src/test/resources/scriptedsql/DeleteScript.groovy
@@ -35,7 +35,7 @@
 
 switch ( objectClass ) {
 case "__PRINTER__":
-  sql.execute("DELETE FROM TESTPRINTER where id= ?",[uid])
+  sql.execute("UPDATE TESTPRINTER SET deleted = ?, lastmodification = ? WHERE id = ?", [true, new Date(), uid])
   break
 
 default:
diff --git a/core/src/test/resources/scriptedsql/SchemaScript.groovy b/core/src/test/resources/scriptedsql/SchemaScript.groovy
index 50f8a8a..e13f058 100644
--- a/core/src/test/resources/scriptedsql/SchemaScript.groovy
+++ b/core/src/test/resources/scriptedsql/SchemaScript.groovy
@@ -37,12 +37,13 @@
 
 log.info("Entering " + action + " Script");
 
-idAIB = new AttributeInfoBuilder("id", String.class);
+idAIB = new AttributeInfoBuilder("ID", String.class);
 idAIB.setRequired(true);
 
 orgAttrsInfo = new HashSet<AttributeInfo>();
 orgAttrsInfo.add(idAIB.build());
-orgAttrsInfo.add(AttributeInfoBuilder.build("location", String.class));
+orgAttrsInfo.add(AttributeInfoBuilder.build("PRINTERNAME", String.class));
+orgAttrsInfo.add(AttributeInfoBuilder.build("LOCATION", String.class));
 // Create the organization Object class
 ObjectClassInfo ociOrg = new ObjectClassInfoBuilder().setType("__PRINTER__").addAllAttributeInfo(orgAttrsInfo).build();
 builder.defineObjectClass(ociOrg);
diff --git a/core/src/test/resources/scriptedsql/SearchScript.groovy b/core/src/test/resources/scriptedsql/SearchScript.groovy
index cc0dd65..bba9ec4 100644
--- a/core/src/test/resources/scriptedsql/SearchScript.groovy
+++ b/core/src/test/resources/scriptedsql/SearchScript.groovy
@@ -83,8 +83,8 @@
 
 switch ( objectClass ) {
 case "__PRINTER__":
-  sql.eachRow("SELECT * FROM TESTPRINTER " + where, 
-    {result.add([__UID__:it.id, __NAME__:it.id, location:it.location])} );
+  sql.eachRow("SELECT * FROM TESTPRINTER " + where + ((where?.trim ()) ? "AND" : "WHERE") + " deleted <> TRUE", 
+    {result.add([__UID__:it.id, __NAME__:it.id, ID:it.id, PRINTERNAME:it.printername, LOCATION:it.location])} );
   break
 
 default:
diff --git a/core/src/test/resources/scriptedsql/SyncScript.groovy b/core/src/test/resources/scriptedsql/SyncScript.groovy
index 6060870..712dda9 100644
--- a/core/src/test/resources/scriptedsql/SyncScript.groovy
+++ b/core/src/test/resources/scriptedsql/SyncScript.groovy
@@ -71,18 +71,19 @@
   }
 
   switch (objectClass) {
-  case "__PRINTER__":    
+  case "__PRINTER__":
     sql.eachRow("SELECT * FROM TESTPRINTER WHERE lastmodification > ${lastmodification}",
       {
         result.add([
-            operation:"CREATE_OR_UPDATE", 
+            operation:it.deleted ? "DELETE": "CREATE_OR_UPDATE", 
             uid:it.id.toString(), 
             token:it.lastmodification.getTime(), 
             attributes:[
               __UID__:it.id.toString(),
               __NAME__:it.id.toString(),
-              id:it.id.toString(),
-              location:it.location
+              ID:it.id.toString(),
+              PRINTERNAME:it.printername,
+              LOCATION:it.location
             ]
           ]);
       }
diff --git a/core/src/test/resources/scriptedsql/TestScript.groovy b/core/src/test/resources/scriptedsql/TestScript.groovy
index 5b8f4b5..1de9d9f 100644
--- a/core/src/test/resources/scriptedsql/TestScript.groovy
+++ b/core/src/test/resources/scriptedsql/TestScript.groovy
@@ -28,4 +28,4 @@
 log.info("Entering " + action + " Script");
 def sql = new Sql(connection);
 
-sql.eachRow("select * from TESTPRINTER", { println it.uid} );
\ No newline at end of file
+sql.eachRow("select * from TESTPRINTER", { println it.id} );
\ No newline at end of file
diff --git a/core/src/test/resources/scriptedsql/UpdateScript.groovy b/core/src/test/resources/scriptedsql/UpdateScript.groovy
index f3155cb..9df30f8 100644
--- a/core/src/test/resources/scriptedsql/UpdateScript.groovy
+++ b/core/src/test/resources/scriptedsql/UpdateScript.groovy
@@ -50,9 +50,12 @@
 
 switch (action) {
 case "UPDATE":
-  if (attributes.get("location").get(0) != null) {
-    sql.executeUpdate("UPDATE TESTPRINTER SET location = ?, lastmodification = ? where id = ?", 
-      [attributes.get("location").get(0), new Date(), attributes.get("__NAME__").get(0)])
+  if (attributes.get("LOCATION").get(0) != null) {
+    sql.executeUpdate("UPDATE TESTPRINTER SET printername = ?, location = ?, lastmodification = ? where id = ?", 
+      [attributes.get("PRINTERNAME").get(0), 
+        attributes.get("LOCATION").get(0), 
+        new Date(), 
+        attributes.get("__NAME__").get(0)])
     
     return attributes.get("__NAME__").get(0);
   }
diff --git a/enduser/pom.xml b/enduser/pom.xml
index b2cc79a..331d638 100644
--- a/enduser/pom.xml
+++ b/enduser/pom.xml
@@ -24,14 +24,18 @@
   <parent>
     <groupId>org.apache.infra</groupId>
     <artifactId>iampoc</artifactId>
-    <version>0.1-SNAPSHOT</version>
+    <version>1.0-SNAPSHOT</version>
   </parent>
 
   <name>IAM PoC - Enduser</name>
   <groupId>org.apache.infra</groupId>
-  <artifactId>enduser</artifactId>
+  <artifactId>syncope-enduser</artifactId>
   <packaging>war</packaging>
 
+  <properties>
+    <rootpom.basedir>${basedir}/..</rootpom.basedir>
+  </properties>
+
   <dependencies>
 
     <dependency> 
@@ -49,7 +53,7 @@
 
     <dependency>
       <groupId>org.apache.infra</groupId>
-      <artifactId>common</artifactId>
+      <artifactId>syncope-common</artifactId>
       <version>${project.version}</version>
     </dependency>  
     
@@ -92,6 +96,34 @@
   <build>
     <finalName>syncope-enduser</finalName>
 
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-war-plugin</artifactId>
+        <inherited>true</inherited>
+        <configuration>
+          <webResources>
+            <resource>
+              <directory>${basedir}/src/main/webapp/WEB-INF</directory>
+              <filtering>true</filtering>
+              <targetPath>WEB-INF</targetPath>
+              <includes>
+                <include>web.xml</include>
+              </includes>
+            </resource>
+            <resource>
+              <directory>${basedir}/src/main/webapp/app</directory>
+              <filtering>true</filtering>
+              <targetPath>app</targetPath>
+              <includes>
+                <include>index.html</include>
+              </includes>
+            </resource>
+          </webResources>
+        </configuration>
+      </plugin>
+    </plugins>
+
     <resources>
       <resource>
         <directory>src/main/resources</directory>
@@ -220,6 +252,12 @@
                   </properties>
                 </deployable>
                 <deployable>
+                  <location>../console/target/syncope-console</location>
+                  <properties>
+                    <context>syncope-console</context>
+                  </properties>
+                </deployable>
+                <deployable>
                   <location>${project.build.directory}/${project.build.finalName}</location>
                   <properties>
                     <context>syncope-enduser</context>
diff --git a/enduser/src/main/resources/enduser.properties b/enduser/src/main/resources/enduser.properties
index 30f4028..2e6fd9b 100644
--- a/enduser/src/main/resources/enduser.properties
+++ b/enduser/src/main/resources/enduser.properties
@@ -20,10 +20,17 @@
 site=${project.parent.url}
 license=${licenseUrl}
 
+domain=Master
+
 anonymousUser=${anonymousUser}
 anonymousKey=${anonymousKey}
+adminUser=${adminUser}
+useGZIPCompression=true
 
 scheme=http
 host=localhost
 port=8080
 rootPath=/syncope/rest/
+
+captcha=true
+xsrf=true
diff --git a/enduser/src/main/resources/log4j2.xml b/enduser/src/main/resources/log4j2.xml
index 0aa3572..5226fb0 100644
--- a/enduser/src/main/resources/log4j2.xml
+++ b/enduser/src/main/resources/log4j2.xml
@@ -41,7 +41,7 @@
       <appender-ref ref="main"/>
     </asyncLogger>
 
-    <asyncLogger name="org.apache.syncope.client.enduser" additivity="false" level="ERROR">
+    <asyncLogger name="org.apache.syncope.client.enduser" additivity="false" level="INFO">
       <appender-ref ref="main"/>
     </asyncLogger>
 
@@ -53,7 +53,7 @@
       <appender-ref ref="main"/>
     </asyncLogger>
     
-    <root level="ERROR">
+    <root level="INFO">
       <appender-ref ref="main"/>
     </root>
   
diff --git a/enduser/src/main/webapp/app/css/app.css b/enduser/src/main/webapp/app/css/app.css
new file mode 100644
index 0000000..d112af2
--- /dev/null
+++ b/enduser/src/main/webapp/app/css/app.css
@@ -0,0 +1,74 @@
+/*
+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.
+*/
+
+/* app general css stylesheet */
+
+.growl-container > .growl-item.ng-enter,
+.growl-container > .growl-item.ng-leave {
+  -webkit-transition:1s linear all;
+  -moz-transition:1s linear all;
+  -o-transition:1s linear all;
+  transition:1s linear all;
+}
+
+.k-notification-wrap{
+  white-space: normal !important;
+  word-wrap: break-word !important;
+}
+
+.k-notification{
+  width : 320px;
+}
+
+.suggestions{
+  font-size: 10px;
+  display: inline-block;
+  margin-bottom: 5px;
+}
+
+#resetpassword{
+  background: -moz-linear-gradient(top, #a9db80 0%, #96c56f 100%); /* FF3.6+ */
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a9db80), color-stop(100%,#96c56f)); /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* Chrome10+,Safari5.1+ */
+  background: -o-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* Opera 11.10+ */
+  background: -ms-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* IE10+ */
+  color: black;
+  margin-left: 5px;
+  /*width: 15%;*/
+}
+#resetpassword:hover {
+  background: #658D5D;
+}
+#captchaImg{
+  display: block;
+  margin: 0 auto;
+}
+
+.disable-link{
+  pointer-events: none;
+  cursor: default;
+}
+
+.treasure-overlay-spinner-container{
+  z-index : 5;
+}
+
+treasure-overlay-spinner.treasure-overlay-spinner-active-remove{
+  transition: all 150ms ease-in 0s
+}
diff --git a/enduser/src/main/webapp/app/css/editUser.css b/enduser/src/main/webapp/app/css/editUser.css
new file mode 100644
index 0000000..10d1105
--- /dev/null
+++ b/enduser/src/main/webapp/app/css/editUser.css
@@ -0,0 +1,324 @@
+/*
+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.
+*/
+
+#form-container {
+  position: relative;
+  width: 100%;
+  margin: 0 auto;
+  text-align: center;
+}
+
+#form-container .page-header   { background: -moz-linear-gradient(top, #a9db80 0%, #96c56f 100%); /* FF3.6+ */
+                                 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a9db80), color-stop(100%,#96c56f)); /* Chrome,Safari4+ */
+                                 background: -webkit-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* Chrome10+,Safari5.1+ */
+                                 background: -o-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* Opera 11.10+ */
+                                 background: -ms-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* IE10+ */ 
+                                 margin: 1% 9%;
+                                 width: 83%; padding:10px; 
+                                 /* shadows and rounded borders */
+                                 -moz-border-radius: 5px;
+                                 -webkit-border-radius: 5px;
+                                 border-radius: 5px;
+                                 -moz-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
+                                 -webkit-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
+                                 box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
+}
+#form-container .breadcrumb-header   { 
+  margin: auto;
+  width: 80%; 
+  padding:10px; 
+}
+
+.signup-form {
+  text-align: left;
+  padding: 2%;
+}
+
+#attribute {
+  margin: auto;
+  max-width:480px;
+  padding: 10px;
+}
+
+#attribute-derived,
+#attribute-virtual {
+  padding: 0 155px;
+}
+
+.attribute-virtual-value-container {
+  margin-top: 2%;
+  list-style: none;
+  padding-right: 5%;
+}
+
+.attribute-virtual-value-field {
+  font-weight: 700;
+  padding: 6px 12px;
+  margin-bottom: 2%;
+}
+
+.minus{
+
+}
+
+.fileButton{
+  margin-top: 2%;
+}
+
+.upper-select {
+  padding-right: 71%;
+  padding-left: 18%;
+}
+
+.attribute-ui-select {
+  width: 100%;
+  /*margin-left: 20%;*/
+  list-style: none;
+}
+
+#previous {
+  background: -moz-linear-gradient(top, #a9db80 0%, #96c56f 100%); /* FF3.6+ */
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a9db80), color-stop(100%,#96c56f)); /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* Chrome10+,Safari5.1+ */
+  background: -o-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* Opera 11.10+ */
+  background: -ms-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* IE10+ */
+  float: left;
+  color: black;
+  /*width: 30%;*/
+}
+#previous:hover {
+  background: #658D5D;
+}
+
+#next{
+  background: -moz-linear-gradient(top, #a9db80 0%, #96c56f 100%); /* FF3.6+ */
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a9db80), color-stop(100%,#96c56f)); /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* Chrome10+,Safari5.1+ */
+  background: -o-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* Opera 11.10+ */
+  background: -ms-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* IE10+ */
+  margin-left: 5px;
+  float: right;
+  color: black;
+  /*width: 30%;*/
+}
+#next:hover {
+  background: #658D5D;
+}
+
+#save{
+  background: -moz-linear-gradient(top, #a9db80 0%, #96c56f 100%); /* FF3.6+ */
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a9db80), color-stop(100%,#96c56f)); /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* Chrome10+,Safari5.1+ */
+  background: -o-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* Opera 11.10+ */
+  background: -ms-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* IE10+ */
+  color: black;
+  margin-left: 5px;
+  /*width: 15%;*/
+}
+#save:hover {
+  background: #658D5D;
+}
+#cancel {
+  /*margin-top: 5%;*/
+  /*width: 15%;*/
+}
+
+#form-views { width:100%; }
+
+/* basic styling for entering and leaving */
+/* left and right to add to ensure full width: position:absolute; left:30px; right:30px; */
+#form-views.ng-enter,
+#form-views.ng-leave      { 
+    position: absolute;
+  transition:0.5s all ease-in; -moz-transition:0.5s all ease-in; -webkit-transition:0.5s all ease; 
+}
+
+/* enter animation */
+#form-views.ng-enter            { 
+  -webkit-animation:slideInRight 0.5s both ease;
+  -moz-animation:slideInRight 0.5s both ease;
+  animation:slideInRight 0.5s both ease; 
+}
+
+/* leave animation */
+#form-views.ng-leave            { 
+  position:absolute;
+  -webkit-animation:slideOutLeft 0.5s both ease;
+  -moz-animation:slideOutLeft 0.5s both ease;
+  animation:slideOutLeft 0.5s both ease;   
+}
+
+
+#datetime{
+  line-height: 34px;
+  float: left;
+  margin-top:35px;
+  padding: 0 3px 0px 0px;
+  display: inline-block !important;
+}
+
+#date{
+  position: relative;
+  display: table; 
+  border-collapse: separate;
+}
+
+#timepicker{
+  line-height: 34px; 
+  float: left; 
+  padding: 0 3px 0px 0px;
+}
+
+/** Button breadcrumb **/
+.btn-breadcrumb .btn:not(:last-child):after {
+  content: " ";
+  display: block;
+  width: 0;
+  height: 0;
+  border-top: 17px solid transparent;
+  border-bottom: 17px solid transparent;
+  border-left: 10px solid white;
+  position: absolute;
+  top: 50%;
+  margin-top: -17px;
+  left: 100%;
+  z-index: 3;
+}
+.btn-breadcrumb .btn:not(:last-child):before {
+  content: " ";
+  display: block;
+  width: 0;
+  height: 0;
+  border-top: 17px solid transparent;
+  border-bottom: 17px solid transparent;
+  border-left: 10px solid rgb(173, 173, 173);
+  position: absolute;
+  top: 50%;
+  margin-top: -17px;
+  margin-left: 1px;
+  left: 100%;
+  z-index: 3;
+}
+
+/** The Spacing **/
+.btn-breadcrumb .btn {
+  padding:6px 12px 6px 24px;
+}
+.btn-breadcrumb .btn:first-child {
+  padding:6px 6px 6px 10px;
+}
+.btn-breadcrumb .btn:last-child {
+  padding:6px 18px 6px 24px;
+}
+
+/** Default button **/
+.btn-breadcrumb .btn.btn-default:not(:last-child):after {
+  border-left: 10px solid #fff;
+}
+.btn-breadcrumb .btn.btn-default:not(:last-child):before {
+  border-left: 10px solid #ccc;
+}
+.btn-breadcrumb .btn.btn-default:hover:not(:last-child):after {
+  border-left: 10px solid #ebebeb;
+}
+.btn-breadcrumb .btn.btn-default:hover:not(:last-child):before {
+  border-left: 10px solid #adadad;
+}
+
+.btn-breadcrumb .btn.btn-default.active:not(:last-child):after {
+  border-left: 10px solid #e6e6e6;
+}
+
+.btn-breadcrumb .btn.btn-default.active {
+  box-shadow: 0 0px 0px rgba(0, 0, 0, 0.125)
+}
+
+.breadcrumb-disabled-link {
+  pointer-events: none;
+  cursor: default;
+}
+
+.text-validation-error{
+  color: #dd301b;
+  font-weight: 600;
+}
+/* ANIMATIONS
+============================================================================= */
+/* slide out to the left */
+@keyframes slideOutLeft {
+  to      { transform: translateX(-300%); }
+}
+@-moz-keyframes slideOutLeft {  
+  to      { -moz-transform: translateX(-300%); }
+}
+@-webkit-keyframes slideOutLeft {
+  to      { -webkit-transform: translateX(-300%); }
+}
+
+/* slide in from the right */
+@keyframes slideInRight {
+  from    { transform:translateX(300%); }
+  to      { transform: translateX(0); }
+}
+@-moz-keyframes slideInRight {
+  from    { -moz-transform:translateX(300%); }
+  to      { -moz-transform: translateX(0); }
+}
+@-webkit-keyframes slideInRight {
+  from    { -webkit-transform:translateX(300%); }
+  to      { -webkit-transform: translateX(0); }
+}
+
+.multivalue button{
+  float: right
+}
+.schema-type #date{
+  margin-top: 35px;
+}
+
+.multivalue input{
+  width: calc(100% - 70px);
+  margin-top: 10px
+}
+
+.multivalue input:disabled{
+  width: 100%;  
+}
+
+.multivalue button{
+  margin-top: 2px
+}
+
+.multivalue #datetime{
+  margin-top: 0px
+}
+
+#datetime input{
+  width: 100%;
+  margin-top: 0px
+}
+#timepicker input{
+  width: 50px;
+  margin-top: 0px
+}
+
+
+.multivalue #timepicker {
+  margin-top: -35px;
+}
diff --git a/enduser/src/main/webapp/app/css/login.css b/enduser/src/main/webapp/app/css/login.css
new file mode 100644
index 0000000..cc206e8
--- /dev/null
+++ b/enduser/src/main/webapp/app/css/login.css
@@ -0,0 +1,170 @@
+/*
+ * 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.
+ */
+
+body, html {
+  /*margin: 45px 0;*/
+  /*height: 100%;*/
+  background-repeat: no-repeat;
+  /*background-image: linear-gradient(rgb(104, 145, 162), #00a65a);*/
+  /*background-color: #00A65A;
+  height: 100%;
+  background-image: linear-gradient(#6891A2, #00A65A);*/
+}
+
+body{
+  margin: 45px 0;
+}
+
+/*#login-container {
+  position: relative;
+  width: 100%;
+  margin: 0 auto;
+  text-align: center;
+  background-color: #FFF;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+  -webkit-box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.65);
+  box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.65);
+}
+#login-container .row > div {
+  margin-bottom: 1em;
+}
+#login-container .row > div:last-child {
+  margin-bottom: 0;
+}
+#login-container #logo {
+  position: relative;
+  float: left;
+  margin-left: 15%;
+  border-top-right-radius: 100px;
+  border-top-left-radius: 100px;
+  border-bottom-right-radius: 100px;
+  border-bottom-left-radius: 100px;
+}
+
+#login-container #language{
+  padding: 0px;
+  height: 40px;
+}
+
+#login-container #signup-btn {
+  padding-top: 15px;
+  padding-bottom: 15px;
+}
+#login-container #signup-btn:hover {
+  background-color: #1d1d1d;
+  border-color: #181818;
+}*/
+
+.login-btn {
+  background: -moz-linear-gradient(top, #a9db80 0%, #96c56f 100%); /* FF3.6+ */
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a9db80), color-stop(100%,#96c56f)); /* Chrome,Safari4+ */
+  background: -webkit-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* Chrome10+,Safari5.1+ */
+  background: -o-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* Opera 11.10+ */
+  background: -ms-linear-gradient(top, #a9db80 0%,#96c56f 100%); /* IE10+ */
+  margin-top: 5px;
+  color: black;
+}
+.login-btn:hover {
+  background: #658D5D;
+}
+
+/*
+#login {
+  position: relative;
+  padding: 25px 25px 50px 25px;
+  margin-bottom: 1em;
+}
+#login #login-form {
+  margin-top: 2em;
+  margin-bottom: 2em;
+  text-align: left;
+}
+#login-form{
+  padding: 0 195px;
+  margin: 7%;
+}*/
+#languageContainer {
+  padding: 0 25px;
+}
+
+.logout{
+  float: right;
+}
+
+.card-container.card {
+    width: 350px;
+    padding: 40px 40px 0px;
+}
+
+.card {
+    background-color: #F7F7F7;
+    /* just in case there no content*/
+    padding: 20px 25px 30px;
+    margin: 0 auto 25px;
+    margin-top: 50px;
+    /* shadows and rounded borders */
+    -moz-border-radius: 2px;
+    -webkit-border-radius: 2px;
+    border-radius: 2px;
+    -moz-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
+    -webkit-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
+    box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
+}
+
+.login-logo {
+    width: 200px;
+    margin: 0px auto 10px;
+    display: block;
+}
+
+.form-signin input[type=password],
+.form-signin input[type=text],
+.form-signin button {
+    width: 100%;
+    display: block;
+    margin-bottom: 10px;
+    z-index: 1;
+    position: relative;
+    -moz-box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+}
+
+.form-control {
+    display: block;
+    width: 100%;
+    height: 34px;
+    padding: 6px 12px;
+    font-size: 14px;
+    line-height: 1.42857;
+    color: #555;
+    background-color: #FFF;
+    background-image: none;
+    border: 1px solid #CCC;
+    border-radius: 4px;
+    box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.075) inset;
+    transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s;
+}
+
+input[type="number"]{
+    padding-right: 0px !important
+}
\ No newline at end of file
diff --git a/enduser/src/main/webapp/app/img/ajax-loader.gif b/enduser/src/main/webapp/app/img/ajax-loader.gif
new file mode 100644
index 0000000..766cf24
--- /dev/null
+++ b/enduser/src/main/webapp/app/img/ajax-loader.gif
Binary files differ
diff --git a/enduser/src/main/webapp/app/img/busy.gif b/enduser/src/main/webapp/app/img/busy.gif
new file mode 100644
index 0000000..e77264f
--- /dev/null
+++ b/enduser/src/main/webapp/app/img/busy.gif
Binary files differ
diff --git a/enduser/src/main/webapp/app/img/favicon.png b/enduser/src/main/webapp/app/img/favicon.png
new file mode 100644
index 0000000..aa2f3e2
--- /dev/null
+++ b/enduser/src/main/webapp/app/img/favicon.png
Binary files differ
diff --git a/enduser/src/main/webapp/app/img/logo-green.png b/enduser/src/main/webapp/app/img/logo-green.png
new file mode 100644
index 0000000..c57b86c
--- /dev/null
+++ b/enduser/src/main/webapp/app/img/logo-green.png
Binary files differ
diff --git a/enduser/src/main/webapp/app/img/logo.png b/enduser/src/main/webapp/app/img/logo.png
new file mode 100644
index 0000000..f05105e
--- /dev/null
+++ b/enduser/src/main/webapp/app/img/logo.png
Binary files differ
diff --git a/enduser/src/main/webapp/app/index.html b/enduser/src/main/webapp/app/index.html
new file mode 100644
index 0000000..55b34a5
--- /dev/null
+++ b/enduser/src/main/webapp/app/index.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html>
+<!--
+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.
+-->
+<!--[if lt IE 7]>      <html lang="en" ng-app="myApp" class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
+<!--[if IE 7]>         <html lang="en" ng-app="myApp" class="no-js lt-ie9 lt-ie8"> <![endif]-->
+<!--[if IE 8]>         <html lang="en" ng-app="myApp" class="no-js lt-ie9"> <![endif]-->
+<!--[if gt IE 8]><!--> <html lang="en" ng-app="SyncopeEnduserApp" class="no-js"> <!--<![endif]-->
+  <head>
+    <meta charset="UTF-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+    <meta name="description" content=""/>
+    <meta name="viewport" content="width=device-width, initial-scale=1"/>
+
+    <title>Apache Syncope - EndUser</title>
+
+    <link rel="shortcut icon" href="img/favicon.png" type="image/png"/>
+
+    <link href="css/login.css" rel="stylesheet" type="text/css"/>
+    <link href="../webjars/jquery-ui/${jquery-ui.version}/jquery-ui.css" rel="stylesheet" type="text/css"/>
+    <link href="../webjars/bootstrap/${bootstrap.version}/css/bootstrap.min.css" rel="stylesheet" type="text/css"/>
+    <link href="../webjars/bootstrap-select/${bootstrap-select.version}/css/bootstrap-select.min.css" rel="stylesheet" type="text/css"/>
+    <link href="../webjars/font-awesome/${font-awesome.version}/css/font-awesome.min.css" rel="stylesheet" type="text/css"/>
+    <link href="../webjars/ionicons/${ionicons.version}/css/ionicons.min.css" rel="stylesheet" type="text/css"/>
+    <link href="../webjars/angular-ui-select/${angular-ui-select.version}/select.css" rel="stylesheet" type="text/css"/>
+    <link href="../webjars//kendo-ui-core/${kendo-ui-core.version}/styles/web/kendo.common.core.min.css" rel="stylesheet" type="text/css"/>
+    <link href="../webjars//kendo-ui-core/${kendo-ui-core.version}/styles/web/kendo.default.min.css" rel="stylesheet" type="text/css"/>
+    <link href="../webjars/angular-treasure-overlay-spinner/${angular-treasure-overlay-spinner.version}/dist/treasure-overlay-spinner.min.css" rel="stylesheet" type="text/css"/>
+    <link href="../webjars/ng-password-strength/${ng-password-strength.version}/dist/styles/main.css" rel="stylesheet" type="text/css">
+    <link href="../webjars/select2/${select2.version}/select2.css" rel="stylesheet"/>
+    <link href="css/app.css" rel="stylesheet" type="text/css"/>
+    <link href="css/login.css" rel="stylesheet" type="text/css"/>
+    <link href="css/editUser.css" rel="stylesheet" type="text/css"/>
+  </head>
+  <body ng-cloak >
+
+    <!--[if lt IE 7]>
+        <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
+    <![endif]-->
+
+    <span id="notifications" kendo-notification="notifications"></span>
+
+  <treasure-overlay-spinner active='spinner.active'>
+    <div ui-view ng-cloak ng-controller="ApplicationController" ng-init="initApplication()">      
+    </div>    
+  </treasure-overlay-spinner>
+
+  <script src="../webjars/jquery/${jquery.version}/jquery.js"></script>
+  <script src="../webjars/angular/${angular.version}/angular.js"></script>
+  <script src="../webjars/angular-ui-router/${angular-ui-router.version}/angular-ui-router.js"></script>
+  <script src="../webjars/angular-animate/${angular.version}/angular-animate.js"></script>
+  <script src="../webjars/angular-resource/${angular.version}/angular-resource.js"></script>
+  <script src="../webjars/angular-cookies/${angular.version}/angular-cookies.js"></script>
+  <script src="../webjars/angular-sanitize/${angular.version}/angular-sanitize.js"></script>
+  <script src="../webjars/angular-ui-bootstrap/${angular-ui-bootstrap.version}/ui-bootstrap-tpls.js"></script>
+  <script src="../webjars/angular-ui-select/${angular-ui-select.version}/select.js"></script>
+  <script src="../webjars/kendo-ui-core/${kendo-ui-core.version}/js/kendo.ui.core.min.js"></script>
+  <script src="../webjars/kendo-ui-core/${kendo-ui-core.version}/js/kendo.notification.min.js"></script>
+  <script src="../webjars/kendo-ui-core/${kendo-ui-core.version}/js/kendo.angular.js"></script>
+  <script src="../webjars/angular-treasure-overlay-spinner/${angular-treasure-overlay-spinner.version}/dist/treasure-overlay-spinner.min.js"></script>
+  <script src="../webjars/ng-password-strength/${ng-password-strength.version}/dist/scripts/ng-password-strength.min.js"></script>
+  <script type="text/javascript" src="../webjars/bootstrap-select/${bootstrap-select.version}/js/bootstrap-select.min.js"></script>
+  <script src="../webjars/FileSaver.js/${fileSaver.version}/FileSaver.js"></script>
+  <script src="../webjars/lodash/${lodash.version}/lodash.min.js"></script>
+  <script src="../webjars/angular-translate/${angular-translate.version}/angular-translate.js"></script>
+  <script src="../webjars/angular-translate-loader-partial/${angular-translate.version}/angular-translate-loader-partial.js"></script>
+  <script src="../webjars/angular-translate-storage-cookie/${angular-translate.version}/angular-translate-storage-cookie.js"></script>
+  <script src="../webjars/bootstrap-fileinput/${bootstrap-fileinput.version}/js/fileinput.js"></script>
+
+  <!--main angular application-->
+  <script src="js/app.js"></script>
+  <!--services-->
+  <script src="js/services/authService.js"></script>
+  <script src="js/services/userSelfService.js"></script>
+  <script src="js/services/schemaService.js"></script>
+  <script src="js/services/realmService.js"></script>
+  <script src="js/services/securityQuestionService.js"></script>
+  <script src="js/services/infoService.js"></script>
+  <script src="js/services/resourceService.js"></script>
+  <script src="js/services/groupService.js"></script>
+  <script src="js/services/anyService.js"></script>
+  <!--controllers-->
+  <script src="js/controllers/HomeController.js"></script>
+  <script src="js/controllers/LoginController.js"></script>
+  <script src="js/controllers/UserController.js"></script>
+  <script src="js/controllers/TailController.js"></script>
+  <!--directives-->
+  <script src="js/directives/dynamicPlainAttribute.js"></script>
+  <script src="js/directives/dynamicDerivedAttribute.js"></script>
+  <script src="js/directives/dynamicVirtualAttribute.js"></script>
+  <script src="js/directives/dynamicPlainAttributes.js"></script>
+  <script src="js/directives/dynamicDerivedAttributes.js"></script>
+  <script src="js/directives/dynamicVirtualAttributes.js"></script>
+  <script src="js/directives/navigationButtons.js"></script>
+  <script src="js/directives/loader.js"></script>
+  <script src="js/directives/captcha.js"></script>
+  <script src="js/directives/resources.js"></script>
+  <script src="js/directives/groups.js"></script>
+  <script src="js/directives/auxClasses.js"></script>
+  <script src="js/directives/validate.js"></script>
+  <script src="js/directives/validationMessage.js"></script>
+  <script src="js/directives/fileInput.js"></script>
+  <!--validator-->
+  <script src="js/validator/validationRules.js"></script>
+  <script src="js/validator/validationExecutor.js"></script>
+  <!--filters-->
+  <script src="js/filters/propsFilter.js"></script>
+  <!--util-->
+  <script src="js/util/userUtil.js"></script>
+  <script src="js/util/genericUtil.js"></script>
+</body>
+</html>
diff --git a/enduser/src/main/webapp/app/js/app.js b/enduser/src/main/webapp/app/js/app.js
new file mode 100644
index 0000000..12c814c
--- /dev/null
+++ b/enduser/src/main/webapp/app/js/app.js
@@ -0,0 +1,443 @@
+/* global $templateCache */
+
+/**
+ 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.
+ **/
+
+'use strict';
+angular.module('home', []);
+angular.module('login', []);
+angular.module('language', []);
+angular.module('self', []);
+angular.module('info', []);
+// Declare app level module which depends on views, and components
+var app = angular.module('SyncopeEnduserApp', [
+  'ui.router',
+  'ui.bootstrap',
+  'ui.select',
+  'ngSanitize',
+  'ngAnimate',
+  'ngResource',
+  'treasure-overlay-spinner',
+  'ngPasswordStrength',
+  'kendo.directives',
+  'home',
+  'login',
+  'language',
+  'self',
+  'info',
+  'ngCookies',
+  'pascalprecht.translate'
+]);
+
+app.config(['$stateProvider', '$urlRouterProvider', '$httpProvider', '$translateProvider', '$translatePartialLoaderProvider',
+  function ($stateProvider, $urlRouterProvider, $httpProvider, $translateProvider, $translatePartialLoaderProvider) {
+
+    $translatePartialLoaderProvider.addPart('static');
+    $translatePartialLoaderProvider.addPart('dynamic');
+    $translateProvider.useLoader('$translatePartialLoader', {
+      urlTemplate: 'languages/{lang}/{part}.json'
+    })
+            .preferredLanguage('en')
+            .useCookieStorage();
+
+    // route configuration
+    $stateProvider
+            .state('home', {
+              url: '/',
+              templateUrl: 'views/self.html'
+            })
+            .state('self', {
+              url: '/self',
+              templateUrl: 'views/self.html'
+            })
+            .state('user-self-update', {
+              url: '/user-self-update',
+              templateUrl: 'views/home.html',
+              controller: 'HomeController',
+              resolve: {
+                'authenticated': ['AuthService',
+                  function (AuthService) {
+                    return AuthService.islogged();
+                  }]
+              }
+            })
+            .state('create', {
+              url: '/self/create',
+              templateUrl: 'views/editUser.html'
+            })
+            // nested states 
+            // each of these sections will have their own view
+            // url will be nested (/self/create)
+            .state('create.credentials', {
+              url: '/credentials',
+              templateUrl: 'views/user-credentials.html'
+            })
+            .state('create.groups', {
+              url: '/groups',
+              templateUrl: 'views/user-groups.html'
+            })
+            .state('create.plainSchemas', {
+              url: '/plainSchemas',
+              templateUrl: 'views/user-plain-schemas.html'
+            })
+            .state('create.derivedSchemas', {
+              url: '/derivedSchemas',
+              templateUrl: 'views/user-derived-schemas.html'
+            })
+            .state('create.virtualSchemas', {
+              url: '/virtualSchemas',
+              templateUrl: 'views/user-virtual-schemas.html'
+            })
+            .state('create.resources', {
+              url: '/resources',
+              templateUrl: 'views/user-resources.html'
+            })
+            .state('create.finish', {
+              url: '/finish',
+              templateUrl: 'views/user-form-finish.html'
+            })
+            .state('success', {
+              url: '/success',
+              templateUrl: 'views/success.html'
+            })
+            .state('update', {
+              url: '/self/update',
+              templateUrl: 'views/editUser.html',
+              resolve: {
+                'authenticated': ['AuthService',
+                  function (AuthService) {
+                    return AuthService.islogged();
+                  }]
+              }
+            })
+            // nested states 
+            // each of these sections will have their own view
+            // url will be nested (/self/update)
+            .state('update.credentials', {
+              url: '/credentials',
+              templateUrl: 'views/user-credentials.html',
+              resolve: {
+                'authenticated': ['AuthService',
+                  function (AuthService) {
+                    return AuthService.islogged();
+                  }]
+              }
+            })
+            .state('update.plainSchemas', {
+              url: '/plainSchemas',
+              templateUrl: 'views/user-plain-schemas.html',
+              resolve: {
+                'authenticated': ['AuthService',
+                  function (AuthService) {
+                    return AuthService.islogged();
+                  }]
+              }
+            })
+            .state('update.derivedSchemas', {
+              url: '/derivedSchemas',
+              templateUrl: 'views/user-derived-schemas.html',
+              resolve: {
+                'authenticated': ['AuthService',
+                  function (AuthService) {
+                    return AuthService.islogged();
+                  }]
+              }
+            })
+            .state('update.virtualSchemas', {
+              url: '/virtualSchemas',
+              templateUrl: 'views/user-virtual-schemas.html',
+              resolve: {
+                'authenticated': ['AuthService',
+                  function (AuthService) {
+                    return AuthService.islogged();
+                  }]
+              }
+            })
+            .state('update.groups', {
+              url: '/groups',
+              templateUrl: 'views/user-groups.html',
+              resolve: {
+                'authenticated': ['AuthService',
+                  function (AuthService) {
+                    return AuthService.islogged();
+                  }]
+              }
+            })
+            .state('update.resources', {
+              url: '/resources',
+              templateUrl: 'views/user-resources.html',
+              resolve: {
+                'authenticated': ['AuthService',
+                  function (AuthService) {
+                    return AuthService.islogged();
+                  }]
+              }
+            })
+            .state('update.finish', {
+              url: '/finish',
+              templateUrl: 'views/user-form-finish.html',
+              resolve: {
+                'authenticated': ['AuthService',
+                  function (AuthService) {
+                    return AuthService.islogged();
+                  }]
+              }
+            })
+            .state('passwordreset', {
+              url: '/passwordreset',
+              templateUrl: 'views/passwordreset.html'
+            })
+            .state('confirmpasswordreset', {
+              url: '/confirmpasswordreset?token',
+              templateUrl: 'views/confirmpasswordreset.html'
+            })
+            .state('mustchangepassword', {
+              url: '/mustchangepassword',
+              templateUrl: 'views/mustchangepassword.html'
+            });
+    // catch all other routes
+    // send users to the home page 
+    $urlRouterProvider.otherwise('/');
+    // HTTP service configuration
+    $httpProvider.defaults.withCredentials = true;
+    $httpProvider.defaults.xsrfCookieName = 'XSRF-TOKEN';
+    $httpProvider.defaults.xsrfHeaderName = 'X-XSRF-TOKEN';
+    //SYNCOPE-780
+    $httpProvider.defaults.headers.common["If-Modified-Since"] = "0";
+    $httpProvider.interceptors.push(function ($q, $rootScope, $location) {
+      return {
+        'request': function (config, a, b) {
+          //if the url is an html, we're changing page
+          if (config.url.indexOf('.html', config.url.length - 5) === -1) {
+            $rootScope.$broadcast("xhrStarted");
+            var separator = config.url.indexOf('?') === -1 ? '?' : '&';
+            config.url = config.url + separator + 'noCache=' + new Date().getTime();
+          }
+          $rootScope.spinner.on();
+          return config || $q.when(config);
+        },
+        'response': function (response) {
+          //$http.pendingRequests.length
+          $rootScope.spinner.off();
+          return response || $q.when(response);
+        },
+        'responseError': function (response) {
+          $rootScope.spinner.off();
+          if (response.config.url.indexOf("acceptError=true") === -1) {
+            var status = response.status;
+            if (status === 401) {
+              console.error("ERROR ", status);
+            }
+            if (status === 403) {
+              console.error("UNAUTHORIZED ", status);
+            }
+            if (status === 400 || status === 404 || status === 412 || status === 500) {
+              console.error("GENERIC ERROR ", status);
+            }
+          }
+          return $q.reject(response);
+        }
+      };
+    });
+  }]);
+app.run(['$rootScope', '$location', '$state', 'AuthService',
+  function ($rootScope, $location, $state, AuthService) {
+    // main program
+    // keep user logged in after page refresh
+    //If the route change failed due to authentication error, redirect them out
+    $rootScope.endReached = false;
+
+    $rootScope.$on('$routeChangeError', function (event, current, previous, rejection) {
+      if (rejection === 'Not Authenticated') {
+        $location.path('/self');
+      }
+    });
+    $rootScope.$on('$stateChangeSuccess', function (event, toState) {
+      if (toState.name === 'create') {
+        $state.go('create.credentials');
+      } else if (toState.name === 'update') {
+        $state.go('update.credentials');
+      } else if (toState.name.indexOf("update") > -1) {
+        AuthService.islogged().then(function (response) {
+          if (response === "true") {
+            $state.go(toState);
+          } else {
+            $state.go('self');
+          }
+        }, function (response) {
+          console.error("not logged");
+          $state.go('self');
+        }
+        );
+
+      } else if (toState.name === 'home' || toState.name === 'self') {
+        AuthService.islogged().then(function (response) {
+          if (response === "true") {
+            $state.go('update.credentials');
+          } else {
+            $state.go('self');
+          }
+        }, function (response) {
+          console.error("not logged");
+          $state.go('self');
+        }
+        );
+        //enable "finish" button on every page in create mode
+      } else if (toState.name === 'create.finish') {
+        $rootScope.endReached = true;
+      } else {
+        $state.go(toState);
+      }
+    });
+    $rootScope.spinner = {
+      active: false,
+      on: function () {
+        this.active = true;
+      },
+      off: function () {
+        this.active = false;
+      }
+    };
+  }]);
+app.controller('ApplicationController', ['$scope', '$rootScope', 'InfoService', function ($scope, $rootScope,
+          InfoService) {
+    // get syncope info and set cookie, first call
+    $scope.initApplication = function () {
+      $rootScope.selfRegAllowed = false;
+      $rootScope.pwdResetAllowed = false;
+      $rootScope.version = "";
+      $rootScope.pwdResetRequiringSecurityQuestions = false;
+      $rootScope.captchaEnabled = false;
+      //setting default validation
+      $rootScope.validationEnabled = true;
+      // call info service (info settings are initialized every time an user reload the login page)
+      InfoService.getInfo().then(
+              function (response) {
+                $rootScope.pwdResetAllowed = response.pwdResetAllowed;
+                $rootScope.selfRegAllowed = response.selfRegAllowed;
+                $rootScope.version = response.version;
+                $rootScope.pwdResetRequiringSecurityQuestions = response.pwdResetRequiringSecurityQuestions;
+                $rootScope.captchaEnabled = response.captchaEnabled;
+              },
+              function (response) {
+                console.error("Something went wrong while accessing info resource", response);
+              });
+      $rootScope.isSelfRegAllowed = function () {
+        return $rootScope.selfRegAllowed === true;
+      };
+      $rootScope.isPwdResetAllowed = function () {
+        return $rootScope.pwdResetAllowed === true;
+      };
+      $rootScope.getVersion = function () {
+        return $rootScope.version;
+      };
+      //Notification management           
+      $scope.notification = $('#notifications').kendoNotification().data("kendoNotification");
+      $scope.notification.setOptions({stacking: "down"});
+      $scope.notification.options.position["top"] = 20;
+      $scope.showSuccess = function (message, component) {
+        if (!$scope.notificationExists(message)) {
+          //forcing scrollTo since kendo doesn't disable scrollTop if pinned is true
+          window.scrollTo(0, 0);
+          component.options.autoHideAfter = 3000;
+          component.show(message, "success");
+        }
+      };
+      $scope.showError = function (message, component) {
+        if (!$scope.notificationExists(message)) {
+          //forcing scrollTo since kendo doesn't disable scrollTop if pinned is true
+          window.scrollTo(0, 0);
+          component.options.autoHideAfter = 0;
+          component.show(message, "error");
+        }
+      };
+      $scope.hideError = function (message, component) {
+        var popup;
+        if (popup = $scope.notificationExists(message)) {
+          popup.hide = true;
+          popup.close();
+        }
+      };
+      $scope.notificationExists = function (message) {
+        var result = false;
+        if ($scope.notification !== null) {
+          var pendingNotifications = $scope.notification.getNotifications();
+          pendingNotifications.each(function (idx, element) {
+            var popup = $(element).data("kendoPopup");
+            if (!popup.hide && popup.wrapper.html().indexOf(message) > -1) {
+              result = popup;
+              return false; //breaking the each and storing the real result
+            }
+          });
+        }
+        return result;
+      };
+      $scope.hideNotifications = function (timer) {
+        if ($scope.notification !== null) {
+          var pendingNotifications = $scope.notification.getNotifications();
+          if (timer && timer > 0) {
+            setTimeout(function () {
+              pendingNotifications.each(function (idx, element) {
+                var popup = $(element).data("kendoPopup");
+                if (popup) {
+                  popup.hide = true;
+                  popup.close();
+                }
+              });
+            }, timer);
+          } else {
+            pendingNotifications.each(function (idx, element) {
+              var popup = $(element).data("kendoPopup");
+              if (popup) {
+                popup.hide = true;
+                //we should destroy the message immediately
+                popup.destroy();
+              }
+            });
+          }
+        }
+      };
+      //Intercepting location change event
+      $rootScope.$on("$locationChangeStart", function (event, next, current) {
+        //When a location changes, old notifications should be removed
+        $scope.hideNotifications(3000);
+      });
+      //Intercepting xhr start event
+      $scope.$on('xhrStarted', function (event, next, current) {
+        $scope.hideNotifications(0);
+      });
+      //Intercepting hide popup errors event
+      $scope.$on('hideErrorMessage', function (event, popupMessage) {
+        $scope.hideError(popupMessage, $scope.notification);
+      });
+      //wizard active element
+      $scope.wizard = {
+        "credentials": {url: "/credentials"},
+        "groups": {url: "/groups"},
+        "plainSchemas": {url: "/plainSchemas"},
+        "derivedSchemas": {url: "/derivedSchemas"},
+        "virtualSchemas": {url: "/virtualSchemas"},
+        "resources": {url: "/resources"},
+        "finish": {url: "/finish"}
+      };
+      $scope.clearCache = function () {
+        $templateCache.removeAll();
+      };
+    };
+  }]);
diff --git a/enduser/src/main/webapp/app/js/controllers/HomeController.js b/enduser/src/main/webapp/app/js/controllers/HomeController.js
new file mode 100644
index 0000000..0470587
--- /dev/null
+++ b/enduser/src/main/webapp/app/js/controllers/HomeController.js
@@ -0,0 +1,23 @@
+/**
+ 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.
+ **/
+
+'use strict';
+
+angular.module("home").controller("HomeController", ['$scope', '$http', '$location', function ($scope, $http, $location) {
+  }]);
\ No newline at end of file
diff --git a/enduser/src/main/webapp/app/js/controllers/LoginController.js b/enduser/src/main/webapp/app/js/controllers/LoginController.js
new file mode 100644
index 0000000..75d41a6
--- /dev/null
+++ b/enduser/src/main/webapp/app/js/controllers/LoginController.js
@@ -0,0 +1,97 @@
+/* 
+ * 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.
+ */
+
+'use strict';
+angular.module("login").controller("LoginController", ['$scope', '$http', '$location',
+  'AuthService', '$translate', '$translatePartialLoader', function ($scope, $http,
+          $location, AuthService, $translate) {
+
+    $scope.credentials = {
+      username: '',
+      password: '',
+      errorMessage: ''
+    };
+    $scope.languages = {
+      availableLanguages: [
+        {id: '1', name: 'Italiano', code: 'it'},
+        {id: '2', name: 'English', code: 'en'},
+        {id: '3', name: 'Deutsch', code: 'de'}
+      ],
+      selectedLanguage: {id: '2', name: 'English', code: 'en'}
+    };
+    $scope.login = function (credentials) {
+
+      AuthService.login($scope.credentials).then(function (user) {
+        console.info("Login success for: ", user);
+        // reset error message
+        $scope.credentials.errorMessage = '';
+        // got to update page
+        $location.path("/self/update");
+      }, function (response) {
+        console.info("Login failed for: ", response);
+        var errorMessage;
+        // parse error response 
+        if (response !== undefined) {
+          errorMessage = response.split("ErrorMessage{{")[1];
+          errorMessage = errorMessage.split("}}")[0];
+        }
+        $scope.credentials.errorMessage = "Login failed: " + errorMessage;
+        $scope.showError($scope.credentials.errorMessage, $scope.notification);
+      });
+    };
+    $scope.logout = function () {
+      AuthService.logout().then(function (response) {
+        console.info("Logout successfully");
+      }, function (response) {
+        console.info("Logout failed: ", response);
+      });
+    };
+    $scope.islogged = function () {
+      AuthService.islogged().then(function (response) {
+        console.debug("user login status detected", response);
+        return response.data === true;
+      }, function (response) {
+        console.error("error retrieving user login status", response);
+      });
+    };
+    $scope.selfCreate = function () {
+      $location.path("/self/create");
+    };
+    $scope.passwordReset = function () {
+      $location.path("/passwordreset");
+    };
+    $scope.errorAPI = function () {
+      $http.get("/syncope-enduser/api/error").success(function (data) {
+        console.debug("errorAPI response: ", data);
+      });
+    };
+    $scope.sampleAPI = function () {
+      $http.get("/syncope-enduser/api/user-self").success(function (data) {
+        console.debug("sampleAPI response: ", data);
+      });
+    };
+    $scope.schemaAPI = function () {
+      $http.get("/syncope-enduser/api/schema").success(function (data) {
+        console.debug("schemaAPI response: ", data);
+      });
+    };
+    $scope.switchLanguage = function () {
+      $translate.use($scope.languages.selectedLanguage.code);
+    };
+  }]);
diff --git a/enduser/src/main/webapp/app/js/controllers/TailController.js b/enduser/src/main/webapp/app/js/controllers/TailController.js
new file mode 100644
index 0000000..fe880a3
--- /dev/null
+++ b/enduser/src/main/webapp/app/js/controllers/TailController.js
@@ -0,0 +1,29 @@
+/* 
+ * 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.
+ */
+
+'use strict';
+
+angular.module("self")
+        .controller("TailController", ['$scope', '$rootScope', '$location',
+                function ($scope, $rootScope, $location) {
+                  $scope.redirect = function () {
+                    $location.path('/self');
+                    $rootScope.endReached = false;
+                  };
+                }]);
diff --git a/enduser/src/main/webapp/app/js/controllers/UserController.js b/enduser/src/main/webapp/app/js/controllers/UserController.js
new file mode 100644
index 0000000..2366311
--- /dev/null
+++ b/enduser/src/main/webapp/app/js/controllers/UserController.js
@@ -0,0 +1,535 @@
+/* 
+ * 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&quo