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:09 UTC

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

[SYNCOPE-822] UUID keys


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

Branch: refs/heads/master
Commit: 550ee4f4c9d52cacf879303f29905212a5f4d2c3
Parents: 1735c44
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Apr 18 15:28:16 2016 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Tue Apr 19 15:01:19 2016 +0200

----------------------------------------------------------------------
 .../anyobject/AnyObjectSyncopeOperations.java   |   16 +-
 .../connector/ConnectorSyncopeOperations.java   |    8 +-
 .../EntitlementSyncopeOperations.java           |    2 +-
 .../commands/group/GroupSyncopeOperations.java  |   26 +-
 .../cli/commands/migrate/MigrateConf.java       |  292 ++--
 .../NotificationSyncopeOperations.java          |    8 +-
 .../policy/PolicySyncopeOperations.java         |    8 +-
 .../question/QuestionSyncopeOperations.java     |   10 +-
 .../report/ReportSyncopeOperations.java         |   59 +-
 .../resource/ResourceResultManager.java         |    5 -
 .../commands/task/TaskSyncopeOperations.java    |    9 +-
 .../client/cli/commands/user/UserCommand.java   |   10 +-
 .../client/cli/commands/user/UserGetKey.java    |   51 -
 .../cli/commands/user/UserGetUsername.java      |   51 -
 .../cli/commands/user/UserReadByUsername.java   |    3 +-
 .../commands/user/UserSyncopeOperations.java    |   17 +-
 client/cli/src/test/resources/schema20.sql      |  401 +++---
 .../console/SyncopeConsoleApplication.java      |    6 +-
 .../client/console/SyncopeConsoleSession.java   |    3 +-
 .../client/console/bulk/BulkContent.java        |    8 +-
 .../console/commons/RoleDataProvider.java       |    4 +-
 .../commons/SortableAnyProviderComparator.java  |   10 +-
 .../console/commons/status/StatusBean.java      |    4 +-
 .../MailTemplateDirectoryPanel.java             |   13 +-
 .../NotificationDirectoryPanel.java             |    7 +-
 .../notifications/NotificationHandler.java      |    2 +-
 .../notifications/NotificationTasks.java        |    9 +-
 .../NotificationWizardBuilder.java              |   43 +-
 .../syncope/client/console/pages/Realms.java    |    2 +-
 .../console/panels/AnyDirectoryPanel.java       |    1 +
 .../console/panels/AnyObjectDirectoryPanel.java |    7 +-
 .../console/panels/AnyTypeDetailsPanel.java     |    3 +-
 .../console/panels/GroupDirectoryPanel.java     |    7 +-
 .../client/console/panels/RealmChoicePanel.java |   22 +-
 .../client/console/panels/RealmDetails.java     |   20 +-
 .../panels/SecurityQuestionsModalPanel.java     |    2 +-
 .../console/panels/SecurityQuestionsPanel.java  |   43 +-
 .../console/panels/UserDirectoryPanel.java      |    7 +-
 .../client/console/panels/VirSchemaDetails.java |   17 +-
 .../panels/search/AbstractSearchPanel.java      |    8 +-
 .../panels/search/AnyObjectSearchPanel.java     |    6 +-
 .../search/AnySelectionDirectoryPanel.java      |    5 +-
 .../console/panels/search/GroupSearchPanel.java |    6 +-
 .../panels/search/SearchClausePanel.java        |    6 +-
 .../console/panels/search/SearchUtils.java      |   18 +-
 .../console/rest/AbstractAnyRestClient.java     |   18 +-
 .../console/rest/AnyObjectRestClient.java       |    4 +-
 .../console/rest/ConnectorRestClient.java       |    4 +-
 .../console/rest/ExecutionRestClient.java       |    4 +-
 .../client/console/rest/GroupRestClient.java    |   10 +-
 .../console/rest/NotificationRestClient.java    |    4 +-
 .../client/console/rest/PolicyRestClient.java   |    6 +-
 .../client/console/rest/ReportRestClient.java   |   12 +-
 .../client/console/rest/ResourceRestClient.java |    4 +-
 .../client/console/rest/SchemaRestClient.java   |    3 +-
 .../rest/SecurityQuestionRestClient.java        |    2 +-
 .../client/console/rest/TaskRestClient.java     |   30 +-
 .../client/console/rest/UserRestClient.java     |   10 +-
 .../tasks/AnyPropagationTaskDirectoryPanel.java |    4 +-
 .../console/tasks/AnyPropagationTasks.java      |    2 +-
 .../tasks/NotificationTaskDirectoryPanel.java   |   21 +-
 .../tasks/PropagationTaskDirectoryPanel.java    |    3 +-
 .../tasks/ProvisioningTaskDirectoryPanel.java   |    5 +-
 .../console/tasks/SchedTaskDirectoryPanel.java  |    5 +-
 .../console/tasks/SchedTaskWizardBuilder.java   |    4 +-
 .../client/console/tasks/TaskExecutions.java    |   13 +-
 .../client/console/topology/Topology.java       |   16 +-
 .../console/topology/TopologyTogglePanel.java   |    6 +-
 .../topology/TopologyWebSocketBehavior.java     |   10 +-
 .../repeater/data/table/KeyPropertyColumn.java  |   60 +
 .../wicket/markup/html/form/PolicyRenderer.java |   10 +-
 .../console/widgets/ReconciliationWidget.java   |    4 +-
 .../console/widgets/reconciliation/Any.java     |    6 +-
 .../ReconciliationReportParser.java             |    6 +-
 .../console/wizards/any/AbstractAttrs.java      |    8 +-
 .../wizards/any/AnyObjectWizardBuilder.java     |    2 +-
 .../console/wizards/any/AnyWizardBuilder.java   |    2 +-
 .../client/console/wizards/any/AuxClasses.java  |   14 +-
 .../client/console/wizards/any/DerAttrs.java    |    3 +-
 .../console/wizards/any/GroupWizardBuilder.java |    4 +-
 .../client/console/wizards/any/Ownership.java   |    8 +-
 .../client/console/wizards/any/PlainAttrs.java  |    3 +-
 .../console/wizards/any/Relationships.java      |    3 +-
 .../client/console/wizards/any/Resources.java   |    4 +-
 .../client/console/wizards/any/Roles.java       |    3 +-
 .../client/console/wizards/any/StatusPanel.java |    2 +-
 .../console/wizards/any/UserWizardBuilder.java  |    5 +-
 .../client/console/wizards/any/VirAttrs.java    |    3 +-
 .../resources/ConnectorDetailsPanel.java        |    2 +-
 .../resources/ProvisionWizardBuilder.java       |    2 +-
 .../resources/ResourceConnConfPanel.java        |    2 +-
 .../wizards/resources/ResourceMappingPanel.java |    8 +-
 .../resources/ResourceProvisionPanel.java       |    2 +-
 .../resources/ResourceSecurityPanel.java        |   30 +-
 .../META-INF/resources/css/syncopeConsole.css   |    4 +
 .../src/main/resources/console.properties       |    2 +-
 .../SyncopeConsoleApplication.properties        |    2 +-
 .../SyncopeConsoleApplication_it.properties     |    2 +-
 .../SyncopeConsoleApplication_pt_BR.properties  |    2 +-
 .../SyncopeConsoleApplication_ru.properties     |  106 +-
 .../console/panels/DirectoryPanel.properties    |    2 -
 .../console/panels/DirectoryPanel_it.properties |    4 +-
 .../panels/DirectoryPanel_pt_BR.properties      |    2 -
 .../console/panels/DirectoryPanel_ru.properties |   50 +-
 .../console/tasks/TaskDirectoryPanel.properties |    2 -
 .../tasks/TaskDirectoryPanel_it.properties      |    2 -
 .../tasks/TaskDirectoryPanel_pt_BR.properties   |    2 -
 .../tasks/TaskDirectoryPanel_ru.properties      |   17 +-
 .../syncope/common/lib/AnyOperations.java       |   47 +-
 .../syncope/common/lib/EntityTOUtils.java       |    6 +-
 .../syncope/common/lib/SyncopeConstants.java    |    4 +
 .../lib/patch/AbstractReplacePatchItem.java     |    2 +-
 .../syncope/common/lib/patch/AnyPatch.java      |    6 +-
 .../common/lib/patch/AssociationPatch.java      |    6 +-
 .../common/lib/patch/DeassociationPatch.java    |    6 +-
 .../syncope/common/lib/patch/GroupPatch.java    |   12 +-
 .../common/lib/patch/LongReplacePatchItem.java  |   37 -
 .../lib/patch/ResourceDeassociationPatch.java   |    4 +-
 .../syncope/common/lib/patch/StatusPatch.java   |    6 +-
 .../syncope/common/lib/patch/UserPatch.java     |    6 +-
 .../common/lib/policy/AbstractPolicyTO.java     |   11 +-
 .../AnyObjectFiqlSearchConditionBuilder.java    |   16 +-
 .../common/lib/search/AnyObjectProperty.java    |    8 +-
 .../search/UserFiqlSearchConditionBuilder.java  |   16 +-
 .../syncope/common/lib/search/UserProperty.java |    8 +-
 .../syncope/common/lib/to/AbstractSchemaTO.java |    2 +-
 .../syncope/common/lib/to/AbstractTaskTO.java   |    8 +-
 .../syncope/common/lib/to/AnyObjectTO.java      |   12 +-
 .../org/apache/syncope/common/lib/to/AnyTO.java |    8 +-
 .../syncope/common/lib/to/AnyTypeClassTO.java   |    2 +-
 .../apache/syncope/common/lib/to/AnyTypeTO.java |    2 +-
 .../syncope/common/lib/to/ConnInstanceTO.java   |    8 +-
 .../apache/syncope/common/lib/to/DomainTO.java  |    2 +-
 .../apache/syncope/common/lib/to/EntityTO.java  |    6 +-
 .../apache/syncope/common/lib/to/ExecTO.java    |   14 +-
 .../apache/syncope/common/lib/to/GroupTO.java   |   12 +-
 .../syncope/common/lib/to/GroupableTO.java      |    4 +-
 .../org/apache/syncope/common/lib/to/JobTO.java |    6 +-
 .../syncope/common/lib/to/MailTemplateTO.java   |    2 +-
 .../syncope/common/lib/to/MappingItemTO.java    |    8 +-
 .../syncope/common/lib/to/MembershipTO.java     |    6 +-
 .../syncope/common/lib/to/NotificationTO.java   |    8 +-
 .../common/lib/to/NotificationTaskTO.java       |   13 +-
 .../syncope/common/lib/to/ProvisionTO.java      |    8 +-
 .../apache/syncope/common/lib/to/RealmTO.java   |   26 +-
 .../syncope/common/lib/to/RelatableTO.java      |    2 +-
 .../syncope/common/lib/to/RelationshipTO.java   |   16 +-
 .../common/lib/to/RelationshipTypeTO.java       |    2 +-
 .../apache/syncope/common/lib/to/ReportTO.java  |    8 +-
 .../syncope/common/lib/to/ReportTemplateTO.java |    2 +-
 .../syncope/common/lib/to/ResourceTO.java       |   27 +-
 .../apache/syncope/common/lib/to/RoleTO.java    |    2 +-
 .../common/lib/to/SecurityQuestionTO.java       |    8 +-
 .../apache/syncope/common/lib/to/UserTO.java    |   18 +-
 .../syncope/common/lib/to/VirSchemaTO.java      |    6 +-
 .../syncope/common/lib/to/WorkflowFormTO.java   |    6 +-
 .../common/lib/types/ClientExceptionType.java   |    1 +
 .../org/apache/syncope/common/lib/JSONTest.java |    3 +-
 .../syncope/common/rest/api/RESTHeaders.java    |    4 -
 .../common/rest/api/beans/AbstractQuery.java    |    2 +-
 .../rest/api/beans/BulkExecDeleteQuery.java     |    8 +-
 .../common/rest/api/beans/ExecuteQuery.java     |    8 +-
 .../common/rest/api/beans/TaskExecQuery.java    |    8 +-
 .../common/rest/api/beans/TaskQuery.java        |   16 +-
 .../common/rest/api/service/AnyService.java     |   12 +-
 .../rest/api/service/ConnectorService.java      |    4 +-
 .../rest/api/service/NotificationService.java   |    4 +-
 .../common/rest/api/service/PolicyService.java  |    4 +-
 .../common/rest/api/service/RealmService.java   |    4 +-
 .../common/rest/api/service/ReportService.java  |   10 +-
 .../rest/api/service/ResourceService.java       |    2 +-
 .../api/service/SecurityQuestionService.java    |    4 +-
 .../common/rest/api/service/TaskService.java    |    8 +-
 .../common/rest/api/service/UserService.java    |   22 -
 .../rest/api/service/UserWorkflowService.java   |    2 +-
 .../syncope/core/logic/AbstractAnyLogic.java    |   12 +-
 .../syncope/core/logic/AbstractJobLogic.java    |    4 +-
 .../core/logic/AbstractResourceAssociator.java  |   12 +-
 .../syncope/core/logic/AnyObjectLogic.java      |   28 +-
 .../apache/syncope/core/logic/AnyTypeLogic.java |    4 +-
 .../syncope/core/logic/ConnectorLogic.java      |   12 +-
 .../apache/syncope/core/logic/GroupLogic.java   |   32 +-
 .../syncope/core/logic/NotificationLogic.java   |   16 +-
 .../apache/syncope/core/logic/PolicyLogic.java  |   12 +-
 .../apache/syncope/core/logic/RealmLogic.java   |   25 +-
 .../apache/syncope/core/logic/ReportLogic.java  |   26 +-
 .../syncope/core/logic/ResourceLogic.java       |    6 +-
 .../apache/syncope/core/logic/SchemaLogic.java  |    3 +
 .../core/logic/SecurityQuestionLogic.java       |   40 +-
 .../apache/syncope/core/logic/TaskLogic.java    |   36 +-
 .../apache/syncope/core/logic/UserLogic.java    |   49 +-
 .../syncope/core/logic/UserWorkflowLogic.java   |    4 +-
 .../core/logic/report/GroupReportlet.java       |   16 +-
 .../logic/report/ReconciliationReportlet.java   |   10 +-
 .../syncope/core/logic/report/ReportJob.java    |    4 +-
 .../core/logic/report/ReportJobDelegate.java    |    2 +-
 .../core/logic/report/UserReportlet.java        |   12 +-
 .../core/persistence/api/dao/AnyDAO.java        |    8 +-
 .../core/persistence/api/dao/AnyObjectDAO.java  |    2 +-
 .../core/persistence/api/dao/AnySearchDAO.java  |    2 +-
 .../persistence/api/dao/AnyTypeClassDAO.java    |    2 +-
 .../core/persistence/api/dao/AnyTypeDAO.java    |    2 +-
 .../core/persistence/api/dao/ConfDAO.java       |    2 +-
 .../persistence/api/dao/ConnInstanceDAO.java    |    6 +-
 .../syncope/core/persistence/api/dao/DAO.java   |    2 +-
 .../core/persistence/api/dao/DomainDAO.java     |    2 +-
 .../api/dao/ExternalResourceDAO.java            |    4 +-
 .../core/persistence/api/dao/GroupDAO.java      |   12 +-
 .../core/persistence/api/dao/LoggerDAO.java     |    2 +-
 .../persistence/api/dao/MailTemplateDAO.java    |    2 +-
 .../persistence/api/dao/NotificationDAO.java    |    6 +-
 .../core/persistence/api/dao/PlainAttrDAO.java  |    6 +-
 .../persistence/api/dao/PlainAttrValueDAO.java  |    6 +-
 .../core/persistence/api/dao/PolicyDAO.java     |    4 +-
 .../core/persistence/api/dao/RealmDAO.java      |    8 +-
 .../api/dao/RelationshipTypeDAO.java            |    2 +-
 .../core/persistence/api/dao/ReportDAO.java     |    6 +-
 .../core/persistence/api/dao/ReportExecDAO.java |    6 +-
 .../persistence/api/dao/ReportTemplateDAO.java  |    2 +-
 .../core/persistence/api/dao/RoleDAO.java       |    2 +-
 .../core/persistence/api/dao/SchemaDAO.java     |    2 +-
 .../api/dao/SecurityQuestionDAO.java            |    6 +-
 .../core/persistence/api/dao/TaskDAO.java       |   22 +-
 .../core/persistence/api/dao/TaskExecDAO.java   |   10 +-
 .../core/persistence/api/dao/UserDAO.java       |    6 +-
 .../persistence/api/dao/search/AnyTypeCond.java |   12 +-
 .../api/dao/search/MembershipCond.java          |    6 +-
 .../api/dao/search/RelationshipCond.java        |    6 +-
 .../api/dao/search/ResourceCond.java            |   12 +-
 .../persistence/api/dao/search/SearchCond.java  |    2 +-
 .../persistence/api/entity/AnnotatedEntity.java |    2 +-
 .../core/persistence/api/entity/Any.java        |    2 +-
 .../core/persistence/api/entity/AnyAbout.java   |    2 +-
 .../persistence/api/entity/AnyTemplate.java     |    2 +-
 .../core/persistence/api/entity/AnyType.java    |    4 +-
 .../persistence/api/entity/AnyTypeClass.java    |    4 +-
 .../persistence/api/entity/ConnInstance.java    |    4 +-
 .../core/persistence/api/entity/Domain.java     |    4 +-
 .../persistence/api/entity/DynMembership.java   |    2 +-
 .../core/persistence/api/entity/Entity.java     |    4 +-
 .../persistence/api/entity/EntityFactory.java   |    6 +-
 .../core/persistence/api/entity/Exec.java       |    2 +-
 .../api/entity/LinkingMappingItem.java          |    4 +-
 .../core/persistence/api/entity/Logger.java     |    2 +-
 .../persistence/api/entity/MailTemplate.java    |    4 +-
 .../persistence/api/entity/Notification.java    |    2 +-
 .../core/persistence/api/entity/PlainAttr.java  |    2 +-
 .../persistence/api/entity/PlainAttrValue.java  |    2 +-
 .../core/persistence/api/entity/Policy.java     |    2 +-
 .../api/entity/ProvidedKeyEntity.java           |   25 +
 .../core/persistence/api/entity/Realm.java      |    2 +-
 .../persistence/api/entity/Relationship.java    |    2 +-
 .../api/entity/RelationshipType.java            |    4 +-
 .../core/persistence/api/entity/Report.java     |    2 +-
 .../persistence/api/entity/ReportTemplate.java  |    4 +-
 .../core/persistence/api/entity/Role.java       |    4 +-
 .../core/persistence/api/entity/Schema.java     |    4 +-
 .../api/entity/anyobject/AnyObject.java         |    6 +-
 .../core/persistence/api/entity/conf/Conf.java  |    5 +-
 .../api/entity/group/TypeExtension.java         |    2 +-
 .../api/entity/resource/ExternalResource.java   |    6 +-
 .../api/entity/resource/Mapping.java            |    2 +-
 .../api/entity/resource/MappingItem.java        |    2 +-
 .../api/entity/resource/Provision.java          |    2 +-
 .../api/entity/task/NotificationTask.java       |    4 +-
 .../api/entity/task/PropagationTask.java        |    4 +-
 .../api/entity/task/PushTaskAnyFilter.java      |    2 +-
 .../core/persistence/api/entity/task/Task.java  |    2 +-
 .../api/entity/user/SecurityQuestion.java       |    2 +-
 .../core/persistence/api/entity/user/User.java  |    6 +-
 .../api/search/SearchCondVisitor.java           |    8 +-
 .../api/search/SearchCondConverterTest.java     |   18 +-
 core/persistence-jpa/pom.xml                    |    6 +-
 .../persistence/jpa/dao/AbstractAnyDAO.java     |   52 +-
 .../core/persistence/jpa/dao/AbstractDAO.java   |    2 +-
 .../persistence/jpa/dao/JPAAnyObjectDAO.java    |    6 +-
 .../persistence/jpa/dao/JPAAnySearchDAO.java    |  176 ++-
 .../persistence/jpa/dao/JPAAnyTypeClassDAO.java |    2 +-
 .../core/persistence/jpa/dao/JPAAnyTypeDAO.java |    2 +-
 .../core/persistence/jpa/dao/JPAConfDAO.java    |    8 +-
 .../persistence/jpa/dao/JPAConnInstanceDAO.java |    6 +-
 .../persistence/jpa/dao/JPADerSchemaDAO.java    |    4 +-
 .../core/persistence/jpa/dao/JPADomainDAO.java  |    2 +-
 .../jpa/dao/JPAExternalResourceDAO.java         |    8 +-
 .../core/persistence/jpa/dao/JPAGroupDAO.java   |   39 +-
 .../core/persistence/jpa/dao/JPALoggerDAO.java  |    2 +-
 .../persistence/jpa/dao/JPAMailTemplateDAO.java |    2 +-
 .../persistence/jpa/dao/JPANotificationDAO.java |    6 +-
 .../persistence/jpa/dao/JPAPlainAttrDAO.java    |    6 +-
 .../jpa/dao/JPAPlainAttrValueDAO.java           |    8 +-
 .../persistence/jpa/dao/JPAPlainSchemaDAO.java  |    4 +-
 .../core/persistence/jpa/dao/JPAPolicyDAO.java  |    4 +-
 .../core/persistence/jpa/dao/JPARealmDAO.java   |    8 +-
 .../jpa/dao/JPARelationshipTypeDAO.java         |    2 +-
 .../core/persistence/jpa/dao/JPAReportDAO.java  |    6 +-
 .../persistence/jpa/dao/JPAReportExecDAO.java   |    6 +-
 .../jpa/dao/JPAReportTemplateDAO.java           |    2 +-
 .../core/persistence/jpa/dao/JPARoleDAO.java    |    2 +-
 .../jpa/dao/JPASecurityQuestionDAO.java         |    6 +-
 .../core/persistence/jpa/dao/JPATaskDAO.java    |   24 +-
 .../persistence/jpa/dao/JPATaskExecDAO.java     |   18 +-
 .../core/persistence/jpa/dao/JPAUserDAO.java    |   17 +-
 .../persistence/jpa/dao/JPAVirSchemaDAO.java    |    4 +-
 .../jpa/entity/AbstractAnnotatedEntity.java     |    4 +-
 .../persistence/jpa/entity/AbstractAny.java     |    6 +-
 .../jpa/entity/AbstractDynMembership.java       |    2 +-
 .../persistence/jpa/entity/AbstractEntity.java  |    2 +-
 .../persistence/jpa/entity/AbstractExec.java    |    2 +-
 .../jpa/entity/AbstractGeneratedKeyEntity.java  |   42 +
 .../jpa/entity/AbstractPlainAttr.java           |    4 +-
 .../jpa/entity/AbstractPlainAttrValue.java      |   17 +-
 .../jpa/entity/AbstractProvidedKeyEntity.java   |   43 +
 .../jpa/entity/AnnotatedEntityListener.java     |    2 +-
 .../persistence/jpa/entity/JPAAnyAbout.java     |   13 +-
 .../jpa/entity/JPAAnyTemplateRealm.java         |   11 +-
 .../core/persistence/jpa/entity/JPAAnyType.java |   20 +-
 .../persistence/jpa/entity/JPAAnyTypeClass.java |   16 +-
 .../persistence/jpa/entity/JPAAnyUtils.java     |    2 +-
 .../persistence/jpa/entity/JPAConnInstance.java |   13 +-
 .../persistence/jpa/entity/JPADerSchema.java    |   20 +-
 .../core/persistence/jpa/entity/JPADomain.java  |   16 +-
 .../jpa/entity/JPAEntityFactory.java            |  122 +-
 .../core/persistence/jpa/entity/JPALogger.java  |    8 +-
 .../persistence/jpa/entity/JPAMailTemplate.java |   16 +-
 .../persistence/jpa/entity/JPANotification.java |   17 +-
 .../persistence/jpa/entity/JPAPlainSchema.java  |   20 +-
 .../core/persistence/jpa/entity/JPARealm.java   |   15 +-
 .../jpa/entity/JPARelationshipType.java         |   16 +-
 .../core/persistence/jpa/entity/JPAReport.java  |   13 +-
 .../persistence/jpa/entity/JPAReportExec.java   |    9 -
 .../jpa/entity/JPAReportTemplate.java           |   16 +-
 .../jpa/entity/JPAReportletConfInstance.java    |   11 +-
 .../core/persistence/jpa/entity/JPARole.java    |   24 +-
 .../jpa/entity/JPASecurityQuestion.java         |   11 +-
 .../persistence/jpa/entity/JPAVirSchema.java    |   20 +-
 .../anyobject/JPAADynGroupMembership.java       |   13 +-
 .../jpa/entity/anyobject/JPAAMembership.java    |   17 +-
 .../jpa/entity/anyobject/JPAAPlainAttr.java     |    9 -
 .../anyobject/JPAAPlainAttrUniqueValue.java     |   11 +-
 .../entity/anyobject/JPAAPlainAttrValue.java    |    9 -
 .../jpa/entity/anyobject/JPAARelationship.java  |   19 +-
 .../jpa/entity/anyobject/JPAAnyObject.java      |   23 +-
 .../jpa/entity/conf/JPACPlainAttr.java          |   12 -
 .../entity/conf/JPACPlainAttrUniqueValue.java   |   11 +-
 .../jpa/entity/conf/JPACPlainAttrValue.java     |    9 -
 .../persistence/jpa/entity/conf/JPAConf.java    |   59 +-
 .../jpa/entity/group/JPAGPlainAttr.java         |    9 -
 .../entity/group/JPAGPlainAttrUniqueValue.java  |   11 +-
 .../jpa/entity/group/JPAGPlainAttrValue.java    |    9 -
 .../persistence/jpa/entity/group/JPAGroup.java  |   17 +-
 .../jpa/entity/group/JPATypeExtension.java      |   19 +-
 .../jpa/entity/policy/AbstractPolicy.java       |   13 +-
 .../jpa/entity/policy/JPAAccountPolicy.java     |    6 +-
 .../policy/JPAAccountRuleConfInstance.java      |   13 +-
 .../policy/JPAPasswordRuleConfInstance.java     |   13 +-
 .../entity/resource/AbstractAnyTemplate.java    |    4 +-
 .../entity/resource/JPAExternalResource.java    |   27 +-
 .../jpa/entity/resource/JPAMapping.java         |   13 +-
 .../jpa/entity/resource/JPAMappingItem.java     |   17 +-
 .../jpa/entity/resource/JPAProvision.java       |   19 +-
 .../jpa/entity/task/AbstractTask.java           |   14 +-
 .../jpa/entity/task/JPAAnyTemplatePullTask.java |   11 +-
 .../jpa/entity/task/JPANotificationTask.java    |    9 +-
 .../jpa/entity/task/JPAPropagationTask.java     |    6 +-
 .../jpa/entity/task/JPAPullTask.java            |    2 +-
 .../jpa/entity/task/JPAPushTask.java            |    2 +-
 .../jpa/entity/task/JPAPushTaskAnyFilter.java   |   15 +-
 .../jpa/entity/task/JPATaskExec.java            |   11 +-
 .../jpa/entity/user/JPADynRoleMembership.java   |   13 +-
 .../jpa/entity/user/JPAUDynGroupMembership.java |   13 +-
 .../jpa/entity/user/JPAUMembership.java         |   17 +-
 .../jpa/entity/user/JPAUPlainAttr.java          |    9 -
 .../entity/user/JPAUPlainAttrUniqueValue.java   |   11 +-
 .../jpa/entity/user/JPAUPlainAttrValue.java     |    9 -
 .../jpa/entity/user/JPAURelationship.java       |   19 +-
 .../persistence/jpa/entity/user/JPAUser.java    |   29 +-
 .../persistence/jpa/openjpa/UUIDGenerator.java  |   58 +
 .../entity/EntityValidationListener.java        |    2 +
 .../jpa/validation/entity/SchemaKeyCheck.java   |   41 +
 .../validation/entity/SchemaKeyValidator.java   |   98 ++
 .../jpa/validation/entity/SchemaNameCheck.java  |   41 -
 .../validation/entity/SchemaNameValidator.java  |   98 --
 .../resources/META-INF/spring-orm-oracle.xml    |  356 +----
 .../resources/META-INF/spring-orm-sqlserver.xml |  358 +----
 .../src/main/resources/META-INF/spring-orm.xml  |  390 +----
 .../src/main/resources/domains.xml              |    5 +-
 .../main/resources/domains/MasterContent.xml    |  157 ++-
 .../src/main/resources/indexes.xml              |   30 +-
 .../src/main/resources/persistence-enhance.xml  |   31 +
 .../src/main/resources/views.xml                |  106 +-
 .../persistence/jpa/inner/AnyObjectTest.java    |    8 +-
 .../persistence/jpa/inner/AnySearchTest.java    |  124 +-
 .../persistence/jpa/inner/ConnInstanceTest.java |   10 +-
 .../core/persistence/jpa/inner/GroupTest.java   |   10 +-
 .../persistence/jpa/inner/NotificationTest.java |    6 +-
 .../persistence/jpa/inner/PlainAttrTest.java    |   25 +-
 .../core/persistence/jpa/inner/PolicyTest.java  |    8 +-
 .../core/persistence/jpa/inner/RealmTest.java   |   40 +-
 .../jpa/inner/RelationshipTypeTest.java         |    5 +-
 .../core/persistence/jpa/inner/ReportTest.java  |   11 +-
 .../persistence/jpa/inner/ResourceTest.java     |    3 +-
 .../core/persistence/jpa/inner/RoleTest.java    |    2 +-
 .../jpa/inner/SecurityQuestionTest.java         |    8 +-
 .../persistence/jpa/inner/TaskExecTest.java     |    8 +-
 .../core/persistence/jpa/inner/TaskTest.java    |    6 +-
 .../core/persistence/jpa/inner/UserTest.java    |   29 +-
 .../persistence/jpa/outer/AnySearchTest.java    |    6 +-
 .../persistence/jpa/outer/ConnInstanceTest.java |   12 +-
 .../core/persistence/jpa/outer/GroupTest.java   |   59 +-
 .../persistence/jpa/outer/PlainAttrTest.java    |   13 +-
 .../persistence/jpa/outer/PlainSchemaTest.java  |   19 +-
 .../core/persistence/jpa/outer/RealmTest.java   |    4 +-
 .../core/persistence/jpa/outer/ReportTest.java  |   22 +-
 .../persistence/jpa/outer/ResourceTest.java     |   26 +-
 .../core/persistence/jpa/outer/RoleTest.java    |   22 +-
 .../jpa/outer/SecurityQuestionTest.java         |    8 +-
 .../core/persistence/jpa/outer/TaskTest.java    |  140 +-
 .../core/persistence/jpa/outer/UserTest.java    |   51 +-
 .../persistence/jpa/outer/VirSchemaTest.java    |    5 +-
 .../resources/META-INF/persistence-enhance.xml  |   31 -
 .../test/resources/domains/MasterContent.xml    | 1329 +++++++++---------
 .../src/test/resources/domains/TwoContent.xml   |  148 +-
 .../api/AnyObjectProvisioningManager.java       |    2 +-
 .../api/GroupProvisioningManager.java           |    9 +-
 .../provisioning/api/ProvisioningManager.java   |   18 +-
 .../api/UserProvisioningManager.java            |   20 +-
 .../provisioning/api/cache/VirAttrCache.java    |   10 +-
 .../provisioning/api/cache/VirAttrCacheKey.java |    6 +-
 .../api/data/AnyObjectDataBinder.java           |    2 +-
 .../api/data/ConnInstanceDataBinder.java        |    2 +-
 .../provisioning/api/data/GroupDataBinder.java  |    2 +-
 .../provisioning/api/data/UserDataBinder.java   |    4 +-
 .../core/provisioning/api/job/JobNamer.java     |   17 +-
 .../api/job/SchedTaskJobDelegate.java           |    2 +-
 .../api/notification/NotificationManager.java   |    8 +-
 .../api/propagation/PropagationManager.java     |    8 +-
 .../api/pushpull/GroupPullResultHandler.java    |    2 +-
 .../api/pushpull/ProvisioningReport.java        |   13 +-
 .../api/pushpull/SyncopePushResultHandler.java  |    2 +-
 .../provisioning/api/utils/EntityUtils.java     |    6 +-
 .../core/provisioning/api/utils/RealmUtils.java |    2 +-
 .../provisioning/java/ConnectorManager.java     |    2 +-
 .../DefaultAnyObjectProvisioningManager.java    |   26 +-
 .../java/DefaultGroupProvisioningManager.java   |   36 +-
 .../java/DefaultUserProvisioningManager.java    |   60 +-
 .../java/cache/DisabledVirAttrCache.java        |    6 +-
 .../java/cache/MemoryVirAttrCache.java          |   37 +-
 .../java/data/AbstractAnyDataBinder.java        |   12 +-
 .../java/data/AnyObjectDataBinderImpl.java      |    7 +-
 .../java/data/ConnInstanceDataBinderImpl.java   |    4 +-
 .../java/data/GroupDataBinderImpl.java          |    9 +-
 .../java/data/RealmDataBinderImpl.java          |    6 +-
 .../java/data/ResourceDataBinderImpl.java       |   14 +-
 .../java/data/RoleDataBinderImpl.java           |    2 +-
 .../java/data/TaskDataBinderImpl.java           |    2 +-
 .../java/data/UserDataBinderImpl.java           |   32 +-
 .../java/job/AbstractSchedTaskJobDelegate.java  |    4 +-
 .../core/provisioning/java/job/TaskJob.java     |    4 +-
 .../notification/NotificationManagerImpl.java   |    8 +-
 .../propagation/PropagationManagerImpl.java     |   10 +-
 .../AbstractProvisioningJobDelegate.java        |   48 +-
 .../pushpull/AbstractPullResultHandler.java     |   38 +-
 .../pushpull/AbstractPushResultHandler.java     |    2 +-
 .../pushpull/AbstractSyncopeResultHandler.java  |    8 +-
 .../AnyObjectPullResultHandlerImpl.java         |   12 +-
 .../AnyObjectPushResultHandlerImpl.java         |    8 +-
 .../pushpull/GroupPullResultHandlerImpl.java    |   16 +-
 .../pushpull/GroupPushResultHandlerImpl.java    |    8 +-
 .../pushpull/LDAPMembershipPullActions.java     |   10 +-
 .../java/pushpull/LDAPPasswordPullActions.java  |    6 +-
 .../java/pushpull/PullJobDelegate.java          |    6 +-
 .../provisioning/java/pushpull/PullUtils.java   |   27 +-
 .../pushpull/UserPullResultHandlerImpl.java     |   14 +-
 .../pushpull/UserPushResultHandlerImpl.java     |    8 +-
 .../java/utils/ConnObjectUtils.java             |    4 +-
 .../provisioning/java/utils/TemplateUtils.java  |    4 +-
 .../core/provisioning/java/DerAttrTest.java     |    2 +-
 .../provisioning/java/MailTemplateTest.java     |    2 +-
 .../core/provisioning/java/MappingTest.java     |    2 +-
 .../java/ResourceDataBinderTest.java            |    2 +-
 .../rest/cxf/service/AbstractAnyService.java    |   35 +-
 .../rest/cxf/service/AnyObjectServiceImpl.java  |    2 +-
 .../rest/cxf/service/ConnectorServiceImpl.java  |    7 +-
 .../core/rest/cxf/service/GroupServiceImpl.java |    2 +-
 .../cxf/service/NotificationServiceImpl.java    |    4 +-
 .../rest/cxf/service/PolicyServiceImpl.java     |    4 +-
 .../rest/cxf/service/ReportServiceImpl.java     |   10 +-
 .../rest/cxf/service/ResourceServiceImpl.java   |   24 +-
 .../service/SecurityQuestionServiceImpl.java    |    4 +-
 .../core/rest/cxf/service/TaskServiceImpl.java  |   16 +-
 .../core/rest/cxf/service/UserServiceImpl.java  |   18 +-
 .../cxf/service/UserWorkflowServiceImpl.java    |    2 +-
 .../core/spring/security/AuthDataAccessor.java  |    8 +-
 .../DelegatedAdministrationException.java       |    2 +-
 .../security/SyncopeAuthenticationProvider.java |   70 +-
 .../activiti/ActivitiUserWorkflowAdapter.java   |   26 +-
 .../core/workflow/activiti/ActivitiUtils.java   |    2 +-
 .../workflow/activiti/SyncopeGroupManager.java  |    6 +-
 .../activiti/SyncopeGroupQueryImpl.java         |    9 +-
 .../workflow/activiti/SyncopeUserManager.java   |    2 +-
 .../workflow/activiti/SyncopeUserQueryImpl.java |   12 +-
 .../workflow/api/AnyObjectWorkflowAdapter.java  |    8 +-
 .../core/workflow/api/GroupWorkflowAdapter.java |    8 +-
 .../core/workflow/api/UserWorkflowAdapter.java  |   22 +-
 .../java/AbstractAnyObjectWorkflowAdapter.java  |    6 +-
 .../java/AbstractGroupWorkflowAdapter.java      |    6 +-
 .../java/AbstractUserWorkflowAdapter.java       |   22 +-
 .../java/DefaultAnyObjectWorkflowAdapter.java   |    6 +-
 .../java/DefaultGroupWorkflowAdapter.java       |    6 +-
 .../java/DefaultUserWorkflowAdapter.java        |   16 +-
 .../syncope/core/logic/CamelRouteLogic.java     |    4 +-
 .../core/logic/init/CamelRouteLoader.java       |    2 +-
 .../core/persistence/api/dao/CamelRouteDAO.java |    2 +-
 .../core/persistence/api/entity/CamelRoute.java |    4 +-
 ext/camel/persistence-jpa/pom.xml               |    2 +-
 .../persistence/jpa/dao/JPACamelRouteDAO.java   |    2 +-
 .../persistence/jpa/entity/JPACamelRoute.java   |   16 +-
 .../CamelAnyObjectProvisioningManager.java      |   26 +-
 .../camel/CamelGroupProvisioningManager.java    |   28 +-
 .../camel/CamelUserProvisioningManager.java     |   48 +-
 .../processor/AnyObjectCreateProcessor.java     |    2 +-
 .../processor/AnyObjectDeleteProcessor.java     |    2 +-
 .../AnyObjectDeprovisionProcessor.java          |    2 +-
 .../processor/AnyObjectProvisionProcessor.java  |    2 +-
 .../processor/AnyObjectUpdateProcessor.java     |    2 +-
 .../processor/GroupCreateInPullProcessor.java   |    4 +-
 .../camel/processor/GroupCreateProcessor.java   |    5 +-
 .../camel/processor/GroupDeleteProcessor.java   |    6 +-
 .../processor/GroupDeprovisionProcessor.java    |    2 +-
 .../processor/GroupProvisionProcessor.java      |    2 +-
 .../camel/processor/GroupUpdateProcessor.java   |    2 +-
 .../camel/processor/UserCreateProcessor.java    |    2 +-
 .../camel/processor/UserDeleteProcessor.java    |    2 +-
 .../processor/UserDeprovisionProcessor.java     |    2 +-
 .../processor/UserInternalSuspendProcessor.java |    2 +-
 .../camel/processor/UserProvisionProcessor.java |    2 +-
 .../processor/UserSetStatusInPullProcessor.java |    4 +-
 fit/build-tools/src/main/resources/testdb.sql   |    6 +-
 .../src/main/resources/console.properties       |    2 +-
 .../src/test/resources/rebel.xml                |    4 +-
 .../src/main/resources/userWorkflow.bpmn20.xml  |    9 +-
 .../org/apache/syncope/fit/AbstractITCase.java  |   11 +-
 .../org/apache/syncope/fit/cli/CLIITCase.java   |   35 +-
 .../fit/console/AbstractConsoleITCase.java      |    2 -
 .../fit/console/AbstractTypesITCase.java        |    4 +-
 .../syncope/fit/console/AnyObjectsITCase.java   |   14 +-
 .../syncope/fit/console/BulkActionITCase.java   |    3 +-
 .../syncope/fit/console/GroupsITCase.java       |   11 +-
 .../apache/syncope/fit/console/LogsITCase.java  |    8 +-
 .../fit/console/SecurityQuestionsITCase.java    |   27 +-
 .../syncope/fit/core/AbstractTaskITCase.java    |   20 +-
 .../syncope/fit/core/AnyObjectITCase.java       |   13 +-
 .../syncope/fit/core/AuthenticationITCase.java  |   55 +-
 .../syncope/fit/core/ConnectorITCase.java       |   74 +-
 .../apache/syncope/fit/core/GroupITCase.java    |   41 +-
 .../syncope/fit/core/MultitenancyITCase.java    |  157 ++-
 .../syncope/fit/core/NotificationITCase.java    |   12 +-
 .../fit/core/NotificationTaskITCase.java        |   12 +-
 .../syncope/fit/core/PlainSchemaITCase.java     |    3 +-
 .../apache/syncope/fit/core/PolicyITCase.java   |   10 +-
 .../syncope/fit/core/PropagationTaskITCase.java |   42 +-
 .../apache/syncope/fit/core/PullTaskITCase.java |  208 +--
 .../apache/syncope/fit/core/PushTaskITCase.java |  104 +-
 .../apache/syncope/fit/core/RealmITCase.java    |   10 +-
 .../apache/syncope/fit/core/ReportITCase.java   |   30 +-
 .../apache/syncope/fit/core/ResourceITCase.java |   28 +-
 .../org/apache/syncope/fit/core/RoleITCase.java |    7 +-
 .../syncope/fit/core/SchedTaskITCase.java       |    4 +-
 .../apache/syncope/fit/core/SearchITCase.java   |   51 +-
 .../fit/core/SecurityQuestionITCase.java        |    6 +-
 .../org/apache/syncope/fit/core/UserITCase.java |  136 +-
 .../apache/syncope/fit/core/UserSelfITCase.java |   14 +-
 .../syncope/fit/core/UserWorkflowITCase.java    |   25 +-
 .../apache/syncope/fit/core/VirAttrITCase.java  |   17 +-
 .../syncope/fit/core/VirSchemaITCase.java       |    2 +-
 .../src/test/resources/console.properties       |    2 +-
 fit/core-reference/src/test/resources/rebel.xml |    1 +
 .../src/test/resources/rebel.xml                |    2 +-
 pom.xml                                         |    9 +-
 579 files changed, 4903 insertions(+), 6209 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/client/cli/src/main/java/org/apache/syncope/client/cli/commands/anyobject/AnyObjectSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/anyobject/AnyObjectSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/anyobject/AnyObjectSyncopeOperations.java
index c55499a..4f06c5d 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/anyobject/AnyObjectSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/anyobject/AnyObjectSyncopeOperations.java
@@ -35,19 +35,19 @@ public class AnyObjectSyncopeOperations {
         return anyObjectService.list(type, new AnyListQuery()).getResult();
     }
 
-    public AnyObjectTO read(final String anyId) {
-        return anyObjectService.read(Long.valueOf(anyId));
+    public AnyObjectTO read(final String anyKey) {
+        return anyObjectService.read(anyKey);
     }
 
-    public Set<AttrTO> readAttributes(final String anyId, final String schemaType) {
-        return anyObjectService.read(Long.valueOf(anyId), SchemaType.valueOf(schemaType));
+    public Set<AttrTO> readAttributes(final String anyKey, final String schemaType) {
+        return anyObjectService.read(anyKey, SchemaType.valueOf(schemaType));
     }
 
-    public AttrTO readAttribute(final String anyId, final String schemaType, final String schema) {
-        return anyObjectService.read(Long.valueOf(anyId), SchemaType.valueOf(schemaType), schema);
+    public AttrTO readAttribute(final String anyKey, final String schemaType, final String schema) {
+        return anyObjectService.read(anyKey, SchemaType.valueOf(schemaType), schema);
     }
 
-    public void delete(final String anyId) {
-        anyObjectService.delete(Long.valueOf(anyId));
+    public void delete(final String anyKey) {
+        anyObjectService.delete(anyKey);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/client/cli/src/main/java/org/apache/syncope/client/cli/commands/connector/ConnectorSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/connector/ConnectorSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/connector/ConnectorSyncopeOperations.java
index 11ac036..44c9ea8 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/connector/ConnectorSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/connector/ConnectorSyncopeOperations.java
@@ -32,8 +32,8 @@ public class ConnectorSyncopeOperations {
         return connectorService.readByResource(resourceName, null);
     }
 
-    public ConnInstanceTO read(final String resourceId) {
-        return connectorService.read(Long.valueOf(resourceId), null);
+    public ConnInstanceTO read(final String resourceKey) {
+        return connectorService.read(resourceKey, null);
     }
 
     public List<ConnBundleTO> getBundles() {
@@ -44,7 +44,7 @@ public class ConnectorSyncopeOperations {
         return connectorService.list(null);
     }
 
-    public void delete(final String resourceId) {
-        connectorService.delete(Long.valueOf(resourceId));
+    public void delete(final String resourceKey) {
+        connectorService.delete(resourceKey);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementSyncopeOperations.java
index 31053a8..55f0847 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/entitlement/EntitlementSyncopeOperations.java
@@ -47,7 +47,7 @@ public class EntitlementSyncopeOperations {
 
     public Set<String> usernameEntitlements(final String username) {
         final Set<String> entitlements = new TreeSet<>();
-        final UserTO userTO = userSyncopeOperations.read(userSyncopeOperations.getIdFromUsername(username));
+        final UserTO userTO = userSyncopeOperations.read(username);
         for (final String role : userTO.getRoles()) {
             entitlements.addAll(roleSyncopeOperations.read(role).getEntitlements());
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/client/cli/src/main/java/org/apache/syncope/client/cli/commands/group/GroupSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/group/GroupSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/group/GroupSyncopeOperations.java
index 744fbe8..8df8e8c 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/group/GroupSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/group/GroupSyncopeOperations.java
@@ -35,29 +35,19 @@ public class GroupSyncopeOperations {
         return groupService.list(new AnyListQuery()).getResult();
     }
 
-    public GroupTO read(final String groupId) {
-        return groupService.read(Long.valueOf(groupId));
+    public GroupTO read(final String groupKey) {
+        return groupService.read(groupKey);
     }
 
-    public Set<AttrTO> readAttributes(final String groupId, final String schemaType) {
-        return groupService.read(Long.valueOf(groupId), SchemaType.valueOf(schemaType));
+    public Set<AttrTO> readAttributes(final String groupKey, final String schemaType) {
+        return groupService.read(groupKey, SchemaType.valueOf(schemaType));
     }
 
-    public AttrTO readAttribute(final String groupId, final String schemaType, final String schema) {
-        return groupService.read(Long.valueOf(groupId), SchemaType.valueOf(schemaType), schema);
+    public AttrTO readAttribute(final String groupKey, final String schemaType, final String schema) {
+        return groupService.read(groupKey, SchemaType.valueOf(schemaType), schema);
     }
 
-    public void delete(final String groupId) {
-        groupService.delete(Long.valueOf(groupId));
-    }
-
-    public boolean exists(final String realm) {
-        boolean exists = false;
-        for (final GroupTO list : list()) {
-            if (list.getName().equals(realm)) {
-                exists = true;
-            }
-        }
-        return exists;
+    public void delete(final String groupKey) {
+        groupService.delete(groupKey);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java
index 8de6d04..34851e9 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java
@@ -26,9 +26,12 @@ import java.io.FileWriter;
 import java.io.IOException;
 import java.io.StringWriter;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.UUID;
 import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLOutputFactory;
 import javax.xml.stream.XMLStreamException;
@@ -62,6 +65,8 @@ public class MigrateConf {
 
         Set<String> exceptions = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
         exceptions.addAll(Arrays.asList(but));
+        exceptions.add("id");
+        exceptions.add("name");
 
         for (int i = 0; i < streamReader.getAttributeCount(); i++) {
             String name = streamReader.getAttributeLocalName(i);
@@ -72,11 +77,12 @@ public class MigrateConf {
     }
 
     private static String getAttributeValue(final XMLStreamReader streamReader, final String key) {
-        String value = streamReader.getAttributeValue("", key);
-        if (value == null || value.isEmpty()) {
-            value = streamReader.getAttributeValue("", key.toUpperCase());
-            if (value == null || value.isEmpty()) {
-                value = streamReader.getAttributeValue("", key.toLowerCase());
+        String value = null;
+
+        for (int i = 0; i < streamReader.getAttributeCount(); i++) {
+            String attrName = streamReader.getAttributeLocalName(i);
+            if (attrName.equalsIgnoreCase(key)) {
+                value = streamReader.getAttributeValue(i);
             }
         }
 
@@ -139,39 +145,50 @@ public class MigrateConf {
         reader.nextTag(); // dataset
 
         writer.writeStartElement("AnyType");
-        writer.writeAttribute("name", "USER");
+        writer.writeAttribute("key", "USER");
         writer.writeAttribute("kind", "USER");
         writer.writeEndElement();
 
         writer.writeStartElement("AnyTypeClass");
-        writer.writeAttribute("name", "BaseUser");
+        writer.writeAttribute("key", "BaseUser");
         writer.writeEndElement();
 
         writer.writeStartElement("AnyType_AnyTypeClass");
-        writer.writeAttribute("anyType_name", "USER");
-        writer.writeAttribute("anyTypeClass_name", "BaseUser");
+        writer.writeAttribute("anyType_key", "USER");
+        writer.writeAttribute("anyTypeClass_key", "BaseUser");
         writer.writeEndElement();
 
         writer.writeStartElement("AnyType");
-        writer.writeAttribute("name", "GROUP");
+        writer.writeAttribute("key", "GROUP");
         writer.writeAttribute("kind", "GROUP");
         writer.writeEndElement();
 
         writer.writeStartElement("AnyTypeClass");
-        writer.writeAttribute("name", "BaseGroup");
+        writer.writeAttribute("key", "BaseGroup");
         writer.writeEndElement();
 
         writer.writeStartElement("AnyType_AnyTypeClass");
-        writer.writeAttribute("anyType_name", "GROUP");
-        writer.writeAttribute("anyTypeClass_name", "BaseGroup");
+        writer.writeAttribute("anyType_key", "GROUP");
+        writer.writeAttribute("anyTypeClass_key", "BaseGroup");
         writer.writeEndElement();
 
         writer.writeStartElement("AnyTypeClass");
-        writer.writeAttribute("name", "BaseUMembership");
+        writer.writeAttribute("key", "BaseUMembership");
         writer.writeEndElement();
 
         Set<String> connInstanceCapabilities = new HashSet<>();
 
+        String lastUUID;
+        String syncopeConf = UUID.randomUUID().toString();
+        Map<String, String> cPlainAttrs = new HashMap<>();
+        Map<String, String> policies = new HashMap<>();
+        Map<String, String> connInstances = new HashMap<>();
+        Map<String, String> provisions = new HashMap<>();
+        Map<String, String> mappings = new HashMap<>();
+        Map<String, String> tasks = new HashMap<>();
+        Map<String, String> notifications = new HashMap<>();
+        Map<String, String> reports = new HashMap<>();
+
         String globalAccountPolicy = null;
         String globalPasswordPolicy = null;
         while (reader.hasNext()) {
@@ -179,64 +196,79 @@ public class MigrateConf {
                 switch (reader.getLocalName().toLowerCase()) {
                     case "syncopeconf":
                         writer.writeStartElement("SyncopeConf");
-                        copyAttrs(reader, writer);
+                        writer.writeAttribute("key", syncopeConf);
                         writer.writeEndElement();
                         break;
 
                     case "cschema":
                         writer.writeStartElement("PlainSchema");
                         copyAttrs(reader, writer);
+                        writer.writeAttribute("key", getAttributeValue(reader, "name"));
                         writer.writeEndElement();
                         break;
 
                     case "cattr":
                         writer.writeStartElement("CPlainAttr");
-                        copyAttrs(reader, writer);
+                        copyAttrs(reader, writer, "owner_id", "schema_name");
+                        lastUUID = UUID.randomUUID().toString();
+                        writer.writeAttribute("key", lastUUID);
+                        writer.writeAttribute("owner_key", syncopeConf);
+                        writer.writeAttribute("schema_key", getAttributeValue(reader, "schema_name"));
                         writer.writeEndElement();
+                        cPlainAttrs.put(getAttributeValue(reader, "id"), lastUUID);
                         break;
 
                     case "cattrvalue":
                         writer.writeStartElement("CPlainAttrValue");
-                        copyAttrs(reader, writer);
+                        copyAttrs(reader, writer, "attribute_id");
+                        writer.writeAttribute("key", UUID.randomUUID().toString());
+                        writer.writeAttribute(
+                                "attribute_key", cPlainAttrs.get(getAttributeValue(reader, "attribute_id")));
                         writer.writeEndElement();
                         break;
 
                     case "uschema":
                         writer.writeStartElement("PlainSchema");
                         copyAttrs(reader, writer);
-                        writer.writeAttribute("anyTypeClass_name", "BaseUser");
+                        writer.writeAttribute("key", getAttributeValue(reader, "name"));
+                        writer.writeAttribute("anyTypeClass_key", "BaseUser");
                         writer.writeEndElement();
                         break;
 
                     case "uderschema":
                         writer.writeStartElement("DerSchema");
                         copyAttrs(reader, writer);
-                        writer.writeAttribute("anyTypeClass_name", "BaseUser");
+                        writer.writeAttribute("key", getAttributeValue(reader, "name"));
+                        writer.writeAttribute("anyTypeClass_key", "BaseUser");
                         writer.writeEndElement();
                         break;
 
                     case "uvirschema":
                         reporter.writeStartElement("VirSchema");
                         copyAttrs(reader, reporter);
+                        reporter.writeAttribute("key", getAttributeValue(reader, "name"));
                         reporter.writeEndElement();
                         break;
 
                     case "rschema":
                         writer.writeStartElement("PlainSchema");
                         copyAttrs(reader, writer);
-                        writer.writeAttribute("anyTypeClass_name", "BaseGroup");
+                        writer.writeAttribute("key", getAttributeValue(reader, "name"));
+                        writer.writeAttribute("anyTypeClass_key", "BaseGroup");
                         writer.writeEndElement();
                         break;
 
                     case "rderschema":
                         writer.writeStartElement("DerSchema");
                         copyAttrs(reader, writer);
-                        writer.writeAttribute("anyTypeClass_name", "BaseGroup");
+                        writer.writeAttribute("key", getAttributeValue(reader, "name"));
+                        writer.writeAttribute("anyTypeClass_key", "BaseGroup");
                         writer.writeEndElement();
                         break;
 
                     case "rvirschema":
                         reporter.writeStartElement("VirSchema");
+                        reporter.writeAttribute("key", getAttributeValue(reader, "name"));
                         copyAttrs(reader, reporter);
                         reporter.writeEndElement();
                         break;
@@ -244,32 +276,38 @@ public class MigrateConf {
                     case "mschema":
                         writer.writeStartElement("PlainSchema");
                         copyAttrs(reader, writer);
-                        writer.writeAttribute("anyTypeClass_name", "BaseUMembership");
+                        writer.writeAttribute("key", getAttributeValue(reader, "name"));
+                        writer.writeAttribute("anyTypeClass_key", "BaseUMembership");
                         writer.writeEndElement();
                         break;
 
                     case "mderschema":
                         writer.writeStartElement("DerSchema");
                         copyAttrs(reader, writer);
-                        writer.writeAttribute("anyTypeClass_name", "BaseUMembership");
+                        writer.writeAttribute("key", getAttributeValue(reader, "name"));
+                        writer.writeAttribute("anyTypeClass_key", "BaseUMembership");
                         writer.writeEndElement();
                         break;
 
                     case "mvirschema":
                         reporter.writeStartElement("VirSchema");
                         copyAttrs(reader, reporter);
+                        reporter.writeAttribute("key", getAttributeValue(reader, "name"));
                         reporter.writeEndElement();
                         break;
 
                     case "policy":
                         String policyId = getAttributeValue(reader, "id");
+                        lastUUID = UUID.randomUUID().toString();
+                        policies.put(policyId, lastUUID);
+
                         ObjectNode specification = (ObjectNode) OBJECT_MAPPER.readTree(
                                 getAttributeValue(reader, "specification"));
 
                         switch (getAttributeValue(reader, "DTYPE")) {
                             case "SyncPolicy":
                                 writer.writeStartElement("PullPolicy");
-                                writer.writeAttribute("id", policyId);
+                                writer.writeAttribute("key", lastUUID);
                                 writer.writeAttribute(
                                         "description", getAttributeValue(reader, "description"));
                                 writer.writeEndElement();
@@ -277,12 +315,12 @@ public class MigrateConf {
 
                             case "PasswordPolicy":
                                 writer.writeStartElement("PasswordPolicy");
-                                writer.writeAttribute("id", policyId);
+                                writer.writeAttribute("key", lastUUID);
                                 writer.writeAttribute(
                                         "description", getAttributeValue(reader, "description"));
 
                                 if ("GLOBAL_PASSWORD".equalsIgnoreCase(getAttributeValue(reader, "type"))) {
-                                    globalPasswordPolicy = getAttributeValue(reader, "id");
+                                    globalPasswordPolicy = lastUUID;
                                 }
 
                                 JsonNode allowNullPassword = specification.get("allowNullPassword");
@@ -301,20 +339,20 @@ public class MigrateConf {
                                 writer.writeEndElement();
 
                                 writer.writeStartElement("PasswordRuleConfInstance");
-                                writer.writeAttribute("id", policyId);
-                                writer.writeAttribute("passwordPolicy_id", policyId);
+                                writer.writeAttribute("key", lastUUID);
+                                writer.writeAttribute("passwordPolicy_key", lastUUID);
                                 writer.writeAttribute("serializedInstance", specification.toString());
                                 writer.writeEndElement();
                                 break;
 
                             case "AccountPolicy":
                                 writer.writeStartElement("AccountPolicy");
-                                writer.writeAttribute("id", policyId);
+                                writer.writeAttribute("key", lastUUID);
                                 writer.writeAttribute(
                                         "description", getAttributeValue(reader, "description"));
 
                                 if ("GLOBAL_ACCOUNT".equalsIgnoreCase(getAttributeValue(reader, "type"))) {
-                                    globalAccountPolicy = getAttributeValue(reader, "id");
+                                    globalAccountPolicy = lastUUID;
                                 }
 
                                 JsonNode propagateSuspension = specification.get("propagateSuspension");
@@ -334,8 +372,8 @@ public class MigrateConf {
                                 writer.writeEndElement();
 
                                 writer.writeStartElement("AccountRuleConfInstance");
-                                writer.writeAttribute("id", policyId);
-                                writer.writeAttribute("accountPolicy_id", policyId);
+                                writer.writeAttribute("key", lastUUID);
+                                writer.writeAttribute("accountPolicy_key", lastUUID);
                                 writer.writeAttribute("serializedInstance", specification.toString());
                                 writer.writeEndElement();
                                 break;
@@ -345,13 +383,19 @@ public class MigrateConf {
                         break;
 
                     case "conninstance":
+                        lastUUID = UUID.randomUUID().toString();
+                        connInstances.put(getAttributeValue(reader, "id"), lastUUID);
+
                         writer.writeStartElement("ConnInstance");
                         copyAttrs(reader, writer);
+                        writer.writeAttribute("key", lastUUID);
                         writer.writeEndElement();
                         break;
 
                     case "conninstance_capabilities":
-                        String connInstanceId = getAttributeValue(reader, "ConnInstance_id");
+                        String connInstanceId = getAttributeValue(reader, "connInstance_id");
+                        String connInstanceKey = connInstances.get(connInstanceId);
+
                         String capabilities = getAttributeValue(reader, "capabilities");
                         if (capabilities.startsWith("ONE_PHASE_")) {
                             capabilities = capabilities.substring(10);
@@ -360,7 +404,7 @@ public class MigrateConf {
                         }
                         if (!connInstanceCapabilities.contains(connInstanceId + capabilities)) {
                             writer.writeStartElement("ConnInstance_capabilities");
-                            writer.writeAttribute("ConnInstance_id", connInstanceId);
+                            writer.writeAttribute("connInstance_key", connInstanceKey);
                             writer.writeAttribute("capability", capabilities);
                             writer.writeEndElement();
 
@@ -372,21 +416,33 @@ public class MigrateConf {
                         writer.writeStartElement("ExternalResource");
                         copyAttrs(reader, writer,
                                 "syncTraceLevel", "userializedSyncToken", "rserializedSyncToken",
-                                "propagationMode", "propagationPrimary", "syncPolicy_id");
-                        String syncPolicyId = getAttributeValue(reader, "syncPolicy_id");
+                                "propagationMode", "propagationPrimary", "connector_id", "syncPolicy_id",
+                                "passwordPolicy_id",
+                                "creator", "lastModifier", "creationDate", "lastChangeDate");
+
+                        writer.writeAttribute("key", getAttributeValue(reader, "name"));
                         writer.writeAttribute(
-                                "pullTraceLevel", getAttributeValue(reader, "syncTraceLevel"));
-                        if (StringUtils.isNotBlank(syncPolicyId)) {
-                            writer.writeAttribute(
-                                    "pullPolicy_id", getAttributeValue(reader, "syncPolicy_id"));
+                                "connector_key", connInstances.get(getAttributeValue(reader, "connector_id")));
+
+                        writer.writeAttribute("pullTraceLevel", getAttributeValue(reader, "syncTraceLevel"));
+
+                        String syncPolicyKey = policies.get(getAttributeValue(reader, "syncPolicy_id"));
+                        if (StringUtils.isNotBlank(syncPolicyKey)) {
+                            writer.writeAttribute("pullPolicy_key", syncPolicyKey);
+                        }
+
+                        String passwordPolicyKey = policies.get(getAttributeValue(reader, "passwordPolicy_id"));
+                        if (StringUtils.isNotBlank(passwordPolicyKey)) {
+                            writer.writeAttribute("passwordPolicy_key", passwordPolicyKey);
                         }
+
                         writer.writeEndElement();
                         break;
 
                     case "externalresource_propactions":
                         writer.writeStartElement("ExternalResource_PropActions");
 
-                        writer.writeAttribute("resource_name", getAttributeValue(reader, "externalResource_name"));
+                        writer.writeAttribute("resource_key", getAttributeValue(reader, "externalResource_name"));
 
                         String propActionClassName = getAttributeValue(reader, "element");
                         switch (propActionClassName) {
@@ -403,6 +459,7 @@ public class MigrateConf {
                             case "org.apache.syncope.core.propagation.impl.DBPasswordPropagationActions":
                                 propActionClassName = "org.apache.syncope.core.provisioning.java.propagation."
                                         + "DBPasswordPropagationActions";
+                                break;
 
                             default:
                         }
@@ -412,24 +469,30 @@ public class MigrateConf {
 
                     case "policy_externalresource":
                         writer.writeStartElement("AccountPolicy_ExternalResource");
-                        writer.writeAttribute("accountPolicy_id", getAttributeValue(reader, "account_policy_id"));
-                        writer.writeAttribute("resource_name", getAttributeValue(reader, "resource_name"));
+                        writer.writeAttribute(
+                                "accountPolicy_key", policies.get(getAttributeValue(reader, "account_policy_id")));
+                        writer.writeAttribute("resource_key", getAttributeValue(reader, "resource_name"));
                         writer.writeEndElement();
                         break;
 
                     case "umapping":
                         String umappingId = getAttributeValue(reader, "id");
+                        lastUUID = UUID.randomUUID().toString();
+                        provisions.put(umappingId, lastUUID);
+
                         writer.writeStartElement("Provision");
-                        writer.writeAttribute("id", umappingId);
-                        writer.writeAttribute(
-                                "resource_name", getAttributeValue(reader, "resource_name"));
-                        writer.writeAttribute("anyType_name", "USER");
+                        writer.writeAttribute("key", lastUUID);
+                        writer.writeAttribute("resource_key", getAttributeValue(reader, "resource_name"));
+                        writer.writeAttribute("anyType_key", "USER");
                         writer.writeAttribute("objectClass", "__ACCOUNT__");
                         writer.writeEndElement();
 
+                        lastUUID = UUID.randomUUID().toString();
+                        mappings.put(umappingId, lastUUID);
+
                         writer.writeStartElement("Mapping");
-                        writer.writeAttribute("id", umappingId);
-                        writer.writeAttribute("provision_id", umappingId);
+                        writer.writeAttribute("key", lastUUID);
+                        writer.writeAttribute("provision_key", provisions.get(umappingId));
 
                         String uaccountLink = getAttributeValue(reader, "accountlink");
                         if (StringUtils.isNotBlank(uaccountLink)) {
@@ -446,7 +509,9 @@ public class MigrateConf {
                             reporter.writeEndElement();
                         } else {
                             writer.writeStartElement("MappingItem");
-                            copyAttrs(reader, writer, "accountid", "intMappingType");
+                            copyAttrs(reader, writer, "accountid", "intMappingType", "mapping_id");
+                            writer.writeAttribute("key", UUID.randomUUID().toString());
+                            writer.writeAttribute("mapping_key", mappings.get(getAttributeValue(reader, "mapping_id")));
                             writer.writeAttribute("intMappingType", toNewIntMappingType(uIntMappingType));
                             writer.writeAttribute("connObjectKey", getAttributeValue(reader, "accountid"));
                             writer.writeEndElement();
@@ -455,17 +520,22 @@ public class MigrateConf {
 
                     case "rmapping":
                         String rmappingId = "10" + getAttributeValue(reader, "id");
+                        lastUUID = UUID.randomUUID().toString();
+                        provisions.put(rmappingId, lastUUID);
+
                         writer.writeStartElement("Provision");
-                        writer.writeAttribute("id", rmappingId);
-                        writer.writeAttribute(
-                                "resource_name", getAttributeValue(reader, "resource_name"));
-                        writer.writeAttribute("anyType_name", "GROUP");
+                        writer.writeAttribute("key", lastUUID);
+                        writer.writeAttribute("resource_key", getAttributeValue(reader, "resource_name"));
+                        writer.writeAttribute("anyType_key", "GROUP");
                         writer.writeAttribute("objectClass", "__GROUP__");
                         writer.writeEndElement();
 
+                        lastUUID = UUID.randomUUID().toString();
+                        mappings.put(rmappingId, lastUUID);
+
                         writer.writeStartElement("Mapping");
-                        writer.writeAttribute("id", rmappingId);
-                        writer.writeAttribute("provision_id", rmappingId);
+                        writer.writeAttribute("key", lastUUID);
+                        writer.writeAttribute("provision_key", provisions.get(rmappingId));
 
                         String raccountLink = getAttributeValue(reader, "accountlink");
                         if (StringUtils.isNotBlank(raccountLink)) {
@@ -482,7 +552,10 @@ public class MigrateConf {
                             reporter.writeEndElement();
                         } else {
                             writer.writeStartElement("MappingItem");
-                            copyAttrs(reader, writer, "accountid", "intMappingType");
+                            copyAttrs(reader, writer, "accountid", "intMappingType", "mapping_id");
+                            writer.writeAttribute("key", UUID.randomUUID().toString());
+                            writer.writeAttribute(
+                                    "mapping_key", mappings.get("10" + getAttributeValue(reader, "mapping_id")));
                             writer.writeAttribute("intMappingType", toNewIntMappingType(rIntMappingType));
                             writer.writeAttribute("connObjectKey", getAttributeValue(reader, "accountid"));
                             writer.writeEndElement();
@@ -494,9 +567,22 @@ public class MigrateConf {
                         copyAttrs(reader, writer,
                                 "DTYPE", "propagationMode", "subjectType", "subjectId", "xmlAttributes",
                                 "jobClassName", "userTemplate", "roleTemplate", "userFilter", "roleFilter",
-                                "propagationOperation", "syncStatus", "fullReconciliation");
+                                "propagationOperation", "syncStatus", "fullReconciliation", "resource_name");
+
+                        lastUUID = UUID.randomUUID().toString();
+                        tasks.put(getAttributeValue(reader, "id"), lastUUID);
+
+                        writer.writeAttribute("key", lastUUID);
 
-                        String taskId = getAttributeValue(reader, "id");
+                        String resourceName = getAttributeValue(reader, "resource_name");
+                        if (StringUtils.isNotBlank(resourceName)) {
+                            writer.writeAttribute("resource_key", resourceName);
+                        }
+
+                        String name = getAttributeValue(reader, "name");
+                        if (StringUtils.isNotBlank(name)) {
+                            writer.writeAttribute("name", name);
+                        }
 
                         switch (getAttributeValue(reader, "DTYPE")) {
                             case "PropagationTask":
@@ -532,9 +618,9 @@ public class MigrateConf {
                                     template.set("plainAttrs", plainAttrs);
 
                                     writer.writeStartElement("AnyTemplatePullTask");
-                                    writer.writeAttribute("id", taskId + "1");
-                                    writer.writeAttribute("pullTask_id", taskId);
-                                    writer.writeAttribute("anyType_name", "USER");
+                                    writer.writeAttribute("key", UUID.randomUUID().toString());
+                                    writer.writeAttribute("pullTask_key", lastUUID);
+                                    writer.writeAttribute("anyType_key", "USER");
                                     writer.writeAttribute("template", template.toString());
                                     writer.writeEndElement();
                                 }
@@ -545,9 +631,9 @@ public class MigrateConf {
                                     template.set("plainAttrs", plainAttrs);
 
                                     writer.writeStartElement("AnyTemplatePullTask");
-                                    writer.writeAttribute("id", taskId + "2");
-                                    writer.writeAttribute("pullTask_id", taskId);
-                                    writer.writeAttribute("anyType_name", "GROUP");
+                                    writer.writeAttribute("key", UUID.randomUUID().toString());
+                                    writer.writeAttribute("pullTask_key", lastUUID);
+                                    writer.writeAttribute("anyType_key", "GROUP");
                                     writer.writeAttribute("template", template.toString());
                                     writer.writeEndElement();
                                 }
@@ -572,18 +658,18 @@ public class MigrateConf {
                                 String userFilter = getAttributeValue(reader, "userFilter");
                                 if (StringUtils.isNotBlank(userFilter)) {
                                     writer.writeStartElement("PushTaskAnyFilter");
-                                    writer.writeAttribute("id", taskId + "1");
-                                    writer.writeAttribute("pushTask_id", taskId);
-                                    writer.writeAttribute("anyType_name", "USER");
+                                    writer.writeAttribute("key", UUID.randomUUID().toString());
+                                    writer.writeAttribute("pushTask_key", lastUUID);
+                                    writer.writeAttribute("anyType_key", "USER");
                                     writer.writeAttribute("fiql", userFilter);
                                     writer.writeEndElement();
                                 }
                                 String roleFilter = getAttributeValue(reader, "roleFilter");
                                 if (StringUtils.isNotBlank(roleFilter)) {
                                     writer.writeStartElement("PushTaskAnyFilter");
-                                    writer.writeAttribute("id", taskId + "2");
-                                    writer.writeAttribute("pushTask_id", taskId);
-                                    writer.writeAttribute("anyType_name", "GROUP");
+                                    writer.writeAttribute("key", UUID.randomUUID().toString());
+                                    writer.writeAttribute("pushTask_key", lastUUID);
+                                    writer.writeAttribute("anyType_key", "GROUP");
                                     writer.writeAttribute("fiql", roleFilter);
                                     writer.writeEndElement();
                                 }
@@ -595,14 +681,16 @@ public class MigrateConf {
 
                     case "taskexec":
                         writer.writeStartElement("TaskExec");
-                        copyAttrs(reader, writer);
+                        copyAttrs(reader, writer, "task_id");
+                        writer.writeAttribute("key", UUID.randomUUID().toString());
+                        writer.writeAttribute("task_key", tasks.get(getAttributeValue(reader, "task_id")));
                         writer.writeEndElement();
                         break;
 
                     case "synctask_actionsclassnames":
                         writer.writeStartElement("PullTask_actionsClassNames");
                         writer.writeAttribute(
-                                "pullTask_id", getAttributeValue(reader, "syncTask_id"));
+                                "pullTask_key", tasks.get(getAttributeValue(reader, "syncTask_id")));
 
                         String syncActionClassName = getAttributeValue(reader, "element");
                         switch (syncActionClassName) {
@@ -619,6 +707,7 @@ public class MigrateConf {
                             case "org.apache.syncope.core.sync.impl.DBPasswordSyncActions":
                                 syncActionClassName =
                                         "org.apache.syncope.core.provisioning.java.pushpull.DBPasswordPullActions";
+                                break;
 
                             default:
                         }
@@ -628,6 +717,12 @@ public class MigrateConf {
 
                     case "notification":
                         writer.writeStartElement("Notification");
+
+                        lastUUID = UUID.randomUUID().toString();
+                        notifications.put(getAttributeValue(reader, "id"), lastUUID);
+
+                        writer.writeAttribute("key", lastUUID);
+
                         copyAttrs(reader, writer, "recipientAttrType", "template",
                                 "userAbout", "roleAbout", "recipients");
                         String recipientAttrType = getAttributeValue(reader, "recipientAttrType");
@@ -638,26 +733,24 @@ public class MigrateConf {
                         if (StringUtils.isNotBlank(recipients)) {
                             writer.writeAttribute("recipientsFIQL", getAttributeValue(reader, "recipients"));
                         }
-                        writer.writeAttribute("template_name", getAttributeValue(reader, "template"));
+                        writer.writeAttribute("template_key", getAttributeValue(reader, "template"));
                         writer.writeEndElement();
 
-                        String notificationId = getAttributeValue(reader, "id");
-
                         String userAbout = getAttributeValue(reader, "userAbout");
                         if (StringUtils.isNotBlank(userAbout)) {
                             writer.writeStartElement("AnyAbout");
-                            writer.writeAttribute("id", notificationId);
-                            writer.writeAttribute("notification_id", notificationId);
-                            writer.writeAttribute("anyType_name", "USER");
+                            writer.writeAttribute("key", UUID.randomUUID().toString());
+                            writer.writeAttribute("notification_key", lastUUID);
+                            writer.writeAttribute("anyType_key", "USER");
                             writer.writeAttribute("filter", userAbout);
                             writer.writeEndElement();
                         }
                         String roleAbout = getAttributeValue(reader, "roleAbout");
                         if (StringUtils.isNotBlank(roleAbout)) {
                             writer.writeStartElement("AnyAbout");
-                            writer.writeAttribute("id", notificationId);
-                            writer.writeAttribute("notification_id", notificationId);
-                            writer.writeAttribute("anyType_name", "GROUP");
+                            writer.writeAttribute("key", UUID.randomUUID().toString());
+                            writer.writeAttribute("notification_key", lastUUID);
+                            writer.writeAttribute("anyType_key", "GROUP");
                             writer.writeAttribute("filter", roleAbout);
                             writer.writeEndElement();
                         }
@@ -665,7 +758,9 @@ public class MigrateConf {
 
                     case "notification_events":
                         writer.writeStartElement("Notification_events");
-                        copyAttrs(reader, writer, "events");
+                        copyAttrs(reader, writer, "notification_id", "events");
+                        writer.writeAttribute(
+                                "notification_key", notifications.get(getAttributeValue(reader, "notification_id")));
                         writer.writeAttribute(
                                 "event", getAttributeValue(reader, "events").
                                 replaceAll("Controller", "Logic"));
@@ -674,31 +769,50 @@ public class MigrateConf {
 
                     case "notificationtask_recipients":
                         writer.writeStartElement("NotificationTask_recipients");
-                        copyAttrs(reader, writer);
+                        copyAttrs(reader, writer, "notificationTask_id");
+                        writer.writeAttribute(
+                                "notificationTask_key",
+                                tasks.get(getAttributeValue(reader, "notificationTask_id")));
                         writer.writeEndElement();
                         break;
 
                     case "report":
                         writer.writeStartElement("Report");
                         copyAttrs(reader, writer);
+
+                        lastUUID = UUID.randomUUID().toString();
+                        reports.put(getAttributeValue(reader, "id"), lastUUID);
+
+                        writer.writeAttribute("key", lastUUID);
+                        writer.writeAttribute("name", getAttributeValue(reader, "name"));
+
                         writer.writeEndElement();
                         break;
 
                     case "reportletconfinstance":
                         writer.writeStartElement("ReportletConfInstance");
-                        copyAttrs(reader, writer);
+                        copyAttrs(reader, writer, "report_id");
+
+                        writer.writeAttribute("key", UUID.randomUUID().toString());
+                        writer.writeAttribute("report_key", reports.get(getAttributeValue(reader, "report_id")));
+
                         writer.writeEndElement();
                         break;
 
                     case "reportexec":
                         writer.writeStartElement("ReportExec");
-                        copyAttrs(reader, writer);
+                        copyAttrs(reader, writer, "report_id");
+
+                        writer.writeAttribute("key", UUID.randomUUID().toString());
+                        writer.writeAttribute("report_key", reports.get(getAttributeValue(reader, "report_id")));
+
                         writer.writeEndElement();
                         break;
 
                     case "securityquestion":
                         writer.writeStartElement("SecurityQuestion");
                         copyAttrs(reader, writer);
+                        writer.writeAttribute("key", UUID.randomUUID().toString());
                         writer.writeEndElement();
                         break;
 
@@ -710,13 +824,13 @@ public class MigrateConf {
         }
 
         writer.writeStartElement("Realm");
-        writer.writeAttribute("id", "1");
+        writer.writeAttribute("key", UUID.randomUUID().toString());
         writer.writeAttribute("name", "/");
         if (globalAccountPolicy != null) {
-            writer.writeAttribute("accountPolicy_id", globalAccountPolicy);
+            writer.writeAttribute("accountPolicy_key", globalAccountPolicy);
         }
         if (globalPasswordPolicy != null) {
-            writer.writeAttribute("passwordPolicy_id", globalPasswordPolicy);
+            writer.writeAttribute("passwordPolicy_key", globalPasswordPolicy);
         }
         writer.writeEndElement();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/NotificationSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/NotificationSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/NotificationSyncopeOperations.java
index cb11cb5..cbdbf61 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/NotificationSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/notification/NotificationSyncopeOperations.java
@@ -27,15 +27,15 @@ public class NotificationSyncopeOperations {
 
     private final NotificationService notificationService = SyncopeServices.get(NotificationService.class);
 
-    public NotificationTO read(final String notificationId) {
-        return notificationService.read(Long.valueOf(notificationId));
+    public NotificationTO read(final String notificationKey) {
+        return notificationService.read(notificationKey);
     }
 
     public List<NotificationTO> list() {
         return notificationService.list();
     }
 
-    public void delete(final String notificationId) {
-        notificationService.delete(Long.valueOf(notificationId));
+    public void delete(final String notificationKey) {
+        notificationService.delete(notificationKey);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicySyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicySyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicySyncopeOperations.java
index e2d4070..127818b 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicySyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/policy/PolicySyncopeOperations.java
@@ -28,15 +28,15 @@ public class PolicySyncopeOperations {
 
     private final PolicyService policyService = SyncopeServices.get(PolicyService.class);
 
-    public <T extends AbstractPolicyTO> T read(final String policyId) {
-        return policyService.read(Long.valueOf(policyId));
+    public <T extends AbstractPolicyTO> T read(final String policyKey) {
+        return policyService.read(policyKey);
     }
 
     public <T extends AbstractPolicyTO> List<T> list(final String policyType) {
         return policyService.list(PolicyType.valueOf(policyType));
     }
 
-    public void delete(final String policyId) {
-        policyService.delete(Long.valueOf(policyId));
+    public void delete(final String policyKey) {
+        policyService.delete(policyKey);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/550ee4f4/client/cli/src/main/java/org/apache/syncope/client/cli/commands/question/QuestionSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/question/QuestionSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/question/QuestionSyncopeOperations.java
index 8caced7..f4c09bb 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/question/QuestionSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/question/QuestionSyncopeOperations.java
@@ -31,14 +31,14 @@ public class QuestionSyncopeOperations {
         return securityQuestionService.list();
     }
 
-    public void delete(final String questionId) {
-        securityQuestionService.delete(Long.valueOf(questionId));
+    public void delete(final String questionKey) {
+        securityQuestionService.delete(questionKey);
     }
 
-    public SecurityQuestionTO read(final String questionId) {
-        return securityQuestionService.read(Long.valueOf(questionId));
+    public SecurityQuestionTO read(final String questionKey) {
+        return securityQuestionService.read(questionKey);
     }
-    
+
     public SecurityQuestionTO readByUser(final String username) {
         return securityQuestionService.readByUser(username);
     }