diff --git a/smp-angular/src/app/app-info/smp-info.model.ts b/smp-angular/src/app/app-info/smp-info.model.ts
index ec155f98a10a9e3d9a799ae84ff440713d260067..f6818319c8bd32ee64abf6cb79a2be5c93d113b9 100644
--- a/smp-angular/src/app/app-info/smp-info.model.ts
+++ b/smp-angular/src/app/app-info/smp-info.model.ts
@@ -3,4 +3,5 @@ export interface SmpInfo {
   contextPath?: string;
   authTypes?: string[];
   ssoAuthenticationLabel?: string;
+  ssoAuthenticationURI?: string;
 }
diff --git a/smp-angular/src/app/common/global-lookups.ts b/smp-angular/src/app/common/global-lookups.ts
index faf29e10365a038bca9f8614befac33563503803..f76bd2865652be6cfa77264b5f5592862832e56d 100644
--- a/smp-angular/src/app/common/global-lookups.ts
+++ b/smp-angular/src/app/common/global-lookups.ts
@@ -28,7 +28,7 @@ export class GlobalLookups implements OnInit {
   cachedCertificateList: Array<any> = [];
   cachedCertificateAliasList: Array<String> = [];
   cachedApplicationInfo: SmpInfo;
-  cachedApplicationConfig: SmpConfig;
+  cachedApplicationConfig?: SmpConfig;
   cachedTrustedCertificateList: Array<any> = [];
 
   loginSubscription: Subscription;
@@ -40,22 +40,47 @@ export class GlobalLookups implements OnInit {
               protected http: HttpClient,
               private securityEventService: SecurityEventService) {
     securityService.refreshLoggedUserFromServer();
-    this.refreshDomainLookup();
+    this.refreshApplicationInfo();
+    this.refreshDomainLookupFromPublic();
+
+    securityEventService.onLoginSuccessEvent().subscribe(value => {
+        this.refreshLookupsOnLogin();
+      }
+    );
+
+    securityEventService.onLogoutSuccessEvent().subscribe(value => {
+        this.clearCachedLookups();
+      }
+    );
+  }
+
+  ngOnInit() {
+
+  }
+
+  public refreshLookupsOnLogin() {
+    this.refreshDomainLookupForLoggedUser();
     this.refreshCertificateLookup();
     this.refreshApplicationInfo();
     this.refreshApplicationConfiguration();
     this.refreshTrustedCertificateLookup();
   }
 
-  ngOnInit() {
+  public refreshDomainLookupFromPublic(){
+      let domainUrl = SmpConstants.REST_PUBLIC_DOMAIN_SEARCH;
+      this.refreshDomainLookup(domainUrl);
   }
 
-  public refreshDomainLookup() {
+  public refreshDomainLookupForLoggedUser() {
     let domainUrl = SmpConstants.REST_PUBLIC_DOMAIN_SEARCH;
     // for authenticated admin use internal url which returns more data!
     if (this.securityService.isCurrentUserSMPAdmin() || this.securityService.isCurrentUserSystemAdmin()) {
       domainUrl = SmpConstants.REST_INTERNAL_DOMAIN_MANAGE;
     }
+    this.refreshDomainLookup(domainUrl);
+  }
+
+  public refreshDomainLookup(domainUrl: string) {
     let params: HttpParams = new HttpParams()
       .set('page', '-1')
       .set('pageSize', '-1');
@@ -71,6 +96,7 @@ export class GlobalLookups implements OnInit {
     });
   }
 
+
   public refreshApplicationInfo() {
 
     this.http.get<SmpInfo>(SmpConstants.REST_PUBLIC_APPLICATION_INFO)
@@ -127,7 +153,15 @@ export class GlobalLookups implements OnInit {
         console.log("Error occurred while loading user owners lookup [" + error + "]");
       });
     }
+  }
 
+  public clearCachedLookups() {
+    this.cachedCertificateList = [];
+    this.cachedTrustedCertificateList = [];
+    this.cachedServiceGroupOwnerList = [];
+    this.cachedApplicationConfig = null;
+    this.cachedDomainList = [];
+    this.refreshDomainLookupFromPublic();
   }
 
   public refreshCertificateLookup() {
diff --git a/smp-angular/src/app/domain/domain-controller.ts b/smp-angular/src/app/domain/domain-controller.ts
index 57298d0d2fe16e6bbef84da06ce10052d7608ede..aa87bf865a973b3b5004d7ba184cba861aca03f9 100644
--- a/smp-angular/src/app/domain/domain-controller.ts
+++ b/smp-angular/src/app/domain/domain-controller.ts
@@ -49,7 +49,7 @@ export class DomainController implements SearchTableController {
     }
   }
   public dataSaved() {
-    this.lookups.refreshDomainLookup();
+    this.lookups.refreshDomainLookupForLoggedUser();
   }
 
   validateDeleteOperation(rows: Array<SearchTableEntity>){
diff --git a/smp-angular/src/app/domain/domain.component.ts b/smp-angular/src/app/domain/domain.component.ts
index 380e27e9403c6b5aca4f592cf79f0a5d8e1aaef4..cf834ada45cb1af202991a127bee665e7562cc8f 100644
--- a/smp-angular/src/app/domain/domain.component.ts
+++ b/smp-angular/src/app/domain/domain.component.ts
@@ -258,7 +258,7 @@ export class DomainComponent implements AfterViewInit {
         if (res) {
           if (res.success) {
             this.alertService.success("Domain " + domain.domainCode + " registered to sml!");
-            this.lookups.refreshDomainLookup();
+            this.lookups.refreshDomainLookupForLoggedUser();
             domain.smlRegistered = true;
           } else {
             this.alertService.exception('Error occurred while registering domain:' + domain.domainCode, res.errorMessage);
@@ -281,7 +281,7 @@ export class DomainComponent implements AfterViewInit {
         if (res) {
           if (res.success) {
             this.alertService.success("Domain " + domain.domainCode + " unregistered from sml!");
-            this.lookups.refreshDomainLookup();
+            this.lookups.refreshDomainLookupForLoggedUser();
             domain.smlRegistered = false;
           } else {
             this.alertService.exception('Error occurred while unregistering domain:' + domain.domainCode, res.errorMessage);
diff --git a/smp-angular/src/app/login/login.component.html b/smp-angular/src/app/login/login.component.html
index ea31d2bda56502f75ddd718468c66f06490c35f8..338b1044e52444f57e121c21936badcfbcf5e40d 100644
--- a/smp-angular/src/app/login/login.component.html
+++ b/smp-angular/src/app/login/login.component.html
@@ -3,7 +3,7 @@
     <mat-card *ngIf="isUserAuthSSOEnabled()  == true" fxFlex="400px" [style]="'width:400px;height:300px;margin:10px'">
       <mat-card-title>SSO Login: {{lookups.cachedApplicationInfo.ssoAuthenticationLabel}}</mat-card-title>
       <mat-card-content style="align-items: center;justify-content: center;display: flex;height: 200px;">
-        <a mat-raised-button color="primary" href="/smp/ui/rest/security/cas" [style]="'width=150px'">
+        <a mat-raised-button color="primary" href="{{lookups.cachedApplicationInfo.ssoAuthenticationURI}}" [style]="'width=150px'">
           <mat-icon>input</mat-icon>
           <span> SSO Login</span>
         </a>
diff --git a/smp-angular/src/app/login/login.component.ts b/smp-angular/src/app/login/login.component.ts
index 82d77a78fc36677e8c596c5ea4af76e7ee564423..2c81104382c7a9f552c6023ddfdcf358c54aa661 100644
--- a/smp-angular/src/app/login/login.component.ts
+++ b/smp-angular/src/app/login/login.component.ts
@@ -56,7 +56,6 @@ export class LoginComponent implements OnInit, OnDestroy {
         } else {
           this.router.navigate([this.returnUrl]);
         }
-        this.lookups.refreshApplicationConfiguration();
       });
 
     this.securityEventService.onLoginErrorEvent().subscribe(
diff --git a/smp-angular/src/app/security/security.service.ts b/smp-angular/src/app/security/security.service.ts
index 43692c30fa27ab790d4d379dcf0e6420a1ec66ea..02210b828f37b12a9501550c6ceb23a9a0335431 100644
--- a/smp-angular/src/app/security/security.service.ts
+++ b/smp-angular/src/app/security/security.service.ts
@@ -6,6 +6,7 @@ import {HttpClient, HttpHeaders} from '@angular/common/http';
 import {SmpConstants} from "../smp.constants";
 import {Authority} from "./authority.model";
 import {AlertMessageService} from "../common/alert-message/alert-message.service";
+import {GlobalLookups} from "../common/global-lookups";
 
 @Injectable()
 export class SecurityService {
@@ -16,6 +17,7 @@ export class SecurityService {
     private http: HttpClient,
     private alertService: AlertMessageService,
     private securityEventService: SecurityEventService,
+    private lookups: GlobalLookups
   ) {
     this.securityEventService.onLogoutSuccessEvent().subscribe(() => window.location.reload());
     this.securityEventService.onLogoutErrorEvent().subscribe((error) => this.alertService.error(error));
diff --git a/smp-docker/compose/tomcat-mysql-smp-sml/docker-compose.yml b/smp-docker/compose/tomcat-mysql-smp-sml/docker-compose.yml
index e91550851b59c804b0c79b455c0da3c1bf9c8777..63bc8ddd7e465b34fdf4fddad9b74ad5b7ee579e 100644
--- a/smp-docker/compose/tomcat-mysql-smp-sml/docker-compose.yml
+++ b/smp-docker/compose/tomcat-mysql-smp-sml/docker-compose.yml
@@ -3,12 +3,32 @@ services:
   tomcat-mysql-sml:
     image: smp-sml-tomcat-mysql:${SMP_VERSION}
     container_name: smp-sml-tomcat-mysql
+    hostname: eulogin.protected.smp.local
     environment:
-      - SMP_INIT_PROPERTIES=smp.passwordPolicy.expired.forceChange=false||smp.cluster.enabled=false
+      - SMP_INIT_PROPERTIES=smp.passwordPolicy.expired.forceChange=false
+        ||smp.cluster.enabled=false
+        ||smp.ui.authentication.types=PASSWORD|SSO
+        ||smp.sso.cas.url=https://eulogin-mock-server:7102/cas
+        ||smp.sso.cas.urlpath.login=login
+        ||smp.sso.cas.token.validation.urlpath=laxValidate
+        ||smp.sso.cas.callback.url=http://eulogin.protected.smp.local:8982/smp/ui/public/rest/security/cas
+
     volumes:
-      - ./properties/db-scripts:/tmp/custom-data/  # init script.
+      - ./properties/db-scripts:/tmp/custom-data/
+      - ./properties/keystores:/tmp/keystores/
     ports:
       - "3908:3306"
       - "8982:8080"
       - "6902:6901"
       - "8953:53"
+
+  eulogin-mock-server:
+    image: edelivery-docker.devops.tech.ec.europa.eu/eulogin/mockserver:6.2.7
+    container_name: eulogin
+    hostname: eulogin-mock-server
+    volumes:
+        - ./eulogin/init-data:/resources/ecas-mock-server
+ # Map this folder to host to be able to change runtime data for manual testing!
+ #       - ./eulogin/ecas-mock-server:/data/ecas-mock-server
+    ports:
+      - "7102:7102"
\ No newline at end of file
diff --git a/smp-docker/compose/tomcat-mysql-smp-sml/eulogin/ecas-mock-server/.disable_default_excludes b/smp-docker/compose/tomcat-mysql-smp-sml/eulogin/ecas-mock-server/.disable_default_excludes
new file mode 100644
index 0000000000000000000000000000000000000000..e5d41c1eff637329155b8c79af85d53dd0205b60
--- /dev/null
+++ b/smp-docker/compose/tomcat-mysql-smp-sml/eulogin/ecas-mock-server/.disable_default_excludes
@@ -0,0 +1,4 @@
+.gitignore is excluded when sharing artifacts on bamboo
+http://ant.apache.org/manual/dirtasks.html
+
+And we want this folder to be shared in order to keep the project structure.
\ No newline at end of file
diff --git a/smp-docker/compose/tomcat-mysql-smp-sml/eulogin/ecas-mock-server/.gitignore b/smp-docker/compose/tomcat-mysql-smp-sml/eulogin/ecas-mock-server/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..dd5392ff3e5b8f6fc530d32fe415332db0053194
--- /dev/null
+++ b/smp-docker/compose/tomcat-mysql-smp-sml/eulogin/ecas-mock-server/.gitignore
@@ -0,0 +1,5 @@
+# Ignore everything in this directory
+.gitignore
+# Except the following
+!.gitignore
+!.disable_default_excludes
\ No newline at end of file
diff --git a/smp-docker/compose/tomcat-mysql-smp-sml/eulogin/init-data/ecas-config-smp.properties b/smp-docker/compose/tomcat-mysql-smp-sml/eulogin/init-data/ecas-config-smp.properties
new file mode 100644
index 0000000000000000000000000000000000000000..a35c1ddfea79891a89f1698f875b76941c986d99
--- /dev/null
+++ b/smp-docker/compose/tomcat-mysql-smp-sml/eulogin/init-data/ecas-config-smp.properties
@@ -0,0 +1,484 @@
+###########################################################################
+# ECAS Client configuration properties                                    #
+###########################################################################
+#### Note: System property to use an alternative name: eu.cec.digit.ecas.client.configFile
+#### E.g. -Deu.cec.digit.ecas.client.configFile=XXX.properties
+####
+#### Since version 1.9, conventional configuration file names can be used
+#### instead of the "configFile" property.
+####
+#### Conventional name = "ecas-config-" + escaped(context-path) + (".xml"||".properties")
+####
+#### where escaped() means replacing all '/' by '.'
+#### and   context-path is the context path of your web application WITHOUT the starting slash '/'
+####
+####       e.g. "/dg-agri/ecas-demo" becomes "dg-agri.ecas-demo"
+####       thus, the conventional file name would be: "ecas-config-dg-agri.ecas-demo.properties"
+####
+#### The file using the conventional name prevails over the default file name ("ecas-config.properties")
+#### if both are available.
+###########################################################################
+## configFile:
+### Unique name of the external configuration file that contains
+### the actual ECAS Client configuration, if any.
+### [Optional]
+### [DefaultValue=none]
+#eu.cec.digit.ecas.client.configFile=ecas-config-myAppId.properties
+###########################################################################
+## configurationId:
+### Unique id for this ECAS Client configuration.
+### Can be used as key to retrieve this configuration in non-Web part of your application.
+### [Optional] [Deprecated]
+### [DefaultValue=null]
+#eu.cec.digit.ecas.client.filter.configurationId=eu.cec.myDG.myApp.myConfig
+###########################################################################
+## serverName:
+### Name of your host running the ECAS Client-protected application.
+### If you don't specify either 'serverName' or 'serviceUrl' or a custom 'serviceResolver',
+### the value is retrieved from the local server.
+### [Optional]
+### [DefaultValue=null]
+edu.yale.its.tp.cas.client.filter.serverName=eulogin.protected.smp.local
+###########################################################################
+## serviceUrl:
+### URL of your application.
+### Either 'serviceUrl' or 'serverName' is required.
+### Use this only if you have only one URL.
+### [Optional] [NOT recommended]
+#edu.yale.its.tp.cas.client.filter.serviceUrl=https://myHost:7002/myService
+###########################################################################
+## ecasServerDirectHostName:
+### Name of the host of the ECAS server for direct connections (without reverse proxy)
+### [Optional]
+### [DefaultValue=ecas.cc.cec.eu.int]
+#eu.cec.digit.ecas.client.filter.ecasServerDirectHostName=ecas.cc.cec.eu.int
+###########################################################################
+## ecasServerDirectOneWaySslPort:
+### One-Way SSL port of the ECAS server for direct connections (without reverse proxy)
+### [Optional]
+### [DefaultValue=7002]
+#eu.cec.digit.ecas.client.filter.ecasServerDirectOneWaySslPort=7002
+###########################################################################
+## ecasServerDirectTwoWaySslPort:
+### Two-Way SSL port of the ECAS server for direct connections (without reverse proxy)
+### [Optional]
+### [DefaultValue=7003]
+#eu.cec.digit.ecas.client.filter.ecasServerDirectTwoWaySslPort=7003
+###########################################################################
+## ecasServerReverseProxyHostName:
+### Name of the reverse proxy host in front of the ECAS server for proxied connections
+### [Optional]
+### [DefaultValue=null]
+#eu.cec.digit.ecas.client.filter.ecasServerReverseProxyHostName=webgate.ec.europa.eu
+###########################################################################
+## ecasServerReverseProxyPort:
+### Port of the reverse proxy in front of the ECAS server for proxied connections
+### [Optional]
+### [DefaultValue=none]
+#eu.cec.digit.ecas.client.filter.ecasServerReverseProxyPort=443
+###########################################################################
+## ecasBaseUrl:
+### Base URL for all ECAS URLs when they are specified as relative URLs.
+### If defined, prevails over the ECAS server URL properties named 'ecasServerDirect...' and 'ecasServerReverseProxy...'
+### [Optional]
+### [DefaultValue=https://ecas.cc.cec.eu.int:7002]
+eu.cec.digit.ecas.client.filter.ecasBaseUrl=https://eulogin-mock-server:7102
+###########################################################################
+## initLoginUrl:
+### ECAS Server init login URL.
+### [Optional]
+### [DefaultValue=/cas/login/init]
+#eu.cec.digit.ecas.client.filter.initLoginUrl=/cas/login/init
+###########################################################################
+## loginUrl:
+### ECAS Server login URL.
+### [Optional]
+### [DefaultValue=/cas/login]
+#edu.yale.its.tp.cas.client.filter.loginUrl=/cas/login
+###########################################################################
+## validateUrl:
+### ECAS Server Validation URL.
+### [Optional]
+### [DefaultValue=/cas/TicketValidationService]
+### LegalValue:
+#edu.yale.its.tp.cas.client.filter.validateUrl=/cas/TicketValidationService
+###########################################################################
+## proxyUrl:
+### ECAS Server Proxy URL.
+### [Optional] [For ECASProxies]
+### [DefaultValue=/cas/proxy]
+#edu.yale.its.tp.cas.client.filter.proxyUrl=/cas/proxy
+###########################################################################
+## renew:
+### Use 'renew' to always force renew (i.e. force to re-authenticate
+### by re-entering login and password).
+### [Optional] [NOT recommended]
+### [DefaultValue=false]
+#edu.yale.its.tp.cas.client.filter.renew=false
+###########################################################################
+## authorizedProxy:
+### The one and only one ECAS proxy authorized to access your application using
+### proxy tickets.
+### [Optional] [Deprecated]
+### [NOT recommended] [For applications used by ECAS Proxy clients]
+### [DefaultValue=none]
+#edu.yale.its.tp.cas.client.filter.authorizedProxy=https://host.cec.eu.int/someService
+###########################################################################
+## serverProtocol:
+### Protocol can be either http or https.
+### This is only needed for applications behind a reverse proxy that want
+### to overwrite the protocol of the local server (i.e. when the
+### application is not accessible internally and when the reverse proxy
+### protocol is different from the local server's protocol)
+### [Optional]
+### [DefaultValue=none]
+### LegalValues:
+#eu.cec.digit.ecas.client.filter.serverProtocol=http
+#eu.cec.digit.ecas.client.filter.serverProtocol=https
+#eu.cec.digit.ecas.client.filter.serverProtocol=dynamic
+###########################################################################
+## serverPort:
+### HTTP port of your host.
+### [Optional]
+### [DefaultValue=none]
+#eu.cec.digit.ecas.client.filter.serverPort=7001
+###########################################################################
+## serverSSLPort:
+### HTTPS port of your host.
+### [Optional]
+### [DefaultValue=none]
+#eu.cec.digit.ecas.client.filter.serverSSLPort=7002
+###########################################################################
+## serverContextPath:
+### Context root of the application.
+### Must begin with a slash '/'.
+### This is only needed for applications behind a reverse proxy that modifies
+### the local application's context root and when the application is only
+### accessible through that reverse proxy.
+### [Optional]
+### [DefaultValue=none]
+#eu.cec.digit.ecas.client.filter.serverContextPath=/myProxiedApplicationContextPath
+###########################################################################
+## authorizedProxies:
+### The comma-separated list of ECAS proxies authorized to access your application
+### using proxy tickets.
+### [Optional] [For applications used by ECAS Proxy clients]
+### [DefaultValue=none]
+#eu.cec.digit.ecas.client.filter.authorizedProxies=https://host1.cec.eu.int/service1,\
+#https://host2.cec.eu.int/service2,https://host3.cec.eu.int/service3,\
+#https://host4.cec.eu.int/service4
+###########################################################################
+## proxyChainTrustHandler:
+### Class implementating proxyChainTrustHandlerIntf to be used.
+### [Optional] [For applications used by ECAS Proxy clients]
+### [DefaultValue=eu.cec.digit.ecas.client.validation.ProxyChainTrustHandler]
+### ProvidedImplementations:
+#eu.cec.digit.ecas.client.filter.proxyChainTrustHandler=eu.cec.digit.ecas.client.validation.ProxyChainTrustHandler
+#eu.cec.digit.ecas.client.filter.proxyChainTrustHandler=eu.cec.digit.ecas.client.validation.FirstParentProxyChainTrustHandler
+###########################################################################
+## proxyCallbackUrl:
+### URL of your application used to receive ProxyTickets from the ECAS Server.
+### [Optional] [For ECASProxies]
+### [DefaultValue=none]
+#eu.cec.digit.ecas.client.filter.proxyCallbackUrl=https://myHost:7002/myService/proxy
+###########################################################################
+## applicationServer:
+### Type of application server.
+### [Optional] [Deprecated]
+### [DefaultValue=weblogic]
+#eu.cec.digit.ecas.client.filter.applicationServer=weblogic
+###########################################################################
+## groups:
+### Comma-separated list of groups to ask ECAS.
+### [Optional]
+### [DefaultValue=none]
+eu.cec.digit.ecas.client.filter.groups=*
+###########################################################################
+## acceptStrengths:
+### [Optional]
+### [DefaultValue=PASSWORD,PASSWORD_SMS,PASSWORD_TOKEN,CLIENT_CERT]
+### For the mock-up server, use BASIC strength.
+### LegalValues:
+#eu.cec.digit.ecas.client.filter.acceptStrengths=BASIC
+#eu.cec.digit.ecas.client.filter.acceptStrengths=PASSWORD,PASSWORD_SMS,PASSWORD_TOKEN,CLIENT_CERT
+eu.cec.digit.ecas.client.filter.acceptStrengths=BASIC,MOBILE_APP,PASSWORD_MOBILE_APP,PASSWORD_SOFTWARE_TOKEN,PASSWORD_SMS,PASSWORD_TOKEN,PASSWORD_TOKEN_CRAM,STORK,SOCIAL_NETWORKS,CLIENT_CERT
+###########################################################################
+## maxConnections:
+### [Optional]
+### [DefaultValue=2]
+eu.cec.digit.ecas.client.filter.maxConnections=5
+###########################################################################
+## connectionTimeout:
+### [Optional]
+### [DefaultValue=180000] [unit=milliseconds]
+eu.cec.digit.ecas.client.filter.connectionTimeout=60000
+###########################################################################
+## strictSSLHostnameVerification:
+### [Optional]
+### [DefaultValue=true]
+eu.cec.digit.ecas.client.filter.strictSSLHostnameVerification=true
+###########################################################################
+## extraGroupHandler:
+### [Optional]
+### [DefaultValue=none]
+eu.cec.digit.ecas.client.filter.extraGroupHandler=eu.cec.digit.ecas.client.validation.CompositeUserDetailsExtraGroupHandler
+eu.cec.digit.ecas.client.filter.param.name.composite-extra-group-handlers=composite-extra-group-handlers
+eu.cec.digit.ecas.client.filter.param.value.composite-extra-group-handlers=examples.groups.DepartmentNumberExtraGroupHandler,examples.groups.DomainExtraGroupHandler,examples.groups.EmployeeTypeExtraGroupHandler
+###########################################################################
+## authEventListeners:
+### [Optional]
+### [DefaultValue=none]
+eu.cec.digit.ecas.client.filter.authEventListeners=eu.cec.digit.ecas.client.event.StatsEventListener
+###########################################################################
+## configurationOrder:
+### Defines the configuration order to use.
+### 'mbean' means the EcasIdentityAsserter MBean,
+### 'file' means the external configuration file (usually called ecas-config.xml or ecas-config.properties),
+### 'descriptor' means the resource or deployment descriptor (such as web.xml),
+### '<<' means 'overridden by'.
+### The default configuration chain order is 'mbean << file << descriptor',
+### which means first the MBean configuration, then the external file,
+### then the deployment descriptor, each time overriding already defined properties.
+### Hence, with the default value, the deployment descriptor takes precedence over the external file,
+### and the external file takes precedence over the MBean.
+### Another useful configuration for single-application domains is 'file << descriptor << mbean',
+### where it is the MBean that prevails instead of the descriptor for application entirely
+### configurable by the WebLogic Domain Administrator.
+### [Optional]
+### [DefaultValue=mbean << file << descriptor]
+eu.cec.digit.ecas.client.filter.configurationOrder=mbean << file
+###########################################################################
+## initSignatureUrl:
+### ECAS Server Signature init URL to negotiate a SignatureRequestId.
+### [Optional]
+### [DefaultValue=/cas/signature/init]
+#eu.cec.digit.ecas.client.filter.initSignatureUrl=/cas/signature/init
+###########################################################################
+## signatureUrl:
+### ECAS Server Signature page where the user performs the signature by re-authenticating.
+### [Optional]
+### [DefaultValue=/cas/signature/sign.cgi]
+#eu.cec.digit.ecas.client.filter.signatureUrl=/cas/signature/sign.cgi
+###########################################################################
+## retrieveSignatureUrl:
+### ECAS Server Signature get URL where applications retrieve signed XML documents.
+### [Optional]
+### [DefaultValue=/cas/signature/get]
+#eu.cec.digit.ecas.client.filter.retrieveSignatureUrl=/cas/signature/get
+###########################################################################
+## transactionUrl:
+### ECAS Server Signature transaction URL where applications sign XML documents based upon ECAS Proxy Tickets.
+### [Optional]
+### [DefaultValue=/cas/transaction/sign]
+#eu.cec.digit.ecas.client.filter.transactionUrl=/cas/transaction/sign
+###########################################################################
+## certificateRevocationUrl:
+### ECAS Server Signature certificateRevocation URL where applications can ask ECAS whether the signature certificate is valid.
+### [Optional]
+### [DefaultValue=/cas/signature/certValidate]
+#eu.cec.digit.ecas.client.filter.certificateRevocationUrl=/cas/signature/certValidate
+###########################################################################
+## requestingUserDetails:
+### Set "requestingUserDetails" on "true" to always request all additional user details such as
+### the domain, the username in this domain, first name, last name, email, department number, etc.
+### [Optional]
+### [DefaultValue=false]
+eu.cec.digit.ecas.client.filter.requestingUserDetails=true
+###########################################################################
+## serviceResolver:
+### Set "serviceResolver" to replace the default implementation using the
+### serverName or serviceUrl properties to construct the original service.
+### [Optional]
+### [DefaultValue=eu.cec.digit.ecas.client.resolver.service.DefaultServiceResolver]
+### ProvidedImplementations:
+#eu.cec.digit.ecas.client.filter.serviceResolver=eu.cec.digit.ecas.client.resolver.service.DefaultServiceResolver
+#eu.cec.digit.ecas.client.filter.serviceResolver=eu.cec.digit.ecas.client.resolver.service.ReverseProxyAwareServiceResolver
+###########################################################################
+### Custom configuration parameter name labelled "serviceResolverHeader":
+### [Optional]
+### Note that a custom parameter must have both a param.name and a param.value
+#eu.cec.digit.ecas.client.filter.param.name.serviceResolverHeader=serviceResolverHeader
+###########################################################################
+### Custom configuration parameter value for "serviceResolverHeader":
+### [Optional]
+### Note that a custom parameter must have both a param.name and a param.value
+#eu.cec.digit.ecas.client.filter.param.value.serviceResolverHeader=X-ori-url
+###########################################################################
+# loginDateValidator
+### Strategy to override the expiration of the SSO session.
+### Allows to refuse users who were authenticated too long ago.
+#eu.cec.digit.ecas.client.filter.loginDateValidator=eu.cec.digit.ecas.client.configuration.DummyLoginDateValidator
+#eu.cec.digit.ecas.client.filter.param.name.loginDateExpirationInMillis=loginDateExpirationInMillis
+# one hour:
+#eu.cec.digit.ecas.client.filter.param.value.loginDateExpirationInMillis=3600000
+###########################################################################
+# reSubmitPosts
+### Whether to re-submit form parameters that are posted to protected
+### resources while the user is not yet authenticated.
+### [Optional]
+### [DefaultValue=false]
+eu.cec.digit.ecas.client.filter.reSubmitPosts=true
+###########################################################################
+## httpRedirector
+### The implementation of HttpRedirector to use to redirect to the ECAS Server login URL.
+### [Optional]
+### [DefaultValue=eu.cec.digit.ecas.client.http.DefaultHttpRedirector]
+### ProvidedImplementations:
+#eu.cec.digit.ecas.client.filter.httpRedirector=eu.cec.digit.ecas.client.http.DefaultHttpRedirector
+#eu.cec.digit.ecas.client.filter.httpRedirector=eu.cec.digit.ecas.client.http.BrowserPostRedirector
+#eu.cec.digit.ecas.client.filter.httpRedirector=eu.cec.digit.ecas.client.http.LegacyHttpRedirector
+#eu.cec.digit.ecas.client.filter.httpRedirector=eu.cec.digit.ecas.client.http.ajax.JsonHttpRedirector
+#eu.cec.digit.ecas.client.filter.httpRedirector=eu.cec.digit.ecas.client.http.JavascriptHttpRedirector
+#eu.cec.digit.ecas.client.filter.httpRedirector=eu.cec.digit.ecas.client.http.LegacyJavascriptHttpRedirector
+###########################################################################
+## trustNonEcasJEESubject
+### Whether or not to trust users who are authenticated by the JEE container with another mechanism than ECAS.
+### If true, those users are not re-authenticated with ECAS but are granted immediate access into the application.
+### If false, these JEE-already-authenticated users are re-authenticated with ECAS for requests which are filtered
+### either by the GatewayFilter or the legacy EcasFilter.
+### This property has no effect when using security-constraints or a WebLogic Identity Assertion Provider.
+### [Optional]
+### [DefaultValue=false]
+#eu.cec.digit.ecas.client.filter.trustNonEcasJEESubject=true
+###########################################################################
+## acceptedTicketTypes
+### The "acceptedTicketTypes" property is the sequence of ECAS ticket-types accepted by the application.
+### If users try to access the application with other ticket types than the ones specified here,
+### an INVALID_TICKET error code is returned by ECAS.
+### [Optional]
+### [DefaultValue=SERVICE,PROXY]
+#### Legal values: SERVICE,PROXY,DESKTOP or a combination
+#eu.cec.digit.ecas.client.filter.acceptedTicketTypes=SERVICE
+#eu.cec.digit.ecas.client.filter.acceptedTicketTypes=SERVICE,PROXY
+#eu.cec.digit.ecas.client.filter.acceptedTicketTypes=SERVICE,PROXY,DESKTOP
+eu.cec.digit.ecas.client.filter.acceptedTicketTypes=SERVICE,PROXY,DESKTOP
+###########################################################################
+## assuranceLevel
+### The "assuranceLevel" property is the level of assurance in the user's identity
+### the application requires to grant access.
+### If users with assurance levels lower than the one configured here try to access the application,
+### an INVALID_USER error code is returned by ECAS.
+### [Optional]
+### [DefaultValue=TOP]
+#### Legal values: TOP,HIGH,MEDIUM,LOW,NO_ASSURANCE
+#eu.cec.digit.ecas.client.filter.assuranceLevel=TOP
+#eu.cec.digit.ecas.client.filter.assuranceLevel=HIGH
+#eu.cec.digit.ecas.client.filter.assuranceLevel=MEDIUM
+#eu.cec.digit.ecas.client.filter.assuranceLevel=LOW
+###########################################################################
+## proxyGrantingProtocol
+### The "proxyGrantingProtocol" property is used to specify the protocol to be used
+### to obtain ProxyGrantingTickets (PGT).
+### [Optional]
+### [DefaultValue=none]
+#### Legal values: PGT_URL,CLIENT_CERT,DESKTOP
+#eu.cec.digit.ecas.client.filter.proxyGrantingProtocol=PGT_URL
+#eu.cec.digit.ecas.client.filter.proxyGrantingProtocol=CLIENT_CERT
+#eu.cec.digit.ecas.client.filter.proxyGrantingProtocol=DESKTOP
+###########################################################################
+## trustedCertificates
+### The "trustedCertificates" property is used to specify the comma-separated list of base64-encoded X.509 certificates of the
+### trusted Certificate Authorities used for SSL by the ECAS server or mockup server.
+### [Optional]
+### [DefaultValue=none]
+#eu.cec.digit.ecas.client.filter.trustedCertificates=MIIDLTCCAhWgAwIBAgIBATANBgkqhkiG9w0BAQUFADAmMSQwIgYDVQQDExtFdXJv\
+#cGVhbiBDb21taXNzaW9uIFJvb3QgQ0EwHhcNMDMwMTIxMTgwMTM4WhcNMTIxMjMx\
+#MTgwMTM4WjAmMSQwIgYDVQQDExtFdXJvcGVhbiBDb21taXNzaW9uIFJvb3QgQ0Ew\
+#ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2qIU7u75rPCUqzM0a0HT4\
+#eSMa+bFzSWcIxqJU1dPY1WGkqsee8rom3waf3scuIXHdk6CL43+s2zMrd0W8gyLL\
+#DBN46Z4BG9dIyhvHTlGTg7grVvHypbsvgC0lzb7xM/oFFs4AVUVqNgQPx1bELB3s\
+#t3NZRLUvFWNHXWDzR6CC/JTznn7NYBB0OScX7oMjYPQFL6n7vgKIVaU7YcZ+tJ6r\
+#a4oVt7zu3seiBzO0gijTcvlZ8PMIZUc21DnV2PtFgzaq5iem8mGdlVZXyL6MzbRx\
+#d4GIODPnWpCKABHd8dUMbbkOtkp1HMEQmaEdYr4zFFs53Snq4YZzFFhxRrfZCZfj\
+#AgMBAAGjZjBkMB8GA1UdIwQYMBaAFI+na6QQzxN0Z0ZdrF1wdDKuMkbbMB0GA1Ud\
+#DgQWBBSPp2ukEM8TdGdGXaxdcHQyrjJG2zAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0T\
+#AQH/BAgwBgEB/wIBATANBgkqhkiG9w0BAQUFAAOCAQEAaPuj04oBLi6JExkkOzJX\
+#yYf+x0/dXXEt8oknr2qlfyaM2R6PXVcqE6HKtRcvxzuDSrgEHBb8N9k21YuF6ftM\
+#QeQTyRcJVJVuTW29Vw+vxj/NPqGSjpWTWA32jd2FqM8lcrw8JQ+cOtCMYxdjBb6j\
+#AJ9yiZ6AScEWGlN6hUS/KFZByKEnQTLiJ9BHooB651e1+TYs8BA3LuSYi3xKYniT\
+#sjde9nvePJAhTsxjs+oJklZiNR5yR6w385ah5Lgqyieb3+jAVfgExjc+h2hayOAl\
+#0/y2h8gQOlDzNRPUUftrUo9dMKJqAAyZyH18HH3kYbJ+9iy/cmHXY8OU5AdqTS/F\
+#hg\=\=\
+#,...\
+#,...\
+#,...
+###########################################################################
+## applicationSecurityLevel
+### The "applicationSecurityLevel" property is the level of security this application requires
+### [Optional]
+### [DefaultValue=NO_SECURITY]
+#### Legal values: TOP,HIGH,MEDIUM,LOW,NO_SECURITY
+#eu.cec.digit.ecas.client.filter.applicationSecurityLevel=TOP
+#eu.cec.digit.ecas.client.filter.applicationSecurityLevel=HIGH
+#eu.cec.digit.ecas.client.filter.applicationSecurityLevel=MEDIUM
+#eu.cec.digit.ecas.client.filter.applicationSecurityLevel=LOW
+###########################################################################
+## negotiatePrivateServiceTicket
+### The "negotiatePrivateServiceTicket" property controls whether or not the ECAS ticket must be
+### sent in the service URL or can be pre-negotiated when LoginRequestTransactions are
+### enabled (via a configured HttpRedirector equal to eu.cec.digit.ecas.client.http.DefaultHttpRedirector
+### or eu.cec.digit.ecas.client.http.BrowserPostRedirector).
+### If "true", the ticket is not sent in the service URL but is only sent through the back-channel
+### between the application and the ECAS server over SSL/TLS.
+### [Optional]
+### [DefaultValue=false]
+#### Legal values: false,true
+#eu.cec.digit.ecas.client.filter.negotiatePrivateServiceTicket=false
+#eu.cec.digit.ecas.client.filter.negotiatePrivateServiceTicket=true
+###########################################################################
+## advancedHttpSessionManagement
+### The "advancedHttpSessionManagement" property controls whether HTTP state management through the establishment of the HttpSession is mandatory.
+### If "true", the ECAS Client will take appropriate care to enforce that a valid HttpSession is created and maintained.
+### Otherwise, these actions are not undertaken.
+### You should let this value to "true" unless your end-users are only Web service clients unable to maintain cookie-based HttpSessions.
+### [Optional]
+### [DefaultValue=true]
+#### Legal values: true,false
+#eu.cec.digit.ecas.client.filter.advancedHttpSessionManagement=true
+#eu.cec.digit.ecas.client.filter.advancedHttpSessionManagement=false
+###########################################################################
+## ticketResolver:
+### Set "ticketResolver" to replace the default implementation.
+### [Optional]
+### [DefaultValue=eu.cec.digit.ecas.client.resolver.ticket.DefaultTicketResolver]
+### ProvidedImplementations:
+#eu.cec.digit.ecas.client.filter.ticketResolver=eu.cec.digit.ecas.client.resolver.ticket.DefaultTicketResolver
+###########################################################################
+## redirectionInterceptors:
+### Set "redirectionInterceptors" to replace the default implementation.
+### [Optional]
+### [DefaultValue=eu.cec.digit.ecas.client.http.robot.DefaultRobotInterceptor]
+### ProvidedImplementations:
+#eu.cec.digit.ecas.client.filter.redirectionInterceptors=eu.cec.digit.ecas.client.http.robot.DefaultRobotInterceptor
+#eu.cec.digit.ecas.client.filter.redirectionInterceptors=eu.cec.digit.ecas.client.http.robot.BlindRobotInterceptor
+#eu.cec.digit.ecas.client.filter.redirectionInterceptors=eu.cec.digit.ecas.client.http.robot.OnlyRobotInterceptor
+#eu.cec.digit.ecas.client.filter.redirectionInterceptors=eu.cec.digit.ecas.client.http.robot.DefaultRobotInterceptor, eu.cec.digit.ecas.client.http.ajax.UnauthorizedAjaxRedirectionInterceptor
+#eu.cec.digit.ecas.client.filter.redirectionInterceptors=eu.cec.digit.ecas.client.http.robot.DefaultRobotInterceptor, eu.cec.digit.ecas.client.http.ajax.JsonAjaxRedirectionInterceptor
+###########################################################################
+## extendedUserDetailsTypeMapper:
+### Set "extendedUserDetailsTypeMapper" to plugin your implementation of the eu.cec.digit.ecas.client.validation.ExtendedUserDetailsTypeMapper interface,
+### which is used to type extendedUserDetails instead of using a Map of Strings.
+### [Optional]
+### [DefaultValue=none]
+### Example:
+#eu.cec.digit.ecas.client.filter.extendedUserDetailsTypeMapper=eu.europa.ec.mydg.myapp.MyExtendedUserDetailsTypeMapper
+###########################################################################
+## singleLogoutCallbackUrl:
+### URL of your application used to receive LogoutRequests from the ECAS Server (for the Single Sign-Out Protocol).
+### [Optional] [For Clustered environments without HttpSession replication]
+### [DefaultValue=none]
+#eu.cec.digit.ecas.client.filter.singleLogoutCallbackUrl=https://myHost:7002/myService/singleLogout
+###########################################################################
+## configurationAdapterSelector:
+### Set "configurationAdapterSelector" to replace the default implementation.
+### [Optional]
+### [DefaultValue=eu.cec.digit.ecas.client.configuration.IdemConfigurationAdapterSelector]
+### ProvidedImplementations:
+#eu.cec.digit.ecas.client.filter.configurationAdapterSelector=eu.cec.digit.ecas.client.configuration.IdemConfigurationAdapterSelector
+###########################################################################
+## baseCallbackUrl:
+### The prefix to append to other callback URL properties when they are set as relative URLs.
+### [Optional]
+### [DefaultValue=none]
+#eu.cec.digit.ecas.client.filter.baseCallbackUrl=https://myHost:7002/myContextPath
+###########################################################################
diff --git a/smp-docker/compose/tomcat-mysql-smp-sml/eulogin/init-data/ecas.properties b/smp-docker/compose/tomcat-mysql-smp-sml/eulogin/init-data/ecas.properties
new file mode 100644
index 0000000000000000000000000000000000000000..775f9d9b59b1a5a9b25bd82e4238264d2ce2a429
--- /dev/null
+++ b/smp-docker/compose/tomcat-mysql-smp-sml/eulogin/init-data/ecas.properties
@@ -0,0 +1,547 @@
+#
+# ECAS Software
+# Copyright (c) 2014 European Commission
+# Licensed under the EUPL
+# You may not use this work except in compliance with the Licence.
+# You may obtain a copy of the Licence at:
+# http://ec.europa.eu/idabc/eupl
+#
+# This product includes the CAS software developed by Yale University,
+# Copyright (c) 2000-2004 Yale University. All rights reserved.
+# THE CAS SOFTWARE IS PROVIDED "AS IS," AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE EXPRESSLY
+# DISCLAIMED. IN NO EVENT SHALL YALE UNIVERSITY OR ITS EMPLOYEES BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED, THE COSTS OF
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED IN ADVANCE OF THE POSSIBILITY OF SUCH
+# DAMAGE.
+#
+
+###############################################################################
+#                                                                             #
+#   ECAS Server properties file - ecas.properties                             #
+#                                                                             #
+###############################################################################
+ejb/LDAP/ContextFactory=
+ejb/LDAP/Strong/BaseDN=dc=commission,dc=europa,dc=eu
+strong.ldap.passwordPolicies.dn=,dc=commission,dc=europa,dc=eu
+ejb/LDAP/MailSettingsDn=,dc=commission,dc=europa,dc=eu
+ejb/Mail/URL=https://mockupserver:1234/ecas/
+strong.ldap.openidconnect.applications.dn=ou=OpenIDConnect,ou=ClientApplications,dc=commission,dc=europa,dc=eu
+
+ejb/external/details/url=
+ejb/LDAP/Master=dummy
+
+# Timeout settings for the ticket caches:
+edu.yale.its.tp.cas.grantingTimeout=46800
+edu.yale.its.tp.cas.serviceTimeout=300
+edu.yale.its.tp.cas.loginTimeout=3600
+eu.cec.digit.ecas.transactionTimeout=600
+eu.cec.digit.ecas.signatureTimeout=3600
+eu.cec.digit.ecas.loginRequestTransactionTimeout=3600
+
+strong.ldap.pool.maxActive=
+strong.ldap.pool.maxIdle=
+strong.ldap.pool.maxWait=
+strong.ldap.pool.minIdle=
+strong.ldap.pool.batchIncrement=
+strong.ldap.pool.numTestsPerEvictionRun=
+strong.ldap.pool.testOnCreate=
+strong.ldap.pool.testOnBorrow=
+strong.ldap.pool.testOnReturn=
+strong.ldap.pool.testWhileIdle=
+strong.ldap.pool.timeBetweenEvictionRunsMillis=
+strong.ldap.pool.minEvictableIdleTimeMillis=
+strong.ldap.pool.softMinEvictableIdleTimeMillis=
+strong.ldap.pool.whenExhaustedAction=
+strong.ldap.pool.monitor.creation=
+strong.ldap.pool.monitor.destruction=
+strong.ldap.pool.monitor.validation=
+strong.ldap.pool.monitor.activation=
+strong.ldap.pool.monitor.passivation=
+strong.ldap.pool.command.timeout.millis=
+strong.ldap.pool.connect.timeout.millis=15000
+strong.ldap.pool.read.timeout.millis=15000
+
+# GUESTS:
+guests.cudgroup=AIDA_SELFRG
+
+# For now, the GroupHandler implementing class has to match the one in ecas-jaas.config
+ecas.auth.groupHandler=eu.cec.digit.ecas.auth.provider.EcasGroupHandler
+## The defaultStrength used for authentication, may be PASSWORD for a real ECAS or BASIC for a Mock-up Server
+ecas.auth.defaultStrength=BASIC
+## The ordered list of strengths which can be used in ECAS (all the strengths defined here must also exist in ecas-jaas.config)
+## The order of the strengths is only taken from this property (the order in JAAS does not matter)
+ecas.auth.orderedEnabledStrengths=BASIC,MOBILE_APP,PASSWORD_MOBILE_APP,PASSWORD_SOFTWARE_TOKEN,PASSWORD_SMS,PASSWORD_TOKEN,PASSWORD_TOKEN_CRAM,STORK,SOCIAL_NETWORKS,CLIENT_CERT
+## These are the default strengths for /cas/login, which are used only when no strength is requested by the client:
+ecas.auth.ecas.defaultStrengths=BASIC,MOBILE_APP,PASSWORD_MOBILE_APP,PASSWORD_SOFTWARE_TOKEN,PASSWORD_SMS,PASSWORD_TOKEN,PASSWORD_TOKEN_CRAM,STORK,SOCIAL_NETWORKS,CLIENT_CERT
+## These are the previous default strengths per version, which are used only when no strength is requested by the client:
+ecas.auth.client.defaultStrengths.version.1.11=BASIC,CLIENT_CERT
+ecas.auth.client.defaultStrengths.version.1.18=BASIC,PASSWORD_SMS,CLIENT_CERT
+ecas.auth.client.defaultStrengths.version.3.1=BASIC,PASSWORD_SMS,PASSWORD_TOKEN,CLIENT_CERT
+
+ecas.auth.adminStrengths=PASSWORD_SMS,MOBILE_APP,PASSWORD_MOBILE_APP,PASSWORD_SOFTWARE_TOKEN,PASSWORD_SMS,PASSWORD_TOKEN,PASSWORD_TOKEN_CRAM
+ecas.auth.admin.multiFactorEnforced=true
+ecas.auth.jaasConfigFile=ecas-jaas.config
+
+# Do we have to check whether new passwords are the same as basic passwords (Internet) ?
+ecas.policy.basicPassword.checkEnabled=true
+
+# Stats persistence interval in milliseconds:
+stats.persistence.interval=300000
+
+contextRoot.cas=cas
+#contextRoot.ecas=cas/ec
+contextRoot.ecas.redir=ecas
+
+ecas.hostname=eulogin-mock-server
+ecas.port.HTTP=7101
+ecas.port.HTTPS=7102
+ecas.port.HTTPS.2waySSL=7103
+
+ecas.production.hostname=ecas.cc.cec.eu.int
+ecas.production.port.HTTP=7001
+ecas.production.port.HTTPS=7002
+ecas.production.port.HTTPS.2waySSL=7003
+
+# expected concurrency level (i.e. number of concurrent threads):
+expectedConcurrency=64
+
+authentication.domains.dn=ou=AuthenticationDomains,dc=commission,dc=europa,dc=eu
+domain.categories.dn=ou=DomainCategories,dc=commission,dc=europa,dc=eu
+
+# implementation classes:
+signature.service=eu.cec.digit.ecas.signature.impl.SignatureControllerImpl
+
+# DaoFactory:
+dao.factory=eu.cec.digit.ecas.data.impl.PropertyDaoFactory
+dao.user=eu.europa.ec.ecas.mockup.data.impl.UserSaxDao
+dao.policy.attributes=eu.europa.ec.ecas.mockup.data.impl.PropertyFilePolicyAttributesDao
+dao.authentication.domainsAndCategories=eu.europa.ec.ecas.mockup.data.memory.MemoryAuthenticationDomainsAndCategoriesDao
+dao.mail.settings=eu.europa.ec.ecas.mockup.data.memory.MemoryMailSettingsDAO
+dao.registration.service=eu.cec.digit.ecas.registration.persistence.impl.DerbyServiceRegistrationDAO
+dao.messageResources=eu.cec.digit.ecas.data.impl.derby.DerbyMessageResourcesDAO
+dao.monitoringConfig=eu.cec.digit.ecas.data.impl.derby.DerbyMonitoringConfigDAO
+dao.antiAbuseProxyConfig=eu.cec.digit.ecas.data.impl.derby.DerbyAntiDenialOfServiceProxyConfigurationDAO
+dao.applicationSettings=eu.cec.digit.ecas.data.impl.CompositeApplicationSettingsDAO
+dao.stsConfiguration=eu.europa.ec.ecas.sts.data.jaxb.JaxbStsConfigurationDAO
+dao.selfRegistration=eu.europa.ec.ecas.mockup.data.memory.SelfRegistrationMockupDao
+dao.samlConfiguration=eu.europa.ec.ecas.saml.data.jaxb.JaxbSamlConfigurationDAO
+dao.tokenCram=eu.europa.ec.ecas.mockup.data.impl.tokencram.MockTokenCramDAO
+dao.mdmCert=eu.europa.ec.ecas.mockup.data.impl.mdm.MockMdmDAO
+dao.mdmCert.getDevice.path=/api/v1/dm/devices/
+dao.mdmCert.wakeupDevice.path=/api/v1/dm/devices/wakeup/
+dao.signature=eu.cec.digit.ecas.data.impl.softwaretoken.Log4jSoftwareTokenSignatureAuditTrailDao
+
+debug.mode=true
+mockup.mode=true
+mobile.mockup.mode=true
+peps.attribute.validation.level=lax
+production.mode=false
+
+ecas.default.locale=en
+ecas.default.timeZone=Europe/Brussels
+
+captcha.alphabet=ABCDEFGHJKLMNPQRSTUVWXYZabcdefhijkmnpqrstuvwxyz23456789
+captcha.minAcceptedWordLength=5
+captcha.maxAcceptedWordLength=5
+captcha.fonts=Lucida Sans,Lucida Bright
+captcha.audio.backgroundSound.enabled=true
+captcha.audio.backgroundSound.list=background_0,background_1,background_2,background_3,background_4,background_5,background_6,background_7,background_8,background_9,background_10,background_11,background_12,background_13,background_14
+captcha.audio.echoFilter.enabled=true
+captcha.audio.echoFilter.echoDelay=250
+captcha.audio.echoFilter.decay=5
+captcha.audio.pitchFilter.enabled=true
+captcha.audio.pitchFilter.pitchMinValue=80
+captcha.audio.pitchFilter.pitchMaxValue=110
+captcha.audio.voices.de.enabled=klara,reiner,reinhard
+captcha.audio.voices.en.enabled=anjali,audrey,charles,claire,crystal,george,jane,john,judith,kate,lauren,mike,patrick,rich
+captcha.audio.voices.es.enabled=alberto,daniel,dolores,martha,rene,rosa
+captcha.audio.voices.fr.enabled=alain,arnaud,juliette,lutece,pascal
+
+#ECAS XML Schema in all XML messages:
+xml.schema=https://ecas.ec.europa.eu/cas/schemas
+
+# comma separated list of IP addresses used for end-to-end monitoring using 2-way SSL
+monitoring.ipAddresses=
+## configured in reloading properties:
+#monitoring.userAgentPatterns=
+
+i18n.supportedLanguages=bg,cs,da,de,et,el,en,es,fr,ga,hr,it,lv,lt,hu,mt,nl,pl,pt,ro,sk,sl,fi,sv
+
+###########################################################################
+antiDenialOfService.filters=COSTLY,FRONTEND,BACKEND,OIDC_FRONTEND,OIDC_BACKEND,DEFAULT
+
+antiDenialOfService.DEFAULT.warn.threshold=100
+antiDenialOfService.DEFAULT.kick.threshold=200
+antiDenialOfService.DEFAULT.ban.threshold=400
+antiDenialOfService.DEFAULT.sampling.seconds=1
+antiDenialOfService.DEFAULT.kick.release.seconds=900
+antiDenialOfService.DEFAULT.ban.release.seconds=3600
+
+antiDenialOfService.DEFAULT.bypass.list=127.0.0.1,eulogin-mock-server
+antiDenialOfService.DEFAULT.invalidateCaches.hours=24
+antiDenialOfService.DEFAULT.notifyOnKickAndBan=false
+antiDenialOfService.DEFAULT.notifyEmailAddresses=
+
+antiDenialOfService.COSTLY.warn.threshold=10
+antiDenialOfService.COSTLY.kick.threshold=20
+antiDenialOfService.COSTLY.ban.threshold=50
+antiDenialOfService.COSTLY.sampling.seconds=1
+antiDenialOfService.COSTLY.kick.release.seconds=900
+antiDenialOfService.COSTLY.ban.release.seconds=3600
+
+antiDenialOfService.COSTLY.bypass.list=127.0.0.1,eulogin-mock-server
+antiDenialOfService.COSTLY.invalidateCaches.hours=24
+antiDenialOfService.COSTLY.notifyOnKickAndBan=false
+antiDenialOfService.COSTLY.notifyEmailAddresses=
+
+antiDenialOfService.BACKEND.warn.threshold=100
+antiDenialOfService.BACKEND.kick.threshold=200
+antiDenialOfService.BACKEND.ban.threshold=400
+antiDenialOfService.BACKEND.sampling.seconds=1
+antiDenialOfService.BACKEND.kick.release.seconds=900
+antiDenialOfService.BACKEND.ban.release.seconds=3600
+
+antiDenialOfService.BACKEND.bypass.list=127.0.0.1,eulogin-mock-server
+antiDenialOfService.BACKEND.invalidateCaches.hours=24
+antiDenialOfService.BACKEND.notifyOnKickAndBan=false
+antiDenialOfService.BACKEND.notifyEmailAddresses=
+
+antiDenialOfService.FRONTEND.warn.threshold=100
+antiDenialOfService.FRONTEND.kick.threshold=200
+antiDenialOfService.FRONTEND.ban.threshold=400
+antiDenialOfService.FRONTEND.sampling.seconds=1
+antiDenialOfService.FRONTEND.kick.release.seconds=900
+antiDenialOfService.FRONTEND.ban.release.seconds=3600
+
+antiDenialOfService.FRONTEND.bypass.list=127.0.0.1,eulogin-mock-server
+antiDenialOfService.FRONTEND.invalidateCaches.hours=24
+antiDenialOfService.FRONTEND.notifyOnKickAndBan=false
+antiDenialOfService.FRONTEND.notifyEmailAddresses=
+
+antiDenialOfService.OIDC_BACKEND.warn.threshold=100
+antiDenialOfService.OIDC_BACKEND.kick.threshold=200
+antiDenialOfService.OIDC_BACKEND.ban.threshold=400
+antiDenialOfService.OIDC_BACKEND.sampling.seconds=1
+antiDenialOfService.OIDC_BACKEND.kick.release.seconds=900
+antiDenialOfService.OIDC_BACKEND.ban.release.seconds=3600
+antiDenialOfService.OIDC_BACKEND.bypass.list=127.0.0.1,eulogin-mock-server
+antiDenialOfService.OIDC_BACKEND.invalidateCaches.hours=24
+antiDenialOfService.OIDC_BACKEND.notifyOnKickAndBan=false
+antiDenialOfService.OIDC_BACKEND.notifyEmailAddresses=
+
+antiDenialOfService.OIDC_FRONTEND.warn.threshold=100
+antiDenialOfService.OIDC_FRONTEND.kick.threshold=200
+antiDenialOfService.OIDC_FRONTEND.ban.threshold=400
+antiDenialOfService.OIDC_FRONTEND.sampling.seconds=1
+antiDenialOfService.OIDC_FRONTEND.kick.release.seconds=900
+antiDenialOfService.OIDC_FRONTEND.ban.release.seconds=3600
+antiDenialOfService.OIDC_FRONTEND.bypass.list=127.0.0.1,eulogin-mock-server
+antiDenialOfService.OIDC_FRONTEND.invalidateCaches.hours=24
+antiDenialOfService.OIDC_FRONTEND.notifyOnKickAndBan=false
+antiDenialOfService.OIDC_FRONTEND.notifyEmailAddresses=
+#
+antiDenialOfService.load.samplingTimeSeconds=60
+###########################################################################
+
+# Denotes if the "sso warn me" checkbox on the login page should be checked by default (true) or not (false)
+sso.warning.default.checked=true
+# Denotes if the "show account details after login" checkbox on the login page should be checked by default (true) or not (false)
+login.showAccount.default.checked=false
+
+#selfcertweb crl url
+crl.url=https://eulogin-mock-server:7102/cas/ca/crl
+
+definition.smsChallenge.authn.alphabet=234679ACDEFGHJKLMNPRTUVWXYZ
+definition.smsChallenge.authn.groupBy=3
+definition.smsChallenge.authn.minLength=9
+definition.smsChallenge.authn.maxLength=9
+definition.smsChallenge.authn.separator=-
+definition.smsChallenge.gsmAddition.alphabet=234679ACDEFGHJKLMNPRTUVWXYZ
+definition.smsChallenge.gsmAddition.groupBy=4
+definition.smsChallenge.gsmAddition.minLength=8
+definition.smsChallenge.gsmAddition.maxLength=8
+definition.smsChallenge.gsmAddition.separator=-
+definition.smsChallenge.signature.alphabet=234679ACDEFGHJKLMNPRTUVWXYZ
+definition.smsChallenge.signature.groupBy=4
+definition.smsChallenge.signature.minLength=16
+definition.smsChallenge.signature.maxLength=16
+definition.smsChallenge.signature.separator=-
+
+definition.sponsorshipCodeService.alphabet=234679ACDEFGHJKLMNPRTUVWXYZ
+definition.sponsorshipCodeService.groupBy=3
+definition.sponsorshipCodeService.minLength=6
+definition.sponsorshipCodeService.maxLength=6
+definition.sponsorshipCodeService.separator=-
+
+definition.tokenCram.authnChallenge.alphabet=1234567890
+definition.tokenCram.authnChallenge.groupBy=4
+definition.tokenCram.authnChallenge.minLength=12
+definition.tokenCram.authnChallenge.maxLength=12
+definition.tokenCram.authnChallenge.separator=-
+
+definition.tokenCram.authnResponse.alphabet=1234567890
+definition.tokenCram.authnResponse.groupBy=4
+definition.tokenCram.authnResponse.minLength=12
+definition.tokenCram.authnResponse.maxLength=12
+definition.tokenCram.authnResponse.separator=-
+
+definition.tokenCram.signature.alphabet=1234567890
+definition.tokenCram.signature.groupBy=4
+definition.tokenCram.signature.minLength=12
+definition.tokenCram.signature.maxLength=12
+definition.tokenCram.signature.separator=-
+
+definition.mobile.uniqueDeviceIdentifier.alphabet=234679ACDEFGHJKLMNPRTUVWXYZ
+definition.mobile.uniqueDeviceIdentifier.groupBy=8
+definition.mobile.uniqueDeviceIdentifier.minLength=64
+definition.mobile.uniqueDeviceIdentifier.maxLength=64
+definition.mobile.uniqueDeviceIdentifier.separator=-
+
+definition.mobile.softwaretoken.signature.alphabet=234679ACDEFGHJKLMNPRTUVWXYZ
+definition.mobile.softwaretoken.signature.length=16
+definition.mobile.softwaretoken.signature.minLength=16
+definition.mobile.softwaretoken.signature.maxLength=16
+definition.mobile.softwaretoken.signature.groupBy=4
+definition.mobile.softwaretoken.signature.separator=-
+definition.mobile.softwaretoken.signature.macAlgorithm=HmacSHA512
+
+
+digests.secure=ARG2,SEQ202,SEQ2,SEQ103,SEQ106,SEQ105,SEQ104,SEQ102,SEQ1,SEQH,SXDSHA,ESSHA,SSHA,SHA,CRYPT
+digests.history=SEQ106,SEQ105,SEQ104,SEQ103,SEQ102,SEQ1,SEQH,SXDSHA,ESSHA,SSHA,SHA,CRYPT
+
+# RADIUS:
+radius.authenticator=eu.cec.digit.ecas.business.authentication.impl.MockRadiusCredentialBasedAuthenticator
+radius.configuration=eu.europa.ec.ecas.mockup.business.MockRadiusConfiguration
+radius.username.builder=eu.cec.digit.ecas.radius.StrictEcVascoUsernameBuilder
+
+replication.server.host=
+replication.server.port=
+replication.nodes.hostsAndPorts=
+
+relying.party.url.cache.timeoutSeconds=1
+relying.party.url.cache.maximumSize=5000
+
+allocateMemoryOutsideJavaHeap=false
+policy.numberOfLastSecureLoginTimes=2
+
+eimWebService.connectTimeoutMillis=30000
+eimWebService.readTimeoutMillis=30000
+
+# (01) accountFailureCountTimeout
+admin.policy.constraint.AccountFailureCountTimeout.min=600
+admin.policy.constraint.AccountFailureCountTimeout.default=900
+admin.policy.constraint.AccountFailureCountTimeout.max=15552000
+# (02) accountLockoutTimeout
+admin.policy.constraint.AccountLockoutTimeout.min=600
+admin.policy.constraint.AccountLockoutTimeout.default=900
+admin.policy.constraint.AccountLockoutTimeout.max=7200
+# (03) passwordAgeMax
+admin.policy.constraint.PasswordAgeMax.min=864000
+admin.policy.constraint.PasswordAgeMax.default=1576800000
+admin.policy.constraint.PasswordAgeMax.max=1576800000
+# (04) passwordAgeMaxWarning
+admin.policy.constraint.PasswordAgeMaxWarning.min=43600
+admin.policy.constraint.PasswordAgeMaxWarning.default=31536000
+admin.policy.constraint.PasswordAgeMaxWarning.max=31536000
+# (05) passwordAgeMin
+admin.policy.constraint.PasswordAgeMin.min=60
+admin.policy.constraint.PasswordAgeMin.default=60
+admin.policy.constraint.PasswordAgeMin.max=432000
+# (06) passwordFailureCountMax
+admin.policy.constraint.PasswordFailureCountMax.min=2
+admin.policy.constraint.PasswordFailureCountMax.default=5
+admin.policy.constraint.PasswordFailureCountMax.max=9
+# (07) passwordHistoryCountMax
+admin.policy.constraint.PasswordHistoryCountMax.min=2
+admin.policy.constraint.PasswordHistoryCountMax.default=5
+admin.policy.constraint.PasswordHistoryCountMax.max=9
+# (08) passwordLengthMin
+admin.policy.constraint.PasswordLengthMin.min=1
+admin.policy.constraint.PasswordLengthMin.default=1
+admin.policy.constraint.PasswordLengthMin.max=15
+# (09) resetCodeAgeMax
+admin.policy.constraint.ResetCodeAgeMax.min=60
+admin.policy.constraint.ResetCodeAgeMax.default=900
+admin.policy.constraint.ResetCodeAgeMax.max=86400
+# (10) resetCodeEnabled // 0 = enabled, 1 = disabled
+admin.policy.constraint.ResetCodeEnabled.min=0
+admin.policy.constraint.ResetCodeEnabled.default=0
+admin.policy.constraint.ResetCodeEnabled.max=1
+# (11) resetCodeFailureCountMax
+admin.policy.constraint.ResetCodeFailureCountMax.min=2
+admin.policy.constraint.ResetCodeFailureCountMax.default=5
+admin.policy.constraint.ResetCodeFailureCountMax.max=9
+# (12) resetCodeRequestCountMax
+admin.policy.constraint.ResetCodeRequestCountMax.min=2
+admin.policy.constraint.ResetCodeRequestCountMax.default=5
+admin.policy.constraint.ResetCodeRequestCountMax.max=100
+# (13) smsChallengeAgeMax
+admin.policy.constraint.SmsChallengeAgeMax.min=0
+admin.policy.constraint.SmsChallengeAgeMax.default=600
+admin.policy.constraint.SmsChallengeAgeMax.max=86400
+# (14) smsChallengeFailureCountMax
+admin.policy.constraint.SmsChallengeFailureCountMax.min=2
+admin.policy.constraint.SmsChallengeFailureCountMax.default=5
+admin.policy.constraint.SmsChallengeFailureCountMax.max=9
+# (15) smsChallengeRequestCountMax
+admin.policy.constraint.SmsChallengeRequestCountMax.min=2
+admin.policy.constraint.SmsChallengeRequestCountMax.default=5
+admin.policy.constraint.SmsChallengeRequestCountMax.max=9
+# (16) mobilePhoneCountMax
+admin.policy.constraint.MobilePhoneCountMax.min=0
+admin.policy.constraint.MobilePhoneCountMax.default=10
+admin.policy.constraint.MobilePhoneCountMax.max=10
+# (17) mobileDeviceCountMax
+admin.policy.constraint.MobileDeviceCountMax.min=0
+admin.policy.constraint.MobileDeviceCountMax.default=10
+admin.policy.constraint.MobileDeviceCountMax.max=10
+# (18) mobileDeviceFailureCountMax
+admin.policy.constraint.MobileDeviceFailureCountMax.min=2
+admin.policy.constraint.MobileDeviceFailureCountMax.default=5
+admin.policy.constraint.MobileDeviceFailureCountMax.max=9
+# (19) mobileDeviceRequestCountMax
+admin.policy.constraint.MobileDeviceRequestCountMax.min=2
+admin.policy.constraint.MobileDeviceRequestCountMax.default=5
+admin.policy.constraint.MobileDeviceRequestCountMax.max=9
+# (20) tokenCramFailureCountMax
+admin.policy.constraint.TokenCramFailureCountMax.min=2
+admin.policy.constraint.TokenCramFailureCountMax.default=5
+admin.policy.constraint.TokenCramFailureCountMax.max=9
+# (21) tokenCramRequestCountMax
+admin.policy.constraint.TokenCramRequestCountMax.min=2
+admin.policy.constraint.TokenCramRequestCountMax.default=5
+admin.policy.constraint.TokenCramRequestCountMax.max=9
+# (22) webAuthnDeviceCountMax
+admin.policy.constraint.WebAuthnDeviceCountMax.min=0
+admin.policy.constraint.WebAuthnDeviceCountMax.default=10
+admin.policy.constraint.WebAuthnDeviceCountMax.max=10
+# (23) webAuthnDeviceFailureCountMax
+admin.policy.constraint.WebAuthnDeviceFailureCountMax.min=2
+admin.policy.constraint.WebAuthnDeviceFailureCountMax.default=5
+admin.policy.constraint.WebAuthnDeviceFailureCountMax.max=9
+# (24) webAuthnDeviceRequestCountMax
+admin.policy.constraint.WebAuthnDeviceRequestCountMax.min=2
+admin.policy.constraint.WebAuthnDeviceRequestCountMax.default=5
+admin.policy.constraint.WebAuthnDeviceRequestCountMax.max=9
+
+
+########################################################
+# Compression implementation
+########################################################
+compression.implementation=JZLIB
+
+########################################################
+# Ecas Mobile
+########################################################
+ecasMobile.pushService.providerFactory=eu.europa.ec.ecas.mockup.mobile.push.MockPushMessageServiceProviderFactory
+ecasMobile.pushService.apple.productionMode=false
+ecasMobile.passwordAuthService=eu.cec.digit.ecas.mobile.auth.password.PasswordMobileAuthServiceImpl
+
+ecasMobile.cache.expiry.minutes=10
+
+eu.cec.digit.ecas.mobile.auth.onmobile.MobileAppRequestor=eu.cec.digit.ecas.mobile.auth.onmobile.MobileAppRequestorImpl
+
+definition.ecasMobile.authn.alphabet=0123456789
+definition.ecasMobile.authn.groupBy=1000
+definition.ecasMobile.authn.minLength=18
+definition.ecasMobile.authn.maxLength=18
+definition.ecasMobile.authn.separator=.
+
+ecasMobile.otp.sharedSecret.lengthInBytes=64
+ecasMobile.otp.macAlgorithm=HmacSHA512
+ecasMobile.otp.length=8
+ecasMobile.otp.alphabet=23456789ABCDEFGHJKLMNPQRSTUVWXYZ
+
+ecasMobile.softwareToken.challenge.lengthInBytes=64
+
+ecasMobile.mobileChallenge.lengthInBytes=64
+
+eu.europa.ec.ecas.servlet.login.plugin.impl.PluginFactory=eu.europa.ec.ecas.servlet.login.plugin.impl.DefaultPluginFactory
+eu.europa.ec.ecas.servlet.login.engine.compliance.impl.AuthenticationComplianceEngine=eu.europa.ec.ecas.servlet.login.engine.compliance.impl.DefaultAuthenticationComplianceEngine
+eu.europa.ec.ecas.servlet.login.engine.attribute.impl.AdditionalAttributeProvider=eu.europa.ec.ecas.servlet.login.engine.attribute.impl.DefaultAdditionalAttributeProvider
+eu.europa.ec.ecas.servlet.login.engine.accesscontrol.impl.AccessDenialEngine=eu.europa.ec.ecas.servlet.login.engine.accesscontrol.impl.ServiceWhitelistAccessDenialEngine
+eu.europa.ec.ecas.servlet.login.engine.impl.ApplicationServerIntegrationEngine=eu.europa.ec.ecas.servlet.login.engine.impl.WebLogicIntegrationEngine
+eu.europa.ec.ecas.servlet.login.engine.impl.AuditTrailEngine=eu.europa.ec.ecas.servlet.login.engine.impl.EcasAuditTrailEngine
+eu.europa.ec.ecas.servlet.validation.engine.impl.ExtendedAttributeEngine=eu.europa.ec.ecas.servlet.validation.engine.impl.DefaultExtendedAttributeEngine
+
+tokenCram.webService.endPoint=
+tokenCram.webService.connectTimeoutMillis=30000
+tokenCram.webService.requestTimeoutMillis=30000
+tokenCram.forNonProd.helper=eu.europa.ec.ecas.mockup.data.impl.tokencram.MockTokenCramForNonProdHelper
+tokenCram.webService.passwordFormat=4
+
+############################
+# UUMDS
+############################
+loginRequest.interceptor=eu.europa.ec.ecas.servlet.login.engine.impl.EmptyLoginRequestInterceptor
+uumds.wayf.url=
+uumds.wayf.init.transaction.path=${uumds.wayf.init.transaction.path}
+uumds.wayf.login.path=${uumds.wayf.login.path}
+
+definition.uumds.secret.alphabet=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
+definition.uumds.secret.groupBy=1000
+definition.uumds.secret.minLength=12
+definition.uumds.secret.maxLength=12
+definition.uumds.secret.separator=.
+
+plugin.folder=_application_files/ecas-plugins
+
+saml.configuration.location=samlConfiguration.xml
+sts.configuration.location=stsConfiguration.xml
+
+#Always TRUE except in UUM&DS environments
+showEnvironmentStamp=true
+
+##########################################################
+# Settings of the ServiceWhitelistAccessDenialEngine
+##########################################################
+accessDenialEngine.serviceWhitelist.location=ecas-access-denial.properties
+
+##########################################################
+# OAuth
+##########################################################
+eu.cec.digit.ecas.auth.oauth.settings.impl.facebook=eu.europa.ec.ecas.mockup.auth.oauth.settings.facebook.MockFacebookOAuthSettings
+eu.cec.digit.ecas.auth.oauth.settings.impl.google=eu.europa.ec.ecas.mockup.auth.oauth.settings.google.MockGoogleOAuthSettings
+eu.cec.digit.ecas.auth.oauth.settings.impl.twitter=eu.europa.ec.ecas.mockup.auth.oauth.settings.twitter.MockTwitterOAuthSettings
+
+saml.assertion.issuer.eulogin.urn=urn:ec.europa.eu:eulogin:mockup:saml
+
+#OpenID Connect
+openidconnect.issuer.url=https://eulogin-mock-server:7102/cas/oauth2
+openidconnect.issuer.url.path=/oauth2
+openidconnect.jwks_uri.url=https://eulogin-mock-server:7102/cas/oauth2/keys
+openidconnect.metadata.url=https://eulogin-mock-server:7102/cas/oauth2/.well-known/openid-configuration
+openidconnect.metadataWithUserInfo.path=/.unsafe/openid-configuration
+openidconnect.authorization_endpoint.url=https://eulogin-mock-server:7102/cas/oauth2/authorize
+openidconnect.authorization_endpoint.path=/authorize
+openidconnect.token_endpoint.url=https://eulogin-mock-server:7102/cas/oauth2/token
+openidconnect.token_introspection_endpoint.url=https://eulogin-mock-server:7102/cas/oauth2/token/introspect
+openidconnect.userinfo_endpoint.url=https://eulogin-mock-server:7102/cas/oauth2/userinfo
+openidconnect.registration_endpoint.url=https://eulogin-mock-server:7102/cas/oauth2/register
+openidconnect.token_revocation_endpoint.url=https://eulogin-mock-server:7102/cas/oauth2/token/revoke
+openidconnect.end_session_endpoint.url=https://eulogin-mock-server:7102/cas/oauth2/logout
+
+
+openidconnect.metadata.validityDurationSeconds=3600
+openidconnect.authorizationCode.timeoutSeconds=300
+openidconnect.idToken.timeoutSeconds=300
+openidconnect.accessToken.timeoutSeconds=300
+openidconnect.refreshToken.timeoutSeconds=60
+
+openidconnect.configuration.location=openIdConnectConfiguration.json
+dao.openidconnect=eu.europa.ec.ecas.openidconnect.data.JsonOpenIdConnectConfigurationDao
+
+# Derby encryption and password hashing:
+registration.storage.encryption.provider=com.sun.crypto.provider.SunJCE
+registration.storage.encryption.keyLength=256
+registration.storage.encryption.algorithm=AES/CFB/NoPadding
+registration.storage.authentication.algorithm=SHA-512
+registration.storage.authentication.saltLength=64
+registration.storage.authentication.iterations=90000
diff --git a/smp-docker/compose/tomcat-mysql-smp-sml/eulogin/init-data/userDataBase.xml b/smp-docker/compose/tomcat-mysql-smp-sml/eulogin/init-data/userDataBase.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e0b1449abc63125a854be5dcb8c406e5c4a111cd
--- /dev/null
+++ b/smp-docker/compose/tomcat-mysql-smp-sml/eulogin/init-data/userDataBase.xml
@@ -0,0 +1,53 @@
+<userDataBase xmlns="https://ecas.ec.europa.eu/cas/schemas/mockup/db">
+	<user>
+		<authenticationCount>1</authenticationCount>
+		<badAuthenticationCount>0</badAuthenticationCount>
+		<email>Peter.PARKER@dummy-mail-not-exists.eu</email>
+		<firstName>Peter</firstName>
+		<goodAuthenticationCount>1</goodAuthenticationCount>
+		<lastName>Parker</lastName>
+		<objectStatus>a</objectStatus>
+		<organisation>eu.europa.ec</organisation>
+		<organisationUsername>user</organisationUsername>
+		<passwordChangeDn>uid=user,ou=people,dc=commission,dc=europa,dc=eu</passwordChangeDn>
+		<strongPasswordHash>123456</strongPasswordHash>
+		<passwordLastChangedTime></passwordLastChangedTime>
+		<uid>user</uid>
+		<cudGroups>DIGIT_SMP_USER</cudGroups>
+	</user>
+
+	<user>
+		<authenticationCount>1</authenticationCount>
+		<badAuthenticationCount>0</badAuthenticationCount>
+		<email>Tony.STARK@dummy-mail-not-exists.eu</email>
+		<firstName>Tony</firstName>
+		<goodAuthenticationCount>1</goodAuthenticationCount>
+		<lastName>Stark</lastName>
+		<objectStatus>a</objectStatus>
+		<organisation>eu.europa.ec</organisation>
+		<organisationUsername>smp</organisationUsername>
+		<passwordChangeDn>uid=smp,ou=people,dc=commission,dc=europa,dc=eu</passwordChangeDn>
+		<strongPasswordHash>123456</strongPasswordHash>
+		<passwordLastChangedTime></passwordLastChangedTime>
+		<uid>smp</uid>
+		<cudGroups>DIGIT_SMP_ADMIN</cudGroups>
+	</user>
+
+	<user>
+		<authenticationCount>1</authenticationCount>
+		<badAuthenticationCount>0</badAuthenticationCount>
+		<email>Bruce.BANNER@dummy-mail-not-exists.eu</email>
+		<firstName>Bruce</firstName>
+		<goodAuthenticationCount>1</goodAuthenticationCount>
+		<lastName>Banner</lastName>
+		<objectStatus>a</objectStatus>
+		<organisation>eu.europa.ec</organisation>
+		<organisationUsername>system</organisationUsername>
+		<passwordChangeDn>uid=system,ou=people,dc=commission,dc=europa,dc=eu</passwordChangeDn>
+		<strongPasswordHash>123456</strongPasswordHash>
+		<passwordLastChangedTime></passwordLastChangedTime>
+		<uid>system</uid>
+		<cudGroups>DIGIT_SMP_SYSTEM</cudGroups>
+	</user>
+
+</userDataBase>
diff --git a/smp-docker/compose/tomcat-mysql-smp-sml/properties/keystores/smp-eulogin-mock.p12 b/smp-docker/compose/tomcat-mysql-smp-sml/properties/keystores/smp-eulogin-mock.p12
new file mode 100644
index 0000000000000000000000000000000000000000..37ac05fc91ad8cdaafe40c84c25da69312314b7a
Binary files /dev/null and b/smp-docker/compose/tomcat-mysql-smp-sml/properties/keystores/smp-eulogin-mock.p12 differ
diff --git a/smp-docker/images/tomcat-mysql-smp-sml/entrypoint.sh b/smp-docker/images/tomcat-mysql-smp-sml/entrypoint.sh
index 22fb94713c7713510eb03ded008ab0e37aeb030b..e5067b1d88cfa62fc81da8716db1dc0fe94eb5b4 100755
--- a/smp-docker/images/tomcat-mysql-smp-sml/entrypoint.sh
+++ b/smp-docker/images/tomcat-mysql-smp-sml/entrypoint.sh
@@ -30,6 +30,12 @@ init_tomcat() {
   fi
   # add allow encoded slashes and disable scheme for proxy
   JAVA_OPTS="$JAVA_OPTS -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true -Djdk.http.auth.tunneling.disabledSchemes="
+  # add truststore for eulogin
+  if [ -e /tmp/keystores/smp-eulogin-mock.p12 ]; then
+      echo "add eulogin trustStore: /tmp/keystores/smp-eulogin-mock.p12"
+      JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStore=/tmp/keystores/smp-eulogin-mock.p12 -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=test123"
+   fi
+
   export  JAVA_OPTS
 
   echo "[INFO] init tomcat folders: $tfile"
@@ -177,10 +183,8 @@ addOrReplaceProperties() {
   if [ -n "$INIT_PROPERTIES" ]; then
     echo "Parse init properties: $INIT_PROPERTIES"
     # add delimiter also to end :)
-
     s="$INIT_PROPERTIES$INIT_PROPERTY_DELIMITER"
 
-
     array=()
     while [[ $s ]]; do
       array+=("${s%%"$INIT_PROPERTY_DELIMITER"*}")
@@ -191,15 +195,15 @@ addOrReplaceProperties() {
     IFS='='
     for property in "${array[@]}"; do
       read -r key value <<<"$property"
-      # escape regex chars ..
-      keyRE="$(printf '%s' "$key" | sed 's/[.[\*^$()+?{|]/\\&/g')"
-      propertyRE="$(printf '%s' "$property" | sed 's/[.[\*^$()+?{|/]/\\&/g')"
+      # escape regex chars and remove trailing and leading spaces..
+      keyRE="$(printf '%s' "${key// }" | sed 's/[.[\*^$()+?{|]/\\&/g')"
+      propertyRE="$(printf '%s' "${property// }" | sed 's/[.[\*^$()+?{|/]/\\&/g')"
 
-      echo "replace or add property: $property"
+      echo "replace or add property: [$keyRE] with value [$propertyRE]"
       # replace key line and commented #key line with new property
       sed -i "s/^$keyRE=.*/$propertyRE/;s/^#$keyRE=.*/$propertyRE/" $PROP_FILE
       # test if replaced if the line not exists add in on the end
-      grep -qF -- "$property" "$PROP_FILE" || echo "$property" >>"$PROP_FILE"
+      grep -qF -- "$propertyRE" "$PROP_FILE" || echo "$propertyRE" >>"$PROP_FILE"
     done
 
   fi
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/DatabaseProperties.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/DatabaseProperties.java
index 1b8d3492316eb2629b478dc51a73d26e4d170a52..b39f942c155aafa7ceee0e19b9deb27dfb58f68f 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/DatabaseProperties.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/DatabaseProperties.java
@@ -12,6 +12,8 @@ import java.util.List;
 import java.util.Optional;
 import java.util.Properties;
 
+import static org.apache.commons.lang3.StringUtils.trim;
+
 public class DatabaseProperties extends Properties {
     SMPLogger LOG = SMPLoggerFactory.getLogger(DatabaseProperties.class);
     private static final long serialVersionUID = 1L;
@@ -23,27 +25,28 @@ public class DatabaseProperties extends Properties {
         TypedQuery<DBConfiguration> tq = em.createNamedQuery("DBConfiguration.getAll", DBConfiguration.class);
         List<DBConfiguration> lst = tq.getResultList();
         for (DBConfiguration dc : lst) {
-            if(dc.getValue()!=null) {
-                LOG.info("Database property: '{}' value: '{}'",dc.getProperty(),
-                        isSensitiveData(dc.getProperty())?"******": dc.getValue());
-                setProperty(dc.getProperty(), dc.getValue());
+            if (dc.getValue() != null) {
+                LOG.info("Database property: [{}] value: [{}]", dc.getProperty(),
+                        isSensitiveData(dc.getProperty()) ? "******" : dc.getValue());
+                setProperty(trim(dc.getProperty()), trim(dc.getValue()));
             }
-            lastUpdate = (lastUpdate==null || lastUpdate.isBefore(dc.getLastUpdatedOn()) )? dc.getLastUpdatedOn() :lastUpdate;
+            lastUpdate = (lastUpdate == null || lastUpdate.isBefore(dc.getLastUpdatedOn())) ? dc.getLastUpdatedOn() : lastUpdate;
         }
     }
 
     /**
      * Return true for properties which must not be logged!
+     *
      * @param property - value to validate if contains sensitive data
      * @return true if data is sensitive, else return false
      */
-     public boolean isSensitiveData(String property){
-         Optional<SMPPropertyEnum> propOpt =  SMPPropertyEnum.getByProperty(property);
-         if (propOpt.isPresent()){
-             return propOpt.get().isEncrypted() ||  property.toLowerCase().contains(".password.decrypted");
-         }
-         LOG.warn("Database property [{}] is not recognized by the SMP!", property);
-         return false;
+    public boolean isSensitiveData(String property) {
+        Optional<SMPPropertyEnum> propOpt = SMPPropertyEnum.getByProperty(property);
+        if (propOpt.isPresent()) {
+            return propOpt.get().isEncrypted() || property.toLowerCase().contains(".password.decrypted");
+        }
+        LOG.warn("Database property [{}] is not recognized by the SMP!", property);
+        return false;
     }
 
     public OffsetDateTime getLastUpdate() {
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/ConfigurationDao.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/ConfigurationDao.java
index 348a142ac928fc57a4853106fca9e1130665f33d..2ae1290c6ccea56b30885369264855856cd22c5f 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/ConfigurationDao.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/dao/ConfigurationDao.java
@@ -27,7 +27,7 @@ import eu.europa.ec.edelivery.smp.utils.SecurityUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.event.ContextRefreshedEvent;
+import org.springframework.context.event.ContextStartedEvent;
 import org.springframework.context.event.ContextStoppedEvent;
 import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Repository;
@@ -216,10 +216,10 @@ public class ConfigurationDao extends BaseDao<DBConfiguration> {
     }
 
     /**
-     * Application event when an {@code ApplicationContext} gets initialized or refreshed
+     * Application event when an {@code ApplicationContext} gets initialized or start
      */
-    @EventListener({ContextRefreshedEvent.class})
-    protected void contextRefreshedEvent() {
+    @EventListener({ContextStartedEvent.class})
+    public void contextRefreshedEvent() {
         LOG.debug("Application context is initialized: triggered  refresh  to update all property listeners");
         applicationInitialized = true;
         initiateDate = OffsetDateTime.now();
@@ -233,7 +233,7 @@ public class ConfigurationDao extends BaseDao<DBConfiguration> {
     protected void contextStopEvent() {
         LOG.debug("Application context is stopped!");
         applicationInitialized = false;
-        initiateDate =null;
+        initiateDate = null;
     }
 
     private void updatePropertyListeners() {
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/SmpInfoRO.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/SmpInfoRO.java
index 50ee17066605bf379c9011ebf0deb436d5470b48..5afd6bca5d229814515f60d345714e9685ce4c05 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/SmpInfoRO.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/SmpInfoRO.java
@@ -7,6 +7,7 @@ public class SmpInfoRO implements Serializable {
     private static final long serialVersionUID = -49712226560325302L;
     String version;
     String ssoAuthenticationLabel;
+    String ssoAuthenticationURI;
     String contextPath;
     List<String> authTypes;
 
@@ -34,6 +35,14 @@ public class SmpInfoRO implements Serializable {
         this.ssoAuthenticationLabel = ssoAuthenticationLabel;
     }
 
+    public String getSsoAuthenticationURI() {
+        return ssoAuthenticationURI;
+    }
+
+    public void setSsoAuthenticationURI(String ssoAuthenticationURI) {
+        this.ssoAuthenticationURI = ssoAuthenticationURI;
+    }
+
     public List<String> getAuthTypes() {
         return authTypes;
     }
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/UserRO.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/UserRO.java
index 9472970873ceffaa4c9ecf0c800207c39461ebf8..47740d866df5fd1579abf06ecec4af619b2f3b36 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/UserRO.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/UserRO.java
@@ -37,6 +37,7 @@ public class UserRO extends BaseRO implements UserDetails {
     boolean passwordExpired = false;
     boolean showPasswordExpirationWarning  = false;
     boolean forceChangeExpiredPassword =false;
+    boolean casAuthenticated = false;
 
     /**
      * Get DB user hash value. It can be used as unique ID for the user. Use hash value for the webservice/ui and do not
@@ -165,6 +166,14 @@ public class UserRO extends BaseRO implements UserDetails {
         this.forceChangeExpiredPassword = forceChangeExpiredPassword;
     }
 
+    public boolean isCasAuthenticated() {
+        return casAuthenticated;
+    }
+
+    public void setCasAuthenticated(boolean casAuthenticated) {
+        this.casAuthenticated = casAuthenticated;
+    }
+
     @Override
     @JsonIgnore
     public boolean isAccountNonExpired() {
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/enums/SMPPropertyEnum.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/enums/SMPPropertyEnum.java
index b02931eddc6020c911b9329467cc1300573eb889..8ae09d7b42f26d9111e335ab0a2e5233fc06029f 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/enums/SMPPropertyEnum.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/enums/SMPPropertyEnum.java
@@ -90,7 +90,6 @@ public enum SMPPropertyEnum {
     ACCESS_TOKEN_SUSPENSION_TIME("smp.accessToken.login.suspension.time","3600",
             "Time in seconds for a suspended accessToken to be reactivated. (if 0 the user will not be reactivated)", false, false,false, INTEGER),
 
-
     // authentication
     UI_AUTHENTICATION_TYPES("smp.ui.authentication.types", "PASSWORD", "Set list of '|' separated authentication types: PASSWORD|SSO.", false, false, false, LIST_STRING),
     AUTOMATION_AUTHENTICATION_TYPES("smp.automation.authentication.types", "PASSWORD|CERTIFICATE",
@@ -105,10 +104,11 @@ public enum SMPPropertyEnum {
 
     // SSO configuration
     SSO_CAS_UI_LABEL("smp.sso.cas.ui.label", "EU Login", "The SSO service provider label.", false, false, true, STRING),
-    SSO_CAS_URL("smp.sso.cas.url", "http://localhost:8080/cas/", "The SSO CAS URL enpoint", false, false, true, URL),
+    SSO_CAS_URL("smp.sso.cas.url", "http://localhost:8080/cas/", "The SSO CAS URL endpoint", false, false, true, URL),
     SSO_CAS_URLPATH_LOGIN("smp.sso.cas.urlpath.login", "login", "The CAS URL path for login. Complete URL is composed from parameters: ${smp.sso.cas.url}/${smp.sso.cas.urlpath.login}.", false, false, true, STRING),
-    SSO_CAS_CALLBACK_URL("smp.sso.cas.callback.url", "http://localhost:8080/smp/ui/rest/security/cas", "The URL is the callback URL belonging to the local SMP Security System. If using RP make sure it target SMP path '/ui/rest/security/cas'", false, false, true, URL),
-    SSO_CAS_TOKEN_VALIDATION_URLPATH("smp.sso.cas.token.validation.urlpath", "http://localhost:8080/cas/", "The CAS URL path for login. Complete URL is composed from parameters: ${smp.sso.cas.url}/${smp.sso.cas.urlpath.token.validation}.", false, false, true, STRING),
+    SSO_CAS_CALLBACK_URL("smp.sso.cas.callback.url", "http://localhost:8080/smp/ui/public/rest/security/cas", "The URL is the callback URL belonging to the local SMP Security System. If using RP make sure it target SMP path '/ui/public/rest/security/cas'", false, false, true, URL),
+    SSO_CAS_SMP_LOGIN_URI("smp.sso.cas.smp.uri", "/smp/ui/public/rest/security/cas", "SMP relative path which triggers CAS authentication", false, false, true, STRING),
+    SSO_CAS_TOKEN_VALIDATION_URLPATH("smp.sso.cas.token.validation.urlpath", "laxValidate", "The CAS URL path for login. Complete URL is composed from parameters: ${smp.sso.cas.url}/${smp.sso.cas.urlpath}.", false, false, true, STRING),
     SSO_CAS_TOKEN_VALIDATION_PARAMS("smp.sso.cas.token.validation.params", "acceptStrengths:BASIC,CLIENT_CERT|assuranceLevel:TOP", "The CAS token validation key:value properties separated with '|'.Ex: 'acceptStrengths:BASIC,CLIENT_CERT|assuranceLevel:TOP'", false, false, true, MAP_STRING),
     SSO_CAS_TOKEN_VALIDATION_GROUPS("smp.sso.cas.token.validation.groups", "DIGIT_SMP|DIGIT_ADMIN", "'|' separated CAS groups user must belong to.", false, false, true, LIST_STRING),
 
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ConfigurationService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ConfigurationService.java
index c18ebe7222d1d270f99331c89c7836bc530b86e7..11619ba97d6e662a515e0117d6b1311eb4ac7d6b 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ConfigurationService.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ConfigurationService.java
@@ -287,6 +287,10 @@ public class ConfigurationService {
         return (java.net.URL) configurationDAO.getCachedPropertyValue(SSO_CAS_CALLBACK_URL);
     }
 
+    public String getCasSMPLoginRelativePath() {
+        return (String) configurationDAO.getCachedPropertyValue(SSO_CAS_SMP_LOGIN_URI);
+    }
+
     public String getCasURLPathLogin() {
         return (String) configurationDAO.getCachedPropertyValue(SSO_CAS_URLPATH_LOGIN);
     }
diff --git a/smp-server-library/src/test/resources/data.sql b/smp-server-library/src/test/resources/data.sql
deleted file mode 100755
index 60ec3d66c368bb67bdefe17b29de8670f9b88d40..0000000000000000000000000000000000000000
--- a/smp-server-library/src/test/resources/data.sql
+++ /dev/null
@@ -1,165 +0,0 @@
---------------------------------------------------------
---  File created - Thursday-August-30-2018   
---------------------------------------------------------
-/*
-
-Insert into SMP_DOMAIN (DOMAINID,BDMSLCLIENTCERTHEADER,BDMSLCLIENTCERTALIAS,BDMSLSMPID,SIGNATURECERTALIAS) values ('peppol','sno=3b3b162e7d37dd2e50edc6d3378997e1&subject=CN=SMP_OpenPEPPOL SMK 003,O=OpenPEPPOL,C=BE&validfrom=Oct 12 10:37:53 2016 CEST&validto=Oct 1 10:37:53 2018 CEST&issuer=CN=PEPPOL Root TEST CA,OU=FOR TEST PURPOSES ONLY,O=NATIONAL IT AND TELECOM AGENCY,C=DK',null,'CEF-TEST-PEPPOL-SMP',null);
-Insert into SMP_DOMAIN (DOMAINID,BDMSLCLIENTCERTHEADER,BDMSLCLIENTCERTALIAS,BDMSLSMPID,SIGNATURECERTALIAS) values ('default','sno=3b3b162e7d37dd2e50edc6d3378997e1&subject=CN=SMP_OpenPEPPOL SMK 003,O=OpenPEPPOL,C=BE&validfrom=Oct 12 10:37:53 2016 CEST&validto=Oct 1 10:37:53 2018 CEST&issuer=CN=PEPPOL Root TEST CA,OU=FOR TEST PURPOSES ONLY,O=NATIONAL IT AND TELECOM AGENCY,C=DK',null,'DEFAULT-SMP-ID',null);
-
-
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('AdminSMP1TEST','0007:001:oasis','iso6523-actorid-upis');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('AdminSMP1TEST','0007:002:oasis','iso6523-actorid-upis');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('AdminSMP1TEST','00117770010100777','urn:oasis:names:tc:ebcore:partyid-type:iso6523:0088');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('AdminSMP1TEST','0077:7777717777777difi','ehealth-actorid-qns');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('AdminSMP1TEST','0077:RP:TEST','ehealth-actorid-qns');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('AdminSMP1TEST','0088:7770010100777','ehealth-actorid-qns');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('CN=EHEALTH_AP_TEST_00000,O=European Commission,C=BE:23b207cb468b8519','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('CN=EHEALTH_SMP_EC,O=European Commission,C=BE:f71ee8b11cb3b787','0007:9340033829dev01','ehealth-actorid-qns');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('CN=EHEALTH_SMP_EC,O=European Commission,C=BE:f71ee8b11cb3b787','0007:9340033829dev02','ehealth-actorid-qns');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('CN=EHEALTH_SMP_EC,O=European Commission,C=BE:f71ee8b11cb3b787','0007:9340033829dev1','ehealth-actorid-qns');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('CN=EHEALTH_SMP_EC,O=European Commission,C=BE:f71ee8b11cb3b787','0007:9340033829test2','ehealth-actorid-qns');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('CN=EHEALTH_SMP_EC,O=European Commission,C=BE:f71ee8b11cb3b787','0088:777ehealth10100777','ehealth-actorid-qns');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('CN=EHEALTH_SMP_TEST_BRAZIL,O=European Commission,C=BE:0000000000000123','urn:cipa:ncpb','ehealth-actorid-qns');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('CN=EHEALTH_SMP_TEST_BRAZIL,O=European Commission,C=BE:48b681ee8e0dcc08','0088:5798000000120','iso6523-actorid-upis');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('CN=GENERALERDS_AP_TEST_00000,O=European Commission,C=BE:e6588be5c376f78e','0088:123456','iso6523-actorid-upis');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('CN=GENERALERDS_AP_TEST_00000,O=European Commission,C=BE:e6588be5c376f78e','0088:1234567','iso6523-actorid-upis');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('CN=GENERALERDS_AP_TEST_00000,O=European Commission,C=BE:e6588be5c376f78e','0088:918247451','iso6523-actorid-upis');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('CN=SMP_CONNECTIVITYTEST_05,O=Connectivity Test,C=BE:0000000000001052','0007:9340033829:jrc:02','ehealth-actorid-qns');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('CN=SMP_OpenPEPPOL SMK 003,O=OpenPEPPOL,C=BE:3b3b162e7d37dd2e50edc6d3378997e1','0007:9340033829:jrc','ehealth-actorid-qns');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('CN=SMP_OpenPEPPOL SMK 003,O=OpenPEPPOL,C=BE:3b3b162e7d37dd2e50edc6d3378997e1','0007:9340033829:jrc:01','ehealth-actorid-qns');
-Insert into SMP_OWNERSHIP (USERNAME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME) values ('CN=SMP_OpenPEPPOL SMK 003,O=OpenPEPPOL,C=BE:3b3b162e7d37dd2e50edc6d3378997e1','0007:9340033829dev03','ehealth-actorid-qns');
-
-
-Insert into SMP_PROCESS (DOCUMENTIDENTIFIERSCHEME,PROCESSIDENTIFIER,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER,PROCESSIDENTIFIERTYPE) values ('busdox-docid-qns','urn:www.cenbii.eu:profile:bii04:ver1.0','0088:5798000000112','iso6523-actorid-upis','urn:oasis:names:specification:ubl:schema:xsd:Invoice-12::Invoice##urn:www.cenbii.eu:transaction:biicoretrdm010:ver1.0:#urn:www.peppol.eu:bis:peppol4a:ver1.0::2.0','cenbii-procid-ubl');
-Insert into SMP_PROCESS (DOCUMENTIDENTIFIERSCHEME,PROCESSIDENTIFIER,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER,PROCESSIDENTIFIERTYPE) values ('busdox-docid-qns','urn:www.cenbii.eu:profile:bii05:ver2.0','0007:9340033829test','iso6523-actorid-upis','urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:www.cenbii.eu:transaction:biitrns014:ver2.0:extended:urn:www.peppol.eu:bis:peppol5a:ver2.0::2.1','cenbii-procid-ubl');
-Insert into SMP_PROCESS (DOCUMENTIDENTIFIERSCHEME,PROCESSIDENTIFIER,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER,PROCESSIDENTIFIERTYPE) values ('busdox-docid-qns','urn:www.cenbii.eu:profile:bii05:ver2.0','0007:9340033829test','iso6523-actorid-upis','urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:www.cenbii.eu:transaction:biitrns010:ver2.0:extended:urn:www.peppol.eu:bis:peppol5a:ver2.0::2.1','cenbii-procid-ubl');
-Insert into SMP_PROCESS (DOCUMENTIDENTIFIERSCHEME,PROCESSIDENTIFIER,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER,PROCESSIDENTIFIERTYPE) values ('ehealth-resid-qns','urn:www.cenbii.eu:profile:bii04:ver1.0','0002:gutek','iso6523-actorid-upis','urn::epsos##services:extended:epsos::51','cenbii-procid-ubl');
-Insert into SMP_PROCESS (DOCUMENTIDENTIFIERSCHEME,PROCESSIDENTIFIER,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER,PROCESSIDENTIFIERTYPE) values ('ehealth-resid-qns','urn:www.cenbii.eu:profile:bii04:ver1.0','0002:gutek','iso6523-actorid-upis','urn::epsos##services:extended:epsos::52','cenbii-procid-ubl');
-
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0088:5798000000113','iso6523-actorid-upis','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('urn:aaaa:ncpb','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0088:5798000000112','iso6523-actorid-upis','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0088:5798700000112','iso6523-actorid-upis','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0007:002:oasis','iso6523-actorid-upis','peppol');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0007:1238000000666','iso6523-actorid-upis','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0088:123456','iso6523-actorid-upis','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0002:gutek','iso6523-actorid-upis','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0088:918247451','iso6523-actorid-upis','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('00117770010100777','urn:oasis:names:tc:ebcore:partyid-type:iso6523:0088','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0088:5798000000120','iso6523-actorid-upis','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('urn:aaa:ncpb','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('urn:bbb:ncpb','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0077:7777717777777difi','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0088:777ehealth10100777','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('urn:ehealth:eu:ncp-idp','ehealth-participantid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0007:9340033829test2','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0088:1234567','iso6523-actorid-upis','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0007:9340033829dev1','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0088:7770010100777','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('urn:ro:ncpb','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('ro','participant-demo-scheme','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('ro-0001','participant-demo-scheme','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('ro-0002','participant-demo-scheme','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('it-0001','participant-demo-scheme','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('it-0002','participant-demo-scheme','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('bg-l001','participant-demo-scheme','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('bg-l002','participant-demo-scheme','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('it-l001','participant-demo-scheme','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('bg-lx001','participant-demo-scheme','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('bg-xx123','participant-demo-scheme','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('it-lx001','participant-demo-scheme','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0077:RP:TEST','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0007:9340033829dev01','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0007:9340033829dev02','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0007:9340033829dev03','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0007:9340033829:jrc:02','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0007:9340033829test','iso6523-actorid-upis','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('urn:cipa:ncpb','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('urn:romania:ncpb','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0007:9340033829:jrc','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0007:9340033829:jrc:01','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0007:9340033829testsupport','iso6523-actorid-upis','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('urn:poland:ncpb','ehealth-actorid-qns','default');
-Insert into SMP_SERVICE_GROUP (BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOMAINID) values ('0007:001:oasis','iso6523-actorid-upis','peppol');
-
-
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('busdox-docid-qns','0007:001:oasis','iso6523-actorid-upis','urn:oasis:names:specification:ubl:schema:xsd:creditnote-2::creditnote##urn:www.cenbii.eu:transaction:biitrns014:ver2.0:extended:urn:www.peppol.eu:bis:peppol5a:ver2.0::2.1');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('busdox-docid-qns','0007:002:oasis','iso6523-actorid-upis','urn:oasis:names:specification:ubl:schema:xsd:creditnote-2::creditnote##urn:www.cenbii.eu:transaction:biitrns014:ver2.0:extended:urn:www.peppol.eu:bis:peppol5a:ver2.0::2.1');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('busdox-docid-qns','0007:9340033829dev1','ehealth-actorid-qns','urn:oasis:names:specification:ubl:schema:xsd:invoice-2::invoice##urn:www.cenbii.eu:transaction:biitrns010:ver2.0:extended:urn:www.peppol.eu:bis:peppol5a:ver2.0::2.2');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('busdox-docid-qns','0007:9340033829test','iso6523-actorid-upis','urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:www.cenbii.eu:transaction:biitrns014:ver2.0:extended:urn:www.peppol.eu:bis:peppol5a:ver2.0::2.1');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('busdox-docid-qns','0007:9340033829test','iso6523-actorid-upis','urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:www.cenbii.eu:transaction:biitrns010:ver2.0:extended:urn:www.peppol.eu:bis:peppol5a:ver2.0::2.1');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('busdox-docid-qns','0007:9340033829test2','ehealth-actorid-qns','urn:oasis:names:specification:ubl:schema:xsd:creditnote-2::creditnote##urn:www.cenbii.eu:transaction:biitrns014:ver2.0:extended:urn:www.peppol.eu:bis:peppol5a:ver2.0::2.1');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('busdox-docid-qns','0007:9340033829test2','ehealth-actorid-qns','urn:oasis:names:specification:ubl:schema:xsd:invoice-2::invoice##urn:www.cenbii.eu:transaction:biitrns010:ver2.0:extended:urn:www.peppol.eu:bis:peppol5a:ver2.0::2.1');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('busdox-docid-qns','0007:9340033829testsupport','iso6523-actorid-upis','urn:oasis:names:specification:ubl:schema:xsd:Invoice-12::Invoice##urn:www.cenbii.eu:transaction:biicoretrdm010:ver1.0:#urn:www.peppol.eu:bis:peppol5a:ver2.0::2.1');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('busdox-docid-qns','0088:5798000000112','iso6523-actorid-upis','urn:oasis:names:specification:ubl:schema:xsd:Invoice-12::Invoice##urn:www.cenbii.eu:transaction:biicoretrdm010:ver1.0:#urn:www.peppol.eu:bis:peppol4a:ver1.0::2.0');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','bg-l001','participant-demo-scheme','agrex');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','bg-l001','participant-demo-scheme','agrim');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','bg-l002','participant-demo-scheme','agrex');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','bg-l002','participant-demo-scheme','agrim');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','bg-lx001','participant-demo-scheme','agrex');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','bg-lx001','participant-demo-scheme','agrim');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','bg-xx123','participant-demo-scheme','agrex');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','bg-xx123','participant-demo-scheme','agrim');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','it-0001','participant-demo-scheme','agrex-request');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','it-0001','participant-demo-scheme','agrim-request');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','it-0002','participant-demo-scheme','agrex-request');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','it-0002','participant-demo-scheme','agrim-request');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','it-l001','participant-demo-scheme','agrex');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','it-l001','participant-demo-scheme','agrim');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','it-lx001','participant-demo-scheme','agrex');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','it-lx001','participant-demo-scheme','agrim');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','ro-0001','participant-demo-scheme','agrex-request');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','ro-0001','participant-demo-scheme','agrim-request');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','ro-0002','participant-demo-scheme','agrex-request');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('document-demo-scheme','ro-0002','participant-demo-scheme','agrim-request');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','0002:gutek','iso6523-actorid-upis','urn::epsos##services:extended:epsos::51');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','0002:gutek','iso6523-actorid-upis','urn::epsos##services:extended:epsos::52');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:aaa:ncpb','ehealth-actorid-qns','urn::epsos##services:extended:epsos::107');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:cipa:ncpb','ehealth-actorid-qns','urn::epsos##services:extended:epsos::107');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:eu:ncp-idp','ehealth-participantid-qns','urn:ehealth:ism::internationalsearchmask##ehealth-107');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:CountryBIdentityProvider::XUA::ProvideX-UserAssertion##ITI-40');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:ISM::InternationalSearchMask##ehealth-107');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:PatientIdentificationAndAuthentication::XCPD::CrossGatewayPatientDiscovery##ITI-55');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:ProvisioningOfData:BPPC-RegisterUpdate::XDR::ProvideandRegisterDocumentSet-b##ITI-41');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:ProvisioningOfData:Provide::XDR::ProvideandRegisterDocumentSet-b##ITI-41');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:RequestOfData::XCA::CrossGatewayQuery##ITI-38');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:VPN::VPNGatewayServer##ehealth-105');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:countrybidentityprovider::identityprovider::hpauthentication##epsos-91');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:ism::internationalsearchmask##ehealth-107');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:patientidentificationandauthentication::xcpd::crossgatewaypatientdiscovery##iti-55');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:provisioningofdata:bppc-registerupdate::xdr::provideandregisterdocumentset-b##iti-41');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:provisioningofdata:provide::xdr::provideandregisterdocumentset-b##iti-41');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:requestofdata::xca::crossgatewayquery##iti-38');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:requestofdata::xca::crossgatewayretrieve##iti-39');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:requestofdata::xcf::crossgatewayfetchrequest##iti-63');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:vpn::vpngatewayclient##ehealth-106');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ehealth:pt:ncpb-idp','ehealth-participantid-qns','urn:ehealth:vpn::vpngatewayserver##ehealth-105');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:poland:ncpb','ehealth-actorid-qns','urn::epsos##services:extended:epsos::107');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:poland:ncpb','ehealth-actorid-qns','utf-8');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:ro:ncpb','ehealth-actorid-qns','urn::epsos##services:extended:epsos::107');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('ehealth-resid-qns','urn:romania:ncpb','ehealth-actorid-qns','urn::epsos##services:extended:epsos::107');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('iso6523-actorid-upis','0088:123456','iso6523-actorid-upis','services:extended:epsos::107');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('iso6523-actorid-upis','0088:5798000000120','iso6523-actorid-upis','services:extended:epsos::107');
-Insert into SMP_SERVICE_METADATA (DOCUMENTIDENTIFIERSCHEME,BUSINESSIDENTIFIER,BUSINESSIDENTIFIERSCHEME,DOCUMENTIDENTIFIER) values ('iso6523-actorid-upis','0088:918247451','iso6523-actorid-upis','services:extended:epsos::107');
-
-
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('test','$2a$10$fvONLZ1J80Sj.4C2w0/UBuYxHEGoXLIZgZfxqEXoDSH8q3fbTcGJ6',0);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('CN=GENERALERDS_AP_TEST_00000,O=European Commission,C=BE:e6588be5c376f78e',null,0);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('CN=GENERALERDS_AP_TEST_00000/serialNumber\=1,O=European Commission,C=BE:e6588be5c376f78e',null,0);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('smp_admin','$2a$10$.iCtVZuxZM1l4MwNZ7P9..DfwTOplrq8OeynghNiHNE.LIP.UmF42',1);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('CN=EHEALTH_SMP_TEST_BRAZIL,O=European Commission,C=BE:48b681ee8e0dcc08',null,0);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('CN=EHEALTH_SMP_EC_PassedDate,O=European Commission,C=BE:00000000589C4C3B',null,0);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('CN=EHEALTH_SMP_EC,O=European Commission,C=BE:f71ee8b11cb3b787',null,0);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('CN=EHEALTH_AP_TEST_00000/serialNumber\=1,O=European Commission,C=BE:23b207cb468b8519',null,0);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('CN=EHEALTH_AP_TEST_00000,O=European Commission,C=BE:23b207cb468b8519',null,0);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('AdminSMP1TEST','$2a$10$vrTybiXuFJiGaCJksihuNeaLZnAKwjIcL7KYopxFyZdoRlzs9qZCm',1);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('AdminSMP2TEST','$2a$10$OIRWlcLV7TXEoWr9SsxLk..vpHhNPDmBPxUjgCL/euNVHxhvtnhBi',1);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('CN=GRP:SMP_TEST_\+\,& \=eau/emailAddress\=CEF-EDELIVERY-SUPPORT@ec.europa.eu/serialNumber\=1,O=European Commission,C=BE:6eef83f5ef06a05b',null,0);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('CN=SMP_OpenPEPPOL SMK 003,O=OpenPEPPOL,C=BE:3b3b162e7d37dd2e50edc6d3378997e1',null,0);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('CN=SMP_CONNECTIVITYTEST_05,O=Connectivity Test,C=BE:0000000000001052',null,0);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('CN=SMP_CONNECTIVITYTEST_05/emailAddress/=CEF-EDELIVERY-SUPPORT@ec.europa.eu,O=Connectivity Test,C=BE:0000000000001052',null,0);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('CN=EHEALTH_SMP_TEST_BRAZIL,O=European Commission,C=BE:0000000000000123',null,0);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('CN=slash/backslash\\quote\"colon:_rfc2253special_ampersand&comma\,equals\=plus\+lessthan\<greaterthan\>hash\#semicolon\;end,O=DEẞßÄäPLżółćNOÆæØøÅå,C=PL:0000000000001010',null,1);
-Insert into SMP_USER (USERNAME,PASSWORD,ISADMIN) values ('admin','$2a$10$jsZamGH2qv8SVnRy55bKOOXof0QbIOaOqsYT/Ujo2Eb7dVQxG0Hd6',0);
-*/
\ No newline at end of file
diff --git a/smp-server-library/src/test/resources/schema.sql b/smp-server-library/src/test/resources/schema.sql
deleted file mode 100755
index 0744b70731d39613bcb496b450a43838cd6e363d..0000000000000000000000000000000000000000
--- a/smp-server-library/src/test/resources/schema.sql
+++ /dev/null
@@ -1,141 +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.
-
-CREATE TABLE smp_domain (
-  domainId              VARCHAR(50) NOT NULL,
-  bdmslClientCertHeader VARCHAR(4000) ,
-  bdmslClientCertAlias  VARCHAR(50) ,
-  bdmslSmpId            VARCHAR(50)  NOT NULL,
-  signatureCertAlias    VARCHAR(50) ,
-  PRIMARY KEY(domainId)
-);
-
-
-CREATE TABLE smp_domain_AUD (
-  domainId              VARCHAR(50) NOT NULL,
-  bdmslClientCertHeader VARCHAR(4000),
-  bdmslClientCertAlias  VARCHAR(50),
-  bdmslSmpId            VARCHAR(50) NOT NULL,
-  signatureCertAlias    VARCHAR(50) NULL,
-  REV integer not null,
-  REVTYPE tinyint,
-  PRIMARY KEY(domainId, REV)
-);
-
-
-
-CREATE TABLE smp_service_group (
-  businessIdentifier       VARCHAR(50) NOT NULL,
-  businessIdentifierScheme VARCHAR(100) NOT NULL,
-  domainId                 VARCHAR(50) DEFAULT 'domain1' NOT NULL ,
-  xmlContent                TEXT             NULL DEFAULT NULL,
-  PRIMARY KEY (businessIdentifier, businessIdentifierScheme),
-  CONSTRAINT FK_srv_group_domain FOREIGN KEY (domainId)
-    REFERENCES smp_domain (domainId)
-);
-
-CREATE TABLE smp_service_group_AUD (
-  businessIdentifier       VARCHAR(50) NOT NULL,
-  businessIdentifierScheme VARCHAR(100) NOT NULL,
-  domainId                 VARCHAR(50) NOT NULL,
-  xmlContent                TEXT             NULL DEFAULT NULL,
-  REV integer not null,
-  REVTYPE tinyint,
-  PRIMARY KEY (businessIdentifier, businessIdentifierScheme, REV)
-);
-
-CREATE TABLE smp_service_metadata (
-  documentIdentifier       VARCHAR(500) NOT NULL,
-  documentIdentifierScheme VARCHAR(100) NOT NULL,
-  businessIdentifier       VARCHAR(50) NOT NULL,
-  businessIdentifierScheme VARCHAR(100) NOT NULL,
-  xmlcontent               TEXT,
-  PRIMARY KEY (documentIdentifier, documentIdentifierScheme, businessIdentifier, businessIdentifierScheme),
-  FOREIGN KEY (businessIdentifier, businessIdentifierScheme) REFERENCES smp_service_group (businessIdentifier, businessIdentifierScheme)
-    ON DELETE CASCADE
-    ON UPDATE CASCADE
-);
-
-CREATE TABLE smp_service_metadata_AUD (
-  documentIdentifier       VARCHAR(500) NOT NULL,
-  documentIdentifierScheme VARCHAR(100) NOT NULL,
-  businessIdentifier       VARCHAR(50) NOT NULL,
-  businessIdentifierScheme VARCHAR(100) NOT NULL,
-  xmlcontent               TEXT,
-  REV integer not null,
-  REVTYPE tinyint,
-  PRIMARY KEY (documentIdentifier, documentIdentifierScheme, businessIdentifier, businessIdentifierScheme, REV)
-);
-
-
-CREATE TABLE smp_user (
-  username VARCHAR(256)         NOT NULL,
-  password VARCHAR(256),
-  isadmin  TINYINT(1) DEFAULT 0 NOT NULL,
-  PRIMARY KEY (username)
-);
-
-CREATE TABLE smp_user_AUD (
-  username VARCHAR(256)         NOT NULL,
-  password VARCHAR(256),
-  isadmin  TINYINT(1) DEFAULT 0 NOT NULL,
-  REV integer not null,
-  REVTYPE tinyint,
-  PRIMARY KEY (username, REV)
-);
-
-
-CREATE TABLE smp_ownership (
-  username                 VARCHAR(256)     NOT NULL,
-  businessIdentifier       VARCHAR(50) NOT NULL,
-  businessIdentifierScheme VARCHAR(100),
-  PRIMARY KEY (businessIdentifier, businessIdentifierScheme, username),
-  FOREIGN KEY (businessIdentifier, businessIdentifierScheme) REFERENCES smp_service_group (businessIdentifier, businessIdentifierScheme)
-    ON DELETE CASCADE
-    ON UPDATE CASCADE,
-  FOREIGN KEY (username) REFERENCES smp_user (username)
-    ON DELETE CASCADE
-    ON UPDATE CASCADE
-);
-
-
-CREATE TABLE smp_ownership_AUD (
-  username                 VARCHAR(256)     NOT NULL,
-  businessIdentifier       VARCHAR(50) NOT NULL,
-  businessIdentifierScheme VARCHAR(100) NOT NULL,
-  REV integer not null,
-  REVTYPE tinyint,
-  PRIMARY KEY (username, businessIdentifier, businessIdentifierScheme, REV)
-);
-
-
-CREATE TABLE SMP_REV_INFO (
-  ID INT AUTO_INCREMENT NOT NULL,
-  TIMESTAMP BIGINT NULL,
-  REVISION_DATE timestamp NULL,
-  username VARCHAR(255) NULL,
-  CONSTRAINT PK_SMP_REV_INFO PRIMARY KEY (ID)
-);
-
-
-
-
-create table hibernate_sequence(
-    next_val BIGINT NOT NULL
-);
-
-INSERT INTO hibernate_sequence(next_val) values(1);
-
-INSERT INTO smp_domain(domainId, bdmslSmpId) VALUES('domain1', 'DEFAULT-SMP-ID');
--- default admin user with password "changeit"
-INSERT INTO smp_user(username, password, isadmin) VALUES ('smp_admin', '$2a$10$SZXMo7K/wA.ULWxH7uximOxeNk4mf3zU6nxJx/2VfKA19QlqwSpNO', '1');
-
-commit;
diff --git a/smp-server-library/src/test/resources/service_integration_test_data.sql b/smp-server-library/src/test/resources/service_integration_test_data.sql
deleted file mode 100644
index f06c8dbf885ddfe33a00ff8dc8231fd4aee5856b..0000000000000000000000000000000000000000
--- a/smp-server-library/src/test/resources/service_integration_test_data.sql
+++ /dev/null
@@ -1,4 +0,0 @@
-insert into smp_user(username, password, ACCESS_TOKEN_ID, ACCESS_TOKEN, isadmin) values ('test_admin','$2a$06$k.Q/6anG4Eq/nNTZ0C1UIuAKxpr6ra5oaMkMSrlESIyA5jKEsUdyS', 'test_pat_admin','$2a$10$bP44Ij/mE6U6OUo/QrKCvOb7ouSClKnyE0Ak6t58BLob9OTI534IO', 1);
-insert into smp_user(username, password, ACCESS_TOKEN_ID, ACCESS_TOKEN, isadmin) values ('test_user_hashed_pass','$2a$06$k.Q/6anG4Eq/nNTZ0C1UIuAKxpr6ra5oaMkMSrlESIyA5jKEsUdyS','test_pat_hashed_pass','$2a$10$WftDXn7YqMI/15D8r6fMOOHGQOPxAin8BwQJOjDe1d66SkEuekJ5q', 0);
-insert into smp_user(username, password, ACCESS_TOKEN_ID, ACCESS_TOKEN, isadmin) values ('test_user_clear_pass', 'gutek123','test_user_clear_pass', 'gutek123',0);
-insert into smp_user(username, password, ACCESS_TOKEN_ID, ACCESS_TOKEN, isadmin) values ('CN=common name,O=org,C=BE:0000000000000066', 'CN=common name,O=org,C=BE:0000000000000066', '',0);
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 475a426d93a9409a844f3a944295d52a305a0397..6dc991bacff2f0793f8ac95daaee29740f509c5f 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
@@ -100,6 +100,11 @@ public class SMPAuthenticationProvider implements AuthenticationProvider {
                 LOG.warn("Unknown or null PreAuthenticatedAuthenticationToken principal type: " + principal);
             }
         } else if (authenticationToken instanceof UsernamePasswordAuthenticationToken) {
+            LOG.info("try to authentication Token: [{}] with user:[{}]" , authenticationToken.getClass(), authenticationToken.getPrincipal());
+            if ("_cas_stateful_".equalsIgnoreCase((String)authenticationToken.getPrincipal())){
+                LOG.debug("Ignore CAS authentication and leave it to cas authentication module");
+                return null;
+            }
             authentication = authenticateByUsernameToken((UsernamePasswordAuthenticationToken) authenticationToken);
         }
 
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProviderForUI.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProviderForUI.java
index d3de04a62646dedfda85d549a8c794eda56b27a2..4c5509fb4892aebf89568ade7ebaf424ae0f10cd 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProviderForUI.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationProviderForUI.java
@@ -66,6 +66,7 @@ public class SMPAuthenticationProviderForUI implements AuthenticationProvider {
 
         Authentication authentication = null;
         // PreAuthentication token for the rest service certificate authentication
+        LOG.debug("Authenticate authentication token type: [{}]", authenticationToken.getClass());
         if (authenticationToken instanceof UsernamePasswordAuthenticationToken) {
             authentication = authenticateByUsernamePassword((UsernamePasswordAuthenticationToken) authenticationToken);
         }
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/cas/SMPCasConfigurer.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/cas/SMPCasConfigurer.java
index ae9fae979bf6ec0637adb62e938b5efcb1eb1e7d..dd1275b4abc926a0455126fbd6700273bd42937e 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/cas/SMPCasConfigurer.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/cas/SMPCasConfigurer.java
@@ -82,7 +82,7 @@ public class SMPCasConfigurer {
         CasAuthenticationEntryPoint entryPoint = new CasAuthenticationEntryPoint();
         entryPoint.setLoginUrl(casUrlLogin);
         entryPoint.setServiceProperties(serviceProperties);
-        LOG.info("Configured CAS Login Url: " + entryPoint.getLoginUrl());
+        LOG.info("Configured CAS CasAuthenticationEntryPoint Url: " + entryPoint.getLoginUrl());
         return entryPoint;
     }
 
@@ -99,6 +99,7 @@ public class SMPCasConfigurer {
 
         String casUrl = configService.getCasURL().toString();
         String casTokenValidationSuffix = configService.getCasURLTokenValidation();
+        LOG.debug("Create Bean SMPCas20ServiceTicketValidator with cas URL [{}] and token suffix [{}]!", casUrl,casTokenValidationSuffix );
         SMPCas20ServiceTicketValidator validator = new SMPCas20ServiceTicketValidator(casUrl, casTokenValidationSuffix);
         validator.setCustomParameters(getCustomParameters(configService));
         validator.setRenew(false);
@@ -140,6 +141,7 @@ public class SMPCasConfigurer {
             return null;
         }
 
+        LOG.debug("Configure Bean [CasAuthenticationProvider:{}]!", SMP_CAS_PROPERTIES_BEAN);
         CasAuthenticationProvider provider = new CasAuthenticationProvider();
         provider.setServiceProperties(serviceProperties);
         provider.setTicketValidator(serviceTicketValidator);
@@ -164,6 +166,7 @@ public class SMPCasConfigurer {
 
         CasAuthenticationFilter filter = new CasAuthenticationFilter();
         filter.setFilterProcessesUrl(SMP_SECURITY_PATH_CAS_AUTHENTICATE + "/login");
+        //filter.setFilterProcessesUrl(SMP_SECURITY_PATH_CAS_AUTHENTICATE);
         filter.setServiceProperties(casServiceProperties);
         filter.setAuthenticationManager(authenticationManager);
         LOG.info("Created CAS Filter: " + filter.getClass().getSimpleName() + "with the properties: " + casServiceProperties.getArtifactParameter());
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/cas/SMPCasUserService.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/cas/SMPCasUserService.java
index eb05e70e77d80cddd71cc9f29addbd16d4e89175..eab8b8425f476d04086834e37af58bc2d086460d 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/cas/SMPCasUserService.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/cas/SMPCasUserService.java
@@ -61,6 +61,7 @@ public class SMPCasUserService implements AuthenticationUserDetailsService<CasAs
 			throw new UsernameNotFoundException("User with the username ["+username+"] is not registered in SMP", ex);
 		}
 		UserRO userRo = uiUserService.convertToRo(dbuser);
+		userRo.setCasAuthenticated(true);
 		userRo.setPassword(null);
 		userRo.setAuthorities(Collections.singletonList(new SMPAuthority(userRo.getRole())));
 		return userRo;
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/UISecurityConfigurerAdapter.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/UISecurityConfigurerAdapter.java
index 6d269ecaac38bf61ab677e2b92e1c8d5b061a494..74cedbff88d74b3f1d5fa134d4e494d0a66356c8 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/UISecurityConfigurerAdapter.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/UISecurityConfigurerAdapter.java
@@ -12,16 +12,12 @@ import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.core.annotation.Order;
 import org.springframework.http.HttpMethod;
 import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.cas.authentication.CasAuthenticationProvider;
-import org.springframework.security.cas.web.CasAuthenticationEntryPoint;
-import org.springframework.security.cas.web.CasAuthenticationFilter;
 import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
 import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
@@ -35,12 +31,12 @@ import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
 import org.springframework.security.web.csrf.CsrfTokenRepository;
 import org.springframework.security.web.firewall.HttpFirewall;
 import org.springframework.security.web.session.HttpSessionEventPublisher;
-import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
 import org.springframework.security.web.util.matcher.AnyRequestMatcher;
 import org.springframework.security.web.util.matcher.RequestMatcher;
 import org.springframework.web.server.adapter.ForwardedHeaderTransformer;
 
-import static eu.europa.ec.edelivery.smp.config.SMPSecurityConstants.*;
+import static eu.europa.ec.edelivery.smp.config.SMPSecurityConstants.SMP_SECURITY_PATH_CAS_AUTHENTICATE;
+import static eu.europa.ec.edelivery.smp.config.SMPSecurityConstants.SMP_UI_AUTHENTICATION_MANAGER_BEAN;
 
 /**
  * SMP UI Security configuration
@@ -49,20 +45,16 @@ import static eu.europa.ec.edelivery.smp.config.SMPSecurityConstants.*;
  * @since 4.1
  */
 
+@Order(2)
 @EnableWebSecurity
 @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
-@Order(1)
 @ComponentScan("eu.europa.ec.edelivery.smp.auth")
 public class UISecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
 
     private static final Logger LOG = LoggerFactory.getLogger(UISecurityConfigurerAdapter.class);
 
     SMPAuthenticationProviderForUI smpAuthenticationProviderForUI;
-    CasAuthenticationProvider casAuthenticationProvider;
     MDCLogRequestFilter mdcLogRequestFilter;
-    // User account
-    CasAuthenticationFilter casAuthenticationFilter;
-    CasAuthenticationEntryPoint casAuthenticationEntryPoint;
 
     CsrfTokenRepository csrfTokenRepository;
     HttpFirewall httpFirewall;
@@ -75,19 +67,12 @@ public class UISecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
                                        @Lazy MDCLogRequestFilter mdcLogRequestFilter,
                                        @Lazy CsrfTokenRepository csrfTokenRepository,
                                        @Lazy RequestMatcher csrfURLMatcher,
-                                       @Lazy HttpFirewall httpFirewall,
-                                       // optional cas authentication configuration
-                                       @Lazy CasAuthenticationProvider casAuthenticationProvider,
-                                       @Lazy @Qualifier(SMP_CAS_FILTER_BEAN) CasAuthenticationFilter casAuthenticationFilter,
-                                       @Lazy CasAuthenticationEntryPoint casAuthenticationEntryPoint
+                                       @Lazy HttpFirewall httpFirewall
     ) {
         super(false);
         this.configurationService = configurationService;
         this.smpAuthenticationProviderForUI = smpAuthenticationProviderForUI;
-        this.casAuthenticationProvider = casAuthenticationProvider;
-        this.casAuthenticationFilter = casAuthenticationFilter;
         this.mdcLogRequestFilter = mdcLogRequestFilter;
-        this.casAuthenticationEntryPoint = casAuthenticationEntryPoint;
         this.csrfTokenRepository = csrfTokenRepository;
         this.csrfURLMatcher = csrfURLMatcher;
         this.httpFirewall = httpFirewall;
@@ -99,11 +84,6 @@ public class UISecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
         configureSecurityHeaders(httpSecurity);
 
         ExceptionHandlingConfigurer<HttpSecurity> exceptionHandlingConfigurer = httpSecurity.exceptionHandling();
-        if (configurationService.isSSOEnabledForUserAuthentication()) {
-            LOG.debug("The CAS authentication is enabled. Set casAuthenticationEntryPoint!");
-            exceptionHandlingConfigurer = exceptionHandlingConfigurer.defaultAuthenticationEntryPointFor(casAuthenticationEntryPoint, new AntPathRequestMatcher(SMP_SECURITY_PATH_CAS_AUTHENTICATE));
-        }
-
         SMPSecurityExceptionHandler smpSecurityExceptionHandler = new SMPSecurityExceptionHandler();
 
         exceptionHandlingConfigurer.authenticationEntryPoint(smpSecurityExceptionHandler);
@@ -115,13 +95,6 @@ public class UISecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
                 .contentTypeOptions().and()
                 .xssProtection().xssProtectionEnabled(true).and()
                 .and();
-
-        if (configurationService.isSSOEnabledForUserAuthentication()) {
-            LOG.debug("The CAS authentication is enabled. Add CAS filter!");
-            httpSecurity = httpSecurity.addFilter(casAuthenticationFilter);
-        }
-
-
         httpSecurity
                 .addFilterAfter(mdcLogRequestFilter, BasicAuthenticationFilter.class)
                 .httpBasic().authenticationEntryPoint(smpSecurityExceptionHandler).and() // username
@@ -196,10 +169,6 @@ public class UISecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
     @Override
     protected void configure(AuthenticationManagerBuilder auth) {
         LOG.info("configureAuthenticationManagerBuilder, set SMP provider ");
-        if (configurationService.isSSOEnabledForUserAuthentication()) {
-            LOG.info("[CAS] Authentication Provider enabled");
-            auth.authenticationProvider(casAuthenticationProvider);
-        }
         // add UI authentication provider
         auth.authenticationProvider(smpAuthenticationProviderForUI);
     }
@@ -228,7 +197,7 @@ public class UISecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
         // init pages
         requestMatcher.addIgnoreUrl("^$", HttpMethod.GET);
         //ignore CSRF for SMP rest API
-        requestMatcher.addIgnoreUrl("^/(?!ui/)[^/]*(/services/.*)?$", HttpMethod.GET,HttpMethod.PUT,HttpMethod.DELETE,HttpMethod.POST);
+        requestMatcher.addIgnoreUrl("^/(?!ui/)[^/]*(/services/.*)?$", HttpMethod.GET, HttpMethod.PUT, HttpMethod.DELETE, HttpMethod.POST);
 
         //requestMatcher.addIgnoreUrl("^(/smp)?/$", HttpMethod.GET);
         //requestMatcher.addIgnoreUrl("/favicon(-[0-9x]{2,7})?.(png|ico)$", HttpMethod.GET);
@@ -272,7 +241,6 @@ public class UISecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
     @Bean
     public ForwardedHeaderTransformer smpForwardedHeaderTransformer() {
         ForwardedHeaderTransformer forwardedHeaderTransformer = new ForwardedHeaderTransformer();
-        // WebHttpHandlerBuilder.forwardedHeaderTransformer(ForwardedHeaderTransformer);
         forwardedHeaderTransformer.setRemoveOnly(false);
         return forwardedHeaderTransformer;
 
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/WSSecurityConfigurerAdapter.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/WSSecurityConfigurerAdapter.java
index 35ad4ff583af732376647dc4d0cc47361ff274a6..410dcc9572dbb38a8b2a4e1dcf33876aae983eff 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/WSSecurityConfigurerAdapter.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/config/WSSecurityConfigurerAdapter.java
@@ -26,12 +26,16 @@ import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Primary;
 import org.springframework.core.annotation.Order;
 import org.springframework.http.HttpMethod;
 import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.cas.authentication.CasAuthenticationProvider;
+import org.springframework.security.cas.web.CasAuthenticationEntryPoint;
+import org.springframework.security.cas.web.CasAuthenticationFilter;
 import org.springframework.security.config.BeanIds;
 import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
 import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
@@ -44,6 +48,7 @@ import org.springframework.security.config.http.SessionCreationPolicy;
 import org.springframework.security.web.csrf.CsrfTokenRepository;
 import org.springframework.security.web.firewall.DefaultHttpFirewall;
 import org.springframework.security.web.firewall.HttpFirewall;
+import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
 import org.springframework.security.web.util.matcher.AnyRequestMatcher;
 import org.springframework.security.web.util.matcher.RequestMatcher;
 
@@ -56,7 +61,7 @@ import static eu.europa.ec.edelivery.smp.config.SMPSecurityConstants.*;
  * @author gutowpa
  * @since 3.0
  */
-@Order(2)
+@Order(1)
 @EnableWebSecurity
 @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
 public class WSSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@@ -73,6 +78,10 @@ public class WSSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
     // Accounts supporting automated application functionalities
     ClientCertAuthenticationFilter clientCertAuthenticationFilter;
     EDeliveryX509AuthenticationFilter x509AuthenticationFilter;
+    // cas authentication
+    CasAuthenticationProvider casAuthenticationProvider;
+    CasAuthenticationFilter casAuthenticationFilter;
+    CasAuthenticationEntryPoint casAuthenticationEntryPoint;
 
     @Autowired
     public WSSecurityConfigurerAdapter(SMPAuthenticationProvider smpAuthenticationProvider,
@@ -80,7 +89,11 @@ public class WSSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
                                        @Lazy MDCLogRequestFilter mdcLogRequestFilter,
                                        @Lazy CsrfTokenRepository csrfTokenRepository,
                                        @Lazy RequestMatcher csrfURLMatcher,
-                                       @Lazy HttpFirewall httpFirewall
+                                       @Lazy HttpFirewall httpFirewall,
+                                       // optional cas authentication configuration
+                                       @Lazy CasAuthenticationProvider casAuthenticationProvider,
+                                       @Lazy @Qualifier(SMP_CAS_FILTER_BEAN) CasAuthenticationFilter casAuthenticationFilter,
+                                       @Lazy CasAuthenticationEntryPoint casAuthenticationEntryPoint
     ) {
         super(false);
         this.configurationService = configurationService;
@@ -89,18 +102,25 @@ public class WSSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
         this.csrfTokenRepository = csrfTokenRepository;
         this.csrfURLMatcher = csrfURLMatcher;
         this.httpFirewall = httpFirewall;
+        this.casAuthenticationEntryPoint = casAuthenticationEntryPoint;
+        this.casAuthenticationProvider = casAuthenticationProvider;
+        this.casAuthenticationFilter = casAuthenticationFilter;
+
     }
 
     @Override
     protected void configure(HttpSecurity httpSecurity) throws Exception {
-
         configureSecurityHeaders(httpSecurity);
-
         ExceptionHandlingConfigurer<HttpSecurity> exceptionHandlingConfigurer = httpSecurity.exceptionHandling();
-
         SMPSecurityExceptionHandler smpSecurityExceptionHandler = new SMPSecurityExceptionHandler();
+        //exceptionHandlingConfigurer.authenticationEntryPoint(smpSecurityExceptionHandler);
+        if (configurationService.isSSOEnabledForUserAuthentication()) {
+            String casEndpointAntPattern = SMP_SECURITY_PATH_CAS_AUTHENTICATE;
+            LOG.debug("The CAS authentication is enabled. Set casAuthenticationEntryPoint for endpoint [{}]!", casEndpointAntPattern);
+            exceptionHandlingConfigurer = exceptionHandlingConfigurer
+                    .defaultAuthenticationEntryPointFor(casAuthenticationEntryPoint, new AntPathRequestMatcher(casEndpointAntPattern));
+        }
 
-        exceptionHandlingConfigurer.authenticationEntryPoint(smpSecurityExceptionHandler);
         httpSecurity = exceptionHandlingConfigurer
                 .accessDeniedHandler(smpSecurityExceptionHandler)
                 .and()
@@ -109,11 +129,17 @@ public class WSSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
                 .xssProtection().xssProtectionEnabled(true).and()
                 .and();
 
+        if (configurationService.isSSOEnabledForUserAuthentication()) {
+            LOG.debug("The CAS authentication is enabled. Add CAS filter!");
+            httpSecurity = httpSecurity.addFilter(casAuthenticationFilter);
+        }
         httpSecurity
                 .addFilterAfter(mdcLogRequestFilter, EDeliveryX509AuthenticationFilter.class)
                 .addFilter(getClientCertAuthenticationFilter())
-                .addFilter(getEDeliveryX509AuthenticationFilter())
-                .httpBasic().authenticationEntryPoint(smpSecurityExceptionHandler).and() // username
+                .addFilter(getEDeliveryX509AuthenticationFilter());
+
+
+        httpSecurity.httpBasic().authenticationEntryPoint(smpSecurityExceptionHandler).and() // username
                 .anonymous().authorities(SMPAuthority.S_AUTHORITY_ANONYMOUS.getAuthority()).and()
                 .authorizeRequests()
                 .antMatchers(HttpMethod.DELETE, SMP_SECURITY_PATH_AUTHENTICATE).permitAll()
@@ -121,13 +147,13 @@ public class WSSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
                 .antMatchers(HttpMethod.GET, SMP_SECURITY_PATH_CAS_AUTHENTICATE).authenticated()
                 .and()
                 .authorizeRequests()
-                .antMatchers(HttpMethod.DELETE).hasAnyAuthority(
+                .regexMatchers(HttpMethod.DELETE, "^/(?!ui/)[^/]*(/services/.*)?$").hasAnyAuthority(
                 SMPAuthority.S_AUTHORITY_TOKEN_WS_SERVICE_GROUP_ADMIN,
                 SMPAuthority.S_AUTHORITY_TOKEN_WS_SMP_ADMIN)
-                .antMatchers(HttpMethod.PUT).hasAnyAuthority(
+                .regexMatchers(HttpMethod.PUT, "^/(?!ui/)[^/]*(/services/.*)?$").hasAnyAuthority(
                 SMPAuthority.S_AUTHORITY_TOKEN_WS_SERVICE_GROUP_ADMIN,
                 SMPAuthority.S_AUTHORITY_TOKEN_WS_SMP_ADMIN)
-                .antMatchers(HttpMethod.GET).permitAll().and()
+                .regexMatchers(HttpMethod.GET, "^/(?!ui/)[^/]*(/services/.*)?$").permitAll().and()
         ;
     }
 
@@ -180,6 +206,10 @@ public class WSSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
     @Override
     protected void configure(AuthenticationManagerBuilder auth) {
         LOG.info("configureAuthenticationManagerBuilder, set SMP provider ");
+        if (configurationService.isSSOEnabledForUserAuthentication()) {
+            LOG.info("[CAS] Authentication Provider enabled");
+            auth.authenticationProvider(casAuthenticationProvider);
+        }
         // fallback automation user token authentication
         auth.authenticationProvider(smpAuthenticationProvider);
     }
@@ -206,7 +236,7 @@ public class WSSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
             clientCertAuthenticationFilter.setClientCertAuthenticationEnabled(configurationService.isExternalTLSAuthenticationWithClientCertHeaderEnabled());
         }
         return clientCertAuthenticationFilter;
-   }
+    }
 
     public EDeliveryX509AuthenticationFilter getEDeliveryX509AuthenticationFilter() throws Exception {
         if (x509AuthenticationFilter == null) {
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/AuthenticationResource.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/AuthenticationResource.java
index 374eca0350699e024d4157ecd700b30b583ebac1..11a02caaddc75403ff79340b98ac9deba71c29a5 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/AuthenticationResource.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/AuthenticationResource.java
@@ -103,7 +103,7 @@ public class AuthenticationResource {
     public RedirectView authenticateCAS() {
         LOG.debug("Authenticating cas");
         // if user was able to access resource - redirect back to main page
-        return new RedirectView("../../#/");
+        return new RedirectView("../../../#/");
     }
 
     @GetMapping(value = "user")
@@ -134,6 +134,7 @@ public class AuthenticationResource {
     /**
      * Method updates data with "show expire dialog" flag, forces the password change flag and
      * sanitize ui data/
+     *
      * @param userRO
      * @return updated user data according to SMP configuration
      */
@@ -143,7 +144,7 @@ public class AuthenticationResource {
                         .minusDays(configurationService.getPasswordPolicyUIWarningDaysBeforeExpire())
                         .isBefore(userRO.getPasswordExpireOn()));
 
-        userRO.setForceChangePassword(userRO.isPasswordExpired() && configurationService.getPasswordPolicyForceChangeIfExpired()) ;
+        userRO.setForceChangePassword(userRO.isPasswordExpired() && configurationService.getPasswordPolicyForceChangeIfExpired());
         return authorizationService.sanitize(userRO);
     }
 
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/ApplicationResource.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/ApplicationResource.java
index e59c25b6fd4d1d0e84a9aa790c608c57414cdcd0..e0bfeaaa34961d4a642580539531eb7ae9170472 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/ApplicationResource.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/ApplicationResource.java
@@ -50,7 +50,10 @@ public class ApplicationResource {
         SmpInfoRO info = new SmpInfoRO();
         info.setVersion(getDisplayVersion());
         info.setAuthTypes(configurationService.getUIAuthenticationTypes());
-        info.setSsoAuthenticationLabel(configurationService.getCasUILabel());
+        if (configurationService.getUIAuthenticationTypes().contains("SSO")){
+            info.setSsoAuthenticationLabel(configurationService.getCasUILabel());
+            info.setSsoAuthenticationURI(configurationService.getCasSMPLoginRelativePath());
+        }
         info.setContextPath(getRootContext());
         return info;
     }
diff --git a/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationClientCertTest.java b/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationClientCertTest.java
index 5ebeca8a28c55ea006d491c811eedffb9ae3acad..f5820446afc4e414390ea1fb44452f3b67a0854a 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationClientCertTest.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/cipa/smp/server/security/SecurityConfigurationClientCertTest.java
@@ -156,10 +156,9 @@ public class SecurityConfigurationClientCertTest {
     @Before
     public void setup() throws IOException {
         X509CertificateTestUtils.reloadKeystores();
-
         configurationDao.setPropertyToDatabase(SMPPropertyEnum.EXTERNAL_TLS_AUTHENTICATION_CLIENT_CERT_HEADER_ENABLED,"true", null);
-        configurationDao.reloadPropertiesFromDatabase();
         mvc = MockMvcUtils.initializeMockMvc(context);
+        configurationDao.contextRefreshedEvent();
     }
 
     @Parameterized.Parameter()
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 74f56c067273054a6d74668e232431ff5d1458ca..9db8b52071360c776117f87cbfbcbe4deda470e2 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
@@ -15,6 +15,7 @@ package eu.europa.ec.cipa.smp.server.security;
 
 import eu.europa.ec.edelivery.exception.ClientCertParseException;
 import eu.europa.ec.edelivery.smp.data.dao.ConfigurationDao;
+import eu.europa.ec.edelivery.smp.data.ui.enums.SMPPropertyEnum;
 import eu.europa.ec.edelivery.smp.test.SmpTestWebAppConfig;
 import eu.europa.ec.edelivery.smp.test.testutils.MockMvcUtils;
 import eu.europa.ec.edelivery.smp.test.testutils.X509CertificateTestUtils;
@@ -78,11 +79,11 @@ public class SecurityConfigurationTest {
     @Before
     public void setup() throws IOException {
         X509CertificateTestUtils.reloadKeystores();
+        configurationDao.setPropertyToDatabase(SMPPropertyEnum.EXTERNAL_TLS_AUTHENTICATION_CLIENT_CERT_HEADER_ENABLED,"true", null);
         mvc = MockMvcUtils.initializeMockMvc(context);
-        configurationDao.reloadPropertiesFromDatabase();
+        configurationDao.contextRefreshedEvent();
     }
 
-
     @Test
     public void getMethodAccessiblePubliclyTest() throws Exception {
         mvc.perform(MockMvcRequestBuilders.get(RETURN_LOGGED_USER_PATH)
diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/test/testutils/MockMvcUtils.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/test/testutils/MockMvcUtils.java
index ae8c88af52adc2b1938a7f0ae22b470d7c7c4aca..1f52cfbf24d3b7c8a66f043f7e4090700d27bac0 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/test/testutils/MockMvcUtils.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/test/testutils/MockMvcUtils.java
@@ -40,6 +40,9 @@ public class MockMvcUtils {
     private static final String SG_USER_USERNAME = "sg_admin";
     private static final String SG_USER_PASSWD = "test123";
 
+    private static final String SG_USER2_USERNAME = "test_user_hashed_pass";
+    private static final String SG_USER2_PASSWD = "test123";
+
 
     public static RequestPostProcessor getHttpBasicSystemAdminCredentials() {
         return httpBasic(SYS_ADMIN_USERNAME, SYS_ADMIN_PASSWD);
@@ -53,6 +56,10 @@ public class MockMvcUtils {
         return httpBasic(SG_USER_USERNAME, SG_USER_PASSWD);
     }
 
+    public static RequestPostProcessor getHttpBasicServiceGroupUser2Credentials() {
+        return httpBasic(SG_USER2_USERNAME, SG_USER2_PASSWD);
+    }
+
     /**
      * Login with system the username and data
      *
@@ -86,6 +93,10 @@ public class MockMvcUtils {
         return loginWithCredentials(mvc, SG_USER_USERNAME, SG_USER_PASSWD);
     }
 
+    public static MockHttpSession loginWithServiceGroupUser2(MockMvc mvc) throws Exception {
+        return loginWithCredentials(mvc, SG_USER2_USERNAME, SG_USER2_PASSWD);
+    }
+
     /**
      * Login with the username and data
      *
diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/external/ServiceGroupResourceIntegrationTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/external/ServiceGroupResourceIntegrationTest.java
index 4bc1007f04ba986b215d87810cc6eb1f7490769b..63890fbcfe25ac0f6b80395d8ace1c9014797ae8 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/external/ServiceGroupResourceIntegrationTest.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/external/ServiceGroupResourceIntegrationTest.java
@@ -7,12 +7,14 @@ import eu.europa.ec.edelivery.smp.data.ui.ServiceGroupRO;
 import eu.europa.ec.edelivery.smp.data.ui.ServiceGroupValidationRO;
 import eu.europa.ec.edelivery.smp.data.ui.ServiceResult;
 import eu.europa.ec.edelivery.smp.test.SmpTestWebAppConfig;
+import eu.europa.ec.edelivery.smp.test.testutils.MockMvcUtils;
 import eu.europa.ec.edelivery.smp.ui.ResourceConstants;
 import org.apache.commons.io.IOUtils;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mock.web.MockHttpSession;
 import org.springframework.mock.web.MockServletContext;
 import org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers;
 import org.springframework.test.context.ContextConfiguration;
@@ -29,7 +31,10 @@ import org.springframework.web.context.WebApplicationContext;
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
 import java.io.IOException;
+import java.util.Arrays;
 
+import static eu.europa.ec.edelivery.smp.test.testutils.MockMvcUtils.*;
+import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.CONTEXT_PATH_PUBLIC_SERVICE_METADATA;
 import static org.junit.Assert.*;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
@@ -65,30 +70,18 @@ public class ServiceGroupResourceIntegrationTest {
     private WebApplicationContext webAppContext;
 
     private MockMvc mvc;
-    private static final RequestPostProcessor SMP_ADMIN_CREDENTIALS = httpBasic("smp_admin", "test123");
-    private static final RequestPostProcessor SG_ADMIN_CREDENTIALS = httpBasic("sg_admin", "test123");
-
     @Before
     public void setup() throws IOException {
-        mvc = MockMvcBuilders.webAppContextSetup(webAppContext)
-                .apply(SecurityMockMvcConfigurers.springSecurity())
-                .build();
-
-        initServletContext();
+        mvc = MockMvcUtils.initializeMockMvc(webAppContext);
         validExtension = new String(IOUtils.toByteArray(ServiceGroupResourceIntegrationTest.class.getResourceAsStream("/input/extensionMarshal.xml")));
     }
 
-    private void initServletContext() {
-        MockServletContext sc = new MockServletContext("");
-        ServletContextListener listener = new ContextLoaderListener(webAppContext);
-        ServletContextEvent event = new ServletContextEvent(sc);
-    }
-
     @Test
     public void getServiceGroupListForSMPAdmin() throws Exception {
         // given when
+        MockHttpSession sessionAdmin = loginWithSMPAdmin(mvc);
         MvcResult result = mvc.perform(get(PATH_PUBLIC)
-                .with(SMP_ADMIN_CREDENTIALS).with(csrf())
+                .session(sessionAdmin).with(csrf())
         ).andExpect(status().isOk()).andReturn();
 
         //them
@@ -111,8 +104,9 @@ public class ServiceGroupResourceIntegrationTest {
     @Test
     public void getServiceGroupListForServiceGroupAdmin() throws Exception {
         // given when
+        MockHttpSession sessionAdmin = loginWithSMPAdmin(mvc);
         MvcResult result = mvc.perform(get(PATH_PUBLIC)
-                .with(SG_ADMIN_CREDENTIALS).with(csrf())
+                .session(sessionAdmin).with(csrf())
         ).andExpect(status().isOk()).andReturn();
 
         //them
@@ -120,12 +114,13 @@ public class ServiceGroupResourceIntegrationTest {
         ServiceResult res = mapper.readValue(result.getResponse().getContentAsString(), ServiceResult.class);
 
         assertNotNull(res);
-        assertEquals(1, res.getServiceEntities().size());
+        assertFalse(res.getServiceEntities().isEmpty());
         res.getServiceEntities().forEach(sgMap -> {
             ServiceGroupRO sgro = mapper.convertValue(sgMap, ServiceGroupRO.class);
             assertNotNull(sgro.getId());
             assertNotNull(sgro.getParticipantScheme());
             assertNotNull(sgro.getParticipantIdentifier());
+            assertTrue(Arrays.asList("urn:australia:ncpb","urn:brazil:ncpb").contains(sgro.getParticipantIdentifier()));
             assertEquals(1, sgro.getUsers().size());
             assertNotNull(sgro.getUsers().get(0).getUserId());
         });
@@ -133,10 +128,10 @@ public class ServiceGroupResourceIntegrationTest {
 
     @Test
     public void getServiceGroupById() throws Exception {
-
         // given when
+        MockHttpSession sessionAdmin = loginWithSMPAdmin(mvc);
         MvcResult result = mvc.perform(get(PATH_PUBLIC + "/100000")
-                .with(SMP_ADMIN_CREDENTIALS).with(csrf())).
+                .session(sessionAdmin).with(csrf())).
                 andExpect(status().isOk()).andReturn();
 
         //them
@@ -164,8 +159,9 @@ public class ServiceGroupResourceIntegrationTest {
         serviceGroupDao.update(sg);
 
         // given when
+        MockHttpSession sessionAdmin = loginWithSMPAdmin(mvc);
         MvcResult result = mvc.perform(get(PATH_PUBLIC + "/100000/extension")
-                .with(SMP_ADMIN_CREDENTIALS).with(csrf()))
+                .session(sessionAdmin).with(csrf()))
                 .andExpect(status().isOk()).andReturn();
 
         //them
@@ -179,6 +175,14 @@ public class ServiceGroupResourceIntegrationTest {
         assertEquals(new String(sg.getExtension()), res.getExtension());
     }
 
+    @Test
+    public void getExtensionServiceGroupByIdNotAuthorizedBasicAuthentication() throws Exception {
+        // given when
+        MvcResult result = mvc.perform(get(PATH_PUBLIC + "/100000/extension")
+                .with(getHttpBasicSMPAdminCredentials()).with(csrf()))
+                .andExpect(status().isUnauthorized()).andReturn();
+    }
+
     @Test
     public void testValidateInvalid() throws Exception {
         ObjectMapper mapper = new ObjectMapper();
@@ -186,8 +190,9 @@ public class ServiceGroupResourceIntegrationTest {
         validate.setExtension(validExtension + "<ADFA>sdfadsf");
 
         // given when
+        MockHttpSession sessionAdmin = loginWithSMPAdmin(mvc);
         MvcResult result = mvc.perform(post(PATH_PUBLIC + "/extension/validate")
-                .with(SMP_ADMIN_CREDENTIALS)
+                .session(sessionAdmin)
                 .header("Content-Type","application/json")
                     .content(mapper.writeValueAsString(validate))
                 .with(csrf()))
diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/external/ServiceMetadataResourceIntegrationTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/external/ServiceMetadataResourceIntegrationTest.java
index dffca393729a1069ee3dffc515b59c629a1fce9f..38c5767eac0794bba207e8d825c7cfddf2344b9f 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/external/ServiceMetadataResourceIntegrationTest.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/external/ServiceMetadataResourceIntegrationTest.java
@@ -4,10 +4,12 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import eu.europa.ec.edelivery.smp.data.ui.ServiceMetadataRO;
 import eu.europa.ec.edelivery.smp.data.ui.ServiceMetadataValidationRO;
 import eu.europa.ec.edelivery.smp.test.SmpTestWebAppConfig;
+import eu.europa.ec.edelivery.smp.test.testutils.MockMvcUtils;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mock.web.MockHttpSession;
 import org.springframework.mock.web.MockServletContext;
 import org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers;
 import org.springframework.test.context.ContextConfiguration;
@@ -26,6 +28,7 @@ import javax.servlet.ServletContextListener;
 import javax.ws.rs.core.MediaType;
 import java.io.IOException;
 
+import static eu.europa.ec.edelivery.smp.test.testutils.MockMvcUtils.*;
 import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.CONTEXT_PATH_PUBLIC_SERVICE_METADATA;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -56,30 +59,19 @@ public class ServiceMetadataResourceIntegrationTest {
     private WebApplicationContext webAppContext;
 
     private MockMvc mvc;
-    private static final RequestPostProcessor SMP_ADMIN_CREDENTIALS = httpBasic("smp_admin", "test123");
-    private static final RequestPostProcessor SG_USER2_CREDENTIALS = httpBasic("test_user_hashed_pass", "test123");
     ObjectMapper mapper = new ObjectMapper();
 
     @Before
-    public void setup() throws IOException {
-        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);
+    public void setup() {
+        mvc = MockMvcUtils.initializeMockMvc(webAppContext);
     }
 
     @Test
     public void getServiceGroupMetadataById() throws Exception {
         // given when
+        MockHttpSession sessionAdmin = loginWithSMPAdmin(mvc);
         MvcResult result = mvc.perform(get(CONTEXT_PATH_PUBLIC_SERVICE_METADATA + "/" + SERVICE_METADATA_ID)
-                .with(SMP_ADMIN_CREDENTIALS).with(csrf())
+                .session(sessionAdmin).with(csrf())
         ).andExpect(status().isOk()).andReturn();
 
         //them
@@ -96,10 +88,18 @@ public class ServiceMetadataResourceIntegrationTest {
     @Test
     public void getServiceGroupMetadataByIdNotAuthorized() throws Exception {
         // given when
+        MockHttpSession session = loginWithServiceGroupUser2(mvc);
         MvcResult result = mvc.perform(get(CONTEXT_PATH_PUBLIC_SERVICE_METADATA + "/" + SERVICE_METADATA_ID)
-                .with(SG_USER2_CREDENTIALS).with(csrf())
+                .session(session).with(csrf())
         ).andExpect(status().isUnauthorized()).andReturn();
+    }
 
+    @Test
+    public void getServiceGroupMetadataByIdNotAuthorizedForBasicAuthentication() throws Exception {
+        // given when
+        MvcResult result = mvc.perform(get(CONTEXT_PATH_PUBLIC_SERVICE_METADATA + "/" + SERVICE_METADATA_ID)
+                .with(getHttpBasicSMPAdminCredentials()).with(csrf())
+        ).andExpect(status().isUnauthorized()).andReturn();
     }
 
     @Test
@@ -127,8 +127,10 @@ public class ServiceMetadataResourceIntegrationTest {
         smv.setParticipantScheme("partSch");
         smv.setXmlContent("Invalid content");
 
+        MockHttpSession session = loginWithServiceGroupUser2(mvc);
+
         MvcResult result = mvc.perform(post(CONTEXT_PATH_PUBLIC_SERVICE_METADATA + "/validate")
-                .with(SG_USER2_CREDENTIALS)
+                .session(session)
                 .with(csrf())
                 .contentType(MediaType.APPLICATION_JSON)
                 .content(mapper.writeValueAsString(smv))
diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/external/UserResourceIntegrationTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/external/UserResourceIntegrationTest.java
index eafcca60b5f9b9fcad2fe8d5111191d56fc87b36..ea4bfc71562e23a8ea2e9d81bc4e418eb48c7750 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/external/UserResourceIntegrationTest.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/external/UserResourceIntegrationTest.java
@@ -12,6 +12,7 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.mock.web.MockHttpSession;
+import org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.jdbc.Sql;
 import org.springframework.test.context.junit4.SpringRunner;
@@ -127,9 +128,11 @@ public class UserResourceIntegrationTest {
     public void testUpdateUserList() throws Exception {
         // given when
         MockHttpSession session = loginWithSystemAdmin(mvc);
+
+        SecurityMockMvcRequestPostProcessors.CsrfRequestPostProcessor csrf = csrf();
         MvcResult result = mvc.perform(get(CONTEXT_PATH_INTERNAL_USER)
                 .session(session)
-                .with(csrf()))
+                .with(csrf))
                 .andExpect(status().isOk()).andReturn();
         ServiceResult res = mapper.readValue(result.getResponse().getContentAsString(), ServiceResult.class);
         assertNotNull(res);
@@ -146,7 +149,7 @@ public class UserResourceIntegrationTest {
 
         mvc.perform(put(CONTEXT_PATH_INTERNAL_USER)
                 .session(session)
-                .with(csrf())
+                .with(csrf)
                 .contentType(MediaType.APPLICATION_JSON)
                 .content(mapper.writeValueAsString(Arrays.asList(userRO)))
         ).andExpect(status().isOk());
diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/internal/ApplicationAdminResourceIntegrationTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/internal/ApplicationAdminResourceIntegrationTest.java
index af87c66f90419fe8864c167e09b53fd5a6f74da7..b2b11b28f8ca99ec13829067d6d4fa73c6b6cd1f 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/internal/ApplicationAdminResourceIntegrationTest.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/internal/ApplicationAdminResourceIntegrationTest.java
@@ -9,25 +9,18 @@ import org.junit.Before;
 import org.junit.Test;
 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.mock.web.MockHttpSession;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.TestPropertySource;
 import org.springframework.test.context.jdbc.Sql;
 import org.springframework.test.context.junit4.SpringRunner;
 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 eu.europa.ec.edelivery.smp.test.testutils.MockMvcUtils.*;
 import static org.junit.Assert.*;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
 import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.BEFORE_TEST_METHOD;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@@ -47,9 +40,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
 })
 public class ApplicationAdminResourceIntegrationTest {
     private static final String PATH = ResourceConstants.CONTEXT_PATH_INTERNAL_APPLICATION;
-    private static final RequestPostProcessor SMP_ADMIN_CREDENTIALS = httpBasic("smp_admin", "test123");
-    private static final RequestPostProcessor SG_ADMIN_CREDENTIALS = httpBasic("sg_admin", "test123");
-    private static final RequestPostProcessor SYSTEM_CREDENTIALS = httpBasic("sys_admin", "test123");
 
     @Autowired
     private WebApplicationContext webAppContext;
@@ -57,16 +47,7 @@ public class ApplicationAdminResourceIntegrationTest {
 
     @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);
+        mvc = initializeMockMvc(webAppContext);
     }
 
     @Test
@@ -82,8 +63,9 @@ public class ApplicationAdminResourceIntegrationTest {
     @Test
     public void testGetApplicationConfigAuthorized() throws Exception {
         //  SMP admin
+        MockHttpSession session = loginWithSMPAdmin(mvc);
         String val = mvc.perform(get(PATH + "/config")
-                .with(SMP_ADMIN_CREDENTIALS)
+                .session(session)
                 .with(csrf()))
                 .andExpect(status().isOk())
                 .andReturn()
@@ -91,7 +73,9 @@ public class ApplicationAdminResourceIntegrationTest {
                 .getContentAsString();
         assertNotNull(val);
         //  service group
-        val = mvc.perform(get(PATH + "/config").with(SG_ADMIN_CREDENTIALS)
+        MockHttpSession sessionUser = loginWithServiceGroupUser(mvc);
+        val = mvc.perform(get(PATH + "/config")
+                .session(sessionUser)
                 .with(csrf()))
                 .andExpect(status().isOk())
                 .andReturn()
@@ -99,8 +83,9 @@ public class ApplicationAdminResourceIntegrationTest {
                 .getContentAsString();
         assertNotNull(val);
         // system admin
+        MockHttpSession sessionSystem = loginWithSystemAdmin(mvc);
         val = mvc.perform(get(PATH + "/config")
-                .with(SYSTEM_CREDENTIALS)
+                .session(sessionSystem)
                 .with(csrf()))
                 .andExpect(status().isOk())
                 .andReturn()
@@ -112,8 +97,9 @@ public class ApplicationAdminResourceIntegrationTest {
     @Test
     public void testGetApplicationConfigSMPAdmin() throws Exception {
         // when
+        MockHttpSession session = loginWithSMPAdmin(mvc);
         String value = mvc.perform(get(PATH + "/config")
-                .with(SMP_ADMIN_CREDENTIALS)
+                .session(session)
                 .with(csrf()))
                 .andExpect(status().isOk())
                 .andReturn()
@@ -127,7 +113,7 @@ public class ApplicationAdminResourceIntegrationTest {
         assertNotNull(res);
         assertEquals("Participant scheme must start with:urn:oasis:names:tc:ebcore:partyid-type:(iso6523:|unregistered:) OR must be up to 25 characters long with form [domain]-[identifierArea]-[identifierType] (ex.: 'busdox-actorid-upis') and may only contain the following characters: [a-z0-9].", res.getParticipantSchemaRegExpMessage());
         assertEquals("^$|^(?!^.{26})([a-z0-9]+-[a-z0-9]+-[a-z0-9]+)$|^urn:oasis:names:tc:ebcore:partyid-type:(iso6523|unregistered)(:.+)?$", res.getParticipantSchemaRegExp());
-        assertEquals(SMPPropertyEnum.PARTC_EBCOREPARTYID_CONCATENATE.getDefValue(), res.isConcatEBCorePartyId()+"");
+        assertEquals(SMPPropertyEnum.PARTC_EBCOREPARTYID_CONCATENATE.getDefValue(), res.isConcatEBCorePartyId() + "");
         assertFalse(res.isSmlIntegrationOn());
         assertFalse(res.isSmlParticipantMultiDomainOn());
     }
diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/internal/DomainAdminResourceIntegrationTest.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/internal/DomainAdminResourceIntegrationTest.java
index f0870307ce0bcb6244cdd79f29baae78380e24b8..6f37725ea74cd80335175a84bac8e622e27a1969 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/internal/DomainAdminResourceIntegrationTest.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/internal/DomainAdminResourceIntegrationTest.java
@@ -4,31 +4,25 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import eu.europa.ec.edelivery.smp.data.dao.DomainDao;
 import eu.europa.ec.edelivery.smp.data.ui.DeleteEntityValidation;
 import eu.europa.ec.edelivery.smp.test.SmpTestWebAppConfig;
+import eu.europa.ec.edelivery.smp.test.testutils.MockMvcUtils;
 import eu.europa.ec.edelivery.smp.ui.ResourceConstants;
 import org.junit.Before;
 import org.junit.Test;
 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.mock.web.MockHttpSession;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.jdbc.Sql;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.context.web.WebAppConfiguration;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.MvcResult;
-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 eu.europa.ec.edelivery.smp.test.testutils.MockMvcUtils.loginWithSystemAdmin;
 import static org.hamcrest.Matchers.stringContainsInOrder;
 import static org.junit.Assert.*;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
 import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.BEFORE_TEST_METHOD;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
@@ -52,31 +46,19 @@ public class DomainAdminResourceIntegrationTest {
     DomainDao domainDao;
 
     private MockMvc mvc;
-    private static final RequestPostProcessor SYSTEM_CREDENTIALS = httpBasic("sys_admin", "test123");
 
     @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);
+        mvc = MockMvcUtils.initializeMockMvc(webAppContext);
     }
 
-
     @Test
     public void updateDomainListOkDelete() throws Exception {
 // given when
         assertEquals("CEF-SMP-002", domainDao.getDomainByCode("domainTwo").get().getSmlSmpId());
-
+        MockHttpSession session = loginWithSystemAdmin(mvc);
         MvcResult result = mvc.perform(put(PATH)
-                .with(SYSTEM_CREDENTIALS)
+                .session(session)
                 .with(csrf())
                 .header("Content-Type", " application/json")
                 .content("[{\"status\":3,\"index\":9,\"id\":2,\"domainCode\":\"domainTwo\",\"smlSubdomain\":\"newdomain\",\"smlSmpId\":\"CEF-SMP-010\",\"smlParticipantIdentifierRegExp\":null,\"smlClientCertHeader\":null,\"smlClientKeyAlias\":null,\"signatureKeyAlias\":\"sig-key\",\"smlClientCertAuth\":true,\"smlRegistered\":false}]")) // delete domain with id 2
@@ -90,8 +72,9 @@ public class DomainAdminResourceIntegrationTest {
     @Test
     public void updateDomainListNotExists() throws Exception {
 // given when
+        MockHttpSession session = loginWithSystemAdmin(mvc);
         MvcResult result = mvc.perform(put(PATH)
-                .with(SYSTEM_CREDENTIALS)
+                .session(session)
                 .with(csrf())
                 .header("Content-Type", " application/json")
                 .content("[{\"status\":3,\"index\":9,\"id\":10,\"domainCode\":\"domainTwoNotExist\",\"smlSubdomain\":\"newdomain\",\"smlSmpId\":\"CEF-SMP-010\",\"smlParticipantIdentifierRegExp\":null,\"smlClientCertHeader\":null,\"smlClientKeyAlias\":null,\"signatureKeyAlias\":\"sig-key\",\"smlClientCertAuth\":true,\"smlRegistered\":false}]")) // delete domain with id 2
@@ -101,8 +84,9 @@ public class DomainAdminResourceIntegrationTest {
     @Test
     public void validateDeleteDomainOK() throws Exception {
         // given when
+        MockHttpSession session = loginWithSystemAdmin(mvc);
         MvcResult result = mvc.perform(put(PATH + "/validate-delete")
-                .with(SYSTEM_CREDENTIALS)
+                .session(session)
                 .with(csrf())
                 .header("Content-Type", " application/json")
                 .content("[2]")) // delete domain with id 2
@@ -123,9 +107,9 @@ public class DomainAdminResourceIntegrationTest {
     public void updateDomainListOkUpdate() throws Exception {
 // given when
         assertEquals("CEF-SMP-002", domainDao.getDomainByCode("domainTwo").get().getSmlSmpId());
-
+        MockHttpSession session = loginWithSystemAdmin(mvc);
         MvcResult result = mvc.perform(put(PATH)
-                .with(SYSTEM_CREDENTIALS)
+                .session(session)
                 .with(csrf())
                 .header("Content-Type", " application/json")
                 .content("[{\"status\":1,\"index\":9,\"id\":2,\"domainCode\":\"domainTwo\",\"smlSubdomain\":\"newdomain\",\"smlSmpId\":\"CEF-SMP-010\",\"smlParticipantIdentifierRegExp\":null,\"smlClientCertHeader\":null,\"smlClientKeyAlias\":null,\"signatureKeyAlias\":\"sig-key\",\"smlClientCertAuth\":true,\"smlRegistered\":false}]")) // delete domain with id 2
@@ -138,8 +122,9 @@ public class DomainAdminResourceIntegrationTest {
     @Test
     public void validateDeleteDomainFalse() throws Exception {
         // given when
+        MockHttpSession session = loginWithSystemAdmin(mvc);
         MvcResult result = mvc.perform(put(PATH + "/validate-delete")
-                .with(SYSTEM_CREDENTIALS)
+                .session(session)
                 .with(csrf())
                 .header("Content-Type", " application/json")
                 .content("[1]")) // delete domain with id 2
@@ -161,8 +146,9 @@ public class DomainAdminResourceIntegrationTest {
         // given when
         // 3- user id
         // domainTwo -  domain code
+        MockHttpSession session = loginWithSystemAdmin(mvc);
         mvc.perform(put(PATH + "/3/sml-register/domainTwo")
-                .with(SYSTEM_CREDENTIALS)
+                .session(session)
                 .with(csrf())
                 .header("Content-Type", " application/json"))
                 .andExpect(status().isOk())
@@ -174,8 +160,9 @@ public class DomainAdminResourceIntegrationTest {
         // given when
         // 3- user id
         // domainTwo -  domain code
+        MockHttpSession session = loginWithSystemAdmin(mvc);
         mvc.perform(put(PATH + "/3/sml-unregister/domainTwo")
-                .with(SYSTEM_CREDENTIALS)
+                .session(session)
                 .with(csrf())
                 .header("Content-Type", " application/json"))
                 .andExpect(status().isOk())