diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/CredentialsAlertService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/CredentialsAlertService.java
index b02d5dc683f679b5f0339ea56aa8161f0ab5475a..6927b4f6e27892df7ef7c75d223f7ab636b2c3ff 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/CredentialsAlertService.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/CredentialsAlertService.java
@@ -97,6 +97,12 @@ public class CredentialsAlertService {
         alertCredentialExpiration(userCredential, alert, credentialType, credentialId, expiredOn);
     }
 
+    /**
+     * Method generates "expired" alert for credentials
+     *
+     * @param userCredential
+     */
+
     public void alertCredentialExpired(DBCredential userCredential) {
         DBUser user = userCredential.getUser();
         LOG.info("Alert access token [{}:{}] for user [{}] expired on [{}]",
@@ -132,8 +138,6 @@ public class CredentialsAlertService {
         AlertTypeEnum alertType = AlertTypeEnum.CREDENTIAL_EXPIRED;
         DBAlert alert = createAlert(user.getUsername(), mailSubject, mailTo, alertLevel, alertType);
         alertCredentialExpiration(userCredential, alert, credentialType, credentialId, expiredOn);
-
-
     }
 
     public void alertCredentialVerificationFailed(DBCredential credential) {
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java
index ca150e70e21c2553422d7cc32f57ebf0f4210ef0..aab158ef1a5da057c0824b2c17c00cc4f1532ae4 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java
@@ -192,7 +192,7 @@ public class UIUserService extends UIServiceBase<DBUser, UserRO> {
         }
         Optional<DBCredential> dbCredential = credentialDao.findUsernamePasswordCredentialForUserIdAndUI(authorizedUserId);
         DBCredential dbAuthorizedCredentials = dbCredential.orElseThrow(() ->
-                new SMPRuntimeException(ErrorCode.INVALID_REQUEST, "UserId", "Can not find user id!"));
+                new SMPRuntimeException(ErrorCode.INVALID_REQUEST, "UserId", "Can not find user id"));
 
         DBUser authorizedUser = dbAuthorizedCredentials.getUser();
 
@@ -202,7 +202,7 @@ public class UIUserService extends UIServiceBase<DBUser, UserRO> {
         }
 
         boolean adminUpdate = userToUpdateId != null
-                && authorizedUserId != userToUpdateId;
+                && !Objects.equals(authorizedUserId, userToUpdateId);
 
         // check if authorized user has the permission to change other user credentials
         if (adminUpdate && authorizedUser.getApplicationRole() != ApplicationRoleType.SYSTEM_ADMIN) {
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/SmlIntegrationConfiguration.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/SmlIntegrationConfiguration.java
index 4edf6b06680819bc8a8c76747fda4d56dc012b1b..054c48018579106b19be4bef7a12155077395371 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/SmlIntegrationConfiguration.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/SmlIntegrationConfiguration.java
@@ -76,6 +76,7 @@ public class SmlIntegrationConfiguration {
 
     @Bean("MockIManageParticipantIdentifierWS")
     @Scope(SCOPE_PROTOTYPE)
+    @Primary
     public IManageParticipantIdentifierWS smpParticipantClient() throws UnauthorizedFault, NotFoundFault, InternalErrorFault, BadRequestFault {
 
 
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/utils/SMPSchemaGeneratorTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/utils/SMPSchemaGeneratorTest.java
index 8c6a30153bda900a4a5cc19b9946139b534f3e8a..9e772a48a3fc4e9db79521b9d911eac621162611 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/utils/SMPSchemaGeneratorTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/utils/SMPSchemaGeneratorTest.java
@@ -11,18 +11,20 @@ import org.junit.runner.RunWith;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
-@Ignore
+
 @RunWith(JUnitParamsRunner.class)
 public class SMPSchemaGeneratorTest {
 
     private static final String DIALECT_ORACLE="org.hibernate.dialect.Oracle10gDialect";
     private static final String DIALECT_MYSQL_INNO5="org.hibernate.dialect.MySQL5InnoDBDialect";
-    private static final String ENTITY_PACKAGE= "eu.europa.ec.edelivery.smp.data.model";
+
+    protected static String ENTITY_PACKAGES= "eu.europa.ec.edelivery.smp.data.model,eu.europa.ec.edelivery.smp.data.model.user,eu.europa.ec.edelivery.smp.data.model.doc,eu.europa.ec.edelivery.smp.data.model.ext";
 
 
     private static final Object[] dialectTestCases() {
@@ -48,7 +50,7 @@ public class SMPSchemaGeneratorTest {
         String folder = "target";
         String dialect = DIALECT_ORACLE;
         String version = "4.1.0-SNAPSHOT";
-        List<String> lstPackages = Collections.singletonList(ENTITY_PACKAGE);
+        List<String> lstPackages = Arrays.asList(ENTITY_PACKAGES.split(","));
         File f = new File("target/oracle10g.ddl");
         File fDrop = new File("target/oracle10g-drop.ddl");
         f.delete(); // delete if exists
@@ -124,8 +126,8 @@ public class SMPSchemaGeneratorTest {
     public void getAllEntityClasses() throws ClassNotFoundException {
 
         // given when
-        List<Class> result =  testInstance.getAllEntityClasses(ENTITY_PACKAGE);
+        List<Class> result =  testInstance.getAllEntityClasses("eu.europa.ec.edelivery.smp.data.model");
 
-        assertEquals(18, result.size());
+        assertEquals(10, result.size());
     }
 }
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AbstractServiceIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AbstractServiceIntegrationTest.java
index ad0fe1c6eefbce314e3ad06a94e19e3bd908329d..595a631a6138a1f14f796b2f278f275e9acf5a66 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AbstractServiceIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AbstractServiceIntegrationTest.java
@@ -3,14 +3,14 @@ package eu.europa.ec.edelivery.smp.services;
 
 import eu.europa.ec.edelivery.smp.config.ConversionTestConfig;
 import eu.europa.ec.edelivery.smp.config.ServicesBeansConfiguration;
+import eu.europa.ec.edelivery.smp.config.enums.SMPPropertyEnum;
 import eu.europa.ec.edelivery.smp.conversion.IdentifierService;
 import eu.europa.ec.edelivery.smp.cron.CronTriggerConfig;
 import eu.europa.ec.edelivery.smp.data.dao.*;
-import eu.europa.ec.edelivery.smp.data.model.*;
+import eu.europa.ec.edelivery.smp.data.model.DBDomain;
 import eu.europa.ec.edelivery.smp.data.model.doc.DBResource;
 import eu.europa.ec.edelivery.smp.data.model.doc.DBSubresource;
 import eu.europa.ec.edelivery.smp.data.model.user.DBUser;
-import eu.europa.ec.edelivery.smp.config.enums.SMPPropertyEnum;
 import eu.europa.ec.edelivery.smp.services.mail.MailService;
 import eu.europa.ec.edelivery.smp.services.spi.SmpXmlSignatureService;
 import eu.europa.ec.edelivery.smp.services.ui.UIKeystoreService;
@@ -41,9 +41,9 @@ import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*;
  */
 
 @RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(classes = {IdentifierService.class,SmlConnector.class, SmpXmlSignatureService.class, MailService.class,
+@ContextConfiguration(classes = {IdentifierService.class, SmlConnector.class, SmpXmlSignatureService.class, MailService.class,
         DomainService.class,
-        ResourceDao.class, SubresourceDao.class, DomainDao.class, UserDao.class,DBAssertion.class, ConfigurationDao.class, AlertDao.class,
+        ResourceDao.class, SubresourceDao.class, DomainDao.class, UserDao.class, DBAssertion.class, ConfigurationDao.class, AlertDao.class,
         UITruststoreService.class, UIKeystoreService.class, ConversionTestConfig.class, SMLIntegrationService.class,
         CRLVerifierService.class,
         ConfigurationService.class,
@@ -53,11 +53,11 @@ import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*;
 @Sql(scripts = {"classpath:cleanup-database.sql",
         "classpath:basic_conf_data-h2.sql"
 }, executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)
-public abstract class AbstractServiceIntegrationTest {
+public abstract class AbstractServiceIntegrationTest extends AbstractBaseDao {
 
 
-    protected Path resourceDirectory = Paths.get("src", "test", "resources",  "keystores");
-    protected Path targetDirectory = Paths.get("target","keystores");
+    protected Path resourceDirectory = Paths.get("src", "test", "resources", "keystores");
+    protected Path targetDirectory = Paths.get("target", "keystores");
 
     @Autowired
     protected ResourceDao serviceGroupDao;
@@ -74,6 +74,9 @@ public abstract class AbstractServiceIntegrationTest {
     @Autowired
     protected UserDao userDao;
 
+    @Autowired
+    protected CredentialDao credentialDao;
+
     @Autowired
     protected AlertDao alertDao;
 
@@ -89,22 +92,23 @@ public abstract class AbstractServiceIntegrationTest {
      * Domain: TEST_DOMAIN_CODE_1
      * Users: USERNAME_1, USER_CERT_2
      * ServiceGroup1: TEST_SG_ID_1, TEST_SG_SCHEMA_1
-     *    - Domain: TEST_DOMAIN_CODE_1
-     *    - Owners: USERNAME_1, USER_CERT_2
-     *    - Metadata:
-     *          - TEST_DOC_ID_1, TEST_DOC_SCHEMA_1
-     *
-     *
+     * - Domain: TEST_DOMAIN_CODE_1
+     * - Owners: USERNAME_1, USER_CERT_2
+     * - Metadata:
+     * - TEST_DOC_ID_1, TEST_DOC_SCHEMA_1
+     * <p>
+     * <p>
      * ServiceGroup2: TEST_SG_ID_2, TEST_SG_SCHEMA_2
-     *    - Domain: TEST_DOMAIN_CODE_1
-     *    - Owners: USERNAME_1
-     *    - Metadata: /
+     * - Domain: TEST_DOMAIN_CODE_1
+     * - Owners: USERNAME_1
+     * - Metadata: /
      */
     public void prepareDatabaseForSingleDomainEnv() {
         prepareDatabaseForSingleDomainEnv(true);
     }
+
     public void prepareDatabaseForSingleDomainEnv(boolean domainSMLRegister) {
-        DBDomain testDomain01 =TestDBUtils.createDBDomain(TestConstants.TEST_DOMAIN_CODE_1);
+        DBDomain testDomain01 = TestDBUtils.createDBDomain(TestConstants.TEST_DOMAIN_CODE_1);
         testDomain01.setSmlRegistered(domainSMLRegister);
         domainDao.persistFlushDetach(testDomain01);
 
@@ -118,7 +122,9 @@ public abstract class AbstractServiceIntegrationTest {
         DBResource sg1d1 = TestDBUtils.createDBResource(TEST_SG_ID_1, TEST_SG_SCHEMA_1);
         DBSubresource sg1md1 = TestDBUtils.createDBSubresource(TEST_SG_ID_1, TEST_SG_SCHEMA_1,
                 TEST_DOC_ID_1, TEST_DOC_SCHEMA_1);
+
         /*
+
         sg1d1.addDomain(testDomain01);
         sg1d1.getResourceDomains().get(0).addServiceMetadata(sg1md1);
         sg1d1.getMembers().add(new DBResourceMember(sg1d1, u1));
@@ -147,21 +153,20 @@ public abstract class AbstractServiceIntegrationTest {
      * Domain: TEST_DOMAIN_CODE_1,TEST_DOMAIN_CODE_2
      * Users: USERNAME_1, USER_CERT_2
      * ServiceGroup1: TEST_SG_ID_1, TEST_SG_SCHEMA_1
-     *    - Domain: TEST_DOMAIN_CODE_1
-     *    - Owners: USERNAME_1, USER_CERT_2
-     *      - Metadata: TEST_DOC_ID_1, TEST_DOC_SCHEMA_1
-     *
-     *
+     * - Domain: TEST_DOMAIN_CODE_1
+     * - Owners: USERNAME_1, USER_CERT_2
+     * - Metadata: TEST_DOC_ID_1, TEST_DOC_SCHEMA_1
+     * <p>
+     * <p>
      * ServiceGroup2: TEST_SG_ID_1, TEST_SG_SCHEMA_2
-     *    - Owners: USERNAME_1
-     *    - Domain: TEST_DOMAIN_CODE_1
-     *      - Metadata: /
-     *
+     * - Owners: USERNAME_1
+     * - Domain: TEST_DOMAIN_CODE_1
+     * - Metadata: /
+     * <p>
      * ServiceGroup3: TEST_SG_ID_3, TEST_SG_SCHEMA_3
-     *    - Owners: USERNAME_1
-     *    - Domain: TEST_DOMAIN_CODE_2
-     *      - Metadata: /
-     *
+     * - Owners: USERNAME_1
+     * - Domain: TEST_DOMAIN_CODE_2
+     * - Metadata: /
      */
     public void prepareDatabaseForMultipeDomainEnv() {
 
@@ -172,13 +177,13 @@ public abstract class AbstractServiceIntegrationTest {
         DBUser u1 = userDao.findUserByUsername(USERNAME_1).get();
 
         DBResource sg2d2 = TestDBUtils.createDBResource(TEST_SG_ID_3, TEST_SG_SCHEMA_1);
-       // sg2d2.getUsers().add(u1);
+        // sg2d2.getUsers().add(u1);
         serviceGroupDao.update(sg2d2);
     }
 
 
-    public void setDatabaseProperty(SMPPropertyEnum prop, String value){
-        configurationDao.setPropertyToDatabase(prop,value,"Test property");
+    public void setDatabaseProperty(SMPPropertyEnum prop, String value) {
+        configurationDao.setPropertyToDatabase(prop, value, "Test property");
         configurationDao.reloadPropertiesFromDatabase();
     }
 
@@ -186,27 +191,26 @@ public abstract class AbstractServiceIntegrationTest {
      * Domain: TEST_DOMAIN_CODE_1,TEST_DOMAIN_CODE_2
      * Users: USERNAME_1, USER_CERT_2
      * ServiceGroup1: TEST_SG_ID_1, TEST_SG_SCHEMA_1
-     *    - Owners: USERNAME_1, USER_CERT_2
-     *    - Domain: TEST_DOMAIN_CODE_1
-     *      - Metadata:
-     *          - TEST_DOC_ID_1, TEST_DOC_SCHEMA_1
-     *          - TEST_DOC_ID_2, TEST_DOC_SCHEMA_2
-     *
-     *
+     * - Owners: USERNAME_1, USER_CERT_2
+     * - Domain: TEST_DOMAIN_CODE_1
+     * - Metadata:
+     * - TEST_DOC_ID_1, TEST_DOC_SCHEMA_1
+     * - TEST_DOC_ID_2, TEST_DOC_SCHEMA_2
+     * <p>
+     * <p>
      * ServiceGroup2: TEST_SG_ID_1, TEST_SG_SCHEMA_2
-     *    - Domain: TEST_DOMAIN_CODE_1
-     *    - Owners: USERNAME_1
-     *    - Metadata: /
-     *
+     * - Domain: TEST_DOMAIN_CODE_1
+     * - Owners: USERNAME_1
+     * - Metadata: /
+     * <p>
      * ServiceGroup3: TEST_SG_ID_3, TEST_SG_SCHEMA_3
-     *    - Owners: USERNAME_1
-     *    - Domain: TEST_DOMAIN_CODE_2
-     *      - Metadata:
-     *         - TEST_DOC_ID_1, TEST_DOC_SCHEMA_1
-     *    - Domain: TEST_DOMAIN_CODE_2
-     *      - Metadata:
-     *         - TEST_DOC_ID_2, TEST_DOC_SCHEMA_2
-     *
+     * - Owners: USERNAME_1
+     * - Domain: TEST_DOMAIN_CODE_2
+     * - Metadata:
+     * - TEST_DOC_ID_1, TEST_DOC_SCHEMA_1
+     * - Domain: TEST_DOMAIN_CODE_2
+     * - Metadata:
+     * - TEST_DOC_ID_2, TEST_DOC_SCHEMA_2
      */
 
     public void prepareDatabaseForMultipeDomainWithMetadataEnv() {
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AlertServiceTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AlertServiceTest.java
index 1a56789e2acf8817da08b50b6073639987b15b29..93530708ec640bcdf7ee8ecfdf9cea89166a42d4 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AlertServiceTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/AlertServiceTest.java
@@ -4,18 +4,33 @@ import eu.europa.ec.edelivery.smp.cron.SMPDynamicCronTrigger;
 import eu.europa.ec.edelivery.smp.data.dao.AlertDao;
 import eu.europa.ec.edelivery.smp.data.dao.CredentialDao;
 import eu.europa.ec.edelivery.smp.data.dao.UserDao;
+import eu.europa.ec.edelivery.smp.data.enums.CredentialType;
 import eu.europa.ec.edelivery.smp.data.model.DBAlert;
+import eu.europa.ec.edelivery.smp.data.model.user.DBCredential;
+import eu.europa.ec.edelivery.smp.data.model.user.DBUser;
 import eu.europa.ec.edelivery.smp.data.ui.enums.AlertLevelEnum;
 import eu.europa.ec.edelivery.smp.data.ui.enums.AlertStatusEnum;
 import eu.europa.ec.edelivery.smp.data.ui.enums.AlertTypeEnum;
+import eu.europa.ec.edelivery.smp.services.mail.MailModel;
 import eu.europa.ec.edelivery.smp.services.mail.MailService;
+import eu.europa.ec.edelivery.smp.services.mail.prop.CredentialSuspendedProperties;
+import eu.europa.ec.edelivery.smp.services.mail.prop.CredentialVerificationFailedProperties;
+import eu.europa.ec.edelivery.smp.services.mail.prop.CredentialsExpirationProperties;
+import eu.europa.ec.edelivery.smp.testutil.TestDBUtils;
 import org.junit.Ignore;
 import org.junit.Test;
+import org.mockito.ArgumentCaptor;
 import org.mockito.Mockito;
 
+import java.time.OffsetDateTime;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Properties;
+import java.util.stream.Collectors;
+
 import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
 
-@Ignore
 public class AlertServiceTest {
 
     AlertDao alertDao = Mockito.mock(AlertDao.class);
@@ -49,7 +64,7 @@ public class AlertServiceTest {
         assertNotNull(alert.getReportingTime());
 
     }
-/*
+
     @Test
     public void testSubmitAlertMailNoMail() {
 
@@ -64,10 +79,11 @@ public class AlertServiceTest {
     public void alertBeforeUsernamePasswordExpire() {
         // given
         DBUser user = TestDBUtils.createDBUser("alertBeforeUsernamePasswordExpire");
+        DBCredential credential = TestDBUtils.createDBCredentialForUser(user, null, OffsetDateTime.now().plusDays(1), null);
         String mailSubject = "mail subject";
         String mailFrom = "mail.from@test.eu";
         AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
-        user.setPasswordExpireOn(OffsetDateTime.now().plusDays(1));
+
         doReturn(mailSubject).when(configurationService).getAlertBeforeExpirePasswordMailSubject();
         doReturn(alertLevel).when(configurationService).getAlertBeforeExpirePasswordLevel();
         doReturn(mailFrom).when(configurationService).getAlertEmailFrom();
@@ -76,7 +92,7 @@ public class AlertServiceTest {
         List<String> expectedTemplateProperties = Arrays.asList(CredentialsExpirationProperties.values()).stream()
                 .map(CredentialsExpirationProperties::name).collect(Collectors.toList());
         // when
-        testInstance.alertBeforeUsernamePasswordExpire(user);
+        testInstance.alertBeforeCredentialExpire(credential);
         // then
         assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
                 expectedTemplateProperties);
@@ -93,7 +109,9 @@ public class AlertServiceTest {
         String mailSubject = "mail subject";
         String mailFrom = "mail.from@test.eu";
         AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
-        user.setPasswordExpireOn(OffsetDateTime.now().plusDays(1));
+        DBCredential credential = TestDBUtils.createDBCredentialForUser(user, null, OffsetDateTime.now().plusDays(-1), null);
+
+
         doReturn(mailSubject).when(configurationService).getAlertExpiredPasswordMailSubject();
         doReturn(alertLevel).when(configurationService).getAlertExpiredPasswordLevel();
         doReturn(mailFrom).when(configurationService).getAlertEmailFrom();
@@ -101,7 +119,7 @@ public class AlertServiceTest {
         List<String> expectedTemplateProperties = Arrays.asList(CredentialsExpirationProperties.values()).stream()
                 .map(CredentialsExpirationProperties::name).collect(Collectors.toList());
         // when
-        testInstance.alertUsernamePasswordExpired(user);
+        testInstance.alertCredentialExpired(credential);
         // then
         assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
                 expectedTemplateProperties);
@@ -115,10 +133,11 @@ public class AlertServiceTest {
     public void alertBeforeAccessTokenExpire() {
         // given
         DBUser user = TestDBUtils.createDBUser("alertBeforeAccessTokenExpire");
+        DBCredential credential = TestDBUtils.createDBCredentialForUserAccessToken(user, null, OffsetDateTime.now().plusDays(1), null);
+
         String mailSubject = "mail subject";
         String mailFrom = "mail.from@test.eu";
         AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
-        user.setAccessTokenExpireOn(OffsetDateTime.now().plusDays(1));
         doReturn(mailSubject).when(configurationService).getAlertBeforeExpireAccessTokenMailSubject();
         doReturn(alertLevel).when(configurationService).getAlertBeforeExpireAccessTokenLevel();
         doReturn(mailFrom).when(configurationService).getAlertEmailFrom();
@@ -127,7 +146,7 @@ public class AlertServiceTest {
         List<String> expectedTemplateProperties = Arrays.asList(CredentialsExpirationProperties.values()).stream()
                 .map(CredentialsExpirationProperties::name).collect(Collectors.toList());
         // when
-        testInstance.alertBeforeAccessTokenExpire(user);
+        testInstance.alertBeforeCredentialExpire(credential);
         // then
         assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
                 expectedTemplateProperties);
@@ -137,14 +156,15 @@ public class AlertServiceTest {
         verify(configurationService, times(1)).getAlertEmailFrom();
     }
 
+
     @Test
     public void alertAccessTokenExpired() {
         // given
         DBUser user = TestDBUtils.createDBUser("alertAccessTokenExpired");
+        DBCredential credential = TestDBUtils.createDBCredentialForUserAccessToken(user, null, OffsetDateTime.now().plusDays(-1), null);
         String mailSubject = "mail subject";
         String mailFrom = "mail.from@test.eu";
         AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
-        user.setAccessTokenExpireOn(OffsetDateTime.now().plusDays(1));
         doReturn(mailSubject).when(configurationService).getAlertExpiredAccessTokenMailSubject();
         doReturn(alertLevel).when(configurationService).getAlertExpiredAccessTokenLevel();
         doReturn(mailFrom).when(configurationService).getAlertEmailFrom();
@@ -152,7 +172,7 @@ public class AlertServiceTest {
         List<String> expectedTemplateProperties = Arrays.asList(CredentialsExpirationProperties.values()).stream()
                 .map(CredentialsExpirationProperties::name).collect(Collectors.toList());
         // when
-        testInstance.alertAccessTokenExpired(user);
+        testInstance.alertCredentialExpired(credential);
         // then
         assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
                 expectedTemplateProperties);
@@ -166,6 +186,7 @@ public class AlertServiceTest {
     public void alertBeforeCertificateExpire() {
         // given
         DBUser user = TestDBUtils.createDBUser("user", "alertBeforeCertificateExpire");
+        DBCredential credential = TestDBUtils.createDBCredentialForUserCertificate(user, null, OffsetDateTime.now().plusDays(1), null);
         String mailSubject = "mail subject";
         String mailFrom = "mail.from@test.eu";
         AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
@@ -176,7 +197,7 @@ public class AlertServiceTest {
         List<String> expectedTemplateProperties = Arrays.asList(CredentialsExpirationProperties.values()).stream()
                 .map(CredentialsExpirationProperties::name).collect(Collectors.toList());
         // when
-        testInstance.alertBeforeCertificateExpire(user);
+        testInstance.alertBeforeCredentialExpire(credential);
         // then
         assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
                 expectedTemplateProperties);
@@ -190,6 +211,7 @@ public class AlertServiceTest {
     public void alertCertificateExpired() {
         // given
         DBUser user = TestDBUtils.createDBUser("user", "alertCertificateExpired");
+        DBCredential credential = TestDBUtils.createDBCredentialForUserCertificate(user, null, OffsetDateTime.now().plusDays(1), null);
         String mailSubject = "mail subject";
         String mailFrom = "mail.from@test.eu";
         AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
@@ -201,7 +223,7 @@ public class AlertServiceTest {
                 .map(CredentialsExpirationProperties::name).collect(Collectors.toList());
 
         // when
-        testInstance.alertCertificateExpired(user);
+        testInstance.alertCredentialExpired(credential);
         // then
         assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
                 expectedTemplateProperties);
@@ -244,10 +266,13 @@ public class AlertServiceTest {
     @Test
     public void alertUsernameCredentialVerificationFailed() {
         DBUser user = TestDBUtils.createDBUser("user");
+        DBCredential credential = TestDBUtils.createDBCredentialForUser(user, null, OffsetDateTime.now().plusDays(1), null);
+        credential.setSequentialLoginFailureCount(5);
+        credential.setLastFailedLoginAttempt(OffsetDateTime.now());
+
         String mailSubject = "mail subject";
         String mailFrom = "mail.from@test.eu";
-        user.setSequentialLoginFailureCount(5);
-        user.setLastFailedLoginAttempt(OffsetDateTime.now());
+
         AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
 
         doReturn(true).when(configurationService).getAlertUserLoginFailureEnabled();
@@ -260,7 +285,7 @@ public class AlertServiceTest {
                 .map(CredentialVerificationFailedProperties::name).collect(Collectors.toList());
 
         // when
-        testInstance.alertCredentialVerificationFailed(user, CredentialTypeEnum.USERNAME_PASSWORD);
+        testInstance.alertCredentialVerificationFailed(credential);
         // then
         assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
                 expectedTemplateProperties);
@@ -274,10 +299,12 @@ public class AlertServiceTest {
     @Test
     public void alertTokenCredentialVerificationFailed() {
         DBUser user = TestDBUtils.createDBUser("user", "alertCertificateExpired");
+        DBCredential credential = TestDBUtils.createDBCredentialForUserAccessToken(user, null, OffsetDateTime.now().plusDays(1), null);
+        credential.setSequentialLoginFailureCount(5);
+        credential.setLastFailedLoginAttempt(OffsetDateTime.now());
         String mailSubject = "mail subject";
         String mailFrom = "mail.from@test.eu";
-        user.setSequentialTokenLoginFailureCount(5);
-        user.setLastTokenFailedLoginAttempt(OffsetDateTime.now());
+
         AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
 
         doReturn(true).when(configurationService).getAlertUserLoginFailureEnabled();
@@ -290,7 +317,7 @@ public class AlertServiceTest {
                 .map(CredentialVerificationFailedProperties::name).collect(Collectors.toList());
 
         // when
-        testInstance.alertCredentialVerificationFailed(user, CredentialTypeEnum.ACCESS_TOKEN);
+        testInstance.alertCredentialVerificationFailed(credential);
         // then
         assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
                 expectedTemplateProperties);
@@ -303,11 +330,13 @@ public class AlertServiceTest {
 
     @Test
     public void alertUsernameCredentialsSuspended() {
-        DBUser user = TestDBUtils.createDBUser("user", "alertCertificateExpired");
+        DBUser user = TestDBUtils.createDBUser("user", "alertUsernameCredentialsSuspended");
+        DBCredential credential = TestDBUtils.createDBCredentialForUser(user, null, OffsetDateTime.now().plusDays(1), null);
+        credential.setSequentialLoginFailureCount(5);
+        credential.setLastFailedLoginAttempt(OffsetDateTime.now());
         String mailSubject = "mail subject";
         String mailFrom = "mail.from@test.eu";
-        user.setSequentialLoginFailureCount(5);
-        user.setLastFailedLoginAttempt(OffsetDateTime.now());
+
         AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
 
         doReturn(true).when(configurationService).getAlertUserSuspendedEnabled();
@@ -320,7 +349,7 @@ public class AlertServiceTest {
                 .map(CredentialSuspendedProperties::name).collect(Collectors.toList());
 
         // when
-        testInstance.alertCredentialsSuspended(user, CredentialTypeEnum.USERNAME_PASSWORD);
+        testInstance.alertCredentialsSuspended(credential);
         // then
         assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
                 expectedTemplateProperties);
@@ -334,10 +363,13 @@ public class AlertServiceTest {
     @Test
     public void alertTokenCredentialsSuspended() {
         DBUser user = TestDBUtils.createDBUser("user", "alertCertificateExpired");
+        DBCredential credential = TestDBUtils.createDBCredentialForUserAccessToken(user, null, OffsetDateTime.now().plusDays(1), null);
+        credential.setSequentialLoginFailureCount(5);
+        credential.setLastFailedLoginAttempt(OffsetDateTime.now());
+
         String mailSubject = "mail subject";
         String mailFrom = "mail.from@test.eu";
-        user.setSequentialTokenLoginFailureCount(5);
-        user.setLastTokenFailedLoginAttempt(OffsetDateTime.now());
+
         AlertLevelEnum alertLevel = AlertLevelEnum.MEDIUM;
 
         doReturn(true).when(configurationService).getAlertUserSuspendedEnabled();
@@ -350,7 +382,7 @@ public class AlertServiceTest {
                 .map(CredentialSuspendedProperties::name).collect(Collectors.toList());
 
         // when
-        testInstance.alertCredentialsSuspended(user, CredentialTypeEnum.ACCESS_TOKEN);
+        testInstance.alertCredentialsSuspended(credential);
         // then
         assertAlertSend(alertType, user.getEmailAddress(), mailFrom, mailSubject,
                 expectedTemplateProperties);
@@ -361,7 +393,6 @@ public class AlertServiceTest {
         verify(configurationService, times(1)).getAlertEmailFrom();
     }
 
-
     public void assertAlertSend(AlertTypeEnum alertType, String mailTo, String mailFrom, String mailSubject,
                                 List<String> templateProperties) {
 
@@ -394,5 +425,5 @@ public class AlertServiceTest {
         assertEquals(templateProperties.size(), model.getModel().size());
     }
 
- */
+
 }
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/CRLVerifierServiceTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/CRLVerifierServiceTest.java
index aa42fcc9c3f028627ed7d2083f80f1df82618461..c4df3e45dc75fcd86ee48e04d3df99187c3f63e7 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/CRLVerifierServiceTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/CRLVerifierServiceTest.java
@@ -18,7 +18,6 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertThrows;
 
 
-@Ignore
 public class CRLVerifierServiceTest extends AbstractServiceIntegrationTest {
 
     @Rule
@@ -41,7 +40,7 @@ public class CRLVerifierServiceTest extends AbstractServiceIntegrationTest {
         crlVerifierServiceInstance = Mockito.spy(crlVerifierServiceInstance);
         configurationService = Mockito.spy(configurationService);
         ReflectionTestUtils.setField(crlVerifierServiceInstance, "configurationService", configurationService);
-        // force veifiction
+        // force verification
         Mockito.doReturn(true).when(configurationService).forceCRLValidation();
     }
 
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/CredentialServiceTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/CredentialServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..84f63355877067baaccbc2bce475dd7e3e2d8145
--- /dev/null
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/CredentialServiceTest.java
@@ -0,0 +1,59 @@
+package eu.europa.ec.edelivery.smp.services;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class CredentialServiceTest {
+
+
+
+
+    @Test
+    public void authenticateByUsernamePassword() {
+    }
+
+    @Test
+    public void authenticateByAuthenticationToken() {
+    }
+
+    @Test
+    public void isNotValidCredential() {
+    }
+
+    @Test
+    public void authenticateByCertificateToken() {
+    }
+
+    @Test
+    public void validateCertificatePolicyMatchLegacy() {
+    }
+
+    @Test
+    public void delayResponse() {
+    }
+
+    @Test
+    public void loginAttemptFailedAndThrowError() {
+    }
+
+    @Test
+    public void validateIfCredentialIsSuspended() {
+    }
+
+    @Test
+    public void getLoginMaxAttempts() {
+    }
+
+    @Test
+    public void getLoginSuspensionTimeInSeconds() {
+    }
+
+    @Test
+    public void getAlertBeforeUserSuspendedAlertMoment() {
+    }
+
+    @Test
+    public void getLoginFailDelayInMilliSeconds() {
+    }
+}
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/DomainServiceSMLTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/DomainServiceSMLTest.java
index 0eef2d42c4eed93c2c42d3a116100a09d1349834..9943f3786af7d9f892040ec76e3145d3849cce2c 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/DomainServiceSMLTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/DomainServiceSMLTest.java
@@ -56,7 +56,6 @@ import static org.mockito.Mockito.verify;
  * @author Joze Rihtarsic
  * @since 4.1
  */
-@Ignore
 @RunWith(SpringRunner.class)
 @ContextConfiguration(classes = {SmlIntegrationConfiguration.class,
         SmlConnector.class, DomainService.class})
@@ -186,7 +185,7 @@ public class DomainServiceSMLTest extends AbstractServiceIntegrationTest {
         verify(integrationMock.getParticipantManagmentClientMocks().get(2)).create(any());
         Mockito.verifyNoMoreInteractions(integrationMock.getParticipantManagmentClientMocks().toArray());
 
-         */
+
     }
 
     @Test
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/SMLIntegrationServiceNoSMLIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/SMLIntegrationServiceNoSMLIntegrationTest.java
index d4dca15eab5b2f87fa51143d84a50daa1561229a..c0b2d4eb6afb88cd81eb13a58c50a2929c76e24a 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/SMLIntegrationServiceNoSMLIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/SMLIntegrationServiceNoSMLIntegrationTest.java
@@ -82,8 +82,10 @@ public class SMLIntegrationServiceNoSMLIntegrationTest extends AbstractServiceIn
 
         expectedException.expect(SMPRuntimeException.class);
         expectedException.expectMessage("Configuration error: SML integration is not enabled!");
+        DBDomain testDomain01 = domainDao.getDomainByCode(TEST_DOMAIN_CODE_1).get();
+        domainDao.gety
         // when
-        testInstance.registerParticipant(TEST_SG_ID_1, TEST_SG_SCHEMA_1, TEST_DOMAIN_CODE_1);
+        testInstance.registerParticipant(TEST_SG_ID_1, TEST_SG_SCHEMA_1, testDomain01);
     }
 */
 
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/SMLIntegrationServiceTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/SMLIntegrationServiceTest.java
index 68019288b68685ab4be002f7ee6ddefb2a495441..b43eb6be525ca3aa6a2280d3608c8b4ebce8253c 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/SMLIntegrationServiceTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/SMLIntegrationServiceTest.java
@@ -49,7 +49,6 @@ import static org.mockito.Mockito.verify;
  * @author Joze Rihtarsic
  * @since 4.1
  */
-@Ignore
 @RunWith(SpringRunner.class)
 @ContextConfiguration(classes = {SmlIntegrationConfiguration.class,
         SMLIntegrationService.class})
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSignerMultipleDomainsIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSignerMultipleDomainsIntegrationTest.java
deleted file mode 100644
index 989ecd7afe5782e25ebd8419eac81b53d56517ad..0000000000000000000000000000000000000000
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSignerMultipleDomainsIntegrationTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2018 European Commission | CEF eDelivery
- *
- * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by the European Commission - subsequent versions of the EUPL (the "Licence");
- * You may not use this work except in compliance with the Licence.
- *
- * You may obtain a copy of the Licence attached in file: LICENCE-EUPL-v1.2.pdf
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the Licence is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the Licence for the specific language governing permissions and limitations under the Licence.
- */
-
-package eu.europa.ec.edelivery.smp.services;
-
-import eu.europa.ec.edelivery.smp.services.spi.SmpXmlSignatureService;
-import eu.europa.ec.edelivery.smp.services.ui.UIKeystoreService;
-import eu.europa.ec.edelivery.smp.testutil.SignatureUtil;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mockito;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.test.util.ReflectionTestUtils;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import java.io.File;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import static org.junit.Assert.assertEquals;
-import static org.apache.xml.security.signature.XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256;
-import static javax.xml.crypto.dsig.DigestMethod.SHA256;
-
-/**
- * Created by gutowpa on 24/01/2018.
- */
-@Ignore
-@RunWith(SpringRunner.class)
-@ContextConfiguration(classes = {SmpXmlSignatureService.class})
-public class ServiceMetadataSignerMultipleDomainsIntegrationTest extends  AbstractServiceIntegrationTest {
-
-    Path resourceDirectory = Paths.get("src", "test", "resources",  "keystores");
-
-    ConfigurationService configurationService = Mockito.mock(ConfigurationService.class);
-
-    @Autowired
-    UIKeystoreService uiKeystoreService;
-
-    @Autowired
-    private SmpXmlSignatureService signer;
-
-
-    @Before
-    public void setup(){
-        configurationService = Mockito.spy(configurationService);
-        ReflectionTestUtils.setField(uiKeystoreService,"configurationService",configurationService);
-        ReflectionTestUtils.setField(signer,"uiKeystoreService",uiKeystoreService);
-
-        // set keystore properties
-        File keystoreFile = new File(resourceDirectory.toFile(), "smp-keystore_multiple_domains.jks");
-        Mockito.doReturn( keystoreFile).when(configurationService).getKeystoreFile();
-        Mockito.doReturn( resourceDirectory.toFile()).when(configurationService).getSecurityFolder();
-        Mockito.doReturn("test123").when(configurationService).getKeystoreCredentialToken();
-        uiKeystoreService.refreshData();
-    }
-
-}
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/mail/MailServiceTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/mail/MailServiceTest.java
index 64e2fada17c79c56444f7ca308668286d9f606c4..3e63f9be2973bfcde58c77c61d294fd82106317f 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/mail/MailServiceTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/mail/MailServiceTest.java
@@ -14,7 +14,6 @@ import org.springframework.test.context.ContextConfiguration;
 
 import javax.mail.internet.MimeMessage;
 
-@Ignore
 @ContextConfiguration(classes = {MockAlertBeans.class, MailService.class})
 public class MailServiceTest extends AbstractServiceIntegrationTest {
 
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIKeystoreServiceTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIKeystoreServiceTest.java
index b8d715bef0c1a6b4da03a96f509ff48f1ce3c49b..7b5467d91a59b712049e533447a34eebcca19e4e 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIKeystoreServiceTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIKeystoreServiceTest.java
@@ -18,6 +18,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 import org.springframework.test.util.ReflectionTestUtils;
 
 import javax.net.ssl.KeyManager;
+import javax.security.auth.x500.X500Principal;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -29,9 +30,6 @@ import java.util.List;
 
 import static org.junit.Assert.*;
 
-;
-
-@Ignore
 @RunWith(SpringJUnit4ClassRunner.class)
 @ContextConfiguration(classes = {UIKeystoreService.class, ConversionTestConfig.class,
         ConfigurationService.class})
@@ -39,6 +37,9 @@ public class UIKeystoreServiceTest extends AbstractServiceIntegrationTest {
 
     public static final String S_ALIAS = "single_domain_key";
 
+
+    public static final X500Principal CERT_SUBJECT_X500PRINCIPAL = new X500Principal("CN=SMP Mock Services, OU=DIGIT, O=European Commision, C=BE");
+
     @Rule
     public ExpectedException expectedEx = ExpectedException.none();
 
@@ -88,7 +89,7 @@ public class UIKeystoreServiceTest extends AbstractServiceIntegrationTest {
         X509Certificate certificate = testInstance.getCert(S_ALIAS);
         // then
         assertNotNull(certificate);
-        assertEquals("C=BE,O=European Commision,OU=DIGIT,CN=SMP Mock Services", certificate.getSubjectDN().getName());
+        assertEquals(CERT_SUBJECT_X500PRINCIPAL, certificate.getSubjectX500Principal());
     }
 
     @Test
@@ -108,7 +109,8 @@ public class UIKeystoreServiceTest extends AbstractServiceIntegrationTest {
         X509Certificate certificate = testInstance.getCert(null);
         // then
         assertNotNull(certificate);
-        assertEquals("C=BE,O=European Commision,OU=DIGIT,CN=SMP Mock Services", certificate.getSubjectDN().getName());
+
+        assertEquals(CERT_SUBJECT_X500PRINCIPAL, certificate.getSubjectX500Principal());
     }
 
     @Test
@@ -130,7 +132,7 @@ public class UIKeystoreServiceTest extends AbstractServiceIntegrationTest {
         X509Certificate certificate = testInstance.getCert(S_ALIAS);
         // then
         assertNotNull(certificate);
-        assertEquals("C=BE,O=European Commision,OU=DIGIT,CN=SMP Mock Services", certificate.getSubjectDN().getName());
+        assertEquals(CERT_SUBJECT_X500PRINCIPAL, certificate.getSubjectX500Principal());
     }
 
     @Test
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupSearchServiceTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupSearchServiceTest.java
index c1a1eb5d44f12624e0dc89c90a3da89d1913ee62..96ec27e89c67dd93f01aa80e1f67d35a12548283 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupSearchServiceTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupSearchServiceTest.java
@@ -17,8 +17,8 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 
 
-@Ignore
 @ContextConfiguration(classes = {UIServiceGroupSearchService.class, UIServiceMetadataService.class})
+@Ignore
 public class UIServiceGroupSearchServiceTest extends AbstractServiceIntegrationTest {
 
     @Autowired
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UITruststoreServiceIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UITruststoreServiceIntegrationTest.java
index a8c02daf03fcd0e82df8a65a9c0fddbcc3cfb2e7..aff77d50b918b23e217e4899ea84708d2451e26f 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UITruststoreServiceIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UITruststoreServiceIntegrationTest.java
@@ -35,7 +35,6 @@ import java.util.*;
 import static org.hamcrest.CoreMatchers.containsString;
 import static org.junit.Assert.*;
 
-@Ignore
 @RunWith(SpringJUnit4ClassRunner.class)
 public class UITruststoreServiceIntegrationTest extends AbstractServiceIntegrationTest {
 
@@ -300,10 +299,9 @@ public class UITruststoreServiceIntegrationTest extends AbstractServiceIntegrati
                 OffsetDateTime.now().plusDays(1),
                 Collections.emptyList());
         // when
-        CertificateNotYetValidException result = assertThrows(CertificateNotYetValidException.class, () ->
+        assertThrows(CertificateNotYetValidException.class, () ->
                 testInstance.checkFullCertificateValidity(certificate));
-        //then
-        MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString("certificate not valid till"));
+
     }
 
     @Test
@@ -318,10 +316,9 @@ public class UITruststoreServiceIntegrationTest extends AbstractServiceIntegrati
                 Collections.emptyList());
 
         // when
-        CertificateExpiredException result = assertThrows(CertificateExpiredException.class, () ->
+        assertThrows(CertificateExpiredException.class, () ->
                 testInstance.checkFullCertificateValidity(certificate));
-        //then
-        MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString("certificate expired"));
+
     }
 
     @Test
@@ -454,7 +451,7 @@ public class UITruststoreServiceIntegrationTest extends AbstractServiceIntegrati
         String alias = testInstance.createAliasFromCert(certificate, null);
 
         // then
-        assertEquals("SMP Test", alias);
+        assertEquals("smp test", alias);
     }
 
 
@@ -467,7 +464,7 @@ public class UITruststoreServiceIntegrationTest extends AbstractServiceIntegrati
         String alias = testInstance.createAliasFromCert(certificate, null);
 
         // then
-        assertEquals("SMP Test", alias);
+        assertEquals("smp test", alias);
     }
 
     @Test
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIUserServiceIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIUserServiceIntegrationTest.java
index 0a8f42fbd8465ad8d33dad5b439f6eee285eef8e..5a39d8a76c697a14cfc1d8b7d4078d7f380dc545 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIUserServiceIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIUserServiceIntegrationTest.java
@@ -3,13 +3,32 @@ package eu.europa.ec.edelivery.smp.services.ui;
 
 import eu.europa.ec.edelivery.smp.config.ConversionTestConfig;
 import eu.europa.ec.edelivery.smp.data.dao.ResourceDao;
+import eu.europa.ec.edelivery.smp.data.enums.ApplicationRoleType;
+import eu.europa.ec.edelivery.smp.data.model.user.DBCredential;
+import eu.europa.ec.edelivery.smp.data.model.user.DBUser;
+import eu.europa.ec.edelivery.smp.data.ui.ServiceResult;
+import eu.europa.ec.edelivery.smp.data.ui.UserRO;
+import eu.europa.ec.edelivery.smp.data.ui.enums.EntityROStatus;
+import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException;
 import eu.europa.ec.edelivery.smp.services.AbstractServiceIntegrationTest;
+import eu.europa.ec.edelivery.smp.testutil.TestDBUtils;
+import org.hamcrest.CoreMatchers;
+import org.hamcrest.MatcherAssert;
+import org.junit.Assert;
 import org.junit.Ignore;
 import org.junit.Rule;
+import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.authentication.BadCredentialsException;
+import org.springframework.security.crypto.bcrypt.BCrypt;
 import org.springframework.test.context.ContextConfiguration;
 
+import java.util.Optional;
+import java.util.UUID;
+
+import static org.junit.Assert.*;
+
 
 /**
  * Purpose of class is to test ServiceGroupService base methods
@@ -18,7 +37,6 @@ import org.springframework.test.context.ContextConfiguration;
  * @since 4.1
  */
 @ContextConfiguration(classes = {UIUserService.class, ConversionTestConfig.class})
-@Ignore
 public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest {
     @Rule
     public ExpectedException expectedExeption = ExpectedException.none();
@@ -26,12 +44,10 @@ public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest
     protected UIUserService testInstance;
     @Autowired
     protected ResourceDao serviceGroupDao;
-/*
 
     protected void insertDataObjects(int size) {
         for (int i = 0; i < size; i++) {
             DBUser d = TestDBUtils.createDBUserByUsername("user" + i);
-            d.setPassword(BCrypt.hashpw(d.getPassword(), BCrypt.gensalt()));
             userDao.persistFlushDetach(d);
         }
     }
@@ -73,171 +89,35 @@ public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest
         assertNotNull(res.getServiceEntities().get(0).getUserId());
         assertNotNull(res.getServiceEntities().get(0).getUsername());
         assertNotNull(res.getServiceEntities().get(0).getEmailAddress());
-        assertNull(res.getServiceEntities().get(0).getPassword()); // Service list must not return passwords
         assertNotNull(res.getServiceEntities().get(0).getRole());
     }
 
     @Test
-    public void testAddUserWithoutCertificate() {
+    public void testAddUser() {
         // given
         insertDataObjects(15);
         long iCnt = userDao.getDataListCount(null);
 
         UserRO user = new UserRO();
-        user.setPassword(UUID.randomUUID().toString());
         user.setUsername(UUID.randomUUID().toString());
         user.setEmailAddress(UUID.randomUUID().toString());
-        user.setRole("ROLE");
+        user.setRole(ApplicationRoleType.USER);
         user.setStatus(EntityROStatus.NEW.getStatusNumber());
 
-
-
         //when
-        testInstance.updateUserList(Collections.singletonList(user), null);
+        testInstance.adminCreateUserData(user);
 
         // then
         long iCntNew = userDao.getDataListCount(null);
         assertEquals(iCnt + 1, iCntNew);
         Optional<DBUser> oUsr = userDao.findUserByUsername(user.getUsername());
         assertTrue(oUsr.isPresent());
-        assertTrue(BCrypt.checkpw(user.getPassword(), oUsr.get().getPassword())); // password must be encrypted
         assertEquals(user.getUsername(), oUsr.get().getUsername());
-        assertEquals(user.getRole(), oUsr.get().getRole());
+        assertEquals(user.getRole(), oUsr.get().getApplicationRole());
         assertEquals(user.getEmailAddress(), oUsr.get().getEmailAddress());
-        assertNull(oUsr.get().getCertificate());
     }
 
-    @Test
-    public void testAddUserWithCertificate() {
-        // given
-        insertDataObjects(15);
-        long iCnt = userDao.getDataListCount(null);
-
-        Calendar calTo = Calendar.getInstance();
-        calTo.add(Calendar.YEAR, 1);
-        Date now = Calendar.getInstance().getTime();
-        Date future = calTo.getTime();
-
-        UserRO user = new UserRO();
-        user.setPassword(UUID.randomUUID().toString());
-        user.setUsername(UUID.randomUUID().toString());
-        user.setEmailAddress(UUID.randomUUID().toString());
-        user.setRole("ROLE");
-        CertificateRO cert = new CertificateRO();
-        cert.setSubject(UUID.randomUUID().toString());
-        cert.setIssuer(UUID.randomUUID().toString());
-        cert.setSerialNumber(UUID.randomUUID().toString());
-        cert.setCertificateId(UUID.randomUUID().toString());
-        cert.setValidFrom(now);
-        cert.setValidTo(future);
-        user.setCertificate(cert);
-
-        user.setStatus(EntityROStatus.NEW.getStatusNumber());
-
-        //when
-        testInstance.updateUserList(Collections.singletonList(user), null);
-
-        // then
-        long iCntNew = userDao.getDataListCount(null);
-        assertEquals(iCnt + 1, iCntNew);
-        Optional<DBUser> oUsr = userDao.findUserByUsername(user.getUsername());
-        assertTrue(oUsr.isPresent());
-        assertTrue(BCrypt.checkpw(user.getPassword(), oUsr.get().getPassword())); // password must be encrypted
-        assertEquals(user.getUsername(), oUsr.get().getUsername());
-        assertEquals(user.getRole(), oUsr.get().getRole());
-        assertEquals(user.getEmailAddress(), oUsr.get().getEmailAddress());
-        assertNotNull(oUsr.get().getCertificate());
-        assertEquals(cert.getCertificateId(), cert.getCertificateId());
-        assertEquals(cert.getSubject(), cert.getSubject());
-        assertEquals(cert.getIssuer(), cert.getIssuer());
-        assertEquals(cert.getSerialNumber(), cert.getSerialNumber());
-        assertEquals(now, cert.getValidFrom());
-        assertEquals(future, cert.getValidTo());
-    }
-
-    @Test
-    public void testAddUserWithOnlyCertificate() {
-        // given
-        insertDataObjects(15);
-        long iCnt = userDao.getDataListCount(null);
-
-        Calendar calTo = Calendar.getInstance();
-        calTo.add(Calendar.YEAR, 1);
-        Date now = Calendar.getInstance().getTime();
-        Date future = calTo.getTime();
-
-        UserRO user = new UserRO();
-
-        user.setRole("ROLE");
-        CertificateRO cert = new CertificateRO();
-        cert.setSubject(UUID.randomUUID().toString());
-        cert.setIssuer(UUID.randomUUID().toString());
-        cert.setSerialNumber(UUID.randomUUID().toString());
-        cert.setCertificateId(UUID.randomUUID().toString());
-        cert.setValidFrom(now);
-        cert.setValidTo(future);
-        user.setCertificate(cert);
-
-        user.setStatus(EntityROStatus.NEW.getStatusNumber());
-
-        //when
-        testInstance.updateUserList(Collections.singletonList(user), null);
-
-        // then
-        long iCntNew = userDao.getDataListCount(null);
-        assertEquals(iCnt + 1, iCntNew);
-        Optional<DBUser> oUsr = userDao.findUserByIdentifier(user.getCertificate().getCertificateId());
-        assertTrue(oUsr.isPresent());
-        assertEquals(user.getRole(), oUsr.get().getRole());
-        assertEquals(user.getEmailAddress(), oUsr.get().getEmailAddress());
-        assertNotNull(oUsr.get().getCertificate());
-        assertEquals(cert.getCertificateId(), cert.getCertificateId());
-        assertEquals(cert.getSubject(), cert.getSubject());
-        assertEquals(cert.getIssuer(), cert.getIssuer());
-        assertEquals(cert.getSerialNumber(), cert.getSerialNumber());
-        assertEquals(now, cert.getValidFrom());
-        assertEquals(future, cert.getValidTo());
-    }
-
-
-    @Test
-    public void testUserRemoveCertificate() {
-        // given
-        OffsetDateTime now = OffsetDateTime.now().truncatedTo(ChronoUnit.MINUTES);
-        OffsetDateTime future = now.plusYears(1);
-
-        DBUser user = new DBUser();
-        user.setPassword(UUID.randomUUID().toString());
-        user.setUsername(UUID.randomUUID().toString());
-        user.setEmailAddress(UUID.randomUUID().toString());
-        user.setRole("ROLE");
-        DBCertificate cert = new DBCertificate();
-        cert.setSubject(UUID.randomUUID().toString());
-        cert.setIssuer(UUID.randomUUID().toString());
-        cert.setSerialNumber(UUID.randomUUID().toString());
-        cert.setCertificateId(UUID.randomUUID().toString());
-        cert.setValidFrom(now);
-        cert.setValidTo(future);
-        user.setCertificate(cert);
-        userDao.persistFlushDetach(user);
-        ServiceResult<UserRO> urTest = testInstance.getTableList(-1, -1, null, null, null);
-        assertEquals(1, urTest.getServiceEntities().size());
-        UserRO userRO = urTest.getServiceEntities().get(0);
-        assertNotNull(userRO.getCertificate());
-
-        //when
-        userRO.setCertificate(null);
-        userRO.setStatus(EntityROStatus.UPDATED.getStatusNumber());
-
-        testInstance.updateUserList(Collections.singletonList(userRO), null);
-
-        // then
-        ServiceResult<UserRO> res = testInstance.getTableList(-1, -1, null, null, null);
-        assertEquals(1, urTest.getServiceEntities().size());
-        UserRO userResRO = urTest.getServiceEntities().get(0);
-        assertNull(userResRO.getCertificate());
 
-    }
 
     @Test
     public void testDeleteUser() {
@@ -247,42 +127,17 @@ public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest
         assertEquals(15, urTest.getServiceEntities().size());
 
         UserRO user = urTest.getServiceEntities().get(0);
-        user.setStatus(EntityROStatus.REMOVE.getStatusNumber());
+        Optional<DBUser> rmUsr = userDao.findUserByUsername(user.getUsername());
 
         //when
-        testInstance.updateUserList(Collections.singletonList(user), null);
+        testInstance.adminDeleteUserData(rmUsr.get().getId());
 
         // then
         long iCntNew = userDao.getDataListCount(null);
-        Optional<DBUser> rmUsr = userDao.findUserByUsername(user.getUsername());
+        Optional<DBUser> rmUsr2 = userDao.findUserByUsername(user.getUsername());
 
         assertEquals(urTest.getServiceEntities().size() - 1, iCntNew);
-        assertFalse(rmUsr.isPresent());
-    }
-
-    @Test
-    @Transactional
-    public void testGenerateAccessTokenForUser() {
-        String userPassword = UUID.randomUUID().toString();
-        DBUser user = new DBUser();
-        user.setPassword(BCrypt.hashpw(userPassword, BCrypt.gensalt()));
-        user.setUsername(UUID.randomUUID().toString());
-        user.setEmailAddress(UUID.randomUUID().toString());
-        user.setRole("ROLE");
-        userDao.persistFlushDetach(user);
-
-
-        AccessTokenRO token = testInstance.generateAccessTokenForUser(user.getId(), user.getId(), userPassword);
-
-        Optional<DBUser> optResult = userDao.findUserByAuthenticationToken(token.getIdentifier());
-        assertTrue(optResult.isPresent());
-        assertNotNull(token);
-        DBUser result = optResult.get();
-        assertEquals(user.getUsername(), result.getUsername());
-        assertEquals(result.getAccessTokenIdentifier(), token.getIdentifier());
-        assertTrue(BCrypt.checkpw(token.getValue(), result.getAccessToken()));
-        assertNotNull(result.getAccessTokenExpireOn());
-        assertNotNull(result.getAccessTokenGeneratedOn());
+        assertFalse(rmUsr2.isPresent());
     }
 
     @Test
@@ -314,152 +169,60 @@ public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest
 
     @Test
     public void testUpdateUserPasswordUserNotAuthorized() {
-        String userPassword = UUID.randomUUID().toString();
-        DBUser user = new DBUser();
-        user.setPassword(BCrypt.hashpw(userPassword, BCrypt.gensalt()));
-        user.setUsername(UUID.randomUUID().toString());
-        user.setEmailAddress(UUID.randomUUID().toString());
-        user.setRole("ROLE");
+
+
+        DBUser user = TestDBUtils.createDBUserByUsername(UUID.randomUUID().toString());
+        DBCredential credential = TestDBUtils.createDBCredentialForUser(user, null, null, null);
+        credential.setValue(BCrypt.hashpw("userPassword", BCrypt.gensalt()));
         userDao.persistFlushDetach(user);
+        credentialDao.persistFlushDetach(credential);
+
 
         long authorizedUserId = user.getId();
-        long userToUpdateId = 1L;
         String authorizedPassword = "oldPass";
         String newPassword = "TTTTtttt1111$$$$$";
 
         BadCredentialsException result = assertThrows(BadCredentialsException.class,
-                () -> testInstance.updateUserPassword(authorizedUserId, userToUpdateId, authorizedPassword, newPassword));
+                () -> testInstance.updateUserPassword(authorizedUserId, authorizedUserId, authorizedPassword, newPassword));
 
-        MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString("Password change failed; Invalid current password!"));
+        MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString("Password change failed; Invalid authorization password!"));
     }
 
     @Test
     public void testUpdateUserPasswordOK() {
-        String userPassword = UUID.randomUUID().toString();
-        DBUser user = new DBUser();
-        user.setPassword(BCrypt.hashpw(userPassword, BCrypt.gensalt()));
-        user.setUsername(UUID.randomUUID().toString());
-        user.setEmailAddress(UUID.randomUUID().toString());
-        user.setRole("ROLE");
+        DBUser user = TestDBUtils.createDBUserByUsername(UUID.randomUUID().toString());
+        DBCredential credential = TestDBUtils.createDBCredentialForUser(user, null, null, null);
+        credential.setValue(BCrypt.hashpw("userPassword", BCrypt.gensalt()));
         userDao.persistFlushDetach(user);
+        credentialDao.persistFlushDetach(credential);
 
         long authorizedUserId = user.getId();
         long userToUpdateId = user.getId();
-        String authorizedPassword = userPassword;
+        String authorizedPassword = "userPassword";
         String newPassword = "TTTTtttt1111$$$$$";
 
         testInstance.updateUserPassword(authorizedUserId, userToUpdateId, authorizedPassword, newPassword);
     }
 
     @Test
-    public void testUpdateUserdataOK() {
-        String userPassword = UUID.randomUUID().toString();
-        DBUser user = new DBUser();
-        user.setPassword(BCrypt.hashpw(userPassword, BCrypt.gensalt()));
-        user.setUsername(UUID.randomUUID().toString());
-        user.setEmailAddress(UUID.randomUUID().toString());
-        user.setRole("ROLE");
+    public void testAdminUpdateUserdataOK() {
+        DBUser user = TestDBUtils.createDBUserByUsername(UUID.randomUUID().toString());
         userDao.persistFlushDetach(user);
 
         UserRO userRO = new UserRO();
         userRO.setEmailAddress(UUID.randomUUID().toString());
-        userRO.setUsername(UUID.randomUUID().toString());
-        userRO.setAccessTokenId(UUID.randomUUID().toString());
-        userRO.setRole(UUID.randomUUID().toString());
+        userRO.setFullName(UUID.randomUUID().toString());
+        userRO.setRole(ApplicationRoleType.SYSTEM_ADMIN);
 
-        testInstance.updateUserdata(user.getId(), userRO);
+        testInstance.adminUpdateUserData(user.getId(), userRO);
 
         DBUser changedUser = userDao.findUser(user.getId()).get();
         // fields must not change
-        assertEquals(user.getUsername(), changedUser.getUsername());
-        assertEquals(user.getAccessToken(), changedUser.getAccessToken());
-        assertEquals(user.getRole(), changedUser.getRole());
+        assertEquals(userRO.getRole(), changedUser.getApplicationRole());
+        assertEquals(userRO.getEmailAddress(), changedUser.getEmailAddress());
+        assertEquals(userRO.getFullName(), changedUser.getFullName());
         // changed
         assertEquals(userRO.getEmailAddress(), changedUser.getEmailAddress());
     }
 
-    @Test
-    public void testUpdateUserdataCertificateOK() throws Exception {
-        String certSubject = "CN=" + UUID.randomUUID().toString() + ",O=eDelivery,C=EU";
-        String userPassword = UUID.randomUUID().toString();
-        DBUser user = new DBUser();
-        user.setPassword(BCrypt.hashpw(userPassword, BCrypt.gensalt()));
-        user.setUsername(UUID.randomUUID().toString());
-        user.setEmailAddress(UUID.randomUUID().toString());
-        user.setRole("ROLE");
-        userDao.persistFlushDetach(user);
-
-        CertificateRO certificateRO = TestROUtils.createCertificateRO(certSubject, BigInteger.TEN);
-        UserRO userRO = new UserRO();
-        userRO.setCertificate(certificateRO);
-
-        testInstance.updateUserdata(user.getId(), userRO);
-
-
-        DBUser changedUser = userDao.findUser(user.getId()).get();
-        // fields must not change
-        assertNotNull(changedUser.getCertificate());
-        assertNotNull(changedUser.getCertificate().getPemEncoding());
-        assertNotNull(certificateRO.getCertificateId(), changedUser.getCertificate().getCertificateId());
-        assertNotNull(certificateRO.getSubject(), changedUser.getCertificate().getSubject());
-        assertNotNull(certificateRO.getIssuer(), changedUser.getCertificate().getIssuer());
-        assertNotNull(certificateRO.getSerialNumber(), changedUser.getCertificate().getSerialNumber());
-    }
-
-
-    @Test
-    public void testUpdateUserdataCertificateWithExistingCertificateOK() throws Exception {
-        String certSubject = "CN=" + UUID.randomUUID().toString() + ",O=eDelivery,C=EU";
-        DBUser user = TestDBUtils.createDBUserByCertificate(TestConstants.USER_CERT_2);
-        userDao.persistFlushDetach(user);
-
-        CertificateRO certificateRO = TestROUtils.createCertificateRO(certSubject, BigInteger.TEN);
-        UserRO userRO = new UserRO();
-        userRO.setCertificate(certificateRO);
-
-        testInstance.updateUserdata(user.getId(), userRO);
-
-
-        DBUser changedUser = userDao.findUser(user.getId()).get();
-        // fields must not change
-        assertNotNull(changedUser.getCertificate());
-        assertNotNull(changedUser.getCertificate().getPemEncoding());
-        assertNotNull(certificateRO.getCertificateId(), changedUser.getCertificate().getCertificateId());
-        assertNotNull(certificateRO.getSubject(), changedUser.getCertificate().getSubject());
-        assertNotNull(certificateRO.getIssuer(), changedUser.getCertificate().getIssuer());
-        assertNotNull(certificateRO.getSerialNumber(), changedUser.getCertificate().getSerialNumber());
-    }
-
-    @Test
-    public void testValidateDeleteRequest() throws Exception {
-        String username1 = "test-user-delete-01";
-        String username2 = "test-user-delete-02";
-
-        DBUser user1 = TestDBUtils.createDBUser(username1);
-        DBUser user2 = TestDBUtils.createDBUser(username2);
-        userDao.persistFlushDetach(user1);
-        userDao.persistFlushDetach(user2);
-
-        DBDomain d = new DBDomain();
-        d.setDomainCode(TEST_DOMAIN_CODE_1);
-        d.setSmlSubdomain(TEST_SML_SUBDOMAIN_CODE_1);
-        domainDao.persistFlushDetach(d);
-
-        DBResource sg = TestDBUtils.createDBServiceGroup(TEST_SG_ID_1, TEST_SG_SCHEMA_1);
-        sg.getMembers().add(new DBResourceMember(sg, user2));
-        sg.addDomain(d);
-
-        serviceGroupDao.persistFlushDetach(sg);
-        DeleteEntityValidation validation = new DeleteEntityValidation();
-        validation.getListIds().add(user1.getId()+"");
-        validation.getListIds().add(user2.getId()+"");
-
-        DeleteEntityValidation result = testInstance.validateDeleteRequest(validation);
-
-        assertEquals(1, result.getListDeleteNotPermitedIds().size());
-        assertEquals(user2.getId()+"",  result.getListDeleteNotPermitedIds().get(0));
-        assertEquals(2, result.getListIds().size());
-    }
-
- */
 }
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/sml/SmlConnectorParticipantTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/sml/SmlConnectorParticipantTest.java
index 7651f376b434d7eaa8ed95ef77f131f6fcc9d2e3..3fdbcef560e8a9660809b370147b50d89a863816 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/sml/SmlConnectorParticipantTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/sml/SmlConnectorParticipantTest.java
@@ -21,11 +21,10 @@ import eu.europa.ec.edelivery.smp.config.SmlIntegrationConfiguration;
 import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException;
 import eu.europa.ec.edelivery.smp.services.AbstractServiceIntegrationTest;
 import eu.europa.ec.edelivery.smp.services.ConfigurationService;
+import org.hamcrest.CoreMatchers;
+import org.hamcrest.MatcherAssert;
 import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Rule;
 import org.junit.Test;
-import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
 import org.mockito.Mockito;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -42,13 +41,10 @@ import static org.mockito.Mockito.verify;
  * Created by JRC
  * since 4.1.
  */
-@Ignore
 @RunWith(SpringRunner.class)
 @ContextConfiguration(classes = {SmlConnector.class, SmlIntegrationConfiguration.class})
 public class SmlConnectorParticipantTest extends AbstractServiceIntegrationTest {
 
-    @Rule
-    public ExpectedException expectedException = ExpectedException.none();
 
     @Autowired
     protected ConfigurationService configurationService;
@@ -67,7 +63,7 @@ public class SmlConnectorParticipantTest extends AbstractServiceIntegrationTest
 
 
         configurationService = Mockito.spy(configurationService);
-        ReflectionTestUtils.setField(testInstance,"configurationService",configurationService);
+        ReflectionTestUtils.setField(testInstance, "configurationService", configurationService);
         Mockito.doReturn(true).when(configurationService).isSMLIntegrationEnabled();
         DEFAULT_DOMAIN.setSmlRegistered(true);
         mockSml.reset();
@@ -100,22 +96,21 @@ public class SmlConnectorParticipantTest extends AbstractServiceIntegrationTest
     }
 
     @Test
-    public void testRegisterInDnsUnknownException() throws UnauthorizedFault, NotFoundFault, InternalErrorFault, BadRequestFault {
+    public void testRegisterInDnsUnknownException() {
         //when
         String message = "something unexpected";
         Exception ex = new Exception(message);
         mockSml.setThrowException(ex);
-        expectedException.expectMessage(message);
-        expectedException.expect(SMPRuntimeException.class);
 
-        testInstance.registerInDns(PARTICIPANT_ID, DEFAULT_DOMAIN, null);
+        SMPRuntimeException result = assertThrows(SMPRuntimeException.class, () -> testInstance.registerInDns(PARTICIPANT_ID, DEFAULT_DOMAIN, null));
+        MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString(message));
     }
 
     @Test
     public void testRegisterInDnsNewClientIsAlwaysCreated() throws UnauthorizedFault, NotFoundFault, InternalErrorFault, BadRequestFault {
         //when
-        testInstance.registerInDns(PARTICIPANT_ID, DEFAULT_DOMAIN , null );
-        testInstance.registerInDns(PARTICIPANT_ID, DEFAULT_DOMAIN , null);
+        testInstance.registerInDns(PARTICIPANT_ID, DEFAULT_DOMAIN, null);
+        testInstance.registerInDns(PARTICIPANT_ID, DEFAULT_DOMAIN, null);
 
         //then
         assertEquals(2, mockSml.getParticipantManagmentClientMocks().size());
@@ -154,10 +149,10 @@ public class SmlConnectorParticipantTest extends AbstractServiceIntegrationTest
         //when
         BadRequestFault ex = new BadRequestFault(ERROR_UNEXPECTED_MESSAGE);
         mockSml.setThrowException(ex);
-        expectedException.expectMessage(ERROR_UNEXPECTED_MESSAGE);
-        expectedException.expect(SMPRuntimeException.class);
 
-        testInstance.unregisterFromDns(PARTICIPANT_ID, DEFAULT_DOMAIN);
+        SMPRuntimeException result = assertThrows(SMPRuntimeException.class, () -> testInstance.unregisterFromDns(PARTICIPANT_ID, DEFAULT_DOMAIN));
+        MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString(ERROR_UNEXPECTED_MESSAGE));
+
     }
 
     @Test
@@ -166,10 +161,9 @@ public class SmlConnectorParticipantTest extends AbstractServiceIntegrationTest
         String message = "something unexpected";
         Exception ex = new Exception(message);
         mockSml.setThrowException(ex);
-        expectedException.expectMessage(message);
-        expectedException.expect(SMPRuntimeException.class);
 
-        testInstance.unregisterFromDns(PARTICIPANT_ID, DEFAULT_DOMAIN);
+        SMPRuntimeException result = assertThrows(SMPRuntimeException.class, () -> testInstance.unregisterFromDns(PARTICIPANT_ID, DEFAULT_DOMAIN));
+        MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString(message));
     }
 
     @Test
@@ -218,22 +212,22 @@ public class SmlConnectorParticipantTest extends AbstractServiceIntegrationTest
     @Test
     public void testProcessSMLErrorMessageBadRequestFaultFailed() {
 
-        expectedException.expectMessage(ERROR_UNEXPECTED_MESSAGE);
-        expectedException.expect(SMPRuntimeException.class);
         BadRequestFault ex = new BadRequestFault(ERROR_UNEXPECTED_MESSAGE);
 
-        testInstance.processSMLErrorMessage(ex, PARTICIPANT_ID);
+        SMPRuntimeException result = assertThrows(SMPRuntimeException.class, () -> testInstance.processSMLErrorMessage(ex, PARTICIPANT_ID));
+        MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString(ERROR_UNEXPECTED_MESSAGE));
     }
 
 
     @Test
     public void testProcessSMLErrorMessageNoFoundFaultFailed() {
 
-        expectedException.expectMessage(ERROR_UNEXPECTED_MESSAGE);
-        expectedException.expect(SMPRuntimeException.class);
         NotFoundFault ex = new NotFoundFault(ERROR_UNEXPECTED_MESSAGE);
 
-        testInstance.processSMLErrorMessage(ex, PARTICIPANT_ID);
+        SMPRuntimeException result = assertThrows(SMPRuntimeException.class, () -> testInstance.processSMLErrorMessage(ex, PARTICIPANT_ID));
+        MatcherAssert.assertThat(result.getMessage(), CoreMatchers.containsString(ERROR_UNEXPECTED_MESSAGE));
+
+
     }
 
     @Test
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/sml/SmlConnectorTestConstants.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/sml/SmlConnectorTestConstants.java
index 6674c0849e1851ef19be64749c24d51a71bf535e..2cc419692d77904a30c5aa7faf142277aaa0c1de 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/sml/SmlConnectorTestConstants.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/sml/SmlConnectorTestConstants.java
@@ -6,8 +6,8 @@ import eu.europa.ec.edelivery.smp.identifiers.Identifier;
 
 
 public class SmlConnectorTestConstants {
-    //protected static final Identifier PARTICIPANT_ID = new Identifier("sample:value", "sample:scheme");
-    protected static final Identifier PARTICIPANT_ID = null;
+
+    protected static final Identifier PARTICIPANT_ID =  new Identifier("sample:value", "sample:scheme");
     protected static final DBDomain DEFAULT_DOMAIN;
 
     static {
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/testutil/TestDBUtils.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/testutil/TestDBUtils.java
index 01c91dcd81b22512421b3c9b044442d7642a57a7..7c043a5d6acaf8a07c76fa1d774856896aa14404 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/testutil/TestDBUtils.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/testutil/TestDBUtils.java
@@ -1,5 +1,6 @@
 package eu.europa.ec.edelivery.smp.testutil;
 
+import eu.europa.ec.edelivery.smp.data.enums.ApplicationRoleType;
 import eu.europa.ec.edelivery.smp.data.enums.CredentialTargetType;
 import eu.europa.ec.edelivery.smp.data.enums.CredentialType;
 import eu.europa.ec.edelivery.smp.data.enums.VisibilityType;
@@ -265,6 +266,7 @@ public class TestDBUtils {
         dbuser.setUsername(userName);
         dbuser.setEmailAddress(userName + "@test.eu");
         dbuser.setActive(true);
+        dbuser.setApplicationRole(ApplicationRoleType.USER);
         return dbuser;
     }