diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ExtensionConverter.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ExtensionConverter.java
index 0a40e3176581df5fba0def1c2071966c284d2a4c..423875c0e5b3b7be0c36f59cf2c3a555043bdb12 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ExtensionConverter.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ExtensionConverter.java
@@ -17,7 +17,6 @@ import eu.europa.ec.edelivery.smp.logging.SMPLogger;
 import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory;
 import org.apache.cxf.staxutils.PrettyPrintXMLStreamWriter;
 import org.oasis_open.docs.bdxr.ns.smp._2016._05.ExtensionType;
-import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceGroup;
 
 import javax.xml.bind.*;
 import javax.xml.bind.annotation.XmlElement;
@@ -27,12 +26,13 @@ import javax.xml.stream.XMLOutputFactory;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 import javax.xml.transform.stream.StreamSource;
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.Collections;
 import java.util.List;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
-
 /**
  * Created by migueti on 13/02/2017.
  */
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ServiceGroupConverter.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ServiceGroupConverter.java
index bc590f32c4a75b53b3907097b47afb89df22084a..0dbfa2a37616f4b94787b519ea9e81a26ec95c26 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ServiceGroupConverter.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ServiceGroupConverter.java
@@ -13,13 +13,16 @@
 
 package eu.europa.ec.edelivery.smp.conversion;
 
-import eu.europa.ec.edelivery.smp.exceptions.*;
 import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup;
+import eu.europa.ec.edelivery.smp.exceptions.ErrorCode;
+import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException;
 import eu.europa.ec.edelivery.smp.logging.SMPLogger;
 import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.exception.ExceptionUtils;
-import org.oasis_open.docs.bdxr.ns.smp._2016._05.*;
+import org.oasis_open.docs.bdxr.ns.smp._2016._05.ExtensionType;
+import org.oasis_open.docs.bdxr.ns.smp._2016._05.ParticipantIdentifierType;
+import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceGroup;
+import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceMetadataReferenceCollectionType;
 import org.w3c.dom.Document;
 import org.xml.sax.SAXException;
 
@@ -33,12 +36,10 @@ import javax.xml.stream.XMLStreamException;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.List;
 
 import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.INVALID_EXTENSION_FOR_SG;
-import static eu.europa.ec.edelivery.smp.logging.SMPMessageCode.BUS_INVALID_XML;
 import static java.nio.charset.StandardCharsets.UTF_8;
 
 /**
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ServiceMetadataConverter.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ServiceMetadataConverter.java
index 14fd3977988c8956310ceac7ad7db5125cf53401..41db2fbdbb626724075d11762b0654a9297f2ae0 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ServiceMetadataConverter.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/conversion/ServiceMetadataConverter.java
@@ -13,17 +13,11 @@
 
 package eu.europa.ec.edelivery.smp.conversion;
 
-;
-
 import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException;
 import eu.europa.ec.edelivery.smp.logging.SMPLogger;
 import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory;
-import eu.europa.ec.edelivery.smp.services.ServiceGroupService;
 import org.apache.commons.lang3.exception.ExceptionUtils;
-import org.oasis_open.docs.bdxr.ns.smp._2016._05.DocumentIdentifier;
-import org.oasis_open.docs.bdxr.ns.smp._2016._05.ParticipantIdentifierType;
 import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceMetadata;
-import org.slf4j.Logger;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 import org.xml.sax.SAXException;
@@ -41,9 +35,9 @@ import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 import java.io.*;
 
-import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.INVALID_EXTENSION_FOR_SG;
 import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.INVALID_SMD_XML;
-import static java.nio.charset.StandardCharsets.UTF_8;
+
+;
 
 /**
  * Created by gutowpa on 05/01/2017.
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/BaseDao.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/BaseDao.java
index 558edbed1475dc38b5fd65b034fb695f2c366c34..40515f875f63a9c0a9453c733e318ef0fb67b80c 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/BaseDao.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/BaseDao.java
@@ -34,7 +34,6 @@ import java.lang.reflect.Modifier;
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 /**
  * Database abstract resource file. Class implements all common methods for all resources.
@@ -44,7 +43,7 @@ import java.util.Map;
  */
 public abstract class BaseDao<E extends BaseEntity> {
 
-    private static final SMPLogger LOG = SMPLoggerFactory.getLogger(ServiceGroupService.class);
+    private static final SMPLogger LOG = SMPLoggerFactory.getLogger(BaseDao.class);
 
     @PersistenceContext
     protected EntityManager memEManager;
@@ -59,6 +58,18 @@ public abstract class BaseDao<E extends BaseEntity> {
         return memEManager.find(entityClass, primaryKey);
     }
 
+    /**
+     * test database for isAlive function
+     *
+     * @param entity
+     */
+    @Transactional
+    public void testPersist(E entity, String message) {
+        memEManager.persist(entity);
+        memEManager.flush();
+        throw new RuntimeException(message);
+    }
+
 
     /**
      * save or update database entity
@@ -152,12 +163,12 @@ public abstract class BaseDao<E extends BaseEntity> {
                         && !m.getReturnType().equals(Void.TYPE)
                         && (mName.startsWith("get") || mName.startsWith("is"))) {
                     String fieldName = mName.substring(mName.startsWith("get") ? 3 : 2);
-                    // get retur parameter
+                    // get return parameter
                     Object searchValue;
                     try {
                         searchValue = m.invoke(searchParams, new Object[]{});
                     } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
-                        // LOG.error(l, ex);
+                        LOG.error("Error setting retrieveing search parameters", ex);
                         continue;
                     }
 
@@ -179,6 +190,7 @@ public abstract class BaseDao<E extends BaseEntity> {
                             cls.getMethod("set" + fieldName, new Class[]{m.getReturnType()});
                         } catch (NoSuchMethodException | SecurityException ex) {
                             // method does not have setter // ignore other methods
+                            LOG.error("Field '"+fieldName+"' does not have a setter!", ex);
                             continue;
                         }
 
@@ -275,6 +287,7 @@ public abstract class BaseDao<E extends BaseEntity> {
             }
             lstResult = q.getResultList();
         } catch (NoResultException ex) {
+            LOG.warn("No result for '"+filterType.getName()+"' does not have a setter!", ex);
             lstResult = new ArrayList<>();
         }
 
@@ -296,8 +309,7 @@ public abstract class BaseDao<E extends BaseEntity> {
         CriteriaQuery<Long> cqCount = createSearchCriteria(filters, null, true,
                 null,
                 null);
-        Long res = memEManager.createQuery(cqCount).getSingleResult();
-        return res;
+        return memEManager.createQuery(cqCount).getSingleResult();
     }
 
 
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/ServiceMetadataDao.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/ServiceMetadataDao.java
index 250f14b0d645c1e324f2223bf99d214923555351..37f44a5fad879b4c472a976baffc9efa4ecfbf08 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/ServiceMetadataDao.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/ServiceMetadataDao.java
@@ -13,8 +13,6 @@
 
 package eu.europa.ec.edelivery.smp.data.dao;
 
-import eu.europa.ec.edelivery.smp.data.model.DBDomain;
-import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup;
 import eu.europa.ec.edelivery.smp.data.model.DBServiceMetadata;
 import eu.europa.ec.edelivery.smp.exceptions.ErrorCode;
 import org.springframework.stereotype.Repository;
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/UserDao.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/UserDao.java
index ac81494b6d2081b03372327e77a1552fb2b21e17..a5cb8a172b946e515cd044b25c8887d113bc2ab8 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/UserDao.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/UserDao.java
@@ -18,6 +18,7 @@ import eu.europa.ec.edelivery.smp.exceptions.ErrorCode;
 import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Repository;
+
 import javax.persistence.NoResultException;
 import javax.persistence.NonUniqueResultException;
 import javax.persistence.TypedQuery;
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/BaseEntity.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/BaseEntity.java
index e41ff17c693abef98c84f909e093f2d6331f5614..b5bedf13d35e248214a1e4df7f96f0cd93342966 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/BaseEntity.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/BaseEntity.java
@@ -13,10 +13,6 @@
 
 package eu.europa.ec.edelivery.smp.data.model;
 
-import javax.persistence.Column;
-import javax.persistence.PrePersist;
-import javax.persistence.PreUpdate;
-import java.math.BigInteger;
 import java.time.LocalDateTime;
 import java.util.Objects;
 
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBDomain.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBDomain.java
index 3187eca27853edc6eed6bd5ce99fcdc46fee0b76..1ad5e40e647b0820a5d4431d1d9058f9e86ba560 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBDomain.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBDomain.java
@@ -14,6 +14,7 @@
 package eu.europa.ec.edelivery.smp.data.model;
 
 import org.hibernate.envers.Audited;
+
 import javax.persistence.*;
 import java.time.LocalDateTime;
 
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceGroupDomain.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceGroupDomain.java
index d4cc386bda29b023bc6ecbf3f7f14e74f9942d0c..d47915011500a5d725596b0b8d43b8a967ec7f87 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceGroupDomain.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceGroupDomain.java
@@ -4,7 +4,9 @@ import org.hibernate.envers.Audited;
 
 import javax.persistence.*;
 import java.time.LocalDateTime;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * Service group domain
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceMetadata.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceMetadata.java
index f5d1fd9f7a071e028d1e51da4adffa5f1904edbf..a724728d573f4eb2165e498bf5e53b62c8c4be48 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceMetadata.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBServiceMetadata.java
@@ -16,7 +16,6 @@ package eu.europa.ec.edelivery.smp.data.model;
 import org.hibernate.envers.Audited;
 
 import javax.persistence.*;
-
 import java.time.LocalDateTime;
 import java.util.Objects;
 
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBUser.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBUser.java
index 2e9a864365ee028122eaa4887df8d77774a8852e..272b0dede0c5b14d4991ce7928369efb238c188b 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBUser.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBUser.java
@@ -15,7 +15,6 @@ package eu.europa.ec.edelivery.smp.data.model;
 import org.apache.commons.lang3.StringUtils;
 import org.hibernate.envers.Audited;
 
-
 import javax.persistence.*;
 import java.time.LocalDateTime;
 import java.util.Objects;
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/DomainRO.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/DomainRO.java
index a7bbbaa5fec52af862a5371d31a9758ed169cf26..11f1a5010dfb73d02f816d7573385cc6e49b18f0 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/DomainRO.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/DomainRO.java
@@ -1,9 +1,7 @@
 package eu.europa.ec.edelivery.smp.data.ui;
 
 
-import javax.persistence.*;
 import java.io.Serializable;
-import java.util.Objects;
 
 /**
  * @author Joze Rihtarsic
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ServiceGroupRO.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ServiceGroupRO.java
index 8fbbdfb095fd1b109c868cc634966b0291e39e3a..88fe3ee5eda1e9e494945807e2828ba817172299 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ServiceGroupRO.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ServiceGroupRO.java
@@ -1,10 +1,7 @@
 package eu.europa.ec.edelivery.smp.data.ui;
 
 
-
-import javax.persistence.*;
 import java.io.Serializable;
-import java.util.Objects;
 
 /**
  * @author Joze Rihtarsic
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ServiceMetadataRO.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ServiceMetadataRO.java
index 2a2386982e20620352aabc4dfc13a96adb532c66..b2e3ecb8129a2aaf1d63b64c0e5707251425f83a 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ServiceMetadataRO.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/ServiceMetadataRO.java
@@ -1,10 +1,7 @@
 package eu.europa.ec.edelivery.smp.data.ui;
 
 
-
-import javax.persistence.*;
 import java.io.Serializable;
-import java.util.Objects;
 
 /**
  * @author Joze Rihtarsic
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/logging/SMPMessageCode.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/logging/SMPMessageCode.java
index 70ec3af8083eebbe35035bf2e47e04c02a86dcda..999cc6ef25d4f666bc08a684a30e41f6f126e2c9 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/logging/SMPMessageCode.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/logging/SMPMessageCode.java
@@ -9,6 +9,7 @@ import eu.europa.ec.edelivery.smp.logging.api.MessageCode;
  */
 public enum SMPMessageCode implements MessageCode {
 
+
     BUS_SAVE_SERVICE_GROUP ("BUS-001", "Start inserting/updating ServiceGroup for part. Id: {} part. schema {}."),
     BUS_SAVE_SERVICE_GROUP_FAILED ("BUS-002", "Inserting/updating ServiceGroup for part. Id: {} part. schema {} failed! Error: [{}]"),
 
@@ -16,6 +17,10 @@ public enum SMPMessageCode implements MessageCode {
 
 
     SEC_UNSECURED_LOGIN_ALLOWED("SEC-001", "Unsecure login is allowed, no authentication will be performed"),
+    SEC_USER_AUTHENTICATED("SEC-002", "User {} is authenticated with role {}."),
+    SEC_USER_NOT_EXISTS("SEC-003", "User {} not exists."),
+    SEC_INVALID_PASSWORD("SEC-004", "User {} has invalid password."),
+
     ;
 
     String code;
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/DomainService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/DomainService.java
index fb2caa359de7b0294a781febb101eec6eab03525..5a3823b51307862fd1bed61db8be3c3c5537133a 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/DomainService.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/DomainService.java
@@ -12,9 +12,7 @@ import javax.validation.constraints.NotNull;
 import java.util.Optional;
 import java.util.regex.Pattern;
 
-import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.DOMAIN_NOT_EXISTS;
-import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.INVALID_DOMAIN_CODE;
-import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.MISSING_DOMAIN;
+import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.*;
 
 
 /**
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataService.java
index 28fd6146d532a915f1fbd2dbff63fbe40ec0a6f5..a5a611b982f2fc0336ddf1cacf155231b3c19c89 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataService.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataService.java
@@ -33,7 +33,8 @@ import java.util.List;
 import java.util.Optional;
 
 import static eu.europa.ec.edelivery.smp.conversion.ServiceMetadataConverter.toSignedServiceMetadatadaDocument;
-import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.*;
+import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.METADATA_NOT_EXISTS;
+import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.SG_NOT_EXISTS;
 
 
 /**
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSigner.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSigner.java
index c64bd5eb0435ef30adf8ad356aeb96f273fd0d36..02e94bda26c378e7ab0ee1140cf1ef522971e614 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSigner.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSigner.java
@@ -12,7 +12,6 @@
  */
 package eu.europa.ec.edelivery.smp.services;
 
-import eu.europa.ec.edelivery.smp.exceptions.DocumentSigningException;
 import eu.europa.ec.edelivery.smp.exceptions.ErrorCode;
 import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException;
 import org.slf4j.Logger;
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainService.java
index 8f0e0ba0af15dd14574f01859dd0c893a12f7164..e740304c2a6703b7c955003660cb4413e4005cd4 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainService.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainService.java
@@ -5,16 +5,10 @@ import eu.europa.ec.edelivery.smp.data.dao.DomainDao;
 import eu.europa.ec.edelivery.smp.data.model.DBDomain;
 import eu.europa.ec.edelivery.smp.data.ui.DomainRO;
 import eu.europa.ec.edelivery.smp.data.ui.ServiceResult;
-import org.apache.commons.beanutils.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
 @Service
 public class UIDomainService extends UIServiceBase<DBDomain, DomainRO> {
 
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceBase.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceBase.java
index 7704d66245036e721ac9d34757697aa8ebde227a..b68026665553eff290f9ae979079ec5ca96b25b0 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceBase.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceBase.java
@@ -2,35 +2,36 @@ package eu.europa.ec.edelivery.smp.services.ui;
 
 import eu.europa.ec.edelivery.smp.data.dao.BaseDao;
 import eu.europa.ec.edelivery.smp.data.model.BaseEntity;
-import eu.europa.ec.edelivery.smp.data.model.DBDomain;
-import eu.europa.ec.edelivery.smp.data.ui.DomainRO;
 import eu.europa.ec.edelivery.smp.data.ui.ServiceResult;
+import eu.europa.ec.edelivery.smp.logging.SMPLogger;
+import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory;
 import org.apache.commons.beanutils.BeanUtils;
 import org.springframework.core.GenericTypeResolver;
-import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
-
+/**
+ * @author Joze Rihtarsic
+ * @since 4.1
+ */
 abstract class UIServiceBase<E extends BaseEntity, R> {
 
+    private static final SMPLogger LOG = SMPLoggerFactory.getLogger(UIServiceBase.class);
+
     private final Class<R> roClass;
-    private final Class<E> dbClass;
 
 
     public UIServiceBase() {
         Class[] clsArg = GenericTypeResolver.resolveTypeArguments(getClass(), UIServiceBase.class);
-        dbClass =(Class<E>)clsArg[0];
         roClass =(Class<R>)clsArg[1];
 
     }
 
     /**
-     * Method returns Domain resource object list for page.
+     * Method returns UI  resource object list for page.
      *
      * @param page
      * @param pageSize
@@ -61,12 +62,11 @@ abstract class UIServiceBase<E extends BaseEntity, R> {
                     BeanUtils.copyProperties(dro,d);
                     lstRo.add(dro);
                 } catch (InstantiationException | InvocationTargetException | IllegalAccessException e) {
-                    e.printStackTrace();
+                    LOG.error("Error occured while retrieving list for " +roClass.getName(), e );
                 }
 
 
             }
-
             sg.getServiceEntities().addAll(lstRo);
         }
         return sg;
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupService.java
index 60bb57f0c0f0748ddc79a7f9a82218c86744418f..fa69336908e528a689cd87951d11c974cb0c2acb 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupService.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupService.java
@@ -1,11 +1,8 @@
 package eu.europa.ec.edelivery.smp.services.ui;
 
 import eu.europa.ec.edelivery.smp.data.dao.BaseDao;
-import eu.europa.ec.edelivery.smp.data.dao.DomainDao;
 import eu.europa.ec.edelivery.smp.data.dao.ServiceGroupDao;
-import eu.europa.ec.edelivery.smp.data.model.DBDomain;
 import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup;
-import eu.europa.ec.edelivery.smp.data.ui.DomainRO;
 import eu.europa.ec.edelivery.smp.data.ui.ServiceGroupRO;
 import eu.europa.ec.edelivery.smp.data.ui.ServiceResult;
 import org.springframework.beans.factory.annotation.Autowired;
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 80609bea65e87775e98a496b72c90f01a3cf2727..14af6dd50efd1c858e5f923ac39bdc369c663b26 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
@@ -1,11 +1,8 @@
 package eu.europa.ec.edelivery.smp.services.ui;
 
 import eu.europa.ec.edelivery.smp.data.dao.BaseDao;
-import eu.europa.ec.edelivery.smp.data.dao.DomainDao;
 import eu.europa.ec.edelivery.smp.data.dao.UserDao;
-import eu.europa.ec.edelivery.smp.data.model.DBDomain;
 import eu.europa.ec.edelivery.smp.data.model.DBUser;
-import eu.europa.ec.edelivery.smp.data.ui.DomainRO;
 import eu.europa.ec.edelivery.smp.data.ui.ServiceResult;
 import eu.europa.ec.edelivery.smp.data.ui.UserRO;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/BCryptPasswordHashTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/BCryptPasswordHashTest.java
index 456d5d66aae7f1878b3ccbb43285d39a82038e25..f2d809d18f5c3630c9e961ba7c3f6692b85f3782 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/BCryptPasswordHashTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/BCryptPasswordHashTest.java
@@ -13,7 +13,6 @@
 
 package eu.europa.ec.edelivery.smp;
 
-import eu.europa.ec.edelivery.smp.BCryptPasswordHash;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/H2JPATestConfiguration.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/H2JPATestConfiguration.java
index ae46dbfcf5ef17ec9cce1f5d665bf01ce268deee..62492632775a4a64da5abbf2c68cfdf6fd20a69d 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/H2JPATestConfiguration.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/H2JPATestConfiguration.java
@@ -1,16 +1,15 @@
 package eu.europa.ec.edelivery.smp.config;
 
 
-
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.*;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.PropertySource;
 import org.springframework.core.env.Environment;
-import org.springframework.core.io.FileSystemResource;
 import org.springframework.jdbc.datasource.DriverManagerDataSource;
 import org.springframework.orm.jpa.JpaTransactionManager;
 import org.springframework.orm.jpa.JpaVendorAdapter;
 import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.orm.jpa.vendor.Database;
 import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
 import org.springframework.transaction.PlatformTransactionManager;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/SmpServicesTestConfig.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/SmpServicesTestConfig.java
index 1a32718e666bb6e49606b0223fd25795e6eb082a..434e5900b4c7dd43957963efbc66c26939e8c0fa 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/SmpServicesTestConfig.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/SmpServicesTestConfig.java
@@ -15,7 +15,9 @@ package eu.europa.ec.edelivery.smp.config;
 
 
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.*;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
 import org.springframework.jdbc.datasource.DriverManagerDataSource;
 import org.springframework.orm.jpa.JpaTransactionManager;
 import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ExtensionConverterTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ExtensionConverterTest.java
index fbdd752ea30debced7e0be6cc75f4d8b7178f9e8..5487b68d67fbddcfe2eda0d83809a1b9df33cfbe 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ExtensionConverterTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ExtensionConverterTest.java
@@ -23,14 +23,11 @@ import org.xmlunit.matchers.CompareMatcher;
 import javax.xml.bind.JAXBException;
 import javax.xml.stream.XMLStreamException;
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.*;
 
 /**
  * Created by migueti on 13/02/2017.
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ServiceGroupConverterTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ServiceGroupConverterTest.java
index 07ff814d351a5e1b45e3ad8da5466cb34a0e2500..aa201aba607ec2b833d9f615c17fbf92b161ffc0 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ServiceGroupConverterTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ServiceGroupConverterTest.java
@@ -14,7 +14,6 @@
 package eu.europa.ec.edelivery.smp.conversion;
 
 import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup;
-import eu.europa.ec.edelivery.smp.data.model.DBServiceGroupExtension;
 import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException;
 import eu.europa.ec.edelivery.smp.testutil.TestDBUtils;
 import eu.europa.ec.edelivery.smp.testutil.XmlTestUtils;
@@ -22,7 +21,6 @@ import org.hamcrest.Matchers;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
-import org.oasis_open.docs.bdxr.ns.smp._2016._05.ExtensionType;
 import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceGroup;
 import org.xml.sax.SAXParseException;
 
@@ -31,12 +29,7 @@ import javax.xml.bind.UnmarshalException;
 import javax.xml.stream.XMLStreamException;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
 
-import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.INVALID_EXTENSION_FOR_SG;
-import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.SG_NOT_EXISTS;
 import static org.junit.Assert.*;
 
 /**
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ServiceMetadataConverterTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ServiceMetadataConverterTest.java
index 2edd221d99286ae328b84d90511920b0b4a3043e..4d98698381ff729f68f843b92d4ada8c431cdf53 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ServiceMetadataConverterTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/ServiceMetadataConverterTest.java
@@ -24,7 +24,6 @@ import org.oasis_open.docs.bdxr.ns.smp._2016._05.RedirectType;
 import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceEndpointList;
 import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceInformationType;
 import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceMetadata;
-import org.opensaml.core.xml.XMLRuntimeException;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/AuditIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/AuditIntegrationTest.java
index cb21fb5cee6e4a044c8116e2b9cce39587578ebd..a6778b6f1ae02b4f97fe8db2632761b28f4e88b1 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/AuditIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/AuditIntegrationTest.java
@@ -17,9 +17,7 @@ import eu.europa.ec.edelivery.smp.config.H2JPATestConfiguration;
 import eu.europa.ec.edelivery.smp.data.model.*;
 import org.hibernate.envers.AuditReader;
 import org.hibernate.envers.AuditReaderFactory;
-import org.junit.After;
 import org.junit.Assert;
-import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.test.context.ContextConfiguration;
@@ -31,15 +29,11 @@ import org.springframework.test.util.ReflectionTestUtils;
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.PersistenceUnit;
-import javax.persistence.Query;
-import javax.xml.bind.JAXBException;
-import java.io.IOException;
-import java.time.LocalDateTime;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
 
-import static eu.europa.ec.edelivery.smp.testutil.TestDBUtils.*;
+import static eu.europa.ec.edelivery.smp.testutil.TestDBUtils.createDBDomain;
 import static org.junit.Assert.assertTrue;
 
 
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/DomainDaoIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/DomainDaoIntegrationTest.java
index 3a2256a0b9eb1508577015026605fb84140c8663..082bdd1d85a49cb9e2525594a54238c69363befc 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/DomainDaoIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/DomainDaoIntegrationTest.java
@@ -2,8 +2,8 @@ package eu.europa.ec.edelivery.smp.data.dao;
 
 import eu.europa.ec.edelivery.smp.config.H2JPATestConfiguration;
 import eu.europa.ec.edelivery.smp.data.model.DBDomain;
-import eu.europa.ec.edelivery.smp.testutil.TestConstants;
 import eu.europa.ec.edelivery.smp.exceptions.ErrorCode;
+import eu.europa.ec.edelivery.smp.testutil.TestConstants;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -13,6 +13,7 @@ import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.jdbc.Sql;
 import org.springframework.test.context.jdbc.SqlConfig;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
 import java.util.Optional;
 
 import static org.junit.Assert.*;
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceGroupDaoIntegrationBase.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceGroupDaoIntegrationBase.java
index d6df46a628433b7b08b8b842dc16c89cc191e7e5..9f3582fb152e40378ce5433b862812602c6a022a 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceGroupDaoIntegrationBase.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceGroupDaoIntegrationBase.java
@@ -5,25 +5,18 @@ import eu.europa.ec.edelivery.smp.data.model.DBDomain;
 import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup;
 import eu.europa.ec.edelivery.smp.data.model.DBServiceMetadata;
 import eu.europa.ec.edelivery.smp.data.model.DBUser;
-import eu.europa.ec.edelivery.smp.testutil.TestConstants;
 import eu.europa.ec.edelivery.smp.testutil.TestDBUtils;
 import org.junit.Before;
 import org.junit.Rule;
-import org.junit.Test;
 import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.jdbc.Sql;
 import org.springframework.test.context.jdbc.SqlConfig;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
 import javax.transaction.Transactional;
-import java.util.Optional;
-import java.util.UUID;
 
 import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*;
-import static org.junit.Assert.*;
 
 
 /**
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceGroupDaoOwnershipIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceGroupDaoOwnershipIntegrationTest.java
index 1c3c9ca414513cb40220e738f5d02f030f0be5b2..9c5a93a3377d61ea17ce6f2a32ccf5053467196d 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceGroupDaoOwnershipIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceGroupDaoOwnershipIntegrationTest.java
@@ -11,7 +11,8 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 import javax.transaction.Transactional;
 import java.util.Optional;
 
-import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*;
+import static eu.europa.ec.edelivery.smp.testutil.TestConstants.TEST_SG_ID_1;
+import static eu.europa.ec.edelivery.smp.testutil.TestConstants.TEST_SG_SCHEMA_1;
 import static org.junit.Assert.*;
 
 
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceMetadataDaoIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceMetadataDaoIntegrationTest.java
index 3733438c828ec85a1b0cea20468ecc23e8562187..70db93f7c735f58026d7f1e9341f2e4f72d9e3de 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceMetadataDaoIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/ServiceMetadataDaoIntegrationTest.java
@@ -5,7 +5,6 @@ import eu.europa.ec.edelivery.smp.data.model.DBDomain;
 import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup;
 import eu.europa.ec.edelivery.smp.data.model.DBServiceMetadata;
 import eu.europa.ec.edelivery.smp.data.model.DBUser;
-import eu.europa.ec.edelivery.smp.exceptions.ErrorCode;
 import eu.europa.ec.edelivery.smp.testutil.TestConstants;
 import eu.europa.ec.edelivery.smp.testutil.TestDBUtils;
 import org.junit.Before;
@@ -24,8 +23,8 @@ import java.util.List;
 import java.util.Optional;
 
 import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*;
-import static eu.europa.ec.edelivery.smp.testutil.TestConstants.USERNAME_3;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 /**
  *  Purpose of class is to test all resource methods with database.
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/UserDaoIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/UserDaoIntegrationTest.java
index d892fceb3551ac8473e587c564ecc9bf68aa25b7..65a6a4c1735be199b97fefdcef76972c615f14ee 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/UserDaoIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/data/dao/UserDaoIntegrationTest.java
@@ -1,7 +1,6 @@
 package eu.europa.ec.edelivery.smp.data.dao;
 
 import eu.europa.ec.edelivery.smp.config.H2JPATestConfiguration;
-import eu.europa.ec.edelivery.smp.data.model.DBCertificate;
 import eu.europa.ec.edelivery.smp.data.model.DBUser;
 import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException;
 import eu.europa.ec.edelivery.smp.testutil.TestConstants;
@@ -16,14 +15,11 @@ import org.springframework.test.context.jdbc.Sql;
 import org.springframework.test.context.jdbc.SqlConfig;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
-import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
 import java.util.Optional;
-import java.util.UUID;
 
 import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.INVALID_USER_NO_IDENTIFIERS;
 import static org.junit.Assert.*;
-import static org.junit.Assert.assertTrue;
 
 
 /**
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 9a5adccf053c0f3c07f60c269d484fbe954730f9..1aacf70e34257531d47268887fa9906ce6c24b54 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
@@ -24,8 +24,6 @@ import org.springframework.test.context.jdbc.SqlConfig;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
 import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*;
-import static eu.europa.ec.edelivery.smp.testutil.TestConstants.TEST_SG_ID_2;
-import static eu.europa.ec.edelivery.smp.testutil.TestConstants.TEST_SG_SCHEMA_2;
 
 /**
  * Purpose of class is to setup integration test properties and init database.
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/DomainServiceIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/DomainServiceIntegrationTest.java
index 3d4e6730ff15c2c5bf796f60c89997ae2be3ef24..6fddbf1441bff46850d7ac8507857c480c761056 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/DomainServiceIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/DomainServiceIntegrationTest.java
@@ -25,8 +25,8 @@ import org.junit.rules.ExpectedException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
-import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*;
-import static org.junit.Assert.*;
+import static eu.europa.ec.edelivery.smp.testutil.TestConstants.TEST_DOMAIN_CODE_1;
+import static org.junit.Assert.assertEquals;
 
 /**
  *  Purpose of class is to test ServiceGroupService base methods
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceMultipleDomainsIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceMultipleDomainsIntegrationTest.java
index 58936bd2aad0f997c45db7b31271a956eb7e4b6d..1ccf25474c33381edb6efcaf117afd2863cb912c 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceMultipleDomainsIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceMultipleDomainsIntegrationTest.java
@@ -14,23 +14,18 @@
 package eu.europa.ec.edelivery.smp.services;
 
 import eu.europa.ec.edelivery.smp.conversion.ExtensionConverter;
-import eu.europa.ec.edelivery.smp.data.model.DBDomain;
 import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup;
-import eu.europa.ec.edelivery.smp.data.model.DBServiceGroupDomain;
 import eu.europa.ec.edelivery.smp.data.model.DBUser;
 import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException;
-import eu.europa.ec.edelivery.smp.testutil.DBAssertion;
 import eu.europa.ec.edelivery.smp.testutil.TestConstants;
 import eu.europa.ec.edelivery.smp.testutil.TestDBUtils;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
 import org.oasis_open.docs.bdxr.ns.smp._2016._05.ParticipantIdentifierType;
 import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceGroup;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
 import javax.xml.bind.JAXBException;
 import javax.xml.stream.XMLStreamException;
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceSingleDomainIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceSingleDomainIntegrationTest.java
index a0ed9b02e41367a3c494f5eb616aebd7d48646b4..44419097cb9e6aa8a2556ef7acec6dfb3e1092e3 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceSingleDomainIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceSingleDomainIntegrationTest.java
@@ -15,7 +15,9 @@ package eu.europa.ec.edelivery.smp.services;
 
 
 import eu.europa.ec.edelivery.smp.conversion.ExtensionConverter;
-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.DBServiceGroup;
+import eu.europa.ec.edelivery.smp.data.model.DBUser;
 import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException;
 import eu.europa.ec.edelivery.smp.testutil.TestConstants;
 import org.hamcrest.core.StringStartsWith;
@@ -38,9 +40,8 @@ import java.util.Optional;
 
 import static eu.europa.ec.edelivery.smp.conversion.ServiceGroupConverter.unmarshal;
 import static eu.europa.ec.edelivery.smp.exceptions.ErrorCode.*;
-import static eu.europa.ec.edelivery.smp.testutil.XmlTestUtils.loadDocumentAsString;
-
 import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*;
+import static eu.europa.ec.edelivery.smp.testutil.XmlTestUtils.loadDocumentAsString;
 import static eu.europa.ec.smp.api.Identifiers.asParticipantId;
 import static org.junit.Assert.*;
 
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceTestService.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceTestService.java
index 46f43f2a1a2cae51beefce7a1c3fa5a75a545fc3..52da8a296dc62e5be207651d5c1e673cf553c5e8 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceTestService.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceGroupServiceTestService.java
@@ -23,15 +23,13 @@ import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Optional;
 
 import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertTrue;
 
 /**
  *  Purpose of class is to test ServiceGroupService base methods
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataIntegrationTest.java
index b05922b30583bec6764a2cb85490e93a6bf71ea3..5478445eea92ece8640a58e23d10309b4c13a2f6 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataIntegrationTest.java
@@ -13,45 +13,26 @@
 
 package eu.europa.ec.edelivery.smp.services;
 
-import eu.europa.ec.edelivery.smp.config.H2JPATestConfiguration;
-import eu.europa.ec.edelivery.smp.config.PropertiesSingleDomainTestConfig;
-import eu.europa.ec.edelivery.smp.conversion.CaseSensitivityNormalizer;
-import eu.europa.ec.edelivery.smp.conversion.ServiceGroupConverter;
 import eu.europa.ec.edelivery.smp.conversion.ServiceMetadataConverter;
-import eu.europa.ec.edelivery.smp.data.dao.DomainDao;
-import eu.europa.ec.edelivery.smp.data.dao.ServiceGroupDao;
-import eu.europa.ec.edelivery.smp.data.dao.ServiceMetadataDao;
-import eu.europa.ec.edelivery.smp.data.dao.UserDao;
 import eu.europa.ec.edelivery.smp.data.model.DBDomain;
 import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup;
 import eu.europa.ec.edelivery.smp.data.model.DBServiceMetadata;
-import eu.europa.ec.edelivery.smp.config.SmpServicesTestConfig;
-import eu.europa.ec.edelivery.smp.data.model.DBUser;
 import eu.europa.ec.edelivery.smp.exceptions.ErrorCode;
 import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException;
-import eu.europa.ec.edelivery.smp.sml.SmlConnector;
-import eu.europa.ec.edelivery.smp.testutil.DBAssertion;
-import eu.europa.ec.edelivery.smp.testutil.TestConstants;
-import eu.europa.ec.edelivery.smp.testutil.TestDBUtils;
-import org.busdox.transport.identifiers._1.DocumentIdentifierType;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.junit.runner.RunWith;
-import org.oasis_open.docs.bdxr.ns.smp._2016._05.*;
+import org.oasis_open.docs.bdxr.ns.smp._2016._05.DocumentIdentifier;
+import org.oasis_open.docs.bdxr.ns.smp._2016._05.EndpointType;
+import org.oasis_open.docs.bdxr.ns.smp._2016._05.ParticipantIdentifierType;
+import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceMetadata;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.Rollback;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.jdbc.Sql;
-import org.springframework.test.context.jdbc.SqlConfig;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 import org.springframework.transaction.annotation.Transactional;
 import org.w3c.dom.Document;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityNotFoundException;
-import javax.persistence.PersistenceContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.transform.TransformerException;
 import java.io.IOException;
@@ -61,10 +42,10 @@ import java.util.Optional;
 
 import static eu.europa.ec.edelivery.smp.conversion.ServiceMetadataConverter.unmarshal;
 import static eu.europa.ec.edelivery.smp.testutil.TestConstants.*;
-import static eu.europa.ec.edelivery.smp.testutil.XmlTestUtils.*;
-import static eu.europa.ec.smp.api.Identifiers.asDocumentId;
-import static eu.europa.ec.smp.api.Identifiers.asParticipantId;
-import static org.junit.Assert.*;
+import static eu.europa.ec.edelivery.smp.testutil.XmlTestUtils.loadDocumentAsByteArray;
+import static eu.europa.ec.edelivery.smp.testutil.XmlTestUtils.marshallToByteArray;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 /**
  * Created by gutowpa on 15/11/2017.
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
index 062bc1de47c762cfeb3c67ce3637e85d44edd143..801534ca44655c5baaba8a6fe9262c6c93c18b88 100644
--- 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
@@ -14,7 +14,6 @@
 package eu.europa.ec.edelivery.smp.services;
 
 import eu.europa.ec.edelivery.smp.config.PropertiesMultipleDomainTestConfig;
-import eu.europa.ec.edelivery.smp.config.SmpServicesTestConfig;
 import eu.europa.ec.edelivery.smp.testutil.SignatureUtil;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSignerTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSignerTest.java
index d5be76ed20f16122f81d22060ab53a8fdaffdca6..6194d9683f262755e7178410451c2541753d10fd 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSignerTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ServiceMetadataSignerTest.java
@@ -13,18 +13,9 @@
 
 package eu.europa.ec.edelivery.smp.services;
 
-import eu.europa.ec.edelivery.smp.config.PropertiesSingleDomainTestConfig;
-import eu.europa.ec.edelivery.smp.testutil.SignatureUtil;
-import eu.europa.ec.edelivery.smp.config.SmpServicesTestConfig;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringRunner;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import static eu.europa.ec.edelivery.smp.testutil.XmlTestUtils.loadDocument;
 
 /**
  * Created by rodrfla on 20/02/2017.
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainServiceIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainServiceIntegrationTest.java
index 7ff2b0ad8e81a46d95ac2b4ab38090448b8d1686..8ff10cc252ea76f03b3b7f6923f7b809a07520b6 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainServiceIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIDomainServiceIntegrationTest.java
@@ -12,9 +12,7 @@ import org.junit.rules.ExpectedException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.context.ContextConfiguration;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import static org.junit.Assert.*;
 
 
 /**
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupServiceIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupServiceIntegrationTest.java
index dc470fe2817b92a188305f9ff721f1bfea0ecf0b..fd5ae27e83e6f39bd9f0a70924147153ef5147e0 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupServiceIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIServiceGroupServiceIntegrationTest.java
@@ -2,10 +2,8 @@ package eu.europa.ec.edelivery.smp.services.ui;
 
 
 import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup;
-import eu.europa.ec.edelivery.smp.data.model.DBUser;
 import eu.europa.ec.edelivery.smp.data.ui.ServiceGroupRO;
 import eu.europa.ec.edelivery.smp.data.ui.ServiceResult;
-import eu.europa.ec.edelivery.smp.data.ui.UserRO;
 import eu.europa.ec.edelivery.smp.services.AbstractServiceIntegrationTest;
 import eu.europa.ec.edelivery.smp.testutil.TestConstants;
 import eu.europa.ec.edelivery.smp.testutil.TestDBUtils;
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/smlintegration/SmlClientFactoryAuthenticationByClientCertFromKeystoreTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/smlintegration/SmlClientFactoryAuthenticationByClientCertFromKeystoreTest.java
index dfe6ca8853d93ebcce245b49fabad280f54353ba..a0e02e4f1550ba53522cfe44cd6726a963521d4d 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/smlintegration/SmlClientFactoryAuthenticationByClientCertFromKeystoreTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/smlintegration/SmlClientFactoryAuthenticationByClientCertFromKeystoreTest.java
@@ -34,13 +34,10 @@ import javax.net.ssl.KeyManager;
 import javax.net.ssl.X509KeyManager;
 import java.security.PrivateKey;
 import java.security.cert.X509Certificate;
-import java.util.List;
 import java.util.Map;
 
 import static eu.europa.ec.edelivery.smp.testutil.LocalPropertiesTestUtil.buildLocalProperties;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 /**
  * Created by gutowpa on 08/01/2018.
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/smlintegration/SmlConnectorTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/smlintegration/SmlConnectorTest.java
index 1ff18ef98771394dc874dc0305f5a3776e8736c4..7ea050b582c264fd617121ccbe964b8393e0f553 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/smlintegration/SmlConnectorTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/smlintegration/SmlConnectorTest.java
@@ -14,7 +14,6 @@
 package eu.europa.ec.edelivery.smp.smlintegration;
 
 import eu.europa.ec.bdmsl.ws.soap.*;
-import eu.europa.ec.edelivery.smp.data.model.DBDomain;
 import eu.europa.ec.edelivery.smp.sml.SmlConnector;
 import org.junit.Before;
 import org.junit.Test;
@@ -32,10 +31,6 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 import java.util.ArrayList;
 import java.util.List;
 
-import static org.junit.Assert.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
 import static org.springframework.beans.factory.config.ConfigurableBeanFactory.SCOPE_PROTOTYPE;
 
 /**
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/testutil/DBAssertion.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/testutil/DBAssertion.java
index 52788ec9024781790f286ea417c68e996b3807af..c29691ea010daf396e6beb791f801af7396f72eb 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/testutil/DBAssertion.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/testutil/DBAssertion.java
@@ -9,9 +9,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.Arrays;
 import java.util.Optional;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 /**
  *  Purpose of class is to test database data. Class is created as a bean so that
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProvider.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProvider.java
index dda846c4a087882ef35a7ea525e4b55a85c805ac..d7a9a3a55f5dee03edff09044ed810a20d767852 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProvider.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProvider.java
@@ -2,6 +2,9 @@ package eu.europa.ec.edelivery.smp.auth;
 
 import eu.europa.ec.edelivery.smp.data.dao.UserDao;
 import eu.europa.ec.edelivery.smp.data.model.DBUser;
+import eu.europa.ec.edelivery.smp.logging.SMPLogger;
+import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory;
+import eu.europa.ec.edelivery.smp.logging.SMPMessageCode;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.AuthenticationProvider;
 import org.springframework.security.authentication.BadCredentialsException;
@@ -15,6 +18,8 @@ import java.util.Optional;
 
 public class SMPAuthenticationProvider implements AuthenticationProvider {
 
+    private static final SMPLogger LOG = SMPLoggerFactory.getLogger(AuthenticationProvider.class);
+
     @Autowired
     UserDao mUserDao;
 
@@ -30,25 +35,29 @@ public class SMPAuthenticationProvider implements AuthenticationProvider {
 
         Optional<DBUser> oUsr = mUserDao.findUserByIdentifier(username);
         if (!oUsr.isPresent()){
+            LOG.securityWarn(SMPMessageCode.SEC_USER_NOT_EXISTS, username);
             //https://www.owasp.org/index.php/Authentication_Cheat_Sheet
             // Do not reveal the status of an existing account. Not to use UsernameNotFoundException
             throw new BadCredentialsException("Login failed; Invalid userID or password");
         }
         DBUser usr = oUsr.get();
+        String role = usr.getRole();
         try {
             if (!BCrypt.checkpw(password, usr.getPassword())) {
+                LOG.securityWarn(SMPMessageCode.SEC_INVALID_PASSWORD, username);
                 throw new BadCredentialsException("Login failed; Invalid userID or password");
             }
+
         }catch (java.lang.IllegalArgumentException ex){
-            // password is not hashed
+            // password is not hashed;
+            LOG.securityWarn(SMPMessageCode.SEC_INVALID_PASSWORD,ex, username);
             throw new BadCredentialsException("Login failed; Invalid userID or password");
         }
-        return new UsernamePasswordAuthenticationToken(username, password,Collections.singletonList(new SMPAuthority(usr.getRole())));
+        LOG.securityInfo(SMPMessageCode.SEC_USER_AUTHENTICATED, username, role);
+        return new UsernamePasswordAuthenticationToken(username, password,Collections.singletonList(new SMPAuthority(role)));
 
     }
 
-
-
     @Override
     public boolean supports(Class<?> auth) {
         return auth.equals(UsernamePasswordAuthenticationToken.class);
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/SmpWebAppConfig.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/SmpWebAppConfig.java
index b067186cdc852a3552141bb599c702d261da29be..4856b6c9bb79a5c9bf967005ff5e796b0226ec2f 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/SmpWebAppConfig.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/SmpWebAppConfig.java
@@ -30,6 +30,7 @@ import static org.springframework.core.Ordered.HIGHEST_PRECEDENCE;
 @ComponentScan(basePackages = {
         "eu.europa.ec.edelivery.smp.controllers",
         "eu.europa.ec.edelivery.smp.validation",
+        "eu.europa.ec.edelivery.smp.monitor",
         "eu.europa.ec.edelivery.smp.ui"})
 @Import({GlobalMethodSecurityConfig.class, ErrorMappingControllerAdvice.class})
 public class SmpWebAppConfig implements WebMvcConfigurer {
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/controllers/ServiceMetadataController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/controllers/ServiceMetadataController.java
index be71c119140ef9736f890268380aa40321fd856e..9843cee5059c508869c47b6d4c54033759bfa47a 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/controllers/ServiceMetadataController.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/controllers/ServiceMetadataController.java
@@ -82,7 +82,7 @@ public class ServiceMetadataController {
 
         boolean newServiceMetadataCreated = serviceMetadataService.saveServiceMetadata(domain, asParticipantId(serviceGroupId), asDocumentId(serviceMetadataId), body);
 
-        log.info("PUT ServiceMetadata finished: {} - {}\n{}", serviceGroupId, serviceMetadataId, body);
+        log.info("PUT ServiceMetadata finished: {} - {}", serviceGroupId, serviceMetadataId);
 
         return newServiceMetadataCreated ? created(pathBuilder.getCurrentUri()).build() : ok().build();
     }
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/monitor/MonitorResource.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/monitor/MonitorResource.java
new file mode 100644
index 0000000000000000000000000000000000000000..96850dbcac3193c009a2a3cf941ea59026ab4be7
--- /dev/null
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/monitor/MonitorResource.java
@@ -0,0 +1,115 @@
+package eu.europa.ec.edelivery.smp.monitor;
+
+
+import eu.europa.ec.edelivery.smp.auth.SMPAuthority;
+import eu.europa.ec.edelivery.smp.conversion.ServiceGroupConverter;
+import eu.europa.ec.edelivery.smp.data.dao.DomainDao;
+import eu.europa.ec.edelivery.smp.data.dao.ServiceGroupDao;
+import eu.europa.ec.edelivery.smp.data.model.DBDomain;
+import eu.europa.ec.edelivery.smp.data.model.DBServiceGroup;
+import eu.europa.ec.edelivery.smp.logging.SMPLogger;
+import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory;
+import eu.europa.ec.edelivery.smp.services.ServiceGroupService;
+import eu.europa.ec.edelivery.smp.validation.ServiceGroupValidator;
+import eu.europa.ec.smp.api.exceptions.XmlInvalidAgainstSchemaException;
+import eu.europa.ec.smp.api.validators.BdxSmpOasisValidator;
+import org.apache.cxf.helpers.IOUtils;
+import org.oasis_open.docs.bdxr.ns.smp._2016._05.ServiceGroup;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.annotation.Secured;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @author Joze Rihtarsic
+ * @since 4.1
+ */
+
+@RestController
+@RequestMapping(value = "/monitor")
+public class MonitorResource {
+
+    private static final SMPLogger LOG = SMPLoggerFactory.getLogger(MonitorResource.class);
+
+    @Autowired
+    private ServiceGroupValidator serviceGroupValidator;
+
+    @Autowired
+    private ServiceGroupService serviceGroupService;
+
+    @Autowired
+    private DomainDao domainDao;
+
+    @Autowired
+    private ServiceGroupDao serviceGroupDao;
+
+    private static final String TEST_PART_SCHEMA = "test-actorid-qns";
+    private static final String TEST_PART_ID = "urn:test:is:alive";
+    private static final String TEST_EXTENSION_XML ="<Extension xmlns=\"http://docs.oasis-open.org/bdxr/ns/SMP/2016/05\"><ex:dummynode xmlns:ex=\"http://test.eu\">Sample not mandatory extension</ex:dummynode></Extension>";
+    private static final String TEST_DB_SUCCESSFUL_ROLLBACK ="TEST_DB_SUCCESSFUL_ROLLBACK MESSAGE";
+
+
+    @RequestMapping(method = RequestMethod.GET,path = "/is-alive")
+    @Secured({SMPAuthority.S_AUTHORITY_SYSTEM_ADMIN,SMPAuthority.S_AUTHORITY_SMP_ADMIN})
+    public ResponseEntity isAlive() {
+
+        String user = SecurityContextHolder.getContext().getAuthentication().getName();
+        LOG.debug("Start isAlive function for user: " + SecurityContextHolder.getContext().getAuthentication().getName());
+        byte[] bServiceGroup = null;
+        try {
+            bServiceGroup = IOUtils.readBytesFromStream(
+                    MonitorResource.class.getResourceAsStream("/isAliveTestFiles/ServiceGroupTest.xml"));
+
+        } catch (IOException e) {
+            LOG.error("Error reading test resource file", e);
+            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
+        }
+        ServiceGroup serviceGroup;
+        try {
+            // Validations
+            BdxSmpOasisValidator.validateXSD(bServiceGroup);
+            serviceGroup = ServiceGroupConverter.unmarshal(bServiceGroup);
+            serviceGroupValidator
+                    .validate(TEST_PART_SCHEMA+ "::"+TEST_PART_ID, serviceGroup);
+        } catch (XmlInvalidAgainstSchemaException ex) {
+            LOG.error("Error reading testing resource file", ex);
+            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
+        }
+        boolean suc = false;
+        try {
+            suc= testDatabase();
+        }catch (Exception ex){
+            suc = Objects.equals(TEST_DB_SUCCESSFUL_ROLLBACK, ex.getMessage());
+        }
+       return suc?ResponseEntity.ok().build():ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
+
+    }
+
+    protected boolean testDatabase(){
+        List<DBDomain> lstDomain = domainDao.getAllDomains();
+        if (lstDomain.isEmpty()){
+            LOG.error("Bad configuration! At least one domain must be configured!");
+            return false;
+        }
+
+        DBServiceGroup newSg = new DBServiceGroup();
+        newSg.setParticipantIdentifier(TEST_PART_ID);
+        newSg.setParticipantScheme(TEST_PART_SCHEMA);
+        newSg.setExtension(TEST_EXTENSION_XML.getBytes());
+        newSg.addDomain(lstDomain.get(0)); // add initial domain
+        newSg.setSmlRegistered(false);
+        // persist (make sure this is not in transaction)
+        serviceGroupDao.testPersist(newSg, TEST_DB_SUCCESSFUL_ROLLBACK);
+        return false;
+    }
+
+
+}
diff --git a/smp-webapp/src/main/resources/isAliveTestFiles/ServiceGroupTest.xml b/smp-webapp/src/main/resources/isAliveTestFiles/ServiceGroupTest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a2f08528f7d1baaa3e2965122f057abc7efcafbf
--- /dev/null
+++ b/smp-webapp/src/main/resources/isAliveTestFiles/ServiceGroupTest.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<ServiceGroup xmlns="http://docs.oasis-open.org/bdxr/ns/SMP/2016/05">
+    <ParticipantIdentifier scheme="test-actorid-qns">urn:test:is:alive</ParticipantIdentifier>
+    <ServiceMetadataReferenceCollection/>
+    <Extension>
+        <ExtensionAgencyID>Agency ID 1</ExtensionAgencyID>
+        <ExtensionAgencyName>Agency name 1</ExtensionAgencyName>
+        <CustomNode xmlns="http://custom.com/schema1">Any XML content 1</CustomNode>
+    </Extension>
+    <Extension>
+        <ExtensionAgencyID>Agency ID 2</ExtensionAgencyID>
+        <ExtensionAgencyName>Agency name 2</ExtensionAgencyName>
+        <CustomNode xmlns="http://custom.com/schema2">Any XML content 2</CustomNode>
+    </Extension>
+</ServiceGroup>
diff --git a/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationTest.java b/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationTest.java
index 866b17ef55b4c05e76f5185ea33f02db8d7ef3b7..0422feb830e2574da637eea17baeb440a9c07627 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationTest.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationTest.java
@@ -46,8 +46,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
         SpringSecurityTestConfig.class
 })
 @WebAppConfiguration
-@Transactional
-@Rollback(true)
+@Sql("classpath:/cleanup-database.sql")
 @Sql("classpath:/webapp_integration_test_data.sql")
 public class SecurityConfigurationTest {
 
diff --git a/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SignatureValidatorTest.java b/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SignatureValidatorTest.java
index 1d5c4a2e34e5b06a86f985840214a00d3b4c3c3e..8b845b20c003ab39063d9d4174715f6d6e2fc4cc 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SignatureValidatorTest.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SignatureValidatorTest.java
@@ -71,8 +71,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
         SpringSecurityConfig.class
 })
 @WebAppConfiguration
-@Transactional
-@Rollback(true)
+@Sql("classpath:/cleanup-database.sql")
 @Sql("classpath:/webapp_integration_test_data.sql")
 public class SignatureValidatorTest {
 
diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ServiceGroupControllerTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ServiceGroupControllerTest.java
index b94a7f311790d0b8739e757d08775db6e54939de..186638d9a338be4c22a2229d10404074e2799631 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ServiceGroupControllerTest.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/controllers/ServiceGroupControllerTest.java
@@ -55,8 +55,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
         SmpWebAppConfig.class,
         SpringSecurityConfig.class})
 @WebAppConfiguration
-@Transactional
-@Rollback(true)
 @Sql("classpath:/cleanup-database.sql")
 @Sql("classpath:/webapp_integration_test_data.sql")
 @SqlConfig(encoding = "UTF-8")
@@ -104,16 +102,16 @@ public class ServiceGroupControllerTest {
 
     @Test
     public void adminCanCreateServiceGroup() throws Exception {
-     /*   mvc.perform(put(URL_PATH)
+        mvc.perform(put(URL_PATH)
                 .with(ADMIN_CREDENTIALS)
                 .contentType(APPLICATION_XML_VALUE)
                 .content(SERVICE_GROUP_INPUT_BODY))
-                .andExpect(status().isCreated());*/
+                .andExpect(status().isCreated());
     }
 
     @Test
     public void adminCanUpdateServiceGroup() throws Exception {
-     /*   mvc.perform(put(URL_PATH)
+        mvc.perform(put(URL_PATH)
                 .header(HTTP_HEADER_KEY_DOMAIN, HTTP_DOMAIN)
                 .with(ADMIN_CREDENTIALS)
                 .contentType(APPLICATION_XML_VALUE)
@@ -124,12 +122,12 @@ public class ServiceGroupControllerTest {
                 .with(ADMIN_CREDENTIALS)
                 .contentType(APPLICATION_XML_VALUE)
                 .content(SERVICE_GROUP_INPUT_BODY))
-                .andExpect(status().isOk());*/
+                .andExpect(status().isOk());
     }
 
     @Test
     public void existingServiceGroupCanBeRetrievedByEverybody() throws Exception {
-      /*  mvc.perform(put(URL_PATH)
+        mvc.perform(put(URL_PATH)
                 .with(ADMIN_CREDENTIALS)
                 .contentType(APPLICATION_XML_VALUE)
                 .content(SERVICE_GROUP_INPUT_BODY))
@@ -137,7 +135,7 @@ public class ServiceGroupControllerTest {
 
         mvc.perform(get(URL_PATH))
                 .andExpect(content().xml(SERVICE_GROUP_INPUT_BODY));
-                */
+
     }
 
     @Test
@@ -153,7 +151,6 @@ public class ServiceGroupControllerTest {
 
     @Test
     public void adminCanDeleteServiceGroup() throws Exception {
-        /*
         mvc.perform(put(URL_PATH).header("Domain", "domain")
                 .with(ADMIN_CREDENTIALS)
                 .contentType(APPLICATION_XML_VALUE)
@@ -165,8 +162,8 @@ public class ServiceGroupControllerTest {
                 .andExpect(status().isOk());
         mvc.perform(get(URL_PATH))
                 .andExpect(status().isNotFound());
-                */
     }
+
     @Test
     public void malformedInputReturnsBadRequest() throws Exception {
         mvc.perform(put(URL_PATH)
@@ -188,6 +185,7 @@ public class ServiceGroupControllerTest {
                 .content(getSampleServiceGroupBodyWithScheme(scheme)))
                 .andExpect(status().isBadRequest());
     }
+
     @Test
     public void creatingServiceGroupUnderBadFormatedDomainReturnsBadRequest() throws Exception {
         mvc.perform(put(URL_PATH)
@@ -212,12 +210,12 @@ public class ServiceGroupControllerTest {
 
     @Test
     public void adminCanAssignNewServiceGroupToOtherOwner() throws Exception {
-     /*   mvc.perform(put(URL_PATH)
+        mvc.perform(put(URL_PATH)
                 .with(ADMIN_CREDENTIALS)
                 .contentType(APPLICATION_XML_VALUE)
                 .header(HTTP_HEADER_KEY_SERVICE_GROUP_OWNER, OTHER_OWNER_NAME_URL_ENCODED)
                 .content(SERVICE_GROUP_INPUT_BODY))
-                .andExpect(status().isCreated());*/
+                .andExpect(status().isCreated());
     }
 
     @Test
diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/monitor/MonitorResourceTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/monitor/MonitorResourceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b680d69b80fd6042b848a08cbac6c02312793556
--- /dev/null
+++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/monitor/MonitorResourceTest.java
@@ -0,0 +1,104 @@
+package eu.europa.ec.edelivery.smp.monitor;
+
+import eu.europa.ec.edelivery.smp.config.PropertiesTestConfig;
+import eu.europa.ec.edelivery.smp.config.SmpAppConfig;
+import eu.europa.ec.edelivery.smp.config.SmpWebAppConfig;
+import eu.europa.ec.edelivery.smp.config.SpringSecurityConfig;
+import eu.europa.ec.edelivery.smp.monitor.MonitorResource;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mock.web.MockServletContext;
+import org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.jdbc.Sql;
+import org.springframework.test.context.jdbc.SqlConfig;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.request.RequestPostProcessor;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+import org.springframework.web.context.ContextLoaderListener;
+import org.springframework.web.context.WebApplicationContext;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+import static org.junit.Assert.*;
+import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+/**
+ * @author Joze Rihtarsic
+ * @since 4.1
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = {
+        PropertiesTestConfig.class,
+        SmpAppConfig.class,
+        SmpWebAppConfig.class,
+        SpringSecurityConfig.class})
+@WebAppConfiguration
+@Sql("classpath:/cleanup-database.sql")
+@Sql("classpath:/webapp_integration_test_data.sql")
+@SqlConfig(encoding = "UTF-8")
+public class MonitorResourceTest {
+
+    @Rule
+    public ExpectedException expectedEx = ExpectedException.none();
+
+    private static final String URL = "/monitor/is-alive";
+    private static final RequestPostProcessor ADMIN_CREDENTIALS = httpBasic("test_admin", "test123");
+    @Autowired
+    private WebApplicationContext webAppContext;
+
+    @Autowired
+    private MonitorResource testInstance;
+
+    private MockMvc mvc;
+
+    @Before
+    public void setup() {
+        mvc = MockMvcBuilders.webAppContextSetup(webAppContext)
+                .apply(SecurityMockMvcConfigurers.springSecurity())
+                .build();
+
+        initServletContext();
+    }
+
+    private void initServletContext() {
+        MockServletContext sc = new MockServletContext("");
+        ServletContextListener listener = new ContextLoaderListener(webAppContext);
+        ServletContextEvent event = new ServletContextEvent(sc);
+        listener.contextInitialized(event);
+    }
+
+
+    @Test
+    public void isAliveNotAuthorized() throws Exception {
+       mvc.perform(get(URL))
+                .andExpect(status().isUnauthorized());
+    }
+
+    @Test
+    public void isAlive() throws Exception {
+        mvc.perform(get(URL)
+                .with(ADMIN_CREDENTIALS))
+                .andExpect(status().isOk());
+    }
+
+    @Test
+    public void testDatabase() {
+        // given
+        expectedEx.expectMessage("TEST_DB_SUCCESSFUL_ROLLBACK MESSAGE");
+        expectedEx.expect(RuntimeException.class);
+        // when
+        boolean bval = testInstance.testDatabase();
+        //then
+        assertTrue(bval);
+    }
+}
\ No newline at end of file
diff --git a/smp-webapp/src/test/resources/webapp_integration_test_data.sql b/smp-webapp/src/test/resources/webapp_integration_test_data.sql
index 4b8b637a36475cedfb0a37d8fcfffecad59ce0dd..a9b2cfbba6a0980b926c91e191e6aebb593f40ae 100644
--- a/smp-webapp/src/test/resources/webapp_integration_test_data.sql
+++ b/smp-webapp/src/test/resources/webapp_integration_test_data.sql
@@ -20,9 +20,9 @@ insert into SMP_CERTIFICATE (ID, CERTIFICATE_ID, VALID_FROM, VALID_TO, CREATED_O
 insert into SMP_USER(ID, USERNAME, ROLE, ACTIVE, CREATED_ON, LAST_UPDATED_ON) values (6, 'Cert2', 'SMP_ADMIN', 1,CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP());
 insert into SMP_CERTIFICATE (ID, CERTIFICATE_ID, VALID_FROM, VALID_TO, CREATED_ON, LAST_UPDATED_ON) values (6, 'CN=utf-8_ż_SMP,O=EC,C=BE:0000000000000666', null,null,CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP());
 
-
-insert into SMP_SERVICE_GROUP(ID, PARTICIPANT_IDENTIFIER, PARTICIPANT_SCHEME,SML_REGISTRED, CREATED_ON, LAST_UPDATED_ON) values (1, 'urn:australia:ncpb', 'ehealth-actorid-qns', 1,CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP());
-insert into SMP_SERVICE_GROUP(ID, PARTICIPANT_IDENTIFIER, PARTICIPANT_SCHEME,SML_REGISTRED, CREATED_ON, LAST_UPDATED_ON) values (2, 'urn:brazil:ncpb', 'ehealth-actorid-qns', 1,CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP());
+-- set the ids to higher values - tests are using sequnce which stars from 1
+insert into SMP_SERVICE_GROUP(ID, PARTICIPANT_IDENTIFIER, PARTICIPANT_SCHEME,SML_REGISTRED, CREATED_ON, LAST_UPDATED_ON) values (100000, 'urn:australia:ncpb', 'ehealth-actorid-qns', 1,CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP());
+insert into SMP_SERVICE_GROUP(ID, PARTICIPANT_IDENTIFIER, PARTICIPANT_SCHEME,SML_REGISTRED, CREATED_ON, LAST_UPDATED_ON) values (200000, 'urn:brazil:ncpb', 'ehealth-actorid-qns', 1,CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP());
 --insert into SMP_SERVICE_GROUP(ID, PARTICIPANT_IDENTIFIER, PARTICIPANT_SCHEME,SML_REGISTRED) values (3, 'urn:poland:ncpb', 'ehealth-participantid-qns', 1);
 
 insert into SMP_DOMAIN (ID, DOMAIN_CODE, SML_SUBDOMAIN, SIGNATURE_KEY_ALIAS, CREATED_ON, LAST_UPDATED_ON) values (1, 'domain','subdomain','sig-key',CURRENT_TIMESTAMP(),CURRENT_TIMESTAMP());