diff --git a/pom.xml b/pom.xml
index de06f3cc2fba4eba68cd3c248c021c86bb96982a..5e08d1af1528909e9cbba9ced8db828d8c630a0d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,6 +26,7 @@
         <module>smp-server-library</module>
         <module>smp-angular</module>
         <module>smp-webapp</module>
+        <module>smp-soapui-tests</module>
     </modules>
 
     <properties>
@@ -710,81 +711,6 @@
 
     </build>
     <profiles>
-        <!-- soap ui -->
-        <profile>
-            <id>run-soapui</id>
-            <build>
-                <defaultGoal>test</defaultGoal>
-                <plugins>
-                    <plugin>
-                        <groupId>com.smartbear.soapui</groupId>
-                        <artifactId>soapui-pro-maven-plugin</artifactId>
-                        <version>5.0.0</version>
-                        <configuration>
-                            <outputFolder>${sonar.jacoco.codeCoveragePath}/surefire-reports</outputFolder>
-                            <junitReport>true</junitReport>
-                            <printReport>true</printReport>
-                            <settingsFile>${basedir}/soapui/soapui-settings.xml</settingsFile>
-                            <soapuiProperties>
-                                <property>
-                                    <name>soapui.scripting.library</name>
-                                    <value>${basedir}/groovy</value>
-                                </property>
-                                <property>
-                                    <name>soapui.logroot</name>
-                                    <value>${sonar.jacoco.codeCoveragePath}/soapui/logs/</value>
-                                </property>
-                                <property>
-                                    <name>http.nonProxyHosts</name>
-                                    <value>localhost|127.*|[::1]</value>
-                                </property>
-                            </soapuiProperties>
-                            <testFailIgnore>true</testFailIgnore>
-                            <projectFile>${basedir}/soapui/SMP4.0-Generic-soapui-project.xml</projectFile>
-                            <testSuite>PASSING_AUTO_BAMBOO</testSuite>
-                            <!--If you want to execute single test case <testCase>SMP001-Create ServiceGroup-Basic Flow-Admin Service Group specified</testCase>-->
-                            <projectProperties>
-                                <value>url=${url}</value>
-                                <value>SMPAdminUser=${SMPAdminUser}</value>
-                                <value>SMPAdminPassword=${SMPAdminPassword}</value>
-                            </projectProperties>
-                        </configuration>
-
-                        <executions>
-                            <execution>
-                                <phase>integration-test</phase>
-                                <goals>
-                                    <goal>test</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-
-                    </plugin>
-
-                    <plugin>
-                        <groupId>org.jacoco</groupId>
-                        <artifactId>jacoco-maven-plugin</artifactId>
-                        <version>${jacoco.maven.plugin.version}</version>
-                        <executions>
-                            <execution>
-                                <phase>post-integration-test</phase>
-
-                                <goals>
-                                    <goal>dump</goal>
-                                </goals>
-                                <configuration>
-                                    <destFile>${sonar.jacoco.reportPath}</destFile>
-                                    <address>${sonar.jacoco.remoteAddress}</address>
-                                    <port>${sonar.jacoco.remotePort}</port>
-                                    <reset>false</reset>
-                                    <append>true</append>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
         <profile>
             <id>dependency-check</id>
             <build>
diff --git a/smp-soapui-tests/pom.xml b/smp-soapui-tests/pom.xml
index 74c2e998a10296ba4b61159cb87c86102beb739b..d659e57b7be5f6d8551c0fb882e0a0d91b74cbe0 100644
--- a/smp-soapui-tests/pom.xml
+++ b/smp-soapui-tests/pom.xml
@@ -20,54 +20,82 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
-    <build>
-        <plugins>
-            <plugin>
-				<groupId>com.smartbear.soapui</groupId>
-                <artifactId>soapui-pro-maven-plugin</artifactId>
-                <version>5.0.0</version>
-                <executions>
-                    <execution>
-                        <phase>test</phase>
-                        <goals>
-                            <goal>test</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <outputFolder>${project.build.directory}/surefire-reports</outputFolder>
-                    <junitReport>true</junitReport>
-                    <printReport>true</printReport>
-                    <soapuiProperties>
-                        <property>
-                            <name>soapui.scripting.library</name>
-                            <value>${project.basedir}/groovy</value>
-                        </property>
-                        <property>
-                            <name>soapui.logroot</name>
-                            <value>${project.build.directory}/soapui/logs/</value>
-                        </property>
-                        <property>
-                            <name>http.nonProxyHosts</name>
-                            <value>localhost|127.*|[::1]</value>
-                        </property>
-                    </soapuiProperties>
-                    <testFailIgnore>true</testFailIgnore>
-                    <projectFile>${project.basedir}/soapui/SMP4.0-Generic-soapui-project.xml</projectFile>
-                    <testSuite>PASSING_AUTO_BAMBOO</testSuite>
-                    <!--If you want to execute single test case <testCase>SMP001-Create ServiceGroup-Basic Flow-Admin Service Group specified</testCase>-->
-                    <!-- testCase>SMP063-EDELIVERY-364 slash encoding-Tomcat</testCase -->
-                    <!-- testCase>SMP079-EDELIVERY-2806-Basic Flow-BlueCote UTF8 chars</testCase -->
-                    <!-- testCase>SMP094-Basic Flow-ClientCert-UTF8-Variants</testCase -->
+    <profiles>
+        <!-- soap ui -->
+        <profile>
+            <id>run-soapui</id>
+            <build>
+                <defaultGoal>test</defaultGoal>
+                <plugins>
+                    <plugin>
+                        <groupId>com.smartbear.soapui</groupId>
+                        <artifactId>soapui-pro-maven-plugin</artifactId>
+                        <version>5.0.0</version>
+                        <configuration>
+                            <outputFolder>${sonar.jacoco.codeCoveragePath}/surefire-reports</outputFolder>
+                            <junitReport>true</junitReport>
+                            <printReport>true</printReport>
+                            <settingsFile>${basedir}/soapui/soapui-settings.xml</settingsFile>
+                            <soapuiProperties>
+                                <property>
+                                    <name>soapui.scripting.library</name>
+                                    <value>${basedir}/groovy</value>
+                                </property>
+                                <property>
+                                    <name>soapui.logroot</name>
+                                    <value>${sonar.jacoco.codeCoveragePath}/soapui/logs/</value>
+                                </property>
+                                <property>
+                                    <name>http.nonProxyHosts</name>
+                                    <value>localhost|127.*|[::1]</value>
+                                </property>
+                            </soapuiProperties>
+                            <testFailIgnore>true</testFailIgnore>
+                            <projectFile>${basedir}/soapui/SMP4.0-Generic-soapui-project.xml
+                            </projectFile>
+                            <testSuite>PASSING_AUTO_BAMBOO</testSuite>
+                            <!--If you want to execute single test case <testCase>SMP001-Create ServiceGroup-Basic Flow-Admin Service Group specified</testCase>-->
+                            <projectProperties>
+                                <value>url=${url}</value>
+                                <value>SMPAdminUser=${SMPAdminUser}</value>
+                                <value>SMPAdminPassword=${SMPAdminPassword}</value>
+                            </projectProperties>
+                        </configuration>
 
-                    <projectProperties>
-                        <value>url=${url}</value>
-                        <value>SMPAdminUser=${SMPAdminUser}</value>
-                        <value>SMPAdminPassword=${SMPAdminPassword}</value>
-                    </projectProperties>
-                </configuration>
+                        <executions>
+                            <execution>
+                                <phase>integration-test</phase>
+                                <goals>
+                                    <goal>test</goal>
+                                </goals>
+                            </execution>
+                        </executions>
 
-            </plugin>
-        </plugins>
-    </build>
+                    </plugin>
+
+                    <plugin>
+                        <groupId>org.jacoco</groupId>
+                        <artifactId>jacoco-maven-plugin</artifactId>
+                        <version>${jacoco.maven.plugin.version}</version>
+                        <executions>
+                            <execution>
+                                <phase>post-integration-test</phase>
+
+                                <goals>
+                                    <goal>dump</goal>
+                                </goals>
+                                <configuration>
+                                    <destFile>${sonar.jacoco.reportPath}</destFile>
+                                    <address>${sonar.jacoco.remoteAddress}</address>
+                                    <port>${sonar.jacoco.remotePort}</port>
+                                    <reset>false</reset>
+                                    <append>true</append>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
 </project>
diff --git a/smp-ui-tests/src/main/java/pages/components/Sidebar.java b/smp-ui-tests/src/main/java/pages/components/Sidebar.java
index 7d2d243ec3cd69b5c139e62b8327ad22040ca569..b08531486f4b32f323de620b3fc9ac00a71c9b64 100644
--- a/smp-ui-tests/src/main/java/pages/components/Sidebar.java
+++ b/smp-ui-tests/src/main/java/pages/components/Sidebar.java
@@ -1,5 +1,6 @@
 package pages.components;
 
+import org.openqa.selenium.By;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
@@ -39,6 +40,12 @@ public class Sidebar extends PageComponent {
 	@FindBy(id = "sidebar_user_id")
 	private WebElement userLnk;
 
+	@FindBy(css = "mat-icon[role=img][mattooltip=Collapse]")
+	private WebElement collapseButton;
+
+	@FindBy(xpath = "//button[@id='sidebar_search_id']//span[text()='Search']")
+	private WebElement sidebarSearchText;
+
 	/* Receives the Page object class as parameter and based on the class name it navigates to the appropriate page
 	 and returns an instance of that class */
 	public <T extends SMPPage> T goToPage(Class<T> expect){
@@ -80,5 +87,13 @@ public class Sidebar extends PageComponent {
 	public boolean isUsersLnkEnabled(){
 		return isVisible(userLnk) && isEnabled(userLnk);
 	}
-
+	public boolean isSidebarSearchTextEnable(){
+		return isVisible(sidebarSearchText) && isEnabled(sidebarSearchText);
+	}
+    public void collapsingSideBar(){
+		collapseButton.click();
+	}
+	public void expandingSideBar(){
+		driver.findElement(By.cssSelector("mat-icon[role=img][mattooltip=Expand]")).click();
+	}
 }
diff --git a/smp-ui-tests/src/main/java/pages/components/grid/BasicGrid.java b/smp-ui-tests/src/main/java/pages/components/grid/BasicGrid.java
index 680bf656640c09fc6f140d37b605b9b6140db0ac..6b7bbc777a7b895cd6515b3ac1b2dc7318e3ac8e 100644
--- a/smp-ui-tests/src/main/java/pages/components/grid/BasicGrid.java
+++ b/smp-ui-tests/src/main/java/pages/components/grid/BasicGrid.java
@@ -21,7 +21,6 @@ public class BasicGrid extends PageComponent {
 		super(driver);
 		
 		log.info("Loading basic grid");
-//		waitToLoad();
 		waitForRowsToLoad();
 		PageFactory.initElements( new DefaultElementLocatorFactory(container) , this);
 
@@ -31,15 +30,6 @@ public class BasicGrid extends PageComponent {
 
 	}
 
-//	private void waitToLoad(){
-//		try {
-//			waitForXMillis(500);
-//			waitForElementToBeGone(driver.findElement(loadingBar));
-//		} catch (Exception e) {
-//
-//		}
-//	}
-
 
 
 	@FindBy(css = "datatable-header div.datatable-row-center datatable-header-cell")
diff --git a/smp-ui-tests/src/main/java/pages/domain/DomainGrid.java b/smp-ui-tests/src/main/java/pages/domain/DomainGrid.java
index ba6cd51785ad71e00c9a8c17b3c5a19e20bf82a6..41b7ec3d0057a8d2f831b1471e6f45097e2d83fb 100644
--- a/smp-ui-tests/src/main/java/pages/domain/DomainGrid.java
+++ b/smp-ui-tests/src/main/java/pages/domain/DomainGrid.java
@@ -42,7 +42,6 @@ public class DomainGrid extends BasicGrid {
 				}
 
 			}
-
 			rowInfos.add(row);
 		}
 
diff --git a/smp-ui-tests/src/main/java/pages/domain/DomainPage.java b/smp-ui-tests/src/main/java/pages/domain/DomainPage.java
index 58f3eab67fe45250e569b38b79fcb05a50f63858..b1841b0f90e1295cd18209e57ec4902ea9c41ccb 100644
--- a/smp-ui-tests/src/main/java/pages/domain/DomainPage.java
+++ b/smp-ui-tests/src/main/java/pages/domain/DomainPage.java
@@ -8,6 +8,7 @@ import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
 import pages.components.ConfirmationDialog;
 import pages.components.baseComponents.PaginationControls;
 import pages.components.baseComponents.SMPPage;
+import pages.keystore.KeyStoreEditDialog;
 import utils.PROPERTIES;
 
 public class DomainPage extends SMPPage {
@@ -35,6 +36,9 @@ public class DomainPage extends SMPPage {
 	@FindBy(id = "deleteButton")
 	private WebElement deleteBtn;
 
+	@FindBy(xpath = "//span[text()=' Edit keystore']")
+	private WebElement editKeyStore;
+
 	public PaginationControls pagination = new PaginationControls(driver);
 	
 	
@@ -97,6 +101,12 @@ public class DomainPage extends SMPPage {
 		waitForElementToBeClickable(editBtn).click();
 		return new DomainPopup(driver);
 	}
+
+	public KeyStoreEditDialog clickEditKeyStore(){
+		log.info("clicking edit keystore");
+		waitForElementToBeClickable(editKeyStore).click();
+		return new KeyStoreEditDialog(driver);
+	}
 	
 	
 	public DomainGrid grid(){
diff --git a/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java b/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java
index 135527e96dc19f0fcf2a51d8c17158833a347d6b..de3b5367c2ed301f737f5c1d536e6a559ad6db5a 100644
--- a/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java
+++ b/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java
@@ -120,9 +120,14 @@ public class DomainPopup extends PageComponent {
 	}
 
 	public void clearAndFillDomainCodeInput(String domainCode) {
-		log.info("filling only domain code data for new domain");
+		log.info("clear and fill domain code data");
 		clearAndFillInput(domainCodeInput, domainCode);
 	}
 
+	public void clearAndFillSMLDomainInput(String SMLDomain) {
+		log.info("filling only domain code data for new domain");
+		clearAndFillInput(smlDomainInput, SMLDomain);
+	}
+
 
 }
diff --git a/smp-ui-tests/src/main/java/pages/keystore/KeyStoreEditDialog.java b/smp-ui-tests/src/main/java/pages/keystore/KeyStoreEditDialog.java
new file mode 100644
index 0000000000000000000000000000000000000000..a0ecc98ea26b0484136756d746ed106aaaf7ea09
--- /dev/null
+++ b/smp-ui-tests/src/main/java/pages/keystore/KeyStoreEditDialog.java
@@ -0,0 +1,50 @@
+package pages.keystore;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.interactions.Actions;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.PageFactory;
+import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
+import pages.components.baseComponents.PageComponent;
+import pages.domain.DomainGrid;
+import pages.domain.DomainPage;
+import utils.PROPERTIES;
+
+
+public class KeyStoreEditDialog extends PageComponent {
+
+    public KeyStoreEditDialog(WebDriver driver){
+        super(driver);
+        PageFactory.initElements( new AjaxElementLocatorFactory(driver, PROPERTIES.TIMEOUT), this);
+
+    }
+
+    @FindBy(css = "#keystoreTable_id")
+    private WebElement keystoreTable;
+
+    @FindBy(xpath = "//span[text()='Import keystore']")
+    private WebElement importKeystore;
+
+    @FindBy(css = "button[mat-dialog-close]")
+    private WebElement closeBtn;
+
+    public KeyStoreImportDialog clickImportKeystore()
+    {
+        log.info("clicking import keystore");
+        waitForElementToBeClickable(importKeystore).click();
+        waitForElementToBeGone(importKeystore);
+        return new KeyStoreImportDialog(driver);
+    }
+
+    public DomainPage clickCloseInKeystore(){
+        log.info("clicking close btn in keystore edit dialog");
+        waitForElementToBeClickable(closeBtn).click();
+        waitForElementToBeGone(closeBtn);
+        return new DomainPage(driver);
+    }
+
+    public KeyStoreGrid grid(){
+        return new KeyStoreGrid(driver, keystoreTable);
+    }
+
+}
diff --git a/smp-ui-tests/src/main/java/pages/keystore/KeyStoreGrid.java b/smp-ui-tests/src/main/java/pages/keystore/KeyStoreGrid.java
new file mode 100644
index 0000000000000000000000000000000000000000..0236d8c2355e7a903ab1490e11cd19345d88e28d
--- /dev/null
+++ b/smp-ui-tests/src/main/java/pages/keystore/KeyStoreGrid.java
@@ -0,0 +1,41 @@
+package pages.keystore;
+
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.JavascriptExecutor;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.interactions.Actions;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.PageFactory;
+import org.openqa.selenium.support.pagefactory.DefaultElementLocatorFactory;
+import pages.components.ConfirmationDialog;
+import pages.components.baseComponents.PageComponent;
+import pages.components.grid.BasicGrid;
+import pages.domain.DomainRow;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class KeyStoreGrid extends BasicGrid {
+
+    public KeyStoreGrid(WebDriver driver, WebElement container) {
+        super(driver,container);
+        log.info("Loading KeyStoreGrid");
+        waitForRowsToLoad();
+        PageFactory.initElements(new DefaultElementLocatorFactory(container), this);
+    }
+
+
+   private By cellSelector = By.cssSelector("#keystoreTable_id datatable-body-cell");
+
+
+
+    public ConfirmationDialog deleteKeyStore(int rowNum) {
+        WebElement gridRow = gridRows.get(rowNum);
+        List<WebElement> cells = gridRow.findElements(cellSelector);
+        WebElement deleteButton = cells.get(2).findElement(By.cssSelector("button[mattooltip='Delete certificate']"));
+        waitForElementToBeClickable(deleteButton).click();
+        return new ConfirmationDialog(driver);
+    }
+}
diff --git a/smp-ui-tests/src/main/java/pages/keystore/KeyStoreImportDialog.java b/smp-ui-tests/src/main/java/pages/keystore/KeyStoreImportDialog.java
new file mode 100644
index 0000000000000000000000000000000000000000..69be05c3b36d297db704ac049174997be3b2a2c9
--- /dev/null
+++ b/smp-ui-tests/src/main/java/pages/keystore/KeyStoreImportDialog.java
@@ -0,0 +1,75 @@
+package pages.keystore;
+import org.apache.log4j.Logger;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.interactions.Actions;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.PageFactory;
+import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
+import pages.components.baseComponents.PageComponent;
+import utils.PROPERTIES;
+
+import java.awt.*;
+import java.awt.datatransfer.StringSelection;
+import java.awt.event.KeyEvent;
+import java.io.File;
+import java.net.URL;
+
+public class KeyStoreImportDialog extends PageComponent{
+    protected Logger log = Logger.getLogger(this.getClass());
+    public KeyStoreImportDialog(WebDriver driver) {
+            super(driver);
+        PageFactory.initElements(new AjaxElementLocatorFactory(driver, PROPERTIES.TIMEOUT), this);
+              }
+    @FindBy(xpath = "//span[text()='Import']")
+    private WebElement importBtn;
+
+    @FindBy(css = "keystore-import-dialog button[mat-dialog-close]")
+    private WebElement cancelBtn;
+
+    @FindBy(css = "button[mat-dialog-close]")
+    private WebElement closeBtn;
+
+    @FindBy(css = "#keystore-file-upload")
+    private WebElement chooseKeystore;
+
+    @FindBy(css = "#keystoreFilename")
+    private WebElement keyStoreFileInput;
+
+    @FindBy(css = "#password_id")
+    private WebElement passwordInput;
+    
+    public KeyStoreEditDialog clickImportBtn()
+    {
+        log.info("clicking import btn ");
+        waitForElementToBeClickable(importBtn).click();
+        waitForElementToBeGone(importBtn);
+        return new KeyStoreEditDialog(driver);
+        
+    }
+    public KeyStoreEditDialog clickCancelBtn(){
+        log.info("clicking import keystore");
+        waitForElementToBeClickable(cancelBtn).click();
+        waitForElementToBeGone(cancelBtn);
+        return new KeyStoreEditDialog(driver);
+    }
+
+    public KeyStoreEditDialog clickCloseBtn(){
+        log.info("clicking close btn");
+        waitForElementToBeClickable(closeBtn).click();
+        waitForElementToBeGone(closeBtn);
+        return new KeyStoreEditDialog(driver);
+    }
+    public void chooseKeystoreFile() {
+        chooseKeystore.sendKeys(System.getProperty("user.dir")+"\\target\\classes\\keystore\\keystore_dummy1.jks");
+    }
+    public void fillPassword(String password)
+    {
+        waitForElementToBeVisible(passwordInput).sendKeys(password);
+    }
+
+    public String getKeyStoreFileName() {
+        return keyStoreFileInput.getAttribute("value");
+    }
+}
+
diff --git a/smp-ui-tests/src/main/java/pages/keystore/KeyStoreRow.java b/smp-ui-tests/src/main/java/pages/keystore/KeyStoreRow.java
new file mode 100644
index 0000000000000000000000000000000000000000..e828608dbd5150123658406caf3b1bdb3ae7567a
--- /dev/null
+++ b/smp-ui-tests/src/main/java/pages/keystore/KeyStoreRow.java
@@ -0,0 +1,45 @@
+package pages.keystore;
+
+import pages.domain.DomainRow;
+
+public class KeyStoreRow {
+
+    private String alias;
+
+    public void setAlias(String alias) {
+        this.alias = alias;
+    }
+
+    public String getAlias() {
+        return alias;
+    }
+
+    private String certificateId;
+
+    public String getCertificateId() {
+        return certificateId;
+    }
+
+    public void setCertificateId(String certificateId) {
+        this.certificateId = certificateId;
+    }
+
+    @Override
+    public String toString() {
+        return "KeyStoreRow{" +
+                "alias='" + alias + '\'' +
+                ", certificateId='" + certificateId + '\'' +
+                '}';
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        KeyStoreRow row = (KeyStoreRow) o;
+
+        if (alias != null ? !alias.equals(row.alias) : row.alias != null) return false;
+        return certificateId != null ? certificateId.equals(row.certificateId) : row.certificateId == null;
+    }
+}
diff --git a/smp-ui-tests/src/main/java/pages/service_groups/ServiceGroupRow.java b/smp-ui-tests/src/main/java/pages/service_groups/ServiceGroupRow.java
index 8975681de37848830d15ad494266b5d7eddad6b9..e6cf8249716ddd85ab386e9568d2bcc87cb05d8a 100644
--- a/smp-ui-tests/src/main/java/pages/service_groups/ServiceGroupRow.java
+++ b/smp-ui-tests/src/main/java/pages/service_groups/ServiceGroupRow.java
@@ -22,7 +22,8 @@ public class ServiceGroupRow extends PageComponent {
 
 	@FindBy(tagName = "datatable-body-cell")
 	protected List<WebElement> cells;
-
+    @FindBy(css = "div.datatable-row-detail.ng-star-inserted > div.ng-star-inserted")
+	private WebElement emptyMetadataContent;
 
 	@FindBy(css = ".ng-star-inserted.datatable-icon-right")
 	private WebElement expandMetadata;
@@ -71,5 +72,10 @@ public class ServiceGroupRow extends PageComponent {
 		return false;
 	}
 
+	public String emptyMetadataContentText()
+	{
+		return emptyMetadataContent.getText();
+	}
+
 
 }
diff --git a/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java b/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java
index 889c6b9ae149ca412734195a74154172133a4da2..ce4c9fbf96e6448a3f5b4d72c377dfcdf900acb4 100644
--- a/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java
+++ b/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java
@@ -1,5 +1,9 @@
 package utils.enums;
 
+import utils.TestDataProvider;
+
+import java.util.Map;
+
 public class SMPMessages {
 
 	public static final String MSG_1 = "The username/password combination you provided are not valid. Please try again or contact your administrator.";
@@ -75,9 +79,6 @@ public class SMPMessages {
 	public static final String PASS_NO_MATCH_MESSAGE = "Passwords do not match";
 	public static final String PASS_NO_EMPTY_MESSAGE = "You should type a password";
 
-	
-
-
-
-
+	public static final String KEYSTORE_IMPORTED_MSG = "Keystore %s imported!";
+	public static final String KEYSTORE_DELETION_MSG = "Certificate %s deleted!";
 }
diff --git a/smp-ui-tests/src/main/java/utils/rest/SMPRestClient.java b/smp-ui-tests/src/main/java/utils/rest/SMPRestClient.java
index c348b76b46f47e56a463cfe8150d77deafa44037..dc08fd06a5cec309ef95c035f198b688eb455676 100644
--- a/smp-ui-tests/src/main/java/utils/rest/SMPRestClient.java
+++ b/smp-ui-tests/src/main/java/utils/rest/SMPRestClient.java
@@ -5,6 +5,9 @@ import com.sun.jersey.api.client.ClientResponse;
 import com.sun.jersey.api.client.WebResource;
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.StaxDriver;
+import org.apache.log4j.LogMF;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
@@ -25,6 +28,7 @@ import java.util.Map;
 
 public class SMPRestClient {
 
+    protected static Logger log =  Logger.getLogger(SMPRestClient.class);
     private static Client client = Client.create();
     private static WebResource resource = client.resource(PROPERTIES.UI_BASE_URL);
 
@@ -180,7 +184,8 @@ public class SMPRestClient {
 		HashMap<String, String> map = getCookies(cookies);
 		String xsrf = map.get("XSRF-TOKEN");
 		String jsessionID = map.get("JSESSIONID");
-
+           log.info("Creating domain template whose value is :"+template);
+           log.info("Creating the doamainpoststring" +domainPostStr);
         try {
 			ClientResponse getResponse = resource.path(SMPPaths.REST_POST_DOMAIN)
 					.accept(MediaType.APPLICATION_JSON_TYPE)
@@ -189,10 +194,12 @@ public class SMPRestClient {
 					.cookie(new Cookie("XSRF-TOKEN", xsrf))
 					.header("X-XSRF-TOKEN", xsrf)
 					.put(ClientResponse.class, domainPostStr);
+          log.info("Create domain return status code is:"+getResponse.getStatus());
             return getResponse.getStatus() == 200;
         } catch (Exception e) {
             e.printStackTrace();
         }
+
         return false;
     }
 
diff --git a/smp-ui-tests/src/main/resources/keystore/keystore_dummy1.jks b/smp-ui-tests/src/main/resources/keystore/keystore_dummy1.jks
new file mode 100644
index 0000000000000000000000000000000000000000..1db3d26fb051cb0eba8d4e46b42f77fc3a5c9ca6
Binary files /dev/null and b/smp-ui-tests/src/main/resources/keystore/keystore_dummy1.jks differ
diff --git a/smp-ui-tests/src/test/java/ui/BaseTest.java b/smp-ui-tests/src/test/java/ui/BaseTest.java
index d3a95aa73105ee88b64acdca6f43bc1d22ed683c..9b4492a9a114fd10123241664e90d71727c81076 100644
--- a/smp-ui-tests/src/test/java/ui/BaseTest.java
+++ b/smp-ui-tests/src/test/java/ui/BaseTest.java
@@ -31,8 +31,6 @@ public class BaseTest {
 	static ArrayList<String> createdUsers = new ArrayList<>();
 	static ArrayList<String> createdServiceGroups = new ArrayList<>();
 
-	protected Logger log = Logger.getLogger(this.getClass());
-
 	@BeforeSuite(alwaysRun = true)
 	/*Starts the browser and navigates to the homepage. This happens once before the test
 	suite and the browser window is reused for all tests in suite*/
@@ -88,8 +86,8 @@ public class BaseTest {
 	@BeforeMethod(alwaysRun = true)
 	protected void logSeparator(Method method) throws Exception {
 
-		log.info("--------------------------- Running test number: " + methodCount);
-		log.info("--------------------------- Running test method: " + method.getDeclaringClass().getSimpleName() + "." + method.getName());
+		logger.info("--------------------------- Running test number: " + methodCount);
+		logger.info("--------------------------- Running test method: " + method.getDeclaringClass().getSimpleName() + "." + method.getName());
 		methodCount++;
 	}
 
@@ -97,6 +95,7 @@ public class BaseTest {
 	private void createDomains() {
 		for (int i = 0; i < 5; i++) {
 			String generated = Generator.randomAlphaNumeric(10);
+			logger.info("creating domain whose value is :"+generated);
 			boolean created = SMPRestClient.createDomain(generated);
 			if (created) {
 				createdDomains.add(generated);
@@ -160,7 +159,7 @@ public class BaseTest {
 
 
 	protected void genericLogoutProcedure() {
-		log.info("executing the generic logout procedure");
+		logger.info("executing the generic logout procedure");
 
 		SMPPage page = new SMPPage(driver);
 		page.refreshPage();
diff --git a/smp-ui-tests/src/test/java/ui/DomainPgTest.java b/smp-ui-tests/src/test/java/ui/DomainPgTest.java
index ec90e010a82b8affdca4629fbf119bd4dca727f7..f7024fa139e843e1e6ba74e74b0e87ddd3019c2f 100644
--- a/smp-ui-tests/src/test/java/ui/DomainPgTest.java
+++ b/smp-ui-tests/src/test/java/ui/DomainPgTest.java
@@ -1,5 +1,6 @@
 package ui;
 
+import org.testng.Assert;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
@@ -11,10 +12,13 @@ import pages.domain.DomainGrid;
 import pages.domain.DomainPage;
 import pages.domain.DomainPopup;
 import pages.domain.DomainRow;
+import pages.keystore.KeyStoreEditDialog;
+import pages.keystore.KeyStoreImportDialog;
 import utils.Generator;
 import utils.enums.SMPMessages;
 import utils.rest.SMPRestClient;
 
+import java.awt.*;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -302,7 +306,6 @@ public class DomainPgTest extends BaseTest {
     public void onlyDomainCodeSavingMsgVerify() {
         SoftAssert soft = new SoftAssert();
         DomainPage page = new DomainPage(driver);
-//        String errorMsg = "The domain should have a defined signature CertAlias.";
         soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
         int index = page.grid().scrollToSmlDomain("");
         if (index >= 0) {
@@ -330,11 +333,107 @@ public class DomainPgTest extends BaseTest {
             page.grid().scrollRow(index);
         }
         int rowNumber = index + 1;
-        page.grid().mouseHoverOnDomainCode(rowNumber);
-//        WebElement text = driver.findElement(By.xpath("//*[text()='The domain should have a defined signature CertAlias.']"));
-//        soft.assertEquals(text.getText(),errorMsg, "the message 'The domain should have a defined signature CertAlias.' is not displayed");
         soft.assertAll();
     }
 
+	@Test(description = "DMN-80")
+	public void onlyDomainCodeAndSMLDomainSavingMsgVerify() {
+		SoftAssert soft = new SoftAssert();
+		DomainPage page = new DomainPage(driver);
+		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
+		String rndString = Generator.randomAlphaNumeric(10);
+		DomainPopup popup = page.clickNew();
+		soft.assertTrue(popup.isLoaded(), "Domain popup is loaded");
+		soft.assertTrue(popup.isDomainCodeInputEnabled(), "When defining new domain - Domain Code input is disabled");
+		popup.clearAndFillDomainCodeInput(rndString);
+		popup.clearAndFillSMLDomainInput(rndString);
+		soft.assertTrue(popup.isEnableOkButton(), "Ok button is disabled");
+		popup.clickOK();
+		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
+		page.clickSave().confirm();
+		soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18),
+				"Success message is as expected");
+		int index = page.grid().scrollToSmlDomain(rndString);
+		if (index >= 0) {
+			page.grid().scrollRow(index);
+		}
+		int rowNumber = index + 1;
+		page.grid().mouseHoverOnDomainCode(rowNumber);
+		soft.assertAll();
+	}
+
+	@Test(description = "DMN-90")
+	public void createKeyStore() {
+		SoftAssert soft = new SoftAssert();
+		DomainPage page = new DomainPage(driver);
+		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
+		String pass="test123";
+		KeyStoreEditDialog keyStoreEdit = page.clickEditKeyStore();
+		int keyStoreRowBeforeAddition = keyStoreEdit.grid().getRowsNo();
+		KeyStoreImportDialog keyStoreImport = keyStoreEdit.clickImportKeystore();
+		keyStoreImport.chooseKeystoreFile();
+		Assert.assertEquals(keyStoreImport.getKeyStoreFileName(),"keystore_dummy1.jks","the keystore file name is not correct");
+		keyStoreImport.fillPassword(pass);
+		keyStoreImport.clickImportBtn();
+		keyStoreEdit.clickCloseInKeystore();
+		soft.assertFalse(page.alertArea.getAlertMessage().isError());
+		keyStoreEdit = page.clickEditKeyStore();
+		int keyStoreRowAfterAddition = keyStoreEdit.grid().getRowsNo();
+		soft.assertEquals(keyStoreRowAfterAddition,keyStoreRowBeforeAddition+1, "KeyStore is not added to the grid");
+		if(keyStoreRowAfterAddition > 1){
+			keyStoreEdit.grid().deleteKeyStore(keyStoreRowAfterAddition-1).confirm();
+			int keyStoreRowAfterDeletion = keyStoreEdit.grid().getRowsNo();
+			soft.assertEquals(keyStoreRowAfterDeletion,keyStoreRowAfterAddition-1, "KeyStore is not delete from the grid");
+			keyStoreEdit.clickCloseInKeystore();
+			soft.assertFalse(page.alertArea.getAlertMessage().isError());
+		}
+		soft.assertAll();
+	}
+
+	@Test(description = "DMN-110")
+	public void allowDuplicateKeyStore() {
+			SoftAssert soft = new SoftAssert();
+			DomainPage page = new DomainPage(driver);
+			soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
+			String pass="test123";
+			KeyStoreEditDialog keyStoreEdit = page.clickEditKeyStore();
+			int keyStoreRowBeforeAddition = keyStoreEdit.grid().getRowsNo();
+			KeyStoreImportDialog keyStoreImport = keyStoreEdit.clickImportKeystore();
+			keyStoreImport.chooseKeystoreFile();
+			Assert.assertEquals(keyStoreImport.getKeyStoreFileName(),"keystore_dummy1.jks","the keystore file name is not correct");
+			keyStoreImport.fillPassword(pass);
+			keyStoreImport.clickImportBtn();
+			keyStoreEdit.clickCloseInKeystore();
+			soft.assertFalse(page.alertArea.getAlertMessage().isError());
+			keyStoreEdit = page.clickEditKeyStore();
+			int keyStoreRowAfterAddition = keyStoreEdit.grid().getRowsNo();
+			soft.assertEquals(keyStoreRowAfterAddition,keyStoreRowBeforeAddition+1, "KeyStore is not added to the grid");
+		keyStoreRowBeforeAddition = keyStoreRowAfterAddition;
+		keyStoreImport = keyStoreEdit.clickImportKeystore();
+		keyStoreImport.chooseKeystoreFile();
+		Assert.assertEquals(keyStoreImport.getKeyStoreFileName(),"keystore_dummy1.jks","the keystore file name is not correct");
+		keyStoreImport.fillPassword(pass);
+		keyStoreImport.clickImportBtn();
+		keyStoreEdit.clickCloseInKeystore();
+		soft.assertFalse(page.alertArea.getAlertMessage().isError());
+		keyStoreEdit = page.clickEditKeyStore();
+		keyStoreRowAfterAddition = keyStoreEdit.grid().getRowsNo();
+		soft.assertEquals(keyStoreRowAfterAddition,keyStoreRowBeforeAddition+1, "KeyStore is not added to the grid");
+		if(keyStoreRowAfterAddition > 1){
+			keyStoreEdit.grid().deleteKeyStore(keyStoreRowAfterAddition-1).confirm();
+			int keyStoreRowAfterDeletion = keyStoreEdit.grid().getRowsNo();
+			soft.assertEquals(keyStoreRowAfterDeletion,keyStoreRowAfterAddition-1, "KeyStore is not delete from the grid");
+			keyStoreRowAfterAddition = keyStoreRowAfterDeletion;
+		}
+		if(keyStoreRowAfterAddition > 1){
+			keyStoreEdit.grid().deleteKeyStore(keyStoreRowAfterAddition-1).confirm();
+			int keyStoreRowAfterDeletion = keyStoreEdit.grid().getRowsNo();
+			soft.assertEquals(keyStoreRowAfterDeletion,keyStoreRowAfterAddition-1, "KeyStore is not delete from the grid");
+			keyStoreEdit.clickCloseInKeystore();
+			soft.assertFalse(page.alertArea.getAlertMessage().isError());
+		}
+		soft.assertAll();
+	}
+
 
 }
diff --git a/smp-ui-tests/src/test/java/ui/LoginPgTest.java b/smp-ui-tests/src/test/java/ui/LoginPgTest.java
index b1fe3d7d542bdabd555aba380ba971f812853794..9bcf4004da84b36444f5377d9df786e9143376db 100644
--- a/smp-ui-tests/src/test/java/ui/LoginPgTest.java
+++ b/smp-ui-tests/src/test/java/ui/LoginPgTest.java
@@ -21,19 +21,19 @@ public class LoginPgTest extends BaseTest {
 	@AfterMethod
 	public void logoutAndReset() {
 
-		log.info("deleting cookies");
+		logger.info("deleting cookies");
 		driver.manage().deleteAllCookies();
 
 		try {
-			log.info("clearing localstorage");
+			logger.info("clearing localstorage");
 			((JavascriptExecutor) driver).executeScript("localStorage.clear();");
 		} catch (Exception e) {
-			log.info("clearing localcstorage failed");
+			logger.info("clearing localcstorage failed");
 		}
 
 
 		SMPPage page = new SMPPage(driver);
-		log.info("refreshing page to close all popups");
+		logger.info("refreshing page to close all popups");
 		page.refreshPage();
 
 		try {
@@ -112,13 +112,13 @@ public class LoginPgTest extends BaseTest {
 
 		String username = Generator.randomAlphaNumeric(10);
 		SMPRestClient.createUser(username, "SYSTEM_ADMIN");
-		log.info("created user " + username);
+		logger.info("created user " + username);
 
 		SMPPage page = new SMPPage(driver);
 		logger.info("Going to login page");
 		page.pageHeader.goToLogin();
 
-		log.info("trying to login with " + username);
+		logger.info("trying to login with " + username);
 		LoginPage loginPage = new LoginPage(driver);
 		SearchPage searchPage = loginPage.login(username, "QW!@qw12");
 
diff --git a/smp-ui-tests/src/test/java/ui/SearchPgTest.java b/smp-ui-tests/src/test/java/ui/SearchPgTest.java
index bd433d56c3190e77ffbe33ed6be043a21e673b96..71fe2caf90e11ea9568f367a015c4377860ba62d 100644
--- a/smp-ui-tests/src/test/java/ui/SearchPgTest.java
+++ b/smp-ui-tests/src/test/java/ui/SearchPgTest.java
@@ -23,15 +23,15 @@ import java.util.Set;
 public class SearchPgTest extends BaseTest {
 
 	@AfterMethod
-	public void resetFilters(){
-		SMPPage page  = new SMPPage(driver);
+	public void resetFilters() {
+		SMPPage page = new SMPPage(driver);
 		page.refreshPage();
 		page.waitForXMillis(500);
 
 	}
 
 	@Test(description = "SRCH-0")
-	public void searchPgInitialState(){
+	public void searchPgInitialState() {
 		SoftAssert soft = new SoftAssert();
 
 		SearchPage page = new SearchPage(driver);
@@ -46,7 +46,7 @@ public class SearchPgTest extends BaseTest {
 	}
 
 	@Test(description = "SRCH-10")
-	public void domainSelectContent(){
+	public void domainSelectContent() {
 		SoftAssert soft = new SoftAssert();
 		SearchPage page = new SearchPage(driver);
 		soft.assertTrue(page.isLoaded());
@@ -57,7 +57,7 @@ public class SearchPgTest extends BaseTest {
 		for (String restDomain : restDomains) {
 			boolean found = false;
 			for (String uiDomain : uiDomains) {
-				if(uiDomain.equalsIgnoreCase(restDomain)){
+				if (uiDomain.equalsIgnoreCase(restDomain)) {
 					found = true;
 				}
 			}
@@ -69,7 +69,7 @@ public class SearchPgTest extends BaseTest {
 	}
 
 	@Test(description = "SRCH-20")
-	public void searchGridInitialState(){
+	public void searchGridInitialState() {
 		SoftAssert soft = new SoftAssert();
 
 		SearchPage page = new SearchPage(driver);
@@ -85,7 +85,7 @@ public class SearchPgTest extends BaseTest {
 	}
 
 	@Test(description = "SRCH-30")
-	public void searchFilterResults(){
+	public void searchFilterResults() {
 		SoftAssert soft = new SoftAssert();
 
 		SearchPage page = new SearchPage(driver);
@@ -111,8 +111,8 @@ public class SearchPgTest extends BaseTest {
 
 		for (ServiceGroupRow row : rows) {
 
-			String identifier =row.getParticipantIdentifier();
-			String scheme =row.getParticipantScheme();
+			String identifier = row.getParticipantIdentifier();
+			String scheme = row.getParticipantScheme();
 
 			soft.assertTrue(identifier.contains(pIdentifier), String.format("Identifier %s, found %s", pIdentifier, identifier));
 			soft.assertTrue(scheme.contains(pScheme), String.format("Scheme %s, found %s", pScheme, scheme));
@@ -122,7 +122,7 @@ public class SearchPgTest extends BaseTest {
 	}
 
 	@Test(description = "SRCH-40")
-	public void openURLLink(){
+	public void openURLLink() {
 		SoftAssert soft = new SoftAssert();
 
 		SearchPage page = new SearchPage(driver);
@@ -137,7 +137,7 @@ public class SearchPgTest extends BaseTest {
 		String tmpURLPart = null;
 		try {
 			tmpURLPart = URLDecoder.decode(listedURL, "UTF-8").split("smp/")[1].trim();
-			soft.assertEquals(tmpURLPart, pScheme+"::"+pIdentifier, "URL contains the proper scheme and identifier");
+			soft.assertEquals(tmpURLPart, pScheme + "::" + pIdentifier, "URL contains the proper scheme and identifier");
 		} catch (UnsupportedEncodingException e) {
 			e.printStackTrace();
 		}
@@ -148,13 +148,13 @@ public class SearchPgTest extends BaseTest {
 				"Number of listed MetadataReferences in XML matches UI");
 
 
-
 		soft.assertAll();
 	}
 
 
-	@Test(description = "SRCH-50") @Ignore
-	public void expandServiceGroupCheckMetadata(){
+	@Test(description = "SRCH-50")
+	@Ignore
+	public void expandServiceGroupCheckMetadata() {
 		SoftAssert soft = new SoftAssert();
 
 		SearchPage page = new SearchPage(driver);
@@ -179,15 +179,15 @@ public class SearchPgTest extends BaseTest {
 			String docId = metadataRow.getDocumentIdentifier();
 			String url = metadataRow.getURL();
 
-			soft.assertTrue(url.contains(String.format("%s::%s/services/%s::%s", pScheme, pIdentifier, docScheme, docId)), "Checking URL format for metadata "+ docId);
+			soft.assertTrue(url.contains(String.format("%s::%s/services/%s::%s", pScheme, pIdentifier, docScheme, docId)), "Checking URL format for metadata " + docId);
 
 
 			String metadata = SMPRestClient.getMetadataString(url);
 
-			soft.assertTrue(metadata.contains(pScheme), "Checking XML contains proper participant scheme for metadata "+ docId);
-			soft.assertTrue(metadata.contains(pIdentifier), "Checking XML contains proper participant ID for metadata "+ docId);
-			soft.assertTrue(metadata.toLowerCase().contains(docId.toLowerCase()), "Checking XML contains proper document ID for metadata "+ docId);
-			soft.assertTrue(metadata.contains(docScheme), "Checking XML contains proper document scheme for metadata "+ docId);
+			soft.assertTrue(metadata.contains(pScheme), "Checking XML contains proper participant scheme for metadata " + docId);
+			soft.assertTrue(metadata.contains(pIdentifier), "Checking XML contains proper participant ID for metadata " + docId);
+			soft.assertTrue(metadata.toLowerCase().contains(docId.toLowerCase()), "Checking XML contains proper document ID for metadata " + docId);
+			soft.assertTrue(metadata.contains(docScheme), "Checking XML contains proper document scheme for metadata " + docId);
 
 
 		}
@@ -196,7 +196,7 @@ public class SearchPgTest extends BaseTest {
 	}
 
 	@Test(description = "SRCH-60")
-	public void collapseMetadata(){
+	public void collapseMetadata() {
 		SoftAssert soft = new SoftAssert();
 
 		SearchPage page = new SearchPage(driver);
@@ -205,12 +205,12 @@ public class SearchPgTest extends BaseTest {
 		ServiceGroupRow row0 = null;
 		List<ServiceGroupRow> rows = page.getServiceGroupGrid().getRows();
 		for (int i = 0; i < rows.size(); i++) {
-			if(rows.get(i).getMetadataSize() >0 ){
+			if (rows.get(i).getMetadataSize() > 0) {
 				row0 = rows.get(i);
 			}
 		}
 
-		if(null == row0){
+		if (null == row0) {
 			row0 = rows.get(0);
 			SMPRestClient.createMetadata(row0.getParticipantIdentifier());
 			page.refreshPage();
@@ -219,7 +219,6 @@ public class SearchPgTest extends BaseTest {
 		}
 
 
-
 		soft.assertTrue(row0.verifyMetadataExpandButton(), "Initially the row has expanding symbol on it");
 		row0.expandMetadata();
 
@@ -233,7 +232,7 @@ public class SearchPgTest extends BaseTest {
 	}
 
 	@Test(description = "SRCH-70")
-	public void verifyOpenMetadataURL(){
+	public void verifyOpenMetadataURL() {
 		SoftAssert soft = new SoftAssert();
 
 		SearchPage page = new SearchPage(driver);
@@ -242,12 +241,12 @@ public class SearchPgTest extends BaseTest {
 		ServiceGroupRow row0 = null;
 		List<ServiceGroupRow> rows = page.getServiceGroupGrid().getRows();
 		for (int i = 0; i < rows.size(); i++) {
-			if(rows.get(i).getMetadataSize() >0 ){
+			if (rows.get(i).getMetadataSize() > 0) {
 				row0 = rows.get(i);
 			}
 		}
 
-		if(null == row0){
+		if (null == row0) {
 			row0 = rows.get(0);
 			SMPRestClient.createMetadata(row0.getParticipantIdentifier());
 			page.refreshPage();
@@ -278,7 +277,7 @@ public class SearchPgTest extends BaseTest {
 				e.printStackTrace();
 			}
 
-			soft.assertTrue(url.contains(String.format("%s::%s/services/%s::%s", pScheme, pIdentifier, docScheme, docId)), "Checking URL format for metadata "+ docId);
+			soft.assertTrue(url.contains(String.format("%s::%s/services/%s::%s", pScheme, pIdentifier, docScheme, docId)), "Checking URL format for metadata " + docId);
 
 			String mainWindow = driver.getWindowHandle();
 
@@ -299,7 +298,7 @@ public class SearchPgTest extends BaseTest {
 	}
 
 	@Test(description = "SRCH-80")
-	public void filterByDifferentDomains(){
+	public void filterByDifferentDomains() {
 		SoftAssert soft = new SoftAssert();
 
 		String participantID = Generator.randomAlphaNumeric(5);
@@ -318,7 +317,7 @@ public class SearchPgTest extends BaseTest {
 		searchPage.filters.filter(participantID, participantScheme, SMPRestClient.getDomainSubDomainCombo(createdDomains.get(0)));
 		List<ServiceGroupRow> results = searchPage.getServiceGroupGrid().getRows();
 
-		soft.assertEquals(results.size() , 1, "Results size is 1 (first search)");
+		soft.assertEquals(results.size(), 1, "Results size is 1 (first search)");
 		soft.assertEquals(results.get(0).getParticipantIdentifier().toLowerCase(), participantID.toLowerCase(),
 				"First and only result is the one we entered and is found when filtering by first domain");
 
@@ -356,4 +355,39 @@ public class SearchPgTest extends BaseTest {
 		soft.assertAll();
 	}
 
+	@Test(description = "SRCH-100")
+	public void metadataTableContent() {
+		SoftAssert soft = new SoftAssert();
+
+		SearchPage page = new SearchPage(driver);
+		soft.assertTrue(page.isLoaded());
+		ServiceGroupRow row0 = null;
+		List<ServiceGroupRow> rows = page.getServiceGroupGrid().getRows();
+		row0 = rows.get(0);
+		MetadataGrid metadataGrid = row0.expandMetadata();
+		List<MetadataRow> metadataRows = metadataGrid.getMetadataRows();
+		if (row0.getMetadataSize() == 0) {
+			//row0.emptyMetadataContentText()
+			soft.assertEquals(row0.emptyMetadataContentText(), "No service metadata");
+		} else {
+			if (row0.getMetadataSize() > 0) {
+				soft.assertTrue(row0.getMetadataSize() == metadataRows.size(), "metadata size is not equal to no of metadata present inside the corressponding row");
+			}
+
+		}
+      soft.assertAll();
+	}
+
+	@Test(description = "SRCH-101")
+	public void verifyCollapsingSidebarPageAfterLogin()
+	{
+		SoftAssert soft = new SoftAssert();
+		SearchPage page = new SearchPage(driver);
+		soft.assertTrue(page.isLoaded());
+		page.sidebar.collapsingSideBar();
+		soft.assertFalse(page.sidebar.isSidebarSearchTextEnable(),"Search button is visible so sidebar page is not collpased");
+        page.sidebar.expandingSideBar();
+		soft.assertTrue(page.sidebar.isSidebarSearchTextEnable(),"Search button is not visible so sidebar page is not expanding");
+		soft.assertAll();
+	}
 }
diff --git a/smp-ui-tests/src/test/java/ui/UsersPgTest.java b/smp-ui-tests/src/test/java/ui/UsersPgTest.java
index 782d8feac9fb62c76808543df87d247de5817c34..f1a2d248308d64cf4944db3d96df37f5d1922aac 100644
--- a/smp-ui-tests/src/test/java/ui/UsersPgTest.java
+++ b/smp-ui-tests/src/test/java/ui/UsersPgTest.java
@@ -167,7 +167,7 @@ public class UsersPgTest extends BaseTest {
 		SMPRestClient.createUser(username, "SYSTEM_ADMIN");
 		SoftAssert soft = new SoftAssert();
 
-		log.info("created user " + username);
+		logger.info("created user " + username);
 		UsersPage page = new UsersPage(driver);
 		page.refreshPage();
 
@@ -269,7 +269,7 @@ public class UsersPgTest extends BaseTest {
 		SMPRestClient.createUser(username, "SMP_ADMIN");
 		SoftAssert soft = new SoftAssert();
 
-		log.info("Created username " + username);
+		logger.info("Created username " + username);
 
 
 		UsersPage page = new UsersPage(driver);
@@ -313,7 +313,7 @@ public class UsersPgTest extends BaseTest {
 
 		String username = Generator.randomAlphaNumeric(10);
 		SMPRestClient.createUser(username, "SERVICE_GROUP_ADMIN");
-		log.info("Created username" + username);
+		logger.info("Created username" + username);
 		SoftAssert soft = new SoftAssert();
 
 		UsersPage page = new UsersPage(driver);
@@ -373,8 +373,8 @@ public class UsersPgTest extends BaseTest {
 				new ArrayList<>(Arrays.asList(createdDomains.get(0)))
 		);
 
-		log.info("Created username " + username);
-		log.info("Created service group " + pi);
+		logger.info("Created username " + username);
+		logger.info("Created service group " + pi);
 
 		SoftAssert soft = new SoftAssert();
 
@@ -411,7 +411,7 @@ public class UsersPgTest extends BaseTest {
 				new ArrayList<>(Arrays.asList(createdDomains.get(0)))
 		);
 
-		log.info("Created username "+ username);
+		logger.info("Created username "+ username);
 
 		SoftAssert soft = new SoftAssert();