diff --git a/smp-angular/src/app/app.component.ts b/smp-angular/src/app/app.component.ts
index 9a0c6b9de14ed0fcbe2cd921ba1f98391262f3bf..ab418788042f568627c52e47f627906e162e2756 100644
--- a/smp-angular/src/app/app.component.ts
+++ b/smp-angular/src/app/app.component.ts
@@ -5,7 +5,6 @@ import {Authority} from "./security/authority.model";
 import {AlertMessageService} from "./common/alert-message/alert-message.service";
 import {MatDialog} from "@angular/material/dialog";
 import {GlobalLookups} from "./common/global-lookups";
-import {UserController} from "./system-settings/user/user-controller";
 import {HttpClient} from "@angular/common/http";
 import {SidenavComponent} from "./window/sidenav/sidenav.component";
 import {ToolbarComponent} from "./window/toolbar/toolbar.component";
@@ -15,6 +14,7 @@ import 'codemirror/mode/javascript/javascript';
 import 'codemirror/mode/markdown/markdown';
 import 'codemirror/mode/xml/xml';
 import 'codemirror/mode/properties/properties';
+import {UserController} from "./common/services/user-controller";
 
 
 @Component({
diff --git a/smp-angular/src/app/app.module.ts b/smp-angular/src/app/app.module.ts
index 698e5b497649775b8c62691fd307451eba791b1a..924bcd2959bc76f81bf2e15f73bbb66ca6262b84 100644
--- a/smp-angular/src/app/app.module.ts
+++ b/smp-angular/src/app/app.module.ts
@@ -20,7 +20,6 @@ import {CancelDialogComponent} from './common/dialogs/cancel-dialog/cancel-dialo
 import {CapitalizeFirstPipe} from './common/capitalize-first.pipe';
 import {CertificateDialogComponent} from "./common/dialogs/certificate-dialog/certificate-dialog.component";
 import {CertificatePanelComponent} from "./common/panels/certificate-panel/certificate-panel.component";
-import {CertificateService} from './system-settings/user/certificate.service';
 import {ClearInvalidDirective} from './custom-date/clear-invalid.directive';
 import {ColumnPickerComponent} from './common/column-picker/column-picker.component';
 import {ConfirmationDialogComponent} from './common/dialogs/confirmation-dialog/confirmation-dialog.component';
@@ -30,8 +29,6 @@ import {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatNativeDateModule} fro
 import {DatePipe} from './custom-date/date.pipe';
 import {DefaultPasswordDialogComponent} from './security/default-password-dialog/default-password-dialog.component';
 import {DialogComponent} from './common/dialogs/dialog/dialog.component';
-import {DomainComponent} from './system-settings/domain/domain.component';
-import {DomainDetailsDialogComponent} from './system-settings/domain/domain-details-dialog/domain-details-dialog.component';
 import {DomainPanelComponent} from "./system-settings/admin-domain/domain-panel/domain-panel.component";
 import {DomainResourceTypePanelComponent} from "./system-settings/admin-domain/domain-resource-type-panel/domain-resource-type-panel.component";
 import {DomainSelectorComponent} from './common/domain-selector/domain-selector.component';
@@ -51,9 +48,7 @@ import {HttpClient, HttpClientModule, HttpClientXsrfModule} from '@angular/commo
 import {HttpEventService} from './http/http-event.service';
 import {InformationDialogComponent} from "./common/dialogs/information-dialog/information-dialog.component";
 import {IsAuthorized} from './security/is-authorized.directive';
-import {KeystoreEditDialogComponent} from "./system-settings/domain/keystore-edit-dialog/keystore-edit-dialog.component";
 import {KeystoreImportDialogComponent} from "./system-settings/admin-keystore/keystore-import-dialog/keystore-import-dialog.component";
-import {KeystoreService} from "./system-settings/domain/keystore.service";
 import {LoginComponent} from './login/login.component';
 import {MatButtonModule} from "@angular/material/button";
 import {MatCardModule} from "@angular/material/card";
@@ -82,17 +77,13 @@ import {NgModule} from '@angular/core';
 import {NgxDatatableModule} from '@swimlane/ngx-datatable';
 import {ObjectPropertiesDialogComponent} from "./common/dialogs/object-properties-dialog/object-properties-dialog.component";
 import {PasswordChangeDialogComponent} from "./common/dialogs/password-change-dialog/password-change-dialog.component";
-import {PropertyComponent} from "./system-settings/property/property.component";
-import {PropertyDetailsDialogComponent} from "./system-settings/property/property-details-dialog/property-details-dialog.component";
 import {ResourceDetailsDialogComponent} from "./system-settings/admin-extension/resource-details-dialog/resource-details-dialog.component";
 import {RowLimiterComponent} from './common/row-limiter/row-limiter.component';
 import {SaveDialogComponent} from './common/dialogs/save-dialog/save-dialog.component';
 import {SearchTableComponent} from './common/search-table/search-table.component';
 import {SecurityEventService} from './security/security-event.service';
 import {SecurityService} from './security/security.service';
-import {ServiceMetadataWizardDialogComponent} from './service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-dialog.component';
 import {SidenavComponent} from './window/sidenav/sidenav.component';
-import {SmlIntegrationService} from "./system-settings/domain/sml-integration.service";
 import {SmpInfoService} from './app-info/smp-info.service';
 import {SpacerComponent} from "./common/components/spacer/spacer.component";
 import {SpinnerComponent} from './common/components/spinner/spinner.component';
@@ -101,9 +92,7 @@ import {ToolbarComponent} from "./window/toolbar/toolbar.component";
 import {UserAccessTokensComponent} from "./user-settings/user-access-tokens/user-access-tokens.component";
 import {UserCertificatePanelComponent} from "./user-settings/user-certificates/user-certificate-panel/user-certificate-panel.component";
 import {UserCertificatesComponent} from "./user-settings/user-certificates/user-certificates.component";
-import {UserDetailsService} from './system-settings/user/user-details.service';
 import {UserProfileComponent} from "./user-settings/user-profile/user-profile.component";
-import {UserService} from './system-settings/user/user.service';
 import {routing} from './app.routes';
 import {MAT_MOMENT_DATE_FORMATS, MatMomentDateModule, MomentDateAdapter} from "@angular/material-moment-adapter";
 import {NGX_MAT_DATE_FORMATS,NgxMatDateAdapter,NgxMatDatetimePickerModule} from "@angular-material-components/datetime-picker";
@@ -142,6 +131,14 @@ import {SmpTitledLabelComponent} from "./common/components/smp-titled-label/smp-
 import {ServiceGroupSearchComponent} from "./service-group-search/service-group-search.component";
 import {EditResourceController} from "./edit/edit-resources/edit-resource.controller";
 import { ClipboardModule } from '@angular/cdk/clipboard';
+import {CertificateService} from "./common/services/certificate.service";
+import {UserDetailsService} from "./common/services/user-details.service";
+import {UserService} from "./common/services/user.service";
+import {SmlIntegrationService} from "./common/services/sml-integration.service";
+import {PropertyComponent} from "./system-settings/admin-properties/property.component";
+import {
+  PropertyDetailsDialogComponent
+} from "./system-settings/admin-properties/property-details-dialog/property-details-dialog.component";
 
 @NgModule({
   declarations: [
@@ -169,8 +166,6 @@ import { ClipboardModule } from '@angular/cdk/clipboard';
     DefaultPasswordDialogComponent,
     DialogComponent,
     DocumentWizardDialogComponent,
-    DomainComponent,
-    DomainDetailsDialogComponent,
     DomainGroupComponent,
     DomainPanelComponent,
     DomainResourceTypePanelComponent,
@@ -187,7 +182,6 @@ import { ClipboardModule } from '@angular/cdk/clipboard';
     GroupResourcePanelComponent,
     InformationDialogComponent,
     IsAuthorized,
-    KeystoreEditDialogComponent,
     KeystoreImportDialogComponent,
     LoginComponent,
     ManageMembersDialogComponent,
@@ -207,7 +201,6 @@ import { ClipboardModule } from '@angular/cdk/clipboard';
     SaveDialogComponent,
     SearchTableComponent,
     ServiceGroupSearchComponent,
-    ServiceMetadataWizardDialogComponent,
     SidenavComponent,
     SmpFieldErrorComponent,
     SmpLabelComponent,
@@ -287,7 +280,6 @@ import { ClipboardModule } from '@angular/cdk/clipboard';
     ExtensionService,
     GlobalLookups,
     HttpEventService,
-    KeystoreService,
     NavigationService,
     SecurityEventService,
     SecurityService,
diff --git a/smp-angular/src/app/app.routes.ts b/smp-angular/src/app/app.routes.ts
index 698dd2eabee4e85b1c368c5139517970b597b990..3988ad6cb41f71fa70d724be66dd3babea1cf6b1 100644
--- a/smp-angular/src/app/app.routes.ts
+++ b/smp-angular/src/app/app.routes.ts
@@ -2,7 +2,7 @@ import {RouterModule, Routes} from '@angular/router';
 import {LoginComponent} from './login/login.component';
 import {ServiceGroupSearchComponent} from './service-group-search/service-group-search.component';
 import {AlertComponent} from "./alert/alert.component";
-import {PropertyComponent} from "./system-settings/property/property.component";
+import {PropertyComponent} from "./system-settings/admin-properties/property.component";
 import {UserProfileComponent} from "./user-settings/user-profile/user-profile.component";
 import {authenticationGuard} from "./guards/authentication.guard";
 import {UserAccessTokensComponent} from "./user-settings/user-access-tokens/user-access-tokens.component";
diff --git a/smp-angular/src/app/common/dialogs/certificate-dialog/certificate-dialog.component.ts b/smp-angular/src/app/common/dialogs/certificate-dialog/certificate-dialog.component.ts
index 2ac6bd6dcecf3ac955d6f7e8a685b6ddb7478627..200f39c8be6bd4462f8adbf76eddd0d26be5aa4e 100644
--- a/smp-angular/src/app/common/dialogs/certificate-dialog/certificate-dialog.component.ts
+++ b/smp-angular/src/app/common/dialogs/certificate-dialog/certificate-dialog.component.ts
@@ -1,8 +1,8 @@
 import {Component, Inject} from '@angular/core';
 import {MAT_DIALOG_DATA} from '@angular/material/dialog';
 import {UntypedFormBuilder} from "@angular/forms";
-import {CertificateRo} from "../../../system-settings/user/certificate-ro.model";
 import {SmpConstants} from "../../../smp.constants";
+import {CertificateRo} from "../../model/certificate-ro.model";
 
 @Component({
   selector: 'keystore-certificate-dialog',
diff --git a/smp-angular/src/app/common/dialogs/credential-dialog/credential-dialog.component.ts b/smp-angular/src/app/common/dialogs/credential-dialog/credential-dialog.component.ts
index 9b7cb1b35a012b4f668f48daab7a00c7b93b9157..ba246116234d088452f277ce64fc006308ea5ec1 100644
--- a/smp-angular/src/app/common/dialogs/credential-dialog/credential-dialog.component.ts
+++ b/smp-angular/src/app/common/dialogs/credential-dialog/credential-dialog.component.ts
@@ -3,11 +3,11 @@ import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';
 import {FormBuilder, FormControl, FormGroup} from "@angular/forms";
 import {SmpConstants} from "../../../smp.constants";
 import {AccessTokenRo} from "../../model/access-token-ro.model";
-import {UserService} from "../../../system-settings/user/user.service";
 import {CredentialRo} from "../../../security/credential.model";
-import {CertificateRo} from "../../../system-settings/user/certificate-ro.model";
-import {CertificateService} from "../../../system-settings/user/certificate.service";
 import {HttpErrorHandlerService} from "../../error/http-error-handler.service";
+import {CertificateService} from "../../services/certificate.service";
+import {CertificateRo} from "../../model/certificate-ro.model";
+import {UserService} from "../../services/user.service";
 
 @Component({
   templateUrl: './credential-dialog.component.html',
diff --git a/smp-angular/src/app/common/dialogs/password-change-dialog/password-change-dialog.component.ts b/smp-angular/src/app/common/dialogs/password-change-dialog/password-change-dialog.component.ts
index 1881fc5f1bb8c8937d46b23e2dff52d57924a763..4ab31db27cfa06b898a158843700b070f406e5ab 100644
--- a/smp-angular/src/app/common/dialogs/password-change-dialog/password-change-dialog.component.ts
+++ b/smp-angular/src/app/common/dialogs/password-change-dialog/password-change-dialog.component.ts
@@ -3,11 +3,10 @@ import {MAT_DIALOG_DATA, MatDialog, MatDialogRef} from '@angular/material/dialog
 import {AbstractControl, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, ValidatorFn, Validators} from "@angular/forms";
 import {User} from "../../../security/user.model";
 import {GlobalLookups} from "../../global-lookups";
-import {UserDetailsService} from "../../../system-settings/user/user-details.service";
-import {AlertMessageService} from "../../alert-message/alert-message.service";
 import {SecurityService} from "../../../security/security.service";
 import {InformationDialogComponent} from "../information-dialog/information-dialog.component";
-import {UserRo} from "../../../system-settings/user/user-ro.model";
+import {UserDetailsService} from "../../services/user-details.service";
+import {UserRo} from "../../model/user-ro.model";
 
 @Component({
   selector: 'smp-password-change-dialog',
@@ -32,7 +31,6 @@ export class PasswordChangeDialogComponent {
     @Inject(MAT_DIALOG_DATA) public data: any,
     private lookups: GlobalLookups,
     private userDetailsService: UserDetailsService,
-    private alertService: AlertMessageService,
     private securityService: SecurityService,
     public dialog: MatDialog,
     private fb: UntypedFormBuilder
diff --git a/smp-angular/src/app/system-settings/user/certificate-ro.model.ts b/smp-angular/src/app/common/model/certificate-ro.model.ts
similarity index 87%
rename from smp-angular/src/app/system-settings/user/certificate-ro.model.ts
rename to smp-angular/src/app/common/model/certificate-ro.model.ts
index f5002ed38ed0f2ecae96560758773d02af2c0c07..4830ffd4f8a6f78ac83ac192848e70bd4d2722c8 100644
--- a/smp-angular/src/app/system-settings/user/certificate-ro.model.ts
+++ b/smp-angular/src/app/common/model/certificate-ro.model.ts
@@ -1,4 +1,4 @@
-import {EntityStatus} from "../../common/enums/entity-status.enum";
+import {EntityStatus} from "../enums/entity-status.enum";
 
 export interface CertificateRo {
   certificateId: string;
diff --git a/smp-angular/src/app/system-settings/domain/keystore-result.model.ts b/smp-angular/src/app/common/model/keystore-result.model.ts
similarity index 63%
rename from smp-angular/src/app/system-settings/domain/keystore-result.model.ts
rename to smp-angular/src/app/common/model/keystore-result.model.ts
index d4203352616579eae92ec7da39e462a54cba96ec..352592c4fd44c3bb9ddc8741367d8722a29549e5 100644
--- a/smp-angular/src/app/system-settings/domain/keystore-result.model.ts
+++ b/smp-angular/src/app/common/model/keystore-result.model.ts
@@ -1,4 +1,4 @@
-import {CertificateRo} from "../user/certificate-ro.model";
+import {CertificateRo} from "./certificate-ro.model";
 
 export interface KeystoreResult {
 
diff --git a/smp-angular/src/app/system-settings/domain/sml-result.model.ts b/smp-angular/src/app/common/model/sml-result.model.ts
similarity index 100%
rename from smp-angular/src/app/system-settings/domain/sml-result.model.ts
rename to smp-angular/src/app/common/model/sml-result.model.ts
diff --git a/smp-angular/src/app/system-settings/user/user-ro.model.ts b/smp-angular/src/app/common/model/user-ro.model.ts
similarity index 74%
rename from smp-angular/src/app/system-settings/user/user-ro.model.ts
rename to smp-angular/src/app/common/model/user-ro.model.ts
index 71b1bc722010a26f1b3fa78c29e43d0fe1c34345..fb9ec28f1ff7f1477138c66625782c9dee3d5170 100644
--- a/smp-angular/src/app/system-settings/user/user-ro.model.ts
+++ b/smp-angular/src/app/common/model/user-ro.model.ts
@@ -1,6 +1,6 @@
-import {SearchTableEntity} from '../../common/search-table/search-table-entity.model';
-import {CertificateRo} from './certificate-ro.model';
-import {ApplicationRoleEnum} from "../../common/enums/application-role.enum";
+import {SearchTableEntity} from "../search-table/search-table-entity.model";
+import {ApplicationRoleEnum} from "../enums/application-role.enum";
+import {CertificateRo} from "./certificate-ro.model";
 
 export interface UserRo extends SearchTableEntity {
   userId?: string
diff --git a/smp-angular/src/app/common/panels/certificate-panel/certificate-panel.component.ts b/smp-angular/src/app/common/panels/certificate-panel/certificate-panel.component.ts
index be5d716f5d30861a281a9bcc376e208481315a8f..eee9be31f79c54e538f5960365fca09b987d38ed 100644
--- a/smp-angular/src/app/common/panels/certificate-panel/certificate-panel.component.ts
+++ b/smp-angular/src/app/common/panels/certificate-panel/certificate-panel.component.ts
@@ -1,5 +1,5 @@
 import {Component, Input} from '@angular/core';
-import {CertificateRo} from "../../../system-settings/user/certificate-ro.model";
+import {CertificateRo} from "../../model/certificate-ro.model";
 
 @Component({
   selector: 'certificate-panel',
diff --git a/smp-angular/src/app/common/panels/user-settings-panel/user-profile-panel.component.ts b/smp-angular/src/app/common/panels/user-settings-panel/user-profile-panel.component.ts
index 1d522754d4c12c01603a9550333bfc99e1276e4b..97d61c98926ccd041c2dbd1d72d54ccc37ba5fd4 100644
--- a/smp-angular/src/app/common/panels/user-settings-panel/user-profile-panel.component.ts
+++ b/smp-angular/src/app/common/panels/user-settings-panel/user-profile-panel.component.ts
@@ -1,19 +1,16 @@
 import {Component, ElementRef, EventEmitter, Input, Output, ViewChild,} from '@angular/core';
 import {SmpConstants} from "../../../smp.constants";
 import {FormBuilder, FormControl, FormGroup, Validators} from "@angular/forms";
-import {CredentialRo} from "../../../security/credential.model";
-import {UserController} from "../../../system-settings/user/user-controller";
 import {SecurityService} from "../../../security/security.service";
 import {ThemeService} from "../../theme-service/theme.service";
-import {AlertMessageService} from "../../alert-message/alert-message.service";
-import {UserService} from "../../../system-settings/user/user.service";
 import {MatDialog} from "@angular/material/dialog";
 import {HttpClient} from "@angular/common/http";
 import {GlobalLookups} from "../../global-lookups";
 import {DateAdapter} from "@angular/material/core";
 import {NgxMatDateAdapter} from "@angular-material-components/datetime-picker";
-import {UserRo} from "../../../system-settings/user/user-ro.model";
 import {ApplicationRoleEnum} from "../../enums/application-role.enum";
+import {UserRo} from "../../model/user-ro.model";
+import {UserController} from "../../services/user-controller";
 
 
 @Component({
@@ -53,9 +50,7 @@ export class UserProfilePanelComponent {
   constructor(
     private securityService: SecurityService,
     private themeService: ThemeService,
-    private alertService: AlertMessageService,
     private formBuilder: FormBuilder,
-    private userService: UserService,
     private dialog: MatDialog,
     private http: HttpClient,
     private lookups: GlobalLookups,
@@ -65,7 +60,7 @@ export class UserProfilePanelComponent {
     this.userController = new UserController(this.http, this.lookups, this.dialog);
 
     // set empty form ! do not bind it to current object !
-    this.userForm = formBuilder.group({
+    this.userForm = this.formBuilder.group({
       // common values
       'username': new FormControl({value: '', disabled: true}),
       'role': new FormControl({value: '', disabled: true}),
diff --git a/smp-angular/src/app/system-settings/user/certificate.service.ts b/smp-angular/src/app/common/services/certificate.service.ts
similarity index 95%
rename from smp-angular/src/app/system-settings/user/certificate.service.ts
rename to smp-angular/src/app/common/services/certificate.service.ts
index ac74ab261d65e795a909b84583346ea9079dbec6..df5a9fed315c7f76268acd0511688f993b936ff6 100644
--- a/smp-angular/src/app/system-settings/user/certificate.service.ts
+++ b/smp-angular/src/app/common/services/certificate.service.ts
@@ -1,10 +1,10 @@
 import {Injectable} from '@angular/core';
 import {Observable} from 'rxjs';
-import {CertificateRo} from './certificate-ro.model';
 import {HttpClient, HttpHeaders} from '@angular/common/http';
 import {SmpConstants} from "../../smp.constants";
 import {SecurityService} from "../../security/security.service";
 import {User} from "../../security/user.model";
+import {CertificateRo} from "../model/certificate-ro.model";
 
 @Injectable()
 export class CertificateService {
diff --git a/smp-angular/src/app/system-settings/domain/sml-integration.service.ts b/smp-angular/src/app/common/services/sml-integration.service.ts
similarity index 95%
rename from smp-angular/src/app/system-settings/domain/sml-integration.service.ts
rename to smp-angular/src/app/common/services/sml-integration.service.ts
index 2238c7bc0f0583cec172577199b6a6bbdee6f6f0..2f3e36067206c234d3a92ba498bfb291e26d12ad 100644
--- a/smp-angular/src/app/system-settings/domain/sml-integration.service.ts
+++ b/smp-angular/src/app/common/services/sml-integration.service.ts
@@ -5,7 +5,7 @@ import {HttpClient} from '@angular/common/http';
 import {SmpConstants} from "../../smp.constants";
 import {SecurityService} from "../../security/security.service";
 import {User} from "../../security/user.model";
-import {SMLResult} from "./sml-result.model";
+import {SMLResult} from "../model/sml-result.model";
 
 @Injectable()
 export class SmlIntegrationService {
diff --git a/smp-angular/src/app/system-settings/user/user-controller.ts b/smp-angular/src/app/common/services/user-controller.ts
similarity index 78%
rename from smp-angular/src/app/system-settings/user/user-controller.ts
rename to smp-angular/src/app/common/services/user-controller.ts
index 5871567f18fa4a7ef0401230fa6308b4d921e254..6876c1ddd0408d54a21e43ea3bbbeb6b03c7f771 100644
--- a/smp-angular/src/app/system-settings/user/user-controller.ts
+++ b/smp-angular/src/app/common/services/user-controller.ts
@@ -1,15 +1,16 @@
-import {SearchTableController} from '../../common/search-table/search-table-controller';
+import {SearchTableController} from '../search-table/search-table-controller';
 import {MatDialog, MatDialogConfig, MatDialogRef} from '@angular/material/dialog';
-import {UserRo} from './user-ro.model';
-import {EntityStatus} from '../../common/enums/entity-status.enum';
-import {GlobalLookups} from "../../common/global-lookups";
-import {SearchTableEntity} from "../../common/search-table/search-table-entity.model";
-import {SearchTableValidationResult} from "../../common/search-table/search-table-validation-result.model";
+import {UserRo} from '../model/user-ro.model';
+import {EntityStatus} from '../enums/entity-status.enum';
+import {GlobalLookups} from "../global-lookups";
+import {SearchTableEntity} from "../search-table/search-table-entity.model";
+import {SearchTableValidationResult} from "../search-table/search-table-validation-result.model";
 import {SmpConstants} from "../../smp.constants";
 import {HttpClient} from "@angular/common/http";
-import {CertificateRo} from "./certificate-ro.model";
-import {PasswordChangeDialogComponent} from "../../common/dialogs/password-change-dialog/password-change-dialog.component";
-import {ApplicationRoleEnum} from "../../common/enums/application-role.enum";
+
+import {PasswordChangeDialogComponent} from "../dialogs/password-change-dialog/password-change-dialog.component";
+import {ApplicationRoleEnum} from "../enums/application-role.enum";
+import {CertificateRo} from "../model/certificate-ro.model";
 
 
 export class UserController implements SearchTableController {
@@ -24,11 +25,6 @@ export class UserController implements SearchTableController {
   }
 
   public showDetails(row: any) {
-    /*let dialogRef: MatDialogRef<UserDetailsDialogComponent> = this.dialog.open(UserDetailsDialogComponent);
-    dialogRef.afterClosed().subscribe(result => {
-      //Todo:
-    });
-     */
   }
 
   public edit(row: any) {
@@ -38,7 +34,6 @@ export class UserController implements SearchTableController {
   }
 
   public newDialog(config?: MatDialogConfig): MatDialogRef<any> {
-    //return this.dialog.open(UserDetailsDialogComponent, this.convertWithMode(config));
     return null;
   }
 
diff --git a/smp-angular/src/app/system-settings/user/user-details.service.ts b/smp-angular/src/app/common/services/user-details.service.ts
similarity index 87%
rename from smp-angular/src/app/system-settings/user/user-details.service.ts
rename to smp-angular/src/app/common/services/user-details.service.ts
index 509dc1b027268da2fa24c0a3efbc1462312167ea..b73f9a288beac4b1f73e9733e1cc9fa88efe6744 100644
--- a/smp-angular/src/app/system-settings/user/user-details.service.ts
+++ b/smp-angular/src/app/common/services/user-details.service.ts
@@ -2,8 +2,8 @@ import {Injectable} from "@angular/core";
 import {HttpClient} from "@angular/common/http";
 import {SmpConstants} from "../../smp.constants";
 import {Observable} from "rxjs";
-import {AccessTokenRo} from "../../common/model/access-token-ro.model";
-import {UserRo} from "./user-ro.model";
+import {AccessTokenRo} from "../model/access-token-ro.model";
+import {UserRo} from "../model/user-ro.model";
 
 @Injectable()
 export class UserDetailsService {
@@ -15,8 +15,9 @@ export class UserDetailsService {
 
   /**
    * Submits password to validate password
-   * @param userId
-   * @param password
+   * @param userId - user id  to validate password
+   * @param newPassword - new password to set for the user
+   * @param currentPassword - current password to validate
    */
   changePassword(userId: string, newPassword: string, currentPassword: string): Observable<boolean> {
     return this.http.put<boolean>(SmpConstants.REST_PUBLIC_USER_CHANGE_PASSWORD
diff --git a/smp-angular/src/app/system-settings/user/user.service.ts b/smp-angular/src/app/common/services/user.service.ts
similarity index 97%
rename from smp-angular/src/app/system-settings/user/user.service.ts
rename to smp-angular/src/app/common/services/user.service.ts
index 92deab57948fb3bff5e8e1db49370f43ad836f48..f5ac67dd54190a7752ef3e45e97f2039a0a6443d 100644
--- a/smp-angular/src/app/system-settings/user/user.service.ts
+++ b/smp-angular/src/app/common/services/user.service.ts
@@ -2,12 +2,12 @@ import {Injectable} from '@angular/core';
 import {HttpClient} from '@angular/common/http';
 import {SmpConstants} from "../../smp.constants";
 import {User} from "../../security/user.model";
-import {AlertMessageService} from "../../common/alert-message/alert-message.service";
+import {AlertMessageService} from "../alert-message/alert-message.service";
 import {SecurityService} from "../../security/security.service";
 import {Observable, Subject} from "rxjs";
 import {CredentialRo} from "../../security/credential.model";
-import {AccessTokenRo} from "../../common/model/access-token-ro.model";
-import {HttpErrorHandlerService} from "../../common/error/http-error-handler.service";
+import {AccessTokenRo} from "../model/access-token-ro.model";
+import {HttpErrorHandlerService} from "../error/http-error-handler.service";
 
 /**
  * Class handle current user settings such-as profile, credentials, DomiSMP settings... ,
diff --git a/smp-angular/src/app/edit/edit-resources/subresource-document-panel/subresource-document-panel.component.ts b/smp-angular/src/app/edit/edit-resources/subresource-document-panel/subresource-document-panel.component.ts
index 69c35fb56748d9c1eb32d3b5b808e56fdd9cf7aa..8220a271b5bb1f067f9bd3850fdbceb19761b517 100644
--- a/smp-angular/src/app/edit/edit-resources/subresource-document-panel/subresource-document-panel.component.ts
+++ b/smp-angular/src/app/edit/edit-resources/subresource-document-panel/subresource-document-panel.component.ts
@@ -17,7 +17,7 @@ import {
 } from "../subresource-document-wizard-dialog/subresource-document-wizard.component";
 import {
   ServiceMetadataWizardRo
-} from "../../../service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-edit-ro.model";
+} from "../subresource-document-wizard-dialog/service-metadata-wizard-edit-ro.model";
 import {ConfirmationDialogComponent} from "../../../common/dialogs/confirmation-dialog/confirmation-dialog.component";
 
 @Component({
@@ -329,9 +329,3 @@ export class SubresourceDocumentPanelComponent implements AfterViewInit, BeforeL
     return this._subresource?.subresourceTypeIdentifier === 'edelivery-oasis-smp-1.0-servicemetadata';
   }
 }
-
-
-
-
-
-
diff --git a/smp-angular/src/app/edit/edit-resources/subresource-document-wizard-dialog/subresource-document-wizard.component.ts b/smp-angular/src/app/edit/edit-resources/subresource-document-wizard-dialog/subresource-document-wizard.component.ts
index 8e25ded14f47873e4f4bd23b2d48097fe4743cea..7e3c86ed68dae57627d9f5e7541ecb6ca70860f9 100644
--- a/smp-angular/src/app/edit/edit-resources/subresource-document-wizard-dialog/subresource-document-wizard.component.ts
+++ b/smp-angular/src/app/edit/edit-resources/subresource-document-wizard-dialog/subresource-document-wizard.component.ts
@@ -4,9 +4,9 @@ import {UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators} fr
 import {HttpClient} from "@angular/common/http";
 import {ServiceMetadataWizardRo} from "./service-metadata-wizard-edit-ro.model";
 import {AlertMessageService} from "../../../common/alert-message/alert-message.service";
-import {CertificateService} from "../../../system-settings/user/certificate.service";
 import {GlobalLookups} from "../../../common/global-lookups";
-import {CertificateRo} from "../../../system-settings/user/certificate-ro.model";
+import {CertificateService} from "../../../common/services/certificate.service";
+import {CertificateRo} from "../../../common/model/certificate-ro.model";
 
 
 @Component({
diff --git a/smp-angular/src/app/security/credential.model.ts b/smp-angular/src/app/security/credential.model.ts
index 9e0d8cade73bd28e9b7a30e82111d4061e750121..1219d2262e06251635569156c14b2f919f0892ee 100644
--- a/smp-angular/src/app/security/credential.model.ts
+++ b/smp-angular/src/app/security/credential.model.ts
@@ -1,5 +1,5 @@
 import {EntityStatus} from "../common/enums/entity-status.enum";
-import {CertificateRo} from "../system-settings/user/certificate-ro.model";
+import {CertificateRo} from "../common/model/certificate-ro.model";
 
 export interface CredentialRo {
 
diff --git a/smp-angular/src/app/service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-dialog.component.css b/smp-angular/src/app/service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-dialog.component.css
deleted file mode 100644
index 1f31b33470b3382a562a909474c93dccd7b30620..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-dialog.component.css
+++ /dev/null
@@ -1,23 +0,0 @@
-.flex-dialog-content{
-  display: flex; justify-content: space-around;
-  flex-flow: row;
-  align-items: stretch;height:510px;min-width:950px
-}
-
-#extensionTextArea {
-  border: none;
-  width: 610px;
-  height:340px;
-  -webkit-box-sizing: border-box; /* <=iOS4, <= Android  2.3 */
-  -moz-box-sizing: border-box; /* FF1+ */
-  box-sizing: border-box; /* Chrome, IE8, Opera, Safari 5.1*/
-}
-
-#certificate-file-upload {
-  display: none;
-}
-
-.custom-file-upload {
-  display: inline-block;
-  cursor: pointer;
-}
diff --git a/smp-angular/src/app/service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-dialog.component.html b/smp-angular/src/app/service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-dialog.component.html
deleted file mode 100644
index 9a34471ff57ef08490714871c90902e64192d858..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-dialog.component.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<h2 mat-dialog-title>Service Metadata Wizard</h2>
-
-<mat-dialog-content class="flex-dialog-content">
-  <form [formGroup]="dialogForm">
-    <mat-card>
-      <mat-card-content>
-        <div class="panel">
-
-          <!-- Document -->
-          <mat-form-field style="width:35%">
-            <input matInput placeholder="Document identifier scheme" name="documentIdentifierScheme"
-                   id="documentIdentifierScheme_id"
-                   [formControl]="dialogForm.controls['documentIdentifierScheme']"
-                   maxlength="255">
-          </mat-form-field>
-
-          <mat-form-field style="width:60%">
-            <input matInput placeholder="Document identifier" name="documentIdentifier" id="documentIdentifier_id"
-                    maxlength="255"
-                   [formControl]="dialogForm.controls['documentIdentifier']"
-                   required>
-            <div
-              *ngIf="dialogForm.controls['documentIdentifier'].touched &&  dialogForm.controls['documentIdentifier'].hasError('required')"
-              style="color:red; font-size: 70%">Document identifier is required!
-            </div>
-          </mat-form-field>
-          <!-- Process -->
-          <mat-form-field style="width:35%">
-            <input matInput placeholder="Process scheme" name="processSchema" id="processSchema_id"
-                   maxlength="255"
-                   [formControl]="dialogForm.controls['processScheme']"
-                   >
-          </mat-form-field>
-
-          <mat-form-field style="width:60%">
-            <input matInput placeholder="Process identifier" name="processidentifier" id="processidentifier_id"
-                   maxlength="255"
-                   [formControl]="dialogForm.controls['processIdentifier']"
-                   required>
-            <div
-              *ngIf="dialogForm.controls['processIdentifier'].touched &&  dialogForm.controls['processIdentifier'].hasError('required')"
-              style="color:red; font-size: 70%">Process identifier is required!
-            </div>
-          </mat-form-field>
-<!-- transport -->
-          <mat-form-field style="width:35%">
-            <input matInput placeholder="Transport profile" name="transportProfile" id="transportProfiler_id"
-                    maxlength="255"
-                   [formControl]="dialogForm.controls['transportProfile']"
-                   required>
-            <div
-              *ngIf="dialogForm.controls['transportProfile'].touched &&  dialogForm.controls['transportProfile'].hasError('required')"
-              style="color:red; font-size: 70%">Transport profile  (as example: bdxr-transport-ebms3-as4-v1p0) is required!
-            </div>
-          </mat-form-field>
-
-          <mat-form-field style="width:60%">
-            <input matInput placeholder="Endpoint Url" name="endpointUrl" id="endpointUrl_id"
-                   maxlength="255"
-                   [formControl]="dialogForm.controls['endpointUrl']"
-                   type="url"
-                   required>
-            <div
-              *ngIf="dialogForm.controls['endpointUrl'].touched &&  dialogForm.controls['endpointUrl'].hasError('required')"
-              style="color:red; font-size: 70%">Access point URL is required!
-            </div>
-          </mat-form-field>
-
-          <div style="display: block;" style="border:1px; solid: #999999;margin:5px 0; padding:3px;">
-            <label class="custom-file-upload">
-              <input #fileInput type="file" style="display: inline-block;cursor: pointer; display: none;"
-                     id="certificate-file-upload" accept=".cer,.crt,.pem,.der"
-                     (change)="uploadCertificate($event)">
-              <button mat-flat-button color="primary"
-                      (click)="fileInput.click()" >Upload certificate</button>
-            </label>
-            <div *ngIf="certificateValidationMessage"
-                 [ngClass]="{ 'alert-message': certificateValidationMessage, 'alert-message-success': !certificateValidationMessage, 'alert-message-error':!!certificateValidationMessage }"
-                 id="alertmessage_id">
-              <span class="alert-message-close-button" (click)="clearAlert()">&times;</span>
-              {{certificateValidationMessage}}
-            </div>
-            <textarea matInput style="width:100%;border: #03A9F4 1px solid" cols="2" rows="10"
-                      resizeable="false"
-                      id="metadatacertificate_id"
-                      placeholder="X509Certificate*" name="certificate"
-                      [formControl]="dialogForm.controls['endpointCertificate']"
-                      ></textarea>
-            </div>
-          <div
-            *ngIf="dialogForm.controls['endpointCertificate'].touched &&  dialogForm.controls['endpointCertificate'].hasError('required')"
-            style="color:red; font-size: 70%">Valid x509 Certificate is required!
-          </div>
-
-          </div>
-
-
-<!-- ServiceDescription -->
-          <mat-form-field style="width:100%">
-            <input matInput placeholder="Service description" name="serviceDescription" id="serviceDescription_id"
-                   [formControl]="dialogForm.controls['serviceDescription']" maxlength="255" >
-          </mat-form-field>
-          <mat-form-field style="width:100%">
-            <input matInput placeholder="Technical Contact Url" name="technicalContactUrl" id="technicalContactUrl_id"
-                   [formControl]="dialogForm.controls['technicalContactUrl']" maxlength="255" type="url" >
-          </mat-form-field>
-
-      </mat-card-content>
-    </mat-card>
-  </form>
-  <div class="required-fields">* required fields</div>
-</mat-dialog-content>
-
-
-<mat-dialog-actions>
-    <button mat-raised-button color="primary" [mat-dialog-close]="true"
-            [disabled]="!dialogForm.valid">
-      <mat-icon>check_circle</mat-icon>
-      <span>OK</span>
-    </button>
-
-    <button mat-raised-button color="primary" mat-dialog-close>
-      <mat-icon>cancel</mat-icon>
-      <span>Cancel</span>
-    </button>
-</mat-dialog-actions>
diff --git a/smp-angular/src/app/service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-dialog.component.ts b/smp-angular/src/app/service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-dialog.component.ts
deleted file mode 100644
index 8e593ffebe8461f16febffb73a1d379409939902..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-dialog.component.ts
+++ /dev/null
@@ -1,186 +0,0 @@
-import {Component, Inject} from '@angular/core';
-import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';
-import {UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators} from "@angular/forms";
-import {HttpClient} from "@angular/common/http";
-import {CertificateService} from "../../system-settings/user/certificate.service";
-import {CertificateRo} from "../../system-settings/user/certificate-ro.model";
-import {AlertMessageService} from "../../common/alert-message/alert-message.service";
-import {ServiceMetadataWizardRo} from "./service-metadata-wizard-edit-ro.model";
-import {GlobalLookups} from "../../common/global-lookups";
-
-@Component({
-  selector: 'service-metadata-wizard-dialog',
-  templateUrl: './service-metadata-wizard-dialog.component.html',
-  styleUrls: ['./service-metadata-wizard-dialog.component.css']
-})
-export class ServiceMetadataWizardDialogComponent {
-
-  static readonly NEW_MODE = 'New ServiceMetadata XML';
-  static readonly EDIT_MODE = 'Edit ServiceMetadata XML';
-  static readonly EBCORE_IDENTIFIER_PREFIX = "urn:oasis:names:tc:ebcore:partyid-type:";
-
-  isNewServiceMetadata: boolean;
-  current: ServiceMetadataWizardRo
-    & { confirmation?: string };
-  dialogForm: UntypedFormGroup;
-  certificateValidationMessage: string;
-  isCertificateValid: string;
-  selectedFile: File;
-
-  constructor(
-    @Inject(MAT_DIALOG_DATA) public data: any,
-    private http: HttpClient,
-    private dialogRef: MatDialogRef<ServiceMetadataWizardDialogComponent>,
-    private alertService: AlertMessageService,
-    private dialogFormBuilder: UntypedFormBuilder,
-    private certificateService: CertificateService,
-    private lookups: GlobalLookups,
-  ) {
-    this.isNewServiceMetadata = this.data.isNewServiceMetadata;
-
-    this.current = {...this.data}
-
-    this.dialogForm = dialogFormBuilder.group({
-      'participantIdentifier': new UntypedFormControl({value: '', disabled: true}, null),
-      'participantScheme': new UntypedFormControl({value: '', disabled: true}, null),
-
-      'documentIdentifier': new UntypedFormControl({value: '', disabled: !this.isNewServiceMetadata}, [Validators.required]),
-      'documentIdentifierScheme': new UntypedFormControl({value: '', disabled: !this.isNewServiceMetadata}, null),
-      'processScheme': new UntypedFormControl({value: ''}, null),
-      'processIdentifier': new UntypedFormControl({value: ''}, [Validators.required]),
-
-      'transportProfile': new UntypedFormControl({value: ''}, [Validators.required]),
-      'endpointUrl': new UntypedFormControl({value: ''}, [Validators.required]),
-      'endpointCertificate': new UntypedFormControl({value: ''}, [Validators.required]),
-
-      'serviceDescription': new UntypedFormControl({value: ''}, null),
-      'technicalContactUrl': new UntypedFormControl({value: ''}, null),
-    });
-
-    this.dialogForm.controls['participantIdentifier'].setValue(this.current.participantIdentifier);
-    this.dialogForm.controls['participantScheme'].setValue(this.current.participantScheme);
-
-    this.dialogForm.controls['documentIdentifier'].setValue(this.current.documentIdentifier);
-    this.dialogForm.controls['documentIdentifierScheme'].setValue(this.current.documentIdentifierScheme);
-    this.dialogForm.controls['transportProfile'].setValue(this.current.transportProfile);
-
-    this.dialogForm.controls['processScheme'].setValue(this.current.processScheme);
-    this.dialogForm.controls['processIdentifier'].setValue(this.current.processIdentifier);
-    this.dialogForm.controls['endpointUrl'].setValue(this.current.endpointUrl);
-    this.dialogForm.controls['endpointCertificate'].setValue(this.current.endpointCertificate);
-    this.dialogForm.controls['serviceDescription'].setValue(this.current.serviceDescription);
-    this.dialogForm.controls['technicalContactUrl'].setValue(this.current.technicalContactUrl);
-
-  }
-
-
-  uploadCertificate(event) {
-    const file = event.target.files[0];
-    this.certificateValidationMessage = null;
-    this.certificateService.validateCertificate(file).subscribe((res: CertificateRo) => {
-        if (res && res.certificateId) {
-
-          this.dialogForm.patchValue({
-            'endpointCertificate': res.encodedValue
-          });
-        } else {
-          this.certificateValidationMessage = 'Error occurred while reading certificate. Check if uploaded file has valid certificate type';
-        }
-      },
-      err => {
-        this.certificateValidationMessage = 'Error uploading certificate file [' + file.name + '] ' + err.error?.errorDescription;
-      }
-    );
-  }
-
-  clearAlert() {
-    this.certificateValidationMessage = null;
-  }
-
-
-  onFileChanged(event) {
-    this.selectedFile = event.target.files[0]
-  }
-
-  onUpload() {
-    // this.http is the injected HttpClient
-    this.certificateService.validateCertificate(this.selectedFile)
-      .subscribe(event => {
-        console.log(event); // handle event here
-      });
-  }
-
-  public getCurrent(): ServiceMetadataWizardRo {
-
-    this.current.participantIdentifier = this.dialogForm.controls['participantIdentifier'].value;
-    this.current.participantScheme = this.dialogForm.controls['participantScheme'].value;
-    this.current.documentIdentifier = this.dialogForm.controls['documentIdentifier'].value;
-    this.current.documentIdentifierScheme = this.dialogForm.controls['documentIdentifierScheme'].value;
-    this.current.transportProfile = this.dialogForm.controls['transportProfile'].value;
-
-    this.current.endpointUrl = this.dialogForm.controls['endpointUrl'].value;
-    this.current.endpointCertificate = this.dialogForm.controls['endpointCertificate'].value;
-    this.current.serviceDescription = this.dialogForm.controls['serviceDescription'].value;
-    this.current.technicalContactUrl = this.dialogForm.controls['technicalContactUrl'].value;
-    this.current.contentXML = this.getServiceMetadataXML();
-
-
-    return this.current;
-  }
-
-  getParticipantElementXML(): string {
-    let schema = this.dialogForm.controls['participantScheme'].value;
-    let value = this.dialogForm.controls['participantIdentifier'].value;
-    if (!!schema && this.lookups.cachedApplicationConfig.concatEBCorePartyId &&
-      schema.startsWith(ServiceMetadataWizardDialogComponent.EBCORE_IDENTIFIER_PREFIX)) {
-      value = schema + ":" + value;
-      schema = null;
-    }
-
-    return '<ParticipantIdentifier ' +
-      (!schema ? '' : 'scheme="' + this.xmlSpecialChars(schema) + '"') + '>'
-      + this.xmlSpecialChars(value) + '</ParticipantIdentifier>';
-  }
-
-  getDocumentElementXML(): string {
-    return ' <DocumentIdentifier ' +
-      (!this.dialogForm.controls['documentIdentifierScheme'].value ? '' : 'scheme="'
-        + this.xmlSpecialChars(this.dialogForm.controls['documentIdentifierScheme'].value) + '"') +
-      '>' + this.xmlSpecialChars(this.dialogForm.controls['documentIdentifier'].value) + '</DocumentIdentifier>';
-  }
-
-  getServiceMetadataXML() {
-
-    let exampleXML = '<ServiceMetadata xmlns="http://docs.oasis-open.org/bdxr/ns/SMP/2016/05">' +
-      '\n    <ServiceInformation>' +
-      '\n        ' + this.getParticipantElementXML() +
-      '\n        ' + this.getDocumentElementXML() +
-      '\n        <ProcessList>' +
-      '\n            <Process>' +
-      '\n                <ProcessIdentifier ' +
-      (!this.dialogForm.controls['processScheme'].value ? '' : 'scheme="' + this.xmlSpecialChars(this.dialogForm.controls['processScheme'].value) + '"') +
-      '>' + this.xmlSpecialChars(this.dialogForm.controls['processIdentifier'].value) + '</ProcessIdentifier>' +
-      '\n                <ServiceEndpointList>' +
-      '\n                   <Endpoint transportProfile="' + this.xmlSpecialChars(this.dialogForm.controls['transportProfile'].value) + '">' +
-      '\n                        <EndpointURI>' + this.xmlSpecialChars(this.dialogForm.controls['endpointUrl'].value) + '</EndpointURI>' +
-      '\n                        <Certificate>' + this.xmlSpecialChars(this.dialogForm.controls['endpointCertificate'].value) + '</Certificate>' +
-      '\n                        <ServiceDescription>' + this.xmlSpecialChars(this.dialogForm.controls['serviceDescription'].value) + '</ServiceDescription>' +
-      '\n                        <TechnicalContactUrl>' + this.xmlSpecialChars(this.dialogForm.controls['technicalContactUrl'].value) + '</TechnicalContactUrl>' +
-      '\n                    </Endpoint>' +
-      '\n                </ServiceEndpointList>' +
-      '\n            </Process>' +
-      '\n        </ProcessList>' +
-      '\n    </ServiceInformation>' +
-      '\n</ServiceMetadata>';
-
-    return exampleXML;
-  }
-
-  xmlSpecialChars(unsafe) {
-    return unsafe
-      .replace(/&/g, "&amp;")
-      .replace(/</g, "&lt;")
-      .replace(/>/g, "&gt;")
-      .replace(/"/g, "&quot;");
-  }
-}
diff --git a/smp-angular/src/app/service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-edit-ro.model.ts b/smp-angular/src/app/service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-edit-ro.model.ts
deleted file mode 100644
index a60e758479f70b4796b3626ec59796d0cd1c1d69..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-metadata-wizard-dialog/service-metadata-wizard-edit-ro.model.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-
-export interface ServiceMetadataWizardRo  {
-  isNewServiceMetadata: boolean;
-  participantScheme: string;
-  participantIdentifier: string;
-  documentIdentifierScheme: string;
-  documentIdentifier: string;
-  processScheme: string;
-  processIdentifier: string;
-  transportProfile: string;
-  endpointUrl: string;
-  endpointCertificate: string;
-  serviceDescription: string;
-  technicalContactUrl: string;
-  contentXML?: string
-  errorMessage?: string
-}
diff --git a/smp-angular/src/app/smp.constants.ts b/smp-angular/src/app/smp.constants.ts
index 7d860932c33786a2071b43d76a7cfff1aeed1443..c23e64af1511270ee3482e96b91e144ce8ad2f9f 100644
--- a/smp-angular/src/app/smp.constants.ts
+++ b/smp-angular/src/app/smp.constants.ts
@@ -107,8 +107,6 @@ export class SmpConstants {
   public static readonly REST_EDIT_RESOURCE_MEMBER_DELETE = SmpConstants.REST_EDIT_RESOURCE_MEMBER + '/' + SmpConstants.PATH_PARAM_ENC_MEMBER_ID
     + '/' + SmpConstants.PATH_ACTION_DELETE;
 
-
-
   // legacy
   public static readonly REST_PUBLIC_GROUP_EDIT = SmpConstants.REST_PUBLIC + SmpConstants.PATH_RESOURCE_TYPE_GROUP + '/' + SmpConstants.PATH_PARAM_ENC_USER_ID;
   public static readonly REST_PUBLIC_GROUP_DOMAIN = SmpConstants.REST_PUBLIC_GROUP_EDIT + '/' +
@@ -152,7 +150,6 @@ export class SmpConstants {
   public static readonly REST_PUBLIC_SECURITY_AUTHENTICATION = SmpConstants.REST_PUBLIC_SECURITY + 'authentication';
   public static readonly REST_PUBLIC_SECURITY_USER = SmpConstants.REST_PUBLIC_SECURITY + 'user';
 
-
   public static readonly REST_PUBLIC_RESOURCE = SmpConstants.REST_PUBLIC + SmpConstants.PATH_RESOURCE_TYPE_RESOURCE;
   public static readonly REST_PUBLIC_RESOURCE_EDIT = SmpConstants.REST_PUBLIC_RESOURCE + '/' + SmpConstants.PATH_PARAM_ENC_USER_ID
     + '/' + SmpConstants.PATH_RESOURCE_TYPE_GROUP + '/' + SmpConstants.PATH_PARAM_ENC_GROUP_ID;
@@ -189,11 +186,9 @@ export class SmpConstants {
   public static readonly REST_INTERNAL_DOMAIN_MANAGE_CREATE = SmpConstants.REST_INTERNAL + SmpConstants.PATH_RESOURCE_TYPE_DOMAIN +
     '/' + SmpConstants.PATH_PARAM_ENC_USER_ID + '/' + SmpConstants.PATH_ACTION_CREATE;
 
-
   public static readonly REST_INTERNAL_DOMAIN_MANAGE_UPDATE_SML_INTEGRATION = SmpConstants.REST_INTERNAL + SmpConstants.PATH_RESOURCE_TYPE_DOMAIN +
     '/' + SmpConstants.PATH_PARAM_ENC_USER_ID + '/' + SmpConstants.PATH_PARAM_ENC_DOMAIN_ID + '/' + SmpConstants.PATH_ACTION_UPDATE_SML_INTEGRATION;
 
-
   public static readonly REST_INTERNAL_DOMAIN_MANAGE_UPDATE_RESOURCE_TYPES = SmpConstants.REST_INTERNAL + SmpConstants.PATH_RESOURCE_TYPE_DOMAIN +
     '/' + SmpConstants.PATH_PARAM_ENC_USER_ID + '/' + SmpConstants.PATH_PARAM_ENC_DOMAIN_ID + '/' + SmpConstants.PATH_ACTION_UPDATE_RESOURCE_TYPES;
 
@@ -253,5 +248,4 @@ export class SmpConstants {
     + 'certificate-credential' + '/'
     + SmpConstants.PATH_PARAM_ENC_CREDENTIAL_ID
 
-
 }
diff --git a/smp-angular/src/app/system-settings/admin-domain/admin-domain.component.ts b/smp-angular/src/app/system-settings/admin-domain/admin-domain.component.ts
index 50e33b37674887ab8cb5b043b7910ee7110639d7..2de482ea5e26563a0c2f1308fdd50a7171d80719 100644
--- a/smp-angular/src/app/system-settings/admin-domain/admin-domain.component.ts
+++ b/smp-angular/src/app/system-settings/admin-domain/admin-domain.component.ts
@@ -9,7 +9,6 @@ import {MatDialog} from "@angular/material/dialog";
 import {EntityStatus} from "../../common/enums/entity-status.enum";
 import {DomainRo} from "../../common/model/domain-ro.model";
 import {AdminKeystoreService} from "../admin-keystore/admin-keystore.service";
-import {CertificateRo} from "../user/certificate-ro.model";
 import {BeforeLeaveGuard} from "../../window/sidenav/navigation-on-leave-guard";
 import {ResourceDefinitionRo} from "../admin-extension/resource-definition-ro.model";
 import {ExtensionService} from "../admin-extension/extension.service";
@@ -22,6 +21,7 @@ import {DomainSmlIntegrationPanelComponent} from "./domain-sml-panel/domain-sml-
 import {MemberTypeEnum} from "../../common/enums/member-type.enum";
 import {firstValueFrom, Subscription} from "rxjs";
 import {VisibilityEnum} from "../../common/enums/visibility.enum";
+import {CertificateRo} from "../../common/model/certificate-ro.model";
 
 
 @Component({
diff --git a/smp-angular/src/app/system-settings/admin-domain/domain-panel/domain-panel.component.ts b/smp-angular/src/app/system-settings/admin-domain/domain-panel/domain-panel.component.ts
index 8eb5f56d15b0096f6197713892f21992721f4eeb..857708ae764956d64cdb89084a4c9b23234ef3ee 100644
--- a/smp-angular/src/app/system-settings/admin-domain/domain-panel/domain-panel.component.ts
+++ b/smp-angular/src/app/system-settings/admin-domain/domain-panel/domain-panel.component.ts
@@ -4,10 +4,10 @@ import {AbstractControl, FormBuilder, FormControl, FormGroup, Validators} from "
 import {AdminDomainService} from "../admin-domain.service";
 import {AlertMessageService} from "../../../common/alert-message/alert-message.service";
 import {MatDialog} from "@angular/material/dialog";
-import {CertificateRo} from "../../user/certificate-ro.model";
 import {VisibilityEnum} from "../../../common/enums/visibility.enum";
 import {ResourceDefinitionRo} from "../../admin-extension/resource-definition-ro.model";
 import {BeforeLeaveGuard} from "../../../window/sidenav/navigation-on-leave-guard";
+import {CertificateRo} from "../../../common/model/certificate-ro.model";
 
 @Component({
   selector: 'domain-panel',
diff --git a/smp-angular/src/app/system-settings/admin-domain/domain-sml-panel/domain-sml-integration-panel.component.ts b/smp-angular/src/app/system-settings/admin-domain/domain-sml-panel/domain-sml-integration-panel.component.ts
index 01cade8965470021dee123c0c15bca28ba8f765b..573766816cb77d58f296f205caa6c0013dfe8292 100644
--- a/smp-angular/src/app/system-settings/admin-domain/domain-sml-panel/domain-sml-integration-panel.component.ts
+++ b/smp-angular/src/app/system-settings/admin-domain/domain-sml-panel/domain-sml-integration-panel.component.ts
@@ -4,13 +4,13 @@ import {AbstractControl, FormBuilder, FormControl, FormGroup, Validators} from "
 import {AdminDomainService} from "../admin-domain.service";
 import {AlertMessageService} from "../../../common/alert-message/alert-message.service";
 import {MatDialog} from "@angular/material/dialog";
-import {CertificateRo} from "../../user/certificate-ro.model";
 import {BeforeLeaveGuard} from "../../../window/sidenav/navigation-on-leave-guard";
 import {ConfirmationDialogComponent} from "../../../common/dialogs/confirmation-dialog/confirmation-dialog.component";
-import {SMLResult} from "../../domain/sml-result.model";
-import {SmlIntegrationService} from "../../domain/sml-integration.service";
 import {GlobalLookups} from "../../../common/global-lookups";
 import {HttpErrorHandlerService} from "../../../common/error/http-error-handler.service";
+import {CertificateRo} from "../../../common/model/certificate-ro.model";
+import {SmlIntegrationService} from "../../../common/services/sml-integration.service";
+import {SMLResult} from "../../../common/model/sml-result.model";
 
 
 @Component({
diff --git a/smp-angular/src/app/system-settings/admin-keystore/admin-keystore.component.ts b/smp-angular/src/app/system-settings/admin-keystore/admin-keystore.component.ts
index 34ee6544a4315c6af197189a6295cf51201e18ea..2ea296b076176a60073d1d09b68cd1013c252650 100644
--- a/smp-angular/src/app/system-settings/admin-keystore/admin-keystore.component.ts
+++ b/smp-angular/src/app/system-settings/admin-keystore/admin-keystore.component.ts
@@ -2,7 +2,6 @@ import {AfterViewInit, Component, OnDestroy, OnInit, ViewChild} from '@angular/c
 import {MatTableDataSource} from "@angular/material/table";
 import {MatPaginator} from "@angular/material/paginator";
 import {MatSort} from "@angular/material/sort";
-import {CertificateRo} from "../user/certificate-ro.model";
 import {AdminKeystoreService} from "./admin-keystore.service";
 import {AlertMessageService} from "../../common/alert-message/alert-message.service";
 import {ConfirmationDialogComponent} from "../../common/dialogs/confirmation-dialog/confirmation-dialog.component";
@@ -11,6 +10,7 @@ import {EntityStatus} from "../../common/enums/entity-status.enum";
 import {KeystoreImportDialogComponent} from "./keystore-import-dialog/keystore-import-dialog.component";
 import {BeforeLeaveGuard} from "../../window/sidenav/navigation-on-leave-guard";
 import {Subscription} from "rxjs";
+import {CertificateRo} from "../../common/model/certificate-ro.model";
 
 
 @Component({
diff --git a/smp-angular/src/app/system-settings/admin-keystore/admin-keystore.service.ts b/smp-angular/src/app/system-settings/admin-keystore/admin-keystore.service.ts
index 676d0caec607de552ca88d292d3025fbba47f894..6c3e6f3add6d3d11b472f3158daea0132f2bf5b5 100644
--- a/smp-angular/src/app/system-settings/admin-keystore/admin-keystore.service.ts
+++ b/smp-angular/src/app/system-settings/admin-keystore/admin-keystore.service.ts
@@ -5,9 +5,9 @@ import {HttpClient, HttpHeaders} from '@angular/common/http';
 import {SmpConstants} from "../../smp.constants";
 import {SecurityService} from "../../security/security.service";
 import {User} from "../../security/user.model";
-import {CertificateRo} from "../user/certificate-ro.model";
 import {AlertMessageService} from "../../common/alert-message/alert-message.service";
-import {KeystoreResult} from "../domain/keystore-result.model";
+import {CertificateRo} from "../../common/model/certificate-ro.model";
+import {KeystoreResult} from "../../common/model/keystore-result.model";
 
 @Injectable()
 export class AdminKeystoreService {
diff --git a/smp-angular/src/app/system-settings/admin-keystore/keystore-import-dialog/keystore-import-dialog.component.ts b/smp-angular/src/app/system-settings/admin-keystore/keystore-import-dialog/keystore-import-dialog.component.ts
index 75a13db58e0b774c00725f7b2434d623a5362cf3..9e872cb6b6b471ffe7c60ecd1e463f2eaaba1000 100644
--- a/smp-angular/src/app/system-settings/admin-keystore/keystore-import-dialog/keystore-import-dialog.component.ts
+++ b/smp-angular/src/app/system-settings/admin-keystore/keystore-import-dialog/keystore-import-dialog.component.ts
@@ -4,8 +4,8 @@ import {FormControl, FormGroup, UntypedFormBuilder, Validators} from "@angular/f
 import {AlertMessageService} from "../../../common/alert-message/alert-message.service";
 import {HttpClient} from "@angular/common/http";
 import {SecurityService} from "../../../security/security.service";
-import {KeystoreResult} from "../../domain/keystore-result.model";
 import {AdminKeystoreService} from "../admin-keystore.service";
+import {KeystoreResult} from "../../../common/model/keystore-result.model";
 
 @Component({
   selector: 'keystore-import-dialog',
diff --git a/smp-angular/src/app/system-settings/property/property-controller.ts b/smp-angular/src/app/system-settings/admin-properties/property-controller.ts
similarity index 94%
rename from smp-angular/src/app/system-settings/property/property-controller.ts
rename to smp-angular/src/app/system-settings/admin-properties/property-controller.ts
index e6bceb1bb0572eed583214b095bdb504e82f0f29..48832952ddadd6307be8cebed377ecf4819c9ec5 100644
--- a/smp-angular/src/app/system-settings/property/property-controller.ts
+++ b/smp-angular/src/app/system-settings/admin-properties/property-controller.ts
@@ -3,7 +3,6 @@ import {MatDialog, MatDialogConfig, MatDialogRef} from '@angular/material/dialog
 import {GlobalLookups} from "../../common/global-lookups";
 import {SearchTableEntity} from "../../common/search-table/search-table-entity.model";
 import {HttpClient} from "@angular/common/http";
-import {DomainDetailsDialogComponent} from "../domain/domain-details-dialog/domain-details-dialog.component";
 import {PropertyDetailsDialogComponent} from "./property-details-dialog/property-details-dialog.component";
 import {PropertyRo} from "./property-ro.model";
 
diff --git a/smp-angular/src/app/system-settings/property/property-details-dialog/property-details-dialog.component.css b/smp-angular/src/app/system-settings/admin-properties/property-details-dialog/property-details-dialog.component.css
similarity index 100%
rename from smp-angular/src/app/system-settings/property/property-details-dialog/property-details-dialog.component.css
rename to smp-angular/src/app/system-settings/admin-properties/property-details-dialog/property-details-dialog.component.css
diff --git a/smp-angular/src/app/system-settings/property/property-details-dialog/property-details-dialog.component.html b/smp-angular/src/app/system-settings/admin-properties/property-details-dialog/property-details-dialog.component.html
similarity index 100%
rename from smp-angular/src/app/system-settings/property/property-details-dialog/property-details-dialog.component.html
rename to smp-angular/src/app/system-settings/admin-properties/property-details-dialog/property-details-dialog.component.html
diff --git a/smp-angular/src/app/system-settings/property/property-details-dialog/property-details-dialog.component.spec.ts b/smp-angular/src/app/system-settings/admin-properties/property-details-dialog/property-details-dialog.component.spec.ts
similarity index 100%
rename from smp-angular/src/app/system-settings/property/property-details-dialog/property-details-dialog.component.spec.ts
rename to smp-angular/src/app/system-settings/admin-properties/property-details-dialog/property-details-dialog.component.spec.ts
diff --git a/smp-angular/src/app/system-settings/property/property-details-dialog/property-details-dialog.component.ts b/smp-angular/src/app/system-settings/admin-properties/property-details-dialog/property-details-dialog.component.ts
similarity index 100%
rename from smp-angular/src/app/system-settings/property/property-details-dialog/property-details-dialog.component.ts
rename to smp-angular/src/app/system-settings/admin-properties/property-details-dialog/property-details-dialog.component.ts
diff --git a/smp-angular/src/app/system-settings/property/property-result.model.ts b/smp-angular/src/app/system-settings/admin-properties/property-result.model.ts
similarity index 100%
rename from smp-angular/src/app/system-settings/property/property-result.model.ts
rename to smp-angular/src/app/system-settings/admin-properties/property-result.model.ts
diff --git a/smp-angular/src/app/system-settings/property/property-ro.model.ts b/smp-angular/src/app/system-settings/admin-properties/property-ro.model.ts
similarity index 100%
rename from smp-angular/src/app/system-settings/property/property-ro.model.ts
rename to smp-angular/src/app/system-settings/admin-properties/property-ro.model.ts
diff --git a/smp-angular/src/app/system-settings/property/property-validate-ro.model.ts b/smp-angular/src/app/system-settings/admin-properties/property-validate-ro.model.ts
similarity index 60%
rename from smp-angular/src/app/system-settings/property/property-validate-ro.model.ts
rename to smp-angular/src/app/system-settings/admin-properties/property-validate-ro.model.ts
index 9b731ef2652f74da151eee914409a6f123443fe0..54e2eb0c55fc24ea3797414c012357ed99b19c9a 100644
--- a/smp-angular/src/app/system-settings/property/property-validate-ro.model.ts
+++ b/smp-angular/src/app/system-settings/admin-properties/property-validate-ro.model.ts
@@ -1,5 +1,3 @@
-import {SearchTableEntity} from '../../common/search-table/search-table-entity.model';
-
 export interface PropertyValidationRo  {
   property: string;
   value?: string;
diff --git a/smp-angular/src/app/system-settings/property/property.component.css b/smp-angular/src/app/system-settings/admin-properties/property.component.css
similarity index 100%
rename from smp-angular/src/app/system-settings/property/property.component.css
rename to smp-angular/src/app/system-settings/admin-properties/property.component.css
diff --git a/smp-angular/src/app/system-settings/property/property.component.html b/smp-angular/src/app/system-settings/admin-properties/property.component.html
similarity index 98%
rename from smp-angular/src/app/system-settings/property/property.component.html
rename to smp-angular/src/app/system-settings/admin-properties/property.component.html
index cfe76ef663c7428d78770620d75062d83cc500d4..61c9f4d12aaf0d5f90239bdd935affbaaba5a01d 100644
--- a/smp-angular/src/app/system-settings/property/property.component.html
+++ b/smp-angular/src/app/system-settings/admin-properties/property.component.html
@@ -1,6 +1,5 @@
 <smp-search-table
   #searchTable
-  page_id='property_id'
   [title]="'Properties'"
   [columnPicker]="columnPicker"
   [url]="baseUrl"
diff --git a/smp-angular/src/app/system-settings/property/property.component.ts b/smp-angular/src/app/system-settings/admin-properties/property.component.ts
similarity index 100%
rename from smp-angular/src/app/system-settings/property/property.component.ts
rename to smp-angular/src/app/system-settings/admin-properties/property.component.ts
diff --git a/smp-angular/src/app/system-settings/admin-truststore/admin-truststore.component.ts b/smp-angular/src/app/system-settings/admin-truststore/admin-truststore.component.ts
index eae20097175d1aae816918fd4b67ae0efef8741f..7416ef707cbc638169afa25e8ea4b47853590395 100644
--- a/smp-angular/src/app/system-settings/admin-truststore/admin-truststore.component.ts
+++ b/smp-angular/src/app/system-settings/admin-truststore/admin-truststore.component.ts
@@ -2,7 +2,6 @@ import {AfterViewInit, Component, OnDestroy, OnInit, ViewChild} from '@angular/c
 import {MatTableDataSource} from "@angular/material/table";
 import {MatPaginator} from "@angular/material/paginator";
 import {MatSort} from "@angular/material/sort";
-import {CertificateRo} from "../user/certificate-ro.model";
 import {AdminTruststoreService} from "./admin-truststore.service";
 import {AlertMessageService} from "../../common/alert-message/alert-message.service";
 import {ConfirmationDialogComponent} from "../../common/dialogs/confirmation-dialog/confirmation-dialog.component";
@@ -10,6 +9,7 @@ import {MatDialog} from "@angular/material/dialog";
 import {EntityStatus} from "../../common/enums/entity-status.enum";
 import {BeforeLeaveGuard} from "../../window/sidenav/navigation-on-leave-guard";
 import {Subscription} from "rxjs";
+import {CertificateRo} from "../../common/model/certificate-ro.model";
 
 
 @Component({
diff --git a/smp-angular/src/app/system-settings/admin-truststore/admin-truststore.service.ts b/smp-angular/src/app/system-settings/admin-truststore/admin-truststore.service.ts
index 251dfcffcb451e961fb59cbfc0bfecb1a9101469..2b5a258be26dd0af191a396e514dd92e97826eee 100644
--- a/smp-angular/src/app/system-settings/admin-truststore/admin-truststore.service.ts
+++ b/smp-angular/src/app/system-settings/admin-truststore/admin-truststore.service.ts
@@ -5,8 +5,8 @@ import {HttpClient, HttpHeaders} from '@angular/common/http';
 import {SmpConstants} from "../../smp.constants";
 import {SecurityService} from "../../security/security.service";
 import {User} from "../../security/user.model";
-import {CertificateRo} from "../user/certificate-ro.model";
 import {AlertMessageService} from "../../common/alert-message/alert-message.service";
+import {CertificateRo} from "../../common/model/certificate-ro.model";
 
 @Injectable()
 export class AdminTruststoreService {
diff --git a/smp-angular/src/app/system-settings/admin-users/admin-user.component.ts b/smp-angular/src/app/system-settings/admin-users/admin-user.component.ts
index 3e79d123f2e1fba6897fa2b317ff3dda19e147f0..6ce375a4469384430e38d72a363c5a5ba9ee64dc 100644
--- a/smp-angular/src/app/system-settings/admin-users/admin-user.component.ts
+++ b/smp-angular/src/app/system-settings/admin-users/admin-user.component.ts
@@ -9,7 +9,6 @@ import {SearchUserRo} from "../../common/model/search-user-ro.model";
 import {AdminUserService} from "./admin-user.service";
 import {TableResult} from "../../common/model/table-result.model";
 import {finalize} from "rxjs/operators";
-import {UserRo} from "../user/user-ro.model";
 import {SecurityService} from "../../security/security.service";
 import {
   PasswordChangeDialogComponent
@@ -18,6 +17,7 @@ import {ApplicationRoleEnum} from "../../common/enums/application-role.enum";
 import {HttpErrorHandlerService} from "../../common/error/http-error-handler.service";
 import {EntityStatus} from "../../common/enums/entity-status.enum";
 import {firstValueFrom} from "rxjs";
+import {UserRo} from "../../common/model/user-ro.model";
 
 
 @Component({
diff --git a/smp-angular/src/app/system-settings/admin-users/admin-user.service.ts b/smp-angular/src/app/system-settings/admin-users/admin-user.service.ts
index 557935fcfbebf274cccd1576365497d5dfa35db9..e678dcafc13b2085b12eb1ba7c727facd436f1e0 100644
--- a/smp-angular/src/app/system-settings/admin-users/admin-user.service.ts
+++ b/smp-angular/src/app/system-settings/admin-users/admin-user.service.ts
@@ -7,7 +7,7 @@ import {User} from "../../security/user.model";
 import {TableResult} from "../../common/model/table-result.model";
 import {MemberRo} from "../../common/model/member-ro.model";
 import {SmpConstants} from "../../smp.constants";
-import {UserRo} from "../user/user-ro.model";
+import {UserRo} from "../../common/model/user-ro.model";
 
 
 @Injectable()
diff --git a/smp-angular/src/app/system-settings/domain/domain-controller.ts b/smp-angular/src/app/system-settings/domain/domain-controller.ts
deleted file mode 100644
index 7f333c67e9f43d205ed88d377f27f06ded9f2b4d..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/system-settings/domain/domain-controller.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-import {SearchTableController} from '../../common/search-table/search-table-controller';
-import {MatDialog, MatDialogConfig, MatDialogRef} from '@angular/material/dialog';
-import {DomainDetailsDialogComponent} from './domain-details-dialog/domain-details-dialog.component';
-import {DomainRo} from '../../common/model/domain-ro.model';
-import {EntityStatus} from '../../common/enums/entity-status.enum';
-import {GlobalLookups} from "../../common/global-lookups";
-import {SearchTableValidationResult} from "../../common/search-table/search-table-validation-result.model";
-import {SearchTableEntity} from "../../common/search-table/search-table-entity.model";
-import {SmpConstants} from "../../smp.constants";
-import {HttpClient} from "@angular/common/http";
-
-export class DomainController implements SearchTableController {
-
-  constructor(protected http: HttpClient, protected lookups: GlobalLookups, public dialog: MatDialog) {
-  }
-
-  public showDetails( row: any) {
-
-    let dialogRef: MatDialogRef<DomainDetailsDialogComponent> = this.dialog.open(DomainDetailsDialogComponent);
-    dialogRef.afterClosed().subscribe(result => {
-      console.log("Domain dialog is closed!");
-    });
-  }
-
-  public edit(row: any) {
-  }
-
-  public delete(row: any) {
-  }
-
-  public newDialog(config?: MatDialogConfig): MatDialogRef<DomainDetailsDialogComponent> {
-    return this.dialog.open(DomainDetailsDialogComponent, config);
-  }
-
-  public newRow(): DomainRo {
-    return {
-      index: null,
-      domainCode: '',
-      smlSubdomain: '',
-      smlSmpId: '',
-      smlParticipantIdentifierRegExp: '',
-      smlClientKeyAlias: '',
-      signatureKeyAlias: '',
-      status: EntityStatus.NEW,
-      smlRegistered: false,
-      smlClientCertAuth: false,
-    }
-  }
-  public dataSaved() {
-    this.lookups.refreshDomainLookupForLoggedUser();
-  }
-
-  validateDeleteOperation(rows: Array<SearchTableEntity>){
-    var deleteRowIds = rows.map(rows => rows.id);
-    return  this.http.put<SearchTableValidationResult>(SmpConstants.REST_INTERNAL_DOMAIN_VALIDATE_DELETE, deleteRowIds);
-  }
-
-  public newValidationResult(result: boolean, message: string): SearchTableValidationResult {
-    return {
-      validOperation: result,
-      stringMessage: '',
-    }
-  }
-
-  isRowExpanderDisabled(row: SearchTableEntity): boolean {
-    return false;
-  }
-
-  isRecordChanged(oldModel, newModel): boolean {
-    for (let property in oldModel) {
-      let isEqual = this.isEqual(newModel[property],oldModel[property]);
-      console.log("Property: "+property+" new: " +newModel[property] +  "old: " +oldModel[property] + " val: " + isEqual  );
-      if (!isEqual) {
-        return true; // Property has changed
-      }
-    }
-    return false;
-  }
-
-  isEqual(val1, val2): boolean {
-    return (this.isEmpty(val1) && this.isEmpty(val2)
-      || val1 === val2);
-  }
-
-  isEmpty(str): boolean {
-    return (!str || 0 === str.length);
-  }
-}
diff --git a/smp-angular/src/app/system-settings/domain/domain-details-dialog/domain-details-dialog.component.html b/smp-angular/src/app/system-settings/domain/domain-details-dialog/domain-details-dialog.component.html
deleted file mode 100644
index e153d55edf3838da2c9afde5e71dadaf6f8cc638..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/system-settings/domain/domain-details-dialog/domain-details-dialog.component.html
+++ /dev/null
@@ -1,156 +0,0 @@
-<h2 mat-dialog-title>{{formTitle}}</h2>
-<mat-dialog-content >
-  <form [formGroup]="domainForm">
-    <mat-card>
-      <mat-card-title>Domain properties</mat-card-title>
-      <mat-card-content>
-        <fieldset style="border: none;">
-          <mat-form-field style="width:100%">
-            <input matInput placeholder="Domain Code" name="domainCode"
-                   id="domainCode_id" #domainCode
-                   matTooltip="The SMP's domain code. The code is used in HTTP header 'Domain' when adding service group using the webservice API"
-                   (keypress)="onFieldKeyPressed(domainCode.value, 'domainCodeTimeout')"
-                   [formControl]="domainForm.controls['domainCode']" maxlength="63" required>
-            <mat-hint align="end">For WS API integration: the Domain property</mat-hint>
-            <div
-              *ngIf="(!editMode && domainForm.controls['domainCode'].touched || editMode) &&  domainForm.controls['domainCode'].hasError('pattern')"
-              style="color:red; font-size: 70%">
-              Domain code must contain only chars and numbers and must be less than 63 chars long.
-            </div>
-            <div
-              *ngIf="!!fieldWarningTimeoutMap.domainCodeTimeout"
-              style="color:darkorange; font-size: 70%">
-              Domain code must contain only chars and numbers and must be less than 63 chars long.
-            </div>
-            <div
-              *ngIf="(!editMode && domainForm.controls['domainCode'].touched || editMode) &&  domainForm.controls['domainCode'].hasError('notInList')"
-              style="color:red; font-size: 70%">
-              The Domain code already exists!
-            </div>
-          </mat-form-field>
-          <mat-form-field style="width:100%">
-            <input matInput placeholder="SML domain"
-                   matTooltip="The domain-specific part of the SML DNS zone (e.g., ‘mydomain’ for mydomain.sml.dns.zone or leave empty for sml.dns.zone). Note: has informative value only, SML DNS zone used for publishing is based on SML configuration."
-                   name="smlSubdomain"
-                   id="smldomain_id" #smldomain
-                   (keypress)="onFieldKeyPressed(smldomain.value, 'smlDomainCodeTimeout')"
-                   [formControl]="domainForm.controls['smlSubdomain']" maxlength="63">
-            <mat-hint align="end">The domain-specific part of the SML DNS zone (e.g., ‘mydomain’ for
-              mydomain.sml.dns.zone).
-            </mat-hint>
-            <div
-              *ngIf="(!editMode && domainForm.controls['smlSubdomain'].touched || editMode)
-              &&  domainForm.controls['smlSubdomain'].hasError('pattern')"
-              style="color:red; font-size: 70%">
-              SML domain should be up to 63 characters long, should only contain alphanumeric and hyphen characters,
-              should not start with a digit nor a hyphen and should not end with a hyphen.
-            </div>
-            <div
-              *ngIf="!!fieldWarningTimeoutMap.smlDomainCodeTimeout"
-              style="color:darkorange; font-size: 70%">
-              SML domain should be up to 63 characters long, should only contain alphanumeric and hyphen characters,
-              should not start with a digit nor a hyphen and should not end with a hyphen.
-            </div>
-            <div
-              *ngIf="(!editMode && domainForm.controls['smlSubdomain'].touched || editMode) &&  domainForm.controls['smlSubdomain'].hasError('notInList')"
-              style="color:red; font-size: 70%">
-              The SML subdomain is already defined!
-            </div>
-            <div
-              *ngIf="(!editMode &&  domainForm.controls['smlSubdomain'].hasError('blankDomainError'))"
-              style="color:red; font-size: 70%">
-              Domain with empty sml subdomain already exists!
-            </div>
-          </mat-form-field>
-          <mat-form-field style="width:100%">
-            <mat-select placeholder="Response signature Certificate (Signature CertAlias)"
-                        [formControl]="domainForm.controls['signatureKeyAlias']" name="cert"
-                        matTooltip="Certificate is used for signing REST responses for the domain."
-                        id="signatureKeyAlias_id">
-              <mat-option [value]="''">Choose certificate for signing soap response</mat-option>
-              <mat-option *ngFor="let cert of lookups.cachedCertificateList" [value]="cert.alias">
-                {{cert.alias}} ({{cert.certificateId}})
-              </mat-option>
-            </mat-select>
-            <mat-hint align="end">Empty value will cause that ServiceMetadata response will not be signed by SMP!
-            </mat-hint>
-          </mat-form-field>
-        </fieldset>
-      </mat-card-content>
-    </mat-card>
-    <mat-card>
-      <mat-card-title>SML integration data</mat-card-title>
-      <mat-card-content>
-        <fieldset style="border: none;">
-          <mat-form-field style="width:100%">
-            <input matInput placeholder="SML SMP identifier" name="smlSmpId"
-                   id="smlSMPId_id" #smlSMPId
-                  (keypress)="onFieldKeyPressed(smlSMPId.value, 'smlsmpid')"
-                   [formControl]="domainForm.controls['smlSmpId']" maxlength="63">
-            <mat-hint align="end">SMP ID used for SML</mat-hint>
-            <div
-              *ngIf="(!editMode && domainForm.controls['smlSmpId'].touched || editMode) &&  domainForm.controls['smlSmpId'].hasError('pattern')"
-              style="color:red; font-size: 70%">
-              SML SMP ID should be up to 63 characters long, should only contain alphanumeric and hyphen characters,
-              should not start with a digit nor a hyphen and should not end with a hyphen.
-            </div>
-            <div
-              *ngIf="!!fieldWarningTimeoutMap.smlsmpid"
-              style="color:darkorange; font-size: 70%">
-              SML SMP ID should be up to 63 characters long, should only contain alphanumeric and hyphen characters,
-              should not start with a digit nor a hyphen and should not end with a hyphen.
-            </div>
-            <div
-              *ngIf="(!editMode && domainForm.controls['smlSmpId'].touched || editMode) &&  domainForm.controls['smlSmpId'].hasError('notInList')"
-              style="color:red; font-size: 70%">
-              SML SMP ID already exists!
-            </div>
-          </mat-form-field>
-
-          <mat-form-field style="width:100%"
-                          matTooltip="Client Certificate used for SML authentication. The SML Client-Cert http Header is also generated from the certificate">
-
-            <mat-select [(value)]="selectedSMLCert"
-                        placeholder="SML ClientCert Alias"
-                        [formControl]="domainForm.controls['smlClientKeyCertificate']"
-                        name="cert"
-                        id="smlClientKeyAlias_id">
-              <mat-option [value]="''">Choose certificate for SML integration</mat-option>
-              <mat-option *ngFor="let cert of lookups.cachedCertificateList" [value]="cert">
-                {{cert.alias}} ({{cert.certificateId}})
-              </mat-option>
-            </mat-select>
-          </mat-form-field>
-
-          <mat-form-field style="width:100%"
-                          matTooltip="SML Client-Cert http Header used for SML authentication. The header is generated from chosen  SML ClientCert Alias">
-            <input matInput placeholder="SML ClientCert Header" name="Client certificate" id="smlClientHeader_id"
-                   [value]="selectedSMLCert?.clientCertHeader" maxlength="2000" readonly="true">
-          </mat-form-field>
-
-          <mat-slide-toggle style="width:100%"
-                            mat-no-ink class="mat-primary" [formControl]="domainForm.controls['smlClientCertAuth']"
-                            id="smlClientCertHeaderAuth_id">
-            Use ClientCert http header authentication.
-          </mat-slide-toggle>
-
-        </fieldset>
-
-      </mat-card-content>
-    </mat-card>
-  </form>
-  <div class="required-fields">* required fields</div>
-</mat-dialog-content>
-
-
-<mat-dialog-actions>
-  <button mat-raised-button color="primary" (click)="submitForm()" [disabled]="!domainForm.valid">
-    <mat-icon>check_circle</mat-icon>
-    <span>OK</span>
-  </button>
-  <button mat-raised-button color="primary" mat-dialog-close>
-    <mat-icon>cancel</mat-icon>
-    <span>Cancel</span>
-  </button>
-</mat-dialog-actions>
-
diff --git a/smp-angular/src/app/system-settings/domain/domain-details-dialog/domain-details-dialog.component.spec.ts b/smp-angular/src/app/system-settings/domain/domain-details-dialog/domain-details-dialog.component.spec.ts
deleted file mode 100644
index 93b56953d46ba5c6a00dcff42cb9ff37707ad2a6..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/system-settings/domain/domain-details-dialog/domain-details-dialog.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { DomainDetailsDialogComponent } from './domain-details-dialog.component';
-
-describe('DomainDetailsDialogComponent', () => {
-  let component: DomainDetailsDialogComponent;
-  let fixture: ComponentFixture<DomainDetailsDialogComponent>;
-
-  beforeEach(async(() => {
-    TestBed.configureTestingModule({
-      declarations: [ DomainDetailsDialogComponent ]
-    })
-    .compileComponents();
-  }));
-
-  beforeEach(() => {
-    fixture = TestBed.createComponent(DomainDetailsDialogComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should be created', () => {
-    expect(component).toBeTruthy();
-  });
-});
diff --git a/smp-angular/src/app/system-settings/domain/domain-details-dialog/domain-details-dialog.component.ts b/smp-angular/src/app/system-settings/domain/domain-details-dialog/domain-details-dialog.component.ts
deleted file mode 100644
index 8af1638bde7855604aefe4a2b144d162871f150e..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/system-settings/domain/domain-details-dialog/domain-details-dialog.component.ts
+++ /dev/null
@@ -1,206 +0,0 @@
-import {Component, Inject} from '@angular/core';
-import {MAT_DIALOG_DATA, MatDialog, MatDialogRef} from '@angular/material/dialog';
-import {AbstractControl, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators} from "@angular/forms";
-import {DomainRo} from "../../../common/model/domain-ro.model";
-import {AlertMessageService} from "../../../common/alert-message/alert-message.service";
-import {EntityStatus} from "../../../common/enums/entity-status.enum";
-import {GlobalLookups} from "../../../common/global-lookups";
-import {CertificateRo} from "../../user/certificate-ro.model";
-import {BreakpointObserver} from "@angular/cdk/layout";
-
-@Component({
-  selector: 'domain-details-dialog',
-  templateUrl: './domain-details-dialog.component.html'
-})
-export class DomainDetailsDialogComponent {
-
-  static readonly NEW_MODE = 'New Domain';
-  static readonly EDIT_MODE = 'Domain Edit';
-  // Request from test team can not automate test if this is less than 10 seconds :(. Initialy it was 2s
-  readonly warningTimeout : number = 10000;
-  readonly dnsDomainPattern = '^([a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?){0,63}$';
-  readonly subDomainPattern = this.dnsDomainPattern;
-  readonly smpIdDomainPattern = this.dnsDomainPattern;
-  // is part of domain
-  readonly domainCodePattern = '^[a-zA-Z0-9]{1,63}$';
-
-  fieldWarningTimeoutMap = {
-    domainCodeTimeout: null,
-    smlDomainCodeTimeout: null,
-    smlsmpid: null,
-  };
-
-  editMode: boolean;
-  formTitle: string;
-  current: DomainRo & { confirmation?: string };
-  domainForm: UntypedFormGroup;
-  domain;
-  selectedSMLCert: CertificateRo = null;
-
-
-  notInList(list: string[], exception: string) {
-    return (c: AbstractControl): { [key: string]: any } => {
-      if (c.value && c.value !== exception && list.includes(c.value))
-        return {'notInList': {valid: false}};
-      return null;
-    }
-  }
-
-
-  constructor(
-    public dialog: MatDialog,
-    public lookups: GlobalLookups,
-    private responsive: BreakpointObserver,
-    private dialogRef: MatDialogRef<DomainDetailsDialogComponent>,
-    private alertService: AlertMessageService,
-    @Inject(MAT_DIALOG_DATA) public data: any,
-    private fb: UntypedFormBuilder) {
-
-    this.editMode = data.edit;
-    this.formTitle = this.editMode ? DomainDetailsDialogComponent.EDIT_MODE : DomainDetailsDialogComponent.NEW_MODE;
-    this.current = !!data.row
-      ? {
-        ...data.row,
-      }
-      : {
-        domainCode: '',
-        smlSubdomain: '',
-        smlSmpId: '',
-        smlClientKeyAlias: '',
-        signatureKeyAlias: '',
-        status: EntityStatus.NEW,
-      };
-
-    this.domainForm = fb.group({
-      'domainCode': new UntypedFormControl({value: '', disabled: this.editMode}, [Validators.pattern(this.domainCodePattern),
-        this.notInList(this.lookups.cachedDomainList.map(a => a.domainCode), this.current.domainCode)]),
-      'smlSubdomain': new UntypedFormControl({
-        value: '',
-        disabled: this.editMode
-      }, [Validators.pattern(this.subDomainPattern),
-        this.notInList(this.lookups.cachedDomainList.map(a => a.smlSubdomain), this.current.smlSubdomain)]),
-      'smlSmpId': new UntypedFormControl({value: ''}, [Validators.pattern(this.smpIdDomainPattern),
-        this.notInList(this.lookups.cachedDomainList.map(a => a.smlSmpId), this.current.smlSmpId)]),
-      'smlClientKeyAlias': new UntypedFormControl({value: ''}, null),
-      'smlClientKeyCertificate': new UntypedFormControl({value: this.selectedSMLCert}, null),
-      'signatureKeyAlias': new UntypedFormControl({value: ''}, null),
-
-      'smlRegistered': new UntypedFormControl({value: ''}, null),
-      'smlClientCertAuth': new UntypedFormControl({value: ''}, null),
-    });
-
-    this.domainForm.controls['domainCode'].setValue(this.current.domainCode);
-    this.domainForm.controls['smlSubdomain'].setValue(this.current.smlSubdomain);
-    this.domainForm.controls['smlSmpId'].setValue(this.current.smlSmpId);
-
-    this.domainForm.controls['smlClientKeyAlias'].setValue(this.current.smlClientKeyAlias);
-    this.domainForm.controls['signatureKeyAlias'].setValue(this.current.signatureKeyAlias);
-
-    this.domainForm.controls['smlRegistered'].setValue(this.current.smlRegistered);
-    this.domainForm.controls['smlClientCertAuth'].setValue(this.current.smlClientCertAuth);
-
-    if (this.current.smlClientKeyAlias) {
-      this.selectedSMLCert = this.lookups.cachedCertificateList.find(crt => crt.alias === this.current.smlClientKeyAlias);
-      this.domainForm.controls['smlClientKeyCertificate'].setValue(this.selectedSMLCert);
-    }
-  }
-
-
-  /**
-   * Show warning if domain code exceed the maxlength.
-   * @param value
-   */
-  onFieldKeyPressed(value: string, showTheWarningReference:string) {
-    if (!!value && value.length >= 63 && !this.fieldWarningTimeoutMap[showTheWarningReference]) {
-      this.fieldWarningTimeoutMap[showTheWarningReference] = setTimeout(() => {
-        this.fieldWarningTimeoutMap[showTheWarningReference] = null;
-      }, this.warningTimeout);
-    }
-  }
-
-  submitForm() {
-    this.checkValidity(this.domainForm)
-
-    // check if empty domain already exists
-    if (this.current.status === EntityStatus.NEW
-      && !this.domainForm.value['smlSubdomain']) {
-
-      let domainWithNullSML = this.lookups.cachedDomainList.filter(function (dmn) {
-        return !dmn.smlSubdomain;
-      })[0];
-
-      if (!domainWithNullSML) {
-        this.dialogRef.close(true);
-      } else {
-        this.domainForm.controls['smlSubdomain'].setErrors({'blankDomainError': true});
-      }
-
-    } else {
-      this.dialogRef.close(true);
-    }
-  }
-
-  checkValidity(g: UntypedFormGroup) {
-    Object.keys(g.controls).forEach(key => {
-      g.get(key).markAsDirty();
-    });
-    Object.keys(g.controls).forEach(key => {
-      g.get(key).markAsTouched();
-    });
-    //!!! updateValueAndValidity - else some filed did no update current / on blur never happened
-    Object.keys(g.controls).forEach(key => {
-      g.get(key).updateValueAndValidity();
-    });
-
-
-  }
-
-  public getCurrent(): DomainRo {
-
-    if (!this.editMode) {
-      this.current.domainCode = this.domainForm.value['domainCode'];
-      this.current.smlSubdomain = this.domainForm.value['smlSubdomain'];
-    }
-    this.current.smlSmpId = this.domainForm.value['smlSmpId'];
-    if (this.domainForm.value['smlClientKeyCertificate']) {
-      this.current.smlClientKeyAlias = this.domainForm.value['smlClientKeyCertificate'].alias;
-    } else {
-      this.current.smlClientKeyAlias = '';
-    }
-    this.current.signatureKeyAlias = this.domainForm.value['signatureKeyAlias'];
-    this.current.smlClientCertAuth = this.domainForm.value['smlClientCertAuth'];
-
-    return this.current;
-
-  }
-
-  updateDomainCode(event) {
-    this.current.domainCode = event.target.value;
-  }
-
-  updateSmlDomain(event) {
-    this.current.smlSubdomain = event.target.value;
-  }
-
-  updateSmlSmpId(event) {
-    this.current.smlSmpId = event.target.value;
-  }
-
-  updateSmlClientKeyAlias(event) {
-    this.current.smlClientKeyAlias = event.target.value;
-  }
-
-  updateSignatureKeyAlias(event) {
-    this.current.signatureKeyAlias = event.target.value;
-  }
-
-
-  compareCertByAlias(cert, alias): boolean {
-    return cert.alias === alias;
-  }
-
-  compareCertificate(certificate: CertificateRo, alias: string): boolean {
-    return certificate.alias === alias;
-  }
-
-}
diff --git a/smp-angular/src/app/system-settings/domain/domain-result.model.ts b/smp-angular/src/app/system-settings/domain/domain-result.model.ts
deleted file mode 100644
index 50cc6686d4766b101f4ec2ab8f39e140374c5898..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/system-settings/domain/domain-result.model.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import {DomainRo} from '../../common/model/domain-ro.model';
-
-export interface DomainResult {
-  serviceEntities: Array<DomainRo>;
-  pageSize: number;
-  count: number;
-  filter: any;
-}
diff --git a/smp-angular/src/app/system-settings/domain/domain.component.css b/smp-angular/src/app/system-settings/domain/domain.component.css
deleted file mode 100644
index d222a471f320e3b0964b02cce0d3de7775cfcaf6..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/system-settings/domain/domain.component.css
+++ /dev/null
@@ -1,41 +0,0 @@
-/* --- Select ---*/
-.mat-select{
-  padding:20px 0;
-}
-
-/* --- Button  ---*/
-.group-btn {
-   margin-top:20px;
- }
-
-#hiddenButtonId {
-  position: fixed;
-}
-
-::ng-deep .missingKey {
-  text-decoration: line-through !important;
-  font-weight: bold;
-  color:red;
-}
-
-::ng-deep .domainWarning {
-  text-decoration: line-through !important;
-  font-weight: bold;
-  color:#c6c639;
-}
-
-::ng-deep .deleted  {
-  text-decoration: line-through !important;
-  font-weight: bold;
-}
-::ng-deep .table-row-new  {
-
-  color: darkgreen !important;
-  font-weight: bold;
-}
-::ng-deep .table-row-updated  {
-  font-weight: bold;
-}
-::ng-deep .table-row  {
-  font-weight: normal;
-}
diff --git a/smp-angular/src/app/system-settings/domain/domain.component.html b/smp-angular/src/app/system-settings/domain/domain.component.html
deleted file mode 100644
index 4a16a422da202086f2a88a9f533035a6d43e1ada..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/system-settings/domain/domain.component.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<smp-search-table
-  #searchTable
-  page_id= 'domain_id'
-  [title]= "'Domains'"
-  [columnPicker] = "columnPicker"
-  [url]="baseUrl"
-  [additionalToolButtons]="additionalToolButtons"
-  [searchTableController]="domainController"
-  [showSearchPanel]="false"
-  [filter]="filter"
-  [allowNewItems]="securityService.isCurrentUserSystemAdmin()"
-  [allowDeleteItems]="securityService.isCurrentUserSystemAdmin()"
->
-
-  <ng-template #domainCodeColumnTemplate let-row="row" let-value="value"  ngx-datatable-cell-template>
-    <span [class]='aliasCssForDomainCodeClass(row)'  [matTooltip]='getDomainConfigurationWarning(row)'  >{{value}}</span>
-  </ng-template>
-
-  <ng-template #certificateAliasTemplate let-row="row" let-value="value" ngx-datatable-cell-template>
-    <span [class]='aliasCssClass(value, row)'>{{value}}</span>
-  </ng-template>
-
-  <ng-template #additionalToolButtons >
-    <tool-button-spacer></tool-button-spacer>
-
-    <button id="registerButton" mat-raised-button (click)="smlRegisterSelectedDomain()"
-            [disabled]="!enableSMLRegister()" color="primary">
-      <mat-icon>link</mat-icon>
-      <span>Register</span>
-    </button>
-    <button id="unregisterButton" mat-raised-button (click)="smlUnregisterSelectedDomain()"
-            [disabled]="!enableSMLUnregister()" color="primary">
-      <mat-icon>link_off</mat-icon>
-      <span>Unregister</span>
-    </button>
-    <tool-button-spacer></tool-button-spacer>
-
-    <button id="openEditKeystoreDialogButton" mat-raised-button color="primary" (click)="openEditKeystoreDialog()">
-      <mat-icon>vpn_key</mat-icon>
-      <span> Edit keystore</span>
-    </button>
-  </ng-template>
-</smp-search-table>
diff --git a/smp-angular/src/app/system-settings/domain/domain.component.ts b/smp-angular/src/app/system-settings/domain/domain.component.ts
deleted file mode 100644
index 2ab9878fe63455ff9c6ae2b5b1f026d703b49973..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/system-settings/domain/domain.component.ts
+++ /dev/null
@@ -1,320 +0,0 @@
-import {
-  AfterViewChecked,
-  AfterViewInit,
-  ChangeDetectorRef,
-  Component,
-  OnInit,
-  TemplateRef,
-  ViewChild
-} from '@angular/core';
-import {ColumnPicker} from '../../common/column-picker/column-picker.model';
-import {MatDialog, MatDialogRef} from '@angular/material/dialog';
-
-import {AlertMessageService} from '../../common/alert-message/alert-message.service';
-import {DomainController} from './domain-controller';
-import {HttpClient} from '@angular/common/http';
-import {SmpConstants} from "../../smp.constants";
-import {GlobalLookups} from "../../common/global-lookups";
-import {SearchTableComponent} from "../../common/search-table/search-table.component";
-import {SecurityService} from "../../security/security.service";
-import {DomainRo} from "../../common/model/domain-ro.model";
-import {ConfirmationDialogComponent} from "../../common/dialogs/confirmation-dialog/confirmation-dialog.component";
-import {EntityStatus} from "../../common/enums/entity-status.enum";
-import {KeystoreEditDialogComponent} from "./keystore-edit-dialog/keystore-edit-dialog.component";
-import {SmpInfoService} from "../../app-info/smp-info.service";
-import {SmlIntegrationService} from "./sml-integration.service";
-import {SMLResult} from "./sml-result.model";
-
-@Component({
-  templateUrl: './domain.component.html',
-  styleUrls: ['./domain.component.css']
-})
-export class DomainComponent implements OnInit, AfterViewInit, AfterViewChecked {
-
-  @ViewChild('rowMetadataAction') rowMetadataAction: TemplateRef<any>;
-  @ViewChild('certificateAliasTemplate') certificateAliasColumn: TemplateRef<any>;
-  @ViewChild('domainCodeColumnTemplate') domainCodeColumnTemplate: TemplateRef<any>;
-  @ViewChild('rowActions') rowActions: TemplateRef<any>;
-  @ViewChild('searchTable') searchTable: SearchTableComponent;
-
-
-  baseUrl = SmpConstants.REST_INTERNAL_DOMAIN_MANAGE_DEPRECATED;
-  columnPicker: ColumnPicker = new ColumnPicker();
-  domainController: DomainController;
-  filter: any = {};
-
-  constructor(public securityService: SecurityService,
-              protected smpInfoService: SmpInfoService,
-              protected smlIntegrationService: SmlIntegrationService,
-              protected lookups: GlobalLookups,
-              protected http: HttpClient,
-              protected alertService: AlertMessageService,
-              public dialog: MatDialog,
-              private changeDetector: ChangeDetectorRef) {
-
-    // check application settings
-
-
-  }
-
-  ngOnInit() {
-    this.domainController = new DomainController(this.http, this.lookups, this.dialog);
-  }
-
-  initColumns() {
-    this.columnPicker.allColumns = [
-      {
-        name: 'Domain code',
-        title: "Unique domain code.",
-        prop: 'domainCode',
-        showInitially: true,
-        cellTemplate: this.domainCodeColumnTemplate,
-        width: 250
-
-      },
-      {
-        name: 'SML Domain',
-        title: "Informative: SML domain name.",
-        prop: 'smlSubdomain',
-        showInitially: true,
-      },
-      {
-        name: 'Signature CertAlias',
-        title: "Certificate for signing REST responses",
-        prop: 'signatureKeyAlias',
-        showInitially: true,
-        cellTemplate: this.certificateAliasColumn,
-        width: 150
-      },
-      {
-        name: 'SML SMP Id',
-        title: "SMP identifier for SML integration",
-        prop: 'smlSmpId',
-        showInitially: true,
-        width: 150
-      },
-      {
-        name: 'SML ClientCert Alias',
-        prop: 'smlClientKeyAlias',
-        showInitially: true,
-        cellTemplate: this.certificateAliasColumn,
-        width: 150
-      },
-      {
-        name: 'Is SML Registered',
-        prop: 'smlRegistered',
-        showInitially: true,
-        width: 120
-      },
-      {
-        name: 'SML ClientCert Auth.',
-        prop: 'smlClientCertAuth',
-        showInitially: true,
-        width: 130
-      },
-    ];
-    this.searchTable.tableColumnInit();
-  }
-
-  ngAfterViewChecked() {
-    this.changeDetector.detectChanges();
-  }
-
-  ngAfterViewInit() {
-    this.initColumns();
-
-  }
-
-  certificateAliasExists(alias: string): boolean {
-    if (alias) {
-      return this.lookups.cachedCertificateAliasList.includes(alias);
-    } else {
-      return false;
-    }
-  }
-
-  aliasCssClass(alias: string, row) {
-    if (!this.certificateAliasExists(alias)) {
-      return 'missingKey';
-    } else if (row.status === EntityStatus.NEW) {
-      return 'table-row-new';
-    } else if (row.status === EntityStatus.UPDATED) {
-      return 'table-row-updated';
-    } else if (row.status === EntityStatus.REMOVED) {
-      return 'deleted';
-    }
-  }
-
-  aliasCssForDomainCodeClass(domain) {
-    let domainWarning = this.getDomainConfigurationWarning(domain)
-    if (!!domainWarning) {
-      return 'domainWarning';
-    } else if (domain.status === EntityStatus.NEW) {
-      return 'table-row-new';
-    } else if (domain.status === EntityStatus.UPDATED) {
-      return 'table-row-updated';
-    } else if (domain.status === EntityStatus.REMOVED) {
-      return 'deleted';
-    }
-  }
-
-  getDomainConfigurationWarning(domain: DomainRo) {
-    let msg = null;
-    if (!domain.signatureKeyAlias) {
-      msg = "The domain should have a defined signature CertAlias."
-    }
-    if (this.lookups.cachedApplicationConfig.smlIntegrationOn) {
-      if (!domain.smlSmpId || !domain.smlClientKeyAlias) {
-        msg = (!msg ? "" : msg + " ") + "For SML integration the SMP SMP ID and SML client certificate must be defined!"
-      }
-    }
-    return msg;
-  }
-
-  details(row: any) {
-    this.domainController.showDetails(row);
-  }
-
-  // for dirty guard...
-  isDirty(): boolean {
-    return this.searchTable.isDirty();
-  }
-
-  get isSMPIntegrationOn() {
-    return this.lookups.cachedApplicationConfig?.smlIntegrationOn
-  }
-
-  enableSMLRegister(): boolean {
-    if (!this.selectedOneRow || !this.isSMPIntegrationOn) {
-      return false;
-    }
-    let domainRo = (this.searchTable.selected[0] as DomainRo);
-
-    if (!domainRo.smlClientKeyAlias && !domainRo.smlClientCertAuth) {
-      return false;
-    }
-
-    if (domainRo.status != EntityStatus.PERSISTED) {
-      return false;
-    }
-    // entity must be first persisted in order to be enabled to registering to SML
-    return !domainRo.smlRegistered;
-  }
-
-  enableSMLUnregister(): boolean {
-    if (!this.selectedOneRow || !this.isSMPIntegrationOn) {
-      return false;
-    }
-    let domainRo = (this.searchTable.selected[0] as DomainRo);
-
-    if (!domainRo.smlClientKeyAlias && !domainRo.smlClientCertAuth) {
-      return false;
-    }
-
-    if (domainRo.status != EntityStatus.PERSISTED) {
-      return false;
-    }
-
-    // entity must be first persisted in order to be enabled to registering to SML
-    return domainRo.smlRegistered;
-  }
-
-  get selectedOneRow(): boolean {
-    return this.searchTable?.selected.length === 1
-  }
-
-  smlUnregisterSelectedDomain() {
-    if (!this.selectedOneRow) {
-      return false;
-    }
-
-    let domainRo = (this.searchTable.selected[0] as DomainRo);
-
-    this.dialog.open(ConfirmationDialogComponent, {
-      data: {
-        title: "Unregister domain to SML",
-        description: "Action will unregister domain: " + domainRo.domainCode + " and all its service groups from SML.<br/><br/>Do you wish to continue?"
-      }
-    }).afterClosed().subscribe(result => {
-      if (result) {
-        this.smlUnregisterDomain(domainRo);
-      }
-    })
-  }
-
-  smlRegisterSelectedDomain() {
-    if (this.searchTable.selected.length !== 1) {
-      return false;
-    }
-
-    let domainRo = (this.searchTable.selected[0] as DomainRo);
-
-    this.dialog.open(ConfirmationDialogComponent, {
-      data: {
-        title: "Register domain to SML",
-        description: "Action will register domain: " + domainRo.domainCode + " and all its service groups to SML. <br/><br/>Do you wish to continue?"
-      }
-    }).afterClosed().subscribe(result => {
-      if (result) {
-        this.smlRegisterDomain(domainRo);
-      }
-    })
-  }
-
-  smlRegisterDomain(domain: DomainRo) {
-    this.searchTable.showSpinner = true;
-    this.smlIntegrationService.registerDomainToSML$(domain.domainCode).toPromise().then((res: SMLResult) => {
-        this.searchTable.showSpinner = false;
-        if (res) {
-          if (res.success) {
-            this.alertService.success("Domain " + domain.domainCode + " registered to sml!");
-            this.lookups.refreshDomainLookupForLoggedUser();
-            domain.smlRegistered = true;
-          } else {
-            this.alertService.exception('Error occurred while registering domain:' + domain.domainCode, res.errorMessage);
-          }
-        } else {
-          this.alertService.exception('Error occurred while registering domain:' + domain.domainCode, "Unknown error. Check logs.");
-        }
-      },
-      err => {
-        this.searchTable.showSpinner = false;
-        this.alertService.exception('Error occurred while registering domain:' + domain.domainCode, err);
-      }
-    )
-  }
-
-  smlUnregisterDomain(domain: DomainRo) {
-    this.searchTable.showSpinner = true;
-    this.smlIntegrationService.unregisterDomainToSML$(domain.domainCode).toPromise().then((res: SMLResult) => {
-        this.searchTable.showSpinner = false;
-        if (res) {
-          if (res.success) {
-            this.alertService.success("Domain " + domain.domainCode + " unregistered from sml!");
-            this.lookups.refreshDomainLookupForLoggedUser();
-            domain.smlRegistered = false;
-          } else {
-            this.alertService.exception('Error occurred while unregistering domain:' + domain.domainCode, res.errorMessage);
-          }
-        } else {
-          this.alertService.exception('Error occurred while registering domain:' + domain.domainCode, "Unknown error. Check logs.");
-        }
-      }
-      ,
-      err => {
-        this.searchTable.showSpinner = false;
-        this.alertService.exception('Error occurred while unregistering domain:' + domain.domainCode, err);
-      }
-    )
-
-  }
-
-  openEditKeystoreDialog() {
-    const formRef: MatDialogRef<any> = this.dialog.open(KeystoreEditDialogComponent);
-    formRef.afterClosed().subscribe(result => {
-      if (result) {
-        // close
-      }
-    });
-  }
-}
diff --git a/smp-angular/src/app/system-settings/domain/keystore-edit-dialog/keystore-edit-dialog.component.css b/smp-angular/src/app/system-settings/domain/keystore-edit-dialog/keystore-edit-dialog.component.css
deleted file mode 100644
index aaf6e06f5744b5904dadc3e990f19b4c9d0498c8..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/system-settings/domain/keystore-edit-dialog/keystore-edit-dialog.component.css
+++ /dev/null
@@ -1,8 +0,0 @@
-.scroller-div {
-  padding: 4px;
-  width: 100%;
-  height: 308px;
-  overflow-x: hidden;
-  overflow-y: auto;
-  text-align: justify;
-}
diff --git a/smp-angular/src/app/system-settings/domain/keystore-edit-dialog/keystore-edit-dialog.component.html b/smp-angular/src/app/system-settings/domain/keystore-edit-dialog/keystore-edit-dialog.component.html
deleted file mode 100644
index f6532f03e1230a6ddd41fe9435c5bf90363118bf..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/system-settings/domain/keystore-edit-dialog/keystore-edit-dialog.component.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<h2 mat-dialog-title>{{formTitle}}</h2>
-<mat-dialog-content style="height:400px;width:850px">
-  <mat-card>
-    <mat-card-content >
-      <div class="scroller-div">
-      <ngx-datatable
-        id='keystoreTable_id'
-        class='material'
-        style="min-height: 300px"
-        [reorderable]="true"
-        [selectionType]='"single"'
-        [rows]='lookups.cachedCertificateList'
-        [columnMode]='"force"'
-        [headerHeight]='50'
-        [footerHeight]='0'
-        [rowHeight]='40'
-        (activate)='onActivate($event)'
-        [count]='lookups.cachedCertificateList.length'
-      >
-        <ngx-datatable-column prop="alias" name="Alias" maxWidth="250"></ngx-datatable-column>
-        <ngx-datatable-column prop="certificateId" minWidth="300" name="Certificate id"></ngx-datatable-column>
-        <ngx-datatable-column [cellTemplate]="certificateRowActions" name="Actions"
-                              minWidth="100" maxWidth="180" > </ngx-datatable-column>
-
-        <ng-template #certificateRowActions let-row="row" ngx-datatable-cell-template>
-          <div>
-            <button id="showCertificateDataButton" mat-icon-button color="primary"
-                    matTooltip="Certificate details"
-                    (click)="onShowCertificateDataRow(row)" >
-              <mat-icon>details</mat-icon>
-            </button>
-            <button id="deleteCertificateButton" mat-icon-button color="primary"
-                    matTooltip="Delete certificate"
-                    (click)="onDeleteCertificateRowActionClicked(row)">
-              <mat-icon>delete</mat-icon>
-            </button>
-          </div>
-        </ng-template>
-      </ngx-datatable>
-      </div>
-      <button id="importKeystoreButton" mat-raised-button color="primary" (click)="openImportKeystoreDialog()">
-        <mat-icon>vpn_key</mat-icon>
-        <span>Import keystore</span>
-      </button>
-    </mat-card-content>
-  </mat-card>
-</mat-dialog-content>
-
-<mat-dialog-actions>
-  <button id="closeDialogButton" mat-raised-button color="primary" mat-dialog-close>
-        <mat-icon>close</mat-icon>
-        <span>Close</span>
-      </button>
-</mat-dialog-actions>
diff --git a/smp-angular/src/app/system-settings/domain/keystore-edit-dialog/keystore-edit-dialog.component.spec.ts b/smp-angular/src/app/system-settings/domain/keystore-edit-dialog/keystore-edit-dialog.component.spec.ts
deleted file mode 100644
index 845e3149007e633823464e4804f4c5222c2677d5..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/system-settings/domain/keystore-edit-dialog/keystore-edit-dialog.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import {KeystoreEditDialogComponent} from "./keystore-edit-dialog.component";
-
-describe('KeystoreEditDialogComponent', () => {
-  let component: KeystoreEditDialogComponent;
-  let fixture: ComponentFixture<KeystoreEditDialogComponent>;
-
-  beforeEach(async(() => {
-    TestBed.configureTestingModule({
-      declarations: [ KeystoreEditDialogComponent ]
-    })
-    .compileComponents();
-  }));
-
-  beforeEach(() => {
-    fixture = TestBed.createComponent(KeystoreEditDialogComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should be created', () => {
-    expect(component).toBeTruthy();
-  });
-});
diff --git a/smp-angular/src/app/system-settings/domain/keystore-edit-dialog/keystore-edit-dialog.component.ts b/smp-angular/src/app/system-settings/domain/keystore-edit-dialog/keystore-edit-dialog.component.ts
deleted file mode 100644
index b3f9be0e2ce6a8c0ccad3bc9674f57046dd4ae8f..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/system-settings/domain/keystore-edit-dialog/keystore-edit-dialog.component.ts
+++ /dev/null
@@ -1,125 +0,0 @@
-import {AfterViewChecked, ChangeDetectorRef, Component, Inject} from '@angular/core';
-import {MAT_DIALOG_DATA, MatDialog, MatDialogRef} from '@angular/material/dialog';
-import {UntypedFormBuilder} from "@angular/forms";
-import {AlertMessageService} from "../../../common/alert-message/alert-message.service";
-import {GlobalLookups} from "../../../common/global-lookups";
-import {HttpClient} from "@angular/common/http";
-import {SecurityService} from "../../../security/security.service";
-import {CertificateDialogComponent} from "../../../common/dialogs/certificate-dialog/certificate-dialog.component";
-import {ConfirmationDialogComponent} from "../../../common/dialogs/confirmation-dialog/confirmation-dialog.component";
-import {
-  KeystoreImportDialogComponent
-} from "../../admin-keystore/keystore-import-dialog/keystore-import-dialog.component";
-import {InformationDialogComponent} from "../../../common/dialogs/information-dialog/information-dialog.component";
-import {KeystoreService} from "../keystore.service";
-import {KeystoreResult} from "../keystore-result.model";
-
-@Component({
-  selector: 'keystore-edit-dialog',
-  templateUrl: './keystore-edit-dialog.component.html',
-  styleUrls: ['keystore-edit-dialog.component.css']
-})
-export class KeystoreEditDialogComponent implements AfterViewChecked {
-  formTitle: string;
-
-  displayedColumns = ['alias', 'certificateId'];
-
-
-  constructor(private keystoreService: KeystoreService,
-              private securityService: SecurityService,
-              private http: HttpClient,
-              public lookups: GlobalLookups,
-              public dialog: MatDialog,
-              private dialogRef: MatDialogRef<KeystoreEditDialogComponent>,
-              private alertService: AlertMessageService,
-              @Inject(MAT_DIALOG_DATA) public data: any,
-              private fb: UntypedFormBuilder,
-              private changeDetector: ChangeDetectorRef) {
-    this.formTitle = "Keystore edit dialog";
-  }
-
-  ngAfterViewChecked(): void {
-    // fix bug updating the columns
-    //https://github.com/swimlane/ngx-datatable/issues/1266
-    window.dispatchEvent(new Event('resize'));
-    this.changeDetector.detectChanges();
-
-  }
-
-  onDeleteCertificateRowActionClicked(row) {
-
-    let listDomains = this.lookups.cachedDomainList.filter(domain => domain.smlClientKeyAlias === row.alias || domain.signatureKeyAlias === row.alias);
-    let listSignatureKeys = listDomains.map(domain => domain.domainCode);
-
-    if (listSignatureKeys.length > 0) {
-      this.dialog.open(InformationDialogComponent, {
-        data: {
-          title: "Delete key/certificate " + row.alias + " from keystore",
-          description: "Key/certificate is in use by domains: " + listSignatureKeys + ". First replace/remove certificate from domains!"
-        }
-      }).afterClosed().subscribe(result => {
-        if (result) {
-          //
-        }
-      })
-    } else {
-      this.dialog.open(ConfirmationDialogComponent, {
-        data: {
-          title: "Delete key/certificate " + row.alias + " from keystore",
-          description: "Action will permanently delete key/certificate from keystore! <br/><br/>Do you wish to continue?"
-        }
-      }).afterClosed().subscribe(result => {
-        if (result) {
-          this.deleteCertificateFromKeystore(row.alias);
-        }
-      })
-    }
-  }
-
-  deleteCertificateFromKeystore(alias: string) {
-    this.keystoreService.deleteCertificateFromKeystore$(alias).subscribe((res: KeystoreResult) => {
-        if (res) {
-          if (res.errorMessage) {
-            this.alertService.exception("Error occurred while deleting certificate:" + alias, res.errorMessage, false);
-          } else {
-            this.alertService.success("Certificate " + alias + " deleted!");
-
-
-          }
-        } else {
-          this.alertService.exception("Error occurred while deleting certificate:" + alias, "Unknown Error", false);
-        }
-      },
-      err => {
-        this.alertService.exception('Error occurred while deleting certificate:' + alias, err);
-      }
-    )
-
-  }
-
-  openImportKeystoreDialog() {
-    const formRef: MatDialogRef<any> = this.dialog.open(KeystoreImportDialogComponent);
-    formRef.afterClosed().subscribe(result => {
-      if (result) {
-        // import
-      }
-    });
-  }
-
-  onActivate(event) {
-    if ("dblclick" === event.type) {
-      this.onShowCertificateDataRow(event.row);
-    }
-  }
-
-  onShowCertificateDataRow(row) {
-    const formRef: MatDialogRef<any> = this.dialog.open(CertificateDialogComponent, {
-      data: {row}
-    });
-    formRef.afterClosed().subscribe(result => {
-      if (result) {
-        // import
-      }
-    });
-  }
-}
diff --git a/smp-angular/src/app/system-settings/domain/keystore.service.ts b/smp-angular/src/app/system-settings/domain/keystore.service.ts
deleted file mode 100644
index 088fca304c3b6a488181fbc0d0a135d9dba29506..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/system-settings/domain/keystore.service.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import {Injectable} from '@angular/core';
-import {Observable} from 'rxjs';
-
-import {HttpClient, HttpHeaders} from '@angular/common/http';
-import {SmpConstants} from "../../smp.constants";
-import {SecurityService} from "../../security/security.service";
-import {User} from "../../security/user.model";
-import {KeystoreResult} from "./keystore-result.model";
-
-@Injectable()
-export class KeystoreService {
-
-  constructor(
-    private http: HttpClient,
-    private securityService: SecurityService) {
-  }
-
-  uploadKeystore(selectedFile, keystoreType, password): Observable<KeystoreResult> {
-
-    // upload file as binary file
-    const headers = new HttpHeaders()
-      .set("Content-Type", "application/octet-stream");
-
-    // encode password
-    let passwordEncoded = encodeURIComponent(password);
-
-    const currentUser: User = this.securityService.getCurrentUser();
-    return this.http.post<KeystoreResult>(SmpConstants.REST_INTERNAL_KEYSTORE_UPLOAD
-      .replace(SmpConstants.PATH_PARAM_ENC_USER_ID, currentUser.userId)
-      .replace(SmpConstants.PATH_PARAM_KEYSTORE_TYPE, keystoreType)
-      .replace(SmpConstants.PATH_PARAM_KEYSTORE_PWD, passwordEncoded), selectedFile, {
-      headers
-    });
-  }
-
-  deleteCertificateFromKeystore$(certificateAlias): Observable<KeystoreResult> {
-
-    // encode password
-    let certificateAliasEncoded = encodeURIComponent(certificateAlias);
-
-    const currentUser: User = this.securityService.getCurrentUser();
-    return this.http.delete<KeystoreResult>(`${SmpConstants.REST_INTERNAL_KEYSTORE_DEPRECATED}/${currentUser.userId}/delete/${certificateAliasEncoded}`);
-  }
-}
diff --git a/smp-angular/src/app/user-settings/user-access-tokens/user-access-tokens.component.ts b/smp-angular/src/app/user-settings/user-access-tokens/user-access-tokens.component.ts
index 7995edeb08b405364266149addf986a64d92bc2d..f125fdcd30eba5611c718e6a1fe38b97d535d9ac 100644
--- a/smp-angular/src/app/user-settings/user-access-tokens/user-access-tokens.component.ts
+++ b/smp-angular/src/app/user-settings/user-access-tokens/user-access-tokens.component.ts
@@ -1,5 +1,4 @@
 import {AfterViewInit, Component, QueryList, ViewChild, ViewChildren,} from '@angular/core';
-import {UserService} from "../../system-settings/user/user.service";
 import {CredentialRo} from "../../security/credential.model";
 import {ConfirmationDialogComponent} from "../../common/dialogs/confirmation-dialog/confirmation-dialog.component";
 import {MatDialog} from "@angular/material/dialog";
@@ -9,6 +8,7 @@ import {BeforeLeaveGuard} from "../../window/sidenav/navigation-on-leave-guard";
 import {AccessTokenPanelComponent} from "./access-token-panel/access-token-panel.component";
 import {MatPaginator} from "@angular/material/paginator";
 import {MatTableDataSource} from "@angular/material/table";
+import {UserService} from "../../common/services/user.service";
 
 @Component({
   templateUrl: './user-access-tokens.component.html',
diff --git a/smp-angular/src/app/user-settings/user-certificates/user-certificates.component.ts b/smp-angular/src/app/user-settings/user-certificates/user-certificates.component.ts
index 5fcaa9436408ae28093da110d2fb5c7433967fde..5b86f4ea85ca7929d91e8fb4b83fb11d2837f0d3 100644
--- a/smp-angular/src/app/user-settings/user-certificates/user-certificates.component.ts
+++ b/smp-angular/src/app/user-settings/user-certificates/user-certificates.component.ts
@@ -1,6 +1,5 @@
 import {Component, QueryList, ViewChildren,} from '@angular/core';
 import {SecurityService} from "../../security/security.service";
-import {UserService} from "../../system-settings/user/user.service";
 import {CredentialRo} from "../../security/credential.model";
 import {ConfirmationDialogComponent} from "../../common/dialogs/confirmation-dialog/confirmation-dialog.component";
 import {MatDialog} from "@angular/material/dialog";
@@ -10,6 +9,7 @@ import {CredentialDialogComponent} from "../../common/dialogs/credential-dialog/
 import {BeforeLeaveGuard} from "../../window/sidenav/navigation-on-leave-guard";
 import {UserCertificatePanelComponent} from "./user-certificate-panel/user-certificate-panel.component";
 import {HttpErrorHandlerService} from "../../common/error/http-error-handler.service";
+import {UserService} from "../../common/services/user.service";
 
 
 @Component({
diff --git a/smp-angular/src/app/user-settings/user-profile/user-profile.component.ts b/smp-angular/src/app/user-settings/user-profile/user-profile.component.ts
index c2b6aee50703e2fbc3aa077f1a3ede7116701d48..8706ca476bdef7bed4b9ae56c06989b31b1fcb97 100644
--- a/smp-angular/src/app/user-settings/user-profile/user-profile.component.ts
+++ b/smp-angular/src/app/user-settings/user-profile/user-profile.component.ts
@@ -1,9 +1,7 @@
 import {Component, OnDestroy, OnInit, ViewChild,} from '@angular/core';
 import {SecurityService} from "../../security/security.service";
 import {User} from "../../security/user.model";
-import {UserService} from "../../system-settings/user/user.service";
 import {BeforeLeaveGuard} from "../../window/sidenav/navigation-on-leave-guard";
-import {UserRo} from "../../system-settings/user/user-ro.model";
 import {UserProfilePanelComponent} from "../../common/panels/user-settings-panel/user-profile-panel.component";
 import {MatDialog, MatDialogConfig, MatDialogRef} from "@angular/material/dialog";
 import {
@@ -12,6 +10,8 @@ import {
 import {SecurityEventService} from "../../security/security-event.service";
 import {Subscription} from "rxjs";
 import {EntityStatus} from "../../common/enums/entity-status.enum";
+import {UserRo} from "../../common/model/user-ro.model";
+import {UserService} from "../../common/services/user.service";
 
 
 @Component({
diff --git a/smp-angular/src/app/window/toolbar/toolbar.component.ts b/smp-angular/src/app/window/toolbar/toolbar.component.ts
index 1bad501f5796bdbdab4fcf37260b4153e756d105..0fd33932a2e308ad86848efbb8ae46999cec8077 100644
--- a/smp-angular/src/app/window/toolbar/toolbar.component.ts
+++ b/smp-angular/src/app/window/toolbar/toolbar.component.ts
@@ -4,11 +4,10 @@ import {SecurityService} from '../../security/security.service';
 import {Authority} from "../../security/authority.model";
 import {AlertMessageService} from "../../common/alert-message/alert-message.service";
 import {MatDialog} from "@angular/material/dialog";
-import {UserService} from "../../system-settings/user/user.service";
-import {UserController} from "../../system-settings/user/user-controller";
 import {HttpClient} from "@angular/common/http";
 import {GlobalLookups} from "../../common/global-lookups";
 import {NavigationService} from "../sidenav/navigation-model.service";
+import {UserController} from "../../common/services/user-controller";
 
 /**
  * Expanded side navigation panel of the DomiSMP. The component shows all tools/pages according to user role and permissions
@@ -30,7 +29,6 @@ export class ToolbarComponent {
 
   constructor(private alertService: AlertMessageService,
               private securityService: SecurityService,
-              private userService: UserService,
               private navigation: NavigationService,
               private http: HttpClient,
               private dialog: MatDialog,
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/ResourceConstants.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/ResourceConstants.java
index 9cc0a750baaf6d7119a64815c94715da2ac2a68a..d972175a2a2c9a587209b234a88151fc8e6072bb 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/ResourceConstants.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/ResourceConstants.java
@@ -58,7 +58,6 @@ public class ResourceConstants {
     public static final String PATH_PARAM_CERT_ALIAS = "cert-alias";
     public static final String PATH_PARAM_ENC_CREDENTIAL_ID = "credential-id";
     public static final String PATH_PARAM_ENC_MANAGED_USER_ID = "managed-user-id";
-    public static final String PATH_PARAM_SRV_GROUP_ID = "service-group-id";
 
     public static final String PATH_PARAM_KEYSTORE_TOKEN = "keystore-token";
     public static final String PATH_PARAM_KEYSTORE_TYPE = "keystore-type";
@@ -133,8 +132,6 @@ public class ResourceConstants {
     public static final String CONTEXT_PATH_PUBLIC_USER = CONTEXT_PATH_PUBLIC + "user";
     public static final String CONTEXT_PATH_PUBLIC_TRUSTSTORE = CONTEXT_PATH_PUBLIC + "truststore";
 
-    public static final String CONTEXT_PATH_PUBLIC_SERVICE_GROUP = CONTEXT_PATH_PUBLIC + "service-group";
-    public static final String CONTEXT_PATH_PUBLIC_SERVICE_METADATA = CONTEXT_PATH_PUBLIC + "service-metadata";
     public static final String CONTEXT_PATH_PUBLIC_SECURITY = CONTEXT_PATH_PUBLIC + "security";
     public static final String CONTEXT_PATH_PUBLIC_SECURITY_AUTHENTICATION = CONTEXT_PATH_PUBLIC_SECURITY + "/authentication";
     public static final String CONTEXT_PATH_PUBLIC_SECURITY_USER = CONTEXT_PATH_PUBLIC_SECURITY + "/user";
@@ -157,13 +154,9 @@ public class ResourceConstants {
     public static final String PARAM_PAGINATION_FILTER = "filter";
     public static final String PARAM_PAGINATION_ORDER_BY = "orderBy";
     public static final String PARAM_PAGINATION_ORDER_TYPE = "orderType";
-
     public static final String PARAM_NAME_TYPE = "type";
     public static final String PARAM_NAME_VERSION = "version";
-
-
     public static final String PARAM_ROLE = "role";
-
     public static final String PARAM_QUERY_PARTC_ID = "participantIdentifier";
     public static final String PARAM_QUERY_PARTC_SCHEME = "participantScheme";
     public static final String PARAM_QUERY_DOMAIN_CODE = "domainCode";
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/TruststoreController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/TruststoreController.java
index c574d1a3d0f98fdc5a9f2512fc75f59e0469583e..3039753f7b0552c6b33c8d7810767c932da782ed 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/TruststoreController.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/TruststoreController.java
@@ -23,19 +23,20 @@ import eu.europa.ec.edelivery.smp.logging.SMPLogger;
 import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory;
 import eu.europa.ec.edelivery.smp.services.PayloadValidatorService;
 import eu.europa.ec.edelivery.smp.services.ui.UITruststoreService;
-import eu.europa.ec.edelivery.smp.ui.ResourceConstants;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.MimeTypeUtils;
 import org.springframework.web.bind.annotation.*;
 
 import java.io.ByteArrayInputStream;
 
+import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.*;
+
 /**
  * @author Joze Rihtarsic
  * @since 4.1
  */
 @RestController
-@RequestMapping(value = ResourceConstants.CONTEXT_PATH_PUBLIC_TRUSTSTORE)
+@RequestMapping(value = CONTEXT_PATH_PUBLIC_TRUSTSTORE)
 public class TruststoreController {
 
     private static final SMPLogger LOG = SMPLoggerFactory.getLogger(TruststoreController.class);
@@ -50,7 +51,7 @@ public class TruststoreController {
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userId)")
     @PostMapping(path = "/{user-id}/validate-certificate", consumes = MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-    public CertificateRO validateCertificate(@PathVariable("user-id") String userId, @RequestBody byte[] data) {
+    public CertificateRO validateCertificate(@PathVariable(PATH_PARAM_ENC_USER_ID) String userId, @RequestBody byte[] data) {
         LOG.info("Got certificate data size: {}", data.length);
         // validate uploaded content
         payloadValidatorService.validateUploadedContent(new ByteArrayInputStream(data), MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE);
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/UserController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/UserController.java
index f38cec9eea683aa641303c05eb7176d934bd556d..82bd92d6c7297df86a6fe1ec05968a8201402bc3 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/UserController.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/external/UserController.java
@@ -36,8 +36,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
-import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.CONTEXT_PATH_PUBLIC_USER;
-import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.PARAM_PAGINATION_FILTER;
+import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.*;
 import static eu.europa.ec.edelivery.smp.utils.SessionSecurityUtils.decryptEntityId;
 
 /**
@@ -61,7 +60,7 @@ public class UserController {
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userId)")
     @PutMapping(path = "/{user-id}/change-password", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-    public boolean changePassword(@PathVariable("user-id") String userId, @RequestBody PasswordChangeRO newPassword, HttpServletRequest request, HttpServletResponse response) {
+    public boolean changePassword(@PathVariable(PATH_PARAM_ENC_USER_ID) String userId, @RequestBody PasswordChangeRO newPassword, HttpServletRequest request, HttpServletResponse response) {
         Long entityId = decryptEntityId(userId);
         LOG.info("Validating the password of the currently logged in user:[{}] with id:[{}] ", userId, entityId);
         // when user changing password the current password must be verified even if cas authenticated
@@ -75,7 +74,7 @@ public class UserController {
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userId)")
     @GetMapping(path = "/{user-id}/search", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
-    public List<SearchUserRO> lookupUsers(@PathVariable("user-id") String userId,
+    public List<SearchUserRO> lookupUsers(@PathVariable(PATH_PARAM_ENC_USER_ID) String userId,
                                           @RequestParam(value = PARAM_PAGINATION_FILTER, defaultValue = "", required = false) String filter) {
         Long entityId = decryptEntityId(userId);
         LOG.info("Validating the password of the currently logged in user:[{}] with id:[{}] ", userId, entityId);
@@ -93,7 +92,7 @@ public class UserController {
      */
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userId)")
     @PutMapping(path = "/{user-id}")
-    public UserRO updateCurrentUserProfile(@PathVariable("user-id") String userId, @RequestBody UserRO user) {
+    public UserRO updateCurrentUserProfile(@PathVariable(PATH_PARAM_ENC_USER_ID) String userId, @RequestBody UserRO user) {
         LOG.info("Update current user: {}", user);
         Long entityId = decryptEntityId(userId);
         // Update the user and mark the password as changed at this very instant of time
@@ -112,7 +111,7 @@ public class UserController {
      */
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userId)")
     @GetMapping(path = "/{user-id}/navigation-tree")
-    public NavigationTreeNodeRO getUserNavigationTree(@PathVariable("user-id") String userId) {
+    public NavigationTreeNodeRO getUserNavigationTree(@PathVariable(PATH_PARAM_ENC_USER_ID) String userId) {
         LOG.info("get User Navigation tree for user ID: {}", userId);
         Long entityId = decryptEntityId(userId);
         DBUser user = uiUserService.findUser(entityId);
@@ -132,7 +131,7 @@ public class UserController {
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userId)")
     @GetMapping(path = "/{user-id}/username-credential-status")
-    public CredentialRO getUsernameCredentialStatus(@PathVariable("user-id") String userId) {
+    public CredentialRO getUsernameCredentialStatus(@PathVariable(PATH_PARAM_ENC_USER_ID) String userId) {
         LOG.debug("Get user credential status for user: [{}]", userId);
         Long entityId = decryptEntityId(userId);
         // Update the user and mark the password as changed at this very instant of time
@@ -144,7 +143,7 @@ public class UserController {
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#encUserId)")
     @GetMapping(path = "/{user-id}/access-token-credentials")
-    public List<CredentialRO> getAccessTokenCredentials(@PathVariable("user-id") String encUserId) {
+    public List<CredentialRO> getAccessTokenCredentials(@PathVariable(PATH_PARAM_ENC_USER_ID) String encUserId) {
         LOG.debug("Get access token credential status for user:: [{}]", encUserId);
         Long userId = decryptEntityId(encUserId);
         // Update the user and mark the password as changed at this very instant of time
@@ -154,7 +153,7 @@ public class UserController {
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#encUserId)")
     @DeleteMapping(path = "/{user-id}/access-token-credential/{credential-id}")
-    public CredentialRO deleteAccessTokenCredentials(@PathVariable("user-id") String encUserId,
+    public CredentialRO deleteAccessTokenCredentials(@PathVariable(PATH_PARAM_ENC_USER_ID) String encUserId,
                                                      @PathVariable("credential-id") String encAccessTokenId) {
         LOG.debug("Delete User [{}] access token credential: [{}]", encUserId, encAccessTokenId);
         Long userId = decryptEntityId(encUserId);
@@ -170,7 +169,7 @@ public class UserController {
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#encUserId)")
     @PostMapping(path = "/{user-id}/access-token-credential/{credential-id}")
-    public CredentialRO updateAccessTokenCredentials(@PathVariable("user-id") String encUserId,
+    public CredentialRO updateAccessTokenCredentials(@PathVariable(PATH_PARAM_ENC_USER_ID) String encUserId,
                                                      @PathVariable("credential-id") String encAccessTokenId,
                                                      @RequestBody CredentialRO credentialRO) {
         LOG.debug("Update User [{}] access token credential: [{}]", encUserId, encAccessTokenId);
@@ -190,7 +189,7 @@ public class UserController {
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#encUserId)")
     @PutMapping(path = "/{user-id}/access-token-credential/{credential-id}")
-    public AccessTokenRO generateAccessTokenCredential(@PathVariable("user-id") String encUserId,
+    public AccessTokenRO generateAccessTokenCredential(@PathVariable(PATH_PARAM_ENC_USER_ID) String encUserId,
                                                        @PathVariable("credential-id") String encAccessTokenId,
                                                        @RequestBody CredentialRO credentialRO) {
         LOG.debug("Update User [{}] access token credential: [{}]", encUserId, encAccessTokenId);
@@ -200,7 +199,7 @@ public class UserController {
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#encUserId)")
     @GetMapping(path = "/{user-id}/certificate-credentials")
-    public List<CredentialRO> getCertificateCredentials(@PathVariable("user-id") String encUserId) {
+    public List<CredentialRO> getCertificateCredentials(@PathVariable(PATH_PARAM_ENC_USER_ID) String encUserId) {
         LOG.debug("get User credential status: [{}]", encUserId);
         Long userId = decryptEntityId(encUserId);
         // Update the user and mark the password as changed at this very instant of time
@@ -210,7 +209,7 @@ public class UserController {
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#encUserId)")
     @DeleteMapping(path = "/{user-id}/certificate-credential/{credential-id}")
-    public CredentialRO deleteCertificateCredential(@PathVariable("user-id") String encUserId,
+    public CredentialRO deleteCertificateCredential(@PathVariable(PATH_PARAM_ENC_USER_ID) String encUserId,
                                                     @PathVariable("credential-id") String encCredentialId) {
         LOG.debug("Delete User [{}] access certificate credential: [{}]", encUserId, encCredentialId);
         Long userId = decryptEntityId(encUserId);
@@ -225,7 +224,7 @@ public class UserController {
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#encUserId)")
     @PostMapping(path = "/{user-id}/certificate-credential/{credential-id}")
-    public CredentialRO updateCertificateCredential(@PathVariable("user-id") String encUserId,
+    public CredentialRO updateCertificateCredential(@PathVariable(PATH_PARAM_ENC_USER_ID) String encUserId,
                                                     @PathVariable("credential-id") String encCredentialId,
                                                     @RequestBody CredentialRO credentialRO) {
         LOG.debug("Update User [{}] access token credential: [{}]", encUserId, encCredentialId);
@@ -244,7 +243,7 @@ public class UserController {
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#encUserId)")
     @GetMapping(path = "/{user-id}/certificate-credential/{credential-id}")
-    public CredentialRO getCertificateCredential(@PathVariable("user-id") String encUserId,
+    public CredentialRO getCertificateCredential(@PathVariable(PATH_PARAM_ENC_USER_ID) String encUserId,
                                                  @PathVariable("credential-id") String encCredentialId) {
         LOG.debug("Update User [{}] access token credential: [{}]", encUserId, encCredentialId);
         Long userId = decryptEntityId(encUserId);
@@ -254,7 +253,7 @@ public class UserController {
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#encUserId)")
     @PutMapping(path = "/{user-id}/certificate-credential/{credential-id}")
-    public CredentialRO storeCertificateCredential(@PathVariable("user-id") String encUserId,
+    public CredentialRO storeCertificateCredential(@PathVariable(PATH_PARAM_ENC_USER_ID) String encUserId,
                                                    @PathVariable("credential-id") String credentialId,
                                                    @RequestBody CredentialRO credentialRO) {
         LOG.debug("Store credential for user [{}] certificate  credential: [{}]", encUserId, credentialId);
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/DomainAdminController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/DomainAdminController.java
index d6cb4591b225afd2003fa7ff66747cf27da78e0b..1c5cd50a86cc5f133818a35b4c8aa331f99f164f 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/DomainAdminController.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/DomainAdminController.java
@@ -35,7 +35,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
-import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.CONTEXT_PATH_INTERNAL_DOMAIN;
+import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.*;
 
 /**
  * DomainAdminResource provides admin services for managing the domains configured in SMP. The services defined in path
@@ -59,16 +59,16 @@ public class DomainAdminController {
 
     }
 
-    @GetMapping(path = "/{user-enc-id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+    @GetMapping(path = "/{user-id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) and @smpAuthorizationService.isSystemAdministrator")
-    public List<DomainRO> getAllDomainList(@PathVariable("user-enc-id") String userEncId) {
+    public List<DomainRO> getAllDomainList(@PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId) {
         logAdminAccess("getAllDomainList");
         return uiDomainService.getAllDomains();
     }
 
-    @DeleteMapping(path = "/{user-enc-id}/{domain-enc-id}/delete", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+    @DeleteMapping(path = "/{user-id}/{domain-enc-id}/delete", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) and @smpAuthorizationService.isSystemAdministrator")
-    public DomainRO deleteDomain(@PathVariable("user-enc-id") String userEncId,
+    public DomainRO deleteDomain(@PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
                                  @PathVariable("domain-enc-id") String domainEncId) {
         logAdminAccess("deleteDomain:" + domainEncId);
         Long domainId = SessionSecurityUtils.decryptEntityId(domainEncId);
@@ -78,9 +78,9 @@ public class DomainAdminController {
         return domainRO;
     }
 
-    @PutMapping(path = "/{user-enc-id}/create", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, consumes = MimeTypeUtils.APPLICATION_JSON_VALUE)
+    @PutMapping(path = "/{user-id}/create", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, consumes = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) and @smpAuthorizationService.isSystemAdministrator")
-    public DomainRO createBasicDomainData(@PathVariable("user-enc-id") String userEncId,
+    public DomainRO createBasicDomainData(@PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
                                           @RequestBody DomainRO domainData) {
         logAdminAccess("createBasicDomainData" );
 
@@ -90,9 +90,9 @@ public class DomainAdminController {
         domainRO.setStatus(EntityROStatus.NEW.getStatusNumber());
         return domainRO;
     }
-    @PostMapping(path = "/{user-enc-id}/{domain-enc-id}/update", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, consumes = MimeTypeUtils.APPLICATION_JSON_VALUE)
+    @PostMapping(path = "/{user-id}/{domain-enc-id}/update", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, consumes = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) and @smpAuthorizationService.isSystemAdministrator")
-    public DomainRO updateBasicDomainData(@PathVariable("user-enc-id") String userEncId,
+    public DomainRO updateBasicDomainData(@PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
                                      @PathVariable("domain-enc-id") String domainEncId,
                                      @RequestBody DomainRO domainData) {
         logAdminAccess("updateBasicDomainData:" + domainEncId);
@@ -106,9 +106,9 @@ public class DomainAdminController {
         return domainRO;
     }
 
-    @PostMapping(path = "/{user-enc-id}/{domain-enc-id}/update-resource-types", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, consumes = MimeTypeUtils.APPLICATION_JSON_VALUE)
+    @PostMapping(path = "/{user-id}/{domain-enc-id}/update-resource-types", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, consumes = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) and @smpAuthorizationService.isSystemAdministrator")
-    public DomainRO updateResourceDefDomainList(@PathVariable("user-enc-id") String userEncId,
+    public DomainRO updateResourceDefDomainList(@PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
                                           @PathVariable("domain-enc-id") String domainEncId,
                                           @RequestBody List<String> resourceDefs) {
         logAdminAccess("updateResourceDefDomainList:" + domainEncId);
@@ -121,9 +121,9 @@ public class DomainAdminController {
         return domainRO;
     }
 
-    @PostMapping(path = "/{user-enc-id}/{domain-enc-id}/update-sml-integration-data", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, consumes = MimeTypeUtils.APPLICATION_JSON_VALUE)
+    @PostMapping(path = "/{user-id}/{domain-enc-id}/update-sml-integration-data", produces = MimeTypeUtils.APPLICATION_JSON_VALUE, consumes = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) and @smpAuthorizationService.isSystemAdministrator")
-    public DomainRO updateSmlIntegrationData(@PathVariable("user-enc-id") String userEncId,
+    public DomainRO updateSmlIntegrationData(@PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
                                                 @PathVariable("domain-enc-id") String domainEncId,
                                                 @RequestBody DomainRO domainData) {
         logAdminAccess("updateSmlIntegrationData:" + domainEncId);
@@ -138,7 +138,7 @@ public class DomainAdminController {
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userId) and @smpAuthorizationService.systemAdministrator")
     @PutMapping(value = "/{user-id}/sml-register/{domain-code}")
-    public SMLIntegrationResult registerDomainAndParticipants(@PathVariable("user-id") String userId,
+    public SMLIntegrationResult registerDomainAndParticipants(@PathVariable(PATH_PARAM_ENC_USER_ID) String userId,
                                                               @PathVariable("domain-code") String domainCode
     ) {
         LOG.info("SML register domain code: {}, user user-id {}", domainCode, userId);
@@ -157,7 +157,7 @@ public class DomainAdminController {
 
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userId) and @smpAuthorizationService.systemAdministrator")
     @PutMapping(value = "/{user-id}/sml-unregister/{domain-code}")
-    public SMLIntegrationResult unregisterDomainAndParticipants(@PathVariable("user-id") String userId,
+    public SMLIntegrationResult unregisterDomainAndParticipants(@PathVariable(PATH_PARAM_ENC_USER_ID) String userId,
                                                                 @PathVariable("domain-code") String domainCode) {
         LOG.info("SML unregister domain code: {}, user id {}", domainCode, userId);
         // try to open keystore
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/KeystoreAdminController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/KeystoreAdminController.java
index 384beee4529829fc849764ac149020845732b37f..a973ee80e5f4d63693e5502d1c6bccca97e79578 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/KeystoreAdminController.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/KeystoreAdminController.java
@@ -8,9 +8,9 @@
  * 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 at:
- * 
+ *
  * [PROJECT_HOME]\license\eupl-1.2\license.txt or https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- * 
+ *
  * 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.
@@ -40,7 +40,7 @@ import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
 import java.util.List;
 
-import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.CONTEXT_PATH_INTERNAL_KEYSTORE;
+import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.*;
 import static org.springframework.util.MimeTypeUtils.APPLICATION_JSON_VALUE;
 import static org.springframework.util.MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE;
 
@@ -64,12 +64,12 @@ public class KeystoreAdminController {
 
     @GetMapping(path = "/{user-id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userId) and @smpAuthorizationService.isSystemAdministrator")
-    public List<CertificateRO> getSystemKeystoreCertificates(@PathVariable("user-id") String userId) {
+    public List<CertificateRO> getSystemKeystoreCertificates(@PathVariable(PATH_PARAM_ENC_USER_ID) String userId) {
         logAdminAccess("getSystemKeystoreCertificates");
 
         List<CertificateRO> keystoreEntriesList = uiKeystoreService.getKeystoreEntriesList();
         // clear encoded value to reduce http traffic
-        keystoreEntriesList.stream().forEach(certificateRO -> {
+        keystoreEntriesList.forEach(certificateRO -> {
             certificateRO.setEncodedValue(null);
             certificateRO.setStatus(EntityROStatus.PERSISTED.getStatusNumber());
         });
@@ -77,8 +77,8 @@ public class KeystoreAdminController {
     }
 
     @PreAuthorize("@smpAuthorizationService.systemAdministrator AND @smpAuthorizationService.isCurrentlyLoggedIn(#userEncId)")
-    @PostMapping(path = "/{user-enc-id}/upload/{keystoreType}/{password}", produces = APPLICATION_JSON_VALUE, consumes = APPLICATION_OCTET_STREAM_VALUE)
-    public KeystoreImportResult uploadKeystore(@PathVariable("user-enc-id") String userEncId,
+    @PostMapping(path = "/{user-id}/upload/{keystoreType}/{password}", produces = APPLICATION_JSON_VALUE, consumes = APPLICATION_OCTET_STREAM_VALUE)
+    public KeystoreImportResult uploadKeystore(@PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
                                                @PathVariable("keystoreType") String keystoreType,
                                                @PathVariable("password") String password,
                                                @RequestBody byte[] fileBytes) {
@@ -103,9 +103,9 @@ public class KeystoreAdminController {
     }
 
     @PreAuthorize("@smpAuthorizationService.systemAdministrator AND @smpAuthorizationService.isCurrentlyLoggedIn(#userEncId)")
-    @DeleteMapping(value = "/{user-enc-id}/delete/{alias}", produces = APPLICATION_JSON_VALUE)
-    public CertificateRO deleteCertificate(@PathVariable("user-enc-id") String userEncId,
-                                           @PathVariable("alias") String alias) {
+    @DeleteMapping(value = "/{user-id}/delete/{cert-alias}", produces = APPLICATION_JSON_VALUE)
+    public CertificateRO deleteCertificate(@PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
+                                           @PathVariable(PATH_PARAM_CERT_ALIAS) String alias) {
         LOG.info("Remove alias by user id {}, alias {}.", userEncId, alias);
         CertificateRO response;
         try {
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/TruststoreAdminController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/TruststoreAdminController.java
index fc9b528ee6d093814da0713c54c02cc42d5de3c0..81c8cb446d0a5aeff9dfac65e03c3c6c7d2326de 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/TruststoreAdminController.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/TruststoreAdminController.java
@@ -26,7 +26,6 @@ import eu.europa.ec.edelivery.smp.logging.SMPLogger;
 import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory;
 import eu.europa.ec.edelivery.smp.services.PayloadValidatorService;
 import eu.europa.ec.edelivery.smp.services.ui.UITruststoreService;
-import eu.europa.ec.edelivery.smp.ui.ResourceConstants;
 import eu.europa.ec.edelivery.smp.utils.SessionSecurityUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.MimeTypeUtils;
@@ -40,12 +39,14 @@ import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
 import java.util.List;
 
+import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.*;
+
 /**
  * @author Joze Rihtarsic
  * @since 4.1
  */
 @RestController
-@RequestMapping(value = ResourceConstants.CONTEXT_PATH_INTERNAL_TRUSTSTORE)
+@RequestMapping(value = CONTEXT_PATH_INTERNAL_TRUSTSTORE)
 public class TruststoreAdminController {
 
     private static final SMPLogger LOG = SMPLoggerFactory.getLogger(TruststoreAdminController.class);
@@ -61,12 +62,12 @@ public class TruststoreAdminController {
 
     @GetMapping(path = "/{user-id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userId) and @smpAuthorizationService.isSystemAdministrator")
-    public List<CertificateRO> getSystemTruststoreCertificates(@PathVariable("user-id") String userId) {
+    public List<CertificateRO> getSystemTruststoreCertificates(@PathVariable(PATH_PARAM_ENC_USER_ID) String userId) {
         logAdminAccess("getSystemTruststoreCertificates");
 
         List<CertificateRO> truststoreEntriesList = uiTruststoreService.getCertificateROEntriesList();
         // clear encoded value to reduce http traffic
-        truststoreEntriesList.stream().forEach(certificateRO -> {
+        truststoreEntriesList.forEach(certificateRO -> {
             certificateRO.setEncodedValue(null);
             certificateRO.setStatus(EntityROStatus.PERSISTED.getStatusNumber());
         });
@@ -75,7 +76,7 @@ public class TruststoreAdminController {
 
     @PostMapping(value = "/{user-id}/upload-certificate", consumes = MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userId) and @smpAuthorizationService.isSystemAdministrator")
-    public CertificateRO uploadCertificate(@PathVariable("user-id") String userId,
+    public CertificateRO uploadCertificate(@PathVariable(PATH_PARAM_ENC_USER_ID) String userId,
                                            @RequestBody byte[] fileBytes) {
         LOG.info("Got certificate cert size: {}", fileBytes.length);
 
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/UserAdminController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/UserAdminController.java
index f199bb66f45bde49f19fed19bd5d71fb54b96eeb..eead0c772db16ce42a9f9351581b95053269c101 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/UserAdminController.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/internal/UserAdminController.java
@@ -78,10 +78,10 @@ public class UserAdminController {
         return uiUserService.getTableList(page, pageSize, orderBy, orderType, filter);
     }
 
-    @GetMapping(path = "/{user-enc-id}/search", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+    @GetMapping(path = "/{user-id}/search", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) and @smpAuthorizationService.isSystemAdministrator")
     public ServiceResult<SearchUserRO> searchUsers(
-            @PathVariable("user-enc-id") String userEncId,
+            @PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
             @RequestParam(value = PARAM_PAGINATION_PAGE, defaultValue = "0") int page,
             @RequestParam(value = PARAM_PAGINATION_PAGE_SIZE, defaultValue = "10") int pageSize,
             @RequestParam(value = PARAM_PAGINATION_FILTER, defaultValue = "", required = false) String filter) {
@@ -90,18 +90,18 @@ public class UserAdminController {
         return uiUserService.searchUsers(page, pageSize,  filter);
     }
 
-    @GetMapping(path = "/{user-enc-id}/{managed-user-enc-id}/retrieve", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+    @GetMapping(path = "/{user-id}/{managed-user-id}/retrieve", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) and @smpAuthorizationService.isSystemAdministrator")
-    public UserRO getUserData(@PathVariable("user-enc-id") String userEncId,
-                              @PathVariable("managed-user-enc-id") String managedUserEncId) {
+    public UserRO getUserData(@PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
+                              @PathVariable("managed-user-id") String managedUserEncId) {
         Long managedUserId = decryptEntityId(managedUserEncId);
         return uiUserService.getUserById(managedUserId);
     }
 
-    @PostMapping(path = "/{user-enc-id}/{managed-user-enc-id}/update",  produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+    @PostMapping(path = "/{user-id}/{managed-user-id}/update",  produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) and @smpAuthorizationService.isSystemAdministrator")
-    public UserRO updateUser(@PathVariable("user-enc-id") String userEncId,
-                           @PathVariable("managed-user-enc-id") String managedUserEncId,
+    public UserRO updateUser(@PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
+                           @PathVariable("managed-user-id") String managedUserEncId,
                             @RequestBody UserRO user) {
 
         Long userId = decryptEntityId(userEncId);
@@ -116,10 +116,10 @@ public class UserAdminController {
     }
 
 
-    @DeleteMapping(path = "/{user-enc-id}/{managed-user-enc-id}/delete",  produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+    @DeleteMapping(path = "/{user-id}/{managed-user-id}/delete",  produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) and @smpAuthorizationService.isSystemAdministrator")
-    public UserRO deleteUser(@PathVariable("user-enc-id") String userEncId,
-                           @PathVariable("managed-user-enc-id") String managedUserEncId) {
+    public UserRO deleteUser(@PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
+                           @PathVariable("managed-user-id") String managedUserEncId) {
 
         Long userId = decryptEntityId(userEncId);
         Long managedUserId = decryptEntityId(managedUserEncId);
@@ -130,13 +130,13 @@ public class UserAdminController {
         return authorizationService.sanitize(deleted);
     }
 
-    @PutMapping(path = "/{user-enc-id}/create",  produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+    @PutMapping(path = "/{user-id}/create",  produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) and @smpAuthorizationService.isSystemAdministrator")
-    public UserRO createUser(@PathVariable("user-enc-id") String userEncId,
+    public UserRO createUser(@PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
                              @RequestBody UserRO user) {
 
         Long userId = decryptEntityId(userEncId);
-        LOG.info("createUserData adminId: [{}], managedUserId: [{}]", userId);
+        LOG.info("createUserData adminId: [{}], managedUser: [{}]", userId, user);
         // Update the user and mark the password as changed at this very instant of time
         return uiUserService.adminCreateUserData(user);
     }
@@ -158,7 +158,7 @@ public class UserAdminController {
 
     @PutMapping(path = "/{user-id}/change-password-for/{update-user-id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @Secured({SMPAuthority.S_AUTHORITY_TOKEN_SYSTEM_ADMIN})
-    public UserRO changePassword(@PathVariable("user-id") String userId,
+    public UserRO changePassword(@PathVariable(PATH_PARAM_ENC_USER_ID) String userId,
                                  @PathVariable("update-user-id") String regenerateForUserId,
                                  @RequestBody PasswordChangeRO newPassword) {
         Long authorizedUserId = decryptEntityId(userId);
diff --git a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/internal/UserAdminControllerIT.java b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/internal/UserAdminControllerIT.java
index a897297a82b7ae14574e6936d0ecd289464c5a2b..bf582b06a3d2d0f2ea14c3021e407c602fe18ea2 100644
--- a/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/internal/UserAdminControllerIT.java
+++ b/smp-webapp/src/test/java/eu/europa/ec/edelivery/smp/ui/internal/UserAdminControllerIT.java
@@ -37,7 +37,7 @@ import java.util.UUID;
 
 import static eu.europa.ec.edelivery.smp.test.testutils.MockMvcUtils.*;
 import static eu.europa.ec.edelivery.smp.ui.ResourceConstants.PARAM_PAGINATION_FILTER;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@@ -74,7 +74,7 @@ public class UserAdminControllerIT extends AbstractControllerTest {
     public void testSearch() throws Exception {
         MockHttpSession session = loginWithSystemAdmin(mvc);
         UserRO userROAdmin = getLoggedUserData(mvc, session);
-        MvcResult result = mvc.perform(get(PATH_INTERNAL + "/{user-enc-id}/search", userROAdmin.getUserId())
+        MvcResult result = mvc.perform(get(PATH_INTERNAL + "/{user-id}/search", userROAdmin.getUserId())
                         .session(session)
                         .with(csrf()))
                 .andExpect(status().isOk()).andReturn();
@@ -93,7 +93,7 @@ public class UserAdminControllerIT extends AbstractControllerTest {
     public void testSearchFilterNoMatch() throws Exception {
         MockHttpSession session = loginWithSystemAdmin(mvc);
         UserRO userROAdmin = getLoggedUserData(mvc, session);
-        MvcResult result = mvc.perform(get(PATH_INTERNAL + "/{user-enc-id}/search", userROAdmin.getUserId())
+        MvcResult result = mvc.perform(get(PATH_INTERNAL + "/{user-id}/search", userROAdmin.getUserId())
                         .session(session)
                         .param(PARAM_PAGINATION_FILTER, "no-user-matches-this-filter")
                         .with(csrf()))