diff --git a/domiSMP-ui-tests/pom.xml b/domiSMP-ui-tests/pom.xml
index d081525ca9bd256d90356dd8d37e41a92b146449..250a248d34094f35680d5ebb67245a973f018b17 100644
--- a/domiSMP-ui-tests/pom.xml
+++ b/domiSMP-ui-tests/pom.xml
@@ -19,6 +19,10 @@
         <json_version>20230227</json_version>
         <jackson_version>2.15.0-rc3</jackson_version>
         <javax.ws.rs-api_version>2.1.1</javax.ws.rs-api_version>
+        <javax.ws.rs-api_version>2.1.1</javax.ws.rs-api_version>
+        <xmlunit_version>1.6</xmlunit_version>
+        <maven-surefire-plugin_version>3.0.0-M7</maven-surefire-plugin_version>
+
     </properties>
 
     <build>
@@ -210,10 +214,23 @@
             <artifactId>commons-io</artifactId>
             <version>2.11.0</version>
         </dependency>
+        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.32</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/xmlunit/xmlunit -->
+        <dependency>
+            <groupId>xmlunit</groupId>
+            <artifactId>xmlunit</artifactId>
+            <version>${xmlunit_version}</version>
+        </dependency>
+
         <dependency>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-surefire-plugin</artifactId>
-            <version>3.0.0-M7</version>
+            <version>${maven-surefire-plugin_version}</version>
         </dependency>
 
     </dependencies>
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/DomiSMPPage.java b/domiSMP-ui-tests/src/main/java/ddsl/DomiSMPPage.java
index 4f4066fae100e708fa8fc4f2d6ed5b8528ce9bbe..ecabeb5ebe0e2a7b0a7235227a3854b594caa30a 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/DomiSMPPage.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/DomiSMPPage.java
@@ -52,10 +52,10 @@ public class DomiSMPPage extends DComponent {
         return new LoginPage(driver);
     }
 
-    public LoginPage logout() {
+    public void logout() {
         rightMenuBtn.click();
         logoutMenuBtn.click();
-        return new LoginPage(driver);
+
     }
 
     public void refreshPage() {
@@ -74,7 +74,6 @@ public class DomiSMPPage extends DComponent {
     public boolean isExpiredDialoginbuttonEnabled() {
         try {
             return dialogOKbutton.isEnabled();
-
         } catch (Exception e) {
             LOG.info("Expiration poup not found", e);
             return false;
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/PageWithGrid.java b/domiSMP-ui-tests/src/main/java/ddsl/PageWithGrid.java
index 1bd9fbff348a602fcc3e135722a7713027da7f2c..a4f5dad87f4073f24d6b581cd44342f2392992ab 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/PageWithGrid.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/PageWithGrid.java
@@ -14,6 +14,11 @@ import java.util.List;
 
 public class PageWithGrid extends DomiSMPPage {
     private final static Logger LOG = LoggerFactory.getLogger(PageWithGrid.class);
+
+    /**
+     * Generic page used for pages which have small grid in the right of the page. This element gives access to action buttons and elements of the page.
+     */
+
     @FindBy(css = "mat-form-field input")
     public WebElement filterInput;
     @FindBy(css = "data-panel >div >div> mat-toolbar button:first-of-type")
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/AlertComponent.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/AlertComponent.java
index fc48aeb2afc15d01c30137175d303bda1e51ae9f..11c4c7ad9dd5492781bcc565266135cb4e8e66ab 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/AlertComponent.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/AlertComponent.java
@@ -9,6 +9,10 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class AlertComponent extends DComponent {
+
+    /**
+     * This component is used to retrive the alerts which appear in application
+     */
     private final static Logger LOG = LoggerFactory.getLogger(AlertComponent.class);
 
     @FindBy(id = "alertmessage_id")
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/BreadcrumpComponent.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/BreadcrumpComponent.java
index 05548625844704352ae2dec9b475168714b9aa7b..815d302e1e036c5215785fd10046628b7b3b30d9 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/BreadcrumpComponent.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/BreadcrumpComponent.java
@@ -9,6 +9,9 @@ import org.openqa.selenium.support.FindBy;
 import java.util.List;
 
 public class BreadcrumpComponent extends DomiSMPPage {
+    /**
+     * Component for the Breadcrump of DomiSMP
+     */
 
     @FindBy(xpath = "//smp-breadcrumb/div/smp-breadcrumb-item/a/div[3]/span")
     public List<WebElement> BreadcrumpItems;
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/ConfirmationDialog.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/ConfirmationDialog.java
index 7104941694dfc4e8b597b79ec0bf46b921e824dd..34632c53ecc34cbd70e879c293e1882b1e9cee8b 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/ConfirmationDialog.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/ConfirmationDialog.java
@@ -9,6 +9,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class ConfirmationDialog extends DComponent {
+    /**
+     * Page component for conformation popups/dialogs for different actions
+     */
     private final static Logger LOG = LoggerFactory.getLogger(ConfirmationDialog.class);
 
     @FindBy(id = "yesbuttondialog_id")
@@ -26,7 +29,7 @@ public class ConfirmationDialog extends DComponent {
         LOG.info("dialog .. confirm");
         wait.forElementToBeClickable(yesBtn);
         yesBtn.click();
-        wait.forElementToBeClickable(yesBtn);
+        wait.forElementToBeGone(yesBtn);
     }
 
     public void cancel() {
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/DComponent.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/DComponent.java
index 2341b8c984625598549c4b688cf5e89a0dd0d4a2..ff8d285f889f371e6009a34be5541618e8c1d8b5 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/DComponent.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/DComponent.java
@@ -9,8 +9,9 @@ import org.openqa.selenium.WebElement;
 import utils.TestRunData;
 
 public class DComponent {
+
     /**
-     * Generic component for webelement.
+     * Generic component which which gives access of driver, wait and wrappers of elements. This should be inhered by each component class.
      */
 
     public DWait wait;
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SetChangePasswordDialog.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SetChangePasswordDialog.java
index ca700f5e886ea52bb99558b8bf494b5cfc2daf7b..c886b09be0e49e8c2a73fe8ab8518a4507a5dc91 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SetChangePasswordDialog.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SetChangePasswordDialog.java
@@ -50,7 +50,7 @@ public class SetChangePasswordDialog extends DComponent {
 
     public List<String> getFieldErrorMessage() {
         ArrayList<String> fieldErrors = new ArrayList<>();
-        if (fieldsError.size() > 0) {
+        if (!fieldsError.isEmpty()) {
             fieldsError.forEach(error -> {
                 fieldErrors.add(error.getText());
             });
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SideNavigationComponent.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SideNavigationComponent.java
index aa9ca5eff99d0788a0d366394746ec8716dc3669..20e217372fb3981ac8fa41a470c8c56b7865dac7 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SideNavigationComponent.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SideNavigationComponent.java
@@ -10,9 +10,9 @@ import org.openqa.selenium.support.PageFactory;
 import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import pages.DomainsPage.DomainsPage;
 import pages.TruststorePage;
 import pages.UsersPage;
-import pages.domainsPage.DomainsPage;
 import pages.editDomainsPage.EditDomainsPage;
 import pages.profilePage.ProfilePage;
 import pages.propertiesPage.PropertiesPage;
@@ -20,6 +20,10 @@ import pages.propertiesPage.PropertiesPage;
 import java.util.Objects;
 
 public class SideNavigationComponent extends DomiSMPPage {
+
+    /**
+     * Navigation object to navigate through application.
+     */
     private final static Logger LOG = LoggerFactory.getLogger(SideNavigationComponent.class);
 
     @FindBy(id = "window-sidenav-panel")
@@ -212,7 +216,7 @@ public class SideNavigationComponent extends DomiSMPPage {
 //        }
 //    }
 
-    public class MenuNavigation {
+    public static class MenuNavigation {
         WebElement menuLink;
         WebElement submenuLink;
 
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DButton.java b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DButton.java
index f300040235fdd42af481dc4705e63426ea955f66..fb17c359393790bd64369f6dec8e35993e5a3d74 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DButton.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DButton.java
@@ -5,9 +5,13 @@ import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 
 public class DButton extends DObject {
+    /**
+     * Generic wrapper for button element.
+     */
     public DButton(WebDriver driver, WebElement element) {
         super(driver, element);
     }
+
     @Override
     public String getText() {
         return element.findElement(By.cssSelector("span > span")).getText().trim();
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DInput.java b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DInput.java
index ab600b12eb040ded023dcc1adb385186a64741cc..12558c60b61c04c86236fd42dddb9394d40860fb 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DInput.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DInput.java
@@ -5,6 +5,9 @@ import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 
 public class DInput extends DObject {
+    /**
+     * Generic wrapper for input element.
+     */
     public DInput(WebDriver driver, WebElement element) {
         super(driver, element);
     }
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DLink.java b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DLink.java
index 05abd0bfc5ee292a876abe1a0e6a715919f40e62..9563dbc21dca90f0c3762f2c6b2bb4cb2880a84e 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DLink.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DLink.java
@@ -4,8 +4,9 @@ import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 
 public class DLink extends DObject {
-
-
+    /**
+     * Generic wrapper for link element.
+     */
     public DLink(WebDriver driver, WebElement element) {
         super(driver, element);
     }
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DObject.java b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DObject.java
index 6dd0d28ac6e955ad54d9e04cc60c74a17b7c4908..8839146c0e678fc336c1d08ef79902ec332cb1f3 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DObject.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DObject.java
@@ -7,6 +7,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class DObject {
+    /**
+     * Generic element object used to have access to element actions.
+     */
     protected final Logger log = LoggerFactory.getLogger(this.getClass());
     public WebElement element;
     protected WebDriver driver;
@@ -73,7 +76,7 @@ public class DObject {
         }
     }
 
-    public String getAttribute(String attributeName) throws Exception {
+    public String getAttribute(String attributeName) {
         if (isPresent()) {
             String attr = element.getAttribute(attributeName);
             if (attr == null) {
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DSelect.java b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DSelect.java
index d2473ef3dd7962da763ebae5ff6e5333eb200650..888bd256b5e9833cf444fb9bfbee1a285437e580 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DSelect.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DSelect.java
@@ -6,7 +6,9 @@ import org.openqa.selenium.support.ui.Select;
 
 
 public class DSelect extends DObject {
-
+    /**
+     * Generic wrapper for select element.
+     */
     Select select = new Select(element);
 
     public DSelect(WebDriver driver, WebElement element) {
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DWait.java b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DWait.java
index fb0dd534acecf21e91dc836ad1cb4a06db3e3e72..68cc7960407eb3789071cd310f5fc78b2eb16599 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DWait.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DWait.java
@@ -11,6 +11,11 @@ import utils.TestRunData;
 import java.time.Duration;
 
 public class DWait {
+    /**
+     * Wait class util used to have access to different types of waits.
+     */
+
+    private final static Logger LOG = LoggerFactory.getLogger(DWait.class);
 
     /**
      * Wait class which gives access to different types of waits.
@@ -83,7 +88,7 @@ public class DWait {
             }
 
         } catch (NoSuchElementException e) {
-
+            LOG.error("element {} not found", element);
         }
     }
 
@@ -106,12 +111,7 @@ public class DWait {
 
     public void forElementToBe(WebElement element) {
 
-        defaultWait.until(new ExpectedCondition<Boolean>() {
-            @Override
-            public Boolean apply(WebDriver driver) {
-                return element.getLocation() != null;
-            }
-        });
+        defaultWait.until((ExpectedCondition<Boolean>) driver -> element.getLocation() != null);
 
     }
 
@@ -120,12 +120,7 @@ public class DWait {
     }
 
     public void forAttributeToNOTContain(WebElement element, String attributeName, String value) {
-        defaultWait.until(new ExpectedCondition<Boolean>() {
-            @Override
-            public Boolean apply(WebDriver driver) {
-                return !element.getAttribute(attributeName).contains(value);
-            }
-        });
+        defaultWait.until((ExpectedCondition<Boolean>) driver -> !element.getAttribute(attributeName).contains(value));
     }
 
     public void forAttributeToContain(WebElement element, String attributeName, String value, boolean waitLonger) {
@@ -138,12 +133,7 @@ public class DWait {
     }
 
     public void forElementToHaveText(WebElement element) {
-        defaultWait.until(new ExpectedCondition<Boolean>() {
-            @Override
-            public Boolean apply(WebDriver driver) {
-                return !element.getText().trim().isEmpty();
-            }
-        });
+        defaultWait.until((ExpectedCondition<Boolean>) driver -> !element.getText().trim().isEmpty());
     }
 
     public void forElementToContainText(WebElement element, String text) {
diff --git a/domiSMP-ui-tests/src/main/java/pages/domainsPage/DomainTab.java b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainTab.java
similarity index 98%
rename from domiSMP-ui-tests/src/main/java/pages/domainsPage/DomainTab.java
rename to domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainTab.java
index 51239e6f9ff39b0eb979d2bb4a30b78e71e1cd67..119d490642e1949e0e46c6d389679d0165d07871 100644
--- a/domiSMP-ui-tests/src/main/java/pages/domainsPage/DomainTab.java
+++ b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainTab.java
@@ -1,4 +1,4 @@
-package pages.domainsPage;
+package pages.DomainsPage;
 
 import ddsl.dcomponents.DComponent;
 import org.openqa.selenium.WebDriver;
@@ -61,4 +61,4 @@ public class DomainTab extends DComponent {
     }
 
 
-}
+}
\ No newline at end of file
diff --git a/domiSMP-ui-tests/src/main/java/pages/domainsPage/DomainsPage.java b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainsPage.java
similarity index 97%
rename from domiSMP-ui-tests/src/main/java/pages/domainsPage/DomainsPage.java
rename to domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainsPage.java
index 0b332b40bd448f64fcc8ae2bfc3a35cda4d33964..542358520a99f4da879942b317b7444561e54362 100644
--- a/domiSMP-ui-tests/src/main/java/pages/domainsPage/DomainsPage.java
+++ b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainsPage.java
@@ -1,4 +1,4 @@
-package pages.domainsPage;
+package pages.DomainsPage;
 
 import ddsl.PageWithGrid;
 import ddsl.dobjects.DButton;
diff --git a/domiSMP-ui-tests/src/main/java/pages/domainsPage/MembersTab.java b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/MembersTab.java
similarity index 94%
rename from domiSMP-ui-tests/src/main/java/pages/domainsPage/MembersTab.java
rename to domiSMP-ui-tests/src/main/java/pages/DomainsPage/MembersTab.java
index 3bde7dd8fb6db95503fa603a122c5de2f3fcd122..8b2bd56518aa133d25f138bf95705dd6471191c3 100644
--- a/domiSMP-ui-tests/src/main/java/pages/domainsPage/MembersTab.java
+++ b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/MembersTab.java
@@ -1,4 +1,4 @@
-package pages.domainsPage;
+package pages.DomainsPage;
 
 import ddsl.dcomponents.commonComponents.members.MembersComponent;
 import org.openqa.selenium.WebDriver;
diff --git a/domiSMP-ui-tests/src/main/java/pages/domainsPage/ResourceTab.java b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/ResourceTab.java
similarity index 98%
rename from domiSMP-ui-tests/src/main/java/pages/domainsPage/ResourceTab.java
rename to domiSMP-ui-tests/src/main/java/pages/DomainsPage/ResourceTab.java
index 7efcf6922c2710b1ea05a465dd779fae938a42e3..891b637331fa88c1223374e6fa9eab9911f8cf91 100644
--- a/domiSMP-ui-tests/src/main/java/pages/domainsPage/ResourceTab.java
+++ b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/ResourceTab.java
@@ -1,4 +1,4 @@
-package pages.domainsPage;
+package pages.DomainsPage;
 
 import ddsl.dcomponents.DComponent;
 import org.openqa.selenium.WebDriver;
@@ -12,6 +12,7 @@ import org.slf4j.LoggerFactory;
 import java.util.List;
 
 public class ResourceTab extends DComponent {
+
     /**
      * Page object for the Resource tab of Domains page. This contains the locators of the page and the methods for the behaviour of the page
      */
diff --git a/domiSMP-ui-tests/src/main/java/pages/domainsPage/SMLIntegrationTab.java b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/SMLIntegrationTab.java
similarity index 99%
rename from domiSMP-ui-tests/src/main/java/pages/domainsPage/SMLIntegrationTab.java
rename to domiSMP-ui-tests/src/main/java/pages/DomainsPage/SMLIntegrationTab.java
index ef1d8272e66bc2eb2c41de6272a9614d7acf36a3..e40600c0947d257353ed057d1cfedf2c2500da1c 100644
--- a/domiSMP-ui-tests/src/main/java/pages/domainsPage/SMLIntegrationTab.java
+++ b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/SMLIntegrationTab.java
@@ -1,4 +1,4 @@
-package pages.domainsPage;
+package pages.DomainsPage;
 
 import ddsl.dcomponents.ConfirmationDialog;
 import ddsl.dcomponents.DComponent;
@@ -83,4 +83,4 @@ public class SMLIntegrationTab extends DComponent {
 
     }
 
-}
+}
\ No newline at end of file
diff --git a/domiSMP-ui-tests/src/main/java/pages/profilePage/SuccesfullPasswordChangedPopup.java b/domiSMP-ui-tests/src/main/java/pages/profilePage/SuccesfullPasswordChangedPopup.java
index f84bf27d2cd804d044e3d5d3e00f800df1769b4e..0d88b9571012caf158074cf7b87826a43f4ddbf4 100644
--- a/domiSMP-ui-tests/src/main/java/pages/profilePage/SuccesfullPasswordChangedPopup.java
+++ b/domiSMP-ui-tests/src/main/java/pages/profilePage/SuccesfullPasswordChangedPopup.java
@@ -7,6 +7,10 @@ import org.openqa.selenium.support.FindBy;
 import org.openqa.selenium.support.PageFactory;
 
 public class SuccesfullPasswordChangedPopup extends DComponent {
+
+    /**
+     * This class is used to map the succesfull password changed dialog.
+     */
     @FindBy(css = "#mat-mdc-dialog-2 > div > div > app-information-dialog > div > div.panel")
     private WebElement message;
     @FindBy(id = "closebuttondialog_id")
diff --git a/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropGrid.java b/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropGrid.java
index 77f42bb798d6ef68eca3aa767bb3abc3d1fa432a..176ad1c4524bb0946b95e229dcaff2d8a2b6f559 100644
--- a/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropGrid.java
+++ b/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropGrid.java
@@ -6,6 +6,10 @@ import org.openqa.selenium.WebElement;
 
 public class PropGrid extends BasicGrid {
 
+    /**
+     * This class is used to map Property grid component.
+     */
+
     public PropGrid(WebDriver driver, WebElement container) {
         super(driver, container);
     }
diff --git a/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropertyPopup.java b/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropertyPopup.java
index d2db9b1877e8f401e733aaf4d81b99c26f61713b..4e830cab48a610b7c1b3ceb2619f1a17944f6924 100644
--- a/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropertyPopup.java
+++ b/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropertyPopup.java
@@ -66,9 +66,9 @@ public class PropertyPopup extends DComponent {
     }
 
     public PropertiesPage enableCheckboxOfProperty() {
-        Boolean bool = propertyCheckbox.isSelected();
+        boolean bool = propertyCheckbox.isSelected();
 
-        if (bool == false) {
+        if (!bool) {
             propertyCheckbox.click();
             popupOkBtn.click();
         } else {
@@ -78,14 +78,14 @@ public class PropertyPopup extends DComponent {
     }
 
     public PropertiesPage disableCheckboxOfProperty() {
-        Boolean bool = propertyCheckbox.isSelected();
-        if (bool == true) {
+        boolean bool = propertyCheckbox.isSelected();
+        if (bool) {
             JavascriptExecutor executor = (JavascriptExecutor) driver;
             executor.executeScript("arguments[0].click();", propertyCheckbox);
             try {
                 Thread.sleep(1000);
             } catch (Exception e) {
-                e.printStackTrace();
+                LOG.error(String.valueOf(e));
             }
             popupOkBtn.click();
         } else {
diff --git a/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java b/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java
index e0af1820f656f5056d30f12768f301551f334ff1..a7545ad6c2c911ae688483ea0d00320e2f71206d 100644
--- a/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java
+++ b/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java
@@ -70,6 +70,7 @@ public class BaseRestClient {
 
         return builder.type(type).put(ClientResponse.class, body.toString());
     }
+
     protected ClientResponse jsonPUT(WebResource resource, JSONObject body) {
         return requestPUT(resource, body, MediaType.APPLICATION_JSON);
     }
@@ -101,6 +102,7 @@ public class BaseRestClient {
 
         return builder;
     }
+
     public List<NewCookie> login() throws SMPRestException {
         log.debug("Rest client using to login: " + this.username);
         HashMap<String, String> params = new HashMap<>();
@@ -121,6 +123,7 @@ public class BaseRestClient {
         throw new SMPRestException("Login failed", response);
 
     }
+
     private String extractToken() {
         String mytoken = null;
         for (NewCookie cookie : cookies) {
@@ -130,6 +133,7 @@ public class BaseRestClient {
         }
         return mytoken;
     }
+
     public void refreshCookies() throws Exception {
         if (isLoggedIn()) {
             return;
@@ -145,6 +149,7 @@ public class BaseRestClient {
             throw new Exception("Could not obtain XSRF token, tests will not be able to generate necessary data!");
         }
     }
+
     public boolean isLoggedIn() {
         WebResource.Builder builder = decorateBuilder(resource.path(RestServicePaths.CONNECTED));
         int response = builder.get(ClientResponse.class).getStatus();
diff --git a/domiSMP-ui-tests/src/main/java/rest/DomainClient.java b/domiSMP-ui-tests/src/main/java/rest/DomainClient.java
index cd7d7f11a662b438bde36525a0f9246a1dba7fad..a0921d740b9afd5f10ed617cc98cd2f11af5dcae 100644
--- a/domiSMP-ui-tests/src/main/java/rest/DomainClient.java
+++ b/domiSMP-ui-tests/src/main/java/rest/DomainClient.java
@@ -6,6 +6,9 @@ import rest.models.DomainModel;
 
 public class DomainClient extends BaseRestClient {
 
+    /**
+     * Rest client for domain actions
+     */
     public DomainClient() {
         super();
     }
diff --git a/domiSMP-ui-tests/src/main/java/rest/RestServicePaths.java b/domiSMP-ui-tests/src/main/java/rest/RestServicePaths.java
index e48497bb29d41163059d820b2703a467c6e4a49c..b5890b5da26376750796bcd7ec3bd8777a209a41 100644
--- a/domiSMP-ui-tests/src/main/java/rest/RestServicePaths.java
+++ b/domiSMP-ui-tests/src/main/java/rest/RestServicePaths.java
@@ -1,12 +1,11 @@
 package rest;
 
 public class RestServicePaths {
-    private RestServicePaths() {
-    }
-
     public static final String LOGIN = "/public/rest/security/authentication";
     public static final String CONNECTED = "/public/rest/security/user";
 
+    private RestServicePaths() {
+    }
 
     public static String getUsersPath(String currentUserId) {
 
diff --git a/domiSMP-ui-tests/src/main/java/rest/UserClient.java b/domiSMP-ui-tests/src/main/java/rest/UserClient.java
index 7dcd9a7896865ec5fb713a8b4871cb779d496a29..1470289b560ebb3fcef30fb28e3dcd07fe28729d 100644
--- a/domiSMP-ui-tests/src/main/java/rest/UserClient.java
+++ b/domiSMP-ui-tests/src/main/java/rest/UserClient.java
@@ -6,6 +6,11 @@ import rest.models.UserModel;
 
 public class UserClient extends BaseRestClient {
 
+
+    /**
+     * Rest client for user actions
+     */
+
     public UserClient(String username, String password) {
         super(username, password);
     }
diff --git a/domiSMP-ui-tests/src/main/java/utils/DriverManager.java b/domiSMP-ui-tests/src/main/java/utils/DriverManager.java
index ef65b5ddbcea8ec6093c6b240268ce1b939de577..c603446736432b6525d07b71d6469a3848a24022 100644
--- a/domiSMP-ui-tests/src/main/java/utils/DriverManager.java
+++ b/domiSMP-ui-tests/src/main/java/utils/DriverManager.java
@@ -15,7 +15,6 @@ public class DriverManager {
     static TestRunData data = new TestRunData();
 
 
-
     public static WebDriver getDriver() {
 
         WebDriver driver;
diff --git a/domiSMP-ui-tests/src/main/java/utils/TestRunData.java b/domiSMP-ui-tests/src/main/java/utils/TestRunData.java
index 73ce082d383eb7d791a39e4f08fe33398e356681..8e814606fd2096f76a3fd01d05bb8f2cbda8c7ba 100644
--- a/domiSMP-ui-tests/src/main/java/utils/TestRunData.java
+++ b/domiSMP-ui-tests/src/main/java/utils/TestRunData.java
@@ -18,9 +18,9 @@ public class TestRunData {
     public static SimpleDateFormat CSV_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
     public static SimpleDateFormat REST_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
     public static SimpleDateFormat REST_JMS_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
-    public String userId;
     static Properties prop = new Properties();
     protected final Logger log = LoggerFactory.getLogger(this.getClass());
+    public String userId;
 
     public TestRunData() {
         if (prop.isEmpty()) {
diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/SeleniumTest.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/SeleniumTest.java
index f952f7321d7f646a3f845d4f3efd4779acba4770..c8c01d25e102b4db2d5f077ca07b94518f55430a 100644
--- a/domiSMP-ui-tests/src/test/java/domiSMPTests/SeleniumTest.java
+++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/SeleniumTest.java
@@ -18,11 +18,10 @@ public class SeleniumTest {
      * This class is extending all the test classes to have access to the Base tests methods.
      */
     protected static final Logger LOG = LoggerFactory.getLogger(SeleniumTest.class);
-    static int methodCount = 1;
-    public String logFilename;
-
     public static TestRunData data = new TestRunData();
     public static DomiSMPRestClient rest = new DomiSMPRestClient();
+    static int methodCount = 1;
+    public String logFilename;
     public WebDriver driver;
 
 
diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java
index 2676b917251267650f4d38480b3a62a41ab383ef..2428d69f0029834d6a88ac54ae48378167553272 100644
--- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java
+++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java
@@ -6,9 +6,9 @@ import domiSMPTests.SeleniumTest;
 import org.openqa.selenium.WebElement;
 import org.testng.Assert;
 import org.testng.annotations.Test;
+import pages.DomainsPage.DomainsPage;
 import pages.LoginPage;
 import pages.SmlPage;
-import pages.domainsPage.DomainsPage;
 import pages.editDomainsPage.EditDomainsPage;
 import rest.models.DomainModel;
 import rest.models.UserModel;
@@ -148,4 +148,4 @@ public class DomainsPgTests extends SeleniumTest {
 
     }
 
-}
+}
\ No newline at end of file
diff --git a/smp-angular/src/app/app.module.ts b/smp-angular/src/app/app.module.ts
index bf46efcb2aac7688d5e1672ed16356d28b9063d5..0cbb4aa4d767ee8d2fd7e66591d1b99ffbc9c4d1 100644
--- a/smp-angular/src/app/app.module.ts
+++ b/smp-angular/src/app/app.module.ts
@@ -90,11 +90,6 @@ import {SaveDialogComponent} from './common/dialogs/save-dialog/save-dialog.comp
 import {SearchTableComponent} from './common/search-table/search-table.component';
 import {SecurityEventService} from './security/security-event.service';
 import {SecurityService} from './security/security.service';
-import {ServiceGroupDetailsDialogComponent} from './service-group-edit/service-group-details-dialog/service-group-details-dialog.component';
-import {ServiceGroupEditComponent} from './service-group-edit/service-group-edit.component';
-import {ServiceGroupExtensionWizardDialogComponent} from './service-group-edit/service-group-extension-wizard-dialog/service-group-extension-wizard-dialog.component';
-import {ServiceGroupMetadataDialogComponent} from './service-group-edit/service-group-metadata-dialog/service-group-metadata-dialog.component';
-import {ServiceGroupSearchComponent} from './service-group-search/service-group-search.component';
 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";
@@ -144,6 +139,7 @@ import {SmpWarningPanelComponent} from "./common/components/smp-warning-panel/sm
 import {ManageMembersDialogComponent} from "./common/dialogs/manage-members-dialog/manage-members-dialog.component";
 import {HttpErrorHandlerService} from "./common/error/http-error-handler.service";
 import {SmpTitledLabelComponent} from "./common/components/smp-titled-label/smp-titled-label.component";
+import {ServiceGroupSearchComponent} from "./service-group-search/service-group-search.component";
 
 
 @NgModule({
@@ -209,10 +205,6 @@ import {SmpTitledLabelComponent} from "./common/components/smp-titled-label/smp-
     RowLimiterComponent,
     SaveDialogComponent,
     SearchTableComponent,
-    ServiceGroupDetailsDialogComponent,
-    ServiceGroupEditComponent,
-    ServiceGroupExtensionWizardDialogComponent,
-    ServiceGroupMetadataDialogComponent,
     ServiceGroupSearchComponent,
     ServiceMetadataWizardDialogComponent,
     SidenavComponent,
diff --git a/smp-angular/src/app/common/panels/certificate-panel/certificate-panel.component.html b/smp-angular/src/app/common/panels/certificate-panel/certificate-panel.component.html
index 1504ec77f1f1ba906e7c2d02e3cc5a6169c95960..1cdaf67052026326d5d209300eb63f7977b791d8 100644
--- a/smp-angular/src/app/common/panels/certificate-panel/certificate-panel.component.html
+++ b/smp-angular/src/app/common/panels/certificate-panel/certificate-panel.component.html
@@ -1,11 +1,5 @@
 <div id="certificate-panel" class="mat-elevation-z2">
   <h3>Selected certificate data</h3>
-  <mat-form-field *ngIf="certificate?.invalidReason">
-    <mat-label>Error message</mat-label>
-    <input matInput placeholder="Error message"
-           [value]="certificate?.invalidReason"
-           readonly>
-  </mat-form-field>
   <div style="display: flex;flex-direction: row;flex:1 1">
     <mat-form-field *ngIf="!!this.certificate?.publicKeyType"  style="flex:1 1">
       <mat-label>Public key type</mat-label>
diff --git a/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.css b/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.css
deleted file mode 100644
index 1a69b5329bf2fd8b2df0cf327071add33a334668..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.css
+++ /dev/null
@@ -1,26 +0,0 @@
-.flex-dialog-content{
-  display: flex; justify-content: space-around;
-  flex-flow: row;
-  align-items: stretch;height:510px;min-width:950px
-}
-
-#extensionTextArea {
-  display: block;
-  margin: 0 auto;
-  border: #03A9F4 1px solid;
-  flex-grow: 1;
-}
-
-::ng-deep .domainWarning {
-  text-decoration: line-through !important;
-  font-weight: bold;
-  color:#c6c639;
-}
-
-
-.list-form-item  .mat-form-field-wrapper {
-  margin-bottom: -1.25em;
-  padding: 0;
-  margin: 0;
-}
-
diff --git a/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.html b/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.html
deleted file mode 100644
index 5c221737894569dac450f58cc3389315a147018b..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<h2 mat-dialog-title>{{formTitle}}</h2>
-<spinner [show]="showSpinner" [size]="150"></spinner>
-<mat-dialog-content [class]="'flex-dialog-content'">
-
-  <div fxLayout="column" style="flex-grow: 1;">
-    <mat-card>
-      <!-- mat-card-title>Identifier</mat-card-title -->
-      <mat-card-content>
-        <mat-form-field style="width:100%">
-          <input matInput placeholder="Participant identifier" name="participantIdentifier"
-                 id="participantIdentifier_id"
-                 [formControl]="dialogForm.controls['participantIdentifier']" maxlength="50" required>
-          <div
-            *ngIf="(!editMode && dialogForm.controls['participantIdentifier'].touched || editMode) &&  dialogForm.controls['participantIdentifier'].hasError('required')"
-            style="color:red; font-size: 70%">
-            Participant identifier must not be empty and must be up to 50 characters long.
-          </div>
-          <div
-            *ngIf="(!editMode &&  dialogForm.controls['participantIdentifier'].hasError('dbExist'))"
-            style="color:red; font-size: 70%">
-            Participant identifier for given scheme is already defined in database!
-          </div>
-        </mat-form-field>
-
-        <mat-form-field style="width:100%">
-           <input
-                 matInput placeholder="Participant scheme" name="participantScheme"
-                 id="participantScheme_id"
-                 [formControl]="dialogForm.controls['participantScheme']"
-                 maxlength="255">
-          <div
-            *ngIf="(!editMode && dialogForm.controls['participantScheme'].touched || editMode) &&  dialogForm.controls['participantScheme'].hasError('required')"
-            style="color:red; font-size: 70%">
-            Participant scheme must not be empty.
-          </div>
-          <div
-            *ngIf="(!editMode && dialogForm.controls['participantScheme'].touched || editMode) &&
-               dialogForm.controls['participantScheme'].hasError('pattern')"
-            style="color:red; font-size: 70%">
-            {{participantSchemeMessage}}
-          </div>
-        </mat-form-field>
-      </mat-card-content>
-    </mat-card>
-    <mat-card>
-      <mat-card-content>
-        <mat-accordion id="accordion_panel_id">
-          <mat-expansion-panel *ngIf="securityService.isCurrentUserSMPAdmin()" [expanded]="true"
-                               id="owner_expansion_panel_id">
-            <mat-expansion-panel-header id="owner_expansion_header_id">
-              <mat-panel-title>Owners*
-              </mat-panel-title>
-              <mat-panel-description id="owner_expansion_description_id">
-                <div>
-                  Selected user count: {{usersSelected.selectedOptions?.selected.length}}
-                  <div
-                    *ngIf="(!editMode && dialogForm.controls['users'].touched || editMode) &&  dialogForm.controls['users'].hasError('minSelectedListCount')"
-                    style="color:red; font-size: 70%">
-                    At least one user (owner) must be selected!
-                  </div>
-                </div>
-              </mat-panel-description>
-            </mat-expansion-panel-header>
-            <mat-selection-list #usersSelected
-                                [compareWith]="compareUserByUserId"
-                                [formControl]="dialogForm.controls['users']"
-                                style="min-height: 100px; height: 150px; overflow-y: scroll; overflow-x: auto;">
-              <!--                  // if username is null then there must be an cerificate id! -->
-              <mat-list-option *ngFor="let user of lookups.cachedServiceGroupOwnerList" [value]='user'
-                               style="max-width: 400px;max-width: 450px !important; word-wrap: break-word !important; height: auto; min-height: 30px !important;">
-                {{user.username ? user.username : user.certificate?.certificateId}}
-              </mat-list-option>
-            </mat-selection-list>
-          </mat-expansion-panel>
-
-          <mat-expansion-panel [expanded]="!securityService.isCurrentUserSMPAdmin()" id="domain_expansion_panel_id">
-            <mat-expansion-panel-header id="domain_expansion_header_id">
-              <mat-panel-title>Domains*</mat-panel-title>
-              <mat-panel-description id="domain_expansion_description_id">
-                <div>
-                  Selected domain count: {{domainSelector.selectedOptions?.selected.length}}
-                  <div
-                    *ngIf="(!editMode && dialogForm.controls['serviceGroupDomains'].touched || editMode)
-                      &&  dialogForm.controls['serviceGroupDomains'].hasError('minSelectedListCount')"
-                    style="color:red; font-size: 70%">
-                    At least one domain must be selected!
-                  </div>
-                  <div
-                    *ngIf="(!editMode && dialogForm.controls['serviceGroupDomains'].touched || editMode)
-                      &&  dialogForm.controls['serviceGroupDomains'].hasError('multiDomainError')"
-                    style="color:red; font-size: 70%">
-                    SMP is in participant single domain mode! Only one domain must be selected.
-                  </div>
-
-
-                </div>
-              </mat-panel-description>
-            </mat-expansion-panel-header>
-            <mat-selection-list #domainSelector
-                                [compareWith]="compareDomain"
-                                [formControl]="dialogForm.controls['serviceGroupDomains']"
-                                (selectionChange)="onDomainSelectionChanged($event)"
-                                style="min-height: 100px; height: 150px; overflow-y: scroll; overflow-x: auto;">
-              <mat-list-option *ngFor="let domain of lookups.cachedDomainList" [value]='domain'
-                               style="max-width: 400px;max-width: 450px !important; word-wrap: break-word !important; height: auto; min-height: 30px !important;"
-              >
-                <label>{{domain.domainCode}} ({{domain.smlSubdomain}})</label>
-              </mat-list-option>
-            </mat-selection-list>
-          </mat-expansion-panel>
-        </mat-accordion>
-      </mat-card-content>
-    </mat-card>
-  </div>
-
-  <mat-card >
-
-    <mat-card-title>Extension
-      <div style="font-size:50%">
-        Extension is automatically wrapped to root element to form valid XML! No ExtensionWrapper element is needed.
-      </div>
-    </mat-card-title>
-
-    <mat-card-content fxLayout="column" style="flex-grow: 1;display: flex;
-    align-items: stretch;">
-      <mat-toolbar class ="mat-elevation-z2">
-        <mat-toolbar-row  class="smp-toolbar-row">
-          <button mat-raised-button color="primary"
-                  matTooltip="Clear the extension content."
-                  matTooltipPosition="below"
-                  (click)="onExtensionDelete()">
-            <mat-icon>clear</mat-icon>
-            <span>Clear</span>
-          </button>
-          <button mat-raised-button color="primary"
-                  matTooltip="Opens wizard for adding new Extension. New extension is appended to existing extensions."
-                  matTooltipPosition="below"
-                  (click)="onStartWizardDialog()">
-            <mat-icon>add_box</mat-icon>
-            <span>Extension wizard</span>
-          </button>
-          <button mat-raised-button color="primary"
-                  matTooltip="Validate extension by XSD scheme."
-                  matTooltipPosition="below"
-                  (click)="onExtensionValidate()">
-            <mat-icon>warning</mat-icon>
-            <span>Validate</span>
-          </button>
-        </mat-toolbar-row>
-      </mat-toolbar>
-      <div *ngIf="extensionValidationMessage"
-           [ngClass]="{ 'alert-message': extensionValidationMessage, 'alert-message-success': isExtensionValid, 'alert-message-error':!isExtensionValid }"
-           id="alertmessage_id">
-        <span class="alert-message-close-button" (click)="clearAlert()">&times;</span>
-        {{extensionValidationMessage}}
-      </div>
-
-        <textarea matInput style="min-height:250px;flex-grow: 2;background-color: #e1e4e8"
-                id="extensionTextArea"
-                placeholder="Extension" name="extension"
-                [formControl]="dialogForm.controls['extension']"></textarea>
-
-    </mat-card-content>
-  </mat-card>
-  <div class="required-fields">* required fields</div>
-</mat-dialog-content>
-
-
-<mat-dialog-actions>
-  <button mat-raised-button color="primary" (click)="submitForm()"
-          [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-group-details-dialog/service-group-details-dialog.component.spec.ts b/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.spec.ts
deleted file mode 100644
index 7a4a6428bfe10e8f92bfbc1e8b6f069add6ad952..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { ServiceGroupDetailsDialogComponent } from './service-group-details-dialog.component';
-
-describe('ServiceGroupDetailsDialogComponent', () => {
-  let component: ServiceGroupDetailsDialogComponent;
-  let fixture: ComponentFixture<ServiceGroupDetailsDialogComponent>;
-
-  beforeEach(async(() => {
-    TestBed.configureTestingModule({
-      declarations: [ ServiceGroupDetailsDialogComponent ]
-    })
-    .compileComponents();
-  }));
-
-  beforeEach(() => {
-    fixture = TestBed.createComponent(ServiceGroupDetailsDialogComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should be created', () => {
-    expect(component).toBeTruthy();
-  });
-});
diff --git a/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.ts b/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.ts
deleted file mode 100644
index 1cca21b1cbd48aa42cdf977998aece10e75ed50a..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-details-dialog.component.ts
+++ /dev/null
@@ -1,360 +0,0 @@
-import {ChangeDetectorRef, Component, Inject, OnInit, ViewChild} from '@angular/core';
-import {MAT_DIALOG_DATA, MatDialog, MatDialogRef} from '@angular/material/dialog';
-import {Observable} from "rxjs/internal/Observable";
-import {HttpClient} from "@angular/common/http";
-import {SmpConstants} from "../../smp.constants";
-import {AlertMessageService} from "../../common/alert-message/alert-message.service";
-import {AbstractControl, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators} from "@angular/forms";
-import {EntityStatus} from "../../common/enums/entity-status.enum";
-import {ServiceGroupEditRo} from "../service-group-edit-ro.model";
-import {GlobalLookups} from "../../common/global-lookups";
-import {ServiceGroupExtensionWizardDialogComponent} from "../service-group-extension-wizard-dialog/service-group-extension-wizard-dialog.component";
-import {ServiceGroupValidationRo} from "./service-group-validation-edit-ro.model";
-import {DomainRo} from "../../common/model/domain-ro.model";
-import {ServiceGroupDomainEditRo} from "../service-group-domain-edit-ro.model";
-import {ConfirmationDialogComponent} from "../../common/dialogs/confirmation-dialog/confirmation-dialog.component";
-import {SecurityService} from "../../security/security.service";
-import {UserRo} from "../../system-settings/user/user-ro.model";
-import {ServiceGroupValidationErrorCodeModel} from "./service-group-validation-error-code.model";
-
-@Component({
-  selector: 'service-group-details',
-  templateUrl: './service-group-details-dialog.component.html',
-  styleUrls: ['./service-group-details-dialog.component.css']
-})
-export class ServiceGroupDetailsDialogComponent implements OnInit {
-
-  static readonly NEW_MODE = 'New ServiceGroup';
-  static readonly EDIT_MODE = 'ServiceGroup Edit';
-
-
-  participantSchemePattern = '^[a-z0-9]+-[a-z0-9]+-[a-z0-9]+$';
-  participantSchemeMessage = '';
-
-  @ViewChild('domainSelector') domainSelector: any;
-
-  editMode: boolean;
-  formTitle: string;
-  current: ServiceGroupEditRo & { confirmation?: string };
-  showSpinner: boolean = false;
-
-  dialogForm: UntypedFormGroup;
-  extensionObserver: Observable<ServiceGroupValidationRo>;
-
-  extensionValidationMessage: string = null;
-  isExtensionValid: boolean = true;
-  userList: UserRo[];
-
-  minSelectedListCount(min: number) {
-    return (c: AbstractControl): { [key: string]: any } => {
-      if (c.value && c.value.length >= min)
-        return null;
-
-      return {'minSelectedListCount': {valid: false}};
-    }
-  }
-
-  multiDomainOn(multidomainOn: boolean) {
-    return (c: AbstractControl): { [key: string]: any } => {
-      if (c.value && c.value.length < 2 || multidomainOn)
-        return null;
-
-      return {'multiDomainError': {valid: false}};
-    }
-  }
-
-  constructor(public securityService: SecurityService,
-              public dialog: MatDialog,
-              protected http: HttpClient,
-              public dialogRef: MatDialogRef<ServiceGroupDetailsDialogComponent>,
-              private alertService: AlertMessageService,
-              public lookups: GlobalLookups,
-              @Inject(MAT_DIALOG_DATA) public data: any,
-              private dialogFormBuilder: UntypedFormBuilder,
-              private changeDetector: ChangeDetectorRef) {
-    this.editMode = this.data.edit;
-
-    this.formTitle = this.editMode ? ServiceGroupDetailsDialogComponent.EDIT_MODE : ServiceGroupDetailsDialogComponent.NEW_MODE;
-    this.current = !!this.data.row
-      ? {
-        ...this.data.row,
-        // copy serviceGroupDomain array
-        serviceGroupDomains: [...this.data.row.serviceGroupDomains]
-      }
-      : {
-        id: null,
-        participantIdentifier: '',
-        participantScheme: '',
-        serviceMetadata: [],
-        users: [],
-        serviceGroupDomains: [],
-        extension: '',
-        status: EntityStatus.NEW,
-        extensionStatus: EntityStatus.UPDATED,
-      };
-
-    if (this.lookups.cachedApplicationConfig) {
-      this.participantSchemePattern = this.lookups.cachedApplicationConfig.participantSchemaRegExp != null ?
-        this.lookups.cachedApplicationConfig.participantSchemaRegExp : ".*"
-
-      this.participantSchemeMessage = this.lookups.cachedApplicationConfig.participantSchemaRegExpMessage;
-    }
-    // user is new when reopening the new item in edit mode!
-    // allow to change data but warn on error!
-
-    this.dialogForm = this.dialogFormBuilder.group({
-      'participantIdentifier': new UntypedFormControl({
-          value: '',
-          disabled: this.current.status !== EntityStatus.NEW
-        },
-        this.current.status === EntityStatus.NEW ? Validators.required : null),
-      'participantScheme': new UntypedFormControl({value: '', disabled: this.current.status !== EntityStatus.NEW},
-        this.current.status === EntityStatus.NEW ?
-          [Validators.pattern(this.participantSchemePattern)] : null),
-      'serviceGroupDomains': new UntypedFormControl({
-          value: [],
-          disabled: !securityService.isCurrentUserSMPAdmin()
-        },
-        [this.minSelectedListCount(1)]),
-      'users': new UntypedFormControl({
-        value: [],
-        disabled: !securityService.isCurrentUserSMPAdmin()
-      }, [this.minSelectedListCount(1)]),
-      'extension': new UntypedFormControl({value: ''}, []),
-
-
-    });
-    if (!!lookups.cachedApplicationConfig.partyIDSchemeMandatory && this.current.status == EntityStatus.NEW) {
-      this.dialogForm.controls['participantScheme'].addValidators(Validators.required);
-    }
-
-    // update values
-    this.dialogForm.controls['participantIdentifier'].setValue(this.current.participantIdentifier);
-    this.dialogForm.controls['participantScheme'].setValue(this.current.participantScheme);
-    this.dialogForm.controls['serviceGroupDomains'].setValue(this.current.serviceGroupDomains);
-    this.dialogForm.controls['users'].setValue(this.current.users)
-    this.dialogForm.controls['extension'].setValue(this.current.extension)
-  }
-
-  ngOnInit() {
-    // retrieve xml extension for this service group
-    if (this.current.status !== EntityStatus.NEW && !this.current.extension) {
-      // init domains
-      this.extensionObserver = this.http.get<ServiceGroupValidationRo>(SmpConstants.REST_PUBLIC_SERVICE_GROUP_ENTITY_EXTENSION.replace('{service-group-id}', this.current.id + ""));
-      this.extensionObserver.subscribe((res: ServiceGroupValidationRo) => {
-        this.dialogForm.get('extension').setValue(res.extension);
-        this.current.extension = res.extension;
-        // store to initial data - so for next time there will be no need to retrieve data again from server!
-        this.data.row.extension = res.extension;
-      });
-    }
-
-    // detect changes for updated values in mat-selection-list (check change detection operations)
-    // else the following error is thrown :xpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value:
-    // 'aria-selected: false'. Current value: 'aria-selected: true'
-    //
-    this.changeDetector.detectChanges()
-  }
-
-  submitForm() {
-    this.checkValidity(this.dialogForm);
-
-    let request: ServiceGroupValidationRo = {
-      serviceGroupId: this.current.id,
-      participantScheme: this.dialogForm.controls['participantScheme'].value,
-      participantIdentifier: this.dialogForm.controls['participantIdentifier'].value,
-      extension: this.dialogForm.controls['extension'].value,
-      statusAction: this.editMode ? EntityStatus.UPDATED : EntityStatus.NEW,
-    }
-    //
-    let validationObservable = this.http.post<ServiceGroupValidationRo>(SmpConstants.REST_SERVICE_GROUP_EXTENSION_VALIDATE, request);
-    this.showSpinner = true;
-    validationObservable.toPromise().then((res: ServiceGroupValidationRo) => {
-      if (res.errorMessage) {
-
-        this.isExtensionValid = false;
-        this.showSpinner = false;
-        if (res.errorCode == ServiceGroupValidationErrorCodeModel.ERROR_CODE_SERVICE_GROUP_EXISTS) {
-          this.dialogForm.controls['participantIdentifier'].setErrors({'dbExist': true});
-        } else {
-          this.extensionValidationMessage = res.errorMessage;
-        }
-      } else {
-        this.extensionValidationMessage = "Extension is valid!";
-        this.isExtensionValid = true;
-        this.showSpinner = false;
-        // we can close the dialog
-        this.dialogRef.close(true);
-      }
-    }).catch((err) => {
-      console.log("Error occurred on Validation Extension: " + err);
-    });
-  }
-
-  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();
-    });
-  }
-
-
-  compareUserByUserId(item1, item2): boolean {
-    return item1.userId === item2.userId;
-  }
-
-  compareDomain(domain: DomainRo, serviceGroupDomain: ServiceGroupDomainEditRo): boolean {
-    return domain.domainCode === serviceGroupDomain.domainCode;
-  }
-
-
-  public getCurrent(): ServiceGroupEditRo {
-    // change this two properties only on new
-    if (this.current.status === EntityStatus.NEW) {
-      this.current.participantIdentifier = this.dialogForm.value['participantIdentifier'];
-      this.current.participantScheme = this.dialogForm.value['participantScheme'];
-    } else {
-      this.current.extensionStatus = EntityStatus.UPDATED;
-    }
-    this.current.users = this.dialogForm.value['users'];
-    this.current.extension = this.dialogForm.value['extension'];
-    let domainOptions = this.domainSelector.options._results;
-    domainOptions.forEach(opt => {
-      let domValue = opt.value;
-      let sgd = this.getServiceGroupDomain(domValue.domainCode);
-      // if contains and deselected  - delete
-      if (sgd && !opt.selected) {
-        this.current.serviceMetadata.forEach(metadata => {
-          if (metadata.domainCode === sgd.domainCode) {
-            metadata.status = EntityStatus.REMOVED;
-            metadata.deleted = true;
-          }
-        });
-
-        let index = this.current.serviceGroupDomains.indexOf(sgd);
-        if (index !== -1) this.current.serviceGroupDomains.splice(index, 1);
-
-        // delete service group
-      } else if (!sgd && opt.selected) {
-        let newDomain: ServiceGroupDomainEditRo = {
-          id: null,
-          domainId: domValue.id,
-          domainCode: domValue.domainCode,
-          smlSubdomain: domValue.domainCode,
-          smlRegistered: false,
-          serviceMetadataCount: 0,
-          status: EntityStatus.NEW,
-        };
-        this.current.serviceGroupDomains.push(newDomain);
-      }
-    });
-    return this.current;
-  }
-
-  dataChanged() {
-    if (this.current.status === EntityStatus.NEW) {
-      return true;
-    }
-    return this.current.users !== this.dialogForm.value['users'];
-  }
-
-  extensionChanged(): boolean {
-    return !this.isEqual(this.current.extension, this.dialogForm.value['extension'].toString());
-  }
-
-  onExtensionDelete() {
-    this.dialogForm.controls['extension'].setValue("");
-  }
-
-  onStartWizardDialog() {
-
-    const formRef: MatDialogRef<any> = this.dialog.open(ServiceGroupExtensionWizardDialogComponent);
-    formRef.afterClosed().subscribe(result => {
-      if (result) {
-        let existingXML = this.dialogForm.controls['extension'].value;
-        let val = (existingXML ? existingXML + '\n' : '') + formRef.componentInstance.getExtensionXML();
-        this.dialogForm.controls['extension'].setValue(val);
-      }
-    });
-  }
-
-  public onExtensionValidate() {
-
-    let request: ServiceGroupValidationRo = {
-      serviceGroupId: this.current.id,
-      participantScheme: this.dialogForm.controls['participantScheme'].value,
-      participantIdentifier: this.dialogForm.controls['participantIdentifier'].value,
-      extension: this.dialogForm.controls['extension'].value,
-      statusAction: EntityStatus.UPDATED, // do not validate as new  - for new participant id and schema is also validated
-    }
-    //
-    let validationObservable = this.http.post<ServiceGroupValidationRo>(SmpConstants.REST_SERVICE_GROUP_EXTENSION_VALIDATE, request);
-    this.showSpinner = true;
-    validationObservable.toPromise().then((res: ServiceGroupValidationRo) => {
-      if (res.errorMessage) {
-        this.extensionValidationMessage = res.errorMessage;
-        this.isExtensionValid = false;
-        this.showSpinner = false;
-      } else {
-        this.extensionValidationMessage = "Extension is valid!";
-        this.isExtensionValid = true;
-        this.showSpinner = false;
-      }
-    }).catch((err) => {
-      console.log("Error occurred on Validation Extension: " + err);
-    });
-
-  }
-
-  onDomainSelectionChanged(event) {
-    // if deselected warn  serviceMetadata will be deleted
-    let domainCode = event.option.value.domainCode;
-    if (!event.option.selected) {
-      let smdCount = this.getServiceMetadataCountOnDomain(domainCode);
-      if (smdCount > 0) {
-        this.dialog.open(ConfirmationDialogComponent, {
-          data: {
-            title: "Registered serviceMetadata on domain",
-            description: "Unregistering service group from domain will also delete its serviceMetadata (count: " + smdCount + ") from the domain! Do you want to continue?"
-          }
-        }).afterClosed().subscribe(result => {
-          if (!result) {
-            event.option.selected = true;
-          }
-        })
-      }
-    }
-  }
-
-  public getServiceMetadataCountOnDomain(domainCode: string) {
-    return this.current.serviceMetadata.filter(smd => {
-      return smd.domainCode === domainCode
-    }).length;
-  }
-
-  public getServiceGroupDomain(domainCode: string) {
-    return this.current.serviceGroupDomains ?
-      this.current.serviceGroupDomains.find(smd => {
-        return smd.domainCode === domainCode
-      }) : null;
-  }
-
-  isEqual(val1, val2): boolean {
-    return (this.isEmpty(val1) && this.isEmpty(val2)
-      || val1 === val2);
-  }
-
-  isEmpty(str): boolean {
-    return (!str || 0 === str.length);
-  }
-
-  clearAlert() {
-    this.extensionValidationMessage = null;
-  }
-}
diff --git a/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-validation-edit-ro.model.ts b/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-validation-edit-ro.model.ts
deleted file mode 100644
index ad2d6f161b9e15a4e8e8ae9598af31e0107097b3..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-validation-edit-ro.model.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-
-export interface ServiceGroupValidationRo  {
-  serviceGroupId: number;
-  participantScheme: string;
-  participantIdentifier: string;
-  extension: string;
-  errorMessage?: string;
-  statusAction:number;
-  errorCode?: number;
-}
diff --git a/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-validation-error-code.model.ts b/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-validation-error-code.model.ts
deleted file mode 100644
index c1ed1858e7f40f458bec49eb4197d2d78f96097f..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-details-dialog/service-group-validation-error-code.model.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export enum ServiceGroupValidationErrorCodeModel {
-  ERROR_CODE_OK,
-  ERROR_CODE_SERVICE_GROUP_EXISTS,
-  ERROR_CODE_INVALID_EXTENSION
-}
diff --git a/smp-angular/src/app/service-group-edit/service-group-domain-edit-ro.model.ts b/smp-angular/src/app/service-group-edit/service-group-domain-edit-ro.model.ts
deleted file mode 100644
index e23ff4e734545f362e42a406b414f0ea8bee592c..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-domain-edit-ro.model.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import {SearchTableEntity} from "../common/search-table/search-table-entity.model";
-
-export interface ServiceGroupDomainEditRo extends SearchTableEntity {
-  id: number;
-  domainId: number;
-  domainCode: string;
-  smlSubdomain: string;
-  smlRegistered: boolean;
-  serviceMetadataCount?: number;
-}
diff --git a/smp-angular/src/app/service-group-edit/service-group-edit-controller.ts b/smp-angular/src/app/service-group-edit/service-group-edit-controller.ts
deleted file mode 100644
index 75133bd7f12468da8f34899226d12e869bc8c45d..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-edit-controller.ts
+++ /dev/null
@@ -1,147 +0,0 @@
-import {SearchTableController} from '../common/search-table/search-table-controller';
-import {MatDialog, MatDialogConfig, MatDialogRef} from '@angular/material/dialog';
-import {ServiceGroupDetailsDialogComponent} from './service-group-details-dialog/service-group-details-dialog.component';
-import {ServiceGroupEditRo} from './service-group-edit-ro.model';
-import {EntityStatus} from '../common/enums/entity-status.enum';
-import {ServiceMetadataEditRo} from "./service-metadata-edit-ro.model";
-import {ServiceGroupMetadataDialogComponent} from "./service-group-metadata-dialog/service-group-metadata-dialog.component";
-import {of} from "rxjs/internal/observable/of";
-import {SearchTableValidationResult} from "../common/search-table/search-table-validation-result.model";
-import {SearchTableEntity} from "../common/search-table/search-table-entity.model";
-
-export class ServiceGroupEditController implements SearchTableController {
-
-  compareUpdateSGProperties = ["extension", "users", "serviceGroupDomains"];
-  compareNewSGProperties = ["participantScheme", "participantIdentifier", "", "extension", "users", "serviceGroupDomains"];
-
-  constructor(public dialog: MatDialog) {
-  }
-
-  public showDetails(row: any, config?: MatDialogConfig,) {
-    let dialogRef: MatDialogRef<ServiceGroupDetailsDialogComponent>
-      = this.dialog.open(ServiceGroupDetailsDialogComponent);
-    dialogRef.afterClosed().subscribe(result => {
-      //Todo:
-    });
-  }
-
-  public edit(row: any) {
-  }
-
-  public delete(row: any) {
-
-    // set all rows as deleted
-    let sgRow = row as ServiceGroupEditRo;
-    sgRow.serviceMetadata.forEach(function (part, index, metaDataList) {
-      metaDataList[index].status = EntityStatus.REMOVED;
-      metaDataList[index].deleted = true;
-    });
-  }
-
-  public newDialog(config?: MatDialogConfig): MatDialogRef<ServiceGroupDetailsDialogComponent> {
-    return this.dialog.open(ServiceGroupDetailsDialogComponent, config);
-  }
-
-  public newMetadataDialog(config?: MatDialogConfig): MatDialogRef<ServiceGroupMetadataDialogComponent> {
-    return this.dialog.open(ServiceGroupMetadataDialogComponent, config);
-  }
-
-  public newRow(): ServiceGroupEditRo {
-    return {
-      id: null,
-      index: null,
-      participantIdentifier: '',
-      participantScheme: '',
-      serviceMetadata: [],
-      users: [],
-      serviceGroupDomains: [],
-      extensionStatus: EntityStatus.NEW,
-      status: EntityStatus.NEW
-    };
-  }
-
-  public newServiceMetadataRow(): ServiceMetadataEditRo {
-    return {
-      id: null,
-      documentIdentifier: '',
-      documentIdentifierScheme: '',
-      smlSubdomain: '',
-      domainCode: '',
-      domainId: null,
-      status: EntityStatus.NEW,
-      xmlContentStatus: EntityStatus.NEW,
-    };
-  }
-
-  public dataSaved() {
-  }
-
-  validateDeleteOperation(rows: Array<SearchTableEntity>) {
-    return of(this.newValidationResult(true, ''));
-  }
-
-  public newValidationResult(result: boolean, message: string): SearchTableValidationResult {
-    return {
-      validOperation: result,
-      stringMessage: message,
-    }
-  }
-
-  isRowExpanderDisabled(row: ServiceGroupEditRo): boolean {
-    const serviceGroup = <ServiceGroupEditRo>row;
-    return !(serviceGroup.serviceMetadata && serviceGroup.serviceMetadata.length);
-  }
-
-  isRecordChanged(oldModel, newModel): boolean {
-    // different set of properties to compare in case if new entry is reedited or already saved entry is reedited.
-    let propsToCompare = newModel.status === EntityStatus.NEW ?
-      this.compareNewSGProperties : this.compareUpdateSGProperties;
-
-    // check if other properties were changed
-    let propSize = propsToCompare.length;
-    for (let i = 0; i < propSize; i++) {
-      let property = propsToCompare[i];
-      let isEqual = false;
-
-      if (property === 'users') {
-        isEqual = this.isEqualListByAttribute(newModel[property], oldModel[property], "userId");
-      } else if (property === 'serviceGroupDomains') {
-        isEqual = this.isEqualListByAttribute(newModel[property], oldModel[property], "domainCode");
-      } else {
-        isEqual = this.isEqual(JSON.stringify(newModel[property]), JSON.stringify(oldModel[property]));
-      }
-      console.log("Property: " + property + " new: " + JSON.stringify(newModel[property]) + "old: " + JSON.stringify(oldModel[property]) + " val: " + isEqual);
-      if (!isEqual) {
-        return true; // Property has changed
-      }
-    }
-    return false;
-  }
-
-  isEqualListByAttribute(array1, array2, compareByAttribute): boolean {
-    let result1 = array1.filter(function (o1) {
-      // filter out (!) items in result2
-      return !array2.some(function (o2) {
-        return o1[compareByAttribute] === o2[compareByAttribute]; //  unique id
-      });
-    });
-
-    let result2 = array2.filter(function (o1) {
-      // filter out (!) items in result2
-      return !array1.some(function (o2) {
-        return o1[compareByAttribute] === o2[compareByAttribute]; //  unique id
-      });
-    });
-
-    return (!result1 || result1.length === 0) && (!result2 || result2.length === 0);
-  }
-
-  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/service-group-edit/service-group-edit-ro.model.ts b/smp-angular/src/app/service-group-edit/service-group-edit-ro.model.ts
deleted file mode 100644
index 6795ba86cecb82f66ec57ec7bc1c7a74b305588f..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-edit-ro.model.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import {ServiceMetadataEditRo} from './service-metadata-edit-ro.model';
-import {SearchTableEntity} from "../common/search-table/search-table-entity.model";
-import {UserRo} from "../system-settings/user/user-ro.model";
-import {ServiceGroupDomainEditRo} from "./service-group-domain-edit-ro.model";
-import {EntityStatus} from "../common/enums/entity-status.enum";
-
-export interface ServiceGroupEditRo extends SearchTableEntity {
-  id: number;
-  participantIdentifier: string;
-  participantScheme: string;
-  serviceMetadata: Array<ServiceMetadataEditRo>;
-  serviceGroupDomains: Array<ServiceGroupDomainEditRo>;
-  users: Array<UserRo>;
-  extension?: string;
-  extensionStatus: EntityStatus;
-}
diff --git a/smp-angular/src/app/service-group-edit/service-group-edit.component.css b/smp-angular/src/app/service-group-edit/service-group-edit.component.css
deleted file mode 100644
index eeed25389d68b3cd8f633a70fb59b8205d0bc57f..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-edit.component.css
+++ /dev/null
@@ -1,31 +0,0 @@
-/* --- Select ---*/
-.mat-select{
-  padding:20px 0;
-}
-
-/* --- Button  ---*/
-.group-btn {
-   margin-top:20px;
- }
-
-#hiddenButtonId {
-  position: fixed;
-}
-
-.datatable-body{
-  overflow-y: scroll;
-}
-
-::ng-deep .inner-table {
-  margin-left: 100px;
-  width: 80%;
-}
-
-::ng-deep .inner-table .datatable-body-cell {
-  padding:  1.5em 2px !important;
-}
-
-::ng-deep .inner-table .mat-icon-button {
-  height: auto !important;;
-  line-height: unset !important;
-}
diff --git a/smp-angular/src/app/service-group-edit/service-group-edit.component.html b/smp-angular/src/app/service-group-edit/service-group-edit.component.html
deleted file mode 100644
index cf7d8e9da889f19793ca58b7e1d3be7d816105cb..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-edit.component.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<smp-search-table #searchTable
-  page_id='edit_id'
-  [title]="'Edit'"
-  [columnPicker]="columnPicker"
-  [url]="baseUrl"
-  [additionalToolButtons]="additionalToolButtons"
-  [searchPanel]="searchPanel"
-  [filter]="filter"
-  [searchTableController]="serviceGroupEditController"
-  [tableRowDetailContainer]="tableRowDetailContainer"
-  [additionalRowActionButtons]="additionalRowActionButtons"
-  [allowNewItems]="securityService.isCurrentUserSMPAdmin()"
-  [allowDeleteItems]="securityService.isCurrentUserSMPAdmin()"
->
-  <ng-template #rowSMPUrlLinkAction let-row="row" let-value="value" ngx-datatable-cell-template
-    >
-    <a target="_blank" matTooltip="Open metadata as XML data"
-       href="{{contextPath}}{{createServiceGroupURL(row)}}">Open URL</a>
-  </ng-template>
-
-
-  <ng-template #searchPanel>
-    <mat-form-field>
-      <input matInput placeholder="Participant Identifier" name="ParticipantIdentifier"
-             [(ngModel)]="filter.participantIdentifier"
-             #messageId="ngModel" id="participantIdentifier">
-    </mat-form-field>
-    <mat-form-field>
-      <input matInput placeholder="Participant scheme" name="patricipantScheme" [(ngModel)]="filter.participantScheme"
-             #messageId="ngModel" id="participantScheme">
-    </mat-form-field>
-    <mat-select placeholder="All Domains" [(ngModel)]="filter.domain" name="domain"
-                id="domain_id">
-      <mat-option [value]="''">All Domains</mat-option>
-      <mat-option *ngFor="let domain of lookups.cachedDomainList" [value]="domain.domainCode">
-        {{domain.domainCode}} ({{domain.smlSubdomain}})
-      </mat-option>
-    </mat-select>
-  </ng-template>
-
-
-  <ng-template #additionalToolButtons></ng-template>
-
-  <ng-template #additionalRowActionButtons let-row="row" >
-    <button mat-icon-button color="primary" [disabled]="row?.deleted || loading"
-            (click)="onAddMetadataRow(row)" matTooltip="Add service metadata">
-      <mat-icon>playlist_add</mat-icon>
-    </button>
-  </ng-template>
-
-  <ng-template #tableRowDetailContainer let-row="row">
-
-    <div *ngIf="row.serviceMetadata.length===0" style="padding-left:20px;">
-      No service metadata
-    </div>
-    <div *ngIf="row.serviceMetadata.length !== 0" >
-      <ngx-datatable
-        class='inner-table material striped'
-        [loadingIndicator]="false"
-        [rows]='row.serviceMetadata'
-        [columnMode]='"force"'
-        [headerHeight]='50'
-        [footerHeight]='50'
-        [rowHeight]='"auto"'
-        (activate)="onActivateServiceMetadata(row,$event)"
-        [rowClass]="getRowClass">
-        <ngx-datatable-column [cellTemplate]="rowDomain" name="Domain" maxWidth="250" ></ngx-datatable-column>
-        <ngx-datatable-column prop="documentIdentifierScheme" name="Document identifier scheme" maxWidth="350" ></ngx-datatable-column>
-        <ngx-datatable-column prop="documentIdentifier" name="Document identifier" maxWidth="250" ></ngx-datatable-column>
-        <ngx-datatable-column [cellTemplate]="rowMetadataSMPUrlLinkAction" name="URL" maxWidth="250" ></ngx-datatable-column>
-        <ngx-datatable-column [cellTemplate]="rowMetadataActions" name="Actions" maxWidth="150" ></ngx-datatable-column>
-
-        <ng-template #rowDomain let-rowSmd="row" ngx-datatable-cell-template>
-          {{rowSmd.domainCode}} ({{rowSmd.smlSubdomain}})
-        </ng-template>
-
-        <ng-template #rowMetadataSMPUrlLinkAction let-rowSmd="row" ngx-datatable-cell-template>
-          <a target="_blank"
-             href="{{contextPath}}{{createServiceMetadataURL(row, rowSmd)}}" >Open URL</a>
-        </ng-template>
-      </ngx-datatable>
-
-      <ng-template #rowMetadataActions let-rowSmd="row" ngx-datatable-cell-template>
-        <div>
-          <button mat-icon-button color="primary" [disabled]="rowSmd.deleted || loading"
-                  (click)="onEditMetadataRow(row, rowSmd)" matTooltip="Edit service metadata">
-            <mat-icon>edit</mat-icon>
-          </button>
-          <button mat-icon-button color="primary" [disabled]="rowSmd.deleted || loading"
-                  (click)="onDeleteMetadataRowActionClicked(row, rowSmd)" matTooltip="Delete service metadata">
-            <mat-icon>delete</mat-icon>
-          </button>
-        </div>
-      </ng-template>
-
-    </div>
-  </ng-template>
-
-</smp-search-table>
diff --git a/smp-angular/src/app/service-group-edit/service-group-edit.component.ts b/smp-angular/src/app/service-group-edit/service-group-edit.component.ts
deleted file mode 100644
index f34997b89f38fa4390e06a70e5d979554e6c97c6..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-edit.component.ts
+++ /dev/null
@@ -1,225 +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 {ServiceGroupEditController} from './service-group-edit-controller';
-import {HttpClient} from '@angular/common/http';
-import {SmpConstants} from "../smp.constants";
-import {EntityStatus} from "../common/enums/entity-status.enum";
-import {SearchTableComponent} from "../common/search-table/search-table.component";
-import {GlobalLookups} from "../common/global-lookups";
-import {SecurityService} from "../security/security.service";
-
-@Component({
-  moduleId: 'edit',
-  templateUrl: './service-group-edit.component.html',
-  styleUrls: ['./service-group-edit.component.css']
-})
-export class ServiceGroupEditComponent implements OnInit, AfterViewInit, AfterViewChecked {
-
-  @ViewChild('rowMetadataAction', {static: true}) rowMetadataAction: TemplateRef<any>
-  @ViewChild('rowActions', {static: true}) rowActions: TemplateRef<any>;
-  @ViewChild('rowSMPUrlLinkAction', {static: true}) rowSMPUrlLinkAction: TemplateRef<any>;
-  @ViewChild('searchTable', {static: true}) searchTable: SearchTableComponent;
-
-  columnPicker: ColumnPicker = new ColumnPicker();
-  serviceGroupEditController: ServiceGroupEditController;
-  filter: any = {};
-  baseUrl: string;
-  contextPath: string = location.pathname.substring(0, location.pathname.length - 3); // remove /ui s
-
-  constructor(public securityService: SecurityService,
-              protected lookups: GlobalLookups,
-              protected http: HttpClient,
-              protected alertService: AlertMessageService,
-              public dialog: MatDialog,
-              private changeDetector: ChangeDetectorRef) {
-
-    // if smp admin it needs to have update user list for detail dialog!
-    if (this.securityService.isCurrentUserSMPAdmin() || this.securityService.isCurrentUserServiceGroupAdmin()) {
-      this.lookups.refreshUserLookup();
-      this.lookups.refreshApplicationConfiguration();
-    }
-    this.baseUrl = SmpConstants.REST_PUBLIC_SERVICE_GROUP;
-  }
-
-  ngOnInit(): void {
-    this.serviceGroupEditController = new ServiceGroupEditController(this.dialog);
-  }
-
-  initColumns() {
-    this.columnPicker.allColumns = [
-      {
-        name: 'Metadata',
-        prop: 'serviceMetadata.length',
-        showInitially: true,
-        width: 75,
-        maxWidth: 75,
-        resizable: "false",
-      },
-      {
-        name: 'Owners',
-        prop: 'users.length',
-        showInitially: true,
-        width: 75,
-        maxWidth: 75,
-        resizable: "false"
-      },
-      {
-        name: 'Participant scheme',
-        prop: 'participantScheme',
-        showInitially: true,
-        width: 200,
-        maxWidth: 300,
-        resizable: "false"
-      },
-      {
-        name: 'Participant identifier',
-        prop: 'participantIdentifier',
-        showInitially: true,
-      },
-      {
-        cellTemplate: this.rowSMPUrlLinkAction,
-        name: 'OASIS ServiceGroup URL',
-        showInitially: true,
-        width: 150,
-        maxWidth: 250,
-        resizable: "false",
-        sortable: false
-      },
-    ];
-    this.searchTable.tableColumnInit();
-  }
-
-  ngAfterViewChecked() {
-    this.changeDetector.detectChanges();
-  }
-
-  ngAfterViewInit(): void {
-    this.initColumns();
-  }
-
-  details(row: any) {
-    this.serviceGroupEditController.showDetails(row);
-
-  }
-
-  onAddMetadataRow(row: any) {
-    let rowNumber = this.searchTable.rows.indexOf(row);
-
-    const formRef: MatDialogRef<any> = this.serviceGroupEditController.newMetadataDialog({
-      data: {edit: false, serviceGroup: row, metadata: this.serviceGroupEditController.newServiceMetadataRow()}
-    });
-    formRef.afterClosed().subscribe(result => {
-      if (result) {
-        const status = row.status === EntityStatus.PERSISTED
-          ? EntityStatus.UPDATED
-          : row.status;
-
-        let data = formRef.componentInstance.getCurrent();
-        row.serviceMetadata.push(data);
-        this.searchTable.updateTableRow(rowNumber, row, status);
-      }
-    });
-
-  }
-
-  getRowClass(row) {
-    return {
-      'table-row-new': (row.status === EntityStatus.NEW),
-      'table-row-updated': (row.status === EntityStatus.UPDATED),
-      'deleted': (row.status === EntityStatus.REMOVED)
-    };
-  }
-
-  onEditMetadataRow(serviceGroupRow: any, metaDataRow: any) {
-    let metadataRowNumber = serviceGroupRow.serviceMetadata.indexOf(metaDataRow);
-
-    const formRef: MatDialogRef<any> = this.serviceGroupEditController.newMetadataDialog({
-      data: {
-        edit: metaDataRow.status !== EntityStatus.NEW,
-        serviceGroup: serviceGroupRow,
-        metadata: metaDataRow
-      }
-    });
-    formRef.afterClosed().subscribe(result => {
-      if (result) {
-
-        // method isServiceMetaDataChanged must be called before getCurrent!
-        let isChanged = formRef.componentInstance.isServiceMetaDataChanged();
-        if (!isChanged) {
-          // nothing to save
-          return;
-        }
-
-        let statusMetadata = metaDataRow.status === EntityStatus.PERSISTED
-          ? EntityStatus.UPDATED
-          : metaDataRow;
-
-        metaDataRow.status = statusMetadata;
-        metaDataRow = {...formRef.componentInstance.getCurrent()};
-
-        serviceGroupRow.serviceMetadata [metadataRowNumber] = {...metaDataRow};
-        // change reference to fire table update
-        serviceGroupRow.serviceMetadata = [...serviceGroupRow.serviceMetadata]
-
-        // set row as updated
-        const status = serviceGroupRow.status === EntityStatus.PERSISTED
-          ? EntityStatus.UPDATED
-          : serviceGroupRow.status;
-        serviceGroupRow.status = status;
-
-        this.changeDetector.detectChanges();
-
-      }
-    });
-  }
-
-  onDeleteMetadataRowActionClicked(serviceGroupRow: any, metaDataRow: any) {
-    let rowNumber = this.searchTable.rows.indexOf(serviceGroupRow);
-
-    if (metaDataRow.status === EntityStatus.NEW) {
-      serviceGroupRow.splice(serviceGroupRow.indexOf(metaDataRow), 1);
-    } else {
-      metaDataRow.status = EntityStatus.REMOVED;
-      metaDataRow.deleted = true;
-      // set row as updated
-      const status = serviceGroupRow.status === EntityStatus.PERSISTED
-        ? EntityStatus.UPDATED
-        : serviceGroupRow.status;
-      serviceGroupRow.status = status;
-
-      // do not do that it updates the whole table
-      // this.searchTable.rows[rowNumber] = {...serviceGroupRow, status};
-      // this.searchTable.rows = [...this.searchTable.rows];
-    }
-  }
-
-
-  // for dirty guard...
-  isDirty(): boolean {
-    return this.searchTable.isDirty();
-  }
-
-  createServiceGroupURL(row: any) {
-    return encodeURIComponent((!row.participantScheme ? '' : row.participantScheme) + '::' + row.participantIdentifier);
-  }
-
-  createServiceMetadataURL(serviceGroupRow: any, rowSMD: any) {
-    return encodeURIComponent((!serviceGroupRow.participantScheme ? '' : serviceGroupRow.participantScheme) + '::' + serviceGroupRow.participantIdentifier) + '/services/' + encodeURIComponent((!rowSMD.documentIdentifierScheme ? '' : rowSMD.documentIdentifierScheme) + '::' + rowSMD.documentIdentifier);
-  }
-
-  onActivateServiceMetadata(serviceGroupRow: any, event) {
-    if ("dblclick" === event.type) {
-      this.onEditMetadataRow(serviceGroupRow, event.row);
-    }
-  }
-}
diff --git a/smp-angular/src/app/service-group-edit/service-group-extension-wizard-dialog/service-group-extension-wizard-dialog.component.css b/smp-angular/src/app/service-group-edit/service-group-extension-wizard-dialog/service-group-extension-wizard-dialog.component.css
deleted file mode 100644
index b734d415f91b5d605412708ad09654221ffbd456..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-extension-wizard-dialog/service-group-extension-wizard-dialog.component.css
+++ /dev/null
@@ -1,5 +0,0 @@
-.flex-dialog-content{
-  display: flex; justify-content: space-around;
-  flex-flow: row;
-  align-items: stretch;height:510px;min-width:950px
-}
diff --git a/smp-angular/src/app/service-group-edit/service-group-extension-wizard-dialog/service-group-extension-wizard-dialog.component.html b/smp-angular/src/app/service-group-edit/service-group-extension-wizard-dialog/service-group-extension-wizard-dialog.component.html
deleted file mode 100644
index 4b6e3041900c8bd9a65822e13f48000d6a7a850a..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-extension-wizard-dialog/service-group-extension-wizard-dialog.component.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<h2 mat-dialog-title>ServiceGroup Extension Wizard</h2>
-
-<mat-dialog-content [class]="'flex-dialog-content'">
-  <form [formGroup]="dialogForm">
-    <mat-card>
-      <mat-card-content>
-        <fieldset style="border: none;">
-          <mat-form-field  *ngFor="let elmnt of elements;"  style="width:100%">
-            <input matInput
-                   type="{{elmnt.type}}"
-                   placeholder="{{elmnt.name}} - {{elmnt.description}}"
-                   [name]="elmnt.name"
-                   id="{{elmnt.name}}_id"
-                   [formControl]="dialogForm.controls[elmnt.name]" maxlength="255">
-          </mat-form-field >
-        </fieldset>
-      </mat-card-content>
-    </mat-card>
-  </form>
-</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-group-extension-wizard-dialog/service-group-extension-wizard-dialog.component.ts b/smp-angular/src/app/service-group-edit/service-group-extension-wizard-dialog/service-group-extension-wizard-dialog.component.ts
deleted file mode 100644
index fe7b321e0f0a410b3475716c35289828894b5091..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-extension-wizard-dialog/service-group-extension-wizard-dialog.component.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-import {Component} from '@angular/core';
-import {MatDialogRef} from '@angular/material/dialog';
-import {UntypedFormBuilder, UntypedFormControl, UntypedFormGroup} from "@angular/forms";
-
-@Component({
-  selector: 'service-group-extension-wizard',
-  templateUrl: './service-group-extension-wizard-dialog.component.html',
-  styleUrls:  ['./service-group-extension-wizard-dialog.component.css']
-})
-export class ServiceGroupExtensionWizardDialogComponent  {
-  dialogForm: UntypedFormGroup;
-
-  dummyXML: string ="<!-- Custom element is mandatory by OASIS SMP schema.\n    Replace following element with your XML structure. -->\n<ext:example xmlns:ext=\"http://my.namespace.eu\">my mandatory content</ext:example>"
-
-  elements: any[] = [
-    {name:'ExtensionID', description:'An identifier for the Extension assigned by the creator of the extension.', type:'text'},
-    {name:'ExtensionName', description:'A name for the Extension assigned by the creator of the extension.', type:'text'},
-    {name:'ExtensionAgencyID', description:'An agency that maintains one or more Extensions.', type:'text'},
-    {name:'ExtensionAgencyName', description:'The name of the agency that maintains the Extension.', type:'text'},
-    {name:'ExtensionAgencyURI', description:'A URI for the Agency that maintains the Extension.', type:'url'},
-    {name:'ExtensionVersionID', description:'The version of the Extension.', type:'text'},
-    {name:'ExtensionURI', description:'A URI for the Extension.', type:'url'},
-    {name:'ExtensionReasonCode', description:'A code for reason the Extension is being included.', type:'text'},
-    {name:'ExtensionReason', description:'A description of the reason for the Extension.', type:'text'},
-    ];
-
-  constructor(public dialogRef: MatDialogRef<ServiceGroupExtensionWizardDialogComponent>,
-              private dialogFormBuilder: UntypedFormBuilder) {
-
-    this.dialogForm = this.dialogFormBuilder.group({ });
-
-    let arrayLength = this.elements.length;
-    for (var i = 0; i < arrayLength; i++) {
-      this.dialogForm.addControl(this.elements[i].name, new UntypedFormControl(''));
-    }
-  }
-
-  getExtensionXML(){
-    var xmlString = '<Extension xmlns="http://docs.oasis-open.org/bdxr/ns/SMP/2016/05">'
-    let arrayLength = this.elements.length;
-    for (var i = 0; i < arrayLength; i++) {
-      let str = this.dialogForm.get(this.elements[i].name).value;
-      if (str && 0 !== str.length) {
-        xmlString = xmlString + '\n    <'+this.elements[i].name+'>' + this.xmlSpecialChars(str) + '</'+this.elements[i].name+'>';
-      }
-    }
-    xmlString = xmlString+ '\n' +this.dummyXML+ '\n</Extension>'
-
-    return xmlString;
-  }
-
-  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-group-metadata-dialog/service-group-metadata-dialog.component.css b/smp-angular/src/app/service-group-edit/service-group-metadata-dialog/service-group-metadata-dialog.component.css
deleted file mode 100644
index c6fbe97a8728a261639ad5100e7f99fc07057c62..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-metadata-dialog/service-group-metadata-dialog.component.css
+++ /dev/null
@@ -1,50 +0,0 @@
-.flex-dialog-content {
-  display: flex;
-  justify-content: space-around;
-  flex-flow: row;
-  align-items: stretch;
-  height: 510px;
-  min-width: 950px
-}
-
-label:hover, label:active, input:hover + label, input:active + label {
-  color: #3f51b5;
-}
-
-.divTable {
-  display: table;
-  width: 100%;
-}
-
-.divTableRow {
-  display: table-row;
-}
-
-.divTableHeading {
-  background-color: #EEE;
-  display: table-header-group;
-}
-
-.divTableCell, .divTableHead {
-  /*border: 1px solid #999999;*/
-  display: table-cell;
-  padding: 3px 3px;
-  text-align: center;
-}
-
-.divTableHeading {
-  background-color: #EEE;
-  display: table-header-group;
-  font-weight: bold;
-}
-
-.divTableFoot {
-  background-color: #EEE;
-  display: table-footer-group;
-  font-weight: bold;
-}
-
-.divTableBody {
-  display: table-row-group;
-}
-
diff --git a/smp-angular/src/app/service-group-edit/service-group-metadata-dialog/service-group-metadata-dialog.component.html b/smp-angular/src/app/service-group-edit/service-group-metadata-dialog/service-group-metadata-dialog.component.html
deleted file mode 100644
index e6604b7705d144203558d3fed1dc3000b7a47de0..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-metadata-dialog/service-group-metadata-dialog.component.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<h2 mat-dialog-title>{{formTitle}}</h2>
-<mat-dialog-content class="flex-dialog-content">
-  <div fxLayout="column" style="flex-grow: 1;">
-    <mat-card  style="flex-grow: 1;" >
-
-      <mat-card-content >
-        <div class="panel">
-          <mat-form-field  style="width:30%">
-            <input matInput placeholder="Participant scheme" name="patricipantSchema"  id="participanSchema_id"
-                   [formControl]="dialogForm.controls['participantScheme']"
-            >
-          </mat-form-field>
-          <mat-form-field style="width:40%">
-            <input matInput placeholder="Participant Identifier" name="participantIdentifier"  id="participantIdentifier_id"
-                   [formControl]="dialogForm.controls['participantIdentifier']">
-          </mat-form-field>
-          <mat-select #domainList [compareWith]="compareDomainCode" placeholder="Domain (sml subdomain)" id="domain_id" style="width:20%"
-                      [formControl]="dialogForm.controls['domainCode']">
-            <mat-option *ngFor="let domain of currentServiceGroup.serviceGroupDomains" [value]="domain">
-              {{domain.domainCode}} ({{domain.smlSubdomain}})
-            </mat-option>
-          </mat-select>
-          <div
-            *ngIf="(!editMode && dialogForm.controls['domainCode'].touched || editMode) &&  dialogForm.controls['domainCode'].hasError('required')"
-            style="color:red; font-size: 70%">
-            Domain must be selected.
-          </div>
-
-          <mat-form-field  style="width:30%">
-            <input matInput placeholder="Document identifier scheme" name="documentScheme"  id="documentScheme_id"
-                   [formControl]="dialogForm.controls['documentIdentifierScheme']"  maxlength="255" >
-          </mat-form-field>
-            <mat-form-field style="width:55%">
-              <input matInput placeholder="Document identifier" name="documentIdentifier"  id="documentIdentifier_id"
-                     [formControl]="dialogForm.controls['documentIdentifier']"  maxlength="255" required>
-            </mat-form-field>
-        </div>
-      </mat-card-content>
-    </mat-card>
-
-
-    <mat-card style="flex-grow: 1;">
-      <mat-card-content>
-        <mat-toolbar class ="mat-elevation-z2">
-          <mat-toolbar-row  class="smp-toolbar-row">
-            <button mat-raised-button color="primary"
-                    matTooltip="Clear the metadata content."
-                    matTooltipPosition="below"
-                    (click)="onClearServiceMetadata()">
-              <mat-icon>clear</mat-icon>
-              <span>Clear</span>
-            </button>
-            <button mat-raised-button color="primary"
-                    matTooltip="Generates simple XML"
-                    matTooltipPosition="below"
-                    (click)="onGenerateSimpleXML()">
-              <mat-icon>settings_ethernet</mat-icon>
-              <span>Generate XML</span>
-            </button>
-            <button mat-raised-button color="primary"
-                    matTooltip="Opens wizard to configure ServiceMetadata xml."
-                    matTooltipPosition="below"
-                    (click)="onStartWizardDialog()">
-              <mat-icon>add_box</mat-icon>
-              <span>Metadata wizard</span>
-            </button>
-            <button mat-raised-button color="primary"
-                    matTooltip="Validate serviceMetadata XML."
-                    matTooltipPosition="below"
-                    (click)="onServiceMetadataValidate()">
-              <mat-icon>warning</mat-icon>
-              <span>Validate</span>
-            </button>
-          </mat-toolbar-row>
-        </mat-toolbar>
-
-        <div style="display: block;border:1px; solid: #999999;margin:5px 0; padding:3px;">
-          <div class="textwrapper">
-            <textarea matInput style="width:100%;border: #03A9F4 1px solid" cols="2" rows="25"
-                      resizeable="false"
-                      id="MetadataTextArea"
-                      placeholder="Metadata XML*" name="metadataXML"
-                      [formControl]="dialogForm.controls['xmlContent']"
-
-                      required></textarea>
-          </div>
-          <div
-            *ngIf="(!editMode && dialogForm.controls['xmlContent'].dirty || editMode) &&  dialogForm.controls['xmlContent'].hasError('required')"
-            style="color:red; font-size: 70%">
-            Valid service metadata XML is required!
-          </div>
-          <div
-            *ngIf="metadataValidationMessage && !((!editMode && dialogForm.controls['xmlContent'].touched || editMode) &&  dialogForm.controls['xmlContent'].hasError('required'))"
-            [style.color]="isMetadataValid?'green':'red'">
-            {{metadataValidationMessage}}
-          </div>
-
-        </div>
-
-      </mat-card-content>
-    </mat-card>
-  </div>
-  <div class="required-fields">* required fields</div>
-</mat-dialog-content>
-<mat-dialog-actions>
-  <button mat-raised-button color="primary" (click)="submitForm()"
-          [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-group-metadata-dialog/service-group-metadata-dialog.component.spec.ts b/smp-angular/src/app/service-group-edit/service-group-metadata-dialog/service-group-metadata-dialog.component.spec.ts
deleted file mode 100644
index 86acc1f1913a61b83d755d8f4bfdab3ddcbba05e..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-metadata-dialog/service-group-metadata-dialog.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { ServiceGroupMetadataDialogComponent } from './service-group-metadata-dialog.component';
-
-describe('ServiceGroupMetadataDialogComponent', () => {
-  let component: ServiceGroupMetadataDialogComponent;
-  let fixture: ComponentFixture<ServiceGroupMetadataDialogComponent>;
-
-  beforeEach(async(() => {
-    TestBed.configureTestingModule({
-      declarations: [ ServiceGroupMetadataDialogComponent ]
-    })
-    .compileComponents();
-  }));
-
-  beforeEach(() => {
-    fixture = TestBed.createComponent(ServiceGroupMetadataDialogComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
diff --git a/smp-angular/src/app/service-group-edit/service-group-metadata-dialog/service-group-metadata-dialog.component.ts b/smp-angular/src/app/service-group-edit/service-group-metadata-dialog/service-group-metadata-dialog.component.ts
deleted file mode 100644
index e9af19b5f8ca9fe87c1d28f65bda276791cd7801..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-metadata-dialog/service-group-metadata-dialog.component.ts
+++ /dev/null
@@ -1,302 +0,0 @@
-import {Component, Inject, OnInit, ViewChild} from '@angular/core';
-import {MAT_DIALOG_DATA, MatDialog, MatDialogConfig, MatDialogRef} from '@angular/material/dialog';
-import {UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators} from "@angular/forms";
-import {AlertMessageService} from "../../common/alert-message/alert-message.service";
-import {EntityStatus} from "../../common/enums/entity-status.enum";
-import {ServiceMetadataEditRo} from "../service-metadata-edit-ro.model";
-import {GlobalLookups} from "../../common/global-lookups";
-import {ServiceMetadataWizardDialogComponent} from "../service-metadata-wizard-dialog/service-metadata-wizard-dialog.component";
-import {ServiceGroupEditRo} from "../service-group-edit-ro.model";
-import {SmpConstants} from "../../smp.constants";
-import {Observable} from "rxjs/internal/Observable";
-import {HttpClient} from "@angular/common/http";
-import {ServiceGroupDomainEditRo} from "../service-group-domain-edit-ro.model";
-import {ServiceMetadataValidationEditRo} from "./service-metadata-validation-edit-ro.model";
-import {ServiceMetadataWizardRo} from "../service-metadata-wizard-dialog/service-metadata-wizard-edit-ro.model";
-
-@Component({
-  selector: 'service-group-metadata-dialog',
-  templateUrl: './service-group-metadata-dialog.component.html',
-  styleUrls: ['./service-group-metadata-dialog.component.css']
-})
-export class ServiceGroupMetadataDialogComponent implements OnInit {
-
-  static readonly NEW_MODE = 'New ServiceMetadata';
-  static readonly EDIT_MODE = 'Edit ServiceMetadata';
-
-  @ViewChild('domainList') domainList: any;
-
-
-  editMode: boolean;
-  formTitle: string;
-  current: ServiceMetadataEditRo & { confirmation?: string };
-  currentServiceGroup: ServiceGroupEditRo;
-  dialogForm: UntypedFormGroup;
-  metadataValidationMessage: string;
-  xmlServiceMetadataObserver: Observable<ServiceMetadataEditRo>;
-  isMetadataValid: boolean = true;
-
-
-  constructor(public dialog: MatDialog,
-              protected http: HttpClient,
-              public lookups: GlobalLookups,
-              private dialogRef: MatDialogRef<ServiceGroupMetadataDialogComponent>,
-              private alertService: AlertMessageService,
-              @Inject(MAT_DIALOG_DATA) public data: any,
-              private fb: UntypedFormBuilder) {
-
-    this.editMode = data.edit;
-    this.formTitle = !!data.metadata ? ServiceGroupMetadataDialogComponent.EDIT_MODE : ServiceGroupMetadataDialogComponent.NEW_MODE;
-    this.currentServiceGroup = data.serviceGroup;
-    this.current = !!data.metadata
-      ? {
-        ...data.metadata,
-      }
-      : {
-        documentIdentifier: '',
-        documentIdentifierScheme: '',
-        smlSubdomain: this.currentServiceGroup.serviceGroupDomains[0].smlSubdomain,
-        domainCode: this.currentServiceGroup.serviceGroupDomains[0].domainCode,
-        domainId: null,
-        status: EntityStatus.NEW,
-        xmlContentStatus: EntityStatus.NEW,
-      };
-
-    this.dialogForm = fb.group({
-      'participantIdentifier': new UntypedFormControl({value: this.currentServiceGroup.participantIdentifier, disabled: true}),
-      'participantScheme': new UntypedFormControl({value: this.currentServiceGroup.participantScheme, disabled: true}),
-      'domainCode': new UntypedFormControl({}, [Validators.required]),
-
-      'documentIdentifier': new UntypedFormControl({value: this.current.documentIdentifier, disabled: this.editMode},
-        [Validators.required]),
-      'documentIdentifierScheme': new UntypedFormControl({
-          value: this.current.documentIdentifierScheme,
-          disabled: this.editMode
-        },
-        []),
-      'xmlContent': new UntypedFormControl({value: ''}, [Validators.required]),
-    });
-
-    // update values
-    this.dialogForm.controls['domainCode'].setValue(this.current.domainCode);
-    this.dialogForm.controls['xmlContent'].setValue(this.current.xmlContent);
-  }
-
-  ngOnInit() {
-
-    // retrieve xml extension for this service group
-    if (this.current.status !== EntityStatus.NEW && !this.current.xmlContent) {
-      // init domains
-      this.xmlServiceMetadataObserver = this.http.get<ServiceMetadataEditRo>(SmpConstants.REST_METADATA + '/' + this.current.id);
-      this.xmlServiceMetadataObserver.subscribe((res: ServiceMetadataEditRo) => {
-        this.dialogForm.get('xmlContent').setValue(res.xmlContent);
-        // store init xml to current value for change validation
-        this.current.xmlContent = res.xmlContent;
-      });
-    }
-
-  }
-
-  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();
-    });
-  }
-
-  submitForm() {
-    this.checkValidity(this.dialogForm);
-
-    // before closing check the schema
-    let request: ServiceMetadataValidationEditRo = {
-      participantScheme: this.dialogForm.controls['participantScheme'].value,
-      participantIdentifier: this.dialogForm.controls['participantIdentifier'].value,
-      documentIdentifierScheme: !this.dialogForm.controls['documentIdentifierScheme'].value ? null :
-        this.dialogForm.controls['documentIdentifierScheme'].value,
-      documentIdentifier: this.dialogForm.controls['documentIdentifier'].value,
-      xmlContent: this.dialogForm.controls['xmlContent'].value,
-      statusAction: this.editMode ? EntityStatus.UPDATED : EntityStatus.NEW,
-    }
-    //
-    let validationObservable = this.http.post<ServiceMetadataValidationEditRo>(SmpConstants.REST_METADATA_VALIDATE, request);
-    validationObservable.subscribe((res: ServiceMetadataValidationEditRo) => {
-      if (res.errorMessage) {
-        this.metadataValidationMessage = res.errorMessage;
-        this.isMetadataValid = false;
-      } else {
-        this.metadataValidationMessage = "ServiceMetada is valid!";
-        this.isMetadataValid = true;
-        // now we can close the dialog
-        this.dialogRef.close(true);
-      }
-
-    });
-  }
-
-  onClearServiceMetadata() {
-    this.dialogForm.controls['xmlContent'].setValue("");
-  }
-
-  onStartWizardDialog() {
-
-    let serviceMetadataWizard: ServiceMetadataWizardRo = {
-      isNewServiceMetadata: !this.editMode,
-      participantIdentifier: this.dialogForm.controls['participantIdentifier'].value,
-      participantScheme: this.dialogForm.controls['participantScheme'].value,
-      documentIdentifier: this.dialogForm.controls['documentIdentifier'].value,
-      documentIdentifierScheme: this.dialogForm.controls['documentIdentifierScheme'].value,
-      processIdentifier: '',
-      processScheme: '',
-      transportProfile: 'bdxr-transport-ebms3-as4-v1p0', // default value for oasis AS4
-
-      endpointUrl: '',
-      endpointCertificate: '',
-
-      serviceDescription: '',
-      technicalContactUrl: '',
-
-    }
-
-    let wizardInit: MatDialogConfig = {
-      data: serviceMetadataWizard
-    }
-
-
-    const formRef: MatDialogRef<any> = this.dialog.open(ServiceMetadataWizardDialogComponent, wizardInit);
-    formRef.afterClosed().subscribe(result => {
-      if (result) {
-
-        let smw: ServiceMetadataWizardRo = formRef.componentInstance.getCurrent();
-        this.dialogForm.controls['xmlContent'].setValue(smw.contentXML);
-        if (!this.editMode) {
-          this.dialogForm.controls['documentIdentifierScheme'].setValue(smw.documentIdentifierScheme);
-          this.dialogForm.controls['documentIdentifier'].setValue(smw.documentIdentifier);
-        }
-      }
-    });
-  }
-
-  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>';
-  }
-
-  onGenerateSimpleXML() {
-    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 scheme="[enterProcessType]">[enterProcessName]</ProcessIdentifier>' +
-      '\n                <ServiceEndpointList>' +
-      '\n                   <Endpoint transportProfile="bdxr-transport-ebms3-as4-v1p0">' +
-      '\n                        <EndpointURI>https://mypage.eu</EndpointURI>' +
-      '\n                        <Certificate>UGFzdGUgYmFzZTY0IGVuY29kZWQgY2VydGlmaWNhdGUgb2YgQVA=</Certificate>' +
-      '\n                        <ServiceDescription>Service description for partners</ServiceDescription>' +
-      '\n                        <TechnicalContactUrl>www.best-page.eu</TechnicalContactUrl>' +
-      '\n                    </Endpoint>' +
-      '\n                </ServiceEndpointList>' +
-      '\n            </Process>' +
-      '\n        </ProcessList>' +
-      '\n    </ServiceInformation>' +
-      '\n</ServiceMetadata>';
-    this.dialogForm.controls['xmlContent'].setValue(exampleXML);
-  }
-
-  xmlSpecialChars(unsafe) {
-    return !unsafe ? '' : unsafe
-      .replace(/&/g, "&amp;")
-      .replace(/</g, "&lt;")
-      .replace(/>/g, "&gt;")
-      .replace(/"/g, "&quot;");
-  }
-
-  onServiceMetadataValidate() {
-
-    let request: ServiceMetadataValidationEditRo = {
-
-      participantScheme: this.dialogForm.controls['participantScheme'].value,
-      participantIdentifier: this.dialogForm.controls['participantIdentifier'].value,
-      documentIdentifierScheme: !this.dialogForm.controls['documentIdentifierScheme'].value ? null :
-        this.dialogForm.controls['documentIdentifierScheme'].value,
-      documentIdentifier: this.dialogForm.controls['documentIdentifier'].value,
-      xmlContent: this.dialogForm.controls['xmlContent'].value,
-      statusAction: this.editMode ? EntityStatus.UPDATED : EntityStatus.NEW,
-    }
-    //
-    let validationObservable = this.http.post<ServiceMetadataValidationEditRo>(SmpConstants.REST_METADATA_VALIDATE, request);
-    validationObservable.subscribe((res: ServiceMetadataValidationEditRo) => {
-      if (res.errorMessage) {
-        this.metadataValidationMessage = res.errorMessage;
-        this.isMetadataValid = false;
-      } else {
-        this.metadataValidationMessage = "Servicemetadata is valid!";
-        this.isMetadataValid = true;
-      }
-
-    });
-  }
-
-  public getCurrent(): ServiceMetadataEditRo {
-
-    this.current.domainCode = this.domainList.selected.value.domainCode;
-    this.current.smlSubdomain = this.domainList.selected.value.smlSubdomain;
-    this.current.domainId = this.domainList.selected.value.domainId;
-
-    this.current.xmlContent = this.dialogForm.value['xmlContent'];
-    // change this two properties only on new
-    if (this.current.status === EntityStatus.NEW) {
-      this.current.documentIdentifier = this.dialogForm.value['documentIdentifier'];
-      this.current.documentIdentifierScheme = this.dialogForm.value['documentIdentifierScheme'];
-    } else if (this.current.status === EntityStatus.PERSISTED) {
-      this.current.status = EntityStatus.UPDATED;
-      this.current.xmlContentStatus = EntityStatus.UPDATED;
-    }
-    return this.current;
-  }
-
-  //!! this two method must be called before getCurrent
-  public isMetaDataXMLChanged(): boolean {
-    return this.dialogForm.value['xmlContent'] !== this.current.xmlContent;
-  }
-
-  public isServiceMetaDataChanged(): boolean {
-    return this.isMetaDataXMLChanged() || !this.isEqual(this.current.domainCode, this.domainList.selected.value.domainCode);
-  }
-
-  compareDomainCode(sgDomain: ServiceGroupDomainEditRo, domainCode: string): boolean {
-    return sgDomain.domainCode === domainCode;
-  }
-
-  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/service-group-edit/service-group-metadata-dialog/service-metadata-validation-edit-ro.model.ts b/smp-angular/src/app/service-group-edit/service-group-metadata-dialog/service-metadata-validation-edit-ro.model.ts
deleted file mode 100644
index 3f5fb422391df2c6d58fa4d307ded6ac45309771..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-group-metadata-dialog/service-metadata-validation-edit-ro.model.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-
-export interface ServiceMetadataValidationEditRo {
-  participantScheme: string;
-  participantIdentifier: string;
-  documentIdentifierScheme: string;
-  documentIdentifier: string;
-
-  errorMessage?: string;
-  xmlContent?: string;
-  statusAction: number;
-}
diff --git a/smp-angular/src/app/service-group-edit/service-metadata-edit-ro.model.ts b/smp-angular/src/app/service-group-edit/service-metadata-edit-ro.model.ts
deleted file mode 100644
index 8f6e3dfa5d3c572f937003a66bd870af2997d4a6..0000000000000000000000000000000000000000
--- a/smp-angular/src/app/service-group-edit/service-metadata-edit-ro.model.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import {SearchTableEntity} from "../common/search-table/search-table-entity.model";
-
-
-export interface ServiceMetadataEditRo extends SearchTableEntity  {
-  documentIdentifier: string;
-  documentIdentifierScheme?: string;
-  smlSubdomain: string;
-  domainCode: string;
-  domainId: null,
-  xmlContent?:string,
-  xmlContentStatus:number,
-
-}
diff --git a/smp-angular/src/app/service-group-search/service-group-search.component.ts b/smp-angular/src/app/service-group-search/service-group-search.component.ts
index fc9a7a11730e8472ac7255657144ba3721eca33d..d4ae3b77022cabd171dcefed31a11deb77174cf9 100644
--- a/smp-angular/src/app/service-group-search/service-group-search.component.ts
+++ b/smp-angular/src/app/service-group-search/service-group-search.component.ts
@@ -46,10 +46,6 @@ export class ServiceGroupSearchComponent implements OnInit, AfterViewInit, After
     this.baseUrl = SmpConstants.REST_PUBLIC_SEARCH_SERVICE_GROUP;
   }
 
-  ngOnDestroy() {
-
-  }
-
   ngOnInit(): void {
     this.serviceGroupSearchController = new ServiceGroupSearchController(this.dialog);
   }
diff --git a/smp-angular/src/app/system-settings/admin-domain/domain-sml-panel/domain-sml-integration-panel.component.html b/smp-angular/src/app/system-settings/admin-domain/domain-sml-panel/domain-sml-integration-panel.component.html
index c29aa9fe6df516226c70d961db2c4b3b9e9dcd8c..31c5d8fdb84539ce92cfebb9991b2758c9a37eb8 100644
--- a/smp-angular/src/app/system-settings/admin-domain/domain-sml-panel/domain-sml-integration-panel.component.html
+++ b/smp-angular/src/app/system-settings/admin-domain/domain-sml-panel/domain-sml-integration-panel.component.html
@@ -71,15 +71,15 @@
     <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-label>SML Client Certificate Alias</mat-label>
-      <mat-select
+      <select matNativeControl
         formControlName="smlClientKeyAlias"
         id="smlClientKeyAlias_id">
-        <mat-option [value]="''">Choose certificate for signing soap response</mat-option>
-        <mat-option *ngFor="let cert of keystoreCertificates" [value]="cert.alias">
+        <option [value]="''">Choose certificate for signing soap response</option>
+        <option *ngFor="let cert of keystoreCertificates" [value]="cert.alias">
           {{cert.alias}} ({{cert.certificateId}})
-        </mat-option>
+        </option>
 
-      </mat-select>
+      </select>
     </mat-form-field>
 
     <mat-slide-toggle style="width:100%"
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/property/property-details-dialog/property-details-dialog.component.ts
index 3440cd079354196f0e7108423fa981813e531917..31629a37ff27fceb610608a20160927c17ff4e81 100644
--- a/smp-angular/src/app/system-settings/property/property-details-dialog/property-details-dialog.component.ts
+++ b/smp-angular/src/app/system-settings/property/property-details-dialog/property-details-dialog.component.ts
@@ -4,9 +4,7 @@ import {UntypedFormBuilder, UntypedFormControl, UntypedFormGroup} from "@angular
 import {PropertyRo} from "../property-ro.model";
 import {AlertMessageService} from "../../../common/alert-message/alert-message.service";
 import {EntityStatus} from "../../../common/enums/entity-status.enum";
-import {ServiceGroupValidationRo} from "../../../service-group-edit/service-group-details-dialog/service-group-validation-edit-ro.model";
 import {SmpConstants} from "../../../smp.constants";
-import {ServiceGroupValidationErrorCodeModel} from "../../../service-group-edit/service-group-details-dialog/service-group-validation-error-code.model";
 import {PropertyValidationRo} from "../property-validate-ro.model";
 import {HttpClient} from "@angular/common/http";
 import {HttpErrorHandlerService} from "../../../common/error/http-error-handler.service";