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:02:05 UTC

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

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/client/console/src/main/resources/org/apache/syncope/client/console/panels/DirectoryPanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/DirectoryPanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/DirectoryPanel_ru.properties
index edc3b3a..72f0e33 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/DirectoryPanel_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/DirectoryPanel_ru.properties
@@ -15,56 +15,52 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-# displayRows=Показать по
+# displayRows=\u00d0\u009f\u00d0\u00be\u00d0\u00ba\u00d0\u00b0\u00d0\u00b7\u00d0\u00b0\u00d1\u0082\u00d1\u008c \u00d0\u00bf\u00d0\u00be
 displayRows=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e
 
-# mustChangePassword=Требуется сменить пароль
+# mustChangePassword=\u00d0\u00a2\u00d1\u0080\u00d0\u00b5\u00d0\u00b1\u00d1\u0083\u00d0\u00b5\u00d1\u0082\u00d1\u0081\u00d1\u008f \u00d1\u0081\u00d0\u00bc\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d1\u0082\u00d1\u008c \u00d0\u00bf\u00d0\u00b0\u00d1\u0080\u00d0\u00be\u00d0\u00bb\u00d1\u008c
 mustChangePassword=\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c
-# firstname=Имя
+# firstname=\u00d0\u0098\u00d0\u00bc\u00d1\u008f
 firstname=\u0418\u043c\u044f
-# surname=Фамилия
+# surname=\u00d0\u00a4\u00d0\u00b0\u00d0\u00bc\u00d0\u00b8\u00d0\u00bb\u00d0\u00b8\u00d1\u008f
 surname=\u0424\u0430\u043c\u0438\u043b\u0438\u044f
-# userId=Учетная запись пользователя
-userId=\u0423\u0447\u0435\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f
-# edit=Изменить
+# edit=\u00d0\u0098\u00d0\u00b7\u00d0\u00bc\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d1\u0082\u00d1\u008c
 edit=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c
-# delete=Удалить
+# delete=\u00d0\u00a3\u00d0\u00b4\u00d0\u00b0\u00d0\u00bb\u00d0\u00b8\u00d1\u0082\u00d1\u008c
 delete=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
-# id=Id
-id=Id
-# status=Статус
+# status=\u00d0\u00a1\u00d1\u0082\u00d0\u00b0\u00d1\u0082\u00d1\u0083\u00d1\u0081
 status=\u0421\u0442\u0430\u0442\u0443\u0441
-# token=Токен
+# token=\u00d0\u00a2\u00d0\u00be\u00d0\u00ba\u00d0\u00b5\u00d0\u00bd
 token=\u0422\u043e\u043a\u0435\u043d
-# username=Имя пользователя
+# username=\u00d0\u0098\u00d0\u00bc\u00d1\u008f \u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d1\u008c\u00d0\u00b7\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d1\u008f
 username=\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f
-# creationDate=Дата создания
+# creationDate=\u00d0\u0094\u00d0\u00b0\u00d1\u0082\u00d0\u00b0 \u00d1\u0081\u00d0\u00be\u00d0\u00b7\u00d0\u00b4\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d1\u008f
 creationDate=\u0414\u0430\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f
-# tokenValued=Назначен
+# tokenValued=\u00d0\u009d\u00d0\u00b0\u00d0\u00b7\u00d0\u00bd\u00d0\u00b0\u00d1\u0087\u00d0\u00b5\u00d0\u00bd
 tokenValued=\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d
-# tokenNotValued=Отсутствует
+# tokenNotValued=\u00d0\u009e\u00d1\u0082\u00d1\u0081\u00d1\u0083\u00d1\u0082\u00d1\u0081\u00d1\u0082\u00d0\u00b2\u00d1\u0083\u00d0\u00b5\u00d1\u0082
 tokenNotValued=\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442
 
-# subject=Тема
+# subject=\u00d0\u00a2\u00d0\u00b5\u00d0\u00bc\u00d0\u00b0
 subject=\u0422\u0435\u043c\u0430
-# recipients=Получатели
+# recipients=\u00d0\u009f\u00d0\u00be\u00d0\u00bb\u00d1\u0083\u00d1\u0087\u00d0\u00b0\u00d1\u0082\u00d0\u00b5\u00d0\u00bb\u00d0\u00b8
 recipients=\u041f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u0438
 
-# any.edit=Изменить ${anyTO.type} ${anyTO.key}
+# any.edit=\u00d0\u0098\u00d0\u00b7\u00d0\u00bc\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d1\u0082\u00d1\u008c ${anyTO.type} ${anyTO.key}
 any.edit=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c ${anyTO.type} ${anyTO.key}
-# any.new=Создать ${anyTO.type}
+# any.new=\u00d0\u00a1\u00d0\u00be\u00d0\u00b7\u00d0\u00b4\u00d0\u00b0\u00d1\u0082\u00d1\u008c ${anyTO.type}
 any.new=\u0421\u043e\u0437\u0434\u0430\u0442\u044c ${anyTO.type}
-# any.finish=Сохранить ${anyTO.type}
+# any.finish=\u00d0\u00a1\u00d0\u00be\u00d1\u0085\u00d1\u0080\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d1\u0082\u00d1\u008c ${anyTO.type}
 any.finish=\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c ${anyTO.type}
-# any.cancel=Отменить ${anyTO.type}
+# any.cancel=\u00d0\u009e\u00d1\u0082\u00d0\u00bc\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d1\u0082\u00d1\u008c ${anyTO.type}
 any.cancel=\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c ${anyTO.type}
-# any.attr.display=Показывать атрибуты
+# any.attr.display=\u00d0\u009f\u00d0\u00be\u00d0\u00ba\u00d0\u00b0\u00d0\u00b7\u00d1\u008b\u00d0\u00b2\u00d0\u00b0\u00d1\u0082\u00d1\u008c \u00d0\u00b0\u00d1\u0082\u00d1\u0080\u00d0\u00b8\u00d0\u00b1\u00d1\u0083\u00d1\u0082\u00d1\u008b
 any.attr.display=\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b
-# bulk.action=Массовое действие
+# bulk.action=\u00d0\u009c\u00d0\u00b0\u00d1\u0081\u00d1\u0081\u00d0\u00be\u00d0\u00b2\u00d0\u00be\u00d0\u00b5 \u00d0\u00b4\u00d0\u00b5\u00d0\u00b9\u00d1\u0081\u00d1\u0082\u00d0\u00b2\u00d0\u00b8\u00d0\u00b5
 bulk.action=\u041c\u0430\u0441\u0441\u043e\u0432\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435
-# any.propagation.tasks=Задачи выполнения действий для ${type} ${key}
+# any.propagation.tasks=\u00d0\u0097\u00d0\u00b0\u00d0\u00b4\u00d0\u00b0\u00d1\u0087\u00d0\u00b8 \u00d0\u00b2\u00d1\u008b\u00d0\u00bf\u00d0\u00be\u00d0\u00bb\u00d0\u00bd\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d1\u008f \u00d0\u00b4\u00d0\u00b5\u00d0\u00b9\u00d1\u0081\u00d1\u0082\u00d0\u00b2\u00d0\u00b8\u00d0\u00b9 \u00d0\u00b4\u00d0\u00bb\u00d1\u008f ${type} ${key}
 any.propagation.tasks=\u0417\u0430\u0434\u0430\u0447\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0434\u043b\u044f ${type} ${key}
-# any.notification.tasks=Задачи отправки уведомлений для ${type} ${key}
+# any.notification.tasks=\u00d0\u0097\u00d0\u00b0\u00d0\u00b4\u00d0\u00b0\u00d1\u0087\u00d0\u00b8 \u00d0\u00be\u00d1\u0082\u00d0\u00bf\u00d1\u0080\u00d0\u00b0\u00d0\u00b2\u00d0\u00ba\u00d0\u00b8 \u00d1\u0083\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b9 \u00d0\u00b4\u00d0\u00bb\u00d1\u008f ${type} ${key}
 any.notification.tasks=\u0417\u0430\u0434\u0430\u0447\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u0434\u043b\u044f ${type} ${key}
-# notification.tasks=Задачи отправки уведомлений ${key}
+# notification.tasks=\u00d0\u0097\u00d0\u00b0\u00d0\u00b4\u00d0\u00b0\u00d1\u0087\u00d0\u00b8 \u00d0\u00be\u00d1\u0082\u00d0\u00bf\u00d1\u0080\u00d0\u00b0\u00d0\u00b2\u00d0\u00ba\u00d0\u00b8 \u00d1\u0083\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d0\u00b9 ${key}
 notification.tasks=\u0417\u0430\u0434\u0430\u0447\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 ${key}

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.properties
index bad8066..0d7b3df 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.properties
@@ -17,8 +17,6 @@
 profile=Profile
 executions=Executions
 title=Task
-
-key=Id
 start=Start date
 end=End date
 latestExecStatus=Last execution status

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel_it.properties
index cba15ec..6ed659d 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel_it.properties
@@ -17,8 +17,6 @@
 profile=Profilo
 executions=Esecuzioni
 title=Task
-
-key=Id
 start=Data di avvio
 end=Data di conclusione
 latestExecStatus=Stato ultima esecuzione

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel_pt_BR.properties
index f3c118a..63f8935 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel_pt_BR.properties
@@ -17,8 +17,6 @@
 profile=Profilo
 executions=Esecuzioni
 title=Task
-
-key=Id
 start=Data inicial
 end=Data Final
 latestExecStatus=Stato ultima esecuzione

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel_ru.properties
index 44ed76a..4edfdb1 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskDirectoryPanel_ru.properties
@@ -15,21 +15,18 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-# profile=Профиль
+# profile=\u00d0\u009f\u00d1\u0080\u00d0\u00be\u00d1\u0084\u00d0\u00b8\u00d0\u00bb\u00d1\u008c
 profile=\u041f\u0440\u043e\u0444\u0438\u043b\u044c
-# executions=Запуски задачи
+# executions=\u00d0\u0097\u00d0\u00b0\u00d0\u00bf\u00d1\u0083\u00d1\u0081\u00d0\u00ba\u00d0\u00b8 \u00d0\u00b7\u00d0\u00b0\u00d0\u00b4\u00d0\u00b0\u00d1\u0087\u00d0\u00b8
 executions=\u0417\u0430\u043f\u0443\u0441\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438
-# title=Задача
+# title=\u00d0\u0097\u00d0\u00b0\u00d0\u00b4\u00d0\u00b0\u00d1\u0087\u00d0\u00b0
 title=\u0417\u0430\u0434\u0430\u0447\u0430
-
-# key=Идентификатор
-key=\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440
-# start=Дата начала
+# start=\u00d0\u0094\u00d0\u00b0\u00d1\u0082\u00d0\u00b0 \u00d0\u00bd\u00d0\u00b0\u00d1\u0087\u00d0\u00b0\u00d0\u00bb\u00d0\u00b0
 start=\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430
-# end=Дата окончания
+# end=\u00d0\u0094\u00d0\u00b0\u00d1\u0082\u00d0\u00b0 \u00d0\u00be\u00d0\u00ba\u00d0\u00be\u00d0\u00bd\u00d1\u0087\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d1\u008f
 end=\u0414\u0430\u0442\u0430 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f
-# latestExecStatus=Статус предыдущего запуска
+# latestExecStatus=\u00d0\u00a1\u00d1\u0082\u00d0\u00b0\u00d1\u0082\u00d1\u0083\u00d1\u0081 \u00d0\u00bf\u00d1\u0080\u00d0\u00b5\u00d0\u00b4\u00d1\u008b\u00d0\u00b4\u00d1\u0083\u00d1\u0089\u00d0\u00b5\u00d0\u00b3\u00d0\u00be \u00d0\u00b7\u00d0\u00b0\u00d0\u00bf\u00d1\u0083\u00d1\u0081\u00d0\u00ba\u00d0\u00b0
 latestExecStatus=\u0421\u0442\u0430\u0442\u0443\u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430
 
-# task.view=Запуски задачи
+# task.view=\u00d0\u0097\u00d0\u00b0\u00d0\u00bf\u00d1\u0083\u00d1\u0081\u00d0\u00ba\u00d0\u00b8 \u00d0\u00b7\u00d0\u00b0\u00d0\u00b4\u00d0\u00b0\u00d1\u0087\u00d0\u00b8
 task.view=\u0417\u0430\u043f\u0443\u0441\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 '${key}'

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java b/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java
index b72a127..08bf3dc 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/AnyOperations.java
@@ -37,7 +37,6 @@ import org.apache.syncope.common.lib.patch.PasswordPatch;
 import org.apache.syncope.common.lib.patch.RelationshipPatch;
 import org.apache.syncope.common.lib.patch.AbstractReplacePatchItem;
 import org.apache.syncope.common.lib.patch.BooleanReplacePatchItem;
-import org.apache.syncope.common.lib.patch.LongReplacePatchItem;
 import org.apache.syncope.common.lib.patch.StringPatchItem;
 import org.apache.syncope.common.lib.patch.StringReplacePatchItem;
 import org.apache.syncope.common.lib.patch.UserPatch;
@@ -175,10 +174,10 @@ public final class AnyOperations {
         diff(updated, original, result, incremental);
 
         // 1. relationships
-        Map<Pair<String, Long>, RelationshipTO> updatedRels = updated.getRelationshipMap();
-        Map<Pair<String, Long>, RelationshipTO> originalRels = original.getRelationshipMap();
+        Map<Pair<String, String>, RelationshipTO> updatedRels = updated.getRelationshipMap();
+        Map<Pair<String, String>, RelationshipTO> originalRels = original.getRelationshipMap();
 
-        for (Map.Entry<Pair<String, Long>, RelationshipTO> entry : updatedRels.entrySet()) {
+        for (Map.Entry<Pair<String, String>, RelationshipTO> entry : updatedRels.entrySet()) {
             if (!originalRels.containsKey(entry.getKey())) {
                 result.getRelationships().add(new RelationshipPatch.Builder().
                         operation(PatchOperation.ADD_REPLACE).
@@ -187,7 +186,7 @@ public final class AnyOperations {
         }
 
         if (!incremental) {
-            for (Pair<String, Long> key : CollectionUtils.subtract(originalRels.keySet(), updatedRels.keySet())) {
+            for (Pair<String, String> key : CollectionUtils.subtract(originalRels.keySet(), updatedRels.keySet())) {
                 result.getRelationships().add(new RelationshipPatch.Builder().
                         operation(PatchOperation.DELETE).
                         relationshipTO(originalRels.get(key)).build());
@@ -195,10 +194,10 @@ public final class AnyOperations {
         }
 
         // 2. memberships
-        Map<Long, MembershipTO> updatedMembs = updated.getMembershipMap();
-        Map<Long, MembershipTO> originalMembs = original.getMembershipMap();
+        Map<String, MembershipTO> updatedMembs = updated.getMembershipMap();
+        Map<String, MembershipTO> originalMembs = original.getMembershipMap();
 
-        for (Map.Entry<Long, MembershipTO> entry : updatedMembs.entrySet()) {
+        for (Map.Entry<String, MembershipTO> entry : updatedMembs.entrySet()) {
             if (!originalMembs.containsKey(entry.getKey())) {
                 result.getMemberships().add(new MembershipPatch.Builder().
                         operation(PatchOperation.ADD_REPLACE).membershipTO(entry.getValue()).build());
@@ -206,7 +205,7 @@ public final class AnyOperations {
         }
 
         if (!incremental) {
-            for (Long key : CollectionUtils.subtract(originalMembs.keySet(), updatedMembs.keySet())) {
+            for (String key : CollectionUtils.subtract(originalMembs.keySet(), updatedMembs.keySet())) {
                 result.getMemberships().add(new MembershipPatch.Builder().
                         operation(PatchOperation.DELETE).membershipTO(originalMembs.get(key)).build());
             }
@@ -246,8 +245,8 @@ public final class AnyOperations {
         } else if (!updated.getSecurityQuestion().equals(original.getSecurityQuestion())
                 || StringUtils.isNotBlank(updated.getSecurityAnswer())) {
 
-            result.setSecurityQuestion(
-                    new LongReplacePatchItem.Builder().value(updated.getSecurityQuestion()).build());
+            result.setSecurityQuestion(new StringReplacePatchItem.Builder().
+                    value(updated.getSecurityQuestion()).build());
             result.setSecurityAnswer(
                     new StringReplacePatchItem.Builder().value(updated.getSecurityAnswer()).build());
         }
@@ -269,10 +268,10 @@ public final class AnyOperations {
         }
 
         // 5. relationships
-        Map<Pair<String, Long>, RelationshipTO> updatedRels = updated.getRelationshipMap();
-        Map<Pair<String, Long>, RelationshipTO> originalRels = original.getRelationshipMap();
+        Map<Pair<String, String>, RelationshipTO> updatedRels = updated.getRelationshipMap();
+        Map<Pair<String, String>, RelationshipTO> originalRels = original.getRelationshipMap();
 
-        for (Map.Entry<Pair<String, Long>, RelationshipTO> entry : updatedRels.entrySet()) {
+        for (Map.Entry<Pair<String, String>, RelationshipTO> entry : updatedRels.entrySet()) {
             if (!originalRels.containsKey(entry.getKey())) {
                 result.getRelationships().add(new RelationshipPatch.Builder().
                         operation(PatchOperation.ADD_REPLACE).
@@ -281,7 +280,7 @@ public final class AnyOperations {
         }
 
         if (!incremental) {
-            for (Pair<String, Long> key : CollectionUtils.subtract(originalRels.keySet(), updatedRels.keySet())) {
+            for (Pair<String, String> key : CollectionUtils.subtract(originalRels.keySet(), updatedRels.keySet())) {
                 result.getRelationships().add(new RelationshipPatch.Builder().
                         operation(PatchOperation.DELETE).
                         relationshipTO(originalRels.get(key)).build());
@@ -289,10 +288,10 @@ public final class AnyOperations {
         }
 
         // 6. memberships
-        Map<Long, MembershipTO> updatedMembs = updated.getMembershipMap();
-        Map<Long, MembershipTO> originalMembs = original.getMembershipMap();
+        Map<String, MembershipTO> updatedMembs = updated.getMembershipMap();
+        Map<String, MembershipTO> originalMembs = original.getMembershipMap();
 
-        for (Map.Entry<Long, MembershipTO> entry : updatedMembs.entrySet()) {
+        for (Map.Entry<String, MembershipTO> entry : updatedMembs.entrySet()) {
             if (!originalMembs.containsKey(entry.getKey())) {
                 result.getMemberships().add(new MembershipPatch.Builder().
                         operation(PatchOperation.ADD_REPLACE).membershipTO(entry.getValue()).build());
@@ -300,7 +299,7 @@ public final class AnyOperations {
         }
 
         if (!incremental) {
-            for (Long key : CollectionUtils.subtract(originalMembs.keySet(), updatedMembs.keySet())) {
+            for (String key : CollectionUtils.subtract(originalMembs.keySet(), updatedMembs.keySet())) {
                 result.getMemberships().add(new MembershipPatch.Builder().
                         operation(PatchOperation.DELETE).membershipTO(originalMembs.get(key)).build());
             }
@@ -326,10 +325,10 @@ public final class AnyOperations {
         result.setName(replacePatchItem(updated.getName(), original.getName(), new StringReplacePatchItem()));
 
         // 2. ownership
-        result.setUserOwner(replacePatchItem(
-                updated.getUserOwner(), original.getUserOwner(), new LongReplacePatchItem()));
-        result.setGroupOwner(replacePatchItem(
-                updated.getGroupOwner(), original.getGroupOwner(), new LongReplacePatchItem()));
+        result.setUserOwner(
+                replacePatchItem(updated.getUserOwner(), original.getUserOwner(), new StringReplacePatchItem()));
+        result.setGroupOwner(replacePatchItem(updated.getGroupOwner(), original.getGroupOwner(),
+                new StringReplacePatchItem()));
 
         // 3. dynamic membership
         result.setUDynMembershipCond(updated.getUDynMembershipCond());
@@ -382,7 +381,7 @@ public final class AnyOperations {
 
     private static <T extends AnyTO, K extends AnyPatch> void patch(final T to, final K patch, final T result) {
         // check same key
-        if (to.getKey() == null || to.getKey() != patch.getKey()) {
+        if (to.getKey() == null || !to.getKey().equals(patch.getKey())) {
             throw new IllegalArgumentException(
                     to.getClass().getSimpleName() + " and " + patch.getClass().getSimpleName()
                     + " keys must be the same");

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/EntityTOUtils.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/EntityTOUtils.java b/common/lib/src/main/java/org/apache/syncope/common/lib/EntityTOUtils.java
index 17123b5..a715992 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/EntityTOUtils.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/EntityTOUtils.java
@@ -41,11 +41,11 @@ public final class EntityTOUtils {
         ANY_FIELDS = Collections.unmodifiableList(anyFields);
     }
 
-    public static <KEY, E extends EntityTO<KEY>> Transformer<E, KEY> keyTransformer() {
-        return new Transformer<E, KEY>() {
+    public static <E extends EntityTO> 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/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java b/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java
index dbce5de..b084eb9 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/SyncopeConstants.java
@@ -58,6 +58,10 @@ public final class SyncopeConstants {
             + "@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$",
             Pattern.CASE_INSENSITIVE);
 
+    public static final String UUID_REGEX = "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}";
+
+    public static final Pattern UUID_PATTERN = Pattern.compile(UUID_REGEX);
+
     private SyncopeConstants() {
         // private constructor for utility class
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/patch/AbstractReplacePatchItem.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/AbstractReplacePatchItem.java b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/AbstractReplacePatchItem.java
index e8f17f4..8282427 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/AbstractReplacePatchItem.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/AbstractReplacePatchItem.java
@@ -30,7 +30,7 @@ import org.apache.syncope.common.lib.types.PatchOperation;
  * @param <T> {@code String}, {@code Long} or {@code Boolean}
  */
 @XmlType
-@XmlSeeAlso({ BooleanReplacePatchItem.class, LongReplacePatchItem.class, StringReplacePatchItem.class })
+@XmlSeeAlso({ BooleanReplacePatchItem.class, StringReplacePatchItem.class })
 public abstract class AbstractReplacePatchItem<T> extends AbstractPatchItem<T> {
 
     private static final long serialVersionUID = 2027599764019829563L;

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/patch/AnyPatch.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/AnyPatch.java b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/AnyPatch.java
index 48d7778..3ec141d 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/AnyPatch.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/AnyPatch.java
@@ -34,7 +34,7 @@ public abstract class AnyPatch extends AbstractBaseBean {
 
     private static final long serialVersionUID = -7445489774552440544L;
 
-    private long key;
+    private String key;
 
     private StringReplacePatchItem realm;
 
@@ -46,12 +46,12 @@ public abstract class AnyPatch extends AbstractBaseBean {
 
     private final Set<StringPatchItem> resources = new HashSet<>();
 
-    public long getKey() {
+    public String getKey() {
         return key;
     }
 
     @PathParam("key")
-    public void setKey(final long key) {
+    public void setKey(final String key) {
         this.key = key;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/patch/AssociationPatch.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/AssociationPatch.java b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/AssociationPatch.java
index 009b30d..56efe7e 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/AssociationPatch.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/AssociationPatch.java
@@ -29,16 +29,16 @@ public class AssociationPatch extends PasswordPatch {
 
     private static final long serialVersionUID = 6295778399633883767L;
 
-    private long key;
+    private String key;
 
     private ResourceAssociationAction action;
 
-    public long getKey() {
+    public String getKey() {
         return key;
     }
 
     @PathParam("key")
-    public void setKey(final long key) {
+    public void setKey(final String key) {
         this.key = key;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/patch/DeassociationPatch.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/DeassociationPatch.java b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/DeassociationPatch.java
index 1067753..e5271e0 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/DeassociationPatch.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/DeassociationPatch.java
@@ -35,18 +35,18 @@ public class DeassociationPatch extends AbstractBaseBean {
 
     private static final long serialVersionUID = 6295778399633883767L;
 
-    private long key;
+    private String key;
 
     private ResourceDeassociationAction action;
 
     private final List<String> resources = new ArrayList<>();
 
-    public long getKey() {
+    public String getKey() {
         return key;
     }
 
     @PathParam("key")
-    public void setKey(final long key) {
+    public void setKey(final String key) {
         this.key = key;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/patch/GroupPatch.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/GroupPatch.java b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/GroupPatch.java
index 262d15a..29353ff 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/GroupPatch.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/GroupPatch.java
@@ -42,9 +42,9 @@ public class GroupPatch extends AnyPatch {
 
     private StringReplacePatchItem name;
 
-    private LongReplacePatchItem userOwner;
+    private StringReplacePatchItem userOwner;
 
-    private LongReplacePatchItem groupOwner;
+    private StringReplacePatchItem groupOwner;
 
     private String udynMembershipCond;
 
@@ -62,19 +62,19 @@ public class GroupPatch extends AnyPatch {
         this.name = name;
     }
 
-    public LongReplacePatchItem getUserOwner() {
+    public StringReplacePatchItem getUserOwner() {
         return userOwner;
     }
 
-    public void setUserOwner(final LongReplacePatchItem userOwner) {
+    public void setUserOwner(final StringReplacePatchItem userOwner) {
         this.userOwner = userOwner;
     }
 
-    public LongReplacePatchItem getGroupOwner() {
+    public StringReplacePatchItem getGroupOwner() {
         return groupOwner;
     }
 
-    public void setGroupOwner(final LongReplacePatchItem groupOwner) {
+    public void setGroupOwner(final StringReplacePatchItem groupOwner) {
         this.groupOwner = groupOwner;
     }
 

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

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/patch/ResourceDeassociationPatch.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/ResourceDeassociationPatch.java b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/ResourceDeassociationPatch.java
index 9738498..233d5bd 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/ResourceDeassociationPatch.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/ResourceDeassociationPatch.java
@@ -41,7 +41,7 @@ public class ResourceDeassociationPatch extends AbstractBaseBean {
 
     private ResourceDeassociationAction action;
 
-    private final List<Long> anyKyes = new ArrayList<>();
+    private final List<String> anyKyes = new ArrayList<>();
 
     public String getKey() {
         return key;
@@ -73,7 +73,7 @@ public class ResourceDeassociationPatch extends AbstractBaseBean {
     @XmlElementWrapper(name = "anyKyes")
     @XmlElement(name = "key")
     @JsonProperty("anyKyes")
-    public List<Long> getAnyKyes() {
+    public List<String> getAnyKyes() {
         return anyKyes;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/patch/StatusPatch.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/StatusPatch.java b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/StatusPatch.java
index be299b1..b7d9c1e 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/StatusPatch.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/StatusPatch.java
@@ -32,7 +32,7 @@ public class StatusPatch extends PasswordPatch {
     /**
      * Key of user to for which status update is requested.
      */
-    private long key;
+    private String key;
 
     private StatusPatchType type;
 
@@ -41,12 +41,12 @@ public class StatusPatch extends PasswordPatch {
      */
     private String token;
 
-    public long getKey() {
+    public String getKey() {
         return key;
     }
 
     @PathParam("key")
-    public void setKey(final long key) {
+    public void setKey(final String key) {
         this.key = key;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/patch/UserPatch.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/UserPatch.java b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/UserPatch.java
index 3f4e9eb..5dc50f1 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/UserPatch.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/UserPatch.java
@@ -36,7 +36,7 @@ public class UserPatch extends AnyPatch {
 
     private PasswordPatch password;
 
-    private LongReplacePatchItem securityQuestion;
+    private StringReplacePatchItem securityQuestion;
 
     private StringReplacePatchItem securityAnswer;
 
@@ -64,11 +64,11 @@ public class UserPatch extends AnyPatch {
         this.password = password;
     }
 
-    public LongReplacePatchItem getSecurityQuestion() {
+    public StringReplacePatchItem getSecurityQuestion() {
         return securityQuestion;
     }
 
-    public void setSecurityQuestion(final LongReplacePatchItem securityQuestion) {
+    public void setSecurityQuestion(final StringReplacePatchItem securityQuestion) {
         this.securityQuestion = securityQuestion;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/policy/AbstractPolicyTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/policy/AbstractPolicyTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/policy/AbstractPolicyTO.java
index 69564ac..bc41628 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/policy/AbstractPolicyTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/policy/AbstractPolicyTO.java
@@ -29,16 +29,17 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlSeeAlso;
 import javax.xml.bind.annotation.XmlType;
 import org.apache.syncope.common.lib.AbstractBaseBean;
+import org.apache.syncope.common.lib.to.EntityTO;
 
 @XmlRootElement(name = "abstractPolicy")
 @XmlType
 @XmlSeeAlso({ AccountPolicyTO.class, PasswordPolicyTO.class, PullPolicyTO.class })
 @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
-public abstract class AbstractPolicyTO extends AbstractBaseBean {
+public abstract class AbstractPolicyTO extends AbstractBaseBean implements EntityTO {
 
     private static final long serialVersionUID = -2903888572649721035L;
 
-    private long key;
+    private String key;
 
     private String description;
 
@@ -46,12 +47,14 @@ public abstract class AbstractPolicyTO extends AbstractBaseBean {
 
     private final List<String> usedByRealms = new ArrayList<>();
 
-    public long getKey() {
+    @Override
+    public String getKey() {
         return key;
     }
 
     @PathParam("key")
-    public void setKey(final long key) {
+    @Override
+    public void setKey(final String key) {
         this.key = key;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/search/AnyObjectFiqlSearchConditionBuilder.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/search/AnyObjectFiqlSearchConditionBuilder.java b/common/lib/src/main/java/org/apache/syncope/common/lib/search/AnyObjectFiqlSearchConditionBuilder.java
index a84d9ad..59bcfe3 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/search/AnyObjectFiqlSearchConditionBuilder.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/search/AnyObjectFiqlSearchConditionBuilder.java
@@ -53,25 +53,25 @@ public class AnyObjectFiqlSearchConditionBuilder extends AbstractFiqlSearchCondi
         return newBuilderInstance().is(property);
     }
 
-    public CompleteCondition inGroups(final Long group, final Long... moreGroups) {
+    public CompleteCondition inGroups(final String group, final String... moreGroups) {
         return newBuilderInstance().
                 is(SpecialAttr.GROUPS.toString()).
                 inGroups(group, moreGroups);
     }
 
-    public CompleteCondition notInGroups(final Long group, final Long... moreGroups) {
+    public CompleteCondition notInGroups(final String group, final String... moreGroups) {
         return newBuilderInstance().
                 is(SpecialAttr.GROUPS.toString()).
                 notInGroups(group, moreGroups);
     }
 
-    public CompleteCondition inRelationships(final Long anyType, final Long... moreAnyTypes) {
+    public CompleteCondition inRelationships(final String anyType, final String... moreAnyTypes) {
         return newBuilderInstance().
                 is(SpecialAttr.RELATIONSHIPS.toString()).
                 inRelationships(anyType, moreAnyTypes);
     }
 
-    public CompleteCondition notInRelationships(final Long anyType, final Long... moreAnyTypes) {
+    public CompleteCondition notInRelationships(final String anyType, final String... moreAnyTypes) {
         return newBuilderInstance().
                 is(SpecialAttr.RELATIONSHIPS.toString()).
                 notInRelationships(anyType, moreAnyTypes);
@@ -120,25 +120,25 @@ public class AnyObjectFiqlSearchConditionBuilder extends AbstractFiqlSearchCondi
         }
 
         @Override
-        public CompleteCondition inGroups(final Long group, final Long... moreGroups) {
+        public CompleteCondition inGroups(final String group, final String... moreGroups) {
             this.result = SpecialAttr.GROUPS.toString();
             return condition(FiqlParser.EQ, group, (Object[]) moreGroups);
         }
 
         @Override
-        public CompleteCondition notInGroups(final Long group, final Long... moreGroups) {
+        public CompleteCondition notInGroups(final String group, final String... moreGroups) {
             this.result = SpecialAttr.GROUPS.toString();
             return condition(FiqlParser.NEQ, group, (Object[]) moreGroups);
         }
 
         @Override
-        public CompleteCondition inRelationships(final Long anyObject, final Long... moreAnyObjects) {
+        public CompleteCondition inRelationships(final String anyObject, final String... moreAnyObjects) {
             this.result = SpecialAttr.RELATIONSHIPS.toString();
             return condition(FiqlParser.EQ, anyObject, (Object[]) moreAnyObjects);
         }
 
         @Override
-        public CompleteCondition notInRelationships(final Long group, final Long... moreRelationships) {
+        public CompleteCondition notInRelationships(final String group, final String... moreRelationships) {
             this.result = SpecialAttr.RELATIONSHIPS.toString();
             return condition(FiqlParser.NEQ, group, (Object[]) moreRelationships);
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/search/AnyObjectProperty.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/search/AnyObjectProperty.java b/common/lib/src/main/java/org/apache/syncope/common/lib/search/AnyObjectProperty.java
index 55815ea..9d32013 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/search/AnyObjectProperty.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/search/AnyObjectProperty.java
@@ -22,13 +22,13 @@ import org.apache.cxf.jaxrs.ext.search.client.CompleteCondition;
 
 public interface AnyObjectProperty extends SyncopeProperty {
 
-    CompleteCondition inGroups(Long group, Long... moreGroups);
+    CompleteCondition inGroups(String group, String... moreGroups);
 
-    CompleteCondition notInGroups(Long group, Long... moreGroups);
+    CompleteCondition notInGroups(String group, String... moreGroups);
 
-    CompleteCondition inRelationships(Long anyObject, Long... moreAnyObjects);
+    CompleteCondition inRelationships(String anyObject, String... moreAnyObjects);
 
-    CompleteCondition notInRelationships(Long anyObject, Long... moreAnyObjects);
+    CompleteCondition notInRelationships(String anyObject, String... moreAnyObjects);
 
     CompleteCondition inRelationshipTypes(String type, String... moreTypes);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserFiqlSearchConditionBuilder.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserFiqlSearchConditionBuilder.java b/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserFiqlSearchConditionBuilder.java
index 30e89dd..4cd5f0d 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserFiqlSearchConditionBuilder.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserFiqlSearchConditionBuilder.java
@@ -38,25 +38,25 @@ public class UserFiqlSearchConditionBuilder extends AbstractFiqlSearchConditionB
         return newBuilderInstance().is(property);
     }
 
-    public CompleteCondition inGroups(final Long group, final Long... moreGroups) {
+    public CompleteCondition inGroups(final String group, final String... moreGroups) {
         return newBuilderInstance().
                 is(SpecialAttr.GROUPS.toString()).
                 inGroups(group, moreGroups);
     }
 
-    public CompleteCondition notInGroups(final Long group, final Long... moreGroups) {
+    public CompleteCondition notInGroups(final String group, final String... moreGroups) {
         return newBuilderInstance().
                 is(SpecialAttr.GROUPS.toString()).
                 notInGroups(group, moreGroups);
     }
 
-    public CompleteCondition inRelationships(final Long anyType, final Long... moreAnyTypes) {
+    public CompleteCondition inRelationships(final String anyType, final String... moreAnyTypes) {
         return newBuilderInstance().
                 is(SpecialAttr.RELATIONSHIPS.toString()).
                 inRelationships(anyType, moreAnyTypes);
     }
 
-    public CompleteCondition notInRelationships(final Long anyType, final Long... moreAnyTypes) {
+    public CompleteCondition notInRelationships(final String anyType, final String... moreAnyTypes) {
         return newBuilderInstance().
                 is(SpecialAttr.RELATIONSHIPS.toString()).
                 notInRelationships(anyType, moreAnyTypes);
@@ -117,25 +117,25 @@ public class UserFiqlSearchConditionBuilder extends AbstractFiqlSearchConditionB
         }
 
         @Override
-        public CompleteCondition inGroups(final Long group, final Long... moreGroups) {
+        public CompleteCondition inGroups(final String group, final String... moreGroups) {
             this.result = SpecialAttr.GROUPS.toString();
             return condition(FiqlParser.EQ, group, (Object[]) moreGroups);
         }
 
         @Override
-        public CompleteCondition notInGroups(final Long group, final Long... moreGroups) {
+        public CompleteCondition notInGroups(final String group, final String... moreGroups) {
             this.result = SpecialAttr.GROUPS.toString();
             return condition(FiqlParser.NEQ, group, (Object[]) moreGroups);
         }
 
         @Override
-        public CompleteCondition inRelationships(final Long anyObject, final Long... moreAnyObjects) {
+        public CompleteCondition inRelationships(final String anyObject, final String... moreAnyObjects) {
             this.result = SpecialAttr.RELATIONSHIPS.toString();
             return condition(FiqlParser.EQ, anyObject, (Object[]) moreAnyObjects);
         }
 
         @Override
-        public CompleteCondition notInRelationships(final Long anyObject, final Long... moreAnyObjects) {
+        public CompleteCondition notInRelationships(final String anyObject, final String... moreAnyObjects) {
             this.result = SpecialAttr.RELATIONSHIPS.toString();
             return condition(FiqlParser.NEQ, anyObject, (Object[]) moreAnyObjects);
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserProperty.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserProperty.java b/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserProperty.java
index 9294ab0..4c717f9 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserProperty.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/search/UserProperty.java
@@ -22,13 +22,13 @@ import org.apache.cxf.jaxrs.ext.search.client.CompleteCondition;
 
 public interface UserProperty extends SyncopeProperty {
 
-    CompleteCondition inGroups(Long group, Long... moreGroups);
+    CompleteCondition inGroups(String group, String... moreGroups);
 
-    CompleteCondition notInGroups(Long group, Long... moreGroups);
+    CompleteCondition notInGroups(String group, String... moreGroups);
 
-    CompleteCondition inRelationships(Long anyObject, Long... moreAnyObjects);
+    CompleteCondition inRelationships(String anyObject, String... moreAnyObjects);
 
-    CompleteCondition notInRelationships(Long anyObject, Long... moreAnyObjects);
+    CompleteCondition notInRelationships(String anyObject, String... moreAnyObjects);
 
     CompleteCondition inRelationshipTypes(String type, String... moreTypes);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractSchemaTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractSchemaTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractSchemaTO.java
index f6e3536..2917c98 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractSchemaTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractSchemaTO.java
@@ -29,7 +29,7 @@ import org.apache.syncope.common.lib.AbstractBaseBean;
 @XmlType
 @XmlSeeAlso({ PlainSchemaTO.class, DerSchemaTO.class, VirSchemaTO.class })
 @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
-public abstract class AbstractSchemaTO extends AbstractBaseBean implements EntityTO<String> {
+public abstract class AbstractSchemaTO extends AbstractBaseBean implements EntityTO {
 
     private static final long serialVersionUID = 4088388951694301759L;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractTaskTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractTaskTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractTaskTO.java
index 0c6356b..65603f7 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractTaskTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AbstractTaskTO.java
@@ -34,24 +34,24 @@ import javax.xml.bind.annotation.XmlType;
 @XmlType
 @XmlSeeAlso({ PropagationTaskTO.class, SchedTaskTO.class, NotificationTaskTO.class })
 @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
-public abstract class AbstractTaskTO extends AbstractStartEndBean implements EntityTO<Long> {
+public abstract class AbstractTaskTO extends AbstractStartEndBean implements EntityTO {
 
     private static final long serialVersionUID = 386450127003321197L;
 
-    private Long key;
+    private String key;
 
     private String latestExecStatus;
 
     private final List<ExecTO> executions = new ArrayList<>();
 
     @Override
-    public Long getKey() {
+    public String getKey() {
         return key;
     }
 
     @PathParam("key")
     @Override
-    public void setKey(final Long key) {
+    public void setKey(final String key) {
         this.key = key;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyObjectTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyObjectTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyObjectTO.java
index 35b796b..f652d76 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyObjectTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyObjectTO.java
@@ -41,7 +41,7 @@ public class AnyObjectTO extends AnyTO implements RelatableTO, GroupableTO {
 
     private final List<MembershipTO> memberships = new ArrayList<>();
 
-    private final List<Long> dynGroups = new ArrayList<>();
+    private final List<String> dynGroups = new ArrayList<>();
 
     @XmlElementWrapper(name = "relationships")
     @XmlElement(name = "relationship")
@@ -53,8 +53,8 @@ public class AnyObjectTO extends AnyTO implements RelatableTO, GroupableTO {
 
     @JsonIgnore
     @Override
-    public Map<Pair<String, Long>, RelationshipTO> getRelationshipMap() {
-        Map<Pair<String, Long>, RelationshipTO> result = new HashMap<>(getRelationships().size());
+    public Map<Pair<String, String>, RelationshipTO> getRelationshipMap() {
+        Map<Pair<String, String>, RelationshipTO> result = new HashMap<>(getRelationships().size());
         for (RelationshipTO relationship : getRelationships()) {
             result.put(Pair.of(relationship.getType(), relationship.getRightKey()), relationship);
         }
@@ -73,8 +73,8 @@ public class AnyObjectTO extends AnyTO implements RelatableTO, GroupableTO {
 
     @JsonIgnore
     @Override
-    public Map<Long, MembershipTO> getMembershipMap() {
-        Map<Long, MembershipTO> result = new HashMap<>(getMemberships().size());
+    public Map<String, MembershipTO> getMembershipMap() {
+        Map<String, MembershipTO> result = new HashMap<>(getMemberships().size());
         for (MembershipTO membership : getMemberships()) {
             result.put(membership.getRightKey(), membership);
         }
@@ -87,7 +87,7 @@ public class AnyObjectTO extends AnyTO implements RelatableTO, GroupableTO {
     @XmlElement(name = "role")
     @JsonProperty("dynGroups")
     @Override
-    public List<Long> getDynGroups() {
+    public List<String> getDynGroups() {
         return dynGroups;
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTO.java
index 3a40431..4651835 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTO.java
@@ -38,11 +38,11 @@ import javax.xml.bind.annotation.XmlType;
 @XmlType
 @XmlSeeAlso({ UserTO.class, GroupTO.class, AnyObjectTO.class })
 @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
-public abstract class AnyTO extends ConnObjectTO implements EntityTO<Long> {
+public abstract class AnyTO extends ConnObjectTO implements EntityTO {
 
     private static final long serialVersionUID = -754311920679872084L;
 
-    private Long key;
+    private String key;
 
     private String type;
 
@@ -59,12 +59,12 @@ public abstract class AnyTO extends ConnObjectTO implements EntityTO<Long> {
     private final Set<String> resources = new HashSet<>();
 
     @Override
-    public Long getKey() {
+    public String getKey() {
         return key;
     }
 
     @Override
-    public void setKey(final Long key) {
+    public void setKey(final String key) {
         this.key = key;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTypeClassTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTypeClassTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTypeClassTO.java
index 1845e06..d68a7fe 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTypeClassTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTypeClassTO.java
@@ -30,7 +30,7 @@ import org.apache.syncope.common.lib.AbstractBaseBean;
 
 @XmlRootElement(name = "anyTypeClass")
 @XmlType
-public class AnyTypeClassTO extends AbstractBaseBean implements EntityTO<String> {
+public class AnyTypeClassTO extends AbstractBaseBean implements EntityTO {
 
     private static final long serialVersionUID = -591757688607551266L;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTypeTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTypeTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTypeTO.java
index 9a4d44a..07827cb 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTypeTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/AnyTypeTO.java
@@ -31,7 +31,7 @@ import org.apache.syncope.common.lib.types.AnyTypeKind;
 
 @XmlRootElement(name = "anyType")
 @XmlType
-public class AnyTypeTO extends AbstractBaseBean implements EntityTO<String> {
+public class AnyTypeTO extends AbstractBaseBean implements EntityTO {
 
     private static final long serialVersionUID = 6771657557616874373L;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnInstanceTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnInstanceTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnInstanceTO.java
index f44cb62..4f91355 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnInstanceTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ConnInstanceTO.java
@@ -37,11 +37,11 @@ import org.apache.syncope.common.lib.types.ConnectorCapability;
 
 @XmlRootElement(name = "connInstance")
 @XmlType
-public class ConnInstanceTO extends AbstractBaseBean implements EntityTO<Long> {
+public class ConnInstanceTO extends AbstractBaseBean implements EntityTO {
 
     private static final long serialVersionUID = 2707778645445168671L;
 
-    private Long key;
+    private String key;
 
     private String location;
 
@@ -62,13 +62,13 @@ public class ConnInstanceTO extends AbstractBaseBean implements EntityTO<Long> {
     private ConnPoolConfTO poolConf;
 
     @Override
-    public Long getKey() {
+    public String getKey() {
         return key;
     }
 
     @PathParam("key")
     @Override
-    public void setKey(final Long key) {
+    public void setKey(final String key) {
         this.key = key;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/DomainTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/DomainTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/DomainTO.java
index faeedce..8994cf8 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/DomainTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/DomainTO.java
@@ -25,7 +25,7 @@ import org.apache.syncope.common.lib.types.CipherAlgorithm;
 
 @XmlRootElement(name = "domain")
 @XmlType
-public class DomainTO extends AbstractBaseBean implements EntityTO<String> {
+public class DomainTO extends AbstractBaseBean implements EntityTO {
 
     private static final long serialVersionUID = -7938075259986084934L;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/EntityTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/EntityTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/EntityTO.java
index 493753d..c07749f 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/EntityTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/EntityTO.java
@@ -20,9 +20,9 @@ package org.apache.syncope.common.lib.to;
 
 import java.io.Serializable;
 
-public interface EntityTO<KEY> extends Serializable {
+public interface EntityTO extends Serializable {
 
-    KEY getKey();
+    String getKey();
 
-    void setKey(KEY key);
+    void setKey(String key);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/ExecTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ExecTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ExecTO.java
index 2ebe33c..323658e 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ExecTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ExecTO.java
@@ -24,15 +24,15 @@ import org.apache.syncope.common.lib.types.JobType;
 
 @XmlRootElement(name = "exec")
 @XmlType()
-public class ExecTO extends AbstractStartEndBean implements EntityTO<Long> {
+public class ExecTO extends AbstractStartEndBean implements EntityTO {
 
     private static final long serialVersionUID = -4621191979198357081L;
 
-    private Long key;
+    private String key;
 
     private JobType jobType;
 
-    private Long refKey;
+    private String refKey;
 
     private String refDesc;
 
@@ -41,12 +41,12 @@ public class ExecTO extends AbstractStartEndBean implements EntityTO<Long> {
     private String message;
 
     @Override
-    public Long getKey() {
+    public String getKey() {
         return key;
     }
 
     @Override
-    public void setKey(final Long key) {
+    public void setKey(final String key) {
         this.key = key;
     }
 
@@ -58,11 +58,11 @@ public class ExecTO extends AbstractStartEndBean implements EntityTO<Long> {
         this.jobType = jobType;
     }
 
-    public Long getRefKey() {
+    public String getRefKey() {
         return refKey;
     }
 
-    public void setRefKey(final Long refKey) {
+    public void setRefKey(final String refKey) {
         this.refKey = refKey;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupTO.java
index ef62280..0ae0885 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupTO.java
@@ -42,9 +42,9 @@ public class GroupTO extends AnyTO {
 
     private String name;
 
-    private Long userOwner;
+    private String userOwner;
 
-    private Long groupOwner;
+    private String groupOwner;
 
     private String udynMembershipCond;
 
@@ -72,19 +72,19 @@ public class GroupTO extends AnyTO {
         this.name = name;
     }
 
-    public Long getUserOwner() {
+    public String getUserOwner() {
         return userOwner;
     }
 
-    public void setUserOwner(final Long userOwner) {
+    public void setUserOwner(final String userOwner) {
         this.userOwner = userOwner;
     }
 
-    public Long getGroupOwner() {
+    public String getGroupOwner() {
         return groupOwner;
     }
 
-    public void setGroupOwner(final Long groupOwner) {
+    public void setGroupOwner(final String groupOwner) {
         this.groupOwner = groupOwner;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupableTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupableTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupableTO.java
index 014e897..7b6a824 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupableTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/GroupableTO.java
@@ -23,9 +23,9 @@ import java.util.Map;
 
 public interface GroupableTO {
 
-    Map<Long, MembershipTO> getMembershipMap();
+    Map<String, MembershipTO> getMembershipMap();
 
     List<MembershipTO> getMemberships();
 
-    List<Long> getDynGroups();
+    List<String> getDynGroups();
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/JobTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/JobTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/JobTO.java
index 02930a5..69a339c 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/JobTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/JobTO.java
@@ -32,7 +32,7 @@ public class JobTO extends AbstractBaseBean {
 
     private JobType type;
 
-    private Long refKey;
+    private String refKey;
 
     private String refDesc;
 
@@ -52,11 +52,11 @@ public class JobTO extends AbstractBaseBean {
         this.type = type;
     }
 
-    public Long getRefKey() {
+    public String getRefKey() {
         return refKey;
     }
 
-    public void setRefKey(final Long refKey) {
+    public void setRefKey(final String refKey) {
         this.refKey = refKey;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/MailTemplateTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/MailTemplateTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/MailTemplateTO.java
index 637a0d5..bf25867 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/MailTemplateTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/MailTemplateTO.java
@@ -25,7 +25,7 @@ import org.apache.syncope.common.lib.AbstractBaseBean;
 
 @XmlRootElement(name = "mailTemplate")
 @XmlType
-public class MailTemplateTO extends AbstractBaseBean implements EntityTO<String> {
+public class MailTemplateTO extends AbstractBaseBean implements EntityTO {
 
     private static final long serialVersionUID = 8389755049666062735L;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/MappingItemTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/MappingItemTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/MappingItemTO.java
index 62e38ed..84ba6fb 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/MappingItemTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/MappingItemTO.java
@@ -31,11 +31,11 @@ import org.apache.syncope.common.lib.types.MappingPurpose;
 
 @XmlRootElement(name = "mappingItem")
 @XmlType
-public class MappingItemTO extends AbstractBaseBean implements EntityTO<Long> {
+public class MappingItemTO extends AbstractBaseBean implements EntityTO {
 
     private static final long serialVersionUID = 2983498836767176862L;
 
-    private Long key;
+    private String key;
 
     /**
      * Attribute schema to be mapped. Consider that we can associate tha same attribute schema more than once, with
@@ -92,12 +92,12 @@ public class MappingItemTO extends AbstractBaseBean implements EntityTO<Long> {
     }
 
     @Override
-    public Long getKey() {
+    public String getKey() {
         return key;
     }
 
     @Override
-    public void setKey(final Long key) {
+    public void setKey(final String key) {
         this.key = key;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/MembershipTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/MembershipTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/MembershipTO.java
index aa68a23..6ded46b 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/MembershipTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/MembershipTO.java
@@ -32,18 +32,18 @@ public class MembershipTO extends RelationshipTO {
 
         private final MembershipTO instance = new MembershipTO();
 
-        public Builder left(final String leftType, final long leftKey) {
+        public Builder left(final String leftType, final String leftKey) {
             instance.setLeftType(leftType);
             instance.setLeftKey(leftKey);
             return this;
         }
 
-        public Builder group(final long groupKey) {
+        public Builder group(final String groupKey) {
             instance.setRightKey(groupKey);
             return this;
         }
 
-        public Builder group(final long groupKey, final String groupName) {
+        public Builder group(final String groupKey, final String groupName) {
             instance.setRightKey(groupKey);
             instance.setGroupName(groupName);
             return this;

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTO.java
index 9b241be..6f4a73c 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTO.java
@@ -37,11 +37,11 @@ import org.apache.syncope.common.lib.types.TraceLevel;
 
 @XmlRootElement(name = "notification")
 @XmlType
-public class NotificationTO extends AbstractBaseBean implements EntityTO<Long> {
+public class NotificationTO extends AbstractBaseBean implements EntityTO {
 
     private static final long serialVersionUID = -6145117115632592612L;
 
-    private Long key;
+    private String key;
 
     private final List<String> events = new ArrayList<>();
 
@@ -91,13 +91,13 @@ public class NotificationTO extends AbstractBaseBean implements EntityTO<Long> {
     }
 
     @Override
-    public Long getKey() {
+    public String getKey() {
         return key;
     }
 
     @PathParam("key")
     @Override
-    public void setKey(final Long key) {
+    public void setKey(final String key) {
         this.key = key;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTaskTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTaskTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTaskTO.java
index 4cfbf32..ce74be2 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTaskTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/NotificationTaskTO.java
@@ -21,7 +21,6 @@ package org.apache.syncope.common.lib.to;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import java.util.HashSet;
 import java.util.Set;
-
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlRootElement;
@@ -35,11 +34,11 @@ public class NotificationTaskTO extends AbstractTaskTO {
 
     private static final long serialVersionUID = 371671242591093846L;
 
-    private Long notification;
+    private String notification;
 
     private AnyTypeKind anyTypeKind;
 
-    private Long anyKey;
+    private String anyKey;
 
     private final Set<String> recipients = new HashSet<>();
 
@@ -55,11 +54,11 @@ public class NotificationTaskTO extends AbstractTaskTO {
 
     private TraceLevel traceLevel;
 
-    public Long getNotification() {
+    public String getNotification() {
         return notification;
     }
 
-    public void setNotification(final Long notification) {
+    public void setNotification(final String notification) {
         this.notification = notification;
     }
 
@@ -71,11 +70,11 @@ public class NotificationTaskTO extends AbstractTaskTO {
         this.anyTypeKind = anyTypeKind;
     }
 
-    public Long getAnyKey() {
+    public String getAnyKey() {
         return anyKey;
     }
 
-    public void setAnyKey(final Long anyKey) {
+    public void setAnyKey(final String anyKey) {
         this.anyKey = anyKey;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/ProvisionTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ProvisionTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ProvisionTO.java
index 7a683d5..b7dae9c 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ProvisionTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ProvisionTO.java
@@ -29,11 +29,11 @@ import org.apache.syncope.common.lib.AbstractBaseBean;
 
 @XmlRootElement(name = "provision")
 @XmlType
-public class ProvisionTO extends AbstractBaseBean implements EntityTO<Long> {
+public class ProvisionTO extends AbstractBaseBean implements EntityTO {
 
     private static final long serialVersionUID = 8298910216218007927L;
 
-    private Long key;
+    private String key;
 
     private String anyType;
 
@@ -48,12 +48,12 @@ public class ProvisionTO extends AbstractBaseBean implements EntityTO<Long> {
     private final List<String> virSchemas = new ArrayList<>();
 
     @Override
-    public Long getKey() {
+    public String getKey() {
         return key;
     }
 
     @Override
-    public void setKey(final Long key) {
+    public void setKey(final String key) {
         this.key = key;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/RealmTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/RealmTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/RealmTO.java
index 6c0853d..c685b4a 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/RealmTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/RealmTO.java
@@ -35,21 +35,21 @@ import org.apache.syncope.common.lib.jaxb.XmlGenericMapAdapter;
 
 @XmlRootElement(name = "realm")
 @XmlType
-public class RealmTO extends AbstractBaseBean implements EntityTO<Long> {
+public class RealmTO extends AbstractBaseBean implements EntityTO {
 
     private static final long serialVersionUID = 516330662956254391L;
 
-    private Long key;
+    private String key;
 
     private String name;
 
-    private long parent;
+    private String parent;
 
     private String fullPath;
 
-    private Long accountPolicy;
+    private String accountPolicy;
 
-    private Long passwordPolicy;
+    private String passwordPolicy;
 
     private final Set<String> actionsClassNames = new HashSet<>();
 
@@ -58,12 +58,12 @@ public class RealmTO extends AbstractBaseBean implements EntityTO<Long> {
     private final Map<String, AnyTO> templates = new HashMap<>();
 
     @Override
-    public Long getKey() {
+    public String getKey() {
         return key;
     }
 
     @Override
-    public void setKey(final Long key) {
+    public void setKey(final String key) {
         this.key = key;
     }
 
@@ -75,11 +75,11 @@ public class RealmTO extends AbstractBaseBean implements EntityTO<Long> {
         this.name = name;
     }
 
-    public long getParent() {
+    public String getParent() {
         return parent;
     }
 
-    public void setParent(final long parent) {
+    public void setParent(final String parent) {
         this.parent = parent;
     }
 
@@ -92,19 +92,19 @@ public class RealmTO extends AbstractBaseBean implements EntityTO<Long> {
         this.fullPath = fullPath;
     }
 
-    public Long getAccountPolicy() {
+    public String getAccountPolicy() {
         return accountPolicy;
     }
 
-    public void setAccountPolicy(final Long accountPolicy) {
+    public void setAccountPolicy(final String accountPolicy) {
         this.accountPolicy = accountPolicy;
     }
 
-    public Long getPasswordPolicy() {
+    public String getPasswordPolicy() {
         return passwordPolicy;
     }
 
-    public void setPasswordPolicy(final Long passwordPolicy) {
+    public void setPasswordPolicy(final String passwordPolicy) {
         this.passwordPolicy = passwordPolicy;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelatableTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelatableTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelatableTO.java
index 1ff7232..1914c13 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelatableTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelatableTO.java
@@ -24,7 +24,7 @@ import org.apache.commons.lang3.tuple.Pair;
 
 public interface RelatableTO {
 
-    Map<Pair<String, Long>, RelationshipTO> getRelationshipMap();
+    Map<Pair<String, String>, RelationshipTO> getRelationshipMap();
 
     List<RelationshipTO> getRelationships();
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelationshipTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelationshipTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelationshipTO.java
index e20621b..29326c2 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelationshipTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelationshipTO.java
@@ -37,13 +37,13 @@ public class RelationshipTO extends AbstractBaseBean {
             return this;
         }
 
-        public Builder left(final String leftType, final long leftKey) {
+        public Builder left(final String leftType, final String leftKey) {
             instance.setLeftType(leftType);
             instance.setLeftKey(leftKey);
             return this;
         }
 
-        public Builder right(final String rightType, final long rightKey) {
+        public Builder right(final String rightType, final String rightKey) {
             instance.setRightType(rightType);
             instance.setRightKey(rightKey);
             return this;
@@ -58,11 +58,11 @@ public class RelationshipTO extends AbstractBaseBean {
 
     private String leftType;
 
-    private long leftKey;
+    private String leftKey;
 
     private String rightType;
 
-    private long rightKey;
+    private String rightKey;
 
     public String getType() {
         return type;
@@ -80,11 +80,11 @@ public class RelationshipTO extends AbstractBaseBean {
         this.leftType = leftType;
     }
 
-    public long getLeftKey() {
+    public String getLeftKey() {
         return leftKey;
     }
 
-    public void setLeftKey(final long leftKey) {
+    public void setLeftKey(final String leftKey) {
         this.leftKey = leftKey;
     }
 
@@ -96,11 +96,11 @@ public class RelationshipTO extends AbstractBaseBean {
         this.rightType = rightType;
     }
 
-    public long getRightKey() {
+    public String getRightKey() {
         return rightKey;
     }
 
-    public void setRightKey(final long rightKey) {
+    public void setRightKey(final String rightKey) {
         this.rightKey = rightKey;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelationshipTypeTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelationshipTypeTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelationshipTypeTO.java
index f790255..d5eba40 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelationshipTypeTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/RelationshipTypeTO.java
@@ -25,7 +25,7 @@ import org.apache.syncope.common.lib.AbstractBaseBean;
 
 @XmlRootElement(name = "relationshipType")
 @XmlType
-public class RelationshipTypeTO extends AbstractBaseBean implements EntityTO<String> {
+public class RelationshipTypeTO extends AbstractBaseBean implements EntityTO {
 
     private static final long serialVersionUID = -1884088415277925817L;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTO.java
index 7260796..73b16f7 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTO.java
@@ -31,11 +31,11 @@ import org.apache.syncope.common.lib.report.AbstractReportletConf;
 
 @XmlRootElement(name = "report")
 @XmlType
-public class ReportTO extends AbstractStartEndBean implements EntityTO<Long> {
+public class ReportTO extends AbstractStartEndBean implements EntityTO {
 
     private static final long serialVersionUID = 5274568072084814410L;
 
-    private Long key;
+    private String key;
 
     private String name;
 
@@ -56,13 +56,13 @@ public class ReportTO extends AbstractStartEndBean implements EntityTO<Long> {
     private String template;
 
     @Override
-    public Long getKey() {
+    public String getKey() {
         return key;
     }
 
     @PathParam("key")
     @Override
-    public void setKey(final Long key) {
+    public void setKey(final String key) {
         this.key = key;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTemplateTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTemplateTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTemplateTO.java
index e295f50..1731d4c 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTemplateTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ReportTemplateTO.java
@@ -25,7 +25,7 @@ import org.apache.syncope.common.lib.AbstractBaseBean;
 
 @XmlRootElement(name = "reportTemplate")
 @XmlType
-public class ReportTemplateTO extends AbstractBaseBean implements EntityTO<String> {
+public class ReportTemplateTO extends AbstractBaseBean implements EntityTO {
 
     private static final long serialVersionUID = 7776679004906244896L;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/ResourceTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ResourceTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ResourceTO.java
index 0f176c4..c132a7c 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/ResourceTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/ResourceTO.java
@@ -32,13 +32,14 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 import org.apache.commons.collections4.IterableUtils;
 import org.apache.commons.collections4.Predicate;
+import org.apache.syncope.common.lib.AbstractBaseBean;
 import org.apache.syncope.common.lib.types.ConnConfProperty;
 import org.apache.syncope.common.lib.types.ConnectorCapability;
 import org.apache.syncope.common.lib.types.TraceLevel;
 
 @XmlRootElement(name = "resource")
 @XmlType
-public class ResourceTO extends AbstractAnnotatedBean implements EntityTO<String> {
+public class ResourceTO extends AbstractBaseBean implements EntityTO {
 
     private static final long serialVersionUID = -9193551354041698963L;
 
@@ -47,7 +48,7 @@ public class ResourceTO extends AbstractAnnotatedBean implements EntityTO<String
     /**
      * The resource type is identified by the associated connector.
      */
-    private Long connector;
+    private String connector;
 
     /**
      * Convenience information: display name for the connector id.
@@ -70,11 +71,11 @@ public class ResourceTO extends AbstractAnnotatedBean implements EntityTO<String
 
     private TraceLevel pullTraceLevel = TraceLevel.ALL;
 
-    private Long passwordPolicy;
+    private String passwordPolicy;
 
-    private Long accountPolicy;
+    private String accountPolicy;
 
-    private Long pullPolicy;
+    private String pullPolicy;
 
     private final Set<ConnConfProperty> confOverride = new HashSet<>();
 
@@ -103,11 +104,11 @@ public class ResourceTO extends AbstractAnnotatedBean implements EntityTO<String
         this.enforceMandatoryCondition = enforceMandatoryCondition;
     }
 
-    public Long getConnector() {
+    public String getConnector() {
         return connector;
     }
 
-    public void setConnector(final Long connector) {
+    public void setConnector(final String connector) {
         this.connector = connector;
     }
 
@@ -159,27 +160,27 @@ public class ResourceTO extends AbstractAnnotatedBean implements EntityTO<String
         this.updateTraceLevel = updateTraceLevel;
     }
 
-    public Long getPasswordPolicy() {
+    public String getPasswordPolicy() {
         return passwordPolicy;
     }
 
-    public void setPasswordPolicy(final Long passwordPolicy) {
+    public void setPasswordPolicy(final String passwordPolicy) {
         this.passwordPolicy = passwordPolicy;
     }
 
-    public Long getAccountPolicy() {
+    public String getAccountPolicy() {
         return accountPolicy;
     }
 
-    public void setAccountPolicy(final Long accountPolicy) {
+    public void setAccountPolicy(final String accountPolicy) {
         this.accountPolicy = accountPolicy;
     }
 
-    public Long getPullPolicy() {
+    public String getPullPolicy() {
         return pullPolicy;
     }
 
-    public void setPullPolicy(final Long pullPolicy) {
+    public void setPullPolicy(final String pullPolicy) {
         this.pullPolicy = pullPolicy;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/RoleTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/RoleTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/RoleTO.java
index bf59bb5..cbb8784 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/RoleTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/RoleTO.java
@@ -32,7 +32,7 @@ import org.apache.syncope.common.lib.AbstractBaseBean;
 
 @XmlRootElement(name = "role")
 @XmlType
-public class RoleTO extends AbstractBaseBean implements EntityTO<String> {
+public class RoleTO extends AbstractBaseBean implements EntityTO {
 
     private static final long serialVersionUID = 4560822655754800031L;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/common/lib/src/main/java/org/apache/syncope/common/lib/to/SecurityQuestionTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/SecurityQuestionTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/SecurityQuestionTO.java
index aa7e2ce..bf3d221 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/to/SecurityQuestionTO.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/SecurityQuestionTO.java
@@ -25,22 +25,22 @@ import org.apache.syncope.common.lib.AbstractBaseBean;
 
 @XmlRootElement(name = "securityQuestion")
 @XmlType
-public class SecurityQuestionTO extends AbstractBaseBean implements EntityTO<Long> {
+public class SecurityQuestionTO extends AbstractBaseBean implements EntityTO {
 
     private static final long serialVersionUID = 5969810939993556530L;
 
-    private Long key;
+    private String key;
 
     private String content;
 
     @Override
-    public Long getKey() {
+    public String getKey() {
         return key;
     }
 
     @PathParam("key")
     @Override
-    public void setKey(final Long key) {
+    public void setKey(final String key) {
         this.key = key;
     }