diff --git a/domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithTabs.java b/domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithTabs.java
new file mode 100644
index 0000000000000000000000000000000000000000..72ca6afc31743718b4357407210e7df2a5903db0
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithTabs.java
@@ -0,0 +1,35 @@
+package ddsl;
+
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+public class CommonPageWithTabs extends DomiSMPPage {
+    private final static Logger LOG = LoggerFactory.getLogger(CommonPageWithTabs.class);
+
+    @FindBy(css = "[role = \"tab\"]")
+    private List<WebElement> tabList;
+
+    public CommonPageWithTabs(WebDriver driver) {
+        super(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 getAlertMessageAndClose() {
+
+        return getAlertArea().getAlertMessage();
+    }
+}
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithGrid.java b/domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithTabsAndGrid.java
similarity index 54%
rename from domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithGrid.java
rename to domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithTabsAndGrid.java
index b44802252370fb63eb88114f2a9e5d0a5c235d31..60b0db456c7b3c977e3a590df8a7e22f4b13e235 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithGrid.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/CommonPageWithTabsAndGrid.java
@@ -9,10 +9,8 @@ import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.List;
-
-public class CommonPageWithGrid extends DomiSMPPage {
-    private final static Logger LOG = LoggerFactory.getLogger(CommonPageWithGrid.class);
+public class CommonPageWithTabsAndGrid extends CommonPageWithTabs {
+    private final static Logger LOG = LoggerFactory.getLogger(CommonPageWithTabsAndGrid.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.
@@ -22,38 +20,17 @@ public class CommonPageWithGrid extends DomiSMPPage {
     public WebElement filterInput;
     @FindBy(css = "data-panel >div >div> mat-toolbar button:first-of-type")
     public WebElement addBtn;
-    @FindBy(css = "[class=smp-column-data]")
-    public WebElement dataPanel;
     @FindBy(css = "[class~=smp-column-label]")
     public WebElement rightPanel;
-    @FindBy(css = "[role = \"tab\"]")
-    private List<WebElement> tabList;
 
-    public CommonPageWithGrid(WebDriver driver) {
+    public CommonPageWithTabsAndGrid(WebDriver driver) {
         super(driver);
         PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getWaitTimeShort()), this);
     }
 
-    public SmallGrid getGrid() {
+    public SmallGrid getLeftSideGrid() {
         return new SmallGrid(driver, rightPanel);
     }
 
-    public SmallGrid getDataPanelGrid() {
-        return new SmallGrid(driver, rightPanel);
-    }
 
-    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/SideNavigationComponent.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SideNavigationComponent.java
index 0ad5ee76623174e27d3e188e3c515d4f4a5b7edc..ea47811232f7a2a2713c8fbc79532de92db4fabb 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SideNavigationComponent.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/SideNavigationComponent.java
@@ -12,6 +12,7 @@ import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import pages.administration.editDomainsPage.EditDomainsPage;
+import pages.administration.editGroupsPage.EditGroupsPage;
 import pages.systemSettings.TruststorePage;
 import pages.systemSettings.UsersPage;
 import pages.systemSettings.domainsPage.DomainsPage;
@@ -119,10 +120,12 @@ public class SideNavigationComponent extends DomiSMPPage {
             openSubmenu(administrationExpand, editDomainsLnk);
             return (T) new EditDomainsPage(driver);
         }
+        if (page == Pages.ADMINISTRATION_EDIT_GROUPS) {
+            openSubmenu(administrationExpand, editGroupsLnk);
+            return (T) new EditGroupsPage(driver);
+        }
+
 
-        //            case ADMINISTRATION_EDIT_GROUPS:
-        //                expandSection(administrationExpand);
-        //                return new DLink(driver, editGroupsLnk);
         //            case ADMINISTRATION_EDIT_RESOURCES:
         //                expandSection(administrationExpand);
         //                return new DLink(driver, editResourcesLnk);
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/subcategoryTab/SubcategoryTabComponent.java b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/subcategoryTab/SubcategoryTabComponent.java
index c6b23c347d7c78c5559d89e2d55f30e668b34c73..f11c96a11595a28584c8b643def7ef23881b1f36 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/subcategoryTab/SubcategoryTabComponent.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dcomponents/commonComponents/subcategoryTab/SubcategoryTabComponent.java
@@ -1,8 +1,8 @@
 package ddsl.dcomponents.commonComponents.subcategoryTab;
 
+import ddsl.dcomponents.ConfirmationDialog;
 import ddsl.dcomponents.DComponent;
 import ddsl.dcomponents.Grid.SmallGrid;
-import org.apache.poi.ss.formula.functions.T;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
@@ -20,27 +20,34 @@ public class SubcategoryTabComponent extends DComponent {
     private WebElement resourceMembersBtn;
     @FindBy(id = "deleteButton")
     private WebElement deleteBtn;
-    @FindBy(css = "div smp-column-data")
-    private WebElement sidePanel;
+    @FindBy(css = "[class=smp-column-data]")
+    private WebElement rightSidePanel;
 
     public SubcategoryTabComponent(WebDriver driver) {
         super(driver);
     }
 
     public SmallGrid getGrid() {
-        return new SmallGrid(driver, sidePanel);
+        return new SmallGrid(driver, rightSidePanel);
     }
 
-    public DComponent create() throws Exception {
+    public void create() throws Exception {
         weToDButton(createBtn).click();
-        return new DComponent(driver);
     }
 
-    public T edit(String columnName, String value) throws Exception {
+    protected void edit(String columnName, String value) throws Exception {
         WebElement tobeEdited = getGrid().searchAndGetElementInColumn(columnName, value);
         tobeEdited.click();
         wait.forElementToBeEnabled(editBtn);
         weToDButton(editBtn).click();
-        return new T();
+    }
+
+    protected void delete(String columnName, String value) throws Exception {
+        WebElement tobeDeleted = getGrid().searchAndGetElementInColumn(columnName, value);
+        tobeDeleted.click();
+        wait.forElementToBeEnabled(deleteBtn);
+        weToDButton(deleteBtn).click();
+        ConfirmationDialog confirmationDialog = new ConfirmationDialog(driver);
+        confirmationDialog.confirm();
     }
 }
diff --git a/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DMatSelect.java b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DMatSelect.java
new file mode 100644
index 0000000000000000000000000000000000000000..394cf1d1ecbf23d7b3e6aa504515b79042186b07
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/java/ddsl/dobjects/DMatSelect.java
@@ -0,0 +1,171 @@
+package ddsl.dobjects;
+
+import ddsl.dcomponents.ConfirmationDialog;
+import ddsl.dcomponents.DComponent;
+import org.apache.commons.lang3.StringUtils;
+import org.openqa.selenium.By;
+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;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+
+public class DMatSelect extends DComponent {
+    /**
+     * Generic wrapper for select element.
+     */
+    private final static Logger LOG = LoggerFactory.getLogger(ConfirmationDialog.class);
+
+    public WebElement selectContainer;
+    protected List<String> optionIDs = new ArrayList<String>();
+
+    @FindBy(css = "[class*=\"select-arrow\"]")
+    protected WebElement expandBtn;
+
+    private By options = By.cssSelector("div > mat-option");
+    private By selectedOption = By.cssSelector("[class*=\"-select-value\"]");
+
+    public DMatSelect(WebDriver driver, WebElement container) {
+        super(driver);
+        wait.forXMillis(100);
+        PageFactory.initElements(new AjaxElementLocatorFactory(container, data.getWaitTimeShort()), this);
+
+        this.selectContainer = container;
+//        try {
+//            if (isDisplayed() && isEnabled()) {
+//                weToDButton(expandBtn).click();
+//                extractOptionIDs();
+//                contract();
+//            }
+//        } catch (Exception e) {
+//        }
+    }
+
+    public boolean isDisplayed() throws Exception {
+        try {
+            return weToDButton(expandBtn).isEnabled();
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+    public boolean isEnabled() {
+//		aria-disabled="true"
+        boolean isEnabled = true;
+        try {
+            isEnabled = !Boolean.valueOf((selectContainer).getAttribute("aria-disabled"));
+        } catch (Exception e) {
+        }
+
+        return isEnabled;
+    }
+
+    private void extractOptionIDs() throws Exception {
+        wait.forAttributeToContain(selectContainer, "aria-owns", "mat-option");
+        String[] ids = selectContainer.getAttribute("aria-owns").split(" ");
+        optionIDs.addAll(Arrays.asList(ids));
+
+        // log.debug(optionIDs.size() + " option ids identified : " + optionIDs);
+    }
+
+//    private void expand() throws Exception {
+//        try {
+//            weToDButton(expandBtn).click();
+//            wait.forAttributeNotEmpty(selectContainer, "aria-owns");
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//    }
+
+    private void contract() throws Exception {
+        try {
+            wait.forXMillis(200);
+            selectContainer.sendKeys(Keys.ESCAPE);
+            wait.forXMillis(200);
+
+        } catch (Exception e) {
+        }
+    }
+
+//	-----------------------------------------------------------------
+
+    protected List<DObject> getOptionElements() throws Exception {
+        weToDButton(expandBtn).click();
+
+        List<DObject> optionObj = new ArrayList<>();
+
+        for (int i = 0; i < optionIDs.size(); i++) {
+            String optionId = optionIDs.get(i);
+            WebElement option = driver.findElement(By.id(optionId));
+            optionObj.add(new DObject(driver, option));
+        }
+        return optionObj;
+    }
+
+    public boolean selectOptionByText(String text) throws Exception {
+        LOG.debug("selecting option by text: " + text);
+
+        if (StringUtils.isEmpty(text)) {
+            return false;
+        }
+
+        List<DObject> optionObj = getOptionElements();
+        if (optionObj.size() == 0) {
+            LOG.warn("select has no options ");
+        }
+
+        for (DObject dObject : optionObj) {
+            if (StringUtils.equalsIgnoreCase(dObject.getText(), text)) {
+                dObject.click();
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    public boolean deselectOptionByText(String text) throws Exception {
+        LOG.debug("selecting option by text: " + text);
+
+        if (StringUtils.isEmpty(text)) {
+            return false;
+        }
+
+        List<DObject> optionObj = getOptionElements();
+        if (optionObj.size() == 0) {
+            LOG.warn("select has no options ");
+        }
+
+        for (DObject dObject : optionObj) {
+            if (StringUtils.equalsIgnoreCase(dObject.getText(), text)) {
+                dObject.click();
+                if (dObject.getAttribute("aria-selected").equals(true)) {
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
+
+    public List<String> getOptionsTexts() throws Exception {
+        List<String> texts = new ArrayList<>();
+        List<DObject> options = getOptionElements();
+
+        for (int i = 0; i < options.size(); i++) {
+            texts.add(options.get(i).getText());
+        }
+        contract();
+        return texts;
+    }
+
+}
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 37845e4722e585c72294373e87d951256cfb5f98..4d63a784b67374eaef8cbea9212d011f397f13b6 100644
--- a/domiSMP-ui-tests/src/main/java/ddsl/enums/ResourceTypes.java
+++ b/domiSMP-ui-tests/src/main/java/ddsl/enums/ResourceTypes.java
@@ -1,16 +1,16 @@
 package ddsl.enums;
 
 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)");
+    OASIS1("edelivery-oasis-smp-1.0-servicegroup"),
+    OASIS2("edelivery-oasis-smp-2.0-servicegroup"),
+    OASIS3("edelivery-oasis-cppa-3.0-cpp");
 
 
     public String getName() {
         return name;
     }
 
-    public final String name;
+    private final String name;
 
 
     ResourceTypes(String name) {
diff --git a/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/CreateGroupDetailsDialog.java b/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/CreateGroupDetailsDialog.java
index 210a94000969f3b5155ace08a25bcf5523dc14bd..022bef5e0f06c42d5445f19f1320f812c444e6f9 100644
--- a/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/CreateGroupDetailsDialog.java
+++ b/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/CreateGroupDetailsDialog.java
@@ -1,10 +1,47 @@
 package pages.administration.editDomainsPage;
 
+import ddsl.dcomponents.AlertComponent;
 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.GroupModel;
 
 public class CreateGroupDetailsDialog extends DComponent {
+    @FindBy(id = "name_id")
+    private WebElement groupNameLbl;
+    @FindBy(id = "description_id")
+    private WebElement groupDescriptionLbl;
+    @FindBy(id = "group_id")
+    private WebElement groupVisibilityDdl;
+    @FindBy(id = "saveButton")
+    private WebElement saveBtn;
     public CreateGroupDetailsDialog(WebDriver driver) {
         super(driver);
+        PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getWaitTimeShort()), this);
+
+    }
+
+    public AlertComponent getAlertArea() {
+        return new AlertComponent(driver);
+    }
+
+
+    public void fillGroupDetails(GroupModel group) {
+        groupNameLbl.sendKeys(group.getGroupName());
+        groupDescriptionLbl.sendKeys(group.getGroupDescription());
+        weToDSelect(groupVisibilityDdl).selectValue(group.getVisibility());
+    }
+
+    public Boolean tryClickOnSave() throws Exception {
+        wait.forElementToBeClickable(saveBtn);
+        if (weToDButton(saveBtn).isEnabled()) {
+            weToDButton(saveBtn).click();
+            return true;
+        } else {
+            return false;
+        }
     }
 }
diff --git a/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/EditDomainsPage.java b/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/EditDomainsPage.java
index b91b7f265b6e0748163d1222b5093459f779cd64..0b637b123c27e2875a7665dad8fdeb59dfe9db56 100644
--- a/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/EditDomainsPage.java
+++ b/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/EditDomainsPage.java
@@ -1,11 +1,11 @@
 package pages.administration.editDomainsPage;
 
-import ddsl.CommonPageWithGrid;
+import ddsl.CommonPageWithTabsAndGrid;
 import org.openqa.selenium.WebDriver;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class EditDomainsPage extends CommonPageWithGrid {
+public class EditDomainsPage extends CommonPageWithTabsAndGrid {
     /**
      * Page object for the Edit domains page. This contains the locators of the page and the methods for the behaviour of the page
      */
@@ -21,4 +21,10 @@ public class EditDomainsPage extends CommonPageWithGrid {
 
         return new DomainMembersTab(driver);
     }
+
+    public GroupTab getGroupTab() {
+
+        return new GroupTab(driver);
+    }
+
 }
diff --git a/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/GroupTab.java b/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/GroupTab.java
index 7af831e3465e5494407e8b60fe32c367d62cc8f8..a4cc878a0177dc34d3fb07f971f3a267c4e072eb 100644
--- a/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/GroupTab.java
+++ b/domiSMP-ui-tests/src/main/java/pages/administration/editDomainsPage/GroupTab.java
@@ -2,14 +2,28 @@ package pages.administration.editDomainsPage;
 
 import ddsl.dcomponents.commonComponents.subcategoryTab.SubcategoryTabComponent;
 import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.support.PageFactory;
+import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
 
 public class GroupTab extends SubcategoryTabComponent {
     public GroupTab(WebDriver driver) {
         super(driver);
+        PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getWaitTimeShort()), this);
+
+    }
+
+    public CreateGroupDetailsDialog clickCreateNewGroup() throws Exception {
+        create();
+        return new CreateGroupDetailsDialog(driver);
     }
 
-    @Override
-    public CreateGroupDetailsDialog create() {
+    public CreateGroupDetailsDialog clickEditGroup(String domainCode) throws Exception {
+        edit("Group name", domainCode);
         return new CreateGroupDetailsDialog(driver);
     }
+
+    public void deleteGroup(String domainCode) throws Exception {
+        delete("Group name", domainCode);
+    }
+
 }
diff --git a/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/EditGroupsPage.java b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/EditGroupsPage.java
new file mode 100644
index 0000000000000000000000000000000000000000..6ec5b06f47338fd14c1f2de6ca2feb91d64f0f42
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/EditGroupsPage.java
@@ -0,0 +1,41 @@
+package pages.administration.editGroupsPage;
+
+import ddsl.CommonPageWithTabs;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.ui.Select;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import rest.models.DomainModel;
+import rest.models.GroupModel;
+
+public class EditGroupsPage extends CommonPageWithTabs {
+    /**
+     * Page object for the Edit groups page. This contains the locators of the page and the methods for the behaviour of the page
+     */
+    private final static Logger LOG = LoggerFactory.getLogger(EditGroupsPage.class);
+
+    @FindBy(id = "domain_id")
+    private WebElement domainDdl;
+    @FindBy(id = "group_id")
+    private Select groupDdl;
+
+    public EditGroupsPage(WebDriver driver) {
+        super(driver);
+        LOG.debug("Loading Edit groups page.");
+    }
+
+    public void selectGroup(DomainModel domainModel, GroupModel groupModel) throws Exception {
+        weToMatDSelect(domainDdl).selectOptionByText(domainModel.getDomainCode());
+    }
+
+    public GroupMembersTab getDomainMembersTab() {
+        return new GroupMembersTab(driver);
+    }
+
+    public ResourceTab getGroupTab() {
+        return new ResourceTab(driver);
+    }
+
+}
diff --git a/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/GroupMembersTab.java b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/GroupMembersTab.java
new file mode 100644
index 0000000000000000000000000000000000000000..a9a91de39d2105a6335d2ef0d99e346c0dba25b0
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/GroupMembersTab.java
@@ -0,0 +1,15 @@
+package pages.administration.editGroupsPage;
+
+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 GroupMembersTab extends MembersComponent {
+
+    public GroupMembersTab(WebDriver driver) {
+        super(driver);
+        PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getWaitTimeShort()), this);
+    }
+}
+
diff --git a/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/ResourceTab.java b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/ResourceTab.java
new file mode 100644
index 0000000000000000000000000000000000000000..c359fa0e37ecd52274748b1196694b982262c145
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/java/pages/administration/editGroupsPage/ResourceTab.java
@@ -0,0 +1,20 @@
+package pages.administration.editGroupsPage;
+
+import ddsl.dcomponents.commonComponents.subcategoryTab.SubcategoryTabComponent;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.support.PageFactory;
+import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
+import pages.administration.editDomainsPage.CreateGroupDetailsDialog;
+
+public class ResourceTab extends SubcategoryTabComponent {
+    public ResourceTab(WebDriver driver) {
+        super(driver);
+        PageFactory.initElements(new AjaxElementLocatorFactory(driver, data.getWaitTimeShort()), this);
+
+    }
+
+    public CreateGroupDetailsDialog clickOnCreateNewResource() throws Exception {
+        create();
+        return new CreateGroupDetailsDialog(driver);
+    }
+}
diff --git a/domiSMP-ui-tests/src/main/java/pages/systemSettings/TruststorePage.java b/domiSMP-ui-tests/src/main/java/pages/systemSettings/TruststorePage.java
index 9a47d96ccd3b77aadae318a2683fafd374027104..76eced09d3ead2e9ac7072931bee84e4684da137 100644
--- a/domiSMP-ui-tests/src/main/java/pages/systemSettings/TruststorePage.java
+++ b/domiSMP-ui-tests/src/main/java/pages/systemSettings/TruststorePage.java
@@ -1,6 +1,7 @@
 package pages.systemSettings;
 
 import ddsl.CommonCertificatePage;
+import ddsl.dcomponents.Grid.SmallGrid;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
@@ -20,7 +21,9 @@ public class TruststorePage extends CommonCertificatePage {
         super(driver);
     }
 
-
+    public SmallGrid getCertificateGrid() {
+        return new SmallGrid(driver, rightPanel);
+    }
     public String addCertificateAndReturnAlias(String filePath) {
         uploadInput.sendKeys(filePath);
         String certificateAlias = getAlertMessageAndClose();
diff --git a/domiSMP-ui-tests/src/main/java/pages/systemSettings/UsersPage.java b/domiSMP-ui-tests/src/main/java/pages/systemSettings/UsersPage.java
index 44cdb562f90e2641710a80754166d28d3c207c9f..9a931a1529cff11852e6b4eadc50f2c736c1d7cb 100644
--- a/domiSMP-ui-tests/src/main/java/pages/systemSettings/UsersPage.java
+++ b/domiSMP-ui-tests/src/main/java/pages/systemSettings/UsersPage.java
@@ -1,6 +1,6 @@
 package pages.systemSettings;
 
-import ddsl.CommonPageWithGrid;
+import ddsl.CommonPageWithTabsAndGrid;
 import ddsl.dcomponents.commonComponents.UserDataCommonComponent;
 import ddsl.dobjects.DButton;
 import org.openqa.selenium.WebDriver;
@@ -10,7 +10,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import rest.models.UserModel;
 
-public class UsersPage extends CommonPageWithGrid {
+public class UsersPage extends CommonPageWithTabsAndGrid {
     /**
      * Page object for the Users 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/systemSettings/domainsPage/DomainsPage.java b/domiSMP-ui-tests/src/main/java/pages/systemSettings/domainsPage/DomainsPage.java
index 9376628de4126cd9e692df22d32bfd028aa83f3e..7d1657e5b2c1a05bb68e200826809923367a2b2b 100644
--- a/domiSMP-ui-tests/src/main/java/pages/systemSettings/domainsPage/DomainsPage.java
+++ b/domiSMP-ui-tests/src/main/java/pages/systemSettings/domainsPage/DomainsPage.java
@@ -1,6 +1,6 @@
 package pages.systemSettings.domainsPage;
 
-import ddsl.CommonPageWithGrid;
+import ddsl.CommonPageWithTabsAndGrid;
 import ddsl.dobjects.DButton;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
@@ -8,7 +8,7 @@ import org.openqa.selenium.support.FindBy;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class DomainsPage extends CommonPageWithGrid {
+public class DomainsPage extends CommonPageWithTabsAndGrid {
     /**
      * Page object for the Users 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/rest/BaseRestClient.java b/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java
index 4c473a7ba6e1374d91e1e7abd71834e9ce45bf1b..8e3bab9989e26bd065b0c74b56576c0965246580 100644
--- a/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java
+++ b/domiSMP-ui-tests/src/main/java/rest/BaseRestClient.java
@@ -78,12 +78,20 @@ public class BaseRestClient {
     protected ClientResponse jsonPUT(WebResource resource, String body) {
         return requestPUT(resource, body, MediaType.APPLICATION_JSON);
     }
-    protected ClientResponse requestPOST(WebResource resource, String params, String type) {
 
+    protected ClientResponse requestPOST(WebResource resource, String body) {
+        if (!isLoggedIn()) {
+            log.info("User is not loggedin");
+            try {
+                createSession();
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
 
         WebResource.Builder builder = decorateBuilder(resource);
 
-        return builder.type(type).post(ClientResponse.class, params);
+        return builder.type(MediaType.APPLICATION_JSON).post(ClientResponse.class, body);
     }
 
     // -------------------------------------------- Login --------------------------------------------------------------
diff --git a/domiSMP-ui-tests/src/main/java/rest/DomainClient.java b/domiSMP-ui-tests/src/main/java/rest/DomainClient.java
index 6b760ed5b52de66915d91f9c891caf955a988eda..4c01579eab4c21ba228bc4f765dcf7e4106484ed 100644
--- a/domiSMP-ui-tests/src/main/java/rest/DomainClient.java
+++ b/domiSMP-ui-tests/src/main/java/rest/DomainClient.java
@@ -3,11 +3,15 @@ package rest;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.sun.jersey.api.client.ClientResponse;
+import ddsl.enums.ResourceTypes;
 import org.json.JSONObject;
 import rest.models.DomainModel;
 import rest.models.MemberModel;
 import utils.TestRunData;
 
+import java.util.ArrayList;
+import java.util.List;
+
 public class DomainClient extends BaseRestClient {
 
     /**
@@ -70,4 +74,31 @@ public class DomainClient extends BaseRestClient {
         return response.getEntity(MemberModel.class);
     }
 
+    public DomainModel addResourcesToDomain(String domainId, List<ResourceTypes> resourceTypesList) throws JsonProcessingException {
+        ObjectMapper mapper = new ObjectMapper();
+        List<String> resourceListToBeAdded = new ArrayList<>();
+        for (ResourceTypes resourceType : resourceTypesList) {
+            resourceListToBeAdded.add(resourceType.getName());
+        }
+
+        String resourceTypes = mapper.writeValueAsString(resourceListToBeAdded);
+        if (!isLoggedIn()) {
+            try {
+                createSession();
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
+        String addMemberPath = RestServicePaths.getAddResourcePath(TestRunData.getInstance().getUserId(), resourceTypes);
+        ClientResponse response = requestPOST(resource.path(addMemberPath), resourceTypes);
+        if (response.getStatus() != 200) {
+            try {
+                throw new SMPRestException("Could not add resource!", response);
+            } catch (SMPRestException e) {
+                throw new RuntimeException(e);
+            }
+        }
+        log.debug("Resources have been added!");
+        return response.getEntity(DomainModel.class);
+    }
 }
diff --git a/domiSMP-ui-tests/src/main/java/rest/RestServicePaths.java b/domiSMP-ui-tests/src/main/java/rest/RestServicePaths.java
index fa47e3a3a688c465cf599ca34db6023c0e7eaccb..e85f3fcac00e67fce38f18fe59bdff0837064503 100644
--- a/domiSMP-ui-tests/src/main/java/rest/RestServicePaths.java
+++ b/domiSMP-ui-tests/src/main/java/rest/RestServicePaths.java
@@ -29,5 +29,9 @@ public class RestServicePaths {
         return "/edit/rest/" + currentUserId + "/domain/" + domainId + "/member/put";
     }
 
+    public static String getAddResourcePath(String currentUserId, String domainId) {
+        return String.format("/internal/rest/domain/%userId/%domainId/update-resource-types", currentUserId, domainId);
+    }
+
 
 }
diff --git a/domiSMP-ui-tests/src/main/java/rest/models/GroupModel.java b/domiSMP-ui-tests/src/main/java/rest/models/GroupModel.java
new file mode 100644
index 0000000000000000000000000000000000000000..cf5e6a666c0ae6efc48e5a6ecbabb1dff2e889d5
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/java/rest/models/GroupModel.java
@@ -0,0 +1,50 @@
+package rest.models;
+
+
+import utils.Generator;
+
+public class GroupModel {
+    private String groupName;
+    private String visibility;
+    private String groupDescription;
+
+    public static GroupModel generatePublicDomain() {
+        GroupModel groupModel = new GroupModel();
+        groupModel.groupName = ("AUT_groupName_" + Generator.randomAlphaNumeric(4)).toLowerCase();
+        groupModel.groupDescription = Generator.randomAlphaNumeric(10).toLowerCase();
+        groupModel.visibility = "PUBLIC";
+        return groupModel;
+    }
+
+    public static GroupModel generatePrivateDomain() {
+        GroupModel groupModel = new GroupModel();
+        groupModel.groupName = ("AUT_groupName_" + Generator.randomAlphaNumeric(4)).toLowerCase();
+        groupModel.groupDescription = Generator.randomAlphaNumeric(10).toLowerCase();
+        groupModel.visibility = "PRIVATE";
+        return groupModel;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public String getVisibility() {
+        return visibility;
+    }
+
+    public void setVisibility(String visibility) {
+        this.visibility = visibility;
+    }
+
+    public String getGroupDescription() {
+        return groupDescription;
+    }
+
+    public void setGroupDescription(String groupDescription) {
+        this.groupDescription = groupDescription;
+    }
+}
diff --git a/domiSMP-ui-tests/src/main/resources/myLocal.properties b/domiSMP-ui-tests/src/main/resources/myLocal.properties
index 47920057f0b1778b26999e190f33d00b33287a76..91ecbb1a2a4469166b90b7c561e58ed6e3c89360 100644
--- a/domiSMP-ui-tests/src/main/resources/myLocal.properties
+++ b/domiSMP-ui-tests/src/main/resources/myLocal.properties
@@ -1,9 +1,9 @@
 # Environment properties
 # Test runner properties
-test.webdriver.path=./chromedriver.exe
-test.webdriver.type=chrome
-#test.webdriver.path=./geckodriver.exe
-#test.webdriver.type=firefox
+#test.webdriver.path=./chromedriver.exe
+#test.webdriver.type=chrome
+test.webdriver.path=./geckodriver.exe
+test.webdriver.type=firefox
 
 test.webdriver.headless=false
 test.application.ui.url=http://eulogin.protected.smp.local:8982/smp/ui
diff --git a/domiSMP-ui-tests/src/main/resources/truststore/test.cer b/domiSMP-ui-tests/src/main/resources/truststore/expiredCertificate.cer
similarity index 100%
rename from domiSMP-ui-tests/src/main/resources/truststore/test.cer
rename to domiSMP-ui-tests/src/main/resources/truststore/expiredCertificate.cer
diff --git a/domiSMP-ui-tests/src/main/resources/truststore/validCertificate.cer b/domiSMP-ui-tests/src/main/resources/truststore/validCertificate.cer
new file mode 100644
index 0000000000000000000000000000000000000000..9a84d763f891ccfac7500f741d0ee92bfaef5c27
--- /dev/null
+++ b/domiSMP-ui-tests/src/main/resources/truststore/validCertificate.cer
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDAzCCAeugAwIBAgIEEQ+g2DANBgkqhkiG9w0BAQsFADAyMQ8wDQYDVQQDDAZy
+ZWRfZ3cxEjAQBgNVBAoTCWVEZWxpdmVyeTELMAkGA1UEBhMCQkUwHhcNMjMwMzIz
+MDg0OTIyWhcNMzMwMzIyMDg0OTIyWjAyMQ8wDQYDVQQDDAZyZWRfZ3cxEjAQBgNV
+BAoTCWVEZWxpdmVyeTELMAkGA1UEBhMCQkUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
+DwAwggEKAoIBAQCTt2UA2xulSq7S4XbazB7j2fquW+N/ybl4YI7ViwNjYbnFF9Hr
+TCy5q36UVHzioInn0qjqhz16pzAyF+0zCQFGFhG0hC/zrODdYXk6YgGsxiecQr7K
+Ac7OsCqAmRC6Y4hKoFmgunLEq3GwRpL4gMlZpd0nkfJaWpfgwJn6ZKebrs5u+71D
+q+lMlROPH1lWyeq6vuzGeVhMR3jf1o8s77SRcpBS/ZsXWQ7AM8/Lih3etPzqmt/R
+p9LAh49DOfmQF5BhANE5rETUpJkL1hc9lBTXh8f8XUcG/X0vvqZqO8CSuIqerC42
+T5AEBLjJRINEpM6tl5rI9U1c4zUnffyhkRh7AgMBAAGjITAfMB0GA1UdDgQWBBQL
+X5ndwOUTSkSKKXxSbgSuyUeJPTANBgkqhkiG9w0BAQsFAAOCAQEAMS0qoxzmYmrm
+kT2PiFnVoUKbx057DgaHzBa0lPNJX2tXxR05v/ZRGKImiTuij9WiCc0GRJF6llwd
+19BzwC5z/hSoxH40nFaXjH9OXtANF+G6UmbiwltUcW9NSlnIR2yVDJGRwvpzLdTE
+HEUiws4u80CNiz9ylVPJ58XclTlDiRLR2Glhq0zmFX+buMOjJRVT9RaLHgMZWJV0
+i506YSrKgjjNXIcL3PyR7ahBLEWw/qolgZtmAq/bgGIZe3bt/g6lF5wnpKZ3+P48
+h9v17PrxbDOyc7QDw9PEs6h4L1t06yUwK8gE96wyJBsnLZybkf4X/HyKA1yinJy9
+SXAnr3u8EA==
+-----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 c72fd95c128450da7d7cd500f55b7a6880f13f3a..cbfd7c5349649e6f0fc9a04a0ccee0088ed4e3ce 100644
--- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java
+++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/DomainsPgTests.java
@@ -44,7 +44,7 @@ public class DomainsPgTests extends SeleniumTest {
         String alert = domainsPage.getAlertMessageAndClose();
         soft.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!");
 
-        domainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
+        domainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
         soft.assertEquals(domainModel.getSignatureKeyAlias(), domainsPage.getDomainTab().getResponseSignatureCertificateSelectedValue());
         soft.assertEquals(domainModel.getVisibility(), domainsPage.getDomainTab().getVisibilityOfDomainSelectedValue());
         soft.assertEquals("To complete domain configuration, please select at least one resource type from the Resource Types tab", domainsPage.getDomainWarningMessage());
@@ -62,7 +62,7 @@ public class DomainsPgTests extends SeleniumTest {
         String alert = domainsPage.getAlertMessageAndClose();
         soft.assertEquals(alert, "Domain: [" + domainModel.getDomainCode() + "] was created!");
 
-        domainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
+        domainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
         domainsPage.goToTab("SML integration");
         domainsPage.getSMLIntegrationTab().fillSMLIntegrationTab(domainModel);
         domainsPage.getSMLIntegrationTab().saveChanges();
@@ -104,14 +104,14 @@ public class DomainsPgTests extends SeleniumTest {
         homePage.goToLoginPage();
         loginPage.login(normalUser.getUsername(), data.getNewPassword());
         EditDomainsPage editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
-        WebElement domainElement = editDomainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
+        WebElement domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
         soft.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().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
+        domainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
         domainsPage.goToTab("Members");
         domainsPage.getMembersTab().changeRoleOfUser(normalUser.getUsername(), "ADMIN");
 
@@ -120,7 +120,7 @@ public class DomainsPgTests extends SeleniumTest {
         homePage.goToLoginPage();
         loginPage.login(normalUser.getUsername(), data.getNewPassword());
         editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
-        domainElement = editDomainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
+        domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
         soft.assertNotNull(domainElement, "Domain found for user which doesn't have rights");
 
 
@@ -129,7 +129,7 @@ public class DomainsPgTests extends SeleniumTest {
         homePage.goToLoginPage();
         loginPage.login(data.getAdminUser().get("username"), data.getAdminUser().get("password"));
         domainsPage = homePage.getSidebar().navigateTo(Pages.SYSTEM_SETTINGS_DOMAINS);
-        domainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
+        domainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
         domainsPage.goToTab("Members");
         domainsPage.getMembersTab().removeUser(normalUser.getUsername());
         userMemberElement = domainsPage.getMembersTab().getMembersGrid().searchAndGetElementInColumn("Username", normalUser.getUsername());
@@ -139,7 +139,7 @@ public class DomainsPgTests extends SeleniumTest {
         homePage.goToLoginPage();
         loginPage.login(normalUser.getUsername(), data.getNewPassword());
         editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
-        domainElement = editDomainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
+        domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
         soft.assertNull(domainElement, "Domain found for user which doesn't have rights");
 
         soft.assertAll();
diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditDomainsPgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditDomainsPgTests.java
index a11f76ee393875a5dfaa2d11e57ba4ff3b483e2e..8fd3698cd01928267a1a145b125c38c8f34cdd88 100644
--- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditDomainsPgTests.java
+++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditDomainsPgTests.java
@@ -6,11 +6,15 @@ import domiSMPTests.SeleniumTest;
 import org.json.JSONObject;
 import org.openqa.selenium.WebElement;
 import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Ignore;
 import org.testng.annotations.Test;
 import org.testng.asserts.SoftAssert;
 import pages.LoginPage;
+import pages.administration.editDomainsPage.CreateGroupDetailsDialog;
 import pages.administration.editDomainsPage.EditDomainsPage;
+import pages.administration.editGroupsPage.EditGroupsPage;
 import rest.models.DomainModel;
+import rest.models.GroupModel;
 import rest.models.MemberModel;
 import rest.models.UserModel;
 
@@ -51,7 +55,7 @@ public class EditDomainsPgTests extends SeleniumTest {
         rest.users().createUser(memberUser);
 
         //Invite user as VIEW and check if he has admin rights for domain
-        editDomainPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
+        editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
         editDomainPage.getDomainMembersTab().getInviteMemberBtn().click();
         editDomainPage.getDomainMembersTab().getInviteMembersPopup().selectMember(memberUser.getUsername(), "VIEWER");
         WebElement userMemberElement = editDomainPage.getDomainMembersTab().getMembersGrid().searchAndGetElementInColumn("Username", memberUser.getUsername());
@@ -62,14 +66,14 @@ public class EditDomainsPgTests extends SeleniumTest {
         homePage.goToLoginPage();
         loginPage.login(memberUser.getUsername(), data.getNewPassword());
         EditDomainsPage editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
-        WebElement domainElement = editDomainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
+        WebElement domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
         soft.assertNull(domainElement, "Domain found for user which doesn't have rights");
 
         homePage.logout();
         loginPage = homePage.goToLoginPage();
         loginPage.login(adminUser.getUsername(), data.getNewPassword());
         editDomainPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
-        editDomainPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
+        editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
         editDomainPage.getDomainMembersTab().changeRoleOfUser(memberUser.getUsername(), "ADMIN");
 
         //check if user has admin rights to domain as Admin
@@ -77,7 +81,7 @@ public class EditDomainsPgTests extends SeleniumTest {
         homePage.goToLoginPage();
         loginPage.login(memberUser.getUsername(), data.getNewPassword());
         editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
-        domainElement = editDomainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
+        domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
         soft.assertNotNull(domainElement, "Domain found for user which doesn't have rights");
 
 
@@ -86,7 +90,7 @@ public class EditDomainsPgTests extends SeleniumTest {
         homePage.goToLoginPage();
         loginPage.login(adminUser.getUsername(), data.getNewPassword());
         editDomainPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
-        editDomainPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
+        editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
         editDomainPage.getDomainMembersTab().removeUser(memberUser.getUsername());
         userMemberElement = editDomainPage.getDomainMembersTab().getMembersGrid().searchAndGetElementInColumn("Username", memberUser.getUsername());
         soft.assertNull(userMemberElement, "Domain found for user which doesn't have rights");
@@ -95,10 +99,68 @@ public class EditDomainsPgTests extends SeleniumTest {
         homePage.goToLoginPage();
         loginPage.login(memberUser.getUsername(), data.getNewPassword());
         editDomainsPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
-        domainElement = editDomainsPage.getDataPanelGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
+        domainElement = editDomainsPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode());
         soft.assertNull(domainElement, "Domain found for user which doesn't have rights");
+        soft.assertAll();
+
+    }
+
+    @Ignore
+    @Test(description = "EDTDOM-02 Domain admins are able to create new groups")
+    public void DomainAdminsAreAbleToCreate() throws Exception {
+        GroupModel groupToBeCreated = GroupModel.generatePublicDomain();
+        editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
+
+        editDomainPage.goToTab("Group");
+
+        CreateGroupDetailsDialog createGroupDetailsDialog = editDomainPage.getGroupTab().clickCreateNewGroup();
+        createGroupDetailsDialog.fillGroupDetails(groupToBeCreated);
+        Boolean isSaveSuccesfully = createGroupDetailsDialog.tryClickOnSave();
+        soft.assertTrue(isSaveSuccesfully);
+
+        WebElement createGroup = editDomainPage.getGroupTab().getGrid().searchAndGetElementInColumn("Group name", groupToBeCreated.getGroupName());
+        soft.assertNotNull(createGroup);
+
+        EditGroupsPage editgroupPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_GROUPS);
+        soft.assertAll();
 
+    }
+
+    @Test(description = "EDTDOM-03 Domain admins are not able to create duplicated groups")
+    public void DomainAdminsAreNotAbleToCreateDuplicatedGroups() throws Exception {
+        GroupModel duplicatedGroup = GroupModel.generatePublicDomain();
+
+        editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
+        editDomainPage.goToTab("Group");
+        CreateGroupDetailsDialog createGroupDetailsDialog = editDomainPage.getGroupTab().clickCreateNewGroup();
+        createGroupDetailsDialog.fillGroupDetails(duplicatedGroup);
+        Boolean isSaveSuccesfully = createGroupDetailsDialog.tryClickOnSave();
+        soft.assertTrue(isSaveSuccesfully);
+
+
+        createGroupDetailsDialog = editDomainPage.getGroupTab().clickCreateNewGroup();
+        createGroupDetailsDialog.fillGroupDetails(duplicatedGroup);
+        isSaveSuccesfully = createGroupDetailsDialog.tryClickOnSave();
+        String duplicateAlertMessage = createGroupDetailsDialog.getAlertArea().getAlertMessage();
+        soft.assertTrue(isSaveSuccesfully);
+        soft.assertEquals(duplicateAlertMessage, String.format("Invalid request [CreateGroup]. Error: Group with name [%s] already exists!!", duplicatedGroup.getGroupName()));
         soft.assertAll();
+    }
+
+    @Test(description = "EDTDOM-04 Domain admins are able to delete groups without resources")
+    public void DomainAdminsAreNotAbleToDeleteGroups() throws Exception {
+        GroupModel groupToBeDeleted = GroupModel.generatePublicDomain();
 
+        editDomainPage.getLeftSideGrid().searchAndGetElementInColumn("Domain code", domainModel.getDomainCode()).click();
+        editDomainPage.goToTab("Group");
+        CreateGroupDetailsDialog createGroupDetailsDialog = editDomainPage.getGroupTab().clickCreateNewGroup();
+        createGroupDetailsDialog.fillGroupDetails(groupToBeDeleted);
+        Boolean isSaveSuccesfully = createGroupDetailsDialog.tryClickOnSave();
+        soft.assertTrue(isSaveSuccesfully);
+
+        editDomainPage.getGroupTab().deleteGroup(groupToBeDeleted.getGroupName());
+        String deleteMessage = editDomainPage.getAlertArea().getAlertMessage();
+        soft.assertEquals(deleteMessage, String.format("Domain group [%s] deleted", groupToBeDeleted.getGroupName()));
+        soft.assertAll();
     }
 }
diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditGroupsPgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditGroupsPgTests.java
new file mode 100644
index 0000000000000000000000000000000000000000..c1523f0419c8e49414f16d49b504c8c3af95766d
--- /dev/null
+++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/EditGroupsPgTests.java
@@ -0,0 +1,58 @@
+package domiSMPTests.ui;
+
+import ddsl.DomiSMPPage;
+import ddsl.enums.Pages;
+import ddsl.enums.ResourceTypes;
+import domiSMPTests.SeleniumTest;
+import org.json.JSONObject;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+import org.testng.asserts.SoftAssert;
+import pages.LoginPage;
+import pages.administration.editDomainsPage.EditDomainsPage;
+import rest.models.DomainModel;
+import rest.models.MemberModel;
+import rest.models.UserModel;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class EditGroupsPgTests extends SeleniumTest {
+    DomiSMPPage homePage;
+    LoginPage loginPage;
+    EditDomainsPage editDomainPage;
+    String domainId;
+    DomainModel domainModel;
+    UserModel adminUser;
+    SoftAssert soft;
+
+    @BeforeMethod(alwaysRun = true)
+    public void beforeTest() throws Exception {
+        soft = new SoftAssert();
+        domainModel = DomainModel.generatePublicDomainModelWithSML();
+        adminUser = UserModel.generateUserWithADMINrole();
+
+        MemberModel domainMember = new MemberModel();
+        domainMember.setUsername(adminUser.getUsername());
+        domainMember.setRoleType("ADMIN");
+
+        rest.users().createUser(adminUser);
+        JSONObject domainJson = rest.domains().createDomain(domainModel);
+        domainId = domainJson.get("domainId").toString();
+        rest.domains().addMembersToDomain(domainId, domainMember);
+        List<ResourceTypes> resourcesToBeAdded = Arrays.asList(ResourceTypes.OASIS1, ResourceTypes.OASIS3, ResourceTypes.OASIS2);
+
+
+        rest.domains().addResourcesToDomain(domainId, resourcesToBeAdded);
+
+        homePage = new DomiSMPPage(driver);
+        loginPage = homePage.goToLoginPage();
+        loginPage.login(adminUser.getUsername(), data.getNewPassword());
+        editDomainPage = homePage.getSidebar().navigateTo(Pages.ADMINISTRATION_EDIT_DOMAINS);
+    }
+
+    @Test(description = "EDTDOM-01 Domain admins are able to invite/edit/remove members")
+    public void DomainAdminsAreAbleToInviteEditRemoveMembers() throws Exception {
+
+    }
+}
diff --git a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/TrustorePgTests.java b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/TrustorePgTests.java
index eab74a9f293741221809091076bef77398dd8a0e..b1ea514be556bb45821cc1748824589a6e94f27a 100644
--- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/TrustorePgTests.java
+++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/TrustorePgTests.java
@@ -3,6 +3,7 @@ package domiSMPTests.ui;
 import ddsl.DomiSMPPage;
 import ddsl.enums.Pages;
 import domiSMPTests.SeleniumTest;
+import org.openqa.selenium.WebElement;
 import org.testng.annotations.Test;
 import org.testng.asserts.SoftAssert;
 import pages.LoginPage;
@@ -11,7 +12,6 @@ import utils.FileUtils;
 
 public class TrustorePgTests extends SeleniumTest {
 
-    //TODO work in progress - wait for input elements to get text
 
     @Test(description = "TRST-01 System admin is able to import certificates")
     public void SystemAdminIsAbleToImportCertificates() throws Exception {
@@ -23,16 +23,50 @@ public class TrustorePgTests extends SeleniumTest {
         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 path = FileUtils.getAbsolutePath("./src/main/resources/truststore/validCertificate.cer");
 
         String certificateALias = truststorepage.addCertificateAndReturnAlias(path);
         soft.assertNotNull(certificateALias);
-        //  soft.assertEquals(truststorepage.getPublicKeyTypeLbl(), "RSA");
-        // soft.assertEquals(truststorepage.getAliasIdLbl(), "smp_domain_02");
+        soft.assertEquals(truststorepage.getPublicKeyTypeLbl(), "RSA");
+        soft.assertEquals(truststorepage.getAliasIdLbl(), certificateALias);
+        soft.assertEquals(truststorepage.getSmpCertificateIdLbl(), "CN=red_gw,O=eDelivery,C=BE:00000000110fa0d8");
+        soft.assertEquals(truststorepage.getSubjectNameLbl(), "C=BE,O=eDelivery,CN=red_gw");
+        soft.assertEquals(truststorepage.getValidFromLbl(), "23-3-2023, 10:49:22");
+        soft.assertEquals(truststorepage.getValidToLbl(), "22-3-2033, 10:49:22");
+        soft.assertEquals(truststorepage.getIssuerLbl(), "C=BE,O=eDelivery,CN=red_gw");
+        soft.assertEquals(truststorepage.getSerialNumberLbl(), "110fa0d8");
+        soft.assertAll();
+
+    }
 
+    @Test(description = "TRST-02 System admin is able to import duplicated certificates")
+    public void SystemAdminIsAbleToImportDuplicatedCertificates() throws Exception {
 
-        soft.assertAll();
+        SoftAssert soft = new SoftAssert();
+        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/validCertificate.cer");
 
+        String certificateALias = truststorepage.addCertificateAndReturnAlias(path);
+        String duplicatedCertificateALias = truststorepage.addCertificateAndReturnAlias(path);
+        WebElement certificate = truststorepage.getCertificateGrid().searchAndGetElementInColumn("Alias", certificateALias);
+        soft.assertNotNull(certificate);
+        truststorepage.getLeftSideGrid().searchAndGetElementInColumn("Alias", duplicatedCertificateALias);
+
+        soft.assertNotNull(duplicatedCertificateALias);
+        soft.assertEquals(truststorepage.getPublicKeyTypeLbl(), "RSA");
+        soft.assertEquals(truststorepage.getAliasIdLbl(), duplicatedCertificateALias);
+        soft.assertEquals(truststorepage.getSmpCertificateIdLbl(), "CN=red_gw,O=eDelivery,C=BE:00000000110fa0d8");
+        soft.assertEquals(truststorepage.getSubjectNameLbl(), "C=BE,O=eDelivery,CN=red_gw");
+        soft.assertEquals(truststorepage.getValidFromLbl(), "23-3-2023, 10:49:22");
+        soft.assertEquals(truststorepage.getValidToLbl(), "22-3-2033, 10:49:22");
+        soft.assertEquals(truststorepage.getIssuerLbl(), "C=BE,O=eDelivery,CN=red_gw");
+        soft.assertEquals(truststorepage.getSerialNumberLbl(), "110fa0d8");
+        soft.assertAll();
 
     }
 
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 1ff5d0ecf68fe59f66a90e55c2a326f4021363f9..d955fd4a8cf45fa9ea34b201435e5cd17d598b5d 100644
--- a/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/UsersPgTests.java
+++ b/domiSMP-ui-tests/src/test/java/domiSMPTests/ui/UsersPgTests.java
@@ -34,7 +34,7 @@ public class UsersPgTests extends SeleniumTest {
 
         usersPage.refreshPage();
         // usersPage.filter(adminNewUserData.getUsername());
-        WebElement newUser = usersPage.getDataPanelGrid().searchAndGetElementInColumn("Username", adminNewUserData.getUsername());
+        WebElement newUser = usersPage.getLeftSideGrid().searchAndGetElementInColumn("Username", adminNewUserData.getUsername());
         soft.assertNotNull(newUser);
         newUser.click();