From 48e667d3eaad8849f2ccf57204086abb538b7a3a Mon Sep 17 00:00:00 2001
From: RIHTARSIC Joze <joze.rihtarsic@ext.ec.europa.eu>
Date: Tue, 23 May 2023 16:51:45 +0200
Subject: [PATCH] Add migration scripts

---
 .../smp/services/ui/UIResourceService.java    |    8 +-
 .../smp/ui/edit/DomainEditController.java     |    8 +-
 .../smp/ui/edit/GroupEditController.java      |    4 +-
 .../mysql5innoDb-4.2_to_5.0-step_01.sql       |  847 +++++++++++++
 .../mysql5innoDb-4.2_to_5.0-step_02.sql       |   90 ++
 .../oracle10g-4.2_to_5.0-step_01.sql          | 1096 +++++++++++++++++
 .../oracle10g-4.2_to_5.0-step_02.sql          |   90 ++
 7 files changed, 2136 insertions(+), 7 deletions(-)
 create mode 100644 smp-webapp/src/main/smp-setup/database-scripts/migration from 4.2 to 5.0/mysql5innoDb-4.2_to_5.0-step_01.sql
 create mode 100644 smp-webapp/src/main/smp-setup/database-scripts/migration from 4.2 to 5.0/mysql5innoDb-4.2_to_5.0-step_02.sql
 create mode 100644 smp-webapp/src/main/smp-setup/database-scripts/migration from 4.2 to 5.0/oracle10g-4.2_to_5.0-step_01.sql
 create mode 100644 smp-webapp/src/main/smp-setup/database-scripts/migration from 4.2 to 5.0/oracle10g-4.2_to_5.0-step_02.sql

diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIResourceService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIResourceService.java
index 1abe1ae39..933f9bfb1 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIResourceService.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIResourceService.java
@@ -21,7 +21,6 @@ import eu.europa.ec.edelivery.smp.identifiers.Identifier;
 import eu.europa.ec.edelivery.smp.logging.SMPLogger;
 import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory;
 import eu.europa.ec.edelivery.smp.services.SMLIntegrationService;
-import eu.europa.ec.smp.spi.api.model.ResourceIdentifier;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.core.convert.ConversionService;
 import org.springframework.stereotype.Service;
@@ -192,7 +191,7 @@ public class UIResourceService {
             throw new SMPRuntimeException(ErrorCode.INVALID_REQUEST, ACTION_RESOURCE_CREATE, "Resource definition [val:" + resourceRO.getIdentifierValue() + " scheme:" + resourceRO.getIdentifierScheme() + "] already exists for domain!");
         }
         Identifier resourceIdentifier = identifierService.normalizeParticipant(resourceRO.getIdentifierScheme(),
-                resourceRO.getIdentifierValue() );
+                resourceRO.getIdentifierValue());
 
         DBResource resource = new DBResource();
         resource.setIdentifierScheme(resourceIdentifier.getScheme());
@@ -270,7 +269,7 @@ public class UIResourceService {
     }
 
     @Transactional
-    public MemberRO addMemberToResource(Long resourceId, Long groupId,  MemberRO memberRO, Long memberId) {
+    public MemberRO addMemberToResource(Long resourceId, Long groupId, MemberRO memberRO, Long memberId) {
         LOG.info("Add member [{}] to resource [{}]", memberRO.getUsername(), resourceId);
         validateGroupAndResource(resourceId, groupId, "AddMemberToResource");
 
@@ -292,7 +291,7 @@ public class UIResourceService {
     }
 
     @Transactional
-    public MemberRO deleteMemberFromResource(Long resourceId,  Long groupId,  Long memberId) {
+    public MemberRO deleteMemberFromResource(Long resourceId, Long groupId, Long memberId) {
         LOG.info("Delete member [{}] from resource [{}]", memberId, resourceId);
         validateGroupAndResource(resourceId, groupId, "DeleteMemberFromResource");
         DBResourceMember resourceMember = resourceMemberDao.find(memberId);
@@ -306,6 +305,7 @@ public class UIResourceService {
         resourceMemberDao.remove(resourceMember);
         return conversionService.convert(resourceMember, MemberRO.class);
     }
+
     public DBResource validateGroupAndResource(Long resourceId, Long groupId, String action) {
         DBResource resource = resourceDao.find(resourceId);
         if (resource == null) {
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/DomainEditController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/DomainEditController.java
index fd5c4a5d0..16fd1855b 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/DomainEditController.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/DomainEditController.java
@@ -47,7 +47,9 @@ public class DomainEditController {
      * @return Domain list where user has role domain administrator
      */
     @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-    @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) and (@smpAuthorizationService.isAnyGroupAdministrator or @smpAuthorizationService.isAnyDomainAdministrator)")
+    @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) and (@smpAuthorizationService.isAnyGroupAdministrator " +
+            " or @smpAuthorizationService.isAnyDomainAdministrator" +
+            " or @smpAuthorizationService.isAnyResourceAdministrator)")
     public List<DomainRO> getDomainsForUserType(
             @PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
             @RequestParam(value = PARAM_NAME_TYPE, defaultValue = "domain-admin", required = false) String forRole) {
@@ -117,7 +119,9 @@ public class DomainEditController {
 
     @GetMapping(value = SUB_CONTEXT_PATH_EDIT_DOMAIN_RESOURCE_DEF)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) and " +
-            "(@smpAuthorizationService.systemAdministrator or @smpAuthorizationService.isDomainAdministrator(#domainEncId) or  @smpAuthorizationService.isAnyDomainGroupAdministrator(#domainEncId))")
+            "(@smpAuthorizationService.systemAdministrator or @smpAuthorizationService.isDomainAdministrator(#domainEncId) " +
+            "or @smpAuthorizationService.isAnyDomainGroupAdministrator(#domainEncId)" +
+            "or @smpAuthorizationService.isAnyResourceAdministrator)")
     public List<ResourceDefinitionRO>  getDomainResourceDefinitions(
             @PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
             @PathVariable(PATH_PARAM_ENC_DOMAIN_ID) String domainEncId
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/GroupEditController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/GroupEditController.java
index 3359851e0..f4ed3a615 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/GroupEditController.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/GroupEditController.java
@@ -54,7 +54,9 @@ public class GroupEditController {
      */
     @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) " +
-            "and (@smpAuthorizationService.isDomainAdministrator(#domainEncId) or @smpAuthorizationService.isAnyDomainGroupAdministrator(#domainEncId))")
+            "and (@smpAuthorizationService.isDomainAdministrator(#domainEncId) " +
+            "or @smpAuthorizationService.isAnyDomainGroupAdministrator(#domainEncId)" +
+            "or @smpAuthorizationService.isAnyResourceAdministrator)")
     public List<GroupRO> getGroupsForDomain(
             @PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
             @PathVariable(PATH_PARAM_ENC_DOMAIN_ID) String domainEncId,
diff --git a/smp-webapp/src/main/smp-setup/database-scripts/migration from 4.2 to 5.0/mysql5innoDb-4.2_to_5.0-step_01.sql b/smp-webapp/src/main/smp-setup/database-scripts/migration from 4.2 to 5.0/mysql5innoDb-4.2_to_5.0-step_01.sql
new file mode 100644
index 000000000..632da355a
--- /dev/null
+++ b/smp-webapp/src/main/smp-setup/database-scripts/migration from 4.2 to 5.0/mysql5innoDb-4.2_to_5.0-step_01.sql	
@@ -0,0 +1,847 @@
+-- drop indexes
+alter table SMP_ALERT_AUD drop foreign key FKrw0qnto448ojlirpfmfntd8v2;
+alter table SMP_ALERT_PROPERTY drop foreign key FK15r37w3r5ty5f6074ykr2o4i6;
+alter table SMP_ALERT_PROPERTY_AUD drop foreign key FKod33qjx87ih1a0skxl2sgddar;
+alter table SMP_CERTIFICATE drop foreign key FKayqgpj5ot3o8vrpduul7sstta;
+alter table SMP_CERTIFICATE_AUD drop foreign key FKnrwm8en8vv10li8ihwnurwd9e;
+alter table SMP_CONFIGURATION_AUD drop foreign key FKd4yhbdlusovfbdti1fjkuxp9m;
+alter table SMP_DOMAIN_AUD drop foreign key FK35qm8xmi74kfenugeonijodsg;
+alter table SMP_OWNERSHIP drop foreign key FKrnqwq06lbfwciup4rj8nvjpmy;
+alter table SMP_OWNERSHIP drop foreign key FKgexq5n6ftsid8ehqljvjh8p4i;
+alter table SMP_OWNERSHIP_AUD drop foreign key FK1lqynlbk8ow1ouxetf5wybk3k;
+alter table SMP_SERVICE_GROUP_AUD drop foreign key FKj3caimhegwyav1scpwrxoslef;
+alter table SMP_SERVICE_GROUP_DOMAIN drop foreign key FKo186xtefda6avl5p1tuqchp3n;
+alter table SMP_SERVICE_GROUP_DOMAIN drop foreign key FKgcvhnk2n34d3c6jhni5l3s3x3;
+alter table SMP_SERVICE_GROUP_DOMAIN_AUD drop foreign key FK6uc9r0eqw16baooxtmqjkih0j;
+alter table SMP_SERVICE_METADATA drop foreign key FKfvcml6b8x7kn80m30h8pxs7jl;
+alter table SMP_SERVICE_METADATA_AUD drop foreign key FKbqr9pdnik1qxx2hi0xn4n7f61;
+alter table SMP_SERVICE_METADATA_XML drop foreign key FK4b1x06xlavcgbjnuilgksi7nm;
+alter table SMP_SERVICE_METADATA_XML_AUD drop foreign key FKevatmlvvwoxfnjxkvmokkencb;
+alter table SMP_SG_EXTENSION drop foreign key FKtf0mfonugp2jbkqo2o142chib;
+alter table SMP_SG_EXTENSION_AUD drop foreign key FKmdo9v2422adwyebvl34qa3ap6;
+alter table SMP_USER_AUD  drop foreign key FK2786r5minnkai3d22b191iiiq;
+
+-- backup tables
+RENAME TABLE SMP_ALERT TO BCK_ALERT;
+RENAME TABLE SMP_ALERT_AUD TO BCK_ALERT_AUD;
+RENAME TABLE SMP_ALERT_PROPERTY TO BCK_ALERT_PROPERTY;
+RENAME TABLE SMP_ALERT_PROPERTY_AUD TO BCK_ALERT_PROPERTY_AUD;
+RENAME TABLE SMP_CERTIFICATE TO BCK_CERTIFICATE;
+RENAME TABLE SMP_CERTIFICATE_AUD TO BCK_CERTIFICATE_AUD;
+RENAME TABLE SMP_CONFIGURATION TO BCK_CONFIGURATION;
+RENAME TABLE SMP_CONFIGURATION_AUD TO BCK_CONFIGURATION_AUD;
+RENAME TABLE SMP_DOMAIN TO BCK_DOMAIN;
+RENAME TABLE SMP_DOMAIN_AUD TO BCK_DOMAIN_AUD;
+RENAME TABLE SMP_OWNERSHIP TO BCK_OWNERSHIP;
+RENAME TABLE SMP_OWNERSHIP_AUD TO BCK_OWNERSHIP_AUD;
+RENAME TABLE SMP_REV_INFO TO BCK_REV_INFO;
+RENAME TABLE SMP_SERVICE_GROUP TO BCK_SERVICE_GROUP;
+RENAME TABLE SMP_SERVICE_GROUP_AUD TO BCK_SERVICE_GROUP_AUD;
+RENAME TABLE SMP_SERVICE_GROUP_DOMAIN TO BCK_SERVICE_GROUP_DOMAIN;
+RENAME TABLE SMP_SERVICE_GROUP_DOMAIN_AUD TO BCK_SERVICE_GROUP_DOMAIN_AUD;
+RENAME TABLE SMP_SERVICE_METADATA TO BCK_SERVICE_METADATA;
+RENAME TABLE SMP_SERVICE_METADATA_AUD TO BCK_SERVICE_METADATA_AUD;
+RENAME TABLE SMP_SERVICE_METADATA_XML TO BCK_SERVICE_METADATA_XML;
+RENAME TABLE SMP_SERVICE_METADATA_XML_AUD TO BCK_SERVICE_METADATA_XML_AUD;
+RENAME TABLE SMP_SG_EXTENSION TO BCK_SG_EXTENSION;
+RENAME TABLE SMP_SG_EXTENSION_AUD TO BCK_SG_EXTENSION_AUD;
+RENAME TABLE SMP_USER TO BCK_USER;
+RENAME TABLE SMP_USER_AUD TO BCK_USER_AUD;
+
+-- ------------------------------------------------------------------------
+-- initiate database
+-- ------------------------------------------------------------------------
+-- This file was generated by hibernate for SMP version 5.0.
+-- ------------------------------------------------------------------------
+
+
+create table SMP_ALERT (
+   ID bigint not null auto_increment comment 'Unique alert id',
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    ALERT_LEVEL varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin,
+    ALERT_STATUS varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin,
+    ALERT_STATUS_DESC varchar(1024)  CHARACTER SET utf8 COLLATE utf8_bin,
+    ALERT_TYPE varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin,
+    MAIL_SUBJECT varchar(1024)  CHARACTER SET utf8 COLLATE utf8_bin,
+    MAIL_TO varchar(1024)  CHARACTER SET utf8 COLLATE utf8_bin,
+    PROCESSED_TIME datetime,
+    REPORTING_TIME datetime,
+    FOR_USERNAME varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    primary key (ID)
+) comment='SMP alerts' ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_ALERT_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    ALERT_LEVEL varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin,
+    ALERT_STATUS varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin,
+    ALERT_STATUS_DESC varchar(1024)  CHARACTER SET utf8 COLLATE utf8_bin,
+    ALERT_TYPE varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin,
+    MAIL_SUBJECT varchar(1024)  CHARACTER SET utf8 COLLATE utf8_bin,
+    MAIL_TO varchar(1024)  CHARACTER SET utf8 COLLATE utf8_bin,
+    PROCESSED_TIME datetime,
+    REPORTING_TIME datetime,
+    FOR_USERNAME varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_ALERT_PROPERTY (
+   ID bigint not null auto_increment comment 'Unique alert property id',
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    PROPERTY_NAME varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin,
+    PROPERTY_VALUE varchar(1024)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FK_ALERT_ID bigint,
+    primary key (ID)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_ALERT_PROPERTY_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    PROPERTY_NAME varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin,
+    PROPERTY_VALUE varchar(1024)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FK_ALERT_ID bigint,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_CERTIFICATE (
+   ID bigint not null comment 'Shared primary key with master table SMP_CREDENTIAL',
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    CERTIFICATE_ID varchar(1024)  CHARACTER SET utf8 COLLATE utf8_bin comment 'Formatted Certificate id using tags: cn, o, c:serialNumber',
+    CRL_URL varchar(4000)  CHARACTER SET utf8 COLLATE utf8_bin comment 'URL to the certificate revocation list (CRL)',
+    ISSUER varchar(1024)  CHARACTER SET utf8 COLLATE utf8_bin comment 'Certificate issuer (canonical form)',
+    PEM_ENCODED_CERT longtext comment 'PEM encoded  certificate',
+    SERIALNUMBER varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin comment 'Certificate serial number',
+    SUBJECT varchar(1024)  CHARACTER SET utf8 COLLATE utf8_bin comment 'Certificate subject (canonical form)',
+    VALID_FROM datetime comment 'Certificate valid from date.',
+    VALID_TO datetime comment 'Certificate valid to date.',
+    primary key (ID)
+) comment='SMP user certificates' ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_CERTIFICATE_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    CERTIFICATE_ID varchar(1024)  CHARACTER SET utf8 COLLATE utf8_bin,
+    CRL_URL varchar(4000)  CHARACTER SET utf8 COLLATE utf8_bin,
+    ISSUER varchar(1024)  CHARACTER SET utf8 COLLATE utf8_bin,
+    PEM_ENCODED_CERT longtext,
+    SERIALNUMBER varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    SUBJECT varchar(1024)  CHARACTER SET utf8 COLLATE utf8_bin,
+    VALID_FROM datetime,
+    VALID_TO datetime,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_CONFIGURATION (
+   PROPERTY_NAME varchar(512)  CHARACTER SET utf8 COLLATE utf8_bin not null comment 'Property name/key',
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    DESCRIPTION varchar(4000)  CHARACTER SET utf8 COLLATE utf8_bin comment 'Property description',
+    PROPERTY_VALUE varchar(4000)  CHARACTER SET utf8 COLLATE utf8_bin comment 'Property value',
+    primary key (PROPERTY_NAME)
+) comment='SMP user certificates' ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_CONFIGURATION_AUD (
+   PROPERTY_NAME varchar(512)  CHARACTER SET utf8 COLLATE utf8_bin not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    DESCRIPTION varchar(4000)  CHARACTER SET utf8 COLLATE utf8_bin,
+    PROPERTY_VALUE varchar(4000)  CHARACTER SET utf8 COLLATE utf8_bin,
+    primary key (PROPERTY_NAME, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_CREDENTIAL (
+   ID bigint not null auto_increment comment 'Unique id',
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    CREDENTIAL_ACTIVE bit not null comment 'Is credential active',
+    ACTIVE_FROM datetime comment 'Date when credential starts to be active',
+    CHANGED_ON datetime comment 'Last date when credential was changed',
+    CREDENTIAL_TARGET varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin not null comment 'Credential target UI, API',
+    CREDENTIAL_TYPE varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin not null comment 'Credential type:  USERNAME, ACCESS_TOKEN, CERTIFICATE, CAS',
+    CREDENTIAL_DESC varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin comment 'Credential description',
+    LAST_ALERT_ON datetime comment 'Generated last password expire alert',
+    EXPIRE_ON datetime comment 'Date when password will expire',
+    LAST_FAILED_LOGIN_ON datetime comment 'Last failed login attempt',
+    CREDENTIAL_NAME varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin not null comment 'Unique username identifier. The Username must not be null',
+    LOGIN_FAILURE_COUNT integer comment 'Sequential login failure count',
+    CREDENTIAL_VALUE varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin comment 'Credential value - it can be encrypted value',
+    FK_USER_ID bigint not null,
+    primary key (ID)
+) comment='Credentials for the users' ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_CREDENTIAL_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    CREDENTIAL_ACTIVE bit,
+    ACTIVE_FROM datetime,
+    CHANGED_ON datetime,
+    CREDENTIAL_TARGET varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin,
+    CREDENTIAL_TYPE varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin,
+    CREDENTIAL_DESC varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    LAST_ALERT_ON datetime,
+    EXPIRE_ON datetime,
+    LAST_FAILED_LOGIN_ON datetime,
+    CREDENTIAL_NAME varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    LOGIN_FAILURE_COUNT integer,
+    CREDENTIAL_VALUE varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FK_USER_ID bigint,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_DOCUMENT (
+   ID bigint not null auto_increment comment 'Unique document id',
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    CURRENT_VERSION integer not null,
+    MIME_TYPE varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    NAME varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin,
+    primary key (ID)
+) comment='SMP document entity for resources and subresources' ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_DOCUMENT_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    CURRENT_VERSION integer,
+    MIME_TYPE varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    NAME varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_DOCUMENT_VERSION (
+   ID bigint not null auto_increment comment 'Unique version document id',
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    DOCUMENT_CONTENT longblob comment 'Document content',
+    VERSION integer not null,
+    FK_DOCUMENT_ID bigint,
+    primary key (ID)
+) comment='Document content for the document version.' ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_DOCUMENT_VERSION_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    DOCUMENT_CONTENT longblob,
+    VERSION integer,
+    FK_DOCUMENT_ID bigint,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_DOMAIN (
+   ID bigint not null auto_increment comment 'Unique domain id',
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    DEFAULT_RESOURCE_IDENTIFIER varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin comment 'Default resourceType code',
+    DOMAIN_CODE varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin not null comment 'Domain code used as http parameter in rest webservices',
+    SIGNATURE_ALGORITHM varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin comment 'Set signature algorithm. Ex.: http://www.w3.org/2001/04/xmldsig-more#rsa-sha256',
+    SIGNATURE_DIGEST_METHOD varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin comment 'Set signature hash method. Ex.: http://www.w3.org/2001/04/xmlenc#sha256',
+    SIGNATURE_KEY_ALIAS varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin comment 'Signature key alias used for SML integration',
+    SML_CLIENT_CERT_AUTH bit not null comment 'Flag for SML authentication type - use ClientCert header or  HTTPS ClientCertificate (key)',
+    SML_CLIENT_KEY_ALIAS varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin comment 'Client key alias used for SML integration',
+    SML_REGISTERED bit not null comment 'Flag for: Is domain registered in SML',
+    SML_SMP_ID varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin comment 'SMP ID used for SML integration',
+    SML_SUBDOMAIN varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin comment 'SML subdomain',
+    VISIBILITY varchar(64)  CHARACTER SET utf8 COLLATE utf8_bin comment 'The visibility of the domain: PUBLIC, INTERNAL',
+    primary key (ID)
+) comment='SMP can handle multiple domains. This table contains domain specific data' ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_DOMAIN_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    DEFAULT_RESOURCE_IDENTIFIER varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin,
+    DOMAIN_CODE varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    SIGNATURE_ALGORITHM varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    SIGNATURE_DIGEST_METHOD varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    SIGNATURE_KEY_ALIAS varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    SML_CLIENT_CERT_AUTH bit,
+    SML_CLIENT_KEY_ALIAS varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    SML_REGISTERED bit,
+    SML_SMP_ID varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    SML_SUBDOMAIN varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    VISIBILITY varchar(64)  CHARACTER SET utf8 COLLATE utf8_bin,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_DOMAIN_MEMBER (
+   ID bigint not null auto_increment,
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    MEMBERSHIP_ROLE varchar(64)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FK_DOMAIN_ID bigint,
+    FK_USER_ID bigint,
+    primary key (ID)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_DOMAIN_MEMBER_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    MEMBERSHIP_ROLE varchar(64)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FK_DOMAIN_ID bigint,
+    FK_USER_ID bigint,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_DOMAIN_RESOURCE_DEF (
+   ID bigint not null auto_increment,
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    FK_DOMAIN_ID bigint,
+    FK_RESOURCE_DEF_ID bigint,
+    primary key (ID)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_DOMAIN_RESOURCE_DEF_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    FK_DOMAIN_ID bigint,
+    FK_RESOURCE_DEF_ID bigint,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_EXTENSION (
+   ID bigint not null auto_increment comment 'Unique extension id',
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    DESCRIPTION varchar(512)  CHARACTER SET utf8 COLLATE utf8_bin,
+    IDENTIFIER varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    IMPLEMENTATION_NAME varchar(512)  CHARACTER SET utf8 COLLATE utf8_bin,
+    NAME varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    VERSION varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    primary key (ID)
+) comment='SMP extension definitions' ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_EXTENSION_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    DESCRIPTION varchar(512)  CHARACTER SET utf8 COLLATE utf8_bin,
+    IDENTIFIER varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    IMPLEMENTATION_NAME varchar(512)  CHARACTER SET utf8 COLLATE utf8_bin,
+    NAME varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    VERSION varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_GROUP (
+   ID bigint not null auto_increment comment 'Unique domain group id',
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    DESCRIPTION varchar(4000)  CHARACTER SET utf8 COLLATE utf8_bin comment 'Domain Group description',
+    NAME varchar(512)  CHARACTER SET utf8 COLLATE utf8_bin not null comment 'Domain Group name',
+    VISIBILITY varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FK_DOMAIN_ID bigint not null,
+    primary key (ID)
+) comment='The group spans the resources belonging to the domain group.' ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_GROUP_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    DESCRIPTION varchar(4000)  CHARACTER SET utf8 COLLATE utf8_bin,
+    NAME varchar(512)  CHARACTER SET utf8 COLLATE utf8_bin,
+    VISIBILITY varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FK_DOMAIN_ID bigint,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_GROUP_MEMBER (
+   ID bigint not null auto_increment,
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    MEMBERSHIP_ROLE varchar(64)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FK_GROUP_ID bigint,
+    FK_USER_ID bigint,
+    primary key (ID)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_GROUP_MEMBER_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    MEMBERSHIP_ROLE varchar(64)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FK_GROUP_ID bigint,
+    FK_USER_ID bigint,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_RESOURCE (
+   ID bigint not null auto_increment comment 'Unique ServiceGroup id',
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    IDENTIFIER_SCHEME varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    IDENTIFIER_VALUE varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin not null,
+    SML_REGISTERED bit not null,
+    VISIBILITY varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FK_DOCUMENT_ID bigint not null,
+    FK_DOREDEF_ID bigint not null,
+    FK_GROUP_ID bigint,
+    primary key (ID)
+) comment='SMP resource Identifier and scheme' ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_RESOURCE_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    IDENTIFIER_SCHEME varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    IDENTIFIER_VALUE varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    SML_REGISTERED bit,
+    VISIBILITY varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FK_DOCUMENT_ID bigint,
+    FK_DOREDEF_ID bigint,
+    FK_GROUP_ID bigint,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_RESOURCE_DEF (
+   ID bigint not null auto_increment comment 'Unique id',
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    DESCRIPTION varchar(512)  CHARACTER SET utf8 COLLATE utf8_bin,
+    HANDLER_IMPL_NAME varchar(512)  CHARACTER SET utf8 COLLATE utf8_bin,
+    IDENTIFIER varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    MIME_TYPE varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    NAME varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    URL_SEGMENT varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin comment 'resources are published under url_segment.',
+    FK_EXTENSION_ID bigint,
+    primary key (ID)
+) comment='SMP extension resource definitions' ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_RESOURCE_DEF_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    DESCRIPTION varchar(512)  CHARACTER SET utf8 COLLATE utf8_bin,
+    HANDLER_IMPL_NAME varchar(512)  CHARACTER SET utf8 COLLATE utf8_bin,
+    IDENTIFIER varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    MIME_TYPE varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    NAME varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    URL_SEGMENT varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FK_EXTENSION_ID bigint,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_RESOURCE_MEMBER (
+   ID bigint not null auto_increment,
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    MEMBERSHIP_ROLE varchar(64)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FK_RESOURCE_ID bigint,
+    FK_USER_ID bigint,
+    primary key (ID)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_RESOURCE_MEMBER_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    MEMBERSHIP_ROLE varchar(64)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FK_RESOURCE_ID bigint,
+    FK_USER_ID bigint,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_REV_INFO (
+   id bigint not null auto_increment,
+    REVISION_DATE datetime,
+    timestamp bigint not null,
+    USERNAME varchar(255)  CHARACTER SET utf8 COLLATE utf8_bin,
+    primary key (id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_SUBRESOURCE (
+   ID bigint not null auto_increment comment 'Shared primary key with master table SMP_SUBRESOURCE',
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    IDENTIFIER_SCHEME varchar(500)  CHARACTER SET utf8 COLLATE utf8_bin,
+    IDENTIFIER_VALUE varchar(500)  CHARACTER SET utf8 COLLATE utf8_bin not null,
+    FK_DOCUMENT_ID bigint,
+    FK_RESOURCE_ID bigint not null,
+    FK_SUREDEF_ID bigint not null,
+    primary key (ID)
+) comment='Service metadata' ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_SUBRESOURCE_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    IDENTIFIER_SCHEME varchar(500)  CHARACTER SET utf8 COLLATE utf8_bin,
+    IDENTIFIER_VALUE varchar(500)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FK_DOCUMENT_ID bigint,
+    FK_RESOURCE_ID bigint,
+    FK_SUREDEF_ID bigint,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_SUBRESOURCE_DEF (
+   ID bigint not null auto_increment comment 'Unique id',
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    DESCRIPTION varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    HANDLER_IMPL_NAME varchar(512)  CHARACTER SET utf8 COLLATE utf8_bin,
+    IDENTIFIER varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    MIME_TYPE varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    NAME varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    URL_SEGMENT varchar(64)  CHARACTER SET utf8 COLLATE utf8_bin comment 'Subresources are published under url_segment. It must be unique for resource type',
+    FK_RESOURCE_DEF_ID bigint,
+    primary key (ID)
+) comment='SMP extension subresource definitions' ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_SUBRESOURCE_DEF_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    DESCRIPTION varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    HANDLER_IMPL_NAME varchar(512)  CHARACTER SET utf8 COLLATE utf8_bin,
+    IDENTIFIER varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    MIME_TYPE varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    NAME varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    URL_SEGMENT varchar(64)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FK_RESOURCE_DEF_ID bigint,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_USER (
+   ID bigint not null auto_increment comment 'Unique user id',
+    CREATED_ON datetime not null,
+    LAST_UPDATED_ON datetime not null,
+    ACTIVE bit not null comment 'Is user active',
+    APPLICATION_ROLE varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin comment 'User application role as USER, SYSTEM_ADMIN',
+    EMAIL varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin comment 'User email',
+    FULL_NAME varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin comment 'User full name (name and lastname)',
+    SMP_LOCALE varchar(64)  CHARACTER SET utf8 COLLATE utf8_bin comment 'DomiSMP settings: locale for the user',
+    SMP_THEME varchar(64)  CHARACTER SET utf8 COLLATE utf8_bin comment 'DomiSMP settings: theme for the user',
+    USERNAME varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin not null comment 'Unique username identifier. The Username must not be null',
+    primary key (ID)
+) comment='SMP can handle multiple domains. This table contains domain specific data' ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+create table SMP_USER_AUD (
+   ID bigint not null,
+    REV bigint not null,
+    REVTYPE tinyint,
+    CREATED_ON datetime,
+    LAST_UPDATED_ON datetime,
+    ACTIVE bit,
+    APPLICATION_ROLE varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    EMAIL varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    FULL_NAME varchar(128)  CHARACTER SET utf8 COLLATE utf8_bin,
+    SMP_LOCALE varchar(64)  CHARACTER SET utf8 COLLATE utf8_bin,
+    SMP_THEME varchar(64)  CHARACTER SET utf8 COLLATE utf8_bin,
+    USERNAME varchar(256)  CHARACTER SET utf8 COLLATE utf8_bin,
+    primary key (ID, REV)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+alter table SMP_CERTIFICATE
+   add constraint UK_3x3rvf6hkim9fg16caurkgg6f unique (CERTIFICATE_ID);
+
+alter table SMP_CREDENTIAL
+   add constraint SMP_CRD_USER_NAME_TYPE_IDX unique (CREDENTIAL_NAME, CREDENTIAL_TYPE, CREDENTIAL_TARGET);
+create index SMP_DOCVER_DOCUMENT_IDX on SMP_DOCUMENT_VERSION (FK_DOCUMENT_ID);
+
+alter table SMP_DOCUMENT_VERSION
+   add constraint SMP_DOCVER_UNIQ_VERSION_IDX unique (FK_DOCUMENT_ID, VERSION);
+
+alter table SMP_DOMAIN
+   add constraint UK_djrwqd4luj5i7w4l7fueuaqbj unique (DOMAIN_CODE);
+
+alter table SMP_DOMAIN
+   add constraint UK_likb3jn0nlxlekaws0xx10uqc unique (SML_SUBDOMAIN);
+
+alter table SMP_DOMAIN_MEMBER
+   add constraint SMP_DOM_MEM_IDX unique (FK_DOMAIN_ID, FK_USER_ID);
+
+alter table SMP_DOMAIN_RESOURCE_DEF
+   add constraint SMP_DOREDEF_UNIQ_DOM_RD_IDX unique (FK_RESOURCE_DEF_ID, FK_DOMAIN_ID);
+
+alter table SMP_EXTENSION
+   add constraint SMP_EXT_UNIQ_NAME_IDX unique (IMPLEMENTATION_NAME);
+
+alter table SMP_EXTENSION
+   add constraint UK_p4vfhgs7fvuo6uebjsuqxrglg unique (IDENTIFIER);
+
+alter table SMP_GROUP
+   add constraint SMP_GRP_UNIQ_DOM_IDX unique (NAME, FK_DOMAIN_ID);
+
+alter table SMP_GROUP_MEMBER
+   add constraint SMP_GRP_MEM_IDX unique (FK_GROUP_ID, FK_USER_ID);
+create index SMP_RS_ID_IDX on SMP_RESOURCE (IDENTIFIER_VALUE);
+create index SMP_RS_SCH_IDX on SMP_RESOURCE (IDENTIFIER_SCHEME);
+
+alter table SMP_RESOURCE
+   add constraint SMP_RS_UNIQ_IDENT_DOREDEF_IDX unique (IDENTIFIER_SCHEME, IDENTIFIER_VALUE, FK_DOREDEF_ID);
+
+alter table SMP_RESOURCE_DEF
+   add constraint SMP_RESDEF_UNIQ_EXTID_CODE_IDX unique (FK_EXTENSION_ID, IDENTIFIER);
+
+alter table SMP_RESOURCE_DEF
+   add constraint UK_k7l5fili2mmhgslv77afg4myo unique (IDENTIFIER);
+
+alter table SMP_RESOURCE_DEF
+   add constraint UK_jjbctkhd4h0u9whb1i9wbxwoe unique (URL_SEGMENT);
+
+alter table SMP_RESOURCE_MEMBER
+   add constraint SMP_RES_MEM_IDX unique (FK_RESOURCE_ID, FK_USER_ID);
+create index SMP_SMD_DOC_ID_IDX on SMP_SUBRESOURCE (IDENTIFIER_VALUE);
+create index SMP_SMD_DOC_SCH_IDX on SMP_SUBRESOURCE (IDENTIFIER_SCHEME);
+
+alter table SMP_SUBRESOURCE
+   add constraint SMP_SRS_UNIQ_ID_RES_SRT_IDX unique (FK_RESOURCE_ID, IDENTIFIER_VALUE, IDENTIFIER_SCHEME);
+
+alter table SMP_SUBRESOURCE_DEF
+   add constraint SMP_RD_UNIQ_RDID_UCTX_IDX unique (FK_RESOURCE_DEF_ID, URL_SEGMENT);
+
+alter table SMP_SUBRESOURCE_DEF
+   add constraint UK_pmdcnfwm5in2q9ky0b6dlgqvi unique (IDENTIFIER);
+
+alter table SMP_USER
+   add constraint UK_rt1f0anklfo05lt0my05fqq6 unique (USERNAME);
+
+alter table SMP_ALERT_AUD
+   add constraint FKrw0qnto448ojlirpfmfntd8v2
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_ALERT_PROPERTY
+   add constraint FK15r37w3r5ty5f6074ykr2o4i6
+   foreign key (FK_ALERT_ID)
+   references SMP_ALERT (ID);
+
+alter table SMP_ALERT_PROPERTY_AUD
+   add constraint FKod33qjx87ih1a0skxl2sgddar
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_CERTIFICATE
+   add constraint FK25b9apuupvmjp18wnn2b2gfg8
+   foreign key (ID)
+   references SMP_CREDENTIAL (ID);
+
+alter table SMP_CERTIFICATE_AUD
+   add constraint FKnrwm8en8vv10li8ihwnurwd9e
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_CONFIGURATION_AUD
+   add constraint FKd4yhbdlusovfbdti1fjkuxp9m
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_CREDENTIAL
+   add constraint FK89it2lyqvi2bl9bettx66n8n1
+   foreign key (FK_USER_ID)
+   references SMP_USER (ID);
+
+alter table SMP_CREDENTIAL_AUD
+   add constraint FKqjh6vxvb5tg0tvbkvi3k3xhe6
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_DOCUMENT_AUD
+   add constraint FKh9epnme26i271eixtvrpqejvi
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_DOCUMENT_VERSION
+   add constraint FKalsuoqx4csyp9mygvng911do
+   foreign key (FK_DOCUMENT_ID)
+   references SMP_DOCUMENT (ID);
+
+alter table SMP_DOCUMENT_VERSION_AUD
+   add constraint FK4glqiu73939kpyyb6bhw822k3
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_DOMAIN_AUD
+   add constraint FK35qm8xmi74kfenugeonijodsg
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_DOMAIN_MEMBER
+   add constraint FK1tdwy9oiyrk6tl4mk0fakhkf5
+   foreign key (FK_DOMAIN_ID)
+   references SMP_DOMAIN (ID);
+
+alter table SMP_DOMAIN_MEMBER
+   add constraint FKino2nvj74wc755nyn5mo260qi
+   foreign key (FK_USER_ID)
+   references SMP_USER (ID);
+
+alter table SMP_DOMAIN_MEMBER_AUD
+   add constraint FKijiv1avufqo9iu5u0cj4v3pv7
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_DOMAIN_RESOURCE_DEF
+   add constraint FK563xw5tjw4rlr32va9g17cdsq
+   foreign key (FK_DOMAIN_ID)
+   references SMP_DOMAIN (ID);
+
+alter table SMP_DOMAIN_RESOURCE_DEF
+   add constraint FKtppp16v40ll2ch3ly8xusb8hi
+   foreign key (FK_RESOURCE_DEF_ID)
+   references SMP_RESOURCE_DEF (ID);
+
+alter table SMP_DOMAIN_RESOURCE_DEF_AUD
+   add constraint FKpujj9vb097i5w4loa3dxww2nj
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_EXTENSION_AUD
+   add constraint FKke7f9wbwvp1bmnlqh9hrfm0r
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_GROUP
+   add constraint FKjeomxyxjueaiyt7f0he0ls7vm
+   foreign key (FK_DOMAIN_ID)
+   references SMP_DOMAIN (ID);
+
+alter table SMP_GROUP_AUD
+   add constraint FKeik3quor2dxho7bmyoxc2ug9o
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_GROUP_MEMBER
+   add constraint FK3y21chrphgx1dytux0p19btxe
+   foreign key (FK_GROUP_ID)
+   references SMP_GROUP (ID);
+
+alter table SMP_GROUP_MEMBER
+   add constraint FK8ue5gj1rx6gyiqp19dscp85ut
+   foreign key (FK_USER_ID)
+   references SMP_USER (ID);
+
+alter table SMP_GROUP_MEMBER_AUD
+   add constraint FK5pmorcyhwkaysh0a8xm99x6a8
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_RESOURCE
+   add constraint FKkc5a6okrvq7dv87itfp7i1vmv
+   foreign key (FK_DOCUMENT_ID)
+   references SMP_DOCUMENT (ID);
+
+alter table SMP_RESOURCE
+   add constraint FK24mw8fiua39nh8rnobhgmujri
+   foreign key (FK_DOREDEF_ID)
+   references SMP_DOMAIN_RESOURCE_DEF (ID);
+
+alter table SMP_RESOURCE
+   add constraint FKft55kasui36i77inf0wh8utv5
+   foreign key (FK_GROUP_ID)
+   references SMP_GROUP (ID);
+
+alter table SMP_RESOURCE_AUD
+   add constraint FKlbbfltxw6qmph5w3i8c9qf6kb
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_RESOURCE_DEF
+   add constraint FKruu7v6uig9h333ihv34haw3ob
+   foreign key (FK_EXTENSION_ID)
+   references SMP_EXTENSION (ID);
+
+alter table SMP_RESOURCE_DEF_AUD
+   add constraint FKapswkgbdm9s4wwhx2cjduoniw
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_RESOURCE_MEMBER
+   add constraint FKrci5jlgnckwo1mhq2rvmfaptw
+   foreign key (FK_RESOURCE_ID)
+   references SMP_RESOURCE (ID);
+
+alter table SMP_RESOURCE_MEMBER
+   add constraint FKs6jx68jxlx4xfdtxy20f3s6lu
+   foreign key (FK_USER_ID)
+   references SMP_USER (ID);
+
+alter table SMP_RESOURCE_MEMBER_AUD
+   add constraint FKknykp2wcby9fxk234yaaix1pe
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_SUBRESOURCE
+   add constraint FK7y1ydnq350mbs3c8yrq2fhnsk
+   foreign key (FK_DOCUMENT_ID)
+   references SMP_DOCUMENT (ID);
+
+alter table SMP_SUBRESOURCE
+   add constraint FK7clbsapruvhkcqgekfxs8prex
+   foreign key (FK_RESOURCE_ID)
+   references SMP_RESOURCE (ID);
+
+alter table SMP_SUBRESOURCE
+   add constraint FKq3wmyy4ieoenuu1s55237qu9k
+   foreign key (FK_SUREDEF_ID)
+   references SMP_SUBRESOURCE_DEF (ID);
+
+alter table SMP_SUBRESOURCE_AUD
+   add constraint FKffihyo233ldee8nejbkyclrov
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_SUBRESOURCE_DEF
+   add constraint FKbjqilcym6p3pptva2s4d1gw8o
+   foreign key (FK_RESOURCE_DEF_ID)
+   references SMP_RESOURCE_DEF (ID);
+
+alter table SMP_SUBRESOURCE_DEF_AUD
+   add constraint FK1dd2l0ujtncg9u7hl3c4rte63
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+alter table SMP_USER_AUD
+   add constraint FK2786r5minnkai3d22b191iiiq
+   foreign key (REV)
+   references SMP_REV_INFO (id);
+
+-- --------------------------------------------------------------------
+-- COPY DATA
+-- --------------------------------------------------------------------
diff --git a/smp-webapp/src/main/smp-setup/database-scripts/migration from 4.2 to 5.0/mysql5innoDb-4.2_to_5.0-step_02.sql b/smp-webapp/src/main/smp-setup/database-scripts/migration from 4.2 to 5.0/mysql5innoDb-4.2_to_5.0-step_02.sql
new file mode 100644
index 000000000..2f6b80ac3
--- /dev/null
+++ b/smp-webapp/src/main/smp-setup/database-scripts/migration from 4.2 to 5.0/mysql5innoDb-4.2_to_5.0-step_02.sql	
@@ -0,0 +1,90 @@
+-- copy data from backup
+insert into SMP_ALERT (ID,CREATED_ON,LAST_UPDATED_ON,ALERT_LEVEL,ALERT_STATUS,ALERT_STATUS_DESC,ALERT_TYPE,MAIL_SUBJECT,MAIL_TO,PROCESSED_TIME,REPORTING_TIME,FOR_USERNAME )
+    select ID,CREATED_ON,LAST_UPDATED_ON,ALERT_LEVEL,ALERT_STATUS,ALERT_STATUS_DESC,ALERT_TYPE,MAIL_SUBJECT,MAIL_TO,PROCESSED_TIME,REPORTING_TIME,FOR_USERNAME from BCK_ALERT;
+insert into SMP_ALERT_PROPERTY (ID,CREATED_ON,LAST_UPDATED_ON,PROPERTY_NAME,PROPERTY_VALUE,FK_ALERT_ID)
+    select ID,CREATED_ON,LAST_UPDATED_ON,PROPERTY,VALUE,FK_ALERT_ID from BCK_ALERT_PROPERTY;
+-- properties
+insert into SMP_CONFIGURATION ( PROPERTY_NAME, PROPERTY_VALUE, CREATED_ON, LAST_UPDATED_ON, DESCRIPTION)
+    select PROPERTY, VALUE, CREATED_ON, LAST_UPDATED_ON, DESCRIPTION from BCK_CONFIGURATION;
+-- users and credentials
+insert into SMP_USER ( ID,USERNAME, CREATED_ON,LAST_UPDATED_ON,ACTIVE,APPLICATION_ROLE,EMAIL)
+    select ID,USERNAME, CREATED_ON,LAST_UPDATED_ON,ACTIVE,if(ROLE='SYSTEM_ADMIN','SYSTEM_ADMIN','USER'),EMAIL from BCK_USER;
+-- set password credentials
+insert into SMP_CREDENTIAL (CREDENTIAL_NAME, CREDENTIAL_VALUE,FK_USER_ID,CREDENTIAL_TARGET,CREDENTIAL_TYPE,CREDENTIAL_ACTIVE, ACTIVE_FROM, EXPIRE_ON,CREATED_ON,LAST_UPDATED_ON, CHANGED_ON,LAST_ALERT_ON, LAST_FAILED_LOGIN_ON,LOGIN_FAILURE_COUNT)
+select USERNAME, PASSWORD, id, 'UI', 'USERNAME_PASSWORD', 1, null, PASSWORD_EXPIRE_ON, CREATED_ON,LAST_UPDATED_ON, PASSWORD_CHANGED,PASSWORD_LAST_ALERT_ON,LAST_FAILED_LOGIN_ON, LOGIN_FAILURE_COUNT  from BCK_USER;
+-- set access token
+insert into SMP_CREDENTIAL (CREDENTIAL_NAME, CREDENTIAL_VALUE,FK_USER_ID,CREDENTIAL_TARGET,CREDENTIAL_TYPE,CREDENTIAL_ACTIVE, ACTIVE_FROM, EXPIRE_ON,CREATED_ON,LAST_UPDATED_ON, CHANGED_ON,LAST_ALERT_ON, LAST_FAILED_LOGIN_ON,LOGIN_FAILURE_COUNT)
+select ACCESS_TOKEN_ID, ACCESS_TOKEN, id, 'REST_API', 'ACCESS_TOKEN', 1, null, ACCESS_TOKEN_EXPIRE_ON, CREATED_ON,LAST_UPDATED_ON, ACCESS_TOKEN_GENERATED_ON,ACCESS_TOKEN_LAST_ALERT_ON,AT_LAST_FAILED_LOGIN_ON, AT_LOGIN_FAILURE_COUNT from BCK_USER WHERE ACCESS_TOKEN_ID is not null;
+-- set certificates
+insert into SMP_CREDENTIAL (CREDENTIAL_NAME, CREDENTIAL_VALUE,FK_USER_ID,CREDENTIAL_TARGET,CREDENTIAL_TYPE,CREDENTIAL_ACTIVE, ACTIVE_FROM, EXPIRE_ON, CREATED_ON,LAST_UPDATED_ON, CHANGED_ON,LAST_ALERT_ON, LAST_FAILED_LOGIN_ON,LOGIN_FAILURE_COUNT)
+    select CERTIFICATE_ID, null, id, 'REST_API', 'CERTIFICATE', 1, VALID_FROM, VALID_TO, CREATED_ON,LAST_UPDATED_ON, CREATED_ON, EXPIRE_LAST_ALERT_ON,null,null from BCK_CERTIFICATE;
+insert into SMP_CERTIFICATE ( ID, CREATED_ON, LAST_UPDATED_ON, CERTIFICATE_ID, CRL_URL, ISSUER,PEM_ENCODED_CERT, SERIALNUMBER, SUBJECT, VALID_FROM, VALID_TO)
+    select CRE.ID, CRT.CREATED_ON, CRT.LAST_UPDATED_ON, CRT.CERTIFICATE_ID, CRT.CRL_URL, CRT.ISSUER, CRT.PEM_ENCODED_CERT, CRT.SERIALNUMBER, CRT.SUBJECT, CRT.VALID_FROM, CRT.VALID_TO  from BCK_CERTIFICATE CRT JOIN SMP_CREDENTIAL CRE ON CRT.CERTIFICATE_ID=CRE.CREDENTIAL_NAME WHERE CRT.ID=CRE.FK_USER_ID AND CRE.CREDENTIAL_TYPE='CERTIFICATE';
+
+-- register default extension
+insert into SMP_EXTENSION ( ID, IDENTIFIER,  IMPLEMENTATION_NAME, NAME, VERSION, DESCRIPTION, CREATED_ON, LAST_UPDATED_ON) values
+    (1, 'edelivery-oasis-smp-extension',  'OasisSMPExtension','Oasis SMP 1.0 and 2.0','1.0', 'Oasis SMP 1.0 and 2.0 extension',  NOW(),  NOW());
+
+insert into SMP_RESOURCE_DEF ( ID, FK_EXTENSION_ID, URL_SEGMENT, IDENTIFIER, DESCRIPTION, MIME_TYPE, NAME, CREATED_ON, LAST_UPDATED_ON) values
+    (1, 1, 'smp-1', 'edelivery-oasis-smp-1.0-servicegroup', 'Oasis SMP 1.0 ServiceGroup', 'text/xml','Oasis SMP 1.0 ServiceGroup', NOW(),  NOW());
+
+insert into SMP_SUBRESOURCE_DEF (ID,FK_RESOURCE_DEF_ID,URL_SEGMENT, IDENTIFIER, DESCRIPTION, MIME_TYPE, NAME, CREATED_ON, LAST_UPDATED_ON) values
+    (1,1, 'services', 'edelivery-oasis-smp-1.0-servicemetadata', 'Oasis SMP 1.0 ServiceMetadata', 'text/xml','Oasis SMP 1.0 ServiceMetadata', NOW(),  NOW());
+
+-- domains groups
+-- the group has the same id as domain
+insert into SMP_DOMAIN ( ID, CREATED_ON, LAST_UPDATED_ON, DOMAIN_CODE, SIGNATURE_ALGORITHM, SIGNATURE_DIGEST_METHOD, SIGNATURE_KEY_ALIAS,SML_CLIENT_KEY_ALIAS, SML_CLIENT_CERT_AUTH, SML_REGISTERED, SML_SMP_ID, SML_SUBDOMAIN, VISIBILITY)
+    select ID,CREATED_ON,LAST_UPDATED_ON,DOMAIN_CODE, 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256', 'http://www.w3.org/2001/04/xmlenc#sha256',
+    SIGNATURE_KEY_ALIAS,SML_CLIENT_KEY_ALIAS,SML_BLUE_COAT_AUTH,SML_REGISTERED,SML_SMP_ID,SML_SUBDOMAIN,'PUBLIC' from BCK_DOMAIN;
+-- each domain has one default group and the id is equal to domain id. If this is changed fix also insert SMP_RESOURCE...
+insert into SMP_GROUP ( ID, FK_DOMAIN_ID, NAME, DESCRIPTION, VISIBILITY, CREATED_ON, LAST_UPDATED_ON)
+    select  ID, ID, CONCAT(DOMAIN_CODE, 'Group'),  CONCAT('Default Group for domain: ', DOMAIN_CODE), 'PUBLIC', NOW(),  NOW() from BCK_DOMAIN;
+
+-- set the ID of connection the same as id (can be done because it is empty database and one documet for the domain) service group 1.0 document type to all domains
+insert into SMP_DOMAIN_RESOURCE_DEF (ID, CREATED_ON, LAST_UPDATED_ON, FK_DOMAIN_ID, FK_RESOURCE_DEF_ID)
+ select ID, NOW(),  NOW(),  ID, 1 from BCK_DOMAIN;
+
+
+-- create service group documents
+insert into SMP_DOCUMENT (CREATED_ON, LAST_UPDATED_ON, CURRENT_VERSION,MIME_TYPE, NAME )
+    select sg.CREATED_ON, sg.LAST_UPDATED_ON, 1, 'text/xml', CONCAT('ServiceGroup1.0-', sg.id, '-', sgd.FK_DOMAIN_ID ) FROM BCK_SERVICE_GROUP sg JOIN BCK_SERVICE_GROUP_DOMAIN sgd on sg.id = sgd.FK_SG_ID;
+-- the FK_DOREDEF_ID is 1  see the SMP_RESOURCE_DEF
+-- the  FK_GROUP_ID is equal to domain id see the: insert into SMP_GROUP ....
+insert into SMP_RESOURCE (CREATED_ON, LAST_UPDATED_ON, IDENTIFIER_SCHEME, IDENTIFIER_VALUE, SML_REGISTERED, VISIBILITY, FK_DOCUMENT_ID, FK_DOREDEF_ID, FK_GROUP_ID)
+    select sg.CREATED_ON, sg.LAST_UPDATED_ON, sg.PARTICIPANT_SCHEME, sg.PARTICIPANT_IDENTIFIER, sgd.SML_REGISTERED,
+    'PUBLIC', (select id from SMP_DOCUMENT where NAME=CONCAT('ServiceGroup1.0-', sg.id, '-', sgd.FK_DOMAIN_ID )),
+     1, sgd.FK_DOMAIN_ID FROM BCK_SERVICE_GROUP sg JOIN BCK_SERVICE_GROUP_DOMAIN sgd on sg.id = sgd.FK_SG_ID;
+
+insert into SMP_DOCUMENT_VERSION ( CREATED_ON, LAST_UPDATED_ON, DOCUMENT_CONTENT, VERSION, FK_DOCUMENT_ID )
+    select  sg.CREATED_ON, sg.LAST_UPDATED_ON,  CONCAT('<ServiceGroup xmlns="http://docs.oasis-open.org/bdxr/ns/SMP/2016/05" xmlns:ns0="http://www.w3.org/2000/09/xmldsig#"><ParticipantIdentifier scheme="', sg.PARTICIPANT_SCHEME,'" >',sg.PARTICIPANT_IDENTIFIER,'</ParticipantIdentifier><ServiceMetadataReferenceCollection />', if(ex.EXTENSION is null,'',ex.EXTENSION), '</ServiceGroup>'), 1,
+    (select id from SMP_DOCUMENT where NAME=CONCAT('ServiceGroup1.0-', sg.id, '-', sgd.FK_DOMAIN_ID ))
+    FROM BCK_SERVICE_GROUP sg JOIN BCK_SERVICE_GROUP_DOMAIN sgd on sg.id = sgd.FK_SG_ID LEFT JOIN BCK_SG_EXTENSION ex on sg.id = ex.id ;
+
+-- ------------------------
+-- create service metadata documents
+insert into SMP_DOCUMENT (CREATED_ON, LAST_UPDATED_ON, CURRENT_VERSION,MIME_TYPE, NAME )
+    select sm.CREATED_ON, sm.LAST_UPDATED_ON, 1, 'text/xml', CONCAT('ServiceMetadata1.0-', sm.id) FROM BCK_SERVICE_METADATA sm;
+
+-- the FK_DOREDEF_ID is 1  see the SMP_RESOURCE_DEF
+-- the  FK_GROUP_ID is equal to domain id see the: insert into SMP_GROUP ....
+insert into SMP_SUBRESOURCE (CREATED_ON, LAST_UPDATED_ON, IDENTIFIER_SCHEME, IDENTIFIER_VALUE, FK_DOCUMENT_ID, FK_RESOURCE_ID, FK_SUREDEF_ID)
+    select sm.CREATED_ON, sm.LAST_UPDATED_ON, sm.DOCUMENT_SCHEME, sm.DOCUMENT_IDENTIFIER,
+    (select id from SMP_DOCUMENT where NAME=CONCAT('ServiceMetadata1.0-', sm.id)), sm.FK_SG_DOM_ID, 1 FROM BCK_SERVICE_METADATA sm;
+
+insert into SMP_DOCUMENT_VERSION ( CREATED_ON, LAST_UPDATED_ON, DOCUMENT_CONTENT, VERSION, FK_DOCUMENT_ID )
+    select  smx.CREATED_ON, smx.LAST_UPDATED_ON, smx.XML_CONTENT, 1,
+    (select id from SMP_DOCUMENT where NAME=CONCAT('ServiceMetadata1.0-', smx.id))
+    FROM BCK_SERVICE_METADATA_XML smx ;
+
+-- finally set also the memberships
+-- the SMP admins are members of all domains/groups and resources
+insert into SMP_DOMAIN_MEMBER ( CREATED_ON, LAST_UPDATED_ON, MEMBERSHIP_ROLE, FK_DOMAIN_ID, FK_USER_ID)
+    select NOW(), NOW(), 'ADMIN', dmn.ID, usr.ID from BCK_USER  usr CROSS JOIN SMP_DOMAIN dmn where usr.ROLE='SMP_ADMIN' ;
+insert into SMP_GROUP_MEMBER ( CREATED_ON, LAST_UPDATED_ON, MEMBERSHIP_ROLE, FK_GROUP_ID, FK_USER_ID)
+    select NOW(), NOW(), 'ADMIN', grp.ID, usr.ID from BCK_USER  usr CROSS JOIN SMP_GROUP grp where usr.ROLE='SMP_ADMIN' ;
+insert into SMP_RESOURCE_MEMBER ( CREATED_ON, LAST_UPDATED_ON, MEMBERSHIP_ROLE, FK_RESOURCE_ID, FK_USER_ID)
+    select NOW(), NOW(), 'ADMIN', rs.ID, usr.ID from BCK_USER  usr CROSS JOIN SMP_RESOURCE rs where usr.ROLE='SMP_ADMIN' ;
+
+-- the SMP Resource memberships
+insert into SMP_RESOURCE_MEMBER ( CREATED_ON, LAST_UPDATED_ON, MEMBERSHIP_ROLE, FK_RESOURCE_ID, FK_USER_ID)
+    select NOW(), NOW(), 'ADMIN', ow.FK_SG_ID, usr.ID from BCK_USER usr JOIN BCK_OWNERSHIP ow ON ow.FK_USER_ID = usr.id  where usr.ROLE='SERVICE_GROUP_ADMIN';
diff --git a/smp-webapp/src/main/smp-setup/database-scripts/migration from 4.2 to 5.0/oracle10g-4.2_to_5.0-step_01.sql b/smp-webapp/src/main/smp-setup/database-scripts/migration from 4.2 to 5.0/oracle10g-4.2_to_5.0-step_01.sql
new file mode 100644
index 000000000..a59e44386
--- /dev/null
+++ b/smp-webapp/src/main/smp-setup/database-scripts/migration from 4.2 to 5.0/oracle10g-4.2_to_5.0-step_01.sql	
@@ -0,0 +1,1096 @@
+-- drop indexes/constraints
+alter table SMP_CERTIFICATE drop constraint UK_3x3rvf6hkim9fg16caurkgg6f;
+alter table SMP_DOMAIN drop constraint UK_djrwqd4luj5i7w4l7fueuaqbj;
+alter table SMP_DOMAIN drop constraint UK_likb3jn0nlxlekaws0xx10uqc;
+drop index SMP_SG_PART_ID_IDX;
+drop index SMP_SG_PART_SCH_IDX;
+alter table SMP_SERVICE_GROUP drop constraint SMP_SG_UNIQ_PARTC_IDX;
+drop index SMP_SMD_DOC_ID_IDX;
+drop index SMP_SMD_DOC_SCH_IDX;
+alter table SMP_SERVICE_METADATA drop constraint SMP_MT_UNIQ_SG_DOC_IDX;
+alter table SMP_USER drop constraint UK_tk9bjsmd2mevgt3b997i6pl27;
+alter table SMP_USER drop constraint UK_rt1f0anklfo05lt0my05fqq6;
+alter table SMP_ALERT_AUD drop constraint FKrw0qnto448ojlirpfmfntd8v2;
+alter table SMP_ALERT_PROPERTY drop constraint FK15r37w3r5ty5f6074ykr2o4i6;
+alter table SMP_ALERT_PROPERTY_AUD drop constraint FKod33qjx87ih1a0skxl2sgddar;
+alter table SMP_CERTIFICATE drop constraint FKayqgpj5ot3o8vrpduul7sstta;
+alter table SMP_CERTIFICATE_AUD drop constraint FKnrwm8en8vv10li8ihwnurwd9e;
+alter table SMP_CONFIGURATION_AUD drop constraint FKd4yhbdlusovfbdti1fjkuxp9m;
+alter table SMP_DOMAIN_AUD drop constraint FK35qm8xmi74kfenugeonijodsg;
+alter table SMP_OWNERSHIP drop constraint FKrnqwq06lbfwciup4rj8nvjpmy;
+alter table SMP_OWNERSHIP drop constraint FKgexq5n6ftsid8ehqljvjh8p4i;
+alter table SMP_OWNERSHIP_AUD drop constraint FK1lqynlbk8ow1ouxetf5wybk3k;
+alter table SMP_SERVICE_GROUP_AUD drop constraint FKj3caimhegwyav1scpwrxoslef;
+alter table SMP_SERVICE_GROUP_DOMAIN drop constraint FKo186xtefda6avl5p1tuqchp3n;
+alter table SMP_SERVICE_GROUP_DOMAIN drop constraint FKgcvhnk2n34d3c6jhni5l3s3x3;
+alter table SMP_SERVICE_GROUP_DOMAIN_AUD drop constraint FK6uc9r0eqw16baooxtmqjkih0j;
+alter table SMP_SERVICE_METADATA drop constraint FKfvcml6b8x7kn80m30h8pxs7jl;
+alter table SMP_SERVICE_METADATA_AUD drop constraint FKbqr9pdnik1qxx2hi0xn4n7f61;
+alter table SMP_SERVICE_METADATA_XML drop constraint FK4b1x06xlavcgbjnuilgksi7nm;
+alter table SMP_SERVICE_METADATA_XML_AUD drop constraint FKevatmlvvwoxfnjxkvmokkencb;
+alter table SMP_SG_EXTENSION drop constraint FKtf0mfonugp2jbkqo2o142chib;
+alter table SMP_SG_EXTENSION_AUD drop constraint FKmdo9v2422adwyebvl34qa3ap6;
+alter table SMP_USER_AUD drop constraint FK2786r5minnkai3d22b191iiiq;
+
+-- backup tables
+ ALTER TABLE SMP_ALERT RENAME TO BCK_ALERT;
+ ALTER TABLE SMP_ALERT_AUD RENAME TO BCK_ALERT_AUD;
+ ALTER TABLE SMP_ALERT_PROPERTY RENAME TO BCK_ALERT_PROPERTY;
+ ALTER TABLE SMP_ALERT_PROPERTY_AUD RENAME TO BCK_ALERT_PROPERTY_AUD;
+ ALTER TABLE SMP_CERTIFICATE RENAME TO BCK_CERTIFICATE;
+ ALTER TABLE SMP_CERTIFICATE_AUD RENAME TO BCK_CERTIFICATE_AUD;
+ ALTER TABLE SMP_CONFIGURATION RENAME TO BCK_CONFIGURATION;
+ ALTER TABLE SMP_CONFIGURATION_AUD RENAME TO BCK_CONFIGURATION_AUD;
+ ALTER TABLE SMP_DOMAIN RENAME TO BCK_DOMAIN;
+ ALTER TABLE SMP_DOMAIN_AUD RENAME TO BCK_DOMAIN_AUD;
+ ALTER TABLE SMP_OWNERSHIP RENAME TO BCK_OWNERSHIP;
+ ALTER TABLE SMP_OWNERSHIP_AUD RENAME TO BCK_OWNERSHIP_AUD;
+ ALTER TABLE SMP_REV_INFO RENAME TO BCK_REV_INFO;
+ ALTER TABLE SMP_SERVICE_GROUP RENAME TO BCK_SERVICE_GROUP;
+ ALTER TABLE SMP_SERVICE_GROUP_AUD RENAME TO BCK_SERVICE_GROUP_AUD;
+ ALTER TABLE SMP_SERVICE_GROUP_DOMAIN RENAME TO BCK_SERVICE_GROUP_DOMAIN;
+ ALTER TABLE SMP_SERVICE_GROUP_DOMAIN_AUD RENAME TO BCK_SERVICE_GROUP_DOMAIN_AUD;
+ ALTER TABLE SMP_SERVICE_METADATA RENAME TO BCK_SERVICE_METADATA;
+ ALTER TABLE SMP_SERVICE_METADATA_AUD RENAME TO BCK_SERVICE_METADATA_AUD;
+ ALTER TABLE SMP_SERVICE_METADATA_XML RENAME TO BCK_SERVICE_METADATA_XML;
+ ALTER TABLE SMP_SERVICE_METADATA_XML_AUD RENAME TO BCK_SERVICE_METADATA_XML_AUD;
+ ALTER TABLE SMP_SG_EXTENSION RENAME TO BCK_SG_EXTENSION;
+ ALTER TABLE SMP_SG_EXTENSION_AUD RENAME TO BCK_SG_EXTENSION_AUD;
+ ALTER TABLE SMP_USER RENAME TO BCK_USER;
+ ALTER TABLE SMP_USER_AUD RENAME TO BCK_USER_AUD;
+
+
+-- create new sequences
+create sequence SMP_CREDENTIAL_SEQ start with 1 increment by  1;
+create sequence SMP_DOCUMENT_SEQ start with 1 increment by  1;
+create sequence SMP_DOCUMENT_VERSION_SEQ start with 1 increment by  1;
+create sequence SMP_DOMAIN_MEMBER_SEQ start with 1 increment by  1;
+create sequence SMP_GROUP_MEMBER_SEQ start with 1 increment by  1;
+create sequence SMP_GROUP_SEQ start with 1 increment by  1;
+create sequence SMP_RESOURCE_MEMBER_SEQ start with 1 increment by  1;
+-- set manual inserts in v2 script -start with 10
+create sequence SMP_EXTENSION_SEQ start with 10 increment by  1;
+create sequence SMP_RESOURCE_DEF_SEQ start with 10 increment by  1;
+create sequence SMP_SUBRESOURCE_DEF_SEQ start with 10 increment by  1;
+-- set SMP_DOMAIN_RESOURCE_DEF_SEQ to start from SMP_DOMAIN_SEQ!
+declare
+    l_new_seq INTEGER;
+begin
+   select SMP_DOMAIN_SEQ.nextval into l_new_seq from   dual;
+   execute immediate 'create sequence SMP_DOMAIN_RESOURCE_DEF_SEQ start with ' || l_new_seq || ' increment by 1';
+end;
+/
+
+--SMP_SERVICE_GROUP_DOMAIN_SEQ
+rename SMP_SERVICE_GROUP_SEQ TO SMP_RESOURCE_SEQ;
+rename SMP_SERVICE_METADATA_SEQ TO SMP_SUBRESOURCE_SEQ;
+
+
+create table SMP_ALERT (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    ALERT_LEVEL varchar2(255 char),
+    ALERT_STATUS varchar2(255 char),
+    ALERT_STATUS_DESC varchar2(1024 char),
+    ALERT_TYPE varchar2(255 char),
+    MAIL_SUBJECT varchar2(1024 char),
+    MAIL_TO varchar2(1024 char),
+    PROCESSED_TIME timestamp,
+    REPORTING_TIME timestamp,
+    FOR_USERNAME varchar2(256 char),
+    primary key (ID)
+);
+
+comment on table SMP_ALERT is
+    'SMP alerts';
+
+comment on column SMP_ALERT.ID is
+    'Unique alert id';
+
+create table SMP_ALERT_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    ALERT_LEVEL varchar2(255 char),
+    ALERT_STATUS varchar2(255 char),
+    ALERT_STATUS_DESC varchar2(1024 char),
+    ALERT_TYPE varchar2(255 char),
+    MAIL_SUBJECT varchar2(1024 char),
+    MAIL_TO varchar2(1024 char),
+    PROCESSED_TIME timestamp,
+    REPORTING_TIME timestamp,
+    FOR_USERNAME varchar2(256 char),
+    primary key (ID, REV)
+);
+
+create table SMP_ALERT_PROPERTY (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    PROPERTY_NAME varchar2(255 char),
+    PROPERTY_VALUE varchar2(1024 char),
+    FK_ALERT_ID number(19,0),
+    primary key (ID)
+);
+
+comment on column SMP_ALERT_PROPERTY.ID is
+    'Unique alert property id';
+
+create table SMP_ALERT_PROPERTY_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    PROPERTY_NAME varchar2(255 char),
+    PROPERTY_VALUE varchar2(1024 char),
+    FK_ALERT_ID number(19,0),
+    primary key (ID, REV)
+);
+
+create table SMP_CERTIFICATE (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    CERTIFICATE_ID varchar2(1024 char),
+    CRL_URL varchar2(4000 char),
+    ISSUER varchar2(1024 char),
+    PEM_ENCODED_CERT clob,
+    SERIALNUMBER varchar2(128 char),
+    SUBJECT varchar2(1024 char),
+    VALID_FROM timestamp,
+    VALID_TO timestamp,
+    primary key (ID)
+);
+
+comment on table SMP_CERTIFICATE is
+    'SMP user certificates';
+
+comment on column SMP_CERTIFICATE.ID is
+    'Shared primary key with master table SMP_CREDENTIAL';
+
+comment on column SMP_CERTIFICATE.CERTIFICATE_ID is
+    'Formatted Certificate id using tags: cn, o, c:serialNumber';
+
+comment on column SMP_CERTIFICATE.CRL_URL is
+    'URL to the certificate revocation list (CRL)';
+
+comment on column SMP_CERTIFICATE.ISSUER is
+    'Certificate issuer (canonical form)';
+
+comment on column SMP_CERTIFICATE.PEM_ENCODED_CERT is
+    'PEM encoded  certificate';
+
+comment on column SMP_CERTIFICATE.SERIALNUMBER is
+    'Certificate serial number';
+
+comment on column SMP_CERTIFICATE.SUBJECT is
+    'Certificate subject (canonical form)';
+
+comment on column SMP_CERTIFICATE.VALID_FROM is
+    'Certificate valid from date.';
+
+comment on column SMP_CERTIFICATE.VALID_TO is
+    'Certificate valid to date.';
+
+create table SMP_CERTIFICATE_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    CERTIFICATE_ID varchar2(1024 char),
+    CRL_URL varchar2(4000 char),
+    ISSUER varchar2(1024 char),
+    PEM_ENCODED_CERT clob,
+    SERIALNUMBER varchar2(128 char),
+    SUBJECT varchar2(1024 char),
+    VALID_FROM timestamp,
+    VALID_TO timestamp,
+    primary key (ID, REV)
+);
+
+create table SMP_CONFIGURATION (
+   PROPERTY_NAME varchar2(512 char) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    DESCRIPTION varchar2(4000 char),
+    PROPERTY_VALUE varchar2(4000 char),
+    primary key (PROPERTY_NAME)
+);
+
+comment on table SMP_CONFIGURATION is
+    'SMP user certificates';
+
+comment on column SMP_CONFIGURATION.PROPERTY_NAME is
+    'Property name/key';
+
+comment on column SMP_CONFIGURATION.DESCRIPTION is
+    'Property description';
+
+comment on column SMP_CONFIGURATION.PROPERTY_VALUE is
+    'Property value';
+
+create table SMP_CONFIGURATION_AUD (
+   PROPERTY_NAME varchar2(512 char) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    DESCRIPTION varchar2(4000 char),
+    PROPERTY_VALUE varchar2(4000 char),
+    primary key (PROPERTY_NAME, REV)
+);
+
+create table SMP_CREDENTIAL (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    CREDENTIAL_ACTIVE number(1,0) not null,
+    ACTIVE_FROM timestamp,
+    CHANGED_ON timestamp,
+    CREDENTIAL_TARGET varchar2(255 char) not null,
+    CREDENTIAL_TYPE varchar2(255 char) not null,
+    CREDENTIAL_DESC varchar2(256 char),
+    LAST_ALERT_ON timestamp,
+    EXPIRE_ON timestamp,
+    LAST_FAILED_LOGIN_ON timestamp,
+    CREDENTIAL_NAME varchar2(256 char) not null,
+    LOGIN_FAILURE_COUNT number(10,0),
+    CREDENTIAL_VALUE varchar2(256 char),
+    FK_USER_ID number(19,0) not null,
+    primary key (ID)
+);
+
+comment on table SMP_CREDENTIAL is
+    'Credentials for the users';
+
+comment on column SMP_CREDENTIAL.ID is
+    'Unique id';
+
+comment on column SMP_CREDENTIAL.CREDENTIAL_ACTIVE is
+    'Is credential active';
+
+comment on column SMP_CREDENTIAL.ACTIVE_FROM is
+    'Date when credential starts to be active';
+
+comment on column SMP_CREDENTIAL.CHANGED_ON is
+    'Last date when credential was changed';
+
+comment on column SMP_CREDENTIAL.CREDENTIAL_TARGET is
+    'Credential target UI, API';
+
+comment on column SMP_CREDENTIAL.CREDENTIAL_TYPE is
+    'Credential type:  USERNAME, ACCESS_TOKEN, CERTIFICATE, CAS';
+
+comment on column SMP_CREDENTIAL.CREDENTIAL_DESC is
+    'Credential description';
+
+comment on column SMP_CREDENTIAL.LAST_ALERT_ON is
+    'Generated last password expire alert';
+
+comment on column SMP_CREDENTIAL.EXPIRE_ON is
+    'Date when password will expire';
+
+comment on column SMP_CREDENTIAL.LAST_FAILED_LOGIN_ON is
+    'Last failed login attempt';
+
+comment on column SMP_CREDENTIAL.CREDENTIAL_NAME is
+    'Unique username identifier. The Username must not be null';
+
+comment on column SMP_CREDENTIAL.LOGIN_FAILURE_COUNT is
+    'Sequential login failure count';
+
+comment on column SMP_CREDENTIAL.CREDENTIAL_VALUE is
+    'Credential value - it can be encrypted value';
+
+create table SMP_CREDENTIAL_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    CREDENTIAL_ACTIVE number(1,0),
+    ACTIVE_FROM timestamp,
+    CHANGED_ON timestamp,
+    CREDENTIAL_TARGET varchar2(255 char),
+    CREDENTIAL_TYPE varchar2(255 char),
+    CREDENTIAL_DESC varchar2(256 char),
+    LAST_ALERT_ON timestamp,
+    EXPIRE_ON timestamp,
+    LAST_FAILED_LOGIN_ON timestamp,
+    CREDENTIAL_NAME varchar2(256 char),
+    LOGIN_FAILURE_COUNT number(10,0),
+    CREDENTIAL_VALUE varchar2(256 char),
+    FK_USER_ID number(19,0),
+    primary key (ID, REV)
+);
+
+create table SMP_DOCUMENT (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    CURRENT_VERSION number(10,0) not null,
+    MIME_TYPE varchar2(128 char),
+    NAME varchar2(255 char),
+    primary key (ID)
+);
+
+comment on table SMP_DOCUMENT is
+    'SMP document entity for resources and subresources';
+
+comment on column SMP_DOCUMENT.ID is
+    'Unique document id';
+
+create table SMP_DOCUMENT_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    CURRENT_VERSION number(10,0),
+    MIME_TYPE varchar2(128 char),
+    NAME varchar2(255 char),
+    primary key (ID, REV)
+);
+
+create table SMP_DOCUMENT_VERSION (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    DOCUMENT_CONTENT blob,
+    VERSION number(10,0) not null,
+    FK_DOCUMENT_ID number(19,0),
+    primary key (ID)
+);
+
+comment on table SMP_DOCUMENT_VERSION is
+    'Document content for the document version.';
+
+comment on column SMP_DOCUMENT_VERSION.ID is
+    'Unique version document id';
+
+comment on column SMP_DOCUMENT_VERSION.DOCUMENT_CONTENT is
+    'Document content';
+
+create table SMP_DOCUMENT_VERSION_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    DOCUMENT_CONTENT blob,
+    VERSION number(10,0),
+    FK_DOCUMENT_ID number(19,0),
+    primary key (ID, REV)
+);
+
+create table SMP_DOMAIN (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    DEFAULT_RESOURCE_IDENTIFIER varchar2(255 char),
+    DOMAIN_CODE varchar2(256 char) not null,
+    SIGNATURE_ALGORITHM varchar2(256 char),
+    SIGNATURE_DIGEST_METHOD varchar2(256 char),
+    SIGNATURE_KEY_ALIAS varchar2(256 char),
+    SML_CLIENT_CERT_AUTH number(1,0) not null,
+    SML_CLIENT_KEY_ALIAS varchar2(256 char),
+    SML_REGISTERED number(1,0) not null,
+    SML_SMP_ID varchar2(256 char),
+    SML_SUBDOMAIN varchar2(256 char),
+    VISIBILITY varchar2(64 char),
+    primary key (ID)
+);
+
+comment on table SMP_DOMAIN is
+    'SMP can handle multiple domains. This table contains domain specific data';
+
+comment on column SMP_DOMAIN.ID is
+    'Unique domain id';
+
+comment on column SMP_DOMAIN.DEFAULT_RESOURCE_IDENTIFIER is
+    'Default resourceType code';
+
+comment on column SMP_DOMAIN.DOMAIN_CODE is
+    'Domain code used as http parameter in rest webservices';
+
+comment on column SMP_DOMAIN.SIGNATURE_ALGORITHM is
+    'Set signature algorithm. Ex.: http://www.w3.org/2001/04/xmldsig-more#rsa-sha256';
+
+comment on column SMP_DOMAIN.SIGNATURE_DIGEST_METHOD is
+    'Set signature hash method. Ex.: http://www.w3.org/2001/04/xmlenc#sha256';
+
+comment on column SMP_DOMAIN.SIGNATURE_KEY_ALIAS is
+    'Signature key alias used for SML integration';
+
+comment on column SMP_DOMAIN.SML_CLIENT_CERT_AUTH is
+    'Flag for SML authentication type - use ClientCert header or  HTTPS ClientCertificate (key)';
+
+comment on column SMP_DOMAIN.SML_CLIENT_KEY_ALIAS is
+    'Client key alias used for SML integration';
+
+comment on column SMP_DOMAIN.SML_REGISTERED is
+    'Flag for: Is domain registered in SML';
+
+comment on column SMP_DOMAIN.SML_SMP_ID is
+    'SMP ID used for SML integration';
+
+comment on column SMP_DOMAIN.SML_SUBDOMAIN is
+    'SML subdomain';
+
+comment on column SMP_DOMAIN.VISIBILITY is
+    'The visibility of the domain: PUBLIC, INTERNAL';
+
+create table SMP_DOMAIN_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    DEFAULT_RESOURCE_IDENTIFIER varchar2(255 char),
+    DOMAIN_CODE varchar2(256 char),
+    SIGNATURE_ALGORITHM varchar2(256 char),
+    SIGNATURE_DIGEST_METHOD varchar2(256 char),
+    SIGNATURE_KEY_ALIAS varchar2(256 char),
+    SML_CLIENT_CERT_AUTH number(1,0),
+    SML_CLIENT_KEY_ALIAS varchar2(256 char),
+    SML_REGISTERED number(1,0),
+    SML_SMP_ID varchar2(256 char),
+    SML_SUBDOMAIN varchar2(256 char),
+    VISIBILITY varchar2(64 char),
+    primary key (ID, REV)
+);
+
+create table SMP_DOMAIN_MEMBER (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    MEMBERSHIP_ROLE varchar2(64 char),
+    FK_DOMAIN_ID number(19,0),
+    FK_USER_ID number(19,0),
+    primary key (ID)
+);
+
+create table SMP_DOMAIN_MEMBER_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    MEMBERSHIP_ROLE varchar2(64 char),
+    FK_DOMAIN_ID number(19,0),
+    FK_USER_ID number(19,0),
+    primary key (ID, REV)
+);
+
+create table SMP_DOMAIN_RESOURCE_DEF (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    FK_DOMAIN_ID number(19,0),
+    FK_RESOURCE_DEF_ID number(19,0),
+    primary key (ID)
+);
+
+create table SMP_DOMAIN_RESOURCE_DEF_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    FK_DOMAIN_ID number(19,0),
+    FK_RESOURCE_DEF_ID number(19,0),
+    primary key (ID, REV)
+);
+
+create table SMP_EXTENSION (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    DESCRIPTION varchar2(512 char),
+    IDENTIFIER varchar2(128 char),
+    IMPLEMENTATION_NAME varchar2(512 char),
+    NAME varchar2(128 char),
+    VERSION varchar2(128 char),
+    primary key (ID)
+);
+
+comment on table SMP_EXTENSION is
+    'SMP extension definitions';
+
+comment on column SMP_EXTENSION.ID is
+    'Unique extension id';
+
+create table SMP_EXTENSION_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    DESCRIPTION varchar2(512 char),
+    IDENTIFIER varchar2(128 char),
+    IMPLEMENTATION_NAME varchar2(512 char),
+    NAME varchar2(128 char),
+    VERSION varchar2(128 char),
+    primary key (ID, REV)
+);
+
+create table SMP_GROUP (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    DESCRIPTION varchar2(4000 char),
+    NAME varchar2(512 char) not null,
+    VISIBILITY varchar2(128 char),
+    FK_DOMAIN_ID number(19,0) not null,
+    primary key (ID)
+);
+
+comment on table SMP_GROUP is
+    'The group spans the resources belonging to the domain group.';
+
+comment on column SMP_GROUP.ID is
+    'Unique domain group id';
+
+comment on column SMP_GROUP.DESCRIPTION is
+    'Domain Group description';
+
+comment on column SMP_GROUP.NAME is
+    'Domain Group name';
+
+create table SMP_GROUP_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    DESCRIPTION varchar2(4000 char),
+    NAME varchar2(512 char),
+    VISIBILITY varchar2(128 char),
+    FK_DOMAIN_ID number(19,0),
+    primary key (ID, REV)
+);
+
+create table SMP_GROUP_MEMBER (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    MEMBERSHIP_ROLE varchar2(64 char),
+    FK_GROUP_ID number(19,0),
+    FK_USER_ID number(19,0),
+    primary key (ID)
+);
+
+create table SMP_GROUP_MEMBER_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    MEMBERSHIP_ROLE varchar2(64 char),
+    FK_GROUP_ID number(19,0),
+    FK_USER_ID number(19,0),
+    primary key (ID, REV)
+);
+
+create table SMP_RESOURCE (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    IDENTIFIER_SCHEME varchar2(256 char),
+    IDENTIFIER_VALUE varchar2(256 char) not null,
+    SML_REGISTERED number(1,0) not null,
+    VISIBILITY varchar2(128 char),
+    FK_DOCUMENT_ID number(19,0) not null,
+    FK_DOREDEF_ID number(19,0) not null,
+    FK_GROUP_ID number(19,0),
+    primary key (ID)
+);
+
+comment on table SMP_RESOURCE is
+    'SMP resource Identifier and scheme';
+
+comment on column SMP_RESOURCE.ID is
+    'Unique ServiceGroup id';
+
+create table SMP_RESOURCE_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    IDENTIFIER_SCHEME varchar2(256 char),
+    IDENTIFIER_VALUE varchar2(256 char),
+    SML_REGISTERED number(1,0),
+    VISIBILITY varchar2(128 char),
+    FK_DOCUMENT_ID number(19,0),
+    FK_DOREDEF_ID number(19,0),
+    FK_GROUP_ID number(19,0),
+    primary key (ID, REV)
+);
+
+create table SMP_RESOURCE_DEF (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    DESCRIPTION varchar2(512 char),
+    HANDLER_IMPL_NAME varchar2(512 char),
+    IDENTIFIER varchar2(128 char),
+    MIME_TYPE varchar2(128 char),
+    NAME varchar2(128 char),
+    URL_SEGMENT varchar2(128 char),
+    FK_EXTENSION_ID number(19,0),
+    primary key (ID)
+);
+
+comment on table SMP_RESOURCE_DEF is
+    'SMP extension resource definitions';
+
+comment on column SMP_RESOURCE_DEF.ID is
+    'Unique id';
+
+comment on column SMP_RESOURCE_DEF.URL_SEGMENT is
+    'resources are published under url_segment.';
+
+create table SMP_RESOURCE_DEF_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    DESCRIPTION varchar2(512 char),
+    HANDLER_IMPL_NAME varchar2(512 char),
+    IDENTIFIER varchar2(128 char),
+    MIME_TYPE varchar2(128 char),
+    NAME varchar2(128 char),
+    URL_SEGMENT varchar2(128 char),
+    FK_EXTENSION_ID number(19,0),
+    primary key (ID, REV)
+);
+
+create table SMP_RESOURCE_MEMBER (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    MEMBERSHIP_ROLE varchar2(64 char),
+    FK_RESOURCE_ID number(19,0),
+    FK_USER_ID number(19,0),
+    primary key (ID)
+);
+
+create table SMP_RESOURCE_MEMBER_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    MEMBERSHIP_ROLE varchar2(64 char),
+    FK_RESOURCE_ID number(19,0),
+    FK_USER_ID number(19,0),
+    primary key (ID, REV)
+);
+
+create table SMP_REV_INFO (
+   id number(19,0) not null,
+    REVISION_DATE timestamp,
+    timestamp number(19,0) not null,
+    USERNAME varchar2(255 char),
+    primary key (id)
+);
+
+create table SMP_SUBRESOURCE (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    IDENTIFIER_SCHEME varchar2(500 char),
+    IDENTIFIER_VALUE varchar2(500 char) not null,
+    FK_DOCUMENT_ID number(19,0),
+    FK_RESOURCE_ID number(19,0) not null,
+    FK_SUREDEF_ID number(19,0) not null,
+    primary key (ID)
+);
+
+comment on table SMP_SUBRESOURCE is
+    'Service metadata';
+
+comment on column SMP_SUBRESOURCE.ID is
+    'Shared primary key with master table SMP_SUBRESOURCE';
+
+create table SMP_SUBRESOURCE_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    IDENTIFIER_SCHEME varchar2(500 char),
+    IDENTIFIER_VALUE varchar2(500 char),
+    FK_DOCUMENT_ID number(19,0),
+    FK_RESOURCE_ID number(19,0),
+    FK_SUREDEF_ID number(19,0),
+    primary key (ID, REV)
+);
+
+create table SMP_SUBRESOURCE_DEF (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    DESCRIPTION varchar2(128 char),
+    HANDLER_IMPL_NAME varchar2(512 char),
+    IDENTIFIER varchar2(128 char),
+    MIME_TYPE varchar2(128 char),
+    NAME varchar2(128 char),
+    URL_SEGMENT varchar2(64 char),
+    FK_RESOURCE_DEF_ID number(19,0),
+    primary key (ID)
+);
+
+comment on table SMP_SUBRESOURCE_DEF is
+    'SMP extension subresource definitions';
+
+comment on column SMP_SUBRESOURCE_DEF.ID is
+    'Unique id';
+
+comment on column SMP_SUBRESOURCE_DEF.URL_SEGMENT is
+    'Subresources are published under url_segment. It must be unique for resource type';
+
+create table SMP_SUBRESOURCE_DEF_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    DESCRIPTION varchar2(128 char),
+    HANDLER_IMPL_NAME varchar2(512 char),
+    IDENTIFIER varchar2(128 char),
+    MIME_TYPE varchar2(128 char),
+    NAME varchar2(128 char),
+    URL_SEGMENT varchar2(64 char),
+    FK_RESOURCE_DEF_ID number(19,0),
+    primary key (ID, REV)
+);
+
+create table SMP_USER (
+   ID number(19,0) not null,
+    CREATED_ON timestamp not null,
+    LAST_UPDATED_ON timestamp not null,
+    ACTIVE number(1,0) not null,
+    APPLICATION_ROLE varchar2(256 char),
+    EMAIL varchar2(128 char),
+    FULL_NAME varchar2(128 char),
+    SMP_LOCALE varchar2(64 char),
+    SMP_THEME varchar2(64 char),
+    USERNAME varchar2(256 char) not null,
+    primary key (ID)
+);
+
+comment on table SMP_USER is
+    'SMP can handle multiple domains. This table contains domain specific data';
+
+comment on column SMP_USER.ID is
+    'Unique user id';
+
+comment on column SMP_USER.ACTIVE is
+    'Is user active';
+
+comment on column SMP_USER.APPLICATION_ROLE is
+    'User application role as USER, SYSTEM_ADMIN';
+
+comment on column SMP_USER.EMAIL is
+    'User email';
+
+comment on column SMP_USER.FULL_NAME is
+    'User full name (name and lastname)';
+
+comment on column SMP_USER.SMP_LOCALE is
+    'DomiSMP settings: locale for the user';
+
+comment on column SMP_USER.SMP_THEME is
+    'DomiSMP settings: theme for the user';
+
+comment on column SMP_USER.USERNAME is
+    'Unique username identifier. The Username must not be null';
+
+create table SMP_USER_AUD (
+   ID number(19,0) not null,
+    REV number(19,0) not null,
+    REVTYPE number(3,0),
+    CREATED_ON timestamp,
+    LAST_UPDATED_ON timestamp,
+    ACTIVE number(1,0),
+    APPLICATION_ROLE varchar2(256 char),
+    EMAIL varchar2(128 char),
+    FULL_NAME varchar2(128 char),
+    SMP_LOCALE varchar2(64 char),
+    SMP_THEME varchar2(64 char),
+    USERNAME varchar2(256 char),
+    primary key (ID, REV)
+);
+
+alter table SMP_CERTIFICATE
+   add constraint UK_3x3rvf6hkim9fg16caurkgg6f unique (CERTIFICATE_ID);
+
+alter table SMP_CREDENTIAL
+   add constraint SMP_CRD_USER_NAME_TYPE_IDX unique (CREDENTIAL_NAME, CREDENTIAL_TYPE, CREDENTIAL_TARGET);
+create index SMP_DOCVER_DOCUMENT_IDX on SMP_DOCUMENT_VERSION (FK_DOCUMENT_ID);
+
+alter table SMP_DOCUMENT_VERSION
+   add constraint SMP_DOCVER_UNIQ_VERSION_IDX unique (FK_DOCUMENT_ID, VERSION);
+
+alter table SMP_DOMAIN
+   add constraint UK_djrwqd4luj5i7w4l7fueuaqbj unique (DOMAIN_CODE);
+
+alter table SMP_DOMAIN
+   add constraint UK_likb3jn0nlxlekaws0xx10uqc unique (SML_SUBDOMAIN);
+
+alter table SMP_DOMAIN_MEMBER
+   add constraint SMP_DOM_MEM_IDX unique (FK_DOMAIN_ID, FK_USER_ID);
+
+alter table SMP_DOMAIN_RESOURCE_DEF
+   add constraint SMP_DOREDEF_UNIQ_DOM_RD_IDX unique (FK_RESOURCE_DEF_ID, FK_DOMAIN_ID);
+
+alter table SMP_EXTENSION
+   add constraint SMP_EXT_UNIQ_NAME_IDX unique (IMPLEMENTATION_NAME);
+
+alter table SMP_EXTENSION
+   add constraint UK_p4vfhgs7fvuo6uebjsuqxrglg unique (IDENTIFIER);
+
+alter table SMP_GROUP
+   add constraint SMP_GRP_UNIQ_DOM_IDX unique (NAME, FK_DOMAIN_ID);
+
+alter table SMP_GROUP_MEMBER
+   add constraint SMP_GRP_MEM_IDX unique (FK_GROUP_ID, FK_USER_ID);
+create index SMP_RS_ID_IDX on SMP_RESOURCE (IDENTIFIER_VALUE);
+create index SMP_RS_SCH_IDX on SMP_RESOURCE (IDENTIFIER_SCHEME);
+
+alter table SMP_RESOURCE
+   add constraint SMP_RS_UNIQ_IDENT_DOREDEF_IDX unique (IDENTIFIER_SCHEME, IDENTIFIER_VALUE, FK_DOREDEF_ID);
+
+alter table SMP_RESOURCE_DEF
+   add constraint SMP_RESDEF_UNIQ_EXTID_CODE_IDX unique (FK_EXTENSION_ID, IDENTIFIER);
+
+alter table SMP_RESOURCE_DEF
+   add constraint UK_k7l5fili2mmhgslv77afg4myo unique (IDENTIFIER);
+
+alter table SMP_RESOURCE_DEF
+   add constraint UK_jjbctkhd4h0u9whb1i9wbxwoe unique (URL_SEGMENT);
+
+alter table SMP_RESOURCE_MEMBER
+   add constraint SMP_RES_MEM_IDX unique (FK_RESOURCE_ID, FK_USER_ID);
+create index SMP_SMD_DOC_ID_IDX on SMP_SUBRESOURCE (IDENTIFIER_VALUE);
+create index SMP_SMD_DOC_SCH_IDX on SMP_SUBRESOURCE (IDENTIFIER_SCHEME);
+
+alter table SMP_SUBRESOURCE
+   add constraint SMP_SRS_UNIQ_ID_RES_SRT_IDX unique (FK_RESOURCE_ID, IDENTIFIER_VALUE, IDENTIFIER_SCHEME);
+
+alter table SMP_SUBRESOURCE_DEF
+   add constraint SMP_RD_UNIQ_RDID_UCTX_IDX unique (FK_RESOURCE_DEF_ID, URL_SEGMENT);
+
+alter table SMP_SUBRESOURCE_DEF
+   add constraint UK_pmdcnfwm5in2q9ky0b6dlgqvi unique (IDENTIFIER);
+
+alter table SMP_USER
+   add constraint UK_rt1f0anklfo05lt0my05fqq6 unique (USERNAME);
+
+alter table SMP_ALERT_AUD
+   add constraint FKrw0qnto448ojlirpfmfntd8v2
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_ALERT_PROPERTY
+   add constraint FK15r37w3r5ty5f6074ykr2o4i6
+   foreign key (FK_ALERT_ID)
+   references SMP_ALERT;
+
+alter table SMP_ALERT_PROPERTY_AUD
+   add constraint FKod33qjx87ih1a0skxl2sgddar
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_CERTIFICATE
+   add constraint FK25b9apuupvmjp18wnn2b2gfg8
+   foreign key (ID)
+   references SMP_CREDENTIAL;
+
+alter table SMP_CERTIFICATE_AUD
+   add constraint FKnrwm8en8vv10li8ihwnurwd9e
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_CONFIGURATION_AUD
+   add constraint FKd4yhbdlusovfbdti1fjkuxp9m
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_CREDENTIAL
+   add constraint FK89it2lyqvi2bl9bettx66n8n1
+   foreign key (FK_USER_ID)
+   references SMP_USER;
+
+alter table SMP_CREDENTIAL_AUD
+   add constraint FKqjh6vxvb5tg0tvbkvi3k3xhe6
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_DOCUMENT_AUD
+   add constraint FKh9epnme26i271eixtvrpqejvi
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_DOCUMENT_VERSION
+   add constraint FKalsuoqx4csyp9mygvng911do
+   foreign key (FK_DOCUMENT_ID)
+   references SMP_DOCUMENT;
+
+alter table SMP_DOCUMENT_VERSION_AUD
+   add constraint FK4glqiu73939kpyyb6bhw822k3
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_DOMAIN_AUD
+   add constraint FK35qm8xmi74kfenugeonijodsg
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_DOMAIN_MEMBER
+   add constraint FK1tdwy9oiyrk6tl4mk0fakhkf5
+   foreign key (FK_DOMAIN_ID)
+   references SMP_DOMAIN;
+
+alter table SMP_DOMAIN_MEMBER
+   add constraint FKino2nvj74wc755nyn5mo260qi
+   foreign key (FK_USER_ID)
+   references SMP_USER;
+
+alter table SMP_DOMAIN_MEMBER_AUD
+   add constraint FKijiv1avufqo9iu5u0cj4v3pv7
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_DOMAIN_RESOURCE_DEF
+   add constraint FK563xw5tjw4rlr32va9g17cdsq
+   foreign key (FK_DOMAIN_ID)
+   references SMP_DOMAIN;
+
+alter table SMP_DOMAIN_RESOURCE_DEF
+   add constraint FKtppp16v40ll2ch3ly8xusb8hi
+   foreign key (FK_RESOURCE_DEF_ID)
+   references SMP_RESOURCE_DEF;
+
+alter table SMP_DOMAIN_RESOURCE_DEF_AUD
+   add constraint FKpujj9vb097i5w4loa3dxww2nj
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_EXTENSION_AUD
+   add constraint FKke7f9wbwvp1bmnlqh9hrfm0r
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_GROUP
+   add constraint FKjeomxyxjueaiyt7f0he0ls7vm
+   foreign key (FK_DOMAIN_ID)
+   references SMP_DOMAIN;
+
+alter table SMP_GROUP_AUD
+   add constraint FKeik3quor2dxho7bmyoxc2ug9o
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_GROUP_MEMBER
+   add constraint FK3y21chrphgx1dytux0p19btxe
+   foreign key (FK_GROUP_ID)
+   references SMP_GROUP;
+
+alter table SMP_GROUP_MEMBER
+   add constraint FK8ue5gj1rx6gyiqp19dscp85ut
+   foreign key (FK_USER_ID)
+   references SMP_USER;
+
+alter table SMP_GROUP_MEMBER_AUD
+   add constraint FK5pmorcyhwkaysh0a8xm99x6a8
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_RESOURCE
+   add constraint FKkc5a6okrvq7dv87itfp7i1vmv
+   foreign key (FK_DOCUMENT_ID)
+   references SMP_DOCUMENT;
+
+alter table SMP_RESOURCE
+   add constraint FK24mw8fiua39nh8rnobhgmujri
+   foreign key (FK_DOREDEF_ID)
+   references SMP_DOMAIN_RESOURCE_DEF;
+
+alter table SMP_RESOURCE
+   add constraint FKft55kasui36i77inf0wh8utv5
+   foreign key (FK_GROUP_ID)
+   references SMP_GROUP;
+
+alter table SMP_RESOURCE_AUD
+   add constraint FKlbbfltxw6qmph5w3i8c9qf6kb
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_RESOURCE_DEF
+   add constraint FKruu7v6uig9h333ihv34haw3ob
+   foreign key (FK_EXTENSION_ID)
+   references SMP_EXTENSION;
+
+alter table SMP_RESOURCE_DEF_AUD
+   add constraint FKapswkgbdm9s4wwhx2cjduoniw
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_RESOURCE_MEMBER
+   add constraint FKrci5jlgnckwo1mhq2rvmfaptw
+   foreign key (FK_RESOURCE_ID)
+   references SMP_RESOURCE;
+
+alter table SMP_RESOURCE_MEMBER
+   add constraint FKs6jx68jxlx4xfdtxy20f3s6lu
+   foreign key (FK_USER_ID)
+   references SMP_USER;
+
+alter table SMP_RESOURCE_MEMBER_AUD
+   add constraint FKknykp2wcby9fxk234yaaix1pe
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_SUBRESOURCE
+   add constraint FK7y1ydnq350mbs3c8yrq2fhnsk
+   foreign key (FK_DOCUMENT_ID)
+   references SMP_DOCUMENT;
+
+alter table SMP_SUBRESOURCE
+   add constraint FK7clbsapruvhkcqgekfxs8prex
+   foreign key (FK_RESOURCE_ID)
+   references SMP_RESOURCE;
+
+alter table SMP_SUBRESOURCE
+   add constraint FKq3wmyy4ieoenuu1s55237qu9k
+   foreign key (FK_SUREDEF_ID)
+   references SMP_SUBRESOURCE_DEF;
+
+alter table SMP_SUBRESOURCE_AUD
+   add constraint FKffihyo233ldee8nejbkyclrov
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_SUBRESOURCE_DEF
+   add constraint FKbjqilcym6p3pptva2s4d1gw8o
+   foreign key (FK_RESOURCE_DEF_ID)
+   references SMP_RESOURCE_DEF;
+
+alter table SMP_SUBRESOURCE_DEF_AUD
+   add constraint FK1dd2l0ujtncg9u7hl3c4rte63
+   foreign key (REV)
+   references SMP_REV_INFO;
+
+alter table SMP_USER_AUD
+   add constraint FK2786r5minnkai3d22b191iiiq
+   foreign key (REV)
+   references SMP_REV_INFO;
diff --git a/smp-webapp/src/main/smp-setup/database-scripts/migration from 4.2 to 5.0/oracle10g-4.2_to_5.0-step_02.sql b/smp-webapp/src/main/smp-setup/database-scripts/migration from 4.2 to 5.0/oracle10g-4.2_to_5.0-step_02.sql
new file mode 100644
index 000000000..04d84752c
--- /dev/null
+++ b/smp-webapp/src/main/smp-setup/database-scripts/migration from 4.2 to 5.0/oracle10g-4.2_to_5.0-step_02.sql	
@@ -0,0 +1,90 @@
+-- copy data from backup
+insert into SMP_ALERT (ID,CREATED_ON,LAST_UPDATED_ON,ALERT_LEVEL,ALERT_STATUS,ALERT_STATUS_DESC,ALERT_TYPE,MAIL_SUBJECT,MAIL_TO,PROCESSED_TIME,REPORTING_TIME,FOR_USERNAME )
+    select ID,CREATED_ON,LAST_UPDATED_ON,ALERT_LEVEL,ALERT_STATUS,ALERT_STATUS_DESC,ALERT_TYPE,MAIL_SUBJECT,MAIL_TO,PROCESSED_TIME,REPORTING_TIME,FOR_USERNAME from BCK_ALERT;
+insert into SMP_ALERT_PROPERTY (ID,CREATED_ON,LAST_UPDATED_ON,PROPERTY_NAME,PROPERTY_VALUE,FK_ALERT_ID)
+    select ID,CREATED_ON,LAST_UPDATED_ON,PROPERTY,VALUE,FK_ALERT_ID from BCK_ALERT_PROPERTY;
+-- properties
+insert into SMP_CONFIGURATION ( PROPERTY_NAME, PROPERTY_VALUE, CREATED_ON, LAST_UPDATED_ON, DESCRIPTION)
+    select PROPERTY, VALUE, CREATED_ON, LAST_UPDATED_ON, DESCRIPTION from BCK_CONFIGURATION;
+-- users and credentials
+insert into SMP_USER ( ID,USERNAME, CREATED_ON,LAST_UPDATED_ON,ACTIVE,APPLICATION_ROLE,EMAIL)
+    select ID,USERNAME, CREATED_ON,LAST_UPDATED_ON,ACTIVE, DECODE(ROLE, 'SYSTEM_ADMIN','SYSTEM_ADMIN','USER'),EMAIL from BCK_USER;
+-- set password credentials
+insert into SMP_CREDENTIAL (ID, CREDENTIAL_NAME, CREDENTIAL_VALUE,FK_USER_ID,CREDENTIAL_TARGET,CREDENTIAL_TYPE,CREDENTIAL_ACTIVE, ACTIVE_FROM, EXPIRE_ON,CREATED_ON,LAST_UPDATED_ON, CHANGED_ON,LAST_ALERT_ON, LAST_FAILED_LOGIN_ON,LOGIN_FAILURE_COUNT)
+select SMP_CREDENTIAL_SEQ.nextval, USERNAME, PASSWORD, id, 'UI', 'USERNAME_PASSWORD', 1, null, PASSWORD_EXPIRE_ON, CREATED_ON,LAST_UPDATED_ON, PASSWORD_CHANGED,PASSWORD_LAST_ALERT_ON,LAST_FAILED_LOGIN_ON, LOGIN_FAILURE_COUNT  from BCK_USER;
+-- set access token
+insert into SMP_CREDENTIAL (ID, CREDENTIAL_NAME, CREDENTIAL_VALUE,FK_USER_ID,CREDENTIAL_TARGET,CREDENTIAL_TYPE,CREDENTIAL_ACTIVE, ACTIVE_FROM, EXPIRE_ON,CREATED_ON,LAST_UPDATED_ON, CHANGED_ON,LAST_ALERT_ON, LAST_FAILED_LOGIN_ON,LOGIN_FAILURE_COUNT)
+select SMP_CREDENTIAL_SEQ.nextval, ACCESS_TOKEN_ID, ACCESS_TOKEN, id, 'REST_API', 'ACCESS_TOKEN', 1, null, ACCESS_TOKEN_EXPIRE_ON, CREATED_ON,LAST_UPDATED_ON, ACCESS_TOKEN_GENERATED_ON,ACCESS_TOKEN_LAST_ALERT_ON,AT_LAST_FAILED_LOGIN_ON, AT_LOGIN_FAILURE_COUNT from BCK_USER WHERE ACCESS_TOKEN_ID is not null;
+-- set certificates
+insert into SMP_CREDENTIAL (ID, CREDENTIAL_NAME, CREDENTIAL_VALUE,FK_USER_ID,CREDENTIAL_TARGET,CREDENTIAL_TYPE,CREDENTIAL_ACTIVE, ACTIVE_FROM, EXPIRE_ON, CREATED_ON,LAST_UPDATED_ON, CHANGED_ON,LAST_ALERT_ON, LAST_FAILED_LOGIN_ON,LOGIN_FAILURE_COUNT)
+    select SMP_CREDENTIAL_SEQ.nextval, CERTIFICATE_ID, null, id, 'REST_API', 'CERTIFICATE', 1, VALID_FROM, VALID_TO, CREATED_ON,LAST_UPDATED_ON, CREATED_ON, EXPIRE_LAST_ALERT_ON,null,null from BCK_CERTIFICATE;
+insert into SMP_CERTIFICATE ( ID, CREATED_ON, LAST_UPDATED_ON, CERTIFICATE_ID, CRL_URL, ISSUER,PEM_ENCODED_CERT, SERIALNUMBER, SUBJECT, VALID_FROM, VALID_TO)
+    select CRE.ID, CRT.CREATED_ON, CRT.LAST_UPDATED_ON, CRT.CERTIFICATE_ID, CRT.CRL_URL, CRT.ISSUER, CRT.PEM_ENCODED_CERT, CRT.SERIALNUMBER, CRT.SUBJECT, CRT.VALID_FROM, CRT.VALID_TO  from BCK_CERTIFICATE CRT JOIN SMP_CREDENTIAL CRE ON CRT.CERTIFICATE_ID=CRE.CREDENTIAL_NAME WHERE CRT.ID=CRE.FK_USER_ID AND CRE.CREDENTIAL_TYPE='CERTIFICATE';
+
+-- register default extension
+insert into SMP_EXTENSION ( ID, IDENTIFIER,  IMPLEMENTATION_NAME, NAME, VERSION, DESCRIPTION, CREATED_ON, LAST_UPDATED_ON) values
+    (1, 'edelivery-oasis-smp-extension',  'OasisSMPExtension','Oasis SMP 1.0 and 2.0','1.0', 'Oasis SMP 1.0 and 2.0 extension',  sysdate,  sysdate);
+
+insert into SMP_RESOURCE_DEF ( ID, FK_EXTENSION_ID, URL_SEGMENT, IDENTIFIER, DESCRIPTION, MIME_TYPE, NAME, CREATED_ON, LAST_UPDATED_ON) values
+    (1, 1, 'smp-1', 'edelivery-oasis-smp-1.0-servicegroup', 'Oasis SMP 1.0 ServiceGroup', 'text/xml','Oasis SMP 1.0 ServiceGroup', sysdate,  sysdate);
+
+insert into SMP_SUBRESOURCE_DEF (ID,FK_RESOURCE_DEF_ID,URL_SEGMENT, IDENTIFIER, DESCRIPTION, MIME_TYPE, NAME, CREATED_ON, LAST_UPDATED_ON) values
+    (1,1, 'services', 'edelivery-oasis-smp-1.0-servicemetadata', 'Oasis SMP 1.0 ServiceMetadata', 'text/xml','Oasis SMP 1.0 ServiceMetadata', sysdate,  sysdate);
+
+-- domains groups
+-- the group has the same id as domain
+insert into SMP_DOMAIN ( ID, CREATED_ON, LAST_UPDATED_ON, DOMAIN_CODE, SIGNATURE_ALGORITHM, SIGNATURE_DIGEST_METHOD, SIGNATURE_KEY_ALIAS,SML_CLIENT_KEY_ALIAS, SML_CLIENT_CERT_AUTH, SML_REGISTERED, SML_SMP_ID, SML_SUBDOMAIN, VISIBILITY)
+    select ID,CREATED_ON,LAST_UPDATED_ON,DOMAIN_CODE, 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256', 'http://www.w3.org/2001/04/xmlenc#sha256',
+    SIGNATURE_KEY_ALIAS,SML_CLIENT_KEY_ALIAS,SML_BLUE_COAT_AUTH,SML_REGISTERED,SML_SMP_ID,SML_SUBDOMAIN,'PUBLIC' from BCK_DOMAIN;
+-- each domain has one default group and the id is equal to domain id. If this is changed fix also insert SMP_RESOURCE...
+insert into SMP_GROUP ( ID, FK_DOMAIN_ID, NAME, DESCRIPTION, VISIBILITY, CREATED_ON, LAST_UPDATED_ON)
+    select  ID, ID, DOMAIN_CODE || 'Group',  'Default Group for domain: ' ||  DOMAIN_CODE, 'PUBLIC', sysdate,  sysdate from BCK_DOMAIN;
+
+-- set the ID of connection the same as id (can be done because it is empty database and one document for the domain) service group 1.0 document type to all domains
+insert into SMP_DOMAIN_RESOURCE_DEF (ID, CREATED_ON, LAST_UPDATED_ON, FK_DOMAIN_ID, FK_RESOURCE_DEF_ID)
+ select ID, sysdate,  sysdate,  ID, 1 from BCK_DOMAIN;
+
+
+-- create service group documents
+insert into SMP_DOCUMENT (ID, CREATED_ON, LAST_UPDATED_ON, CURRENT_VERSION,MIME_TYPE, NAME )
+    select SMP_DOCUMENT_SEQ.nextval,sg.CREATED_ON, sg.LAST_UPDATED_ON, 1, 'text/xml', 'ServiceGroup1.0-' || sg.id || '-' ||  sgd.FK_DOMAIN_ID FROM BCK_SERVICE_GROUP sg JOIN BCK_SERVICE_GROUP_DOMAIN sgd on sg.id = sgd.FK_SG_ID;
+-- the FK_DOREDEF_ID is 1  see the SMP_RESOURCE_DEF
+-- the  FK_GROUP_ID is equal to domain id see the: insert into SMP_GROUP ....
+insert into SMP_RESOURCE (ID, CREATED_ON, LAST_UPDATED_ON, IDENTIFIER_SCHEME, IDENTIFIER_VALUE, SML_REGISTERED, VISIBILITY, FK_DOCUMENT_ID, FK_DOREDEF_ID, FK_GROUP_ID)
+    select SMP_RESOURCE_SEQ.nextval, sg.CREATED_ON, sg.LAST_UPDATED_ON, sg.PARTICIPANT_SCHEME, sg.PARTICIPANT_IDENTIFIER, sgd.SML_REGISTERED,
+    'PUBLIC', (select id from SMP_DOCUMENT where NAME= 'ServiceGroup1.0-' || sg.id || '-' ||  sgd.FK_DOMAIN_ID ),
+     1, sgd.FK_DOMAIN_ID FROM BCK_SERVICE_GROUP sg JOIN BCK_SERVICE_GROUP_DOMAIN sgd on sg.id = sgd.FK_SG_ID;
+
+insert into SMP_DOCUMENT_VERSION ( ID, CREATED_ON, LAST_UPDATED_ON, DOCUMENT_CONTENT, VERSION, FK_DOCUMENT_ID )
+    select SMP_DOCUMENT_VERSION_SEQ.nextval,  sg.CREATED_ON, sg.LAST_UPDATED_ON,  '<ServiceGroup xmlns="http://docs.oasis-open.org/bdxr/ns/SMP/2016/05" xmlns:ns0="http://www.w3.org/2000/09/xmldsig#"><ParticipantIdentifier scheme="' || sg.PARTICIPANT_SCHEME || '" >' || sg.PARTICIPANT_IDENTIFIER || '</ParticipantIdentifier><ServiceMetadataReferenceCollection />' || DECODE(DBMS_LOB.SUBSTR(ex.EXTENSION), null,'',DBMS_LOB.SUBSTR(ex.EXTENSION))  || '</ServiceGroup>', 1,
+    (select id from SMP_DOCUMENT where NAME='ServiceGroup1.0-' || sg.id || '-' || sgd.FK_DOMAIN_ID )
+    FROM BCK_SERVICE_GROUP sg JOIN BCK_SERVICE_GROUP_DOMAIN sgd on sg.id = sgd.FK_SG_ID LEFT JOIN BCK_SG_EXTENSION ex on sg.id = ex.id ;
+
+-- ------------------------
+-- create service metadata documents
+insert into SMP_DOCUMENT (ID, CREATED_ON, LAST_UPDATED_ON, CURRENT_VERSION,MIME_TYPE, NAME )
+    select SMP_DOCUMENT_SEQ.nextval, sm.CREATED_ON, sm.LAST_UPDATED_ON, 1, 'text/xml', 'ServiceMetadata1.0-' || sm.id FROM BCK_SERVICE_METADATA sm;
+
+-- the FK_DOREDEF_ID is 1  see the SMP_RESOURCE_DEF
+-- the  FK_GROUP_ID is equal to domain id see the: insert into SMP_GROUP ....
+insert into SMP_SUBRESOURCE (ID, CREATED_ON, LAST_UPDATED_ON, IDENTIFIER_SCHEME, IDENTIFIER_VALUE, FK_DOCUMENT_ID, FK_RESOURCE_ID, FK_SUREDEF_ID)
+    select SMP_SUBRESOURCE_SEQ.nextval, sm.CREATED_ON, sm.LAST_UPDATED_ON, sm.DOCUMENT_SCHEME, sm.DOCUMENT_IDENTIFIER,
+    (select id from SMP_DOCUMENT where NAME='ServiceMetadata1.0-' || sm.id), sm.FK_SG_DOM_ID, 1 FROM BCK_SERVICE_METADATA sm;
+
+insert into SMP_DOCUMENT_VERSION (ID,  CREATED_ON, LAST_UPDATED_ON, DOCUMENT_CONTENT, VERSION, FK_DOCUMENT_ID )
+    select SMP_DOCUMENT_VERSION_SEQ.nextval, smx.CREATED_ON, smx.LAST_UPDATED_ON, smx.XML_CONTENT, 1,
+    (select id from SMP_DOCUMENT where NAME='ServiceMetadata1.0-' || smx.id)
+    FROM BCK_SERVICE_METADATA_XML smx ;
+
+-- finally set also the memberships
+-- the SMP admins are members of all domains/groups and resources
+insert into SMP_DOMAIN_MEMBER (ID, CREATED_ON, LAST_UPDATED_ON, MEMBERSHIP_ROLE, FK_DOMAIN_ID, FK_USER_ID)
+    select SMP_DOMAIN_MEMBER_SEQ.nextval, sysdate, sysdate, 'ADMIN', dmn.ID, usr.ID from BCK_USER  usr CROSS JOIN SMP_DOMAIN dmn where usr.ROLE='SMP_ADMIN' ;
+insert into SMP_GROUP_MEMBER ( ID, CREATED_ON, LAST_UPDATED_ON, MEMBERSHIP_ROLE, FK_GROUP_ID, FK_USER_ID)
+    select SMP_GROUP_MEMBER_SEQ.nextval,  sysdate, sysdate, 'ADMIN', grp.ID, usr.ID from BCK_USER  usr CROSS JOIN SMP_GROUP grp where usr.ROLE='SMP_ADMIN' ;
+insert into SMP_RESOURCE_MEMBER ( ID, CREATED_ON, LAST_UPDATED_ON, MEMBERSHIP_ROLE, FK_RESOURCE_ID, FK_USER_ID)
+    select SMP_RESOURCE_MEMBER_SEQ.nextval, sysdate, sysdate, 'ADMIN', rs.ID, usr.ID from BCK_USER  usr CROSS JOIN SMP_RESOURCE rs where usr.ROLE='SMP_ADMIN' ;
+
+-- the SMP Resource memberships
+insert into SMP_RESOURCE_MEMBER (ID, CREATED_ON, LAST_UPDATED_ON, MEMBERSHIP_ROLE, FK_RESOURCE_ID, FK_USER_ID)
+    select SMP_RESOURCE_MEMBER_SEQ.nextval, sysdate, sysdate, 'ADMIN', ow.FK_SG_ID, usr.ID from BCK_USER usr JOIN BCK_OWNERSHIP ow ON  ow.FK_USER_ID = usr.id where usr.ROLE='SERVICE_GROUP_ADMIN';
-- 
GitLab