diff --git a/domiSMP-ui-tests/src/main/java/ddsl/DomiSMPPage.java b/domiSMP-ui-tests/src/main/java/ddsl/DomiSMPPage.java
index 8189d08ed5a19b15540dcea63ffdadfd30aff3a7..ecabeb5ebe0e2a7b0a7235227a3854b594caa30a 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/DomiSMPPage.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/DomiSMPPage.java
@@ -30,9 +30,6 @@ public class DomiSMPPage extends DComponent {
     private WebElement rightMenuBtn;
     @FindBy(id = "logout_id")
     private WebElement logoutMenuBtn;
-    @FindBy(className = "smp-expired-password-dialog")
-    private WebElement expiredPasswordDialog;
-
     @FindBy(css = "#okbuttondialog_id ")
     private WebElement dialogOKbutton;
 
@@ -75,30 +72,13 @@ public class DomiSMPPage extends DComponent {
     }
 
     public boolean isExpiredDialoginbuttonEnabled() {
-        return dialogOKbutton.isEnabled();
-    }
-
-    public boolean isExpiredPopupEnabled() {
         try {
-            return dialogOKbutton.isDisplayed();
+            return dialogOKbutton.isEnabled();
         } catch (Exception e) {
             LOG.info("Expiration poup not found", e);
             return false;
         }
-
-    }
-
-    public void closeExpirationPopupIfEnabled() {
-        try {
-            if (isExpiredPopupEnabled()) {
-                LOG.info("Expired password dialog is present.");
-                getSidebar().getExpiredDialoginbutton().click();
-            }
-        } catch (Exception e) {
-            LOG.error("Could not close Expiration popup", e);
-        }
     }
-
     public void waitForPageToLoaded() {
         wait.defaultWait.until(ExpectedConditions.visibilityOf(getBreadcrump().BreadcrumpItems.get(0)));
     }
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/PageWithGrid.java b/domiSMP-ui-tests/src/main/java/ddsl/PageWithGrid.java
index b8de9affe439a510ced37c9c42446ecc93441231..a4f5dad87f4073f24d6b581cd44342f2392992ab 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/PageWithGrid.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/PageWithGrid.java
@@ -7,22 +7,26 @@ import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
 import org.openqa.selenium.support.PageFactory;
 import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+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;
+    public WebElement filterInput;
     @FindBy(css = "data-panel >div >div> mat-toolbar button:first-of-type")
-    public WebElement AddBtn;
-
-    @FindBy(css = "data-panel >div >div> mat-toolbar button:last-of-type")
-    public WebElement DeleteBtn;
-    @FindBy(css = "data-panel > div [class=\"smp-column-data\"]")
-    public WebElement SidePanel;
+    public WebElement addBtn;
+    @FindBy(css = "data-panel")
+    public WebElement dataPanel;
+    @FindBy(css = "[role = \"tab\"]")
+    private List<WebElement> tabList;
 
     public PageWithGrid(WebDriver driver) {
         super(driver);
@@ -30,20 +34,25 @@ public class PageWithGrid extends DomiSMPPage {
     }
 
     public GridPagination getPagination() {
-        return new GridPagination(driver);
+        return new GridPagination(driver, dataPanel);
     }
 
-    public SmallGrid getGrid() {
-        return new SmallGrid(driver);
+    public SmallGrid getDataPanelGrid() {
+        return new SmallGrid(driver, dataPanel);
     }
 
-    public void filter(String filterValue) {
-        try {
-            weToDInput(FilterInput).fill(filterValue);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
+    public void goToTab(String tabName) {
+        for (WebElement element : tabList) {
+            if (element.getText().contains(tabName)) {
+                element.click();
+                wait.forAttributeToContain(element, "aria-selected", "true");
+                LOG.debug("Domain tab {} is opened", tabName);
+            }
         }
     }
 
+    public String getAlertMessageAndClose() {
 
+        return getAlertArea().getAlertMessage();
+    }
 }
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 312d30442bd118128e1c10c0871259847e34c30a..11c4c7ad9dd5492781bcc565266135cb4e8e66ab 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/AlertComponent.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/AlertComponent.java
@@ -18,6 +18,10 @@ public class AlertComponent extends DComponent {
     @FindBy(id = "alertmessage_id")
     public WebElement alertToaster;
 
+    @FindBy(css = "[class = \"closebtn\"]")
+    public WebElement closeBtn;
+
+
     public AlertComponent(WebDriver driver) {
         super(driver);
         PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getTIMEOUT()), this);
@@ -28,11 +32,11 @@ public class AlertComponent extends DComponent {
             wait.forElementToBeVisible(alertToaster, true);
             String alertMesageText = alertToaster.getText().replace("×", "").replaceAll("\n", "");
             LOG.debug("Displayed message : {}.", alertToaster.getText());
-
+            closeBtn.click();
             return alertMesageText;
         } catch (Exception e) {
-            LOG.debug("No messages displayed.");
-            return null;
+            LOG.error("No messages displayed.");
+            return "No alert message found";
         }
     }
 
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 96f00df89bb5b8283942b29ebaa2ab56197e9299..34632c53ecc34cbd70e879c293e1882b1e9cee8b 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/ConfirmationDialog.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/ConfirmationDialog.java
@@ -29,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/Grid/GridPagination.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/Grid/GridPagination.java
index a45faaf69b4491bffa0ace67d811f2ea1f19c115..1901de0d4b887dc9b0182196a9f2a62e9d2a6af9 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/Grid/GridPagination.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/Grid/GridPagination.java
@@ -1,9 +1,9 @@
 package ddsl.dcomponents.Grid;
 
 import ddsl.dcomponents.DComponent;
+import org.openqa.selenium.By;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
-import org.openqa.selenium.support.FindBy;
 import org.openqa.selenium.support.PageFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -13,34 +13,25 @@ import java.util.regex.Pattern;
 
 public class GridPagination extends DComponent {
     private final static Logger LOG = LoggerFactory.getLogger(GridPagination.class);
+    protected static final By currentElementsLblLocator = By.cssSelector("div.mat-mdc-paginator-range-label");
+    protected static final By nextPageBtnLocator = By.cssSelector("[aria-label= \"Next page\"]");
+    private final WebElement parentElement;
 
-    @FindBy(css = "#extension-paginator > div > div > div > div")
-    public WebElement currentElementsLbl;
-
-    @FindBy(css = "#extension-paginator > div > div > div  [aria-label = \"First page\"]")
-    public WebElement firstPageBtn;
-    @FindBy(css = "#extension-paginator > div > div > div  [aria-label = \"Next page\"]")
-    public WebElement previousPageBtn;
-
-    @FindBy(css = "#extension-paginator > div > div > div  [aria-label = \"Next page\"]")
-    public WebElement nextPageBtn;
-
-    @FindBy(css = "#extension-paginator > div > div > div  [aria-label = \"Last page\"]")
-    public WebElement lastPageBtn;
-
-
-    public GridPagination(WebDriver driver) {
+    public GridPagination(WebDriver driver, WebElement parentElement) {
         super(driver);
         PageFactory.initElements(driver, this);
+        this.parentElement = parentElement;
+
     }
 
     public Integer getTotalPageNumber() {
-        String val = currentElementsLbl.getText();
+        String val = parentElement.findElement(currentElementsLblLocator).getText();
+        Integer numofElementsPerPage = 5;
         Pattern pattern = Pattern.compile("of (\\d+)");
         Matcher matcher = pattern.matcher(val);
         if (matcher.find()) {
             Integer totalRecord = Integer.parseInt(matcher.group(1));
-            return (totalRecord % 5 == 0) ? (totalRecord / 5) : ((totalRecord / 5) + 1);
+            return (totalRecord % numofElementsPerPage == 0) ? (totalRecord / numofElementsPerPage) : ((totalRecord / numofElementsPerPage) + 1);
         }
         return null;
     }
@@ -48,8 +39,8 @@ public class GridPagination extends DComponent {
 
     public void goToNextPage() {
         try {
-            if (weToDButton(nextPageBtn).isPresent()) {
-                weToDButton(nextPageBtn).click();
+            if (weToDButton(parentElement.findElement(nextPageBtnLocator)).isPresent()) {
+                weToDButton(parentElement.findElement(nextPageBtnLocator)).click();
                 LOG.error("Click on Grid Next Page button");
 
             } else {
@@ -61,13 +52,4 @@ public class GridPagination extends DComponent {
         }
     }
 
-
-    public void goToPreviousPage() throws Exception {
-        if (weToDButton(previousPageBtn).isEnabled()) {
-            weToDButton(previousPageBtn).click();
-
-        } else {
-            LOG.error("Previous page button is not available.");
-        }
-    }
 }
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/Grid/SmallGrid.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/Grid/SmallGrid.java
index 5d62cd0c2b86b1a94916e08fe4c896a5eb254707..46e8a983003ed1347cc2deee61586167ea62e30a 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/Grid/SmallGrid.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/Grid/SmallGrid.java
@@ -4,9 +4,7 @@ import ddsl.dcomponents.DComponent;
 import org.openqa.selenium.By;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
-import org.openqa.selenium.support.FindBy;
 import org.openqa.selenium.support.PageFactory;
-import org.openqa.selenium.support.ui.ExpectedConditions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -14,29 +12,28 @@ import java.util.List;
 
 public class SmallGrid extends DComponent {
     private final static Logger LOG = LoggerFactory.getLogger(SmallGrid.class);
+    protected static final By gridHeadersLocator = By.cssSelector("table thead th");
+    protected static final By gridRowsLocator = By.cssSelector("table tbody tr");
+    private final WebElement parentElement;
 
-    @FindBy(css = "data-panel table thead th")
-    protected List<WebElement> gridHeaders;
-    @FindBy(css = "data-panel table tbody tr")
-    protected List<WebElement> gridRows;
 
-    public SmallGrid(WebDriver driver) {
+    public SmallGrid(WebDriver driver, WebElement parentElement) {
         super(driver);
         PageFactory.initElements(driver, this);
+        this.parentElement = parentElement;
 
     }
 
     public GridPagination getGridPagination() {
-        return new GridPagination(driver);
+        return new GridPagination(driver, parentElement);
     }
 
-    public List<WebElement> gerGridHeaders() {
-        return wait.defaultWait.until(ExpectedConditions.visibilityOfAllElements(gridHeaders));
+    public List<WebElement> getGridHeaders() {
+        return parentElement.findElements(gridHeadersLocator);
     }
 
     public List<WebElement> getRows() {
-        wait.forXMillis(50);
-        return wait.defaultWait.until(ExpectedConditions.visibilityOfAllElements(gridRows));
+        return parentElement.findElements(gridRowsLocator);
     }
 
     public List<WebElement> getCells(WebElement row) {
@@ -45,8 +42,9 @@ public class SmallGrid extends DComponent {
 
     public WebElement searchValueInColumn(String columnName, String value) {
 
+        wait.forXMillis(100);
         Integer numOfPages = getGridPagination().getTotalPageNumber();
-        List<WebElement> rowHeaders = gerGridHeaders();
+        List<WebElement> rowHeaders = getGridHeaders();
         int columnIndex = -1;
         for (int i = 0; i < rowHeaders.size(); i++) {
             if (rowHeaders.get(i).getText().equals(columnName)) {
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 a370088082e404d702ae91fde8d4e050a31081c4..c886b09be0e49e8c2a73fe8ab8518a4507a5dc91 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SetChangePasswordDialog.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SetChangePasswordDialog.java
@@ -7,16 +7,16 @@ import org.openqa.selenium.support.PageFactory;
 import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import pages.ProfilePage.SuccesfullPasswordChangedPopup;
+import pages.profilePage.SuccesfullPasswordChangedPopup;
 
 import java.util.ArrayList;
 import java.util.List;
 
 public class SetChangePasswordDialog extends DComponent {
+
     /**
-     * Component object for dialog of changing password.
+     * Page object for the Set/change password dialog. This contains the locators of the page and the methods for the behaviour of the page
      */
-
     private final static Logger LOG = LoggerFactory.getLogger(SetChangePasswordDialog.class);
     @FindBy(css = ".smp-field-error")
     List<WebElement> fieldsError;
@@ -28,8 +28,6 @@ public class SetChangePasswordDialog extends DComponent {
     private WebElement confirmationPasswordInput;
     @FindBy(id = "changeCurrentUserPasswordButton")
     private WebElement setPasswordBtn;
-    @FindBy(id = "closeDialogButton")
-    private WebElement closeBtn;
 
 
     public SetChangePasswordDialog(WebDriver driver) {
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 fa01a60d1ae948ef13eafa75d356bca91faed111..20e217372fb3981ac8fa41a470c8c56b7865dac7 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SideNavigationComponent.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SideNavigationComponent.java
@@ -2,20 +2,20 @@ package ddsl.dcomponents;
 
 import ddsl.DomiSMPPage;
 import ddsl.enums.Pages;
-import org.openqa.selenium.ElementNotInteractableException;
 import org.openqa.selenium.NoSuchElementException;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
 import org.openqa.selenium.support.PageFactory;
 import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
-import org.openqa.selenium.support.ui.ExpectedConditions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import pages.DomainsPage.DomainsPage;
-import pages.ProfilePage.ProfilePage;
-import pages.PropertiesPage.PropertiesPage;
+import pages.TruststorePage;
 import pages.UsersPage;
+import pages.editDomainsPage.EditDomainsPage;
+import pages.profilePage.ProfilePage;
+import pages.propertiesPage.PropertiesPage;
 
 import java.util.Objects;
 
@@ -103,29 +103,16 @@ public class SideNavigationComponent extends DomiSMPPage {
         return null;
     }
 
-    public <T> T navigateTo2(Pages page) {
-
-        wait.defaultWait.until(ExpectedConditions.visibilityOf(sideBar));
-        if (page == Pages.SYSTEM_SETTINGS_DOMAINS) {
-            openSubmenu(systemSettingsExpand, domainsLnk);
-            return (T) new DomainsPage(driver);
-        }
-        return null;
-
-
-    }
-
-    public DomiSMPPage navigateTo(Pages page) {
-
-        wait.defaultWait.until(ExpectedConditions.visibilityOf(sideBar));
-
+    public <T> T navigateTo(Pages page) {
         LOG.debug("Get link to " + page.name());
         //            case SEARCH_RESOURCES:
         //                expandSection(resourcesExpandLnk);s
         //                return new DLink(driver, resourcesLnk);
-        //            case ADMINISTRATION_EDIT_DOMAINS:
-        //                expandSection(administrationExpand);
-        //                return new DLink(driver, editDomainsLnk);
+        if (page == Pages.ADMINISTRATION_EDIT_DOMAINS) {
+            openSubmenu(administrationExpand, editDomainsLnk);
+            return (T) new EditDomainsPage(driver);
+        }
+
         //            case ADMINISTRATION_EDIT_GROUPS:
         //                expandSection(administrationExpand);
         //                return new DLink(driver, editGroupsLnk);
@@ -135,25 +122,26 @@ public class SideNavigationComponent extends DomiSMPPage {
 
         if (page == Pages.SYSTEM_SETTINGS_USERS) {
             openSubmenu(systemSettingsExpand, usersLnk);
-            return new UsersPage(driver);
+            return (T) new UsersPage(driver);
         }
         if (page == Pages.SYSTEM_SETTINGS_DOMAINS) {
             openSubmenu(systemSettingsExpand, domainsLnk);
-            return new DomainsPage(driver);
+            return (T) new DomainsPage(driver);
         }
 
         //            case SYSTEM_SETTINGS_KEYSTORE:
         //                expandSection(systemSettingsExpand);
         //                return new DLink(driver, keystoreLnk);
-        //            case SYSTEM_SETTINGS_TRUSTSTORE:
-        //                expandSection(systemSettingsExpand);
-        //                return new DLink(driver, truststoreLnk);
+        if (page == Pages.SYSTEM_SETTINGS_TRUSTSTORE) {
+            openSubmenu(systemSettingsExpand, truststoreLnk);
+            return (T) new TruststorePage(driver);
+        }
         //            case SYSTEM_SETTINGS_EXTENSIONS:
         //                expandSection(systemSettingsExpand);
         //                return new DLink(driver, extensionsLnk);
         if (page == Pages.SYSTEM_SETTINGS_PROPERTIES) {
             openSubmenu(systemSettingsExpand, propertiesLnk);
-            return new PropertiesPage(driver);
+            return (T) new PropertiesPage(driver);
         }
 
         //            case SYSTEM_SETTINGS_ALERS:
@@ -161,7 +149,7 @@ public class SideNavigationComponent extends DomiSMPPage {
         //                return new DLink(driver, alersLnk);
         if (page == Pages.USER_SETTINGS_PROFILE) {
             openSubmenu(userSettingsExpand, profileLnk);
-            return new ProfilePage(driver);
+            return (T) new ProfilePage(driver);
 //            case USER_SETTINGS_ACCESS_TOKEN:
 //                //expandSection(userSettingsExpand);
 //                //accessTokensLnk.click();
@@ -176,7 +164,6 @@ public class SideNavigationComponent extends DomiSMPPage {
     public Boolean isMenuAvailable(Pages page) {
         MenuNavigation navigationLinks = getNavigationLinks(page);
         try {
-            assert navigationLinks != null;
             if (navigationLinks.menuLink.isEnabled()) {
                 navigationLinks.menuLink.click();
                 return navigationLinks.submenuLink.isEnabled();
@@ -189,31 +176,46 @@ public class SideNavigationComponent extends DomiSMPPage {
     }
 
     private void openSubmenu(WebElement menuBtn, WebElement submenuBtn) {
-        try {
-            submenuBtn.click();
-            if (submenuBtn.getText().contains(getBreadcrump().getCurrentPage())) {
-                LOG.info("Current page is " + getBreadcrump().getCurrentPage());
 
-            } else {
-                LOG.error("Current page is not as expected. EXPECTED: [{}] but ACTUAL PAGE [{}]", submenuBtn.getText(), getBreadcrump().getCurrentPage());
-                throw new RuntimeException();
-            }
-
-        } catch (ElementNotInteractableException exception) {
-
-            // closeExpirationPopupIfEnabled();
+        if (!menuBtn.getAttribute("class").contains("cdk-focused")) {
             menuBtn.click();
-            submenuBtn.click();
-            if (submenuBtn.getText().contains(getBreadcrump().getCurrentPage())) {
-                LOG.info("Current page is " + getBreadcrump().getCurrentPage());
+        }
+        submenuBtn.click();
+        if (submenuBtn.getText().contains(getBreadcrump().getCurrentPage())) {
+            LOG.info("Current page is " + getBreadcrump().getCurrentPage());
 
-            } else {
-                LOG.error("Current page is not as expected. EXPECTED: " + submenuBtn.getText() + "but ACTUAL PAGE: " + getBreadcrump().getCurrentPage());
-                throw new RuntimeException();
-            }
+        } else {
+            LOG.error("Current page is not as expected. EXPECTED: " + submenuBtn.getText() + "but ACTUAL PAGE: " + getBreadcrump().getCurrentPage());
+            throw new RuntimeException();
         }
     }
 
+//    private void openSubmenu(WebElement menuBtn, WebElement submenuBtn) {
+//        try {
+//            submenuBtn.click();
+//            if (submenuBtn.getText().contains(getBreadcrump().getCurrentPage())) {
+//                LOG.info("Current page is " + getBreadcrump().getCurrentPage());
+//
+//            } else {
+//                LOG.error("Current page is not as expected. EXPECTED: [{}] but ACTUAL PAGE [{}]", submenuBtn.getText().toString(), getBreadcrump().getCurrentPage().toString());
+//                throw new RuntimeException();
+//            }
+//
+//        } catch (ElementNotInteractableException exception) {
+//
+//            // closeExpirationPopupIfEnabled();
+//            menuBtn.click();
+//            submenuBtn.click();
+//            if (submenuBtn.getText().contains(getBreadcrump().getCurrentPage())) {
+//                LOG.info("Current page is " + getBreadcrump().getCurrentPage());
+//
+//            } else {
+//                LOG.error("Current page is not as expected. EXPECTED: " + submenuBtn.getText() + "but ACTUAL PAGE: " + getBreadcrump().getCurrentPage());
+//                throw new RuntimeException();
+//            }
+//        }
+//    }
+
     public static class MenuNavigation {
         WebElement menuLink;
         WebElement submenuLink;
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/UserDataCommonComponent.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/UserDataCommonComponent.java
similarity index 90%
rename from domiSMP-ui-tests/src/main/java/ddsl/dcomponents/UserDataCommonComponent.java
rename to domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/UserDataCommonComponent.java
index deb3c3deb17712a0b56a53a6fc9f167cefb67ff1..415c194853677b69c71bff3bd5f359efce1d49c0 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/UserDataCommonComponent.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/UserDataCommonComponent.java
@@ -1,6 +1,7 @@
-package ddsl.dcomponents;
+package ddsl.dcomponents.commonComponents;
 
 import ddsl.DomiSMPPage;
+import ddsl.dcomponents.SetChangePasswordDialog;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
@@ -58,7 +59,7 @@ public class UserDataCommonComponent extends DomiSMPPage {
         return passwordExpiresOnLbl.getText();
     }
 
-    public SetChangePasswordDialog setChangePasswordDialog() {
+    public SetChangePasswordDialog getChangePasswordDialog() {
         return new SetChangePasswordDialog(driver);
     }
 
@@ -71,8 +72,8 @@ public class UserDataCommonComponent extends DomiSMPPage {
             if (!emailValue.isEmpty()) {
                 weToDInput(fullNameInput).fill(fullNameValue);
             }
-            weToDSelect(themeSel).selectValue(selectThemeValue);
-            weToDSelect(localeSel).selectValue(localeValue);
+            weToDSelect(themeSel).selectByVisibleText(selectThemeValue);
+            weToDSelect(localeSel).selectByVisibleText(localeValue);
 
 
         } catch (Exception e) {
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/members/InviteMembersPopup.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/members/InviteMembersPopup.java
new file mode 100644
index 0000000000000000000000000000000000000000..6ee55a3aaef384e183ab26f7c6d03b1d371149a6
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/members/InviteMembersPopup.java
@@ -0,0 +1,45 @@
+package ddsl.dcomponents.commonComponents.members;
+
+import ddsl.dcomponents.DComponent;
+import org.openqa.selenium.Keys;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.PageFactory;
+import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class InviteMembersPopup extends DComponent {
+    private final static Logger LOG = LoggerFactory.getLogger(InviteMembersPopup.class);
+    @FindBy(id = "saveButton")
+    public WebElement saveBtn;
+    @FindBy(id = "member-user")
+    private WebElement selectMemberBtn;
+    @FindBy(css = "[formcontrolname=\"member-roleType\"]")
+    private WebElement selectMemberROleDdl;
+
+    public InviteMembersPopup(WebDriver driver) {
+        super(driver);
+        PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getTIMEOUT()), this);
+
+    }
+
+    public void selectMember(String username, String role) {
+        LOG.debug("Inviting member {} with role {}", username, role);
+        selectMemberBtn.sendKeys(username);
+        selectMemberBtn.sendKeys(Keys.ARROW_DOWN);
+        selectMemberBtn.sendKeys(Keys.ENTER);
+        weToDSelect(selectMemberROleDdl).selectByVisibleText(role);
+        saveBtn.click();
+    }
+
+    public void changeRole(String newRole) {
+
+        if (!weToDSelect(selectMemberROleDdl).getCurrentValue().equals(newRole)) {
+            weToDSelect(selectMemberROleDdl).selectByVisibleText(newRole);
+            LOG.debug("Changing role to {}", newRole);
+        }
+        saveBtn.click();
+    }
+}
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/members/MembersComponent.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/members/MembersComponent.java
new file mode 100644
index 0000000000000000000000000000000000000000..5ffa463fb9753f0e43989298d3495c0b3a0386c4
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/members/MembersComponent.java
@@ -0,0 +1,58 @@
+package ddsl.dcomponents.commonComponents.members;
+
+import ddsl.dcomponents.ConfirmationDialog;
+import ddsl.dcomponents.DComponent;
+import ddsl.dcomponents.Grid.SmallGrid;
+import ddsl.dobjects.DButton;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MembersComponent extends DComponent {
+    private final static Logger LOG = LoggerFactory.getLogger(MembersComponent.class);
+
+    @FindBy(id = "addMemberButton")
+    private WebElement inviteMemberBtn;
+
+    @FindBy(id = "deleteButton")
+    private WebElement removeMemberBtn;
+    @FindBy(css = "div domain-member-panel")
+    private WebElement sidePanel;
+
+    public MembersComponent(WebDriver driver) {
+        super(driver);
+        LOG.debug("Members component is loaded");
+        //wait.forElementToBeVisible(inviteMemberBtn);
+    }
+
+    public SmallGrid getMembersGrid() {
+        return new SmallGrid(driver, sidePanel);
+    }
+
+    public InviteMembersPopup getInviteMembersPopup() {
+        return new InviteMembersPopup(driver);
+    }
+
+    public DButton getInviteMemberBtn() {
+        return weToDButton(inviteMemberBtn);
+    }
+
+    public void removeUser(String username) throws Exception {
+        getMembersGrid().searchValueInColumn("Username", username).click();
+        weToDButton(removeMemberBtn).click();
+        ConfirmationDialog confirmationDialog = new ConfirmationDialog(driver);
+        confirmationDialog.confirm();
+    }
+
+    public void changeRoleOfUser(String username, String newRole) throws Exception {
+        getMembersGrid().searchValueInColumn("Username", username).click();
+        weToDButton(sidePanel.findElement(By.id("editButton"))).click();
+        getInviteMembersPopup().changeRole(newRole);
+
+
+    }
+
+}
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 f9e1393b5a58053fbe8942aedd7244f28f10cce9..888bd256b5e9833cf444fb9bfbee1a285437e580 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DSelect.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DSelect.java
@@ -15,10 +15,13 @@ public class DSelect extends DObject {
         super(driver, element);
     }
 
-    public void selectValue(String value) {
+    public void selectByVisibleText(String value) {
         select.selectByVisibleText(value);
     }
 
+    public void selectValue(String value) {
+        select.selectByValue(value);
+    }
     public String getCurrentValue() {
         return select.getAllSelectedOptions().get(0).getText();
     }
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 9ed3bf0c48c3aed01252756c464fdc0eced8246d..68cc7960407eb3789071cd310f5fc78b2eb16599 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DWait.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DWait.java
@@ -17,6 +17,10 @@ public class DWait {
 
     private final static Logger LOG = LoggerFactory.getLogger(DWait.class);
 
+    /**
+     * Wait class which gives access to different types of waits.
+     */
+
     public final WebDriverWait defaultWait;
     public final WebDriverWait longWait;
     public final WebDriverWait shortWait;
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/enums/ResourceTypes.java b/domiSMP-ui-tests/src/main/java/ddsl/enums/ResourceTypes.java
index 0eda2cf5511692a983a3e3a28dc830464e33845c..37845e4722e585c72294373e87d951256cfb5f98 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/enums/ResourceTypes.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/enums/ResourceTypes.java
@@ -1,13 +1,15 @@
 package ddsl.enums;
 
-import java.util.Random;
-
 public enum ResourceTypes {
     OASIS1("edelivery-oasis-smp-1.0-servicegroup (smp-1)"),
     OASIS2("edelivery-oasis-smp-2.0-servicegroup (oasis-bdxr-smp-2)"),
     OASIS3("edelivery-oasis-cppa-3.0-cpp (cpp)");
 
 
+    public String getName() {
+        return name;
+    }
+
     public final String name;
 
 
@@ -16,12 +18,5 @@ public enum ResourceTypes {
 
     }
 
-    public static String getRandomResourceType() {
-        ResourceTypes[] resourceTypes = values();
-        int size = resourceTypes.length;
-        Random random = new Random();
-        int index = random.nextInt(size);
-        return resourceTypes[index].name;
-    }
 
 }
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/enums/ResponseCertificates.java b/domiSMP-ui-tests/src/main/java/ddsl/enums/ResponseCertificates.java
index af3d3edcf1ac370fbf325ef0473126ea99ea1630..ec7d97701cf5d9447d6b2f6f90877784a075fdae 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/enums/ResponseCertificates.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/enums/ResponseCertificates.java
@@ -1,29 +1,23 @@
 package ddsl.enums;
 
-import java.util.Random;
-
 public enum ResponseCertificates {
     SMP_DOMAIN_02("smp_domain_02 (CN=smp_domain_02,O=digit,C=eu:000000006443d987)"),
     SMP_EDDSA_448("smp_eddsa_448 (CN=smp_eddsa_448,O=digit,C=eu:000000006443fcba)"),
     SMP_ECDSA_NIST_B409("smp_ecdsa_nist-b409 (CN=smp_ecdsa_nist-b409,O=digit,C=eu:000000006443fd57)"),
-    SMP_DOMAIN_01("smp_domain_01 (CN=smp_domain_01,O=digit,C=eu:000000006443d8a8"),
-    SAMPLE_KEY("sample_key (CN=demo-smp-signing-key,O=digit,C=eu:000000006443f9bc"),
-    SMP_EDDSA_25519("smp_eddsa_25519 (CN=smp_eddsa_25519,O=digit,C=eu:000000006443d95d");
+    SMP_DOMAIN_01("smp_domain_01 (CN=smp_domain_01,O=digit,C=eu:000000006443d8a8)"),
+    SAMPLE_KEY("sample_key (CN=demo-smp-signing-key,O=digit,C=eu:000000006443f9bc)"),
+    SMP_EDDSA_25519("smp_eddsa_25519 (CN=smp_eddsa_25519,O=digit,C=eu:000000006443d95d)");
+
+    public String getName() {
+        return name;
+    }
 
     public final String name;
 
 
     ResponseCertificates(String name) {
         this.name = name;
-
     }
 
-    public static String getRandomCertificate() {
-        ResponseCertificates[] certificates = values();
-        int size = certificates.length;
-        Random random = new Random();
-        int index = random.nextInt(size);
-        return certificates[index].name;
-    }
 
 }
diff --git a/domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainTab.java b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainTab.java
new file mode 100644
index 0000000000000000000000000000000000000000..119d490642e1949e0e46c6d389679d0165d07871
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainTab.java
@@ -0,0 +1,64 @@
+package pages.DomainsPage;
+
+import ddsl.dcomponents.DComponent;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.PageFactory;
+import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import rest.models.DomainModel;
+
+public class DomainTab extends DComponent {
+    /**
+     * Page object for the Domains tab of Domains page. This contains the locators of the page and the methods for the behaviour of the page
+     */
+    private final static Logger LOG = LoggerFactory.getLogger(DomainTab.class);
+    @FindBy(id = "domainCode_id")
+    private WebElement domainIdInput;
+    @FindBy(id = "signatureKeyAlias_id")
+    private WebElement responseSignatureCertificateDdl;
+    @FindBy(id = "domainVisibility_id")
+    private WebElement visibilityOfDomainDdl;
+    @FindBy(id = "saveButton")
+    private WebElement saveBtn;
+    public DomainTab(WebDriver driver) {
+        super(driver);
+        PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getTIMEOUT()), this);
+
+    }
+
+    public WebElement getDomainIdInput() {
+        return domainIdInput;
+    }
+
+    public String getResponseSignatureCertificateSelectedValue() {
+        return weToDSelect(responseSignatureCertificateDdl).getCurrentValue();
+    }
+
+    public String getVisibilityOfDomainSelectedValue() {
+        return weToDSelect(visibilityOfDomainDdl).getCurrentValue().toUpperCase();
+    }
+
+    public void fillDomainData(DomainModel domainModel) {
+
+        domainIdInput.sendKeys(domainModel.getDomainCode());
+        weToDSelect(responseSignatureCertificateDdl).selectByVisibleText(domainModel.getSignatureKeyAlias());
+        weToDSelect(visibilityOfDomainDdl).selectValue(domainModel.getVisibility());
+    }
+
+    public void saveChanges() {
+        if (saveBtn.isEnabled()) {
+            saveBtn.click();
+            wait.forElementToBeDisabled(saveBtn);
+            if (saveBtn.getAttribute("disabled").equals("true")) {
+                LOG.debug("Domain tab changes were succesfully saved");
+            } else {
+                LOG.error("Domain tab changes were not saved");
+            }
+        }
+    }
+
+
+}
\ 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
index 3fd59dd32c8a6c627be059010a622e30bb10c39e..542358520a99f4da879942b317b7444561e54362 100644
--- a/domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainsPage.java
+++ b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/DomainsPage.java
@@ -7,40 +7,21 @@ import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import rest.models.DomainModel;
-
-import java.util.List;
 
 public class DomainsPage extends PageWithGrid {
     /**
      * Page object for the Users page. This contains the locators of the page and the methods for the behaviour of the page
      */
     private final static Logger LOG = LoggerFactory.getLogger(DomainsPage.class);
-
-    @FindBy(id = "domainCode_id")
-    private WebElement domainIdInput;
-    @FindBy(id = "signatureKeyAlias_id")
-    private WebElement responseSignatureCertificateDdl;
-
-    @FindBy(id = "domainVisibility_id")
-    private WebElement visibilityOfDomainDdl;
-
-    @FindBy(id = "saveButton")
-    private WebElement saveBtn;
-
-    @FindBy(css = "[role = \"tab\"] ")
-    private List<WebElement> tabList;
-
-    private ResourceTab resourceTab;
-
-
+    @FindBy(css = "smp-warning-panel span")
+    private WebElement warningLabel;
     public DomainsPage(WebDriver driver) {
         super(driver);
         LOG.debug("Loading Domains page.");
     }
 
     public DButton getCreateDomainBtn() {
-        return new DButton(driver, AddBtn);
+        return new DButton(driver, addBtn);
     }
 
     public ResourceTab getResourceTab() {
@@ -48,26 +29,23 @@ public class DomainsPage extends PageWithGrid {
         return new ResourceTab(driver);
     }
 
+    public DomainTab getDomainTab() {
 
-    public void fillDomainData(DomainModel domainModel) {
+        return new DomainTab(driver);
+    }
 
-        domainIdInput.sendKeys(domainModel.getDomainCode());
-        weToDSelect(responseSignatureCertificateDdl).selectValue(domainModel.getSignatureKeyAlias());
+    public SMLIntegrationTab getSMLIntegrationTab() {
+
+        return new SMLIntegrationTab(driver);
     }
 
-    public String saveChangesAndGetMessage() {
-        saveBtn.click();
-        return getAlertArea().getAlertMessage();
+    public MembersTab getMembersTab() {
+
+        return new MembersTab(driver);
     }
 
-    public void goToTab(String tabName) {
-        for (WebElement element : tabList) {
-            if (element.getText().contains(tabName)) {
-                element.click();
-                wait.forAttributeToContain(element, "aria-selected", "true");
-                LOG.debug("Domain tab {} is opened", tabName);
-            }
-        }
+    public String getDomainWarningMessage() {
+        return warningLabel.getText();
     }
 
 
diff --git a/domiSMP-ui-tests/src/main/java/pages/DomainsPage/MembersTab.java b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/MembersTab.java
new file mode 100644
index 0000000000000000000000000000000000000000..8b2bd56518aa133d25f138bf95705dd6471191c3
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/MembersTab.java
@@ -0,0 +1,13 @@
+package pages.DomainsPage;
+
+import ddsl.dcomponents.commonComponents.members.MembersComponent;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.support.PageFactory;
+import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
+
+public class MembersTab extends MembersComponent {
+    public MembersTab(WebDriver driver) {
+        super(driver);
+        PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getTIMEOUT()), this);
+    }
+}
diff --git a/domiSMP-ui-tests/src/main/java/pages/DomainsPage/ResourceTab.java b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/ResourceTab.java
index 4e1bb994b3fa567515d5e8047930aeeb28dea540..891b637331fa88c1223374e6fa9eab9911f8cf91 100644
--- a/domiSMP-ui-tests/src/main/java/pages/DomainsPage/ResourceTab.java
+++ b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/ResourceTab.java
@@ -14,7 +14,7 @@ import java.util.List;
 public class ResourceTab extends DComponent {
 
     /**
-     * Resource tab component of Domain page. Gives access to resource tab behaviour.
+     * 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
      */
     private final static Logger LOG = LoggerFactory.getLogger(ResourceTab.class);
 
@@ -35,12 +35,11 @@ public class ResourceTab extends DComponent {
             saveBtn.click();
             if (saveBtn.getAttribute("disabled").equals("truw")) {
                 LOG.debug("Resource tab changes were succesfully saved");
+            } else {
+                LOG.error("Resource tab changes were not saved");
             }
-            LOG.debug("Resource tab changes were not saved");
         }
     }
-
-
     public void checkResource(String resourceName) {
         wait.forElementToBeClickable(resourceOptions.get(0));
         for (WebElement element : resourceOptions) {
diff --git a/domiSMP-ui-tests/src/main/java/pages/DomainsPage/SMLIntegrationTab.java b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/SMLIntegrationTab.java
new file mode 100644
index 0000000000000000000000000000000000000000..e40600c0947d257353ed057d1cfedf2c2500da1c
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/java/pages/DomainsPage/SMLIntegrationTab.java
@@ -0,0 +1,86 @@
+package pages.DomainsPage;
+
+import ddsl.dcomponents.ConfirmationDialog;
+import ddsl.dcomponents.DComponent;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.PageFactory;
+import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import rest.models.DomainModel;
+
+public class SMLIntegrationTab extends DComponent {
+
+    /**
+     * Page object for the SML integration tab of Domains page. This contains the locators of the page and the methods for the behaviour of the page
+     */
+    private final static Logger LOG = LoggerFactory.getLogger(SMLIntegrationTab.class);
+
+    @FindBy(id = "smldomain_id")
+    private WebElement smlDomainInput;
+
+    @FindBy(id = "smlSMPId_id")
+    private WebElement smlsmpIdentifierInput;
+
+    @FindBy(id = "smlClientKeyAlias_id")
+    private WebElement smlClientCertificateAliasDdl;
+
+    @FindBy(id = "smlClientCertHeaderAuth_id-button")
+    private WebElement useClientCertBtn;
+    @FindBy(id = "saveButton")
+    private WebElement saveBtn;
+
+    @FindBy(id = "registerButton")
+    private WebElement registerBtn;
+
+    public SMLIntegrationTab(WebDriver driver) {
+        super(driver);
+        PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getTIMEOUT()), this);
+
+    }
+
+    public void fillSMLIntegrationTab(DomainModel domainModel) {
+        try {
+            weToDInput(smlDomainInput).fill(domainModel.getSmlSubdomain());
+            weToDInput(smlsmpIdentifierInput).fill(domainModel.getSmlSmpId());
+            //TODO : check of clientcertificatealias is changed from mat-select to select
+            weToDSelect(smlClientCertificateAliasDdl).selectByVisibleText(domainModel.getSignatureKeyAlias());
+            weToDButton(useClientCertBtn).click();
+
+        } catch (Exception e) {
+            LOG.error("Cannot fill SML integration data");
+            throw new RuntimeException(e);
+        }
+
+    }
+
+    public void saveChanges() {
+        if (saveBtn.isEnabled()) {
+            saveBtn.click();
+            wait.forElementToBeDisabled(saveBtn);
+            if (saveBtn.getAttribute("disabled").equals("true")) {
+                LOG.debug("SML Integration tab changes were succesfully saved");
+            } else {
+                LOG.error("SML Integration  tab changes were not saved");
+            }
+        }
+    }
+
+    public void registerToSML() throws Exception {
+        try {
+            if (weToDButton(registerBtn).isEnabled()) {
+                weToDButton(registerBtn).click();
+                ConfirmationDialog confirmationDialog = new ConfirmationDialog(driver);
+                confirmationDialog.confirm();
+            }
+
+        } catch (Exception e) {
+            LOG.error("Register button is not enabled");
+            throw new Exception(e);
+        }
+
+    }
+
+}
\ No newline at end of file
diff --git a/domiSMP-ui-tests/src/main/java/pages/LoginPage.java b/domiSMP-ui-tests/src/main/java/pages/LoginPage.java
index 5aaba22ef4a5a921610371ae50ef8dc6bc4686f8..8dc5ea91f1daad86a2a28bbb0e115c1ef95d2266 100644
--- a/domiSMP-ui-tests/src/main/java/pages/LoginPage.java
+++ b/domiSMP-ui-tests/src/main/java/pages/LoginPage.java
@@ -51,7 +51,7 @@ public class LoginPage extends DomiSMPPage {
         } catch (Exception e) {
             LOG.debug("Password expiration popup is not present");
 
-            throw new RuntimeException(e);
+            throw new RuntimeException("Password expiration popup is not present", e);
         }
 
 
diff --git a/domiSMP-ui-tests/src/main/java/pages/SmlPage.java b/domiSMP-ui-tests/src/main/java/pages/SmlPage.java
new file mode 100644
index 0000000000000000000000000000000000000000..761cb5fe7fbe012a2e40e76238cab809f80b530f
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/java/pages/SmlPage.java
@@ -0,0 +1,36 @@
+package pages;
+
+import ddsl.dcomponents.DComponent;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.PageFactory;
+import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
+import rest.models.DomainModel;
+
+import java.util.List;
+
+public class SmlPage extends DComponent {
+
+    @FindBy(css = "body>pre")
+    private List<WebElement> dnsRecords;
+
+    public SmlPage(WebDriver driver) {
+        super(driver);
+        PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getTIMEOUT()), this);
+
+    }
+
+    public boolean isDomainRegistered(DomainModel domainModel) {
+        String dnsRecord = domainModel.getSmlSmpId();
+
+        for (WebElement element : dnsRecords) {
+            String elementRecords = element.getText();
+
+            if (elementRecords.contains(dnsRecord)) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
diff --git a/domiSMP-ui-tests/src/main/java/pages/TruststorePage.java b/domiSMP-ui-tests/src/main/java/pages/TruststorePage.java
new file mode 100644
index 0000000000000000000000000000000000000000..f0e2053fb6a5880c53c52215f3d0355154ceffca
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/java/pages/TruststorePage.java
@@ -0,0 +1,52 @@
+package pages;
+
+import ddsl.PageWithGrid;
+import ddsl.dcomponents.Grid.SmallGrid;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class TruststorePage extends PageWithGrid {
+    /**
+     * Page object for the Truststorepage. This contains the locators of the page and the methods for the behaviour of the page
+     */
+
+    //TODO work in progress
+    @FindBy(id = "custom-file-upload")
+    private WebElement uploadInput;
+    @FindBy(id = "publicKeyType_id")
+    private WebElement publicKeyTypeLbl;
+    @FindBy(id = "alias_id")
+    private WebElement aliasIdLbl;
+    @FindBy(id = "certificateId_id")
+    private WebElement smpCertificateId;
+    @FindBy(id = "subject_id")
+    private WebElement subjectName;
+
+
+    public TruststorePage(WebDriver driver) {
+        super(driver);
+    }
+
+    public SmallGrid getGrid() {
+        return new SmallGrid(driver, dataPanel);
+    }
+
+    public String addCertificateAndReturnAlias(String filePath) {
+        uploadInput.sendKeys(filePath);
+        String certificateAlias = getAlertMessageAndClose();
+
+        Pattern pattern = Pattern.compile("(?<=alias \\[)(.*?)(?=\\])");
+        Matcher matcher = pattern.matcher(certificateAlias);
+        if (matcher.find()) {
+            String result = matcher.group(1);
+            return result;
+        }
+        return null;
+    }
+
+
+}
diff --git a/domiSMP-ui-tests/src/main/java/pages/UsersPage.java b/domiSMP-ui-tests/src/main/java/pages/UsersPage.java
index 2c59cae419e7fa41ffb300171089f11abf7bfe64..d6d8ea1c9cdbdebef6cc373704c742339b19c6a4 100644
--- a/domiSMP-ui-tests/src/main/java/pages/UsersPage.java
+++ b/domiSMP-ui-tests/src/main/java/pages/UsersPage.java
@@ -1,7 +1,7 @@
 package pages;
 
 import ddsl.PageWithGrid;
-import ddsl.dcomponents.UserDataCommonComponent;
+import ddsl.dcomponents.commonComponents.UserDataCommonComponent;
 import ddsl.dobjects.DButton;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
@@ -32,7 +32,7 @@ public class UsersPage extends PageWithGrid {
     }
 
     public DButton getCreateUserBtn() {
-        return new DButton(driver, AddBtn);
+        return new DButton(driver, addBtn);
     }
 
     public String fillNewUserDataAndSave(UserModel newUserData) {
diff --git a/domiSMP-ui-tests/src/main/java/pages/editDomainsPage/EditDomainsPage.java b/domiSMP-ui-tests/src/main/java/pages/editDomainsPage/EditDomainsPage.java
new file mode 100644
index 0000000000000000000000000000000000000000..60915be694f858e0fbe36ed2640dec953e0fa5a9
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/java/pages/editDomainsPage/EditDomainsPage.java
@@ -0,0 +1,10 @@
+package pages.editDomainsPage;
+
+import ddsl.PageWithGrid;
+import org.openqa.selenium.WebDriver;
+
+public class EditDomainsPage extends PageWithGrid {
+    public EditDomainsPage(WebDriver driver) {
+        super(driver);
+    }
+}
diff --git a/domiSMP-ui-tests/src/main/java/pages/ProfilePage/ProfilePage.java b/domiSMP-ui-tests/src/main/java/pages/profilePage/ProfilePage.java
similarity index 80%
rename from domiSMP-ui-tests/src/main/java/pages/ProfilePage/ProfilePage.java
rename to domiSMP-ui-tests/src/main/java/pages/profilePage/ProfilePage.java
index 80cfce297e2384c188a87e8082c13c968e3e0524..918e72fa5faf06926b19a20c7da48501074a92e2 100644
--- a/domiSMP-ui-tests/src/main/java/pages/ProfilePage/ProfilePage.java
+++ b/domiSMP-ui-tests/src/main/java/pages/profilePage/ProfilePage.java
@@ -1,7 +1,7 @@
-package pages.ProfilePage;
+package pages.profilePage;
 
 import ddsl.PageWithGrid;
-import ddsl.dcomponents.UserDataCommonComponent;
+import ddsl.dcomponents.commonComponents.UserDataCommonComponent;
 import org.openqa.selenium.WebDriver;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -17,6 +17,6 @@ public class ProfilePage extends PageWithGrid {
     public ProfilePage(WebDriver driver) {
         super(driver);
         userData = new UserDataCommonComponent(driver);
-
+        LOG.debug("Profile page has loaded");
     }
 }
\ 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
similarity index 90%
rename from domiSMP-ui-tests/src/main/java/pages/ProfilePage/SuccesfullPasswordChangedPopup.java
rename to domiSMP-ui-tests/src/main/java/pages/profilePage/SuccesfullPasswordChangedPopup.java
index febf89b9b69ecbc629932b1e14533960503c3da3..0d88b9571012caf158074cf7b87826a43f4ddbf4 100644
--- a/domiSMP-ui-tests/src/main/java/pages/ProfilePage/SuccesfullPasswordChangedPopup.java
+++ b/domiSMP-ui-tests/src/main/java/pages/profilePage/SuccesfullPasswordChangedPopup.java
@@ -1,4 +1,4 @@
-package pages.ProfilePage;
+package pages.profilePage;
 
 import ddsl.dcomponents.DComponent;
 import org.openqa.selenium.WebDriver;
@@ -12,9 +12,9 @@ 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")
-    WebElement message;
+    private WebElement message;
     @FindBy(id = "closebuttondialog_id")
-    WebElement closeBtn;
+    private WebElement closeBtn;
 
     public SuccesfullPasswordChangedPopup(WebDriver driver) {
         super(driver);
diff --git a/domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropGrid.java b/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropGrid.java
similarity index 95%
rename from domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropGrid.java
rename to domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropGrid.java
index 16058b35f043180cc8d2de9f0b6a30fccebd92ad..176ad1c4524bb0946b95e229dcaff2d8a2b6f559 100644
--- a/domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropGrid.java
+++ b/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropGrid.java
@@ -1,4 +1,4 @@
-package pages.PropertiesPage;
+package pages.propertiesPage;
 
 import ddsl.dcomponents.Grid.BasicGrid;
 import org.openqa.selenium.WebDriver;
diff --git a/domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropertiesPage.java b/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropertiesPage.java
similarity index 93%
rename from domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropertiesPage.java
rename to domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropertiesPage.java
index 08ed90d4633a6f19f20c68c11641362c5e30f8d0..ab60bb507200589e394a0dfd85a8839c7a54d82e 100644
--- a/domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropertiesPage.java
+++ b/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropertiesPage.java
@@ -1,4 +1,4 @@
-package pages.PropertiesPage;
+package pages.propertiesPage;
 
 import ddsl.DomiSMPPage;
 import ddsl.dcomponents.ConfirmationDialog;
@@ -19,12 +19,8 @@ public class PropertiesPage extends DomiSMPPage {
 
     @FindBy(id = "searchTable")
     private WebElement propertyTableContainer;
-    @FindBy(id = "cancelButton")
-    private WebElement cancelBtn;
     @FindBy(id = "saveButton")
     private WebElement saveBtn;
-    @FindBy(id = "editButton")
-    private WebElement editBtn;
     @FindBy(id = "searchProperty")
     private WebElement searchPropertyField;
     @FindBy(id = "searchbutton_id")
diff --git a/domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropertyPopup.java b/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropertyPopup.java
similarity index 99%
rename from domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropertyPopup.java
rename to domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropertyPopup.java
index 5aa06310ef575928243e399243f2d334d1ceb975..4e830cab48a610b7c1b3ceb2619f1a17944f6924 100644
--- a/domiSMP-ui-tests/src/main/java/pages/PropertiesPage/PropertyPopup.java
+++ b/domiSMP-ui-tests/src/main/java/pages/propertiesPage/PropertyPopup.java
@@ -1,4 +1,4 @@
-package pages.PropertiesPage;
+package pages.propertiesPage;
 
 import ddsl.dcomponents.DComponent;
 import org.openqa.selenium.JavascriptExecutor;
diff --git a/domiSMP-ui-tests/src/main/java/rest/models/DomainModel.java b/domiSMP-ui-tests/src/main/java/rest/models/DomainModel.java
index 005f154c803c4f9333faae611ce0e5f5e47e13a1..0116b4950fc90ce972251803335bcc440a97aad3 100644
--- a/domiSMP-ui-tests/src/main/java/rest/models/DomainModel.java
+++ b/domiSMP-ui-tests/src/main/java/rest/models/DomainModel.java
@@ -2,6 +2,10 @@ package rest.models;
 
 import ddsl.enums.ResponseCertificates;
 import utils.Generator;
+import utils.Utils;
+
+import static ddsl.enums.ResponseCertificates.SMP_DOMAIN_01;
+import static ddsl.enums.ResponseCertificates.SMP_DOMAIN_02;
 
 public class DomainModel {
 
@@ -22,13 +26,24 @@ public class DomainModel {
     public static DomainModel generatePublicDomainModelWithoutSML() {
         DomainModel domainModel = new DomainModel();
         domainModel.domainCode = "AUTDom" + Generator.randomAlphaNumeric(6);
-        domainModel.signatureKeyAlias = ResponseCertificates.getRandomCertificate();
+        domainModel.signatureKeyAlias = Utils.randomEnum(ResponseCertificates.values()).getName();
         domainModel.visibility = "PUBLIC";
+        return domainModel;
+    }
 
-
+    public static DomainModel generatePublicDomainModelWithSML() {
+        DomainModel domainModel = new DomainModel();
+        domainModel.domainCode = "AUTDom" + Generator.randomAlphaNumeric(6);
+        domainModel.signatureKeyAlias = Utils.randomEnum(new ResponseCertificates[]{SMP_DOMAIN_01, SMP_DOMAIN_02}).getName();
+        domainModel.visibility = "PUBLIC";
+        domainModel.smlClientCertAuth = true;
+        domainModel.smlSubdomain = "AUTDomSML" + Generator.randomAlphaNumeric(6);
+        domainModel.smlSmpId = "AUTSMLSMP" + Generator.randomAlphaNumeric(4);
+        domainModel.smlClientKeyAlias = Utils.randomEnum(new ResponseCertificates[]{SMP_DOMAIN_01, SMP_DOMAIN_02}).getName();
         return domainModel;
     }
 
+
     public String getSmlSmpId() {
         return smlSmpId;
     }
@@ -42,7 +57,7 @@ public class DomainModel {
     }
 
     public String getVisibility() {
-        return visibility;
+        return visibility.toUpperCase();
     }
 
     public String getSmlClientKeyAlias() {
diff --git a/domiSMP-ui-tests/src/main/java/utils/FileUtils.java b/domiSMP-ui-tests/src/main/java/utils/FileUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..605ad4bff868455be0c06a4451e1b15ef8e982d3
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/java/utils/FileUtils.java
@@ -0,0 +1,10 @@
+package utils;
+
+import java.io.File;
+
+public class FileUtils {
+    public static String getAbsolutePath(String relativePath) {
+        return new File(relativePath).getAbsolutePath();
+    }
+
+}
diff --git a/domiSMP-ui-tests/src/main/java/utils/Generator.java b/domiSMP-ui-tests/src/main/java/utils/Generator.java
index dcfbc6ec22b7473964d41df6031973a87c6f964f..d44721cd17cc4c0bea268fbe860386b880568be3 100644
--- a/domiSMP-ui-tests/src/main/java/utils/Generator.java
+++ b/domiSMP-ui-tests/src/main/java/utils/Generator.java
@@ -12,4 +12,6 @@ public class Generator {
         return builder.toString();
     }
 
+
 }
+
diff --git a/domiSMP-ui-tests/src/main/java/utils/TestRunData.java b/domiSMP-ui-tests/src/main/java/utils/TestRunData.java
index 4963100af413885b2a180ba3ab73f7aac5746a1f..8e814606fd2096f76a3fd01d05bb8f2cbda8c7ba 100644
--- a/domiSMP-ui-tests/src/main/java/utils/TestRunData.java
+++ b/domiSMP-ui-tests/src/main/java/utils/TestRunData.java
@@ -71,6 +71,12 @@ public class TestRunData {
         return url;
     }
 
+    public String getSMLUrl() {
+        String url = prop.getProperty("SML_URL");
+        log.debug("Opening SML " + url);
+        return url;
+    }
+
     public Integer getTIMEOUT() {
         return Integer.valueOf(prop.getProperty("SHORT_TIMEOUT_SECONDS"));
     }
diff --git a/domiSMP-ui-tests/src/main/java/utils/Utils.java b/domiSMP-ui-tests/src/main/java/utils/Utils.java
new file mode 100644
index 0000000000000000000000000000000000000000..4d997eb56fc6b21c9daf86b5806224ad6dc2a83e
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/java/utils/Utils.java
@@ -0,0 +1,10 @@
+package utils;
+
+import java.util.Random;
+
+public class Utils {
+    public static <T extends Enum<?>> T randomEnum(T[] values) {
+        int x = new Random().nextInt(values.length);
+        return values[x];
+    }
+}
diff --git a/domiSMP-ui-tests/src/main/resources/myLocal.properties b/domiSMP-ui-tests/src/main/resources/myLocal.properties
index 4cb63757445890c4008d31682ebfbbddf9e5a084..4e8bff103aee661180a05dc1c828ff461509bc95 100644
--- a/domiSMP-ui-tests/src/main/resources/myLocal.properties
+++ b/domiSMP-ui-tests/src/main/resources/myLocal.properties
@@ -10,6 +10,7 @@ headless=false
 # Test system properties
 UI_BASE_URL=http://eulogin.protected.smp.local:8982/smp/ui
 #UI_BASE_URL=http://localhost:8080/smp/ui
+SML_URL=http://localhost:8982/edelivery-sml/listDNS
 SYSTEM_ADMIN.username=system
 SYSTEM_ADMIN.password=123456
 ROLE_ADMIN.username=admin
diff --git a/domiSMP-ui-tests/src/main/resources/truststore/test.cer b/domiSMP-ui-tests/src/main/resources/truststore/test.cer
new file mode 100644
index 0000000000000000000000000000000000000000..4082e07fbd6fd5bda3f9676a5aca06aa6f519d12
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/resources/truststore/test.cer
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE-----
+MIICyjCCAbKgAwIBAgIEX3SoITANBgkqhkiG9w0BAQsFADAnMQswCQYDVQQGEwJC
+RTELMAkGA1UECwwCU1QxCzAJBgNVBAMMAlRFMB4XDTIwMDkzMDE1NDUzN1oXDTIx
+MDkzMDE1NDUzN1owJzELMAkGA1UEBhMCQkUxCzAJBgNVBAsMAlNUMQswCQYDVQQD
+DAJURTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKPhUN8vXynyj41Y
+W8S+KIYqz+9TOyaVW2blAEqc3jiN83baPBnjEqPQjnTuWGTBE4jV4rR9FGjp48z9
+evhEvhoKjntzmN6UnsWELMFC6l3JgP6fci7WdEgS3gw7lgYxfbU4VNXtC4cSRbkD
+vV5ccZa3EW3FzRk9PWRCL18xdh3BC/vwZ+FZ85Vv80F1PdO7gu+jPihT4lkWrZ0j
+8dVUoMtwul5yXXrTR/cePJjG7jo+lamy7bIiBYxHFYq79ZbVaYfpjuhIsd83LR8u
+LV3DrSFcSJ7SUPBWzEwLWh57SfnnEfy+CApufWioYgEkRoV0v6gvEO3cBRwyMenH
+V4FuhncCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAHCnhGR9VlKSDmQw2j/tSwdOc
+nfhctdOZNvlLzUBIPC4S4w49WtegwQEdxSN2+X/icJTJGUnnxeC3GPamH/2bOG5j
+hw+5BYDYj3PfRHwvvhA/W2HwRXWdR4/WqVZhNKYI4qp1+zKV5B5oKmpy/K08aele
+tlMSP4e8Pu9cABa3mhMj8oEC/DEkV44yTGphnNnKyBlCaL9vRzRJzHEzLV/RC8H2
+RpJrS3m8DTUaIsp+Ysm3j+hyYlUrd4+Yt/LDuyI2ZwsyRq/leaHJe13BguUniu73
+XXHsZEj9hLkTpclz7q0g38XqYiMr4bizHi02sDujpzpACo/iec8PUeB3aAsrhA==
+-----END CERTIFICATE-----
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 20c403d88d24e376c850fce17e978b3c18e1d2a6..2428d69f0029834d6a88ac54ae48378167553272 100644
--- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java
+++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java
@@ -1,39 +1,151 @@
 package domiSMPTests.ui;
+
 import ddsl.DomiSMPPage;
 import ddsl.enums.Pages;
-import ddsl.enums.ResourceTypes;
 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.editDomainsPage.EditDomainsPage;
 import rest.models.DomainModel;
+import rest.models.UserModel;
 
 public class DomainsPgTests extends SeleniumTest {
 
     /**
      * This class has the tests against Domains Page
      */
+
     @Test(description = "DOM-01 System admin is able to create Domains")
     public void SystemAdminIsAbleToCreateDomains() throws Exception {
         DomainModel domainModel = DomainModel.generatePublicDomainModelWithoutSML();
+        DomiSMPPage homePage = new DomiSMPPage(driver);
+
+        LoginPage loginPage = homePage.goToLoginPage();
+        loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password"));
+
+        DomainsPage domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS);
+        domainsPage.getCreateDomainBtn().click();
+        domainsPage.getDomainTab().fillDomainData(domainModel);
+        domainsPage.getDomainTab().saveChanges();
+        String alert = domainsPage.getAlertMessageAndClose();
+        Assert.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!");
+
+        domainsPage.getDataPanelGrid().searchValueInColumn("Domain code", domainModel.getDomainCode()).click();
+        Assert.assertEquals(domainModel.getSignatureKeyAlias(), domainsPage.getDomainTab().getResponseSignatureCertificateSelectedValue());
+        Assert.assertEquals(domainModel.getVisibility(), domainsPage.getDomainTab().getVisibilityOfDomainSelectedValue());
+        Assert.assertEquals("To complete domain configuration, please select at least one resource type from the Resource Types tab", domainsPage.getDomainWarningMessage());
+    }
+
 
+    @Test(description = "DOM-02 System admin can integrates domain with SMP")
+    public void SystemAdminCanIntegrateDomainWithSMP() throws Exception {
+        DomainModel domainModel = DomainModel.generatePublicDomainModelWithSML();
         DomiSMPPage homePage = new DomiSMPPage(driver);
         LoginPage loginPage = homePage.goToLoginPage();
         loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password"));
 
-        DomainsPage domainsPage = homePage.getSidebar().navigateTo2(Pages.SYSTEM_SETTINGS_DOMAINS);
+        DomainsPage domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS);
         domainsPage.getCreateDomainBtn().click();
-        domainsPage.fillDomainData(domainModel);
-        String alert = domainsPage.saveChangesAndGetMessage();
+        domainsPage.getDomainTab().fillDomainData(domainModel);
+        domainsPage.getDomainTab().saveChanges();
+        String alert = domainsPage.getAlertMessageAndClose();
         Assert.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!");
 
-        domainsPage.getGrid().searchValueInColumn("Domain code", domainModel.getDomainCode()).click();
+        domainsPage.getDataPanelGrid().searchValueInColumn("Domain code", domainModel.getDomainCode()).click();
+        domainsPage.goToTab("SML integration");
+        domainsPage.getSMLIntegrationTab().fillSMLIntegrationTab(domainModel);
+        domainsPage.getSMLIntegrationTab().saveChanges();
+        domainsPage.getSMLIntegrationTab().registerToSML();
 
-        domainsPage.goToTab("Resource Types");
-        domainsPage.getResourceTab().checkResource(ResourceTypes.getRandomResourceType());
-        domainsPage.getResourceTab().saveChanges();
+        alert = domainsPage.getAlertMessageAndClose();
+        Assert.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] registered to sml!");
 
+        //Go to SML
+        driver.get(data.getSMLUrl());
+        SmlPage smlPage = new SmlPage(driver);
+        Assert.assertTrue(smlPage.isDomainRegistered(domainModel), "Domain is not present in SML");
 
     }
-}
+
+    @Test(description = "DOM-03 System admin is able to Invite/Remove users from domains")
+    public void SystemAdminIsAbleToInviteRemoveUsersFromDomains() throws Exception {
+        UserModel normalUser = UserModel.generateUserWithUSERrole();
+
+        rest.users().createUser(normalUser);
+
+        DomainModel domainModel = DomainModel.generatePublicDomainModelWithoutSML();
+        DomiSMPPage homePage = new DomiSMPPage(driver);
+
+        LoginPage loginPage = homePage.goToLoginPage();
+        loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password"));
+
+        DomainsPage domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS);
+        domainsPage.getCreateDomainBtn().click();
+        domainsPage.getDomainTab().fillDomainData(domainModel);
+        domainsPage.getDomainTab().saveChanges();
+        String alert = domainsPage.getAlertMessageAndClose();
+        Assert.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!");
+
+        //Invite user as VIEW and check if he has admin rights for domain
+        domainsPage.goToTab("Members");
+        domainsPage.getMembersTab().getInviteMemberBtn().click();
+        domainsPage.getMembersTab().getInviteMembersPopup().selectMember(normalUser.getUsername(), "VIEWER");
+        WebElement userMemberElement = domainsPage.getMembersTab().getMembersGrid().searchValueInColumn("Username", normalUser.getUsername());
+        Assert.assertNotNull(userMemberElement, "Invited user not found");
+
+        //check if user has admin rights to domain as VIEWER
+        homePage.logout();
+        homePage.goToLoginPage();
+        loginPage.login(normalUser.getUsername(), data.getNewPassword());
+        EditDomainsPage editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
+        WebElement domainElement = editDomainsPage.getDataPanelGrid().searchValueInColumn("Domain code", domainModel.getDomainCode());
+        Assert.assertNull(domainElement, "Domain found for user which doesn't have rights");
+
+        homePage.logout();
+        loginPage = homePage.goToLoginPage();
+        loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password"));
+        domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS);
+        domainsPage.getDataPanelGrid().searchValueInColumn("Domain code", domainModel.getDomainCode()).click();
+        domainsPage.goToTab("Members");
+        domainsPage.getMembersTab().changeRoleOfUser(normalUser.getUsername(), "ADMIN");
+
+        //check if user has admin rights to domain as Admin
+        homePage.logout();
+        homePage.goToLoginPage();
+        loginPage.login(normalUser.getUsername(), data.getNewPassword());
+        editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
+        domainElement = editDomainsPage.getDataPanelGrid().searchValueInColumn("Domain code", domainModel.getDomainCode());
+        Assert.assertNotNull(domainElement, "Domain found for user which doesn't have rights");
+
+
+        //Remove member user and check if he has access to the domain
+        homePage.logout();
+        homePage.goToLoginPage();
+        loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password"));
+        domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS);
+        domainsPage.getDataPanelGrid().searchValueInColumn("Domain code", domainModel.getDomainCode()).click();
+        domainsPage.goToTab("Members");
+        domainsPage.getMembersTab().removeUser(normalUser.getUsername());
+        userMemberElement = domainsPage.getMembersTab().getMembersGrid().searchValueInColumn("Username", normalUser.getUsername());
+        Assert.assertNull(userMemberElement, "Domain found for user which doesn't have rights");
+
+        homePage.logout();
+        homePage.goToLoginPage();
+        loginPage.login(normalUser.getUsername(), data.getNewPassword());
+        editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
+        domainElement = editDomainsPage.getDataPanelGrid().searchValueInColumn("Domain code", domainModel.getDomainCode());
+        Assert.assertNull(domainElement, "Domain found for user which doesn't have rights");
+
+
+    }
+
+    @Test(description = "DOM-03 System admin is able to Invite/Remove users from domains")
+    public void EditRsource() throws Exception {
+
+    }
+
+}
\ No newline at end of file
diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/ProfilePgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/ProfilePgTests.java
index 11edf65cbb5c053aebf97a2998b8a894a3e1602f..07d7f1a008932486c0702587e2e10784d0837632 100644
--- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/ProfilePgTests.java
+++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/ProfilePgTests.java
@@ -6,8 +6,8 @@ import domiSMPTests.SeleniumTest;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 import pages.LoginPage;
-import pages.ProfilePage.ProfilePage;
-import pages.PropertiesPage.PropertiesPage;
+import pages.profilePage.ProfilePage;
+import pages.propertiesPage.PropertiesPage;
 import rest.models.UserModel;
 import utils.Generator;
 
@@ -64,7 +64,7 @@ public class ProfilePgTests extends SeleniumTest {
         loginPage.login(normalUser.getUsername(), data.getNewPassword());
 
         //Navigate to page
-        ProfilePage profilePage = (ProfilePage) homePage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
+        ProfilePage profilePage = homePage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
         UserModel userNewProfileData = UserModel.generateUserProfileData();
         profilePage.userData.fillUserProfileData(userNewProfileData.getEmailAddress(), userNewProfileData.getFullName(), userNewProfileData.getSmpTheme(), userNewProfileData.getSmpLocale());
 
@@ -89,7 +89,7 @@ public class ProfilePgTests extends SeleniumTest {
         loginPage.login(adminUser.getUsername(), data.getNewPassword());
 
         //Navigate to page
-        profilePage = (ProfilePage) homePage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
+        profilePage = homePage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
         UserModel adminNewProfileData = UserModel.generateUserProfileData();
         profilePage.userData.fillUserProfileData(adminNewProfileData.getEmailAddress(), adminNewProfileData.getFullName(), adminNewProfileData.getSmpTheme(), adminNewProfileData.getSmpLocale());
 
@@ -117,16 +117,16 @@ public class ProfilePgTests extends SeleniumTest {
         LoginPage loginPage = homePage.goToLoginPage();
         loginPage.login(adminUser.getUsername(), data.getNewPassword());
 
-        PropertiesPage propertiesPage = (PropertiesPage) homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_PROPERTIES);
+        PropertiesPage propertiesPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_PROPERTIES);
         propertiesPage.propertySearch(propertyValue);
         if (!propertiesPage.getPropertyValue(propertyValue).equals(newPropertyValue)) {
             propertiesPage.setPropertyValue("smp.passwordPolicy.validationRegex", "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[~`!@#$%^&+=\\-_<>.,?:;*/()|\\[\\]{}'\"\\\\]).{16,35}$");
             propertiesPage.save();
         }
 
-        ProfilePage profilePage = (ProfilePage) propertiesPage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
+        ProfilePage profilePage = propertiesPage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
         profilePage.userData.setChangePasswordBtn.click();
-        Assert.assertEquals(0, profilePage.userData.setChangePasswordDialog().setNewPassword(data.getNewPassword(), "Edeltest!23456789Edeltest!234567890").size(), "Could not change the password of the user");
+        Assert.assertEquals(0, profilePage.userData.getChangePasswordDialog().setNewPassword(data.getNewPassword(), "Edeltest!23456789Edeltest!234567890").size(), "Could not change the password of the user");
 
     }
 
@@ -135,21 +135,23 @@ public class ProfilePgTests extends SeleniumTest {
     public void UserShouldBeAbleToChangeHisPassword() throws Exception {
         UserModel adminUser = UserModel.generateUserWithADMINrole();
         rest.users().createUser(adminUser);
+
         DomiSMPPage homePage = new DomiSMPPage(driver);
         LoginPage loginPage = homePage.goToLoginPage();
         loginPage.login(adminUser.getUsername(), data.getNewPassword());
-        ProfilePage profilePage = (ProfilePage) loginPage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
+
+        ProfilePage profilePage = loginPage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
         String oldLastSet = profilePage.userData.getLastSetValue();
         String oldPasswordExpiresOn = profilePage.userData.getPasswordExpiresOnValue();
 
         profilePage.userData.setChangePasswordBtn.click();
         String newPass = "Edeltest!23456789Edelt" + Generator.randomAlphaNumeric(4);
 
-        Assert.assertEquals(profilePage.userData.setChangePasswordDialog().setNewPassword(data.getNewPassword(), newPass).size(), 0, "Could not change the password of the user");
+        Assert.assertEquals(profilePage.userData.getChangePasswordDialog().setNewPassword(data.getNewPassword(), newPass).size(), 0, "Could not change the password of the user");
 
         loginPage.login(adminUser.getUsername(), newPass);
-        profilePage = (ProfilePage) loginPage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
-
+        profilePage = loginPage.getSidebar().navigateTo(Pages.USER_SETTINGS_PROFILE);
+        //TODO wait until the lastvalue and old password fields show value as text
         // Assert.assertNotSame(profilePage2.getLastSetValue(), oldLastSet, "Last set value is not reseted");
         //Assert.assertNotSame(profilePage2.getPasswordExpiresOnValue(), oldPasswordExpiresOn, "Password expires on value is not reseted");
 
diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/TrustorePgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/TrustorePgTests.java
new file mode 100644
index 0000000000000000000000000000000000000000..27bb41cc57d53281b88d6f1b69651fefde72eccd
--- /dev/null
+++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/TrustorePgTests.java
@@ -0,0 +1,33 @@
+package domiSMPTests.ui;
+
+import ddsl.DomiSMPPage;
+import ddsl.enums.Pages;
+import domiSMPTests.SeleniumTest;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+import pages.LoginPage;
+import pages.TruststorePage;
+import utils.FileUtils;
+
+public class TrustorePgTests extends SeleniumTest {
+
+    //TODO work in progress
+
+    @Test(description = "TRST-01 System admin is able to import certificates")
+    public void SystemAdminIsAbleToImportCertificates() throws Exception {
+
+
+        DomiSMPPage homePage = new DomiSMPPage(driver);
+
+        LoginPage loginPage = homePage.goToLoginPage();
+        loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password"));
+
+        TruststorePage truststorepage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_TRUSTSTORE);
+        String path = FileUtils.getAbsolutePath("./src/main/resources/truststore/test.cer");
+
+        String certificateALias = truststorepage.addCertificateAndReturnAlias(path);
+        Assert.assertNotNull(certificateALias);
+
+    }
+
+}
diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/UsersPgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/UsersPgTests.java
index ae4fd1e60f08417789735040586ae12fb9060bce..013bfef98783ee39fbe59671b76dfbb0386cdf97 100644
--- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/UsersPgTests.java
+++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/UsersPgTests.java
@@ -18,19 +18,20 @@ public class UsersPgTests extends SeleniumTest {
         LoginPage loginPage = homePage.goToLoginPage();
         loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password"));
 
-        UsersPage usersPage = (UsersPage) homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_USERS);
+        UsersPage usersPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_USERS);
         usersPage.getCreateUserBtn().click();
         UserModel adminNewUserData = UserModel.generateUserWithADMINrole();
         usersPage.fillNewUserDataAndSave(adminNewUserData);
 
         usersPage.refreshPage();
-        usersPage.filter(adminNewUserData.getUsername());
-        WebElement newUser = usersPage.getGrid().searchValueInColumn("Username", adminNewUserData.getUsername());
+        // usersPage.filter(adminNewUserData.getUsername());
+        WebElement newUser = usersPage.getDataPanelGrid().searchValueInColumn("Username", adminNewUserData.getUsername());
         Assert.assertNotNull(newUser);
         newUser.click();
 
         Assert.assertEquals(usersPage.getApplicationRoleValue(), adminNewUserData.getRole());
         Assert.assertEquals(usersPage.getFullNameValue(), adminNewUserData.getFullName());
+        Assert.assertTrue(usersPage.isSelectedUserActive(), "User active status is true");
 
         Assert.assertEquals(usersPage.getEmailValue(), adminNewUserData.getEmailAddress());
         Assert.assertEquals(usersPage.getSelectedThemeValue(), adminNewUserData.getSmpTheme());
@@ -45,7 +46,7 @@ public class UsersPgTests extends SeleniumTest {
         LoginPage loginPage = homePage.goToLoginPage();
         loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password"));
 
-        UsersPage usersPage = (UsersPage) homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_USERS);
+        UsersPage usersPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_USERS);
         usersPage.getCreateUserBtn().click();
         UserModel adminNewUserData = UserModel.generateUserWithADMINrole();
         usersPage.fillNewUserDataAndSave(adminNewUserData);
@@ -56,11 +57,5 @@ public class UsersPgTests extends SeleniumTest {
         Assert.assertEquals(alertMessage, "Invalid request [CreateUser]. Error: User with username [" + adminNewUserData.getUsername() + "] already exists!!");
 
 
-
-
-
-
-
-
     }
 }
\ No newline at end of file