You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2016/04/19 15:01:55 UTC

[08/24] syncope git commit: [SYNCOPE-822] UUID keys

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/resources/domains/TwoContent.xml b/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
index 14c65a8..b9b18a8 100644
--- a/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
+++ b/core/persistence-jpa/src/test/resources/domains/TwoContent.xml
@@ -18,92 +18,110 @@ specific language governing permissions and limitations
 under the License.
 -->
 <dataset>
-  <Realm id="1" name="/"/>
+  <Realm key="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 key="cd64d66f-6fff-4008-b966-a06b1cc1436d"/>
 
-  <PlainSchema name="password.cipher.algorithm" type="String"
+  <PlainSchema key="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 key="56db89b9-119e-4923-a16e-f42823b90c66" 
+              owner_key="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_key="password.cipher.algorithm"/>
+  <CPlainAttrValue key="870323e8-8db6-4a64-b512-15f9fa094905" 
+                   attribute_key="56db89b9-119e-4923-a16e-f42823b90c66" stringValue="SHA1"/>
 
-  <PlainSchema name="token.length" type="Long"
+  <PlainSchema key="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 key="58977caa-dcf7-4ae3-8591-7e3d0a395200"
+              owner_key="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_key="token.length"/>
+  <CPlainAttrValue key="372e28e0-3af1-4774-b668-81aa84903b75"
+                   attribute_key="58977caa-dcf7-4ae3-8591-7e3d0a395200" longValue="256"/>
 
-  <PlainSchema name="token.expireTime" type="Long"
+  <PlainSchema key="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 key="01f69abd-df85-4e1b-bb88-ad570594e045"
+              owner_key="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_key="token.expireTime"/>
+  <CPlainAttrValue key="963970cf-4af6-46bb-875b-a1b758ac8d05"
+                   attribute_key="01f69abd-df85-4e1b-bb88-ad570594e045" longValue="60"/>
 
-  <PlainSchema name="selfRegistration.allowed" type="Boolean"
+  <PlainSchema key="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 key="7b19cefa-d606-477c-8431-c9464f53fe8b"
+              owner_key="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_key="selfRegistration.allowed"/>
+  <CPlainAttrValue key="c8b9a0f1-0168-4e2a-95b8-4819fc70e620"
+                   attribute_key="7b19cefa-d606-477c-8431-c9464f53fe8b" booleanValue="1"/>
 
-  <PlainSchema name="passwordReset.allowed" type="Boolean"
+  <PlainSchema key="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 key="dc35cc97-6ed9-4bb2-bb3b-509f4cd8f3d3"
+              owner_key="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_key="passwordReset.allowed"/>
+  <CPlainAttrValue key="b1ecea41-ab7c-4dd3-9e3e-b6baf0f98046"
+                   attribute_key="dc35cc97-6ed9-4bb2-bb3b-509f4cd8f3d3" booleanValue="1"/>
 
-  <PlainSchema name="passwordReset.securityQuestion" type="Boolean"
+  <PlainSchema key="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"/>
-
-  <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"/>
+  <CPlainAttr key="e5a712ad-53fd-4102-ba55-fb45caed5f7b"
+              owner_key="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_key="passwordReset.securityQuestion"/>
+  <CPlainAttrValue key="b5e8e79d-8039-4318-9698-fe5e181ebe98"
+                   attribute_key="e5a712ad-53fd-4102-ba55-fb45caed5f7b" booleanValue="1"/>
+
+  <PlainSchema key="authentication.statuses" type="String" multivalue="1" uniqueConstraint="0" readonly="0"/>
+  <CPlainAttr key="888ae8e1-a295-4ee2-a15e-31dbf6dfc3f9"
+              owner_key="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_key="authentication.statuses"/>
+  <CPlainAttrValue key="4b8e7d2b-f527-43a3-a2e2-5530dcab2f52"
+                   attribute_key="888ae8e1-a295-4ee2-a15e-31dbf6dfc3f9" stringValue="created"/>
+  <CPlainAttrValue key="f0c89f2c-ea87-4c95-a1cf-142bf6e6f523"
+                   attribute_key="888ae8e1-a295-4ee2-a15e-31dbf6dfc3f9" stringValue="active"/>
 
   <!-- Save user login date upon successful authentication -->
-  <PlainSchema name="log.lastlogindate" type="Boolean"
+  <PlainSchema key="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 key="9891c0a7-27ee-4215-9eea-ca32e580b4e4"
+              owner_key="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_key="log.lastlogindate"/>
+  <CPlainAttrValue key="162dd874-0417-4bb9-9724-db1ff2952dd1"
+                   attribute_key="9891c0a7-27ee-4215-9eea-ca32e580b4e4" booleanValue="1"/>
 
-  <PlainSchema name="tasks.interruptMaxRetries" type="Long"
+  <PlainSchema key="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 key="c2b9ca96-c6ef-433d-8287-0e0cfd0ad0db"
+              owner_key="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_key="tasks.interruptMaxRetries"/>
+  <CPlainAttrValue key="5dc3f4e3-ff9f-4558-a9ac-15336b63a2ad"
+                   attribute_key="c2b9ca96-c6ef-433d-8287-0e0cfd0ad0db" longValue="20"/>
+  
   <!-- Return hashed password values when reading users -->
-  <PlainSchema name="return.password.value" type="Boolean"
+  <PlainSchema key="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 key="bcfd7efc-0605-4b5e-b4bb-85c1d5f6493a"
+              owner_key="cd64d66f-6fff-4008-b966-a06b1cc1436d" schema_key="return.password.value"/>
+  <CPlainAttrValue key="e5fa94db-b524-4309-908d-8198d0b3f779"
+                   attribute_key="bcfd7efc-0605-4b5e-b4bb-85c1d5f6493a" booleanValue="0"/>
   
-  <AnyType name="USER" kind="USER"/>
-  <AnyTypeClass name="BaseUser"/>
-  <AnyType_AnyTypeClass anyType_name="USER" anyTypeClass_name="BaseUser"/>
+  <AnyType key="USER" kind="USER"/>
+  <AnyTypeClass key="BaseUser"/>
+  <AnyType_AnyTypeClass anyType_key="USER" anyTypeClass_key="BaseUser"/>
 
-  <AnyType name="GROUP" kind="GROUP"/>
+  <AnyType key="GROUP" kind="GROUP"/>
   
   <!-- For usage with admin console -->
-  <PlainSchema name="admin.user.layout" type="String"
+  <PlainSchema key="admin.user.layout" type="String"
                mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="self.user.layout" type="String"
+  <PlainSchema key="self.user.layout" type="String"
                mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="admin.group.layout" type="String"
+  <PlainSchema key="admin.group.layout" type="String"
                mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="self.group.layout" type="String"
+  <PlainSchema key="self.group.layout" type="String"
                mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="admin.membership.layout" type="String"
+  <PlainSchema key="admin.membership.layout" type="String"
                mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-  <PlainSchema name="self.membership.layout" type="String"
+  <PlainSchema key="self.membership.layout" type="String"
                mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
         
-  <PlainSchema name="email" type="String" anyTypeClass_name="BaseUser"
+  <PlainSchema key="email" type="String" anyTypeClass_key="BaseUser"
                mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
                validatorClass="org.apache.syncope.core.persistence.jpa.attrvalue.validation.EmailAddressValidator"/>
   
   <!-- Password reset notifications -->
-  <MailTemplate name="requestPasswordReset"
-                  textTemplate="Hi,
+  <MailTemplate key="requestPasswordReset"
+                textTemplate="Hi,
 a password reset was request for ${user.getUsername()}.
 
 In order to complete this request, you need to visit this link:
@@ -113,7 +131,7 @@ http://localhost:9080/syncope-console/?pwdResetToken=${input.get(0).replaceAll('
 If you did not request this reset, just ignore the present e-mail.
 
 Best regards."
-                  htmlTemplate="&lt;html&gt;
+                htmlTemplate="&lt;html&gt;
 &lt;body&gt;
 &lt;p&gt;Hi,
 a password reset was request for ${user.getUsername()}.&lt;/p&gt;
@@ -126,7 +144,7 @@ a password reset was request for ${user.getUsername()}.&lt;/p&gt;
 &lt;p&gt;Best regards.&lt;/p&gt;
 &lt;/body&gt;
 &lt;/html&gt;"/>
-  <MailTemplate name="confirmPasswordReset"
+  <MailTemplate key="confirmPasswordReset"
                 textTemplate="Hi,
 we are happy to inform you that the password request was execute successfully for your account.
 
@@ -140,25 +158,25 @@ we are happy to inform you that the password request was execute successfully fo
 &lt;/body&gt;
 &lt;/html&gt;"/>
 
-  <Notification id="1" active="1" recipientAttrName="email" recipientAttrType="UserPlainSchema" selfAsRecipient="1" 
-                sender="admin@syncope.apache.org" subject="Password Reset request" template_name="requestPasswordReset" 
+  <Notification key="c74b4616-9c63-4350-b4bf-ae0077b1ae6a" active="1" recipientAttrName="email" recipientAttrType="UserPlainSchema" selfAsRecipient="1" 
+                sender="admin@syncope.apache.org" subject="Password Reset request" template_key="requestPasswordReset" 
                 traceLevel="FAILURES"/> 
-  <AnyAbout id="1" anyType_name="USER" notification_id="1" filter="token!=$null"/>
-  <Notification_events Notification_id="1" event="[CUSTOM]:[]:[]:[requestPasswordReset]:[SUCCESS]"/>
+  <AnyAbout key="0d4e37a1-a4f4-4865-afcb-4be01da3da53" anyType_key="USER" notification_key="c74b4616-9c63-4350-b4bf-ae0077b1ae6a" filter="token!=$null"/>
+  <Notification_events notification_key="c74b4616-9c63-4350-b4bf-ae0077b1ae6a" 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_name="confirmPasswordReset" 
+  <Notification key="71769807-7f74-4dc3-ba61-e4a7a00eb8ad" active="1" recipientAttrName="email" recipientAttrType="UserPlainSchema" selfAsRecipient="1" 
+                sender="admin@syncope.apache.org" subject="Password Reset successful" template_key="confirmPasswordReset" 
                 traceLevel="FAILURES"/> 
-  <Notification_events Notification_id="2" event="[CUSTOM]:[]:[]:[confirmPasswordReset]:[SUCCESS]"/>
+  <Notification_events notification_key="71769807-7f74-4dc3-ba61-e4a7a00eb8ad" event="[CUSTOM]:[]:[]:[confirmPasswordReset]:[SUCCESS]"/>
 
-  <ConnInstance id="100" bundleName="net.tirasa.connid.bundles.ldap" displayName="LDAP"
+  <ConnInstance key="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":"jav
 a.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":"vlvSo
 rtAttribute","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 m
 ultiple 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.S
 tring;","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 oth
 er 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":"passwordDecryptionIn
 itializationVector","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":fals
 e,"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},"overrida
 ble":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 c
 hange 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},"overrida
 ble":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_key="b7ea96c3-c633-488b-98a0-b52ac35850f7" capability="CREATE"/>
+  <ConnInstance_capabilities connInstance_key="b7ea96c3-c633-488b-98a0-b52ac35850f7" capability="UPDATE"/>
+  <ConnInstance_capabilities connInstance_key="b7ea96c3-c633-488b-98a0-b52ac35850f7" capability="DELETE"/>
+  <ConnInstance_capabilities ConnInstance_key="b7ea96c3-c633-488b-98a0-b52ac35850f7" capability="SEARCH"/>
   
 </dataset>

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AnyObjectProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AnyObjectProvisioningManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AnyObjectProvisioningManager.java
index df9a204..1670c68 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AnyObjectProvisioningManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/AnyObjectProvisioningManager.java
@@ -26,5 +26,5 @@ import org.apache.syncope.common.lib.to.PropagationStatus;
 
 public interface AnyObjectProvisioningManager extends ProvisioningManager<AnyObjectTO, AnyObjectPatch> {
 
-    List<PropagationStatus> provision(Long key, Collection<String> resources, boolean nullPriorityAsync);
+    List<PropagationStatus> provision(String key, Collection<String> resources, boolean nullPriorityAsync);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/GroupProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/GroupProvisioningManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/GroupProvisioningManager.java
index 3aae89f..9a91668 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/GroupProvisioningManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/GroupProvisioningManager.java
@@ -29,9 +29,12 @@ import org.apache.syncope.common.lib.to.GroupTO;
 
 public interface GroupProvisioningManager extends ProvisioningManager<GroupTO, GroupPatch> {
 
-    Pair<Long, List<PropagationStatus>> create(
-            GroupTO groupTO, Map<Long, String> groupOwnerMap, Set<String> excludedResources, boolean nullPriorityAsync);
+    Pair<String, List<PropagationStatus>> create(
+            GroupTO groupTO,
+            Map<String, String> groupOwnerMap,
+            Set<String> excludedResources,
+            boolean nullPriorityAsync);
 
-    List<PropagationStatus> provision(Long key, Collection<String> resources, boolean nullPriorityAsync);
+    List<PropagationStatus> provision(String key, Collection<String> resources, boolean nullPriorityAsync);
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ProvisioningManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ProvisioningManager.java
index 72a1253..cc8b9c1 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ProvisioningManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/ProvisioningManager.java
@@ -28,22 +28,22 @@ import org.apache.syncope.common.lib.to.PropagationStatus;
 
 public interface ProvisioningManager<T extends AnyTO, P extends AnyPatch> {
 
-    Pair<Long, List<PropagationStatus>> create(T anyTO, boolean nullPriorityAsync);
+    Pair<String, List<PropagationStatus>> create(T anyTO, boolean nullPriorityAsync);
 
-    Pair<Long, List<PropagationStatus>> create(T anyTO, Set<String> excludedResources, boolean nullPriorityAsync);
+    Pair<String, List<PropagationStatus>> create(T anyTO, Set<String> excludedResources, boolean nullPriorityAsync);
 
-    Pair<Long, List<PropagationStatus>> update(P patch, boolean nullPriorityAsync);
+    Pair<String, List<PropagationStatus>> update(P patch, boolean nullPriorityAsync);
 
-    Pair<Long, List<PropagationStatus>> update(P patch, Set<String> excludedResources, boolean nullPriorityAsync);
+    Pair<String, List<PropagationStatus>> update(P patch, Set<String> excludedResources, boolean nullPriorityAsync);
 
-    List<PropagationStatus> delete(Long anyKey, boolean nullPriorityAsync);
+    List<PropagationStatus> delete(String anyKey, boolean nullPriorityAsync);
 
-    List<PropagationStatus> delete(Long anyKey, Set<String> excludedResources, boolean nullPriorityAsync);
+    List<PropagationStatus> delete(String anyKey, Set<String> excludedResources, boolean nullPriorityAsync);
 
-    Long unlink(P anyMod);
+    String unlink(P anyMod);
 
-    Long link(P anyMod);
+    String link(P anyMod);
 
-    List<PropagationStatus> deprovision(Long anyKey, Collection<String> resources, boolean nullPriorityAsync);
+    List<PropagationStatus> deprovision(String anyKey, Collection<String> resources, boolean nullPriorityAsync);
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java
index 37db510..d1160a2 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/UserProvisioningManager.java
@@ -30,17 +30,17 @@ import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningReport;
 
 public interface UserProvisioningManager extends ProvisioningManager<UserTO, UserPatch> {
 
-    Pair<Long, List<PropagationStatus>> activate(StatusPatch statusPatch, boolean nullPriorityAsync);
+    Pair<String, List<PropagationStatus>> activate(StatusPatch statusPatch, boolean nullPriorityAsync);
 
-    Pair<Long, List<PropagationStatus>> reactivate(StatusPatch statusPatch, boolean nullPriorityAsync);
+    Pair<String, List<PropagationStatus>> reactivate(StatusPatch statusPatch, boolean nullPriorityAsync);
 
-    Pair<Long, List<PropagationStatus>> suspend(StatusPatch statusPatch, boolean nullPriorityAsync);
+    Pair<String, List<PropagationStatus>> suspend(StatusPatch statusPatch, boolean nullPriorityAsync);
 
-    void internalSuspend(Long key);
+    void internalSuspend(String key);
 
-    Pair<Long, List<PropagationStatus>> create(UserTO userTO, boolean storePassword, boolean nullPriorityAsync);
+    Pair<String, List<PropagationStatus>> create(UserTO userTO, boolean storePassword, boolean nullPriorityAsync);
 
-    Pair<Long, List<PropagationStatus>> create(
+    Pair<String, List<PropagationStatus>> create(
             UserTO userTO,
             boolean storePassword,
             boolean disablePwdPolicyCheck,
@@ -48,18 +48,18 @@ public interface UserProvisioningManager extends ProvisioningManager<UserTO, Use
             Set<String> excludedResources,
             boolean nullPriorityAsync);
 
-    Pair<Long, List<PropagationStatus>> update(
+    Pair<String, List<PropagationStatus>> update(
             UserPatch userPatch,
             ProvisioningReport result,
             Boolean enabled,
             Set<String> excludedResources,
             boolean nullPriorityAsync);
 
-    void requestPasswordReset(Long key);
+    void requestPasswordReset(String key);
 
-    void confirmPasswordReset(Long key, String token, String password);
+    void confirmPasswordReset(String key, String token, String password);
 
     List<PropagationStatus> provision(
-            Long key, boolean changePwd, String password, Collection<String> resources, boolean nullPriorityAsync);
+            String key, boolean changePwd, String password, Collection<String> resources, boolean nullPriorityAsync);
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCache.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCache.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCache.java
index 7ab5d9b..4e50a11 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCache.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCache.java
@@ -28,19 +28,19 @@ public interface VirAttrCache {
      *
      * @param type any object
      * @param key any object key
-     * @param schemaName virtual attribute schema name
+     * @param schemaKey virtual attribute schema
      */
-    void expire(String type, Long key, String schemaName);
+    void expire(String type, String key, String schemaKey);
 
     /**
      * Retrieve cached value. Return null in case of virtual attribute not cached.
      *
      * @param type any object
      * @param key any object key
-     * @param schemaName virtual attribute schema name.
+     * @param schemaKey virtual attribute schema.
      * @return cached values or null if virtual attribute is not cached.
      */
-    VirAttrCacheValue get(String type, Long key, String schemaName);
+    VirAttrCacheValue get(String type, String key, String schemaKey);
 
     /**
      * Cache entry is valid if and only if value exist and it is not expired.
@@ -58,6 +58,6 @@ public interface VirAttrCache {
      * @param schemaName virtual attribute name
      * @param value virtual attribute values
      */
-    void put(String type, Long key, String schemaName, VirAttrCacheValue value);
+    void put(String type, String key, String schemaName, VirAttrCacheValue value);
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheKey.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheKey.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheKey.java
index da74000..10e76a5 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheKey.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/cache/VirAttrCacheKey.java
@@ -36,14 +36,14 @@ public class VirAttrCacheKey {
     /**
      * Any object key.
      */
-    private final transient Long key;
+    private final transient String key;
 
     /**
      * Virtual attribute schema name.
      */
     private final transient String virSchema;
 
-    public VirAttrCacheKey(final String type, final Long key, final String virSchema) {
+    public VirAttrCacheKey(final String type, final String key, final String virSchema) {
         this.type = type;
         this.key = key;
         this.virSchema = virSchema;
@@ -53,7 +53,7 @@ public class VirAttrCacheKey {
         return type;
     }
 
-    public Long getKey() {
+    public String getKey() {
         return key;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/AnyObjectDataBinder.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/AnyObjectDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/AnyObjectDataBinder.java
index 25b381e..92fc48b 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/AnyObjectDataBinder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/AnyObjectDataBinder.java
@@ -25,7 +25,7 @@ import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
 
 public interface AnyObjectDataBinder {
 
-    AnyObjectTO getAnyObjectTO(Long key);
+    AnyObjectTO getAnyObjectTO(String key);
 
     AnyObjectTO getAnyObjectTO(AnyObject anyObject, boolean details);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ConnInstanceDataBinder.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ConnInstanceDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ConnInstanceDataBinder.java
index a111cc4..698fd25 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ConnInstanceDataBinder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/ConnInstanceDataBinder.java
@@ -31,6 +31,6 @@ public interface ConnInstanceDataBinder {
 
     ConnInstanceTO getConnInstanceTO(ConnInstance connInstance);
 
-    ConnInstance update(Long key, ConnInstanceTO connInstanceTO);
+    ConnInstance update(String key, ConnInstanceTO connInstanceTO);
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/GroupDataBinder.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/GroupDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/GroupDataBinder.java
index 62753f0..6cb0a5b 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/GroupDataBinder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/GroupDataBinder.java
@@ -25,7 +25,7 @@ import org.apache.syncope.core.persistence.api.entity.group.Group;
 
 public interface GroupDataBinder {
 
-    GroupTO getGroupTO(Long key);
+    GroupTO getGroupTO(String key);
 
     GroupTO getGroupTO(Group group, boolean details);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/UserDataBinder.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/UserDataBinder.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/UserDataBinder.java
index 9592a3f..79bfd4d 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/UserDataBinder.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/data/UserDataBinder.java
@@ -29,9 +29,7 @@ public interface UserDataBinder {
 
     UserTO getAuthenticatedUserTO();
 
-    UserTO getUserTO(String username);
-
-    UserTO getUserTO(Long key);
+    UserTO getUserTO(String key);
 
     UserTO getUserTO(User user, boolean details);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/JobNamer.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/JobNamer.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/JobNamer.java
index cc3cf00..59095f8 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/JobNamer.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/JobNamer.java
@@ -20,6 +20,7 @@ package org.apache.syncope.core.provisioning.api.job;
 
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.core.persistence.api.entity.Report;
 import org.apache.syncope.core.persistence.api.entity.task.Task;
 import org.quartz.JobKey;
@@ -31,14 +32,14 @@ public final class JobNamer {
 
     private static final Logger LOG = LoggerFactory.getLogger(JobNamer.class);
 
-    private static Long getKeyFromJobName(final String name, final String pattern, final int prefixLength) {
-        Long result = null;
+    private static String getKeyFromJobName(final String name, final String pattern, final int prefixLength) {
+        String result = null;
 
         Matcher jobMatcher = Pattern.compile(pattern).matcher(name);
         if (jobMatcher.matches()) {
             try {
-                result = Long.valueOf(name.substring(prefixLength));
-            } catch (NumberFormatException e) {
+                result = name.substring(prefixLength);
+            } catch (IllegalArgumentException e) {
                 LOG.error("Unparsable id: {}", name.substring(prefixLength), e);
             }
         }
@@ -46,12 +47,12 @@ public final class JobNamer {
         return result;
     }
 
-    public static Long getTaskKeyFromJobName(final String name) {
-        return getKeyFromJobName(name, "taskJob[0-9]+", 7);
+    public static String getTaskKeyFromJobName(final String name) {
+        return getKeyFromJobName(name, "taskJob" + SyncopeConstants.UUID_REGEX, 7);
     }
 
-    public static Long getReportKeyFromJobName(final String name) {
-        return getKeyFromJobName(name, "reportJob[0-9]+", 9);
+    public static String getReportKeyFromJobName(final String name) {
+        return getKeyFromJobName(name, "reportJob" + SyncopeConstants.UUID_REGEX, 9);
     }
 
     public static JobKey getJobKey(final Task task) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/SchedTaskJobDelegate.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/SchedTaskJobDelegate.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/SchedTaskJobDelegate.java
index 74e9247..0217dda 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/SchedTaskJobDelegate.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/job/SchedTaskJobDelegate.java
@@ -22,5 +22,5 @@ import org.quartz.JobExecutionException;
 
 public interface SchedTaskJobDelegate {
 
-    void execute(Long taskKey, boolean dryRun) throws JobExecutionException;
+    void execute(String taskKey, boolean dryRun) throws JobExecutionException;
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/notification/NotificationManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/notification/NotificationManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/notification/NotificationManager.java
index ee120f5..2940611 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/notification/NotificationManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/notification/NotificationManager.java
@@ -33,11 +33,11 @@ public interface NotificationManager {
     /**
      * Count the number of task executions of a given task with a given status.
      *
-     * @param taskId task id
+     * @param taskKey task
      * @param status status
      * @return number of task executions
      */
-    long countExecutionsWithStatus(final Long taskId, final String status);
+    long countExecutionsWithStatus(final String taskKey, final String status);
 
     /**
      * Create notification tasks for each notification matching the given user id and (some of) tasks performed.
@@ -67,10 +67,10 @@ public interface NotificationManager {
     /**
      * Set execution state of NotificationTask with provided id.
      *
-     * @param taskId task to be updated
+     * @param taskKey task to be updated
      * @param executed execution state
      */
-    void setTaskExecuted(final Long taskId, final boolean executed);
+    void setTaskExecuted(final String taskKey, final boolean executed);
 
     /**
      * Store execution of a NotificationTask.

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java
index dd87d19..71328f4 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/propagation/PropagationManager.java
@@ -42,7 +42,7 @@ public interface PropagationManager {
      */
     List<PropagationTask> getCreateTasks(
             AnyTypeKind kind,
-            Long key,
+            String key,
             PropagationByResource propByRes,
             Collection<AttrTO> vAttrs,
             Collection<String> noPropResourceNames);
@@ -59,7 +59,7 @@ public interface PropagationManager {
      * @return list of propagation tasks
      */
     List<PropagationTask> getUserCreateTasks(
-            Long key,
+            String key,
             String password,
             Boolean enable,
             PropagationByResource propByRes,
@@ -80,7 +80,7 @@ public interface PropagationManager {
      */
     List<PropagationTask> getUpdateTasks(
             AnyTypeKind kind,
-            Long key,
+            String key,
             boolean changePwd,
             Boolean enable,
             PropagationByResource propByRes,
@@ -120,7 +120,7 @@ public interface PropagationManager {
      */
     List<PropagationTask> getDeleteTasks(
             AnyTypeKind kind,
-            Long key,
+            String key,
             PropagationByResource propByRes,
             Collection<String> noPropResourceNames);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/GroupPullResultHandler.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/GroupPullResultHandler.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/GroupPullResultHandler.java
index 247c583..3548a16 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/GroupPullResultHandler.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/GroupPullResultHandler.java
@@ -22,5 +22,5 @@ import java.util.Map;
 
 public interface GroupPullResultHandler extends SyncopePullResultHandler {
 
-    Map<Long, String> getGroupOwnerMap();
+    Map<String, String> getGroupOwnerMap();
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningReport.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningReport.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningReport.java
index 7fa0366..f1bd5bd 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningReport.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/ProvisioningReport.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.core.provisioning.api.pushpull;
 
 import java.util.Collection;
-
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
@@ -44,7 +43,7 @@ public class ProvisioningReport {
 
     private ResourceOperation operation;
 
-    private Long key;
+    private String key;
 
     private String name;
 
@@ -64,11 +63,11 @@ public class ProvisioningReport {
         this.name = name;
     }
 
-    public Long getKey() {
+    public String getKey() {
         return key;
     }
 
-    public void setKey(final Long key) {
+    public void setKey(final String key) {
         this.key = key;
     }
 
@@ -113,10 +112,10 @@ public class ProvisioningReport {
             return null;
         } else if (level == TraceLevel.FAILURES && status == Status.FAILURE) {
             // only report failures
-            return String.format("Failed %s (id/name): %d/%s with message: %s", operation, key, name, message);
+            return String.format("Failed %s (key/name): %d/%s with message: %s", operation, key, name, message);
         } else {
             // All
-            return String.format("%s %s (id/name): %d/%s %s", operation, status, key, name,
+            return String.format("%s %s (key/name): %s/%s %s", operation, status, key, name,
                     StringUtils.isBlank(message)
                     ? ""
                     : "with message: " + message);
@@ -130,7 +129,7 @@ public class ProvisioningReport {
      * @param level trace level
      * @return report as string
      */
-    public static String produceReport(final Collection<ProvisioningReport> results, final TraceLevel level) {
+    public static String generate(final Collection<ProvisioningReport> results, final TraceLevel level) {
         StringBuilder sb = new StringBuilder();
         for (ProvisioningReport result : results) {
             sb.append(result.getReportString(level)).append('\n');

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopePushResultHandler.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopePushResultHandler.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopePushResultHandler.java
index 8a32c53..748cb0a 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopePushResultHandler.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/pushpull/SyncopePushResultHandler.java
@@ -22,5 +22,5 @@ import org.apache.syncope.core.persistence.api.entity.task.PushTask;
 
 public interface SyncopePushResultHandler extends SyncopeResultHandler<PushTask, PushActions> {
 
-    boolean handle(long anyKey);
+    boolean handle(String anyKey);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/utils/EntityUtils.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/utils/EntityUtils.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/utils/EntityUtils.java
index a744372..264df5d 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/utils/EntityUtils.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/utils/EntityUtils.java
@@ -23,11 +23,11 @@ import org.apache.syncope.core.persistence.api.entity.Entity;
 
 public final class EntityUtils {
 
-    public static <KEY, E extends Entity<KEY>> Transformer<E, KEY> keyTransformer() {
-        return new Transformer<E, KEY>() {
+    public static <E extends Entity> Transformer<E, String> keyTransformer() {
+        return new Transformer<E, String>() {
 
             @Override
-            public KEY transform(final E input) {
+            public String transform(final E input) {
                 return input.getKey();
             }
         };

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/utils/RealmUtils.java
----------------------------------------------------------------------
diff --git a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/utils/RealmUtils.java b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/utils/RealmUtils.java
index 47703b0..49810c7 100644
--- a/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/utils/RealmUtils.java
+++ b/core/provisioning-api/src/main/java/org/apache/syncope/core/provisioning/api/utils/RealmUtils.java
@@ -24,7 +24,7 @@ import java.util.Set;
 
 public final class RealmUtils {
 
-    public static String getGroupOwnerRealm(final String realmPath, final Long groupKey) {
+    public static String getGroupOwnerRealm(final String realmPath, final String groupKey) {
         return realmPath + "@" + groupKey;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorManager.java
index de2fa29..f97a311 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ConnectorManager.java
@@ -61,7 +61,7 @@ public class ConnectorManager implements ConnectorRegistry, ConnectorFactory, Sy
     }
 
     private String getBeanName(final ExternalResource resource) {
-        return String.format("connInstance-%s-%d-%s",
+        return String.format("connInstance-%s-%S-%s",
                 AuthContextUtils.getDomain(), resource.getConnector().getKey(), resource.getKey());
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java
index 0cc4100..2f4ec41 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultAnyObjectProvisioningManager.java
@@ -61,15 +61,17 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin
     protected AnyObjectDAO anyObjectDAO;
 
     @Override
-    public Pair<Long, List<PropagationStatus>> create(final AnyObjectTO anyObjectTO, final boolean nullPriorityAsync) {
+    public Pair<String, List<PropagationStatus>> create(
+            final AnyObjectTO anyObjectTO, final boolean nullPriorityAsync) {
+
         return create(anyObjectTO, Collections.<String>emptySet(), nullPriorityAsync);
     }
 
     @Override
-    public Pair<Long, List<PropagationStatus>> create(
+    public Pair<String, List<PropagationStatus>> create(
             final AnyObjectTO anyObjectTO, final Set<String> excludedResources, final boolean nullPriorityAsync) {
 
-        WorkflowResult<Long> created = awfAdapter.create(anyObjectTO);
+        WorkflowResult<String> created = awfAdapter.create(anyObjectTO);
 
         List<PropagationTask> tasks = propagationManager.getCreateTasks(
                 AnyTypeKind.ANY_OBJECT,
@@ -85,17 +87,17 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin
     }
 
     @Override
-    public Pair<Long, List<PropagationStatus>> update(
+    public Pair<String, List<PropagationStatus>> update(
             final AnyObjectPatch anyObjectPatch, final boolean nullPriorityAsync) {
 
         return update(anyObjectPatch, Collections.<String>emptySet(), nullPriorityAsync);
     }
 
     @Override
-    public Pair<Long, List<PropagationStatus>> update(
+    public Pair<String, List<PropagationStatus>> update(
             final AnyObjectPatch anyObjectPatch, final Set<String> excludedResources, final boolean nullPriorityAsync) {
 
-        WorkflowResult<Long> updated = awfAdapter.update(anyObjectPatch);
+        WorkflowResult<String> updated = awfAdapter.update(anyObjectPatch);
 
         List<PropagationTask> tasks = propagationManager.getUpdateTasks(
                 AnyTypeKind.ANY_OBJECT,
@@ -113,13 +115,13 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin
     }
 
     @Override
-    public List<PropagationStatus> delete(final Long key, final boolean nullPriorityAsync) {
+    public List<PropagationStatus> delete(final String key, final boolean nullPriorityAsync) {
         return delete(key, Collections.<String>emptySet(), nullPriorityAsync);
     }
 
     @Override
     public List<PropagationStatus> delete(
-            final Long key, final Set<String> excludedResources, final boolean nullPriorityAsync) {
+            final String key, final Set<String> excludedResources, final boolean nullPriorityAsync) {
 
         List<PropagationTask> tasks = propagationManager.getDeleteTasks(
                 AnyTypeKind.ANY_OBJECT,
@@ -136,18 +138,18 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin
     }
 
     @Override
-    public Long unlink(final AnyObjectPatch anyObjectPatch) {
+    public String unlink(final AnyObjectPatch anyObjectPatch) {
         return awfAdapter.update(anyObjectPatch).getResult();
     }
 
     @Override
-    public Long link(final AnyObjectPatch anyObjectPatch) {
+    public String link(final AnyObjectPatch anyObjectPatch) {
         return awfAdapter.update(anyObjectPatch).getResult();
     }
 
     @Override
     public List<PropagationStatus> provision(
-            final Long key, final Collection<String> resources, final boolean nullPriorityAsync) {
+            final String key, final Collection<String> resources, final boolean nullPriorityAsync) {
 
         PropagationByResource propByRes = new PropagationByResource();
         propByRes.addAll(ResourceOperation.UPDATE, resources);
@@ -169,7 +171,7 @@ public class DefaultAnyObjectProvisioningManager implements AnyObjectProvisionin
 
     @Override
     public List<PropagationStatus> deprovision(
-            final Long key, final Collection<String> resources, final boolean nullPriorityAsync) {
+            final String key, final Collection<String> resources, final boolean nullPriorityAsync) {
 
         PropagationByResource propByRes = new PropagationByResource();
         propByRes.addAll(ResourceOperation.DELETE, resources);

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java
index 08c55a5..ba124dd 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultGroupProvisioningManager.java
@@ -65,15 +65,15 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
     protected VirAttrHandler virtAttrHandler;
 
     @Override
-    public Pair<Long, List<PropagationStatus>> create(final GroupTO group, final boolean nullPriorityAsync) {
+    public Pair<String, List<PropagationStatus>> create(final GroupTO group, final boolean nullPriorityAsync) {
         return create(group, Collections.<String>emptySet(), nullPriorityAsync);
     }
 
     @Override
-    public Pair<Long, List<PropagationStatus>> create(
+    public Pair<String, List<PropagationStatus>> create(
             final GroupTO groupTO, final Set<String> excludedResources, final boolean nullPriorityAsync) {
 
-        WorkflowResult<Long> created = gwfAdapter.create(groupTO);
+        WorkflowResult<String> created = gwfAdapter.create(groupTO);
 
         List<PropagationTask> tasks = propagationManager.getCreateTasks(
                 AnyTypeKind.GROUP,
@@ -89,13 +89,13 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
     }
 
     @Override
-    public Pair<Long, List<PropagationStatus>> create(
+    public Pair<String, List<PropagationStatus>> create(
             final GroupTO groupTO,
-            final Map<Long, String> groupOwnerMap,
+            final Map<String, String> groupOwnerMap,
             final Set<String> excludedResources,
             final boolean nullPriorityAsync) {
 
-        WorkflowResult<Long> created = gwfAdapter.create(groupTO);
+        WorkflowResult<String> created = gwfAdapter.create(groupTO);
 
         // see ConnObjectUtils#getAnyTOFromConnObject for GroupOwnerSchema
         AttrTO groupOwner = groupTO.getPlainAttrMap().get(StringUtils.EMPTY);
@@ -117,15 +117,15 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
     }
 
     @Override
-    public Pair<Long, List<PropagationStatus>> update(final GroupPatch groupPatch, final boolean nullPriorityAsync) {
+    public Pair<String, List<PropagationStatus>> update(final GroupPatch groupPatch, final boolean nullPriorityAsync) {
         return update(groupPatch, Collections.<String>emptySet(), nullPriorityAsync);
     }
 
     @Override
-    public Pair<Long, List<PropagationStatus>> update(
+    public Pair<String, List<PropagationStatus>> update(
             final GroupPatch groupPatch, final Set<String> excludedResources, final boolean nullPriorityAsync) {
 
-        WorkflowResult<Long> updated = gwfAdapter.update(groupPatch);
+        WorkflowResult<String> updated = gwfAdapter.update(groupPatch);
 
         List<PropagationTask> tasks = propagationManager.getUpdateTasks(
                 AnyTypeKind.GROUP,
@@ -143,19 +143,19 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
     }
 
     @Override
-    public List<PropagationStatus> delete(final Long key, final boolean nullPriorityAsync) {
+    public List<PropagationStatus> delete(final String key, final boolean nullPriorityAsync) {
         return delete(key, Collections.<String>emptySet(), nullPriorityAsync);
     }
 
     @Override
     public List<PropagationStatus> delete(
-            final Long key, final Set<String> excludedResources, final boolean nullPriorityAsync) {
+            final String key, final Set<String> excludedResources, final boolean nullPriorityAsync) {
 
         List<PropagationTask> tasks = new ArrayList<>();
 
         // Generate propagation tasks for deleting users and any objects from group resources, 
         // if they are on those resources only because of the reason being deleted (see SYNCOPE-357)
-        for (Map.Entry<Long, PropagationByResource> entry
+        for (Map.Entry<String, PropagationByResource> entry
                 : groupDAO.findUsersWithTransitiveResources(key).entrySet()) {
 
             tasks.addAll(propagationManager.getDeleteTasks(
@@ -164,7 +164,7 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
                     entry.getValue(),
                     excludedResources));
         }
-        for (Map.Entry<Long, PropagationByResource> entry
+        for (Map.Entry<String, PropagationByResource> entry
                 : groupDAO.findAnyObjectsWithTransitiveResources(key).entrySet()) {
 
             tasks.addAll(propagationManager.getDeleteTasks(
@@ -191,14 +191,14 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
     }
 
     @Override
-    public Long unlink(final GroupPatch groupPatch) {
-        WorkflowResult<Long> updated = gwfAdapter.update(groupPatch);
+    public String unlink(final GroupPatch groupPatch) {
+        WorkflowResult<String> updated = gwfAdapter.update(groupPatch);
         return updated.getResult();
     }
 
     @Override
     public List<PropagationStatus> provision(
-            final Long key, final Collection<String> resources, final boolean nullPriorityAsync) {
+            final String key, final Collection<String> resources, final boolean nullPriorityAsync) {
 
         PropagationByResource propByRes = new PropagationByResource();
         propByRes.addAll(ResourceOperation.UPDATE, resources);
@@ -220,7 +220,7 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
 
     @Override
     public List<PropagationStatus> deprovision(
-            final Long key, final Collection<String> resources, final boolean nullPriorityAsync) {
+            final String key, final Collection<String> resources, final boolean nullPriorityAsync) {
 
         PropagationByResource propByRes = new PropagationByResource();
         propByRes.addAll(ResourceOperation.DELETE, resources);
@@ -238,7 +238,7 @@ public class DefaultGroupProvisioningManager implements GroupProvisioningManager
     }
 
     @Override
-    public Long link(final GroupPatch groupPatch) {
+    public String link(final GroupPatch groupPatch) {
         return gwfAdapter.update(groupPatch).getResult();
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
index 8abf123..66edbcc 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/DefaultUserProvisioningManager.java
@@ -75,26 +75,26 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
     protected UserDAO userDAO;
 
     @Override
-    public Pair<Long, List<PropagationStatus>> create(final UserTO userTO, final boolean nullPriorityAsync) {
+    public Pair<String, List<PropagationStatus>> create(final UserTO userTO, final boolean nullPriorityAsync) {
         return create(userTO, true, false, null, Collections.<String>emptySet(), nullPriorityAsync);
     }
 
     @Override
-    public Pair<Long, List<PropagationStatus>> create(
+    public Pair<String, List<PropagationStatus>> create(
             final UserTO userTO, final boolean storePassword, final boolean nullPriorityAsync) {
 
         return create(userTO, storePassword, false, null, Collections.<String>emptySet(), nullPriorityAsync);
     }
 
     @Override
-    public Pair<Long, List<PropagationStatus>> create(
+    public Pair<String, List<PropagationStatus>> create(
             final UserTO userTO, final Set<String> excludedResources, final boolean nullPriorityAsync) {
 
         return create(userTO, false, false, null, excludedResources, nullPriorityAsync);
     }
 
     @Override
-    public Pair<Long, List<PropagationStatus>> create(
+    public Pair<String, List<PropagationStatus>> create(
             final UserTO userTO,
             final boolean storePassword,
             final boolean disablePwdPolicyCheck,
@@ -102,7 +102,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
             final Set<String> excludedResources,
             final boolean nullPriorityAsync) {
 
-        WorkflowResult<Pair<Long, Boolean>> created =
+        WorkflowResult<Pair<String, Boolean>> created =
                 uwfAdapter.create(userTO, disablePwdPolicyCheck, enabled, storePassword);
 
         List<PropagationTask> tasks = propagationManager.getUserCreateTasks(
@@ -120,7 +120,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
-    public Pair<Long, List<PropagationStatus>> update(final UserPatch userPatch, final boolean nullPriorityAsync) {
+    public Pair<String, List<PropagationStatus>> update(final UserPatch userPatch, final boolean nullPriorityAsync) {
         WorkflowResult<Pair<UserPatch, Boolean>> updated = uwfAdapter.update(userPatch);
 
         List<PropagationTask> tasks = propagationManager.getUserUpdateTasks(updated);
@@ -132,14 +132,14 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
-    public Pair<Long, List<PropagationStatus>> update(
+    public Pair<String, List<PropagationStatus>> update(
             final UserPatch userPatch, final Set<String> excludedResources, final boolean nullPriorityAsync) {
 
         return update(userPatch, new ProvisioningReport(), null, excludedResources, nullPriorityAsync);
     }
 
     @Override
-    public Pair<Long, List<PropagationStatus>> update(
+    public Pair<String, List<PropagationStatus>> update(
             final UserPatch userPatch,
             final ProvisioningReport result,
             final Boolean enabled,
@@ -164,7 +164,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
         if (enabled != null) {
             User user = userDAO.find(userPatch.getKey());
 
-            WorkflowResult<Long> enableUpdate = null;
+            WorkflowResult<String> enableUpdate = null;
             if (user.isSuspended() == null) {
                 enableUpdate = uwfAdapter.activate(userPatch.getKey(), null);
             } else if (enabled && user.isSuspended()) {
@@ -192,13 +192,13 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
-    public List<PropagationStatus> delete(final Long key, final boolean nullPriorityAsync) {
+    public List<PropagationStatus> delete(final String key, final boolean nullPriorityAsync) {
         return delete(key, Collections.<String>emptySet(), nullPriorityAsync);
     }
 
     @Override
     public List<PropagationStatus> delete(
-            final Long key, final Set<String> excludedResources, final boolean nullPriorityAsync) {
+            final String key, final Set<String> excludedResources, final boolean nullPriorityAsync) {
 
         PropagationByResource propByRes = new PropagationByResource();
         propByRes.set(ResourceOperation.DELETE, userDAO.findAllResourceNames(userDAO.authFind(key)));
@@ -227,21 +227,21 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
-    public Long unlink(final UserPatch userPatch) {
+    public String unlink(final UserPatch userPatch) {
         WorkflowResult<Pair<UserPatch, Boolean>> updated = uwfAdapter.update(userPatch);
         return updated.getResult().getKey().getKey();
     }
 
     @Override
-    public Long link(final UserPatch userPatch) {
+    public String link(final UserPatch userPatch) {
         return uwfAdapter.update(userPatch).getResult().getKey().getKey();
     }
 
     @Override
-    public Pair<Long, List<PropagationStatus>> activate(
+    public Pair<String, List<PropagationStatus>> activate(
             final StatusPatch statusPatch, final boolean nullPriorityAsync) {
 
-        WorkflowResult<Long> updated = statusPatch.isOnSyncope()
+        WorkflowResult<String> updated = statusPatch.isOnSyncope()
                 ? uwfAdapter.activate(statusPatch.getKey(), statusPatch.getToken())
                 : new WorkflowResult<>(statusPatch.getKey(), null, statusPatch.getType().name().toLowerCase());
 
@@ -249,10 +249,10 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
-    public Pair<Long, List<PropagationStatus>> reactivate(
+    public Pair<String, List<PropagationStatus>> reactivate(
             final StatusPatch statusPatch, final boolean nullPriorityAsync) {
 
-        WorkflowResult<Long> updated = statusPatch.isOnSyncope()
+        WorkflowResult<String> updated = statusPatch.isOnSyncope()
                 ? uwfAdapter.reactivate(statusPatch.getKey())
                 : new WorkflowResult<>(statusPatch.getKey(), null, statusPatch.getType().name().toLowerCase());
 
@@ -260,10 +260,10 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
-    public Pair<Long, List<PropagationStatus>> suspend(
+    public Pair<String, List<PropagationStatus>> suspend(
             final StatusPatch statusPatch, final boolean nullPriorityAsync) {
 
-        WorkflowResult<Long> updated = statusPatch.isOnSyncope()
+        WorkflowResult<String> updated = statusPatch.isOnSyncope()
                 ? uwfAdapter.suspend(statusPatch.getKey())
                 : new WorkflowResult<>(statusPatch.getKey(), null, statusPatch.getType().name().toLowerCase());
 
@@ -291,8 +291,8 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
-    public void internalSuspend(final Long key) {
-        Pair<WorkflowResult<Long>, Boolean> updated = uwfAdapter.internalSuspend(key);
+    public void internalSuspend(final String key) {
+        Pair<WorkflowResult<String>, Boolean> updated = uwfAdapter.internalSuspend(key);
 
         // propagate suspension if and only if it is required by policy
         if (updated != null && updated.getValue()) {
@@ -309,7 +309,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
 
     @Override
     public List<PropagationStatus> provision(
-            final Long key,
+            final String key,
             final boolean changePwd,
             final String password,
             final Collection<String> resources,
@@ -320,11 +320,11 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
         userPatch.getResources().addAll(CollectionUtils.collect(resources,
                 new Transformer<String, StringPatchItem>() {
 
-                    @Override
-                    public StringPatchItem transform(final String input) {
-                        return new StringPatchItem.Builder().operation(PatchOperation.ADD_REPLACE).value(input).build();
-                    }
-                }, new HashSet<StringPatchItem>()));
+            @Override
+            public StringPatchItem transform(final String input) {
+                return new StringPatchItem.Builder().operation(PatchOperation.ADD_REPLACE).value(input).build();
+            }
+        }, new HashSet<StringPatchItem>()));
 
         if (changePwd) {
             PasswordPatch passwordPatch = new PasswordPatch();
@@ -350,7 +350,7 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
 
     @Override
     public List<PropagationStatus> deprovision(
-            final Long key, final Collection<String> resources, final boolean nullPriorityAsync) {
+            final String key, final Collection<String> resources, final boolean nullPriorityAsync) {
 
         PropagationByResource propByRes = new PropagationByResource();
         propByRes.set(ResourceOperation.DELETE, resources);
@@ -368,12 +368,12 @@ public class DefaultUserProvisioningManager implements UserProvisioningManager {
     }
 
     @Override
-    public void requestPasswordReset(final Long key) {
+    public void requestPasswordReset(final String key) {
         uwfAdapter.requestPasswordReset(key);
     }
 
     @Override
-    public void confirmPasswordReset(final Long key, final String token, final String password) {
+    public void confirmPasswordReset(final String key, final String token, final String password) {
         WorkflowResult<Pair<UserPatch, Boolean>> updated = uwfAdapter.confirmPasswordReset(key, token, password);
 
         List<PropagationTask> tasks = propagationManager.getUserUpdateTasks(updated);

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/DisabledVirAttrCache.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/DisabledVirAttrCache.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/DisabledVirAttrCache.java
index 8ec8e84..35f331b 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/DisabledVirAttrCache.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/DisabledVirAttrCache.java
@@ -31,12 +31,12 @@ public class DisabledVirAttrCache implements VirAttrCache {
     }
 
     @Override
-    public void expire(final String type, final Long id, final String schemaName) {
+    public void expire(final String type, final String key, final String schemaKey) {
         // nothing to do
     }
 
     @Override
-    public VirAttrCacheValue get(final String type, final Long id, final String schemaName) {
+    public VirAttrCacheValue get(final String type, final String key, final String schemaKey) {
         return null;
     }
 
@@ -46,7 +46,7 @@ public class DisabledVirAttrCache implements VirAttrCache {
     }
 
     @Override
-    public void put(final String type, final Long id, final String schemaName, final VirAttrCacheValue value) {
+    public void put(final String type, final String key, final String schemaName, final VirAttrCacheValue value) {
         // nothing to do
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/MemoryVirAttrCache.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/MemoryVirAttrCache.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/MemoryVirAttrCache.java
index 21d2236..127ad87 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/MemoryVirAttrCache.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/cache/MemoryVirAttrCache.java
@@ -52,19 +52,11 @@ public class MemoryVirAttrCache implements VirAttrCache {
         this.maxCacheSize = maxCacheSize;
     }
 
-    /**
-     * Cache virtual attribute values.
-     *
-     * @param type any object type
-     * @param key any key
-     * @param schemaName virtual attribute name
-     * @param value virtual attribute values
-     */
     @Override
     public void put(
             final String type,
-            final Long key,
-            final String schemaName,
+            final String key,
+            final String schemaKey,
             final VirAttrCacheValue value) {
 
         synchronized (cache) {
@@ -73,33 +65,18 @@ public class MemoryVirAttrCache implements VirAttrCache {
                 free();
             }
 
-            cache.put(new VirAttrCacheKey(type, key, schemaName), value);
+            cache.put(new VirAttrCacheKey(type, key, schemaKey), value);
         }
     }
 
-    /**
-     * Retrieve cached value. Return null in case of virtual attribute not cached.
-     *
-     * @param type any object type
-     * @param key any key
-     * @param schemaName virtual attribute schema name.
-     * @return cached values or null if virtual attribute is not cached.
-     */
     @Override
-    public VirAttrCacheValue get(final String type, final Long key, final String schemaName) {
-        return cache.get(new VirAttrCacheKey(type, key, schemaName));
+    public VirAttrCacheValue get(final String type, final String key, final String schemaKey) {
+        return cache.get(new VirAttrCacheKey(type, key, schemaKey));
     }
 
-    /**
-     * Force entry expiring.
-     *
-     * @param type any object type
-     * @param key any key
-     * @param schemaName virtual attribute schema name
-     */
     @Override
-    public void expire(final String type, final Long key, final String schemaName) {
-        final VirAttrCacheValue value = cache.get(new VirAttrCacheKey(type, key, schemaName));
+    public void expire(final String type, final String key, final String schemaKey) {
+        final VirAttrCacheValue value = cache.get(new VirAttrCacheKey(type, key, schemaKey));
         if (isValidEntry(value)) {
             synchronized (cache) {
                 value.forceExpiring();

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
index 56e0d71..a144d67 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
@@ -160,7 +160,7 @@ abstract class AbstractAnyDataBinder {
 
     protected void setRealm(final Any<?> any, final AnyPatch anyPatch) {
         if (anyPatch.getRealm() != null && StringUtils.isNotBlank(anyPatch.getRealm().getValue())) {
-            Realm newRealm = realmDAO.find(anyPatch.getRealm().getValue());
+            Realm newRealm = realmDAO.findByFullPath(anyPatch.getRealm().getValue());
             if (newRealm == null) {
                 LOG.debug("Invalid realm specified: {}, ignoring", anyPatch.getRealm().getValue());
             } else {
@@ -317,15 +317,15 @@ abstract class AbstractAnyDataBinder {
                         plainAttrValueDAO.delete(attr.getUniqueValue().getKey(), anyUtils.plainAttrUniqueValueClass());
                     }
                 } else {
-                    Collection<Long> valuesToBeRemoved = CollectionUtils.collect(attr.getValues(),
-                            new Transformer<PlainAttrValue, Long>() {
+                    Collection<String> valuesToBeRemoved = CollectionUtils.collect(attr.getValues(),
+                            new Transformer<PlainAttrValue, String>() {
 
                         @Override
-                        public Long transform(final PlainAttrValue input) {
+                        public String transform(final PlainAttrValue input) {
                             return input.getKey();
                         }
                     });
-                    for (Long attrValueKey : valuesToBeRemoved) {
+                    for (String attrValueKey : valuesToBeRemoved) {
                         plainAttrValueDAO.delete(attrValueKey, anyUtils.plainAttrValueClass());
                     }
                 }
@@ -516,7 +516,7 @@ abstract class AbstractAnyDataBinder {
 
         anyTO.setRealm(realmFullPath);
 
-        CollectionUtils.collect(auxClasses, EntityUtils.<String, AnyTypeClass>keyTransformer(), anyTO.getAuxClasses());
+        CollectionUtils.collect(auxClasses, EntityUtils.<AnyTypeClass>keyTransformer(), anyTO.getAuxClasses());
 
         for (PlainAttr<?> plainAttr : plainAttrs) {
             AttrTO attrTO = new AttrTO();