diff --git a/smp-ui-tests/pom.xml b/smp-ui-tests/pom.xml
index cb633d0f4d280fbd4bf99613019aa94ce8efe133..a4fb20c3e49ea18e52b967a527395bb508fd9bce 100644
--- a/smp-ui-tests/pom.xml
+++ b/smp-ui-tests/pom.xml
@@ -77,7 +77,7 @@
 							<failIfNoTests>true</failIfNoTests>
 							<systemPropertyVariables>
 								<webdriver.chrome.driver>${chrome.driver.path}</webdriver.chrome.driver>
-								<webdriver.gecko.driver>geckodriver.exe</webdriver.gecko.driver>
+								<webdriver.gecko.driver>chromedriver.exe</webdriver.gecko.driver>
 								<reports.folder>./target/</reports.folder>
 								<data.folder>.\src\main\resources\</data.folder>
 								<testdata.file>testData.json</testdata.file>
@@ -110,7 +110,7 @@
 							<failIfNoTests>true</failIfNoTests>
 
 							<systemPropertyVariables>
-								<webdriver.gecko.driver>${gecko.driver.path}</webdriver.gecko.driver>
+								<webdriver.chrome.driver>${chrome.driver.path}</webdriver.chrome.driver>
 								<reports.folder>./target/</reports.folder>
 								<data.folder>./src/main/resources/</data.folder>
 								<testdata.file>testData.json</testdata.file>
diff --git a/smp-ui-tests/src/main/java/pages/components/ConfirmationDialog.java b/smp-ui-tests/src/main/java/pages/components/ConfirmationDialog.java
index 7d0f9dd365f1d8644dafb4bd15709e5250ceafc3..c3f5c709ad733c94c8c8ca0b4f6f92dad9a4a605 100644
--- a/smp-ui-tests/src/main/java/pages/components/ConfirmationDialog.java
+++ b/smp-ui-tests/src/main/java/pages/components/ConfirmationDialog.java
@@ -1,7 +1,9 @@
 package pages.components;
 
+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.AjaxElementLocatorFactory;
@@ -34,6 +36,9 @@ public class ConfirmationDialog extends PageComponent {
 	public void cancel(){
 		log.info("dialog .. cancel");
 		waitForElementToBeClickable(noBtn);
+/*		Actions actions = new Actions(driver);
+		actions.moveToElement(noBtn).click().build().perform();*/
+		//((JavascriptExecutor) driver).executeScript("arguments[0].click();", noBtn);
 		noBtn.click();
 		waitForElementToBeGone(noBtn);
 	}
diff --git a/smp-ui-tests/src/main/java/pages/components/GenericSelect.java b/smp-ui-tests/src/main/java/pages/components/GenericSelect.java
index 76ea20bc0d599615bfad6a7f1cdf4a6460f0bbc5..3e27a25548b7f07a7208a1d35c03f22dd5eacd6e 100644
--- a/smp-ui-tests/src/main/java/pages/components/GenericSelect.java
+++ b/smp-ui-tests/src/main/java/pages/components/GenericSelect.java
@@ -65,6 +65,7 @@ public class GenericSelect extends PageComponent {
 			if(option.getText().trim().equalsIgnoreCase(text)){
 				waitForElementToBeClickable(option).click();
 				waitForElementToBeGone(option);
+				log.info("return type is True");
 				return true;
 			}
 		}
diff --git a/smp-ui-tests/src/main/java/pages/components/SandwichMenu.java b/smp-ui-tests/src/main/java/pages/components/SandwichMenu.java
index 815f5ebdb34f62307b2cf5de42c7a511586ac18e..cea32852cb3623d952d4a84c63718dd36119e559 100644
--- a/smp-ui-tests/src/main/java/pages/components/SandwichMenu.java
+++ b/smp-ui-tests/src/main/java/pages/components/SandwichMenu.java
@@ -6,6 +6,7 @@ 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.password.PasswordChangepopup;
 import pages.service_groups.search.SearchPage;
 import utils.PROPERTIES;
 
@@ -32,6 +33,10 @@ public class SandwichMenu extends PageComponent {
 	@FindBy(id = "logout_id")
 	WebElement logoutLnk;
 
+	@FindBy(id = "changePassword_id")
+	WebElement passChangeLnk;
+
+
 	public boolean isLoggedIn(){
 		clickVoidSpace();
 
@@ -48,6 +53,12 @@ public class SandwichMenu extends PageComponent {
 		clickVoidSpace();
 		return isLoggedIn;
 	}
+	public PasswordChangepopup clickChangePasswordOption()
+	{
+		waitForElementToBeClickable(expandoButton).click();
+		waitForElementToBeClickable(passChangeLnk).click();
+		return new PasswordChangepopup(driver);
+	}
 
 	public SearchPage logout(){
 		clickVoidSpace();
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 b08531486f4b32f323de620b3fc9ac00a71c9b64..4364cdc909b4adf4de7070ee24f16092a9846b06 100644
--- a/smp-ui-tests/src/main/java/pages/components/Sidebar.java
+++ b/smp-ui-tests/src/main/java/pages/components/Sidebar.java
@@ -9,6 +9,7 @@ import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
 import pages.components.baseComponents.Header;
 import pages.components.baseComponents.SMPPage;
 import pages.components.baseComponents.PageComponent;
+import pages.service_groups.search.SearchPage;
 import utils.PROPERTIES;
 
 import java.security.PublicKey;
@@ -40,6 +41,9 @@ public class Sidebar extends PageComponent {
 	@FindBy(id = "sidebar_user_id")
 	private WebElement userLnk;
 
+	@FindBy(id = "sidebar_property_id")
+	private WebElement propertyLnk;
+
 	@FindBy(css = "mat-icon[role=img][mattooltip=Collapse]")
 	private WebElement collapseButton;
 
@@ -64,6 +68,9 @@ public class Sidebar extends PageComponent {
 			case "UsersPage":
 				waitForElementToBeClickable(userLnk).click();
 				break;
+			case "PropertiesPage":
+				waitForElementToBeClickable(propertyLnk).click();
+				break;
 		}
 
 		waitForXMillis(500);
diff --git a/smp-ui-tests/src/main/java/pages/components/baseComponents/Header.java b/smp-ui-tests/src/main/java/pages/components/baseComponents/Header.java
index 71ac9a72e6d39ad00df19a39083e108bb516bda7..7e81bd57fb19b02e92f021a2c6e20664eb0928ac 100644
--- a/smp-ui-tests/src/main/java/pages/components/baseComponents/Header.java
+++ b/smp-ui-tests/src/main/java/pages/components/baseComponents/Header.java
@@ -5,9 +5,9 @@ import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
 import org.openqa.selenium.support.PageFactory;
 import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
-import org.openqa.selenium.support.ui.ExpectedConditions;
 import pages.components.SandwichMenu;
 import pages.login.LoginPage;
+import pages.password.PasswordChangepopup;
 import utils.PROPERTIES;
 
 public class Header extends PageComponent{
@@ -29,8 +29,18 @@ public class Header extends PageComponent{
 	@FindBy(css = "#sandwichMenu .ng-star-inserted")
 	private WebElement role;
 
+	@FindBy(css = "#changePassword_id")
+	private WebElement changePasswordOption;
+
 	public SandwichMenu sandwichMenu = new SandwichMenu(driver);
 
+	public PasswordChangepopup clickChangePasswordOption()
+	{
+		log.info("Clicking on changepassword option");
+		waitForElementToBeClickable(changePasswordOption).click();
+		return new PasswordChangepopup(driver);
+	}
+
 	public LoginPage goToLogin(){
 		log.info("Going to login page");
 		waitForElementToBeClickable(loginLnk).click();
diff --git a/smp-ui-tests/src/main/java/pages/components/baseComponents/PageComponent.java b/smp-ui-tests/src/main/java/pages/components/baseComponents/PageComponent.java
index 90c62399fdc41629130f498fa677edb2ebeba240..909709e0cdf23ceff53e5fe804d5c75101efeb46 100644
--- a/smp-ui-tests/src/main/java/pages/components/baseComponents/PageComponent.java
+++ b/smp-ui-tests/src/main/java/pages/components/baseComponents/PageComponent.java
@@ -2,7 +2,10 @@ package pages.components.baseComponents;
 
 
 import org.apache.log4j.Logger;
-import org.openqa.selenium.*;
+import org.openqa.selenium.By;
+import org.openqa.selenium.JavascriptExecutor;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.ui.ExpectedCondition;
 import org.openqa.selenium.support.ui.ExpectedConditions;
 import org.openqa.selenium.support.ui.WebDriverWait;
@@ -11,235 +14,220 @@ import utils.PROPERTIES;
 
 public class PageComponent {
 
-	protected WebDriver driver;
-	protected WebDriverWait wait;
-	protected Logger log = Logger.getLogger(this.getClass());
-
-
-	public PageComponent(WebDriver driver) {
-		this.driver = driver;
-		this.wait = new WebDriverWait(this.driver, PROPERTIES.TIMEOUT);
-	}
-
-
-	public WebElement waitForElementToBeClickable(WebElement element) {
-		return wait.until(ExpectedConditions.elementToBeClickable(element));
-	}
-
-	public WebElement waitForElementToBeVisible(WebElement element) {
-		return wait.until(ExpectedConditions.visibilityOf(element));
-	}
-
-	public WebElement waitForElementToBeVisible(By elementSelector) {
-		return wait.until(ExpectedConditions.visibilityOfElementLocated(elementSelector));
-	}
-
-	public void waitForElementToBeEnabled(WebElement element) {
-		int maxTimeout = PROPERTIES.SHORT_UI_TIMEOUT * 1000;
-		int waitedSoFar = 0;
-		while ((null != element.getAttribute("disabled")) && (waitedSoFar < maxTimeout)) {
-			waitedSoFar += 300;
-			waitForXMillis(300);
-		}
-	}
-
-	public void waitForElementToBeDisabled(WebElement element) {
-		int maxTimeout = PROPERTIES.SHORT_UI_TIMEOUT * 1000;
-		int waitedSoFar = 0;
-		while ((null == element.getAttribute("disabled")) && (waitedSoFar < maxTimeout)) {
-			waitedSoFar += 300;
-			waitForXMillis(300);
-		}
-	}
-
-
-	public void waitForElementToBeGone(WebElement element) {
-		WebDriverWait myWait = new WebDriverWait(driver, PROPERTIES.SHORT_UI_TIMEOUT);
-
-		try {
-			myWait.until(ExpectedConditions.visibilityOf(element));
-		} catch (Exception e) {
-			return;
-		}
-
-		int waitTime = PROPERTIES.SHORT_UI_TIMEOUT * 1000;
-		while (waitTime > 0) {
-			boolean displayed = true;
-
-			try {
-				displayed = element.isDisplayed();
-			} catch (Exception e) {
-				return;
-			}
-
-			if (!displayed) {
-				return;
-			}
-			waitForXMillis(500);
-			waitTime = waitTime - 500;
-		}
-	}
-
-	public void waitForElementToBeGone(By locator) {
-		WebDriverWait myWait = new WebDriverWait(driver, PROPERTIES.SHORT_UI_TIMEOUT);
-
-		try {
-			myWait.until(ExpectedConditions.visibilityOfElementLocated(locator));
-		} catch (Exception e) {
-			return;
-		}
-
-		int waitTime = PROPERTIES.SHORT_UI_TIMEOUT * 1000;
-		while (waitTime > 0) {
-			boolean displayed = true;
-
-			try {
-				displayed = driver.findElement(locator).isDisplayed();
-			} catch (Exception e) {
-				return;
-			}
-
-			if (!displayed) {
-				return;
-			}
-
-			waitForXMillis(500);
-			waitTime = waitTime - 500;
-		}
-	}
-
-	public void waitForNumberOfWindowsToBe(int noOfWindows) {
-		try {
-			wait.until(numberOfWindowsToBe(noOfWindows));
-		} catch (Exception e) {
-		}
-	}
-
-	public void clearAndFillInput(WebElement element, String toFill) {
-		waitForElementToBeVisible(element).clear();
-		log.info("cleared input");
-		waitForElementToBeEnabled(element);
-		element.sendKeys(toFill);
-		log.info("filled in text " + toFill);
-	}
-
-	public void clickVoidSpace() {
-		log.info("clicking void");
-		try {
-			waitForXMillis(500);
-			((JavascriptExecutor) driver).executeScript("document.querySelector('[class*=\"overlay-backdrop\"]').click()");
-			waitForXMillis(500);
-		} catch (Exception e) {
-		}
-		waitForXMillis(500);
-	}
-
-	private ExpectedCondition<Boolean> numberOfWindowsToBe(final int numberOfWindows) {
-		return new ExpectedCondition<Boolean>() {
-			@Override
-			public Boolean apply(WebDriver driver) {
-				driver.getWindowHandles();
-				return driver.getWindowHandles().size() == numberOfWindows;
-			}
-		};
-	}
-
-	public void waitForXMillis(Integer millis) {
-		try {
-			Thread.sleep(millis);
-		} catch (InterruptedException e) {
-			log.error("EXCEPTION: ", e);
-		}
-	}
-
-	public void waitForAttributeNotEmpty(WebElement element, String attributeName) {
-		wait.until(ExpectedConditions.attributeToBeNotEmpty(element, attributeName));
-	}
-
-	public void waitForElementToHaveText(WebElement element, String title) {
-		wait.until(ExpectedConditions.textToBePresentInElement(element, title));
-	}
-
-	public void waitForElementToBe(WebElement element) {
-
-		wait.until(new ExpectedCondition<Boolean>() {
-			@Override
-			public Boolean apply(WebDriver driver) {
-				return element.getLocation() != null;
-			}
-		});
-
-	}
-
-	public void waitForAttributeToContain(WebElement element, String attributeName, String value) {
-		wait.until(ExpectedConditions.attributeContains(element, attributeName, value));
-	}
-
-	public void waitForElementToHaveText(WebElement element) {
-		wait.until(new ExpectedCondition<Boolean>() {
-			@Override
-			public Boolean apply(WebDriver driver) {
-				return !element.getText().trim().isEmpty();
-			}
-		});
-	}
-
-	public void waitForElementToContainText(WebElement element, String text) {
-		wait.until(ExpectedConditions.textToBePresentInElement(element, text));
-	}
-
-	public boolean isVisible(WebElement element){
-		log.info("checking if element is visible");
-
-		try {
-			waitForElementToBe(element);
-			return element.isDisplayed();
-		} catch (Exception e) {		}
-		return false;
-	}
-
-	public boolean isEnabled(WebElement element){
-		log.info("checking if element is enabled");
-		try {
-			waitForElementToBeEnabled(element);
-		} catch (Exception e) {
-			return false;
-		}
-		return element.isEnabled();
-	}
-
-	public boolean isDisabled(WebElement element){
-		log.info("checking if element is disabled");
-		try {
-			waitForElementToBeDisabled(element);
-		} catch (Exception e) {
-			return false;
-		}
-		return true;
-	}
-
-
-	protected By loadingBar = By.className("mat-ripple-element");
-
-	public void waitForRowsToLoad() {
-		log.info("waiting for rows to load");
-		try {
-			waitForElementToBeGone(loadingBar);
-//			waitForElementToBeVisible(loadingBar);
-//
-//			int bars = 1;
-//			int waits = 0;
-//			while (bars > 0 && waits < 30) {
-//				Object tmp = ((JavascriptExecutor) driver).executeScript("return document.querySelectorAll('.mat-ripple-element').length;");
-//				bars = Integer.valueOf(tmp.toString());
-//				waits++;
-//				waitForXMillis(500);
-//			}
-//			log.debug("waited for rows to load for ms = 500*" + waits);
-		} catch (Exception e) {	}
-		waitForXMillis(500);
-	}
-
+    protected WebDriver driver;
+    protected WebDriverWait wait;
+    protected Logger log = Logger.getLogger(this.getClass());
+    protected By loadingBar = By.className("mat-ripple-element");
+
+
+    public PageComponent(WebDriver driver) {
+        this.driver = driver;
+        this.wait = new WebDriverWait(this.driver, PROPERTIES.TIMEOUT);
+    }
+
+    public WebElement waitForElementToBeClickable(WebElement element) {
+        return wait.until(ExpectedConditions.elementToBeClickable(element));
+    }
+
+    public WebElement waitForElementToBeVisible(WebElement element) {
+        return wait.until(ExpectedConditions.visibilityOf(element));
+    }
+
+    public WebElement waitForElementToBeVisible(By elementSelector) {
+        return wait.until(ExpectedConditions.visibilityOfElementLocated(elementSelector));
+    }
+
+    public void waitForElementToBeEnabled(WebElement element) {
+        int maxTimeout = PROPERTIES.SHORT_UI_TIMEOUT * 1000;
+        int waitedSoFar = 0;
+        while ((null != element.getAttribute("disabled")) && (waitedSoFar < maxTimeout)) {
+            waitedSoFar += 300;
+            waitForXMillis(300);
+        }
+    }
+
+    public void waitForElementToBeDisabled(WebElement element) {
+        int maxTimeout = PROPERTIES.SHORT_UI_TIMEOUT * 1000;
+        int waitedSoFar = 0;
+        while ((null == element.getAttribute("disabled")) && (waitedSoFar < maxTimeout)) {
+            waitedSoFar += 300;
+            waitForXMillis(300);
+        }
+    }
+
+    public void waitForElementToBeGone(WebElement element) {
+        WebDriverWait myWait = new WebDriverWait(driver, 1);
+
+        try {
+            myWait.until(ExpectedConditions.visibilityOf(element));
+            myWait.until(ExpectedConditions.invisibilityOf(element));
+        } catch (Exception e) {
+            return;
+        }
+
+        int waitTime = PROPERTIES.SHORT_UI_TIMEOUT * 1000;
+        while (waitTime > 0) {
+
+            try {
+                if (!element.isDisplayed()) {
+                    return;
+                }
+            } catch (Exception e) {
+                return;
+            }
+            waitForXMillis(500);
+            waitTime = waitTime - 500;
+        }
+    }
+
+    public void waitForElementToBeGone(By locator) {
+        WebDriverWait myWait = new WebDriverWait(driver, PROPERTIES.SHORT_UI_TIMEOUT);
+
+        try {
+            myWait.until(ExpectedConditions.visibilityOfElementLocated(locator));
+        } catch (Exception e) {
+            return;
+        }
+
+        int waitTime = PROPERTIES.SHORT_UI_TIMEOUT * 1000;
+        while (waitTime > 0) {
+            boolean displayed = true;
+
+            try {
+                displayed = driver.findElement(locator).isDisplayed();
+            } catch (Exception e) {
+                return;
+            }
+
+            if (!displayed) {
+                return;
+            }
+
+            waitForXMillis(500);
+            waitTime = waitTime - 500;
+        }
+    }
+
+    public void waitForNumberOfWindowsToBe(int noOfWindows) {
+        try {
+            wait.until(numberOfWindowsToBe(noOfWindows));
+        } catch (Exception e) {
+        }
+    }
+
+    public void clearAndFillInput(WebElement element, String toFill) {
+
+        log.info("clearing input");
+        waitForElementToBeEnabled(element);
+        element.clear();
+        element.sendKeys(toFill);
+        log.info("filled in text " + toFill);
+    }
+
+    public void clickVoidSpace() {
+        log.info("clicking void");
+        try {
+            waitForXMillis(500);
+            ((JavascriptExecutor) driver).executeScript("document.querySelector('[class*=\"overlay-backdrop\"]').click()");
+            waitForXMillis(500);
+        } catch (Exception e) {
+        }
+        waitForXMillis(500);
+    }
+
+    private ExpectedCondition<Boolean> numberOfWindowsToBe(final int numberOfWindows) {
+        return new ExpectedCondition<Boolean>() {
+            @Override
+            public Boolean apply(WebDriver driver) {
+                driver.getWindowHandles();
+                return driver.getWindowHandles().size() == numberOfWindows;
+            }
+        };
+    }
+
+    public void waitForXMillis(Integer millis) {
+        try {
+            Thread.sleep(millis);
+        } catch (InterruptedException e) {
+            log.error("EXCEPTION: ", e);
+        }
+    }
+
+    public void waitForAttributeNotEmpty(WebElement element, String attributeName) {
+        wait.until(ExpectedConditions.attributeToBeNotEmpty(element, attributeName));
+    }
+
+    public void waitForElementToHaveText(WebElement element, String title) {
+        wait.until(ExpectedConditions.textToBePresentInElement(element, title));
+    }
+
+    public void waitForElementToBe(WebElement element) {
+
+        wait.until(new ExpectedCondition<Boolean>() {
+            @Override
+            public Boolean apply(WebDriver driver) {
+                return element.getLocation() != null;
+            }
+        });
+
+    }
+
+    public void waitForAttributeToContain(WebElement element, String attributeName, String value) {
+        wait.until(ExpectedConditions.attributeContains(element, attributeName, value));
+    }
+
+    public void waitForElementToHaveText(WebElement element) {
+        wait.until(new ExpectedCondition<Boolean>() {
+            @Override
+            public Boolean apply(WebDriver driver) {
+                return !element.getText().trim().isEmpty();
+            }
+        });
+    }
+
+    public void waitForElementToContainText(WebElement element, String text) {
+        wait.until(ExpectedConditions.textToBePresentInElement(element, text));
+    }
+
+    public boolean isVisible(WebElement element) {
+        log.info("checking if element is visible");
+
+        try {
+            waitForElementToBe(element);
+            return element.isDisplayed();
+        } catch (Exception e) {
+        }
+        return false;
+    }
+
+    public boolean isEnabled(WebElement element) {
+        log.info("checking if element is enabled");
+        try {
+            waitForElementToBeEnabled(element);
+        } catch (Exception e) {
+            return false;
+        }
+        return element.isEnabled();
+    }
+
+    public boolean isDisabled(WebElement element) {
+        log.info("checking if element is disabled");
+        try {
+            waitForElementToBeDisabled(element);
+        } catch (Exception e) {
+            return false;
+        }
+        return true;
+    }
+
+    public void waitForRowsToLoad() {
+        log.info("waiting for rows to load");
+        try {
+            waitForElementToBeGone(loadingBar);
+        } catch (Exception e) {
+        }
+        waitForXMillis(500);
+    }
 
 
 }
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 6b7bbc777a7b895cd6515b3ac1b2dc7318e3ac8e..9c3d4b281f03c1c1974e27d65a4a74a847f17423 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
@@ -1,6 +1,5 @@
 package pages.components.grid;
 
-import org.openqa.selenium.By;
 import org.openqa.selenium.JavascriptExecutor;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
@@ -8,67 +7,65 @@ 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 org.openqa.selenium.support.ui.ExpectedConditions;
 import pages.components.baseComponents.PageComponent;
 
-import java.lang.reflect.Constructor;
 import java.util.ArrayList;
 import java.util.List;
 
 public class BasicGrid extends PageComponent {
 
-	public BasicGrid(WebDriver driver, WebElement container) {
-		super(driver);
-		
-		log.info("Loading basic grid");
-		waitForRowsToLoad();
-		PageFactory.initElements( new DefaultElementLocatorFactory(container) , this);
+    @FindBy(css = "datatable-header div.datatable-row-center datatable-header-cell")
+    protected List<WebElement> gridHeaders;
+    @FindBy(css = "datatable-body-row > div.datatable-row-center.datatable-row-group")
+    protected List<WebElement> gridRows;
+    protected ArrayList<String> headerTxt = new ArrayList<String>();
 
-		for (int i = 0; i < gridHeaders.size(); i++) {
-			headerTxt.add(gridHeaders.get(i).getText().trim());
-		}
 
-	}
+    public BasicGrid(WebDriver driver, WebElement container) {
+        super(driver);
 
+        log.info("Loading basic grid");
+        waitForRowsToLoad();
+        PageFactory.initElements(new DefaultElementLocatorFactory(container), this);
 
+        for (int i = 0; i < gridHeaders.size(); i++) {
+            headerTxt.add(gridHeaders.get(i).getText().trim());
+        }
 
-	@FindBy(css = "datatable-header div.datatable-row-center datatable-header-cell")
-	protected List<WebElement> gridHeaders;
+    }
 
-	@FindBy(css = "datatable-body-row > div.datatable-row-center.datatable-row-group")
-	protected List<WebElement> gridRows;
-	
-	
-	protected ArrayList<String> headerTxt = new ArrayList<String>();
-	
-	public void selectRow(int rowNumber){
-		log.info("selecting row with number ... " + rowNumber);
-		if(rowNumber>=gridRows.size()){return;}
-		gridRows.get(rowNumber).click();
-		waitForXMillis(500);
-	}
-	
-	public void doubleClickRow(int rowNumber){
-		
-		log.info("double clicking row ... " + rowNumber);
-		waitForXMillis(500);
-		if(rowNumber>=gridRows.size()){return ;}
-		Actions action = new Actions(driver);
-		action.doubleClick(gridRows.get(rowNumber)).perform();
-	}
+    public void selectRow(int rowNumber) {
+        log.info("selecting row with number ... " + rowNumber);
+        if (rowNumber >= gridRows.size()) {
+            return;
+        }
+        gridRows.get(rowNumber).click();
+        waitForXMillis(500);
+    }
 
-	public int getColumnsNo(){
-		log.info("getting number of columns");
-		return gridHeaders.size();
-	}
+    public void doubleClickRow(int rowNumber) {
 
-	public int getRowsNo(){
-		return gridRows.size();
-	}
+        log.info("double clicking row ... " + rowNumber);
+        waitForXMillis(500);
+        if (rowNumber >= gridRows.size()) {
+            return;
+        }
+        Actions action = new Actions(driver);
+        action.doubleClick(gridRows.get(rowNumber)).perform();
+    }
 
-	public void scrollRow(int index) {
-		JavascriptExecutor js = (JavascriptExecutor) driver;
-		js.executeScript("arguments[0].scrollIntoView();",gridRows.get(index));
-		waitForXMillis(500);
-	}
+    public int getColumnsNo() {
+        log.info("getting number of columns");
+        return gridHeaders.size();
+    }
+
+    public int getRowsNo() {
+        return gridRows.size();
+    }
+
+    public void scrollRow(int index) {
+        JavascriptExecutor js = (JavascriptExecutor) driver;
+        js.executeScript("arguments[0].scrollIntoView();", gridRows.get(index));
+        waitForXMillis(500);
+    }
 }
diff --git a/smp-ui-tests/src/main/java/pages/components/messageArea/AlertMessage.java b/smp-ui-tests/src/main/java/pages/components/messageArea/AlertMessage.java
index e2442e3ac7235c96c94ee98a8a71551747ca6d01..a2e92d6421c8a1179a71f2eccfc8eb40e23a0044 100644
--- a/smp-ui-tests/src/main/java/pages/components/messageArea/AlertMessage.java
+++ b/smp-ui-tests/src/main/java/pages/components/messageArea/AlertMessage.java
@@ -11,7 +11,8 @@ public class AlertMessage {
 	}
 
 	public String getMessage() {
-		return message.replaceAll("×", "").trim();
+        System.out.println("message = " + message);
+        return message.replaceAll("×", "").trim();
 	}
 
 	public void setMessage(String message) {
diff --git a/smp-ui-tests/src/main/java/pages/password/PasswordChangepopup.java b/smp-ui-tests/src/main/java/pages/password/PasswordChangepopup.java
new file mode 100644
index 0000000000000000000000000000000000000000..f666d74fdb0c6aa465c68f82cfdfbdd9805996bc
--- /dev/null
+++ b/smp-ui-tests/src/main/java/pages/password/PasswordChangepopup.java
@@ -0,0 +1,139 @@
+package pages.password;
+
+
+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 pages.components.ConfirmationDialog;
+import pages.components.baseComponents.PageComponent;
+import pages.service_groups.search.SearchPage;
+import utils.PROPERTIES;
+
+public class PasswordChangepopup extends PageComponent {
+
+
+    @FindBy(id = "username_id")
+    WebElement userNameInput;
+    @FindBy(id = "emailAddress_id")
+    WebElement emailInput;
+    @FindBy(id = "np_id")
+    WebElement newPasswordInput;
+    @FindBy(id = "cnp_id")
+    WebElement confirmationInput;
+    /* @FindBy(css = "input#cp_id")
+     WebElement adminPassInput;
+*/
+    @FindBy(xpath = "//input[@data-placeholder='Admin password for user [system]']")
+    WebElement adminPassInput;
+    @FindBy(xpath = "//input[@data-placeholder='Current password']")
+    WebElement currentPassInput;
+    @FindBy(css = "mat-form-field.username> div > div.mat-form-field-flex > div > div")
+    WebElement usernameValidationError;
+    @FindBy(css = "mat-form-field.password > div > div.mat-form-field-flex > div > div")
+    WebElement passValidationError;
+    @FindBy(css = "mat-form-field.password-confirmation > div > div.mat-form-field-flex > div > div")
+    WebElement passConfirmationValidationError;
+    @FindBy(css = ".mat-form-field-infix > div.has-error")
+    WebElement passMatchValidationError;
+    @FindBy(css = "mat-dialog-actions button:nth-child(1)")
+    WebElement okBtn;
+    @FindBy(css = "mat-dialog-actions button:nth-child(2)")
+    WebElement cancelBtn;
+    @FindBy(css = "#changePassword_id")
+    WebElement changePassword;
+    @FindBy(css = "smp-password-change-dialog mat-dialog-actions button:nth-child(1)")
+    WebElement changedPassword;
+    @FindBy(css = "#closebuttondialog_id")
+    WebElement passChangedClose;
+    @FindBy(css = "smp-password-change-dialog mat-dialog-actions button:nth-child(2)")
+    WebElement passwordDialogClose;
+
+    public PasswordChangepopup(WebDriver driver) {
+        super(driver);
+        PageFactory.initElements(new AjaxElementLocatorFactory(driver, PROPERTIES.TIMEOUT), this);
+    }
+
+    public void clickOK() {
+        log.info("click OK");
+        waitForElementToBeClickable(okBtn);
+        okBtn.click();
+        waitForElementToBeGone(okBtn);
+    }
+
+    public void clickCancel() {
+        log.info("click cancel");
+        waitForElementToBeClickable(cancelBtn);
+        cancelBtn.click();
+        waitForElementToBeGone(cancelBtn);
+    }
+
+    public void clickChangePassword() {
+        log.info("click change password");
+        waitForElementToBeClickable(changePassword);
+        changePassword.click();
+        //waitForElementToBeGone(changePassword);
+    }
+
+    public SearchPage clickCloseAfterChangedPassForLoggedUser() {
+        log.info("click close after change password");
+        waitForElementToBeClickable(passChangedClose);
+        passChangedClose.click();
+        waitForElementToBeGone(passChangedClose);
+        return new SearchPage(driver);
+    }
+
+    public void clickCloseAfterChangedPass() {
+        log.info("click close after change password");
+
+        waitForElementToBeClickable(passChangedClose);
+        passChangedClose.click();
+        waitForElementToBeGone(passChangedClose);
+
+    }
+
+    public void setOrChangePassword(String adminPass, String newPass, String confirmPass) {
+
+        clearAndFillInput(adminPassInput, adminPass);
+        clearAndFillInput(newPasswordInput, newPass);
+        clearAndFillInput(confirmationInput, confirmPass);
+    }
+
+    public void fillDataForLoggedUser(String currentPass, String newPass, String confirmPass) {
+        clearAndFillInput(currentPassInput, currentPass);
+        clearAndFillInput(newPasswordInput, newPass);
+        clearAndFillInput(confirmationInput, confirmPass);
+    }
+
+    public ConfirmationDialog clickChangedPassword() {
+        log.info("click changed password");
+        waitForElementToBeClickable(changedPassword);
+        changedPassword.click();
+        waitForElementToBeGone(changedPassword);
+        return new ConfirmationDialog(driver);
+    }
+
+    public SearchPage clickClosePasswordDialog() {
+        passwordDialogClose.click();
+        waitForElementToBeGone(passwordDialogClose);
+        return new SearchPage(driver);
+    }
+
+    public boolean isCurrentPasswordInputEnable() {
+        boolean bool = currentPassInput.isEnabled();
+        return bool;
+    }
+
+    public boolean isNewPasswordInputEnable() {
+        boolean bool = newPasswordInput.isEnabled();
+        return bool;
+    }
+
+    public boolean isConfirmPasswordInputEnable() {
+        boolean bool = confirmationInput.isEnabled();
+        return bool;
+    }
+
+}
+
diff --git a/smp-ui-tests/src/main/java/pages/properties/PropertiesGrid.java b/smp-ui-tests/src/main/java/pages/properties/PropertiesGrid.java
new file mode 100644
index 0000000000000000000000000000000000000000..baca43b15b72f7ae092505063018c9068bb65372
--- /dev/null
+++ b/smp-ui-tests/src/main/java/pages/properties/PropertiesGrid.java
@@ -0,0 +1,41 @@
+package pages.properties;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+import pages.components.grid.BasicGrid;
+import pages.properties.PropertyRowInfo;
+import pages.users.UserRowInfo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PropertiesGrid extends BasicGrid {
+
+
+    public PropertiesGrid(WebDriver driver, WebElement container) {
+        super(driver, container);
+    }
+    public List<PropertyRowInfo> getRows() {
+        List<PropertyRowInfo> rowInfos = new ArrayList<>();
+
+        for (WebElement gridRow : gridRows) {
+            List<WebElement> cells = gridRow.findElements(By.tagName("datatable-body-cell"));
+            PropertyRowInfo rowInfo = new PropertyRowInfo();
+            rowInfo.setPropertyname(cells.get(0).getText().trim());
+            rowInfo.setPropertyvalue(cells.get(1).getText().trim());
+            rowInfos.add(rowInfo);
+        }
+        return rowInfos;
+    }
+
+    public Boolean rowContainPropertyName(String property){
+        List<PropertyRowInfo> rows = getRows();
+        int i = rows.size();
+        Boolean bool=rows.size() == 1 && rows.get(i-1).getPropertyname().equalsIgnoreCase(property);
+
+        return bool;
+
+    }
+}
diff --git a/smp-ui-tests/src/main/java/pages/properties/PropertiesPage.java b/smp-ui-tests/src/main/java/pages/properties/PropertiesPage.java
new file mode 100644
index 0000000000000000000000000000000000000000..c954988a319f50eaec1881d6bbf8438507343c49
--- /dev/null
+++ b/smp-ui-tests/src/main/java/pages/properties/PropertiesPage.java
@@ -0,0 +1,96 @@
+package pages.properties;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.PageFactory;
+import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
+import pages.components.ConfirmationDialog;
+import pages.components.baseComponents.PaginationControls;
+import pages.components.baseComponents.SMPPage;
+import pages.users.UserPopup;
+import pages.users.UsersGrid;
+import utils.PROPERTIES;
+
+public class PropertiesPage extends SMPPage {
+    public PropertiesPage(WebDriver driver) {
+        super(driver);
+        this.pageHeader.waitForTitleToBe("Properties");
+        PageFactory.initElements(new AjaxElementLocatorFactory(driver, PROPERTIES.TIMEOUT), this);
+    }
+    public PaginationControls pagination = new PaginationControls(driver);
+
+    @FindBy(id = "searchTable")
+    private WebElement propertyTableContainer;
+
+    @FindBy(id = "cancelButton")
+    private WebElement cancelBtn;
+
+    @FindBy(id = "saveButton")
+    private WebElement saveBtn;
+
+    @FindBy(id = "editButton")
+    private WebElement editBtn;
+
+    @FindBy(id = "searchProperty")
+    private WebElement searchPropertyField;
+
+    @FindBy(id = "searchbutton_id")
+    private WebElement searchBtn;
+
+    public String getErrorMessage()
+    {
+        return driver.findElement(By.cssSelector(".alert-message-error")).getText();
+    }
+
+
+
+    public boolean isLoaded(){
+        log.info("checking if Property page is loaded");
+        return isVisible(cancelBtn)
+                && isVisible(saveBtn)
+                && isVisible(editBtn);
+    }
+
+    public boolean isCancelButtonEnabled() {
+        log.info("checking cancel button is enabled");
+        return isEnabled(cancelBtn);
+    }
+
+    public boolean isSaveButtonEnabled() {
+        log.info("checking save button is enabled");
+        return isEnabled(saveBtn);
+    }
+    public ConfirmationDialog clickCancel() {
+        log.info("click cancel button");
+        waitForElementToBeClickable(cancelBtn).click();
+        return new ConfirmationDialog(driver);
+    }
+    public boolean isEditButtonEnabled() {
+        log.info("checking edit button is enabled");
+        return isEnabled(editBtn);
+    }
+
+
+
+    public ConfirmationDialog clickSave() {
+        log.info("click save button");
+        waitForElementToBeClickable(saveBtn).click();
+        return new ConfirmationDialog(driver);
+    }
+    public PropertyPopup clickEdit() {
+        log.info("click edit button");
+        waitForElementToBeClickable(editBtn).click();
+        return new PropertyPopup(driver);
+    }
+    public void propertySearch(String propertyname)
+    {
+        log.info("Search for property");
+        waitForElementToBeVisible(searchPropertyField).sendKeys(propertyname);
+        waitForElementToBeClickable(searchBtn).click();
+    }
+    public PropertiesGrid grid() {
+        return new PropertiesGrid(driver, propertyTableContainer);
+    }
+}
diff --git a/smp-ui-tests/src/main/java/pages/properties/PropertyPopup.java b/smp-ui-tests/src/main/java/pages/properties/PropertyPopup.java
new file mode 100644
index 0000000000000000000000000000000000000000..464be67c4b84742a39c3ece806e33e7168f7456c
--- /dev/null
+++ b/smp-ui-tests/src/main/java/pages/properties/PropertyPopup.java
@@ -0,0 +1,90 @@
+package pages.properties;
+
+import org.openqa.selenium.JavascriptExecutor;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+import org.openqa.selenium.support.PageFactory;
+import pages.components.GenericSelect;
+import pages.components.baseComponents.PageComponent;
+
+public class PropertyPopup extends PageComponent {
+
+        public PropertyPopup(WebDriver driver) {
+            super(driver);
+            PageFactory.initElements(driver, this);
+        }
+
+        @FindBy(css = "mat-dialog-actions button:nth-child(1)")
+        WebElement popupOkBtn;
+
+        @FindBy(css = "mat-dialog-actions button:nth-child(2)")
+        WebElement popupCancelBtn;
+
+        @FindBy(css = "span.mat-checkbox-inner-container input")
+        WebElement propertyCheckbox;
+
+        @FindBy(css = ".mat-input-element.mat-form-field-autofill-control[type='text']")
+        WebElement propertryEditInput;
+
+        public boolean isOKButtonActive() {
+            return isEnabled(popupOkBtn);
+        }
+
+        public boolean isCancelButtonActive() {
+            return isEnabled(popupCancelBtn);
+        }
+        public PropertiesPage clickOK() {
+            log.info("click OK");
+            waitForElementToBeClickable(popupOkBtn);
+            popupOkBtn.click();
+            waitForElementToBeGone(popupOkBtn);
+            return new PropertiesPage(driver);
+        }
+
+        public PropertiesPage clickCancel() {
+            log.info("click cancel");
+            waitForElementToBeClickable(popupCancelBtn);
+            popupCancelBtn.click();
+            waitForElementToBeGone(popupCancelBtn);
+            return new PropertiesPage(driver);
+        }
+       public PropertiesPage enableCheckboxOfProperty() {
+           Boolean bool = propertyCheckbox.isSelected();
+
+           if (bool == false) {
+               propertyCheckbox.click();
+               popupOkBtn.click();
+           }
+           else
+           {
+               popupCancelBtn.click();
+           }
+           return new PropertiesPage(driver);
+       }
+    public PropertiesPage disableCheckboxOfProperty(){
+        Boolean bool = propertyCheckbox.isSelected();
+        if(bool == true){
+            JavascriptExecutor executor = (JavascriptExecutor)driver;
+            executor.executeScript("arguments[0].click();", propertyCheckbox);
+            try {
+                Thread.sleep(1000);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            popupOkBtn.click();
+        }
+        else
+        {
+            popupCancelBtn.click();
+        }
+        return new PropertiesPage(driver);
+
+    }
+    public void editInputField(String string)
+    {
+        propertryEditInput.sendKeys(string);
+    }
+
+
+    }
diff --git a/smp-ui-tests/src/main/java/pages/properties/PropertyRowInfo.java b/smp-ui-tests/src/main/java/pages/properties/PropertyRowInfo.java
new file mode 100644
index 0000000000000000000000000000000000000000..3f5f344136d274089199ac1919dbebe5aa814aa9
--- /dev/null
+++ b/smp-ui-tests/src/main/java/pages/properties/PropertyRowInfo.java
@@ -0,0 +1,22 @@
+package pages.properties;
+
+public class PropertyRowInfo {
+    private String propertyname;
+    private String propertyvalue;
+
+    public String getPropertyname() {
+        return propertyname;
+    }
+
+    public void setPropertyname(String propertyname) {
+        this.propertyname = propertyname;
+    }
+
+    public String getPropertyvalue() {
+        return propertyvalue;
+    }
+
+    public void setPropertyvalue(String propertyvalue) {
+        this.propertyvalue = propertyvalue;
+    }
+}
diff --git a/smp-ui-tests/src/main/java/pages/service_groups/edit/EditPage.java b/smp-ui-tests/src/main/java/pages/service_groups/edit/EditPage.java
index 3ea1034abdd49b0ca5f1879083db97f757dd7ad5..7792f9a4c820339a7eec5cb76b9421df876a939a 100644
--- a/smp-ui-tests/src/main/java/pages/service_groups/edit/EditPage.java
+++ b/smp-ui-tests/src/main/java/pages/service_groups/edit/EditPage.java
@@ -29,6 +29,9 @@ public class EditPage extends SMPPage {
 	@FindBy(id = "searchTable")
 	private WebElement searchTable;
 
+	@FindBy(id = "okButton")
+	private WebElement okButton;
+
 	@FindBy(id = "cancelButton")
 	private WebElement cancelButton;
 
@@ -101,6 +104,11 @@ public class EditPage extends SMPPage {
 		waitForElementToBeClickable(cancelButton).click();
 		return new ConfirmationDialog(driver);
 	}
+	public ConfirmationDialog clickOk() {
+		log.info("canceling ...");
+		waitForElementToBeClickable(okButton).click();
+		return new ConfirmationDialog(driver);
+	}
 
 	public void clickDelete() {
 		log.info("deleting ...");
diff --git a/smp-ui-tests/src/main/java/pages/service_groups/edit/ServiceGroupPopup.java b/smp-ui-tests/src/main/java/pages/service_groups/edit/ServiceGroupPopup.java
index 0191de265381141550cd1b71afedf9dc600d6f44..5844a1dedb6032b665ac794464664dfe4360795e 100644
--- a/smp-ui-tests/src/main/java/pages/service_groups/edit/ServiceGroupPopup.java
+++ b/smp-ui-tests/src/main/java/pages/service_groups/edit/ServiceGroupPopup.java
@@ -33,10 +33,10 @@ public class ServiceGroupPopup extends PageComponent {
 	private WebElement domainsPanelContainer;
 	public AccordionSection domainsPanel;
 
-	@FindBy(css = "mat-dialog-actions > div > button:nth-child(1)")
+	@FindBy(css = "mat-dialog-actions button:nth-child(1)")
 	private WebElement okButton;
 
-	@FindBy(css = "mat-dialog-actions > div > button:nth-child(2)")
+	@FindBy(css = "mat-dialog-actions button:nth-child(2)")
 	private WebElement cancelButton;
 
 	@FindBy(css = "#participantIdentifier_id")
@@ -57,7 +57,7 @@ public class ServiceGroupPopup extends PageComponent {
 	@FindBy(css = "mat-card-content > mat-toolbar > mat-toolbar-row > button:nth-child(3)")
 	private WebElement validateExtensionButton;
 
-	@FindBy(css = "mat-card-content > div > div.ng-star-inserted")
+	@FindBy(css = "mat-card-content > div.ng-star-inserted")
 	private WebElement errorContainer;
 
 
@@ -69,6 +69,14 @@ public class ServiceGroupPopup extends PageComponent {
 		log.info("is cancel button visible");
 		return isVisible(cancelButton);
 	}
+	public boolean isOKButtonEnable(){
+		log.info("is ok button visible");
+		return isEnabled(okButton);
+	}
+	public boolean isCancelButtonEnable(){
+		log.info("is cancel button visible");
+		return isEnabled(cancelButton);
+	}
 
 	public boolean isExtensionAreaEditable(){
 		log.info("is Extension Area Editable");
@@ -114,7 +122,7 @@ public class ServiceGroupPopup extends PageComponent {
 	public void clickCancel(){
 		log.info("click cancel..");
 		waitForElementToBeClickable(cancelButton).click();
-		waitForElementToBeGone(okButton);
+		waitForElementToBeGone(cancelButton);
 	}
 
 	public void fillForm(String identifier, String scheme, List<String> owners, List<String> domains, String extension){
diff --git a/smp-ui-tests/src/main/java/pages/users/UserPopup.java b/smp-ui-tests/src/main/java/pages/users/UserPopup.java
index c6bc2a45a7665d311bdaadcb71308682393e4655..0c97803330b5e2069ea29462fe1ed774de5bddcc 100644
--- a/smp-ui-tests/src/main/java/pages/users/UserPopup.java
+++ b/smp-ui-tests/src/main/java/pages/users/UserPopup.java
@@ -5,146 +5,233 @@ import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
 import org.openqa.selenium.support.PageFactory;
+import pages.components.ConfirmationDialog;
 import pages.components.GenericSelect;
 import pages.components.baseComponents.PageComponent;
 
 public class UserPopup extends PageComponent {
-	public UserPopup(WebDriver driver) {
-		super(driver);
-		PageFactory.initElements(driver, this);
-		rolesSelect = new GenericSelect(driver, rolesSelectContainer);
-	}
+    public GenericSelect rolesSelect;
+    @FindBy(id = "userDetailsToggle_id")
+    WebElement userDetailsToggle;
 
+    @FindBy(css = "#active_id > label > div > div")
+    WebElement activeToggle;
 
-	@FindBy(id = "userDetailsToggle_id")
-	WebElement userDetailsToggle;
+    @FindBy(id = "username_id")
+    WebElement userNameInput;
 
-	@FindBy(css = "#active_id > label > div > div")
-	WebElement activeToggle;
+    @FindBy(id = "emailAddress_id")
+    WebElement emailInput;
 
-	@FindBy(id = "username_id")
-	WebElement userNameInput;
+    @FindBy(id = "np_id")
+    WebElement newPasswordInput;
 
-	@FindBy(id = "emailAddress_id")
-	WebElement emailInput;
+    @SuppressWarnings("SpellCheckingInspection")
+    @FindBy(id = "cnp_id")
+    WebElement confirmationInput;
 
-	@FindBy(id = "password_id")
-	WebElement passwordInput;
+    @FindBy(css = "input#cp_id")
+    WebElement adminPassInput;
 
-	@SuppressWarnings("SpellCheckingInspection")
-	@FindBy(id = "usernameconfirmation_id")
-	WebElement confirmationInput;
+    @FindBy(css = "mat-form-field.username> div > div.mat-form-field-flex > div > div")
+    WebElement usernameValidationError;
 
-	@FindBy(css = "mat-form-field.username> div > div.mat-form-field-flex > div > div")
-	WebElement usernameValidationError;
-
-	@FindBy(css = "mat-form-field.password > div > div.mat-form-field-flex > div > div")
-	WebElement passValidationError;
-
-	@FindBy(css = "mat-form-field.password-confirmation > div > div.mat-form-field-flex > div > div")
-	WebElement passConfirmationValidationError;
-
-	@FindBy(css = ".mat-form-field-infix > div.has-error")
-	WebElement passMatchValidationError;
-
-	@FindBy(css = "mat-dialog-content > table > tr > td > button:nth-child(1)")
-	WebElement okBtn;
-
-	@FindBy(css = "mat-dialog-content > table > tr > td > button:nth-child(2)")
-	WebElement cancelBtn;
-
-	@FindBy(css = "#role_id")
-	WebElement rolesSelectContainer;
-	public GenericSelect rolesSelect;
-
-
-	public boolean isOKButtonActive() {
-		return isEnabled(okBtn);
-	}
-
-	public boolean isCancelButtonActive() {
-		return isEnabled(cancelBtn);
-	}
-
-	public void fillData(String user, String email, String role, String password, String confirmation) {
-		clearAndFillInput(userNameInput, user);
-		clearAndFillInput(emailInput, email);
-		clearAndFillInput(passwordInput, password);
-		clearAndFillInput(confirmationInput, confirmation);
-
-		GenericSelect rolesSelect = new GenericSelect(driver, rolesSelectContainer);
-		rolesSelect.selectOptionByText(role);
-
-	}
-
-	public void clickOK() {
-		log.info("click OK");
-		waitForElementToBeClickable(okBtn);
-		okBtn.click();
-		waitForElementToBeGone(okBtn);
-	}
-
-	public void clickCancel() {
-		log.info("click cancel");
-		waitForElementToBeClickable(cancelBtn);
-		cancelBtn.click();
-		waitForElementToBeGone(cancelBtn);
-	}
-
-
-	public void clickUserDetailsToggle() {
-		log.info("details toggle");
-		waitForElementToBeClickable(userDetailsToggle).click();
-		waitForElementToBeEnabled(userNameInput);
-	}
-
-	public void fillDetailsForm(String username, String pass, String confirmation) {
-		clearAndFillInput(userNameInput, username);
-		clearAndFillInput(passwordInput, pass);
-		clearAndFillInput(confirmationInput, confirmation);
-		emailInput.click();
-	}
-
-
-	public String getUsernameValidationError() {
-		try {
-			waitForElementToBeVisible(usernameValidationError);
-			return usernameValidationError.getText();
-		} catch (Exception e) {
-		}
-		return null;
-	}
-
-	public String getPassValidationError() {
-		try {
-			waitForElementToBeVisible(passValidationError);
-			return passValidationError.getText();
-		} catch (Exception e) {
-		}
-		return null;
-	}
-
-	public String getConfirmationPassValidationError() {
-
-		try {
-			waitForElementToBeVisible(passConfirmationValidationError);
-			return passConfirmationValidationError.getText();
-		} catch (Exception e) {
-		}
-		return null;
-	}
-
-	public boolean isDuplicateUserNameErrorMsgDisPlayed() {
-		try {
-			return driver.findElement(By.cssSelector("mat-form-field.username > div .has-error")).isDisplayed();
-		} catch (Exception e) {
-			e.printStackTrace();
-			return false;
-		}
-	}
-
-	public String getPassDontMatchValidationMsg() {
-//		WebElement passwordUnmatchingMsg = driver.findElement(By.cssSelector(".mat-form-field-infix > div.has-error"));
-		return passMatchValidationError.getText();
-	}
+    @FindBy(css = "smp-password-change-dialog .password-panel mat-form-field:nth-child(2) .mat-form-field-subscript-wrapper mat-error")
+    WebElement passValidationError;
+
+    @FindBy(css = "mat-form-field.password-confirmation > div > div.mat-form-field-flex > div > div")
+    WebElement passConfirmationValidationError;
+
+    @FindBy(css = ".ng-trigger.ng-trigger-transitionMessages.ng-star-inserted > mat-error")
+    WebElement passMatchValidationError;
+
+    @FindBy(css = "mat-dialog-actions button:nth-child(1)")
+    WebElement okBtn;
+
+    @FindBy(css = "mat-dialog-actions button:nth-child(2)")
+    WebElement cancelBtn;
+
+    @FindBy(css = "#changePassword_id")
+    WebElement changePassword;
+
+    @FindBy(css = "smp-password-change-dialog mat-dialog-actions button:nth-child(1)")
+    WebElement changedPassword;
+
+    @FindBy(css = "#closebuttondialog_id")
+    WebElement passChangedClose;
+
+    @FindBy(css = "smp-password-change-dialog mat-dialog-actions button:nth-child(2)")
+    WebElement passwordDialogClose;
+
+    @FindBy(css = "#role_id")
+    WebElement rolesSelectContainer;
+    public UserPopup(WebDriver driver) {
+        super(driver);
+        PageFactory.initElements(driver, this);
+        rolesSelect = new GenericSelect(driver, rolesSelectContainer);
+    }
+
+    public boolean isAdminPasswordInputEnable() {
+        boolean bool = adminPassInput.isEnabled();
+        return bool;
+    }
+
+    public boolean isNewPasswordInputEnable() {
+        boolean bool = newPasswordInput.isEnabled();
+        return bool;
+    }
+
+    public boolean isConfirmPasswordInputEnable() {
+        boolean bool = confirmationInput.isEnabled();
+        return bool;
+    }
+
+
+    public boolean isOKButtonActive() {
+        return isEnabled(okBtn);
+    }
+
+    public boolean isChangePasswordActive() {
+        return isEnabled(passChangedClose);
+    }
+
+    public boolean isChangePasswordButtonActive() {
+        return isEnabled(changedPassword);
+    }
+
+    public boolean isCancelButtonActive() {
+        return isEnabled(cancelBtn);
+    }
+
+    public void fillData(String user, String email, String role, String password, String confirmation) {
+        clearAndFillInput(userNameInput, user);
+        clearAndFillInput(emailInput, email);
+        clearAndFillInput(newPasswordInput, password);
+        clearAndFillInput(confirmationInput, confirmation);
+
+        GenericSelect rolesSelect = new GenericSelect(driver, rolesSelectContainer);
+        rolesSelect.selectOptionByText(role);
+
+    }
+
+    public void clickOK() {
+        log.info("click OK");
+        waitForElementToBeClickable(okBtn);
+        okBtn.click();
+        waitForElementToBeGone(okBtn);
+    }
+
+    public void clickCancel() {
+        log.info("click cancel");
+        waitForElementToBeClickable(cancelBtn);
+        cancelBtn.click();
+        waitForElementToBeGone(cancelBtn);
+    }
+
+
+    public void clickUserDetailsToggle() {
+        log.info("details toggle");
+        waitForElementToBeClickable(userDetailsToggle).click();
+        waitForElementToBeEnabled(userNameInput);
+    }
+
+    //public void fillDetailsForm(String username, String pass, String confirmation)
+    public void fillDetailsForm(String username) {
+        clearAndFillInput(userNameInput, username);
+        //clearAndFillInput(passwordInput, pass);
+        //clearAndFillInput(confirmationInput, confirmation);
+        emailInput.click();
+    }
+
+    public void clickSetOrChangePassword() {
+        log.info("click change password");
+        waitForElementToBeClickable(changePassword);
+        waitForXMillis(500);
+        changePassword.click();
+        waitForXMillis(500);
+    }
+
+    public void clickCloseAfterChangedPass() {
+        log.info("click close after change password");
+        try {
+            Thread.sleep(10000);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        waitForElementToBeClickable(passChangedClose);
+        log.info("ab");
+        passChangedClose.click();
+        log.info("bd");
+        waitForElementToBeGone(passChangedClose);
+        log.info("cd");
+    }
+
+    public ConfirmationDialog clickChangedPassword() {
+        log.info("click changed password");
+        waitForElementToBeClickable(changedPassword);
+        waitForXMillis(500);
+        changedPassword.click();
+        waitForElementToBeGone(changedPassword);
+        return new ConfirmationDialog(driver);
+    }
+
+    public boolean isPopupChangedPasswordEnabled() {
+        return changedPassword.isEnabled();
+    }
+
+    public void setOrChangePassword(String adminPass, String newPass, String confirmPass) {
+
+        clearAndFillInput(adminPassInput, adminPass);
+        clearAndFillInput(newPasswordInput, newPass);
+        clearAndFillInput(confirmationInput, confirmPass);
+    }
+
+    public void clickClosePasswordDialog() {
+        passwordDialogClose.click();
+        waitForElementToBeGone(passwordDialogClose);
+    }
+
+
+    public String getUsernameValidationError() {
+        try {
+            waitForElementToBeVisible(usernameValidationError);
+            return usernameValidationError.getText();
+        } catch (Exception e) {
+        }
+        return null;
+    }
+
+    public String getPassValidationError() {
+        try {
+            waitForElementToBeVisible(passValidationError);
+            return passValidationError.getText();
+        } catch (Exception e) {
+        }
+        return null;
+    }
+
+    public String getConfirmationPassValidationError() {
+
+        try {
+            waitForElementToBeVisible(passConfirmationValidationError);
+            return passConfirmationValidationError.getText();
+        } catch (Exception e) {
+        }
+        return null;
+    }
+
+    public boolean isDuplicateUserNameErrorMsgDisPlayed() {
+        try {
+            return driver.findElement(By.cssSelector("mat-form-field.username > div .has-error")).isDisplayed();
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    public String getPassDontMatchValidationMsg() {
+        //WebElement passwordUnmatchingMsg = driver.findElement(By.cssSelector(".ng-trigger.ng-trigger-transitionMessages.ng-star-inserted > mat-error"));
+        return passMatchValidationError.getText();
+        //".mat-form-field-infix > div.has-error"
+    }
 }
diff --git a/smp-ui-tests/src/main/java/pages/users/UserRowInfo.java b/smp-ui-tests/src/main/java/pages/users/UserRowInfo.java
index 0c17dcda9a3d8504384f2af61ff3c1c33a5120d4..962d388ee690430e1a628ccffb57bb2ccb484088 100644
--- a/smp-ui-tests/src/main/java/pages/users/UserRowInfo.java
+++ b/smp-ui-tests/src/main/java/pages/users/UserRowInfo.java
@@ -1,38 +1,33 @@
 package pages.users;
 
-import org.openqa.selenium.WebDriver;
-import org.openqa.selenium.WebElement;
-
-import java.util.ArrayList;
-
-public class UserRowInfo{
-	
-	private String username;
-	private String role;
-	private String certificate;
-	
-	
-	public String getUsername() {
-		return username;
-	}
-	
-	public void setUsername(String username) {
-		this.username = username;
-	}
-	
-	public String getRole() {
-		return role;
-	}
-	
-	public void setRole(String role) {
-		this.role = role;
-	}
-	
-	public String getCertificate() {
-		return certificate;
-	}
-	
-	public void setCertificate(String certificate) {
-		this.certificate = certificate;
-	}
+public class UserRowInfo {
+
+    private String username;
+    private String role;
+    private String certificate;
+
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getRole() {
+        return role;
+    }
+
+    public void setRole(String role) {
+        this.role = role;
+    }
+
+    public String getCertificate() {
+        return certificate;
+    }
+
+    public void setCertificate(String certificate) {
+        this.certificate = certificate;
+    }
 }
diff --git a/smp-ui-tests/src/main/java/pages/users/UsersPage.java b/smp-ui-tests/src/main/java/pages/users/UsersPage.java
index cb232f7ee73c27a62ea0d4b867dcce52b4abb463..04b95c528ccb8f8ead392e243040810028299e05 100644
--- a/smp-ui-tests/src/main/java/pages/users/UsersPage.java
+++ b/smp-ui-tests/src/main/java/pages/users/UsersPage.java
@@ -1,130 +1,117 @@
 package pages.users;
 
-import org.openqa.selenium.By;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
 import org.openqa.selenium.support.PageFactory;
 import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory;
-import org.openqa.selenium.support.ui.ExpectedConditions;
 import pages.components.ConfirmationDialog;
 import pages.components.baseComponents.PaginationControls;
 import pages.components.baseComponents.SMPPage;
-import pages.components.grid.BasicGrid;
 import utils.PROPERTIES;
 
-import java.util.List;
-
 public class UsersPage extends SMPPage {
-	public UsersPage(WebDriver driver) {
-		super(driver);
-		this.pageHeader.waitForTitleToBe("Users");
-		PageFactory.initElements(new AjaxElementLocatorFactory(driver, PROPERTIES.TIMEOUT), this);
-	}
-
-
-	public PaginationControls pagination = new PaginationControls(driver);
-
-	@FindBy(id = "searchTable")
-	private WebElement userTableContainer;
-
-	@FindBy(id = "cancelButton")
-	private WebElement cancelBtn;
-
-	@FindBy(id = "saveButton")
-	private WebElement saveBtn;
-
-	@FindBy(id = "newButton")
-	private WebElement newBtn;
-
-	@FindBy(id = "editButton")
-	private WebElement editBtn;
-
-	@FindBy(id = "deleteButton")
-	private WebElement deleteBtn;
-
-
-	public boolean isLoaded() {
-		log.info("checking Users page is loaded");
-
-		return isVisible(cancelBtn)
-				&& isVisible(saveBtn)
-				&& isVisible(newBtn)
-				&& isEnabled(newBtn)
-				&& isVisible(editBtn)
-				&& isVisible(deleteBtn);
-	}
-
-	public boolean isCancelButtonEnabled() {
-		log.info("cancel button");
-		return isEnabled(cancelBtn);
-	}
-
-	public boolean isSaveButtonEnabled() {
-		log.info("save button");
-		return isEnabled(saveBtn);
-	}
-
-	public boolean isDeleteButtonEnabled() {
-		waitForXMillis(200);
-		log.info("delete button");
-		return isEnabled(deleteBtn);
-	}
-
-	public ConfirmationDialog clickCancel() {
-		log.info("click cancel button");
-		waitForElementToBeClickable(cancelBtn).click();
-		return new ConfirmationDialog(driver);
-	}
-
-	public ConfirmationDialog clickSave() {
-		log.info("click save button");
-		waitForElementToBeClickable(saveBtn).click();
-		return new ConfirmationDialog(driver);
-	}
-
-	public void clickDelete() {
-		log.info("click delete button");
-		waitForElementToBeClickable(deleteBtn).click();
-		waitForRowsToLoad();
-	}
-
-	public UserPopup clickNew() {
-		log.info("click new button");
-		waitForElementToBeClickable(newBtn).click();
-		return new UserPopup(driver);
-	}
-
-	public UserPopup clickEdit() {
-		log.info("click edit button");
-		waitForElementToBeClickable(editBtn).click();
-		return new UserPopup(driver);
-	}
-
-
-	public UsersGrid grid() {
-		return new UsersGrid(driver, userTableContainer);
-	}
-
-
-	public void createUser() {
-		log.info("create user");
-
-		waitForElementToBeClickable(newBtn).click();
-
-		UserPopup popup = new UserPopup(driver);
-		popup.clickOK();
-
-	}
-
-	public boolean isNewButtonEnabled() {
-		try {
-			return newBtn.isEnabled();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		return false;
-	}
+    public PaginationControls pagination = new PaginationControls(driver);
+    @FindBy(id = "searchTable")
+    private WebElement userTableContainer;
+    @FindBy(id = "cancelButton")
+    private WebElement cancelBtn;
+    @FindBy(id = "saveButton")
+    private WebElement saveBtn;
+    @FindBy(id = "newButton")
+    private WebElement newBtn;
+    @FindBy(id = "editButton")
+    private WebElement editBtn;
+    @FindBy(id = "deleteButton")
+    private WebElement deleteBtn;
+
+    public UsersPage(WebDriver driver) {
+        super(driver);
+        this.pageHeader.waitForTitleToBe("Users");
+        PageFactory.initElements(new AjaxElementLocatorFactory(driver, PROPERTIES.TIMEOUT), this);
+    }
+
+    public boolean isLoaded() {
+        log.info("checking Users page is loaded");
+
+        return isVisible(cancelBtn)
+                && isVisible(saveBtn)
+                && isVisible(newBtn)
+                && isEnabled(newBtn)
+                && isVisible(editBtn)
+                && isVisible(deleteBtn);
+    }
+
+    public boolean isCancelButtonEnabled() {
+        log.info("cancel button");
+        return isEnabled(cancelBtn);
+    }
+
+    public boolean isSaveButtonEnabled() {
+        log.info("save button");
+        return isEnabled(saveBtn);
+    }
+
+    public boolean isDeleteButtonEnabled() {
+        waitForXMillis(200);
+        log.info("delete button");
+        return isEnabled(deleteBtn);
+    }
+
+    public ConfirmationDialog clickCancel() {
+        log.info("click cancel button");
+        waitForElementToBeClickable(cancelBtn).click();
+        return new ConfirmationDialog(driver);
+    }
+
+    public ConfirmationDialog clickSave() {
+        log.info("click save button");
+        waitForElementToBeClickable(saveBtn).click();
+        return new ConfirmationDialog(driver);
+    }
+
+    public void clickDelete() {
+        log.info("click delete button");
+        waitForElementToBeClickable(deleteBtn).click();
+        waitForRowsToLoad();
+    }
+
+    public UserPopup clickNew() {
+        log.info("click new button");
+        waitForElementToBeClickable(newBtn).click();
+        return new UserPopup(driver);
+    }
+
+    public UserPopup clickEdit() {
+        log.info("click edit button");
+        waitForElementToBeClickable(editBtn).click();
+        return new UserPopup(driver);
+    }
+
+
+    public UsersGrid grid() {
+        return new UsersGrid(driver, userTableContainer);
+    }
+
+
+    public void createUser() {
+        log.info("create user");
+
+        waitForElementToBeClickable(newBtn).click();
+
+        UserPopup popup = new UserPopup(driver);
+        popup.clickOK();
+
+    }
+
+    public boolean isNewButtonEnabled() {
+        try {
+            return newBtn.isEnabled();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return false;
+    }
 
 
 }
diff --git a/smp-ui-tests/src/main/java/utils/DriverManager.java b/smp-ui-tests/src/main/java/utils/DriverManager.java
index 6dc8ac2ab066618e7fc598448ad4a699b98eca66..07371e6ebe39a9566f50a612d289322e0be3cef1 100644
--- a/smp-ui-tests/src/main/java/utils/DriverManager.java
+++ b/smp-ui-tests/src/main/java/utils/DriverManager.java
@@ -1,13 +1,9 @@
 package utils;
 
 import org.openqa.selenium.WebDriver;
-import org.openqa.selenium.firefox.FirefoxDriver;
-import org.openqa.selenium.firefox.FirefoxDriverLogLevel;
-import org.openqa.selenium.firefox.FirefoxOptions;
-import org.openqa.selenium.firefox.FirefoxProfile;
+import org.openqa.selenium.chrome.ChromeDriver;
 
 import java.util.concurrent.TimeUnit;
-import java.util.logging.Level;
 
 public class DriverManager {
 
@@ -24,24 +20,16 @@ public class DriverManager {
 //		return driver;
 //    }
 
-    public static WebDriver getDriver(){
-		System.setProperty(FirefoxDriver.SystemProperty.DRIVER_USE_MARIONETTE,"true");
-//		System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE,"C:\\temp\\logs.txt");
-		FirefoxOptions options = new FirefoxOptions();
-		FirefoxProfile profile= new FirefoxProfile();
-		profile.setPreference( "layout.css.devPixelsPerPx", "0.8" );
-		options.setProfile(profile);
-		WebDriver driver = new FirefoxDriver(options);
-		driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
-		driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
-		driver.manage().timeouts().setScriptTimeout(2, TimeUnit.SECONDS);
+    public static WebDriver getDriver() {
+        WebDriver driver = new ChromeDriver();
+        driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
+        driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);
+        driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);
 
 		driver.manage().window().maximize();
 
-		return driver;
+        return driver;
     }
 
 
-
-
 }
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 89da050ed737a5991f63c9d57b1723eb7e1d2eef..b85f2fd8f7130887a1a5a9e0e865db27d1156919 100644
--- a/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java
+++ b/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java
@@ -66,16 +66,12 @@ public class SMPMessages {
 	public static final String MSG_19 = "Domain ${BDMSL_DOMAIN} is already registered with id ${DOMAIN_ID}";
 	public static final String MSG_20 = "All changes were aborted and data restored into the present window";
 	public static final String MSG_21 = "Unable to login. SMP is not running.";
+	public static final String MSG_22 = "The user is suspended. Please try again later or contact your administrator.";
+	public static final String MSG_23 = "Configuration error: Subject must have less than 256 character!";
 
 
 	public static final String USERNAME_VALIDATION_MESSAGE = "Username is case insensitive and can only contain alphanumeric characters (letters a-zA-Z, numbers 0-9) and must have from 4 to 32 characters!";
-	public static final String PASS_POLICY_MESSAGE = "Password should follow all of these rules:\n" +
-			"- Minimum length: 8 characters\n" +
-			"- Maximum length: 32 characters\n" +
-			"- At least one letter in lowercase\n" +
-			"- At least one letter in uppercase\n" +
-			"- At least one digit\n" +
-			"- At least one special character";
+	public static final String PASS_POLICY_MESSAGE = "Minimum length: 16 characters;Maximum length: 32 characters;At least one letter in lowercase;At least one letter in uppercase;At least one digit;At least one special character";
 	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";
 
diff --git a/smp-ui-tests/src/test/java/ui/BaseTest.java b/smp-ui-tests/src/test/java/ui/BaseTest.java
index b5ec6b4c3f0d9a08f4ac5749d0f6bbb3e04ebe81..701012ff3bb609db7e71079253e10640308d43d8 100644
--- a/smp-ui-tests/src/test/java/ui/BaseTest.java
+++ b/smp-ui-tests/src/test/java/ui/BaseTest.java
@@ -21,184 +21,173 @@ import java.util.List;
 @Listeners({ExcelTestReporter.class, TestProgressReporter.class})
 public class BaseTest {
 
-	static int methodCount = 1;
+    static int methodCount = 1;
 
-	static WebDriver driver;
-	protected Logger logger = Logger.getLogger(this.getClass());
-	static TestDataProvider testDataProvider = new TestDataProvider();
+    static WebDriver driver;
+    static TestDataProvider testDataProvider = new TestDataProvider();
+    static ArrayList<String> createdDomains = new ArrayList<>();
+    static ArrayList<String> createdUsers = new ArrayList<>();
+    static ArrayList<String> createdServiceGroups = new ArrayList<>();
+    protected Logger logger = Logger.getLogger(this.getClass());
 
-	static ArrayList<String> createdDomains = new ArrayList<>();
-	static ArrayList<String> createdUsers = new ArrayList<>();
-	static ArrayList<String> createdServiceGroups = new ArrayList<>();
-
-	@BeforeSuite(alwaysRun = true)
+    @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*/
-	public void beforeSuite() {
-		logger.info("Creating necessary data !!!!");
-		createDomains();
-		createUsers();
-		createSGs();
-
-//		logger.info("Starting this puppy!!!!");
-//		driver = DriverManager.getDriver();
-//		driver.get(PROPERTIES.UI_BASE_URL);
-	}
-
-
-	@AfterSuite(alwaysRun = true)
-	/*After the test suite is done we close the browser*/
-	public void afterSuite() {
-		logger.info("Deleting created data!!!");
-
-		deleteTestData();
-
-		logger.info("Quitting!!!! Buh bye!!!");
-		try {
-			if(null!=driver){
-				driver.quit();
-			}
-		} catch (Exception e) {
-			logger.warn("Closing the driver failed !!!!");
-			e.printStackTrace();
-		}
-	}
-
-	@AfterClass(alwaysRun = true)
-	public void afterClass() {
-		if(null!=driver){
-			driver.quit();
-		}
-//		driver.get(PROPERTIES.UI_BASE_URL);
-//		SMPPage page = new SMPPage(driver);
-//		page.refreshPage();
-//
-//		if(page.pageHeader.sandwichMenu.isLoggedIn()){
-//			logger.info("Logout!!");
-//			page.pageHeader.sandwichMenu.logout();
-//		}
-	}
-
-	@BeforeClass(alwaysRun = true)
-	public void beforeClass() {
-		driver = DriverManager.getDriver();
-		driver.get(PROPERTIES.UI_BASE_URL);
-	}
-
-	@BeforeMethod(alwaysRun = true)
-	protected void logSeparator(Method method) throws Exception {
-
-		logger.info("--------------------------- Running test number: " + methodCount);
-		logger.info("--------------------------- Running test method: " + method.getDeclaringClass().getSimpleName() + "." + method.getName());
-		methodCount++;
-	}
-
-
-	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);
-			} else {
-				logger.warn("Test data creation: Domain creation failed for " + generated);
-				System.exit(-1);
-			}
-		}
-	}
-
-	private void createUsers() {
-		String[] roles = {"SMP_ADMIN", "SERVICE_GROUP_ADMIN", "SYSTEM_ADMIN"};
-		for (int i = 0; i < 6; i++) {
-			String generated = Generator.randomAlphaNumeric(10);
-			String role = roles[i % roles.length];
-			boolean created = SMPRestClient.createUser(generated, role);
-			if (created) {
-				createdUsers.add(generated);
-			} else {
-				logger.warn("Test data creation: User creation failed for " + generated);
-				System.exit(-1);
-			}
-		}
-	}
-
-	private void createSGs() {
-		for (int i = 0; i < 5; i++) {
-			String generated = Generator.randomAlphaNumeric(10);
-			String generatedHyphen = generated.substring(0,3)+"-"+generated.substring(3,6)+"-"+generated.substring(6,9);
-			List<String> users = Arrays.asList(createdUsers.get(0));
-			List<String> domains = Arrays.asList(createdDomains.get(0));
-			boolean created = SMPRestClient.createServiceGroup(generated, generatedHyphen, users, domains);
-			if (created) {
-				createdServiceGroups.add(generated);
-			} else {
-				logger.warn("Test data creation: SG creation failed for " + generated);
-				System.exit(-1);
-			}
-		}
-	}
-
-	private void deleteTestData() {
-		for (String createdServiceGroup : createdServiceGroups) {
-			try {
-				SMPRestClient.deleteSG(createdServiceGroup);
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-		}
-		for (String createdUser : createdUsers) {
-			try {
-				SMPRestClient.deleteUser(createdUser);
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-		}
-		for (String createdDomain : createdDomains) {
-			try {
-				SMPRestClient.deleteDomain(createdDomain);
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-		}
-	}
-
-
-	protected void genericLogoutProcedure() {
-		logger.info("executing the generic logout procedure");
-
-		SMPPage page = new SMPPage(driver);
-		page.refreshPage();
-
-		try {
-			if (page.pageHeader.sandwichMenu.isLoggedIn()) {
-				logger.info("Logout!!");
-				page.pageHeader.sandwichMenu.logout();
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		driver.manage().deleteAllCookies();
-		((JavascriptExecutor) driver).executeScript("localStorage.clear();");
-
-		page.refreshPage();
-		page.waitForXMillis(100);
-	}
-
-	protected SMPPage genericLoginProcedure(String role) {
-		SMPPage page = new SMPPage(driver);
-
-		genericLogoutProcedure();
-
-		if (!page.pageHeader.sandwichMenu.isLoggedIn()) {
-			logger.info("Login!!");
-			page.pageHeader.goToLogin().login(role);
-		}
-
-		page.waitForRowsToLoad();
-		return page;
-	}
+    public void beforeSuite() {
+        logger.info("Creating necessary data !!!!");
+        createDomains();
+        createUsers();
+        createSGs();
+    }
+
+
+    @AfterSuite(alwaysRun = true)
+    /*After the test suite is done we close the browser*/
+    public void afterSuite() {
+        logger.info("Deleting created data!!!");
+
+        deleteTestData();
+
+        logger.info("Quitting!!!! Buh bye!!!");
+        try {
+            if (null != driver) {
+                driver.quit();
+            }
+        } catch (Exception e) {
+            logger.warn("Closing the driver failed !!!!");
+            e.printStackTrace();
+        }
+    }
+
+    @AfterClass(alwaysRun = true)
+    public void afterClass() {
+        if (null != driver) {
+            driver.quit();
+        }
+    }
+
+    @BeforeClass(alwaysRun = true)
+    public void beforeClass() {
+        logger.info("beforeClass entry");
+        driver = DriverManager.getDriver();
+        driver.get(PROPERTIES.UI_BASE_URL);
+        logger.info("beforeClass exit");
+    }
+
+    @BeforeMethod(alwaysRun = true)
+    protected void logSeparator(Method method) throws Exception {
+
+        logger.info("--------------------------- Running test number: " + methodCount);
+        logger.info("--------------------------- Running test method: " + method.getDeclaringClass().getSimpleName() + "." + method.getName());
+        methodCount++;
+    }
+
+
+    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);
+            } else {
+                logger.warn("Test data creation: Domain creation failed for " + generated);
+                System.exit(-1);
+            }
+        }
+    }
+
+    private void createUsers() {
+        String[] roles = {"SMP_ADMIN", "SERVICE_GROUP_ADMIN", "SYSTEM_ADMIN"};
+        for (int i = 0; i < 6; i++) {
+            String generated = Generator.randomAlphaNumeric(10);
+            String role = roles[i % roles.length];
+            boolean created = SMPRestClient.createUser(generated, role);
+            if (created) {
+                createdUsers.add(generated);
+            } else {
+                logger.warn("Test data creation: User creation failed for " + generated);
+                System.exit(-1);
+            }
+        }
+    }
+
+    private void createSGs() {
+        for (int i = 0; i < 5; i++) {
+            String generated = Generator.randomAlphaNumeric(10);
+            String generatedHyphen = generated.substring(0, 3) + "-" + generated.substring(3, 6) + "-" + generated.substring(6, 9);
+            List<String> users = Arrays.asList(createdUsers.get(0));
+            List<String> domains = Arrays.asList(createdDomains.get(0));
+            boolean created = SMPRestClient.createServiceGroup(generated, generatedHyphen, users, domains);
+            if (created) {
+                createdServiceGroups.add(generated);
+            } else {
+                logger.warn("Test data creation: SG creation failed for " + generated);
+                System.exit(-1);
+            }
+        }
+    }
+
+    private void deleteTestData() {
+        for (String createdServiceGroup : createdServiceGroups) {
+            try {
+                SMPRestClient.deleteSG(createdServiceGroup);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        for (String createdUser : createdUsers) {
+            try {
+                SMPRestClient.deleteUser(createdUser);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        for (String createdDomain : createdDomains) {
+            try {
+                SMPRestClient.deleteDomain(createdDomain);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+
+    protected void genericLogoutProcedure() {
+        logger.info("executing the generic logout procedure");
+
+        SMPPage page = new SMPPage(driver);
+        page.refreshPage();
+
+        try {
+            if (page.pageHeader.sandwichMenu.isLoggedIn()) {
+                logger.info("Logout!!");
+                page.pageHeader.sandwichMenu.logout();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        driver.manage().deleteAllCookies();
+        ((JavascriptExecutor) driver).executeScript("localStorage.clear();");
+
+        page.refreshPage();
+        page.waitForXMillis(100);
+    }
+
+    protected SMPPage genericLoginProcedure(String role) {
+        SMPPage page = new SMPPage(driver);
+
+        genericLogoutProcedure();
+
+        if (!page.pageHeader.sandwichMenu.isLoggedIn()) {
+            logger.info("Login!!");
+            page.pageHeader.goToLogin().login(role);
+        }
+
+        page.waitForRowsToLoad();
+        return page;
+    }
 
 }
 
diff --git a/smp-ui-tests/src/test/java/ui/LoginPgTest.java b/smp-ui-tests/src/test/java/ui/LoginPgTest.java
index 9bcf4004da84b36444f5377d9df786e9143376db..732a86327d8c6c4bb8b9fa3c3e52b0dab15fa707 100644
--- a/smp-ui-tests/src/test/java/ui/LoginPgTest.java
+++ b/smp-ui-tests/src/test/java/ui/LoginPgTest.java
@@ -6,6 +6,7 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.Test;
 import org.testng.asserts.SoftAssert;
 import pages.components.messageArea.AlertMessage;
+import pages.password.PasswordChangepopup;
 import pages.service_groups.search.SearchPage;
 import pages.components.baseComponents.SMPPage;
 import pages.login.LoginPage;
@@ -217,5 +218,66 @@ public class LoginPgTest extends BaseTest {
 		soft.assertAll();
 	}
 
+	@Test(description = "LGN-100")
+	public void loggedUserPasswordDialogView()
+	{
+		SoftAssert soft = new SoftAssert();
+
+
+		String username = Generator.randomAlphaNumeric(10);
+		SMPRestClient.createUser(username, "SYSTEM_ADMIN");
+		logger.info("created user " + username);
+
+		SMPPage page = new SMPPage(driver);
+		logger.info("Going to login page");
+		page.pageHeader.goToLogin();
 
-}
+		logger.info("trying to login with " + username);
+		LoginPage loginPage = new LoginPage(driver);
+		SearchPage searchPage = loginPage.login(username, "QW!@qw12");
+
+		soft.assertTrue(searchPage.pageHeader.sandwichMenu.isLoggedIn(), "User is not logged in");
+		soft.assertTrue(searchPage.isLoaded(), "Search page is not loaded");
+
+		PasswordChangepopup passPopup = searchPage.pageHeader.sandwichMenu.clickChangePasswordOption();
+		soft.assertTrue(passPopup.isCurrentPasswordInputEnable(),"Current password input is not enable in the password dialog for logged user");
+		soft.assertTrue(passPopup.isNewPasswordInputEnable(),"New password input is not enable in the password dialog for logged user");
+		soft.assertTrue(passPopup.isConfirmPasswordInputEnable(),"Confirm password input is not enable in the password dialog for logged user");
+
+		searchPage = passPopup.clickClosePasswordDialog();
+
+		soft.assertAll();
+
+	}
+
+
+	@Test(description = "LGN-100")
+	public void passwordChangeForLoggedUser()
+	{
+		SoftAssert soft = new SoftAssert();
+		String username = Generator.randomAlphaNumeric(10);
+		String validPass = "Aabcdefghijklm1@";
+		SMPRestClient.createUser(username,"SYSTEM_ADMIN");
+		logger.info("created user " + username);
+		SMPPage page = new SMPPage(driver);
+		logger.info("Going to login page");
+		page.pageHeader.goToLogin();
+		LoginPage loginPage = new LoginPage(driver);
+		SearchPage searchPage = loginPage.login(username, "QW!@qw12");
+
+		soft.assertTrue(searchPage.pageHeader.sandwichMenu.isLoggedIn(), "User is logged in");
+		soft.assertTrue(searchPage.isLoaded(), "Search page is loaded");
+
+		PasswordChangepopup passDialog = searchPage.pageHeader.sandwichMenu.clickChangePasswordOption();
+		passDialog.fillDataForLoggedUser("QW!@qw12",validPass,validPass);
+
+		passDialog.clickChangedPassword();
+		/*SearchPage page = passDialog.clickCloseAfterChangedPassForLoggedUser();
+		soft.assertEquals(page.getTitle(),"Search");*/
+		//passDialog.clickOK();
+		//soft.assertTrue(usersPage.grid().isUserListed(username), "User present in the page");
+
+		soft.assertAll();
+
+	}
+}
\ No newline at end of file
diff --git a/smp-ui-tests/src/test/java/ui/PropertiesPgTest.java b/smp-ui-tests/src/test/java/ui/PropertiesPgTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..848378fa1745b54faf46b80cfd5ad3e021a7c5f5
--- /dev/null
+++ b/smp-ui-tests/src/test/java/ui/PropertiesPgTest.java
@@ -0,0 +1,115 @@
+package ui;
+
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+import org.testng.asserts.SoftAssert;
+import pages.components.ConfirmationDialog;
+import pages.components.baseComponents.SMPPage;
+import pages.components.messageArea.AlertMessage;
+import pages.domain.DomainRow;
+import pages.login.LoginPage;
+import pages.properties.PropertiesPage;
+import pages.properties.PropertyPopup;
+import pages.properties.PropertyRowInfo;
+import pages.service_groups.edit.EditPage;
+import pages.service_groups.edit.ServiceGroupPopup;
+import pages.service_groups.search.SearchPage;
+import utils.Generator;
+import utils.enums.SMPMessages;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class PropertiesPgTest extends BaseTest{
+    @AfterMethod
+    public void logoutAndReset(){
+        genericLogoutProcedure();
+    }
+
+
+    @BeforeMethod
+    public void loginAndGoToDomainPage(){
+
+        SMPPage page = genericLoginProcedure("SYS_ADMIN");
+
+        logger.info("Going to Property page");
+        page.sidebar.goToPage(PropertiesPage.class);
+    }
+
+    @Test(description = "PROP-0")
+    public void verifyParticipantschemeMandatoryProperty(){
+
+        SoftAssert soft = new SoftAssert();
+        String property = "identifiersBehaviour.scheme.mandatory";
+
+        PropertiesPage propertiesPage = new PropertiesPage(driver);
+        propertiesPage.propertySearch(property);
+        soft.assertTrue(propertiesPage.grid().rowContainPropertyName(property),"The row does not contain the searching property");
+        PropertyRowInfo newRow0 = propertiesPage.grid().getRows().get(0);
+        System.out.println("newRow0.getPropertyvalue() "+newRow0.getPropertyvalue());
+        if(newRow0.getPropertyvalue().equals("true"))
+        {
+           propertiesPage.grid().selectRow(0);
+           PropertyPopup popup = propertiesPage.clickEdit();
+           propertiesPage = popup.disableCheckboxOfProperty();
+            soft.assertTrue(propertiesPage.isSaveButtonEnabled(),"Save button is disbled");
+            propertiesPage.clickSave().confirm();
+            soft.assertTrue(propertiesPage.alertArea.getAlertMessage().isError(), "Message listed is success");
+            soft.assertTrue(propertiesPage.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message is not listed is as expected");
+       }
+
+        propertiesPage.pageHeader.sandwichMenu.logout();
+        SearchPage page = new SearchPage(driver);
+        logger.info("Going to login page");
+        page.pageHeader.goToLogin();
+        SMPPage smpPage= genericLoginProcedure("SMP_ADMIN");
+        smpPage.sidebar.goToPage(EditPage.class);
+        EditPage editPage = new EditPage(driver);
+        ServiceGroupPopup servicePopup = editPage.clickNew();
+        soft.assertTrue(servicePopup.isParticipantIdentifierInputEnabled(), "Participant Identifier field is disabled");
+        soft.assertTrue(servicePopup.isParticipantSchemeInputEnabled(), "Participant Scheme field is disabled");
+        soft.assertTrue(servicePopup.isOwnersPanelEnabled(), "Owners panel is enabled");
+        soft.assertTrue(servicePopup.isDomainsPanelEnabled(), "Domain panel is enabled");
+        servicePopup.fillParticipantIdentifier("sonbrat1223");
+        servicePopup.chooseFirstOwner();
+        servicePopup.chooseFirstDomain();
+
+        soft.assertTrue(servicePopup.isOKButtonEnable(),"Ok button is not enabled after creating servicegroup without scheme");
+        soft.assertTrue(servicePopup.isCancelButtonEnable(),"cancel button is not enabled after creating servicegroup without scheme");
+
+        servicePopup.clickOK();
+
+        soft.assertTrue(editPage.isSaveButtonEnabled(),"Save button is not enable after cration of servicegroup without scheme");
+        soft.assertTrue(editPage.isCancelButtonEnabled(),"Cancel button is not enable after cration of servicegroup without scheme");
+        editPage.clickSave().confirm();;
+
+        soft.assertTrue(editPage.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message is not listed is as expected");
+
+        soft.assertAll();
+    }
+
+    @Test(description = "PROP-10")
+    public void smpAlertPasswordExpiredMailSubjectAllowString()
+    {
+        SoftAssert soft = new SoftAssert();
+        String property = "smp.alert.password.expired.mail.subject";
+        String string = Generator.randomAlphaNumeric(10);
+
+        PropertiesPage propertiesPage = new PropertiesPage(driver);
+        propertiesPage.propertySearch(property);
+        soft.assertTrue(propertiesPage.grid().rowContainPropertyName(property),"The row does not contain the searching property");
+        int index = 0;
+        propertiesPage.grid().selectRow(index);
+        PropertyPopup popup = propertiesPage.clickEdit();
+        String sentence = " ";
+        for(int i=0;i<26;i++) {
+            sentence = sentence + string;
+        }
+        popup.editInputField(sentence);
+        popup.clickOK();
+        soft.assertTrue(propertiesPage.getErrorMessage().equalsIgnoreCase(SMPMessages.MSG_23),"the errors message is not showing");
+        popup.clickCancel();
+        soft.assertAll();
+    }
+}
diff --git a/smp-ui-tests/src/test/java/ui/SearchPgTest.java b/smp-ui-tests/src/test/java/ui/SearchPgTest.java
index 71fe2caf90e11ea9568f367a015c4377860ba62d..cb709ae2ddeed533dc1da4dcc25bd1e23c6c8796 100644
--- a/smp-ui-tests/src/test/java/ui/SearchPgTest.java
+++ b/smp-ui-tests/src/test/java/ui/SearchPgTest.java
@@ -1,6 +1,5 @@
 package ui;
 
-import org.testng.SkipException;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.Ignore;
 import org.testng.annotations.Test;
@@ -22,372 +21,371 @@ import java.util.Set;
 
 public class SearchPgTest extends BaseTest {
 
-	@AfterMethod
-	public void resetFilters() {
-		SMPPage page = new SMPPage(driver);
-		page.refreshPage();
-		page.waitForXMillis(500);
+    @AfterMethod
+    public void resetFilters() {
+        SMPPage page = new SMPPage(driver);
+        page.refreshPage();
+        page.waitForXMillis(500);
 
-	}
+    }
 
-	@Test(description = "SRCH-0")
-	public void searchPgInitialState() {
-		SoftAssert soft = new SoftAssert();
+    @Test(description = "SRCH-0")
+    public void searchPgInitialState() {
+        SoftAssert soft = new SoftAssert();
 
-		SearchPage page = new SearchPage(driver);
-		soft.assertTrue(page.isLoaded());
-		soft.assertTrue(page.filters.isSearchButtonVisible(), "Search button is not visible");
-		soft.assertTrue(page.filters.isSearchButtonEnable(), "Search button is not enable");
-		soft.assertTrue(page.filters.getParticipantIdentifierInputValue().isEmpty());
-		soft.assertTrue(page.filters.getParticipantSchemeInputValue().isEmpty());
-		soft.assertEquals(page.filters.domainSelect.getSelectedValue(), "All Domains");
+        SearchPage page = new SearchPage(driver);
+        soft.assertTrue(page.isLoaded());
+        soft.assertTrue(page.filters.isSearchButtonVisible(), "Search button is not visible");
+        soft.assertTrue(page.filters.isSearchButtonEnable(), "Search button is not enable");
+        soft.assertTrue(page.filters.getParticipantIdentifierInputValue().isEmpty());
+        soft.assertTrue(page.filters.getParticipantSchemeInputValue().isEmpty());
+        soft.assertEquals(page.filters.domainSelect.getSelectedValue(), "All Domains");
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@Test(description = "SRCH-10")
-	public void domainSelectContent() {
-		SoftAssert soft = new SoftAssert();
-		SearchPage page = new SearchPage(driver);
-		soft.assertTrue(page.isLoaded());
+    @Test(description = "SRCH-10")
+    public void domainSelectContent() {
+        SoftAssert soft = new SoftAssert();
+        SearchPage page = new SearchPage(driver);
+        soft.assertTrue(page.isLoaded());
 
-		List<String> uiDomains = page.filters.domainSelect.getOptionTexts();
-		List<String> restDomains = SMPRestClient.getDomainAndSubdomains();
+        List<String> uiDomains = page.filters.domainSelect.getOptionTexts();
+        List<String> restDomains = SMPRestClient.getDomainAndSubdomains();
 
-		for (String restDomain : restDomains) {
-			boolean found = false;
-			for (String uiDomain : uiDomains) {
-				if (uiDomain.equalsIgnoreCase(restDomain)) {
-					found = true;
-				}
-			}
-			soft.assertTrue(found, "Domain was found in domain dropdown " + restDomain);
-		}
+        for (String restDomain : restDomains) {
+            boolean found = false;
+            for (String uiDomain : uiDomains) {
+                if (uiDomain.equalsIgnoreCase(restDomain)) {
+                    found = true;
+                }
+            }
+            soft.assertTrue(found, "Domain was found in domain dropdown " + restDomain);
+        }
 
-		soft.assertAll();
+        soft.assertAll();
 
-	}
+    }
 
-	@Test(description = "SRCH-20")
-	public void searchGridInitialState() {
-		SoftAssert soft = new SoftAssert();
+    @Test(description = "SRCH-20")
+    public void searchGridInitialState() {
+        SoftAssert soft = new SoftAssert();
 
-		SearchPage page = new SearchPage(driver);
-		soft.assertTrue(page.isLoaded());
+        SearchPage page = new SearchPage(driver);
+        soft.assertTrue(page.isLoaded());
 
-		List<String> headers = page.getServiceGroupGrid().getHeaders();
-		soft.assertTrue(headers.contains("Participant identifier"));
-		soft.assertTrue(headers.contains("Participant scheme"));
-		soft.assertTrue(headers.contains("OASIS ServiceGroup URL"));
-		soft.assertTrue(headers.contains("Metadata size"));
+        List<String> headers = page.getServiceGroupGrid().getHeaders();
+        soft.assertTrue(headers.contains("Participant identifier"));
+        soft.assertTrue(headers.contains("Participant scheme"));
+        soft.assertTrue(headers.contains("OASIS ServiceGroup URL"));
+        soft.assertTrue(headers.contains("Metadata size"));
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@Test(description = "SRCH-30")
-	public void searchFilterResults() {
-		SoftAssert soft = new SoftAssert();
+    @Test(description = "SRCH-30")
+    public void searchFilterResults() {
+        SoftAssert soft = new SoftAssert();
 
-		SearchPage page = new SearchPage(driver);
-		soft.assertTrue(page.isLoaded());
+        SearchPage page = new SearchPage(driver);
+        soft.assertTrue(page.isLoaded());
 
-		ServiceGroupRow row0 = page.getServiceGroupGrid().getRows().get(0);
-		String pScheme = row0.getParticipantScheme();
-		String pIdentifier = row0.getParticipantIdentifier();
+        ServiceGroupRow row0 = page.getServiceGroupGrid().getRows().get(0);
+        String pScheme = row0.getParticipantScheme();
+        String pIdentifier = row0.getParticipantIdentifier();
 
 //		looking for exact match
-		page.filters.filter(pIdentifier, pScheme, "");
+        page.filters.filter(pIdentifier, pScheme, "");
 
-		List<ServiceGroupRow> rows = page.getServiceGroupGrid().getRows();
+        List<ServiceGroupRow> rows = page.getServiceGroupGrid().getRows();
 
-		for (ServiceGroupRow row : rows) {
-			soft.assertTrue(row.getParticipantIdentifier().contains(pIdentifier));
-			soft.assertTrue(row.getParticipantScheme().contains(pScheme));
-		}
+        for (ServiceGroupRow row : rows) {
+            soft.assertTrue(row.getParticipantIdentifier().contains(pIdentifier));
+            soft.assertTrue(row.getParticipantScheme().contains(pScheme));
+        }
 
 //		Search for substring
-		page.filters.filter(pIdentifier.substring(2), pScheme.substring(2), "");
-		rows = page.getServiceGroupGrid().getRows();
+        page.filters.filter(pIdentifier.substring(2), pScheme.substring(2), "");
+        rows = page.getServiceGroupGrid().getRows();
 
-		for (ServiceGroupRow row : rows) {
+        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));
-		}
+            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));
+        }
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@Test(description = "SRCH-40")
-	public void openURLLink() {
-		SoftAssert soft = new SoftAssert();
+    @Test(description = "SRCH-40")
+    public void openURLLink() {
+        SoftAssert soft = new SoftAssert();
 
-		SearchPage page = new SearchPage(driver);
-		soft.assertTrue(page.isLoaded());
+        SearchPage page = new SearchPage(driver);
+        soft.assertTrue(page.isLoaded());
 
-		ServiceGroupRow row0 = page.getServiceGroupGrid().getRows().get(0);
-		String listedURL = row0.getServiceGroupURL();
-		String pScheme = row0.getParticipantScheme();
-		String pIdentifier = row0.getParticipantIdentifier();
+        ServiceGroupRow row0 = page.getServiceGroupGrid().getRows().get(0);
+        String listedURL = row0.getServiceGroupURL();
+        String pScheme = row0.getParticipantScheme();
+        String pIdentifier = row0.getParticipantIdentifier();
 
 //		verify proper URL format
-		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");
-		} catch (UnsupportedEncodingException e) {
-			e.printStackTrace();
-		}
+        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");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
 
-		ServiceGroup serviceGroup = SMPRestClient.getServiceGroup(listedURL);
+        ServiceGroup serviceGroup = SMPRestClient.getServiceGroup(listedURL);
 
-		soft.assertTrue(row0.getMetadataSize() == serviceGroup.getServiceMetadataReferenceCollection().size(),
-				"Number of listed MetadataReferences in XML matches UI");
+        soft.assertTrue(row0.getMetadataSize() == serviceGroup.getServiceMetadataReferenceCollection().size(),
+                "Number of listed MetadataReferences in XML matches UI");
 
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
 
-	@Test(description = "SRCH-50")
-	@Ignore
-	public void expandServiceGroupCheckMetadata() {
-		SoftAssert soft = new SoftAssert();
+    @Test(description = "SRCH-50")
+    @Ignore
+    public void expandServiceGroupCheckMetadata() {
+        SoftAssert soft = new SoftAssert();
 
-		SearchPage page = new SearchPage(driver);
-		soft.assertTrue(page.isLoaded());
+        SearchPage page = new SearchPage(driver);
+        soft.assertTrue(page.isLoaded());
 
-		ServiceGroupRow row0 = page.getServiceGroupGrid().getRows().get(0);
-		String listedURL = row0.getServiceGroupURL();
-		String pScheme = row0.getParticipantScheme();
-		String pIdentifier = row0.getParticipantIdentifier();
+        ServiceGroupRow row0 = page.getServiceGroupGrid().getRows().get(0);
+        String listedURL = row0.getServiceGroupURL();
+        String pScheme = row0.getParticipantScheme();
+        String pIdentifier = row0.getParticipantIdentifier();
 
 //		verify proper URL format
-		ServiceGroup serviceGroup = SMPRestClient.getServiceGroup(listedURL);
+        ServiceGroup serviceGroup = SMPRestClient.getServiceGroup(listedURL);
 
-		MetadataGrid metadataGrid = row0.expandMetadata();
+        MetadataGrid metadataGrid = row0.expandMetadata();
 
-		List<MetadataRow> metadataRows = metadataGrid.getMetadataRows();
+        List<MetadataRow> metadataRows = metadataGrid.getMetadataRows();
 
-		soft.assertTrue(row0.getMetadataSize() == metadataRows.size(), "Metadata size field compared with the size of the list containing the metadata");
+        soft.assertTrue(row0.getMetadataSize() == metadataRows.size(), "Metadata size field compared with the size of the list containing the metadata");
 
-		for (MetadataRow metadataRow : metadataRows) {
-			String docScheme = metadataRow.getDocumentIdentifierScheme();
-			String docId = metadataRow.getDocumentIdentifier();
-			String url = metadataRow.getURL();
+        for (MetadataRow metadataRow : metadataRows) {
+            String docScheme = metadataRow.getDocumentIdentifierScheme();
+            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);
+            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);
 
 
-		}
+        }
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@Test(description = "SRCH-60")
-	public void collapseMetadata() {
-		SoftAssert soft = new SoftAssert();
+    @Test(description = "SRCH-60")
+    public void collapseMetadata() {
+        SoftAssert soft = new SoftAssert();
 
-		SearchPage page = new SearchPage(driver);
-		soft.assertTrue(page.isLoaded());
+        SearchPage page = new SearchPage(driver);
+        soft.assertTrue(page.isLoaded());
 
-		ServiceGroupRow row0 = null;
-		List<ServiceGroupRow> rows = page.getServiceGroupGrid().getRows();
-		for (int i = 0; i < rows.size(); i++) {
-			if (rows.get(i).getMetadataSize() > 0) {
-				row0 = rows.get(i);
-			}
-		}
+        ServiceGroupRow row0 = null;
+        List<ServiceGroupRow> rows = page.getServiceGroupGrid().getRows();
+        for (int i = 0; i < rows.size(); i++) {
+            if (rows.get(i).getMetadataSize() > 0) {
+                row0 = rows.get(i);
+            }
+        }
 
-		if (null == row0) {
-			row0 = rows.get(0);
-			SMPRestClient.createMetadata(row0.getParticipantIdentifier());
-			page.refreshPage();
-			logger.info("Created Metadata for row 0");
-			row0 = page.getServiceGroupGrid().getRows().get(0);
-		}
+        if (null == row0) {
+            row0 = rows.get(0);
+            SMPRestClient.createMetadata(row0.getParticipantIdentifier());
+            page.refreshPage();
+            logger.info("Created Metadata for row 0");
+            row0 = page.getServiceGroupGrid().getRows().get(0);
+        }
 
 
-		soft.assertTrue(row0.verifyMetadataExpandButton(), "Initially the row has expanding symbol on it");
-		row0.expandMetadata();
+        soft.assertTrue(row0.verifyMetadataExpandButton(), "Initially the row has expanding symbol on it");
+        row0.expandMetadata();
 
-		soft.assertTrue(row0.verifyMetadataCollapseButton(), "Row has collapsing symbol on it after first click");
+        soft.assertTrue(row0.verifyMetadataCollapseButton(), "Row has collapsing symbol on it after first click");
 
-		row0.collapseMetadata();
-		soft.assertTrue(row0.verifyMetadataExpandButton(), "Row has expanding symbol on it after collapse");
-		soft.assertFalse(row0.isMetadataExpanded(), "Metadata table is not present no more");
+        row0.collapseMetadata();
+        soft.assertTrue(row0.verifyMetadataExpandButton(), "Row has expanding symbol on it after collapse");
+        soft.assertFalse(row0.isMetadataExpanded(), "Metadata table is not present no more");
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@Test(description = "SRCH-70")
-	public void verifyOpenMetadataURL() {
-		SoftAssert soft = new SoftAssert();
+    @Test(description = "SRCH-70")
+    public void verifyOpenMetadataURL() {
+        SoftAssert soft = new SoftAssert();
 
-		SearchPage page = new SearchPage(driver);
-		soft.assertTrue(page.isLoaded());
+        SearchPage page = new SearchPage(driver);
+        soft.assertTrue(page.isLoaded());
 
-		ServiceGroupRow row0 = null;
-		List<ServiceGroupRow> rows = page.getServiceGroupGrid().getRows();
-		for (int i = 0; i < rows.size(); i++) {
-			if (rows.get(i).getMetadataSize() > 0) {
-				row0 = rows.get(i);
-			}
-		}
+        ServiceGroupRow row0 = null;
+        List<ServiceGroupRow> rows = page.getServiceGroupGrid().getRows();
+        for (int i = 0; i < rows.size(); i++) {
+            if (rows.get(i).getMetadataSize() > 0) {
+                row0 = rows.get(i);
+            }
+        }
 
-		if (null == row0) {
-			row0 = rows.get(0);
-			SMPRestClient.createMetadata(row0.getParticipantIdentifier());
-			page.refreshPage();
-			logger.info("Created Metadata for row 0");
-			row0 = page.getServiceGroupGrid().getRows().get(0);
-		}
+        if (null == row0) {
+            row0 = rows.get(0);
+            SMPRestClient.createMetadata(row0.getParticipantIdentifier());
+            page.refreshPage();
+            logger.info("Created Metadata for row 0");
+            row0 = page.getServiceGroupGrid().getRows().get(0);
+        }
 
-		String listedURL = row0.getServiceGroupURL();
-		String pScheme = row0.getParticipantScheme();
-		String pIdentifier = row0.getParticipantIdentifier();
+        String listedURL = row0.getServiceGroupURL();
+        String pScheme = row0.getParticipantScheme();
+        String pIdentifier = row0.getParticipantIdentifier();
 
 //		verify proper URL format
-		ServiceGroup serviceGroup = SMPRestClient.getServiceGroup(listedURL);
+        ServiceGroup serviceGroup = SMPRestClient.getServiceGroup(listedURL);
 
-		MetadataGrid metadataGrid = row0.expandMetadata();
+        MetadataGrid metadataGrid = row0.expandMetadata();
 
-		List<MetadataRow> metadataRows = metadataGrid.getMetadataRows();
+        List<MetadataRow> metadataRows = metadataGrid.getMetadataRows();
 
-		soft.assertTrue(row0.getMetadataSize() == metadataRows.size(), "Metadata size field compared with the size of the list containing the metadata");
+        soft.assertTrue(row0.getMetadataSize() == metadataRows.size(), "Metadata size field compared with the size of the list containing the metadata");
 
-		for (MetadataRow metadataRow : metadataRows) {
-			String docScheme = metadataRow.getDocumentIdentifierScheme();
-			String docId = metadataRow.getDocumentIdentifier();
-			String url = null;
-			try {
-				url = URLDecoder.decode(metadataRow.getURL(), "UTF-8");
-			} catch (UnsupportedEncodingException e) {
-				e.printStackTrace();
-			}
+        for (MetadataRow metadataRow : metadataRows) {
+            String docScheme = metadataRow.getDocumentIdentifierScheme();
+            String docId = metadataRow.getDocumentIdentifier();
+            String url = null;
+            try {
+                url = URLDecoder.decode(metadataRow.getURL(), "UTF-8");
+            } catch (UnsupportedEncodingException e) {
+                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();
+            String mainWindow = driver.getWindowHandle();
 
-			metadataRow.clickURL();
-			page.waitForNumberOfWindowsToBe(2);
-			Set<String> handleSet = driver.getWindowHandles();
-			String[] handles = handleSet.toArray(new String[handleSet.size()]);
+            metadataRow.clickURL();
+            page.waitForNumberOfWindowsToBe(2);
+            Set<String> handleSet = driver.getWindowHandles();
+            String[] handles = handleSet.toArray(new String[handleSet.size()]);
 
-			soft.assertTrue(handles.length == 2);
+            soft.assertTrue(handles.length == 2);
 
-			driver.switchTo().window(handles[1]);
-			driver.close();
-			driver.switchTo().window(handles[0]);
+            driver.switchTo().window(handles[1]);
+            driver.close();
+            driver.switchTo().window(handles[0]);
 
-		}
+        }
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@Test(description = "SRCH-80")
-	public void filterByDifferentDomains() {
-		SoftAssert soft = new SoftAssert();
+    @Test(description = "SRCH-80")
+    public void filterByDifferentDomains() {
+        SoftAssert soft = new SoftAssert();
 
-		String participantID = Generator.randomAlphaNumeric(5);
-		String tmp = Generator.randomAlphaNumeric(3).toLowerCase();
-		String participantScheme = String.format("%s-%s-%s", tmp, tmp, tmp);
+        String participantID = Generator.randomAlphaNumeric(5);
+        String tmp = Generator.randomAlphaNumeric(3).toLowerCase();
+        String participantScheme = String.format("%s-%s-%s", tmp, tmp, tmp);
 
-		List<String> domains = Arrays.asList(createdDomains.get(0), createdDomains.get(1));
-		List<String> owners = Arrays.asList(createdUsers.get(0));
+        List<String> domains = Arrays.asList(createdDomains.get(0), createdDomains.get(1));
+        List<String> owners = Arrays.asList(createdUsers.get(0));
 
-		logger.info("Creating service group with participant id: " + participantID);
-		SMPRestClient.createServiceGroup(participantID, participantScheme, owners, domains);
+        logger.info("Creating service group with participant id: " + participantID);
+        SMPRestClient.createServiceGroup(participantID, participantScheme, owners, domains);
 
-		SearchPage searchPage = new SearchPage(driver);
-		searchPage.refreshPage();
+        SearchPage searchPage = new SearchPage(driver);
+        searchPage.refreshPage();
 
-		searchPage.filters.filter(participantID, participantScheme, SMPRestClient.getDomainSubDomainCombo(createdDomains.get(0)));
-		List<ServiceGroupRow> results = searchPage.getServiceGroupGrid().getRows();
+        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.get(0).getParticipantIdentifier().toLowerCase(), participantID.toLowerCase(),
-				"First and only result is the one we entered and is found when filtering by first domain");
+        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");
 
 
-		searchPage.filters.filter(participantID, participantScheme, SMPRestClient.getDomainSubDomainCombo(createdDomains.get(1)));
-		results = searchPage.getServiceGroupGrid().getRows();
+        searchPage.filters.filter(participantID, participantScheme, SMPRestClient.getDomainSubDomainCombo(createdDomains.get(1)));
+        results = searchPage.getServiceGroupGrid().getRows();
 
-		soft.assertEquals(results.size(), 1, "Results size is 1 (second 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 second domain");
+        soft.assertEquals(results.size(), 1, "Results size is 1 (second 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 second domain");
 
 
-		SMPRestClient.deleteSG(participantID);
+        SMPRestClient.deleteSG(participantID);
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@Test(description = "SRCH-90")
-	public void verifyDifferentParticipantIdAndSchemeResult() {
-		SoftAssert soft = new SoftAssert();
+    @Test(description = "SRCH-90")
+    public void verifyDifferentParticipantIdAndSchemeResult() {
+        SoftAssert soft = new SoftAssert();
 
-		SearchPage page = new SearchPage(driver);
-		soft.assertTrue(page.isLoaded());
-		String emptyMsg = "No data to display";
+        SearchPage page = new SearchPage(driver);
+        soft.assertTrue(page.isLoaded());
+        String emptyMsg = "No data to display";
 
-		ServiceGroupRow row0 = page.getServiceGroupGrid().getRows().get(0);
-		String pScheme = row0.getParticipantScheme();
+        ServiceGroupRow row0 = page.getServiceGroupGrid().getRows().get(0);
+        String pScheme = row0.getParticipantScheme();
 
-		ServiceGroupRow row1 = page.getServiceGroupGrid().getRows().get(1);
-		String pIdentifier = row1.getParticipantIdentifier();
+        ServiceGroupRow row1 = page.getServiceGroupGrid().getRows().get(1);
+        String pIdentifier = row1.getParticipantIdentifier();
 
-		page.filters.filter(pIdentifier, pScheme, "");
+        page.filters.filter(pIdentifier, pScheme, "");
 
-		soft.assertEquals(page.getServiceGroupGrid().getEmptyTableText(), emptyMsg, "empty table not found");
-		soft.assertAll();
-	}
+        soft.assertEquals(page.getServiceGroupGrid().getEmptyTableText(), emptyMsg, "empty table not found");
+        soft.assertAll();
+    }
 
-	@Test(description = "SRCH-100")
-	public void metadataTableContent() {
-		SoftAssert soft = new SoftAssert();
+    @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");
-			}
+        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();
-	}
+        }
+        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");
+    @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();
-	}
+        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 47fd13702fb65355b83c996976e60c9227e3f4f0..e52d21f457c749c43ae07dede297c9d67f837de8 100644
--- a/smp-ui-tests/src/test/java/ui/UsersPgTest.java
+++ b/smp-ui-tests/src/test/java/ui/UsersPgTest.java
@@ -7,6 +7,8 @@ import org.testng.asserts.SoftAssert;
 import pages.components.ConfirmationDialog;
 import pages.components.baseComponents.SMPPage;
 import pages.components.messageArea.AlertMessage;
+import pages.login.LoginPage;
+import pages.service_groups.search.SearchPage;
 import pages.users.UserPopup;
 import pages.users.UsersPage;
 import utils.Generator;
@@ -21,166 +23,245 @@ import java.util.List;
 public class UsersPgTest extends BaseTest {
 
 
-	@AfterMethod
-	public void logoutAndReset() {
-		genericLogoutProcedure();
-	}
+    @AfterMethod
+    public void logoutAndReset() {
+        genericLogoutProcedure();
+    }
 
 
-	@BeforeMethod
-	public void loginAndGoToUsersPage() {
+    @BeforeMethod
+    public void loginAndGoToUsersPage() {
 
-		SMPPage page = genericLoginProcedure("SYS_ADMIN");
+        SMPPage page = genericLoginProcedure("SYS_ADMIN");
 
-		logger.info("Going to Users page");
-		page.sidebar.goToPage(UsersPage.class);
-	}
+        logger.info("Going to Users page");
+        page.sidebar.goToPage(UsersPage.class);
+    }
 
-	@Test(description = "USR-10")
-	public void newUser() {
-		String username = Generator.randomAlphaNumeric(10);
-		String validPass = "QW!@qw12";
+    @Test(description = "USR-0")
+    public void existingUserPasswordDialogView() {
+        SoftAssert soft = new SoftAssert();
+        String username = Generator.randomAlphaNumeric(10);
+        UsersPage usersPage = new UsersPage(driver);
+        UserPopup popup = usersPage.clickNew();
+        soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup");
+        popup.fillDetailsForm(username);
+        popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
+        popup.clickOK();
+        soft.assertTrue(usersPage.isSaveButtonEnabled(), "Save button is enabled");
+        soft.assertTrue(usersPage.isCancelButtonEnabled(), "Cancel button is enabled");
 
-		SoftAssert soft = new SoftAssert();
+        usersPage.clickSave().confirm();
 
-		UsersPage usersPage = new UsersPage(driver);
+        soft.assertTrue(!usersPage.alertArea.getAlertMessage().isError(), "Message listed is success");
+        soft.assertTrue(usersPage.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message listed is as expected");
 
-//		soft.assertTrue(usersPage.isNewButtonEnabled(), "New button should be enabled");
+        soft.assertTrue(usersPage.grid().isUserListed(username), "User present in the page");
 
-		UserPopup popup = usersPage.clickNew();
-		soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup");
+        int index = usersPage.grid().scrollToUser(username);
 
-		popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
+        usersPage.grid().selectRow(index);
+        popup = usersPage.clickEdit();
 
-		popup.clickUserDetailsToggle();
+        popup.clickSetOrChangePassword();
+        //PasswordChangepopup passPopup = searchPage.pageHeader.sandwichMenu.clickChangePasswordOption();
+        soft.assertTrue(popup.isAdminPasswordInputEnable(), "Admin password field input is not enabled after open password change popup for an existing user");
+        soft.assertTrue(popup.isNewPasswordInputEnable(), "New password field input is not enabled after open password change popup for an existing user");
+        soft.assertTrue(popup.isConfirmPasswordInputEnable(), "Confirm password field input is not enabled after open password change popup for an existing user");
 
-		popup.fillDetailsForm(username, validPass, validPass);
-		popup.clickOK();
+        popup.clickClosePasswordDialog();
+        popup.clickOK();
+        usersPage.clickDelete();
+        usersPage.waitForXMillis(200);
+        soft.assertTrue(!usersPage.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted(2)");
+        soft.assertTrue(usersPage.isSaveButtonEnabled(), "Save button is enabled after user is deleted(2)");
+        soft.assertTrue(usersPage.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted(2)");
 
-		soft.assertTrue(usersPage.isSaveButtonEnabled(), "Save button is enabled");
-		soft.assertTrue(usersPage.isCancelButtonEnabled(), "Cancel button is enabled");
+        usersPage.clickSave().confirm();
 
-		usersPage.clickSave().confirm();
+        soft.assertTrue(usersPage.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message is as expected");
+        soft.assertTrue(!usersPage.grid().isUserListed(username), "After saving deleted user is not listed");
 
-		soft.assertTrue(!usersPage.alertArea.getAlertMessage().isError(), "Message listed is success");
-		soft.assertTrue(usersPage.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message listed is as expected");
+        soft.assertAll();
+
+    }
 
-        soft.assertTrue(usersPage.grid().isUserListed(username), "User present in the page");
 
-		soft.assertAll();
-	}
+    @Test(description = "USR-10")
+    public void newUser() {
+        String username = Generator.randomAlphaNumeric(10);
+        String validPass = "Aabcdefghijklm1@";
 
+        SoftAssert soft = new SoftAssert();
+
+        UsersPage usersPage = new UsersPage(driver);
+
+//		soft.assertTrue(usersPage.isNewButtonEnabled(), "New button should be enabled");
+
+        UserPopup popup = usersPage.clickNew();
+        soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup");
+        popup.fillDetailsForm(username);
+        popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
+        popup.clickOK();
+
+        //popup.clickUserDetailsToggle();
+        //popup.fillDetailsForm(username, validPass, validPass);
+
+
+        soft.assertTrue(usersPage.isSaveButtonEnabled(), "Save button is enabled");
+        soft.assertTrue(usersPage.isCancelButtonEnabled(), "Cancel button is enabled");
+
+        usersPage.clickSave().confirm();
+
+        soft.assertTrue(!usersPage.alertArea.getAlertMessage().isError(), "Message listed is success");
+        soft.assertTrue(usersPage.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message listed is as expected");
+
+        soft.assertTrue(usersPage.grid().isUserListed(username), "User present in the page");
+        String adminPass = "123456";
+        int index = usersPage.grid().scrollToUser(username);
+
+        usersPage.grid().selectRow(index);
+        popup = usersPage.clickEdit();
+        try {
+            Thread.sleep(10000);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        popup.clickSetOrChangePassword();
+        popup.setOrChangePassword(adminPass, validPass, validPass);
+        popup.clickChangedPassword();
+        popup.clickCloseAfterChangedPass();
+        try {
+            Thread.sleep(1000);
+        } catch (Exception e) {
+        }
+        popup.clickOK();
+        soft.assertTrue(usersPage.grid().isUserListed(username), "User present in the page");
 
-	@Test(description = "USR-20")
-	public void usernameValidation() {
-		String username = Generator.randomAlphaNumeric(10);
-		String validPass = "QW!@qw12";
+        soft.assertAll();
+    }
 
-		SoftAssert soft = new SoftAssert();
 
-		UsersPage usersPage = new UsersPage(driver);
-		UserPopup popup = usersPage.clickNew();
-		soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup");
+    @Test(description = "USR-20")
+    public void usernameValidation() {
+        String username = Generator.randomAlphaNumeric(10);
+        String validPass = "QW!@qw12";
 
-		popup.rolesSelect.selectOptionWithText("SMP_ADMIN");
+        SoftAssert soft = new SoftAssert();
 
-		popup.clickUserDetailsToggle();
+        UsersPage usersPage = new UsersPage(driver);
+        UserPopup popup = usersPage.clickNew();
+        soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup");
+        popup.fillDetailsForm("tst");
+        popup.rolesSelect.selectOptionWithText("SMP_ADMIN");
 
-		popup.fillDetailsForm("tst", validPass, validPass);
-		soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup(2)");
-		soft.assertEquals(popup.getUsernameValidationError(), SMPMessages.USERNAME_VALIDATION_MESSAGE, "Validation error message is displayed(2)");
-		popup.fillDetailsForm("#$^&*^%&$#@%@$#%$", validPass, validPass);
-		soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup(3)");
-		soft.assertEquals(popup.getUsernameValidationError(), SMPMessages.USERNAME_VALIDATION_MESSAGE, "Validation error message is displayed(3)");
-		//noinspection SpellCheckingInspection
-		popup.fillDetailsForm("QWERQWERQWERQWERQWERQWERQWERQWE33", validPass, validPass);
-		soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup(4)");
-		soft.assertEquals(popup.getUsernameValidationError(), SMPMessages.USERNAME_VALIDATION_MESSAGE, "Validation error message is displayed(4)");
+        //popup.clickUserDetailsToggle();
 
+        //popup.fillDetailsForm("tst");
+        soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup(2)");
+        soft.assertEquals(popup.getUsernameValidationError(), SMPMessages.USERNAME_VALIDATION_MESSAGE, "Validation error message is displayed(2)");
+        popup.fillDetailsForm("#$^&*^%&$#@%@$#%$");
+        soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup(3)");
+        soft.assertEquals(popup.getUsernameValidationError(), SMPMessages.USERNAME_VALIDATION_MESSAGE, "Validation error message is displayed(3)");
+        //noinspection SpellCheckingInspection
+        popup.fillDetailsForm("QWERQWERQWERQWERQWERQWERQWERQWE33");
+        soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup(4)");
+        soft.assertEquals(popup.getUsernameValidationError(), SMPMessages.USERNAME_VALIDATION_MESSAGE, "Validation error message is displayed(4)");
 
-		soft.assertAll();
-	}
 
-	@SuppressWarnings("SpellCheckingInspection")
-	@Test(description = "USR-30")
-	public void passwordValidation() {
+        soft.assertAll();
+    }
 
-		ArrayList<String> passToValidate = new ArrayList<>(Arrays.asList("qwqw",
-				"QWERQWERQWERQWERQWERQWERQWERQWE33",
+    @SuppressWarnings("SpellCheckingInspection")
+    @Test(description = "USR-30")
+    public void passwordValidation() {
+        String username = Generator.randomAlphaNumeric(10);
+        ArrayList<String> passToValidate = new ArrayList<>(Arrays.asList("qwqw",
+                "QWERQWERQWERQWERQWERQWERQWERQWE33",
 //				"QWERTYUIOP",
 //				"qwertyuiop",
 //				"321654987",
 //				"~!@#$%^&*()_",
 //				"~1Aa#",
-				"~1a#2d2dds"));
+                "~1a#2d2dds"));
 
-		SoftAssert soft = new SoftAssert();
+        SoftAssert soft = new SoftAssert();
 
-		UsersPage usersPage = new UsersPage(driver);
+        UsersPage usersPage = new UsersPage(driver);
+        usersPage.clickVoidSpace();
 
-		for (String pass : passToValidate) {
-//			usersPage.refreshPage();
-			usersPage.clickVoidSpace();
+        UserPopup popup = usersPage.clickNew();
+        popup.fillDetailsForm(username);
+        popup.rolesSelect.selectOptionWithText("SMP_ADMIN");
+        popup.clickOK();
+        usersPage.clickSave().confirm();
+        soft.assertTrue(usersPage.grid().isUserListed(username), "User present in the page");
+        int index = usersPage.grid().scrollToUser(username);
+        usersPage.grid().selectRow(index);
+        String adminPass = "123456";
+        for (String pass : passToValidate) {
+
+            popup = usersPage.clickEdit();
 
-			UserPopup popup = usersPage.clickNew();
-			popup.rolesSelect.selectOptionWithText("SMP_ADMIN");
-			popup.clickUserDetailsToggle();
+            popup.clickSetOrChangePassword();
+            popup.setOrChangePassword(adminPass, pass, pass);
+            popup.clickClosePasswordDialog();
+            popup.clickCancel();
 
-			popup.fillDetailsForm("test11", pass, pass);
-			soft.assertTrue(!popup.isOKButtonActive(), String.format("OK button should be disabled until valid data is filled in the popup - %s ", pass));
-			soft.assertEquals(popup.getPassValidationError(), SMPMessages.PASS_POLICY_MESSAGE, String.format("Pass policy message is displayed - %s", pass));
-		}
+            soft.assertTrue(!popup.isChangePasswordActive(), String.format("ChangePassword button should be disabled until valid data is filled in the popup - %s ", pass));
+            //soft.assertEquals(popup.getPassValidationError(), SMPMessages.PASS_POLICY_MESSAGE, String.format("Pass policy message is displayed - %s", pass));
+        }
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@Test(description = "USR-40")
-	public void listedRoles() {
+    @Test(description = "USR-40")
+    public void listedRoles() {
 
-		ArrayList<String> expectedRoleValues = new ArrayList<>(Arrays.asList("SYSTEM_ADMIN", "SMP_ADMIN", "SERVICE_GROUP_ADMIN"));
+        ArrayList<String> expectedRoleValues = new ArrayList<>(Arrays.asList("SYSTEM_ADMIN", "SMP_ADMIN", "SERVICE_GROUP_ADMIN"));
 
-		SoftAssert soft = new SoftAssert();
+        SoftAssert soft = new SoftAssert();
 
-		UsersPage usersPage = new UsersPage(driver);
-		UserPopup popup = usersPage.clickNew();
-		List<String> listedRoles = popup.rolesSelect.getOptionTexts();
+        UsersPage usersPage = new UsersPage(driver);
+        UserPopup popup = usersPage.clickNew();
+        List<String> listedRoles = popup.rolesSelect.getOptionTexts();
 
-		soft.assertTrue(expectedRoleValues.size() == listedRoles.size(), "Number of roles is the same as expected");
+        soft.assertTrue(expectedRoleValues.size() == listedRoles.size(), "Number of roles is the same as expected");
 
-		for (String expected : expectedRoleValues) {
-			boolean found = false;
-			for (String listedRole : listedRoles) {
-				if (listedRole.equalsIgnoreCase(expected)) {
-					found = true;
-				}
-			}
-			soft.assertTrue(found, "Role found in page " + expected);
-		}
+        for (String expected : expectedRoleValues) {
+            boolean found = false;
+            for (String listedRole : listedRoles) {
+                if (listedRole.equalsIgnoreCase(expected)) {
+                    found = true;
+                }
+            }
+            soft.assertTrue(found, "Role found in page " + expected);
+        }
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@Test(description = "USR-50")
-	public void deleteSYS_ADMIN() {
+    @Test(description = "USR-50")
+    public void deleteSYS_ADMIN() {
 
-		String username = Generator.randomAlphaNumeric(10);
-		SMPRestClient.createUser(username, "SYSTEM_ADMIN");
-		SoftAssert soft = new SoftAssert();
+        String username = Generator.randomAlphaNumeric(10);
+        SMPRestClient.createUser(username, "SYSTEM_ADMIN");
+        SoftAssert soft = new SoftAssert();
 
-		logger.info("created user " + username);
-		UsersPage page = new UsersPage(driver);
-		page.refreshPage();
+        logger.info("created user " + username);
+        UsersPage page = new UsersPage(driver);
+        page.refreshPage();
 
-		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled");
+        soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled");
 
         int index = page.grid().scrollToUser(username);
         page.grid().selectRow(index);
         soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");
 
-		page.clickDelete();
-		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted");
-		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted");
-		soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted");
+        page.clickDelete();
+        soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted");
+        soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted");
+        soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted");
 
         page.clickCancel().confirm();
         new ConfirmationDialog(driver).confirm();
@@ -191,99 +272,99 @@ public class UsersPgTest extends BaseTest {
         page.grid().selectRow(index);
         soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select(2)");
 
-		page.clickDelete();
-		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted(2)");
-		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted(2)");
-		soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted(2)");
+        page.clickDelete();
+        soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted(2)");
+        soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted(2)");
+        soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted(2)");
 
-		page.clickSave().confirm();
+        page.clickSave().confirm();
 
         soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message listed is as expected");
         soft.assertTrue(!page.grid().isUserListed(username), "After saving deleted user is not listed");
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@Test(description = "USR-60")
-	public void changeRoleSYS_ADMIN() {
+    @Test(description = "USR-60")
+    public void changeRoleSYS_ADMIN() {
 
-		SoftAssert soft = new SoftAssert();
+        SoftAssert soft = new SoftAssert();
 
         UsersPage page = new UsersPage(driver);
         int index = page.grid().scrollToUserWithRole("SYSTEM_ADMIN");
 
-		page.grid().selectRow(index);
-		UserPopup popup = page.clickEdit();
-		List<String> options = popup.rolesSelect.getOptionTexts();
-		soft.assertTrue(options.size() == 1, "Role dropdown has only one value");
-		soft.assertTrue(options.get(0).equalsIgnoreCase("SYSTEM_ADMIN"), "Role dropdown has only one value and that is \"SYSTEM_ADMIN\"");
+        page.grid().selectRow(index);
+        UserPopup popup = page.clickEdit();
+        List<String> options = popup.rolesSelect.getOptionTexts();
+        soft.assertTrue(options.size() == 1, "Role dropdown has only one value");
+        soft.assertTrue(options.get(0).equalsIgnoreCase("SYSTEM_ADMIN"), "Role dropdown has only one value and that is \"SYSTEM_ADMIN\"");
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@Test(description = "USR-70")
-	public void changeRoleNON_SYS_ADMIN() {
+    @Test(description = "USR-70")
+    public void changeRoleNON_SYS_ADMIN() {
 
-		SoftAssert soft = new SoftAssert();
+        SoftAssert soft = new SoftAssert();
 
         UsersPage page = new UsersPage(driver);
         int index = page.grid().scrollToUserWithRole("SMP_ADMIN");
 
-		page.grid().selectRow(index);
-		UserPopup popup = page.clickEdit();
+        page.grid().selectRow(index);
+        UserPopup popup = page.clickEdit();
 
-		List<String> options = popup.rolesSelect.getOptionTexts();
-		soft.assertTrue(options.size() == 2, "Role dropdown has only two values");
-		soft.assertTrue(options.get(0).equalsIgnoreCase("SMP_ADMIN"), "Role dropdown has value \"SMP_ADMIN\"");
-		soft.assertTrue(options.get(1).equalsIgnoreCase("SERVICE_GROUP_ADMIN"), "Role dropdown has value \"SERVICE_GROUP_ADMIN\"");
+        List<String> options = popup.rolesSelect.getOptionTexts();
+        soft.assertTrue(options.size() == 2, "Role dropdown has only two values");
+        soft.assertTrue(options.get(0).equalsIgnoreCase("SMP_ADMIN"), "Role dropdown has value \"SMP_ADMIN\"");
+        soft.assertTrue(options.get(1).equalsIgnoreCase("SERVICE_GROUP_ADMIN"), "Role dropdown has value \"SERVICE_GROUP_ADMIN\"");
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@Test(description = "USR-80")
-	public void deleteOWNUserRecord() {
+    @Test(description = "USR-80")
+    public void deleteOWNUserRecord() {
 
-		String username = new TestDataProvider().getUserWithRole("SYS_ADMIN").get("username");
+        String username = new TestDataProvider().getUserWithRole("SYS_ADMIN").get("username");
 
-		SoftAssert soft = new SoftAssert();
+        SoftAssert soft = new SoftAssert();
 
-		UsersPage page = new UsersPage(driver);
-		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled");
+        UsersPage page = new UsersPage(driver);
+        soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled");
 
         int index = page.grid().scrollToUser(username);
         page.grid().selectRow(index);
         soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");
 
-		page.clickDelete();
-		AlertMessage message = page.alertArea.getAlertMessage();
-		soft.assertTrue(message.isError(), "Listed message is error");
-		soft.assertTrue(message.getMessage().equalsIgnoreCase(SMPMessages.USER_OWN_DELETE_ERR), "Listed message has appropriate text");
+        page.clickDelete();
+        AlertMessage message = page.alertArea.getAlertMessage();
+        soft.assertTrue(message.isError(), "Listed message is error");
+        soft.assertTrue(message.getMessage().equalsIgnoreCase(SMPMessages.USER_OWN_DELETE_ERR), "Listed message has appropriate text");
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@Test(description = "USR-90")
-	public void deleteSMP_ADMIN() {
+    @Test(description = "USR-90")
+    public void deleteSMP_ADMIN() {
 
-		String username = Generator.randomAlphaNumeric(10);
-		SMPRestClient.createUser(username, "SMP_ADMIN");
-		SoftAssert soft = new SoftAssert();
+        String username = Generator.randomAlphaNumeric(10);
+        SMPRestClient.createUser(username, "SMP_ADMIN");
+        SoftAssert soft = new SoftAssert();
 
-		logger.info("Created username " + username);
+        logger.info("Created username " + username);
 
 
-		UsersPage page = new UsersPage(driver);
-		page.refreshPage();
-		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled");
+        UsersPage page = new UsersPage(driver);
+        page.refreshPage();
+        soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled");
 
         int index = page.grid().scrollToUser(username);
         page.grid().selectRow(index);
         soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");
 
-		page.clickDelete();
-		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted");
-		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted");
-		soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted");
+        page.clickDelete();
+        soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted");
+        soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted");
+        soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted");
 
         page.clickCancel().confirm();
         new ConfirmationDialog(driver).confirm();
@@ -294,44 +375,44 @@ public class UsersPgTest extends BaseTest {
         page.grid().selectRow(index);
         soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select(2)");
 
-		page.clickDelete();
-		page.waitForXMillis(200);
-		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted(2)");
-		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted(2)");
-		soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted(2)");
+        page.clickDelete();
+        page.waitForXMillis(200);
+        soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted(2)");
+        soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted(2)");
+        soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted(2)");
 
-		page.clickSave().confirm();
+        page.clickSave().confirm();
 
         soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message is as expected");
         soft.assertTrue(!page.grid().isUserListed(username), "After saving deleted user is not listed");
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@Test(description = "USR-100")
-	public void deleteSERVICE_GROUP_ADMIN() {
+    @Test(description = "USR-100")
+    public void deleteSERVICE_GROUP_ADMIN() {
 
-		String username = Generator.randomAlphaNumeric(10);
-		SMPRestClient.createUser(username, "SERVICE_GROUP_ADMIN");
-		logger.info("Created username" + username);
-		SoftAssert soft = new SoftAssert();
+        String username = Generator.randomAlphaNumeric(10);
+        SMPRestClient.createUser(username, "SERVICE_GROUP_ADMIN");
+        logger.info("Created username" + username);
+        SoftAssert soft = new SoftAssert();
 
-		UsersPage page = new UsersPage(driver);
-		page.refreshPage();
-		page.waitForRowsToLoad();
+        UsersPage page = new UsersPage(driver);
+        page.refreshPage();
+        page.waitForRowsToLoad();
 
-		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled");
+        soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled");
 
-        int index =page.grid(). scrollToUser(username);
+        int index = page.grid().scrollToUser(username);
         page.grid().selectRow(index);
         soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");
 
-		page.clickDelete();
-		page.waitForRowsToLoad();
+        page.clickDelete();
+        page.waitForRowsToLoad();
 
-		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted");
-		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted");
-		soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted");
+        soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted");
+        soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted");
+        soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted");
 
         page.clickCancel().confirm();
         new ConfirmationDialog(driver).confirm();
@@ -342,94 +423,94 @@ public class UsersPgTest extends BaseTest {
         index = page.grid().scrollToUser(username);
         page.grid().selectRow(index);
 
-		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select(2)");
+        soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select(2)");
 
-		page.clickDelete();
-		page.waitForRowsToLoad();
-		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted(2)");
-		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted(2)");
-		soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted(2)");
+        page.clickDelete();
+        page.waitForRowsToLoad();
+        soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted(2)");
+        soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled after user is deleted(2)");
+        soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted(2)");
 
-		page.clickSave().confirm();
+        page.clickSave().confirm();
 
         soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message is as expected");
         soft.assertTrue(!page.grid().isUserListed(username), "After saving deleted user is not listed");
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@Test(description = "USR-110")
-	public void deleteSG_ADMINWithSG() {
+    @Test(description = "USR-110")
+    public void deleteSG_ADMINWithSG() {
 
-		String username = Generator.randomAlphaNumeric(10);
-		String pi = Generator.randomAlphaNumeric(10);
-		String ps = Generator.randomAlphaNumeric(10);
+        String username = Generator.randomAlphaNumeric(10);
+        String pi = Generator.randomAlphaNumeric(10);
+        String ps = Generator.randomAlphaNumeric(10);
 
-		String expectedErrorMess = String.format("Delete validation error Could not delete user with ownerships! User: %s owns SG count: 1.", username);
+        String expectedErrorMess = String.format("Delete validation error Could not delete user with ownerships! User: %s owns SG count: 1.", username);
 
-		SMPRestClient.createUser(username, "SERVICE_GROUP_ADMIN");
-		SMPRestClient.createServiceGroup(pi, ps,
-				new ArrayList<>(Arrays.asList(username)),
-				new ArrayList<>(Arrays.asList(createdDomains.get(0)))
-		);
+        SMPRestClient.createUser(username, "SERVICE_GROUP_ADMIN");
+        SMPRestClient.createServiceGroup(pi, ps,
+                new ArrayList<>(Arrays.asList(username)),
+                new ArrayList<>(Arrays.asList(createdDomains.get(0)))
+        );
 
-		logger.info("Created username " + username);
-		logger.info("Created service group " + pi);
+        logger.info("Created username " + username);
+        logger.info("Created service group " + pi);
 
-		SoftAssert soft = new SoftAssert();
+        SoftAssert soft = new SoftAssert();
 
-		UsersPage page = new UsersPage(driver);
-		page.refreshPage();
+        UsersPage page = new UsersPage(driver);
+        page.refreshPage();
 
         int index = page.grid().scrollToUser(username);
         page.grid().selectRow(index);
         soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");
 
-		page.clickDelete();
-		AlertMessage message = page.alertArea.getAlertMessage();
-		soft.assertTrue(message.isError(), "Page shows error message when deleting user with SG");
-		soft.assertTrue(message.getMessage().equalsIgnoreCase(expectedErrorMess), "Desired message appears");
+        page.clickDelete();
+        AlertMessage message = page.alertArea.getAlertMessage();
+        soft.assertTrue(message.isError(), "Page shows error message when deleting user with SG");
+        soft.assertTrue(message.getMessage().equalsIgnoreCase(expectedErrorMess), "Desired message appears");
 
-		SMPRestClient.deleteSG(pi);
-		SMPRestClient.deleteUser(username);
+        SMPRestClient.deleteSG(pi);
+        SMPRestClient.deleteUser(username);
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@Test(description = "USR-120")
-	public void deleteSMP_ADMINWithSG() {
+    @Test(description = "USR-120")
+    public void deleteSMP_ADMINWithSG() {
 
-		String username = Generator.randomAlphaNumeric(10);
-		String pi = Generator.randomAlphaNumeric(10);
-		String ps = Generator.randomAlphaNumeric(10);
+        String username = Generator.randomAlphaNumeric(10);
+        String pi = Generator.randomAlphaNumeric(10);
+        String ps = Generator.randomAlphaNumeric(10);
 
-		String expectedErrorMess = String.format("Delete validation error Could not delete user with ownerships! User: %s owns SG count: 1.", username);
+        String expectedErrorMess = String.format("Delete validation error Could not delete user with ownerships! User: %s owns SG count: 1.", username);
 
-		SMPRestClient.createUser(username, "SMP_ADMIN");
-		SMPRestClient.createServiceGroup(pi, ps,
-				new ArrayList<>(Arrays.asList(username)),
-				new ArrayList<>(Arrays.asList(createdDomains.get(0)))
-		);
+        SMPRestClient.createUser(username, "SMP_ADMIN");
+        SMPRestClient.createServiceGroup(pi, ps,
+                new ArrayList<>(Arrays.asList(username)),
+                new ArrayList<>(Arrays.asList(createdDomains.get(0)))
+        );
 
-		logger.info("Created username "+ username);
+        logger.info("Created username " + username);
 
-		SoftAssert soft = new SoftAssert();
+        SoftAssert soft = new SoftAssert();
 
-		UsersPage page = new UsersPage(driver);
-		page.refreshPage();
+        UsersPage page = new UsersPage(driver);
+        page.refreshPage();
 
         int index = page.grid().scrollToUser(username);
         page.grid().selectRow(index);
         soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");
 
-		page.clickDelete();
-		page.waitForXMillis(500);
-		AlertMessage message = page.alertArea.getAlertMessage();
-		soft.assertTrue(message.isError(), "Page shows error message when deleting user with SG");
-		soft.assertTrue(message.getMessage().equalsIgnoreCase(expectedErrorMess), "Desired message appears");
+        page.clickDelete();
+        page.waitForXMillis(500);
+        AlertMessage message = page.alertArea.getAlertMessage();
+        soft.assertTrue(message.isError(), "Page shows error message when deleting user with SG");
+        soft.assertTrue(message.getMessage().equalsIgnoreCase(expectedErrorMess), "Desired message appears");
 
-		SMPRestClient.deleteSG(pi);
-		SMPRestClient.deleteUser(username);
+        SMPRestClient.deleteSG(pi);
+        SMPRestClient.deleteUser(username);
 
         soft.assertAll();
     }
@@ -438,51 +519,132 @@ public class UsersPgTest extends BaseTest {
     public void duplicateUserCreation() {
         SoftAssert soft = new SoftAssert();
         String userName = Generator.randomAlphaNumeric(10);
-        String validPass = "QW!@qw12";
+        String validPass = "Aabcdefghijklm1@";
         UsersPage page = new UsersPage(driver);
 
         soft.assertTrue(page.isNewButtonEnabled(), "New button should be enabled");
 
         UserPopup popup = page.clickNew();
         soft.assertTrue(!popup.isOKButtonActive(), "OK button is enable before valid data is filled in the popup");
+        popup.fillDetailsForm(userName);
         popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
-        popup.clickUserDetailsToggle();
-        popup.fillDetailsForm(userName, validPass, validPass);
         popup.clickOK();
         soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
         page.clickSave().confirm();
+        String adminPass = "123456";
+        int index = page.grid().scrollToUser(userName);
+
+        page.grid().selectRow(index);
+        popup = page.clickEdit();
+        popup.clickSetOrChangePassword();
+        popup.setOrChangePassword(adminPass, validPass, validPass);
+        popup.clickChangedPassword();
+        popup.clickCloseAfterChangedPass();
+        popup.clickCancel();
+        soft.assertTrue(page.grid().isUserListed(userName), "User present in the page");
+
+        //popup.clickUserDetailsToggle();
+        //popup.fillDetailsForm(userName,validPass,validPass);
+
 
         page.clickNew();
-        soft.assertTrue(!popup.isOKButtonActive(), "OK button is enable before valid data is filled in the popup");
+
+        popup.fillDetailsForm(userName);
         popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
-        popup.clickUserDetailsToggle();
-        popup.fillDetailsForm(userName, validPass, validPass);
+        // popup.clickUserDetailsToggle();
+        //popup.fillDetailsForm(userName);
         soft.assertFalse(popup.isOKButtonActive(), "OK button is enable after duplicate user name is filled in the popup");
 
         soft.assertTrue(popup.isDuplicateUserNameErrorMsgDisPlayed(), "The user page is not containing the expected error message");
+        popup.clickCancel();
         soft.assertAll();
     }
 
     @Test(description = "USR-122")
     public void verifyPasswordDoNotMatch() {
         String username = Generator.randomAlphaNumeric(10);
-        String validPass = "QW!@qw12";
-        String confirmPass = "AS@!gh12";
-        String errorMsg = "Passwords do not match";
+        String validPass = "Aabcdefghijklm1@";
+        String confirmPass = "AS@!gh12fxghfnh43546";
+        String errorMsg = "Confirm valued does not match new password!";
+        String adminPass = "123456";
         SoftAssert soft = new SoftAssert();
-
         UsersPage usersPage = new UsersPage(driver);
         UserPopup popup = usersPage.clickNew();
         soft.assertTrue(!popup.isOKButtonActive(), "OK button is enable before valid data is filled in the popup");
-
+        popup.fillDetailsForm(username);
         popup.rolesSelect.selectOptionWithText("SMP_ADMIN");
+        popup.clickOK();
+        soft.assertTrue(usersPage.isSaveButtonEnabled(), "Save button is enabled");
+        usersPage.clickSave().confirm();
+        int index = usersPage.grid().scrollToUser(username);
+        usersPage.grid().selectRow(index);
+        popup = usersPage.clickEdit();
+        popup.clickSetOrChangePassword();
+        popup.setOrChangePassword(adminPass, validPass, confirmPass);
+        //popup.clickVoidSpace();
+        soft.assertTrue(!popup.isChangePasswordButtonActive(), "password change button is enabled before valid data is filled in the popup(2)");
+        //logger.info("Msg is :"+popup.getPassDontMatchValidationMsg());
+        // soft.assertEquals(popup.getPassDontMatchValidationMsg(), errorMsg, "confirmation input does not contain the message 'Confirm valued does not match new password!'");
+        soft.assertTrue(!popup.isPopupChangedPasswordEnabled(), "Chagepassword option is not disable after giving the wrong data in cofirmation password");
+        soft.assertAll();
+    }
 
-        popup.clickUserDetailsToggle();
+    @Test(description = "USR-123")
+    public void verifySuspendedUserwithoutPassword() {
+        String username = Generator.randomAlphaNumeric(10);
+        String password = "Aabcdefghijklm1@";
+
+        SoftAssert soft = new SoftAssert();
+
+        UsersPage usersPage = new UsersPage(driver);
+
+        UserPopup popup = usersPage.clickNew();
+        soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup");
+        popup.fillDetailsForm(username);
+        popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
+        popup.clickOK();
+
+        soft.assertTrue(usersPage.isSaveButtonEnabled(), "Save button is enabled");
+        soft.assertTrue(usersPage.isCancelButtonEnabled(), "Cancel button is enabled");
+
+        usersPage.clickSave().confirm();
+
+        soft.assertTrue(!usersPage.alertArea.getAlertMessage().isError(), "Message listed is success");
+        soft.assertTrue(usersPage.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message listed is as expected");
+
+        soft.assertTrue(usersPage.grid().isUserListed(username), "User present in the page");
+
+        usersPage.pageHeader.sandwichMenu.logout();
+        SearchPage page = new SearchPage(driver);
+        logger.info("Going to login page");
+        LoginPage loginPage = page.pageHeader.goToLogin();
+        for (int i = 0; i < 5; i++) {
+            loginPage.invalidLogin(username, password);
+            loginPage.waitForXMillis(2000);
+        }
+        soft.assertTrue(loginPage.isLoginButtonEnable(), "Login Button Is Disabled");
+        logger.info(loginPage.alertArea.getAlertMessage().getMessage());
+        soft.assertTrue(loginPage.alertArea.getAlertMessage().getMessage().contains(SMPMessages.MSG_22), "Message listed is as expected");
+
+        SMPPage smpPage = genericLoginProcedure("SYS_ADMIN");
+        logger.info("Going to User page");
+        smpPage.sidebar.goToPage(UsersPage.class);
+        usersPage = new UsersPage(driver);
+        int index = usersPage.grid().scrollToUser(username);
+        usersPage.grid().selectRow(index);
+        soft.assertTrue(usersPage.isDeleteButtonEnabled(), "Delete button is enabled after row select(2)");
+
+        usersPage.clickDelete();
+        usersPage.waitForXMillis(200);
+        soft.assertTrue(!usersPage.isDeleteButtonEnabled(), "Delete button is not enabled after user is deleted(2)");
+        soft.assertTrue(usersPage.isSaveButtonEnabled(), "Save button is enabled after user is deleted(2)");
+        soft.assertTrue(usersPage.isCancelButtonEnabled(), "Cancel button is enabled after user is deleted(2)");
+
+        usersPage.clickSave().confirm();
+
+        soft.assertTrue(usersPage.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message is as expected");
+        soft.assertTrue(!usersPage.grid().isUserListed(username), "After saving deleted user is not listed");
 
-        popup.fillDetailsForm(username, validPass, confirmPass);
-        soft.assertTrue(!popup.isOKButtonActive(), "OK button is enabled before valid data is filled in the popup(2)");
-        soft.assertEquals(popup.getPassDontMatchValidationMsg(), errorMsg, "confirmation input does not contain the message 'Passwords do not match' .");
         soft.assertAll();
     }
-
 }