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 00195ea9daf0b1f8cfe9e5cecf92c480c922a672..680bf656640c09fc6f140d37b605b9b6140db0ac 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
@@ -75,9 +75,10 @@ public class BasicGrid extends PageComponent {
 	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/domain/DomainGrid.java b/smp-ui-tests/src/main/java/pages/domain/DomainGrid.java
index 01f8b936c21cb60b473b11fd8bf745123b234b46..735b23622791429d49ce8a8462e47e0d3e56efce 100644
--- a/smp-ui-tests/src/main/java/pages/domain/DomainGrid.java
+++ b/smp-ui-tests/src/main/java/pages/domain/DomainGrid.java
@@ -3,6 +3,7 @@ package pages.domain;
 import org.openqa.selenium.By;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
+import org.openqa.selenium.interactions.Actions;
 import pages.components.grid.BasicGrid;
 
 import java.util.ArrayList;
@@ -15,7 +16,7 @@ public class DomainGrid extends BasicGrid {
 
 	private By cellSelector = By.tagName("datatable-body-cell");
 
-	public List<DomainRow> getRowsInfo(){
+	public List<DomainRow> getRowsInfo() {
 		log.info("getting all row info");
 		List<DomainRow> rowInfos = new ArrayList<>();
 
@@ -25,7 +26,7 @@ public class DomainGrid extends BasicGrid {
 			DomainRow row = new DomainRow();
 
 			for (int i = 0; i < headerTxt.size(); i++) {
-				switch (headerTxt.get(i)){
+				switch (headerTxt.get(i)) {
 					case "Domain code":
 						row.setDomainCode(cells.get(i).getText().trim());
 						break;
@@ -47,6 +48,11 @@ public class DomainGrid extends BasicGrid {
 
 		return rowInfos;
 	}
+	public void mouseHoverOnDomainCode(int rowNumber)
+	{
+		WebElement element = driver.findElement(By.cssSelector(".datatable-row-wrapper:nth-child(" + rowNumber + ") .datatable-body-cell:nth-child(1) .datatable-body-cell-label span"));
+		Actions action = new Actions(driver);
+		action.moveToElement(element).build().perform();
+	}
 
-
-}
+}
\ No newline at end of file
diff --git a/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java b/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java
index 8ec1c6d701e8514d92a7f36a4bb5c0fcb27743bc..62fc8590ae5487133086be74a638149313848735 100644
--- a/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java
+++ b/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java
@@ -38,6 +38,13 @@ public class DomainPopup extends PageComponent {
 
 	@FindBy(css = "#smlSMPId_id")
 	WebElement smlSMPIdInput;
+
+	@FindBy(xpath = "//div[contains(text(),' The Domain code already exists! ')]")
+	WebElement duplicateDomainErrorMsg;
+
+
+
+
 	
 //	@FindBy(css = "#smlClientHeader_id")
 //	WebElement smlClientHeaderInput;
@@ -87,6 +94,40 @@ public class DomainPopup extends PageComponent {
 		smlClientAliasSelect.selectFirstOption();
 	}
 
+    public String getDuplicateDomainErrorMsgText()
+	{
+		String duplicateDomainMsg = duplicateDomainErrorMsg.getText();
+		return duplicateDomainMsg;
+
+	}
+	public boolean isEnableOkButton()
+	{
+		try {
+			return okBtn.isEnabled();
+		}
+		catch(Exception e)
+		{
+			e.printStackTrace();
+			return false;
+		}
+	}
+	public boolean isEnableCancelButton()
+	{
+		try {
+			return cancelBtn.isEnabled();
+		}
+		catch(Exception e)
+		{
+			e.printStackTrace();
+			return false;
+		}
+
+	}
+
+	public void clearAndFillDomainCodeInput(String domainCode) {
+		log.info("filling only domain code data for new domain");
+		clearAndFillInput(domainCodeInput, domainCode);
+	}
 
 
 }
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 748478d7a8061b8a4adabc1ce45a739972922e6d..69d09936d31204da143837331d80f321d771d121 100644
--- a/smp-ui-tests/src/main/java/pages/users/UserPopup.java
+++ b/smp-ui-tests/src/main/java/pages/users/UserPopup.java
@@ -49,6 +49,9 @@ public class UserPopup extends PageComponent {
 	@FindBy(css = "mat-dialog-content > table > tbody > tr > td > button:nth-child(2)")
 	WebElement cancelBtn;
 
+	@FindBy(xpath = "//div[text()=\'Passwords do not match \']")
+	WebElement passwordUnmatchingMsg;
+
 	@FindBy(css = "#role_id")
 	WebElement rolesSelectContainer;
 	public GenericSelect rolesSelect;
@@ -129,4 +132,9 @@ public class UserPopup extends PageComponent {
 		}
 		return null;
 	}
+
+	public String getPasswordUnmatchingMsg()
+	{
+		return passwordUnmatchingMsg.getText();
+	}
 }
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 885791aeac0ed2c99263e91fa7ad6c8036c4002f..c42da40ce89e75b64c15f2260651a3f6169ebc7f 100644
--- a/smp-ui-tests/src/main/java/pages/users/UsersPage.java
+++ b/smp-ui-tests/src/main/java/pages/users/UsersPage.java
@@ -41,6 +41,9 @@ public class UsersPage extends SMPPage {
 	
 	@FindBy(id = "deleteButton")
 	private WebElement deleteBtn;
+
+	@FindBy(xpath = "//div[contains(text(),'Unexpected technical error occurred.')]")
+	private WebElement duplicateUserCreationMsg;
 	
 	
 	public boolean isLoaded(){
@@ -113,10 +116,26 @@ public class UsersPage extends SMPPage {
 		popup.clickOK();
 
 	}
+
+	public boolean isNewButtonEnabled()
+
+	{
+		try{
+			return newBtn.isEnabled();
+		}
+		catch(Exception e)
+		{
+			e.printStackTrace();
+			throw e;
+		}
+	}
 	
-	
-	
-	
+	public String getDuplicateUserErrorMsg()
+	{
+		return duplicateUserCreationMsg.getText();
+	}
+
+
 	
 	
 }
diff --git a/smp-ui-tests/src/test/java/ui/DomainPgTest.java b/smp-ui-tests/src/test/java/ui/DomainPgTest.java
index 6f46e83555731145b0a9418ec7de25f19f1985a8..c200395b7744a5035d0a8b48eb21780fee4b53ad 100644
--- a/smp-ui-tests/src/test/java/ui/DomainPgTest.java
+++ b/smp-ui-tests/src/test/java/ui/DomainPgTest.java
@@ -20,306 +20,391 @@ import java.util.Arrays;
 import java.util.List;
 
 public class DomainPgTest extends BaseTest {
-	
-	@AfterMethod
-	public void logoutAndReset(){
-		genericLogoutProcedure();
-	}
 
-	
-	@BeforeMethod
-	public void loginAndGoToDomainPage(){
-		
-		SMPPage page = genericLoginProcedure("SYS_ADMIN");
+    @AfterMethod
+    public void logoutAndReset() {
+        genericLogoutProcedure();
+    }
 
-		logger.info("Going to Domain page");
-		page.sidebar.goToPage(DomainPage.class);
-	}
-	
-	@Test(description = "DMN-0")
-	public void openDomainPage(){
-		SoftAssert soft = new SoftAssert();
-		DomainPage page = new DomainPage(driver);
 
-		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
-		DomainGrid grid = page.grid();
-		DomainRow row0 = grid.getRowsInfo().get(0);
-		grid.doubleClickRow(0);
-		
-		DomainPopup popup = new DomainPopup(driver);
+    @BeforeMethod
+    public void loginAndGoToDomainPage() {
 
-		soft.assertTrue(popup.isLoaded(), "Domain popup is loaded");
+        SMPPage page = genericLoginProcedure("SYS_ADMIN");
 
-		soft.assertTrue(!popup.isDomainCodeInputEnabled(), "On double click Domain Code input is disabled");
-		soft.assertTrue(!popup.isSMLDomainInputEnabled(), "On double click SML Domain input is disabled");
+        logger.info("Going to Domain page");
+        page.sidebar.goToPage(DomainPage.class);
+    }
 
-		popup.clickCancel();
-		
-		soft.assertEquals(row0, page.grid().getRowsInfo().get(0), "Row is unchanged");
-		soft.assertTrue(!page.isSaveButtonEnabled(), "Save button is not enabled");
+    @Test(description = "DMN-0")
+    public void openDomainPage() {
+        SoftAssert soft = new SoftAssert();
+        DomainPage page = new DomainPage(driver);
 
-		soft.assertAll();
-	}
+        soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
+        DomainGrid grid = page.grid();
+        DomainRow row0 = grid.getRowsInfo().get(0);
+        grid.doubleClickRow(0);
 
-	@Test(description = "DMN-10")
-	public void editDomain(){
+        DomainPopup popup = new DomainPopup(driver);
 
-		SoftAssert soft = new SoftAssert();
-		DomainPage page = new DomainPage(driver);
+        soft.assertTrue(popup.isLoaded(), "Domain popup is loaded");
 
-		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
-		DomainGrid grid = page.grid();
-		DomainRow row0 = grid.getRowsInfo().get(0);
-		grid.doubleClickRow(0);
+        soft.assertTrue(!popup.isDomainCodeInputEnabled(), "On double click Domain Code input is disabled");
+        soft.assertTrue(!popup.isSMLDomainInputEnabled(), "On double click SML Domain input is disabled");
 
-		DomainPopup popup = new DomainPopup(driver);
+        popup.clickCancel();
 
-		soft.assertTrue(popup.isLoaded(), "Domain popup is loaded");
+        soft.assertEquals(row0, page.grid().getRowsInfo().get(0), "Row is unchanged");
+        soft.assertTrue(!page.isSaveButtonEnabled(), "Save button is not enabled");
 
-		soft.assertTrue(!popup.isDomainCodeInputEnabled(), "On double click Domain Code input is disabled");
-		soft.assertTrue(!popup.isSMLDomainInputEnabled(), "On double click SML Domain input is disabled");
+        soft.assertAll();
+    }
 
-		String rndString = Generator.randomAlphaNumeric(10);
-		popup.fillSMLSMPIdInput(rndString);
-		popup.clickCancel();
+    @Test(description = "DMN-10")
+    public void editDomain() {
 
-		soft.assertEquals(row0, page.grid().getRowsInfo().get(0), "Row 0 is not changed");
+        SoftAssert soft = new SoftAssert();
+        DomainPage page = new DomainPage(driver);
 
-		page.grid().doubleClickRow(0);
-		popup = new DomainPopup(driver);
-		popup.fillSMLSMPIdInput(rndString);
-		popup.clickOK();
+        soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
+        DomainGrid grid = page.grid();
+        DomainRow row0 = grid.getRowsInfo().get(0);
+        grid.doubleClickRow(0);
 
-		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
-		soft.assertNotEquals(row0, page.grid().getRowsInfo().get(0), "Row 0 is changed");
+        DomainPopup popup = new DomainPopup(driver);
 
-		page.clickSave().confirm();
+        soft.assertTrue(popup.isLoaded(), "Domain popup is loaded");
 
-		DomainRow newRow0 = page.grid().getRowsInfo().get(0);
-		soft.assertNotEquals(row0, newRow0, "Row 0 is changed after save");
-		soft.assertEquals(newRow0.getSmlSmpID(), rndString, "SML SMP ID is changed to the desired string");
+        soft.assertTrue(!popup.isDomainCodeInputEnabled(), "On double click Domain Code input is disabled");
+        soft.assertTrue(!popup.isSMLDomainInputEnabled(), "On double click SML Domain input is disabled");
 
-		soft.assertEquals(page.alertArea.getAlertMessage().getMessage(), SMPMessages.MSG_18, "Proper message displayed");
+        String rndString = Generator.randomAlphaNumeric(10);
+        popup.fillSMLSMPIdInput(rndString);
+        popup.clickCancel();
 
-		soft.assertAll();
-	}
+        soft.assertEquals(row0, page.grid().getRowsInfo().get(0), "Row 0 is not changed");
 
+        page.grid().doubleClickRow(0);
+        popup = new DomainPopup(driver);
+        popup.fillSMLSMPIdInput(rndString);
+        popup.clickOK();
 
-	@Test(description = "DMN-20")
-	public void newDomain(){
-		SoftAssert soft = new SoftAssert();
-		DomainPage page = new DomainPage(driver);
+        soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
+        soft.assertNotEquals(row0, page.grid().getRowsInfo().get(0), "Row 0 is changed");
 
-		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
+        page.clickSave().confirm();
 
-		DomainPopup popup = page.clickNew();
-		soft.assertTrue(popup.isLoaded(), "Domain popup is loaded");
+        DomainRow newRow0 = page.grid().getRowsInfo().get(0);
+        soft.assertNotEquals(row0, newRow0, "Row 0 is changed after save");
+        soft.assertEquals(newRow0.getSmlSmpID(), rndString, "SML SMP ID is changed to the desired string");
 
-		soft.assertTrue(popup.isDomainCodeInputEnabled(), "When defining new domain - Domain Code input is disabled");
-		soft.assertTrue(popup.isSMLDomainInputEnabled(), "When defining new domain -SML Domain input is disabled");
+        soft.assertEquals(page.alertArea.getAlertMessage().getMessage(), SMPMessages.MSG_18, "Proper message displayed");
 
-		String rndString = Generator.randomAlphaNumeric(10);
+        soft.assertAll();
+    }
 
 
-		popup.fillDataForNewDomain(rndString, rndString, rndString, rndString);
-		popup.clickCancel();
+    @Test(description = "DMN-20")
+    public void newDomain() {
+        SoftAssert soft = new SoftAssert();
+        DomainPage page = new DomainPage(driver);
 
-		soft.assertTrue(!page.isSaveButtonEnabled(), "Save button is NOT enabled");
+        soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
 
-		popup = page.clickNew();
-		popup.fillDataForNewDomain(rndString, rndString, rndString, rndString);
-		popup.clickOK();
+        DomainPopup popup = page.clickNew();
+        soft.assertTrue(popup.isLoaded(), "Domain popup is loaded");
 
-		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
+        soft.assertTrue(popup.isDomainCodeInputEnabled(), "When defining new domain - Domain Code input is disabled");
+        soft.assertTrue(popup.isSMLDomainInputEnabled(), "When defining new domain -SML Domain input is disabled");
 
-		page.clickSave().confirm();
+        String rndString = Generator.randomAlphaNumeric(10);
 
-		soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18),
-				"Success message is as expected");
 
-		List<DomainRow> rows = page.grid().getRowsInfo();
-		while (page.pagination.hasNextPage()){
-			page.pagination.goToNextPage();
-			rows.addAll(page.grid().getRowsInfo());
-		}
+        popup.fillDataForNewDomain(rndString, rndString, rndString, rndString);
+        popup.clickCancel();
 
-		boolean found = false;
-		for (DomainRow row : rows) {
-			if(row.getDomainCode().equalsIgnoreCase(rndString)){
-				found = true;
-				break;
-			}
-		}
+        soft.assertTrue(!page.isSaveButtonEnabled(), "Save button is NOT enabled");
 
-		soft.assertTrue(found, "Found new domain in the list of domains");
+        popup = page.clickNew();
+        popup.fillDataForNewDomain(rndString, rndString, rndString, rndString);
+        popup.clickOK();
 
-		soft.assertAll();
-	}
+        soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
 
-	@Test(description = "DMN-30")
-	public void cancelNewDomainCreation(){
-		SoftAssert soft = new SoftAssert();
-		DomainPage page = new DomainPage(driver);
+        page.clickSave().confirm();
 
-		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
+        soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18),
+                "Success message is as expected");
 
-		DomainPopup popup = page.clickNew();
-		soft.assertTrue(popup.isLoaded(), "Domain popup is loaded");
+        List<DomainRow> rows = page.grid().getRowsInfo();
+        while (page.pagination.hasNextPage()) {
+            page.pagination.goToNextPage();
+            rows.addAll(page.grid().getRowsInfo());
+        }
 
-		soft.assertTrue(popup.isDomainCodeInputEnabled(), "When defining new domain - Domain Code input is disabled");
-		soft.assertTrue(popup.isSMLDomainInputEnabled(), "When defining new domain -SML Domain input is disabled");
+        boolean found = false;
+        for (DomainRow row : rows) {
+            if (row.getDomainCode().equalsIgnoreCase(rndString)) {
+                found = true;
+                break;
+            }
+        }
 
-		String rndString = Generator.randomAlphaNumeric(10);
+        soft.assertTrue(found, "Found new domain in the list of domains");
 
+        soft.assertAll();
+    }
 
-		popup.fillDataForNewDomain(rndString, rndString, rndString, rndString);
-		popup.clickOK();
+    @Test(description = "DMN-30")
+    public void cancelNewDomainCreation() {
+        SoftAssert soft = new SoftAssert();
+        DomainPage page = new DomainPage(driver);
 
-		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
+        soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
 
-		page.clickCancel().confirm();
-		new ConfirmationDialog(driver).confirm();
+        DomainPopup popup = page.clickNew();
+        soft.assertTrue(popup.isLoaded(), "Domain popup is loaded");
 
-		List<DomainRow> rows = page.grid().getRowsInfo();
-		while (page.pagination.hasNextPage()){
-			page.pagination.goToNextPage();
-			rows.addAll(page.grid().getRowsInfo());
-		}
+        soft.assertTrue(popup.isDomainCodeInputEnabled(), "When defining new domain - Domain Code input is disabled");
+        soft.assertTrue(popup.isSMLDomainInputEnabled(), "When defining new domain -SML Domain input is disabled");
 
-		boolean found = false;
-		for (DomainRow row : rows) {
-			if(row.getDomainCode().equalsIgnoreCase(rndString)){
-				found = true;
-				break;
-			}
-		}
+        String rndString = Generator.randomAlphaNumeric(10);
 
-		soft.assertTrue(!found, "New domain NOT in the list of domains");
 
-		soft.assertAll();
-	}
+        popup.fillDataForNewDomain(rndString, rndString, rndString, rndString);
+        popup.clickOK();
 
-	@Test(description = "DMN-40")
-	public void deleteDomain(){
-		String rndStr = Generator.randomAlphaNumeric(10);
-		SMPRestClient.createDomain(rndStr);
+        soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
 
-		SoftAssert soft = new SoftAssert();
-		DomainPage page = new DomainPage(driver);
+        page.clickCancel().confirm();
+        new ConfirmationDialog(driver).confirm();
 
-		page.refreshPage();
+        List<DomainRow> rows = page.grid().getRowsInfo();
+        while (page.pagination.hasNextPage()) {
+            page.pagination.goToNextPage();
+            rows.addAll(page.grid().getRowsInfo());
+        }
 
-		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
-		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled");
+        boolean found = false;
+        for (DomainRow row : rows) {
+            if (row.getDomainCode().equalsIgnoreCase(rndString)) {
+                found = true;
+                break;
+            }
+        }
 
-		int index = scrollToDomain(rndStr);
+        soft.assertTrue(!found, "New domain NOT in the list of domains");
 
-		page.grid().selectRow(index);
+        soft.assertAll();
+    }
 
-		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row selected");
+    @Test(description = "DMN-40")
+    public void deleteDomain() {
+        String rndStr = Generator.randomAlphaNumeric(10);
+        SMPRestClient.createDomain(rndStr);
 
-		page.clickDelete();
-		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled (2)");
-		soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled");
-		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
+        SoftAssert soft = new SoftAssert();
+        DomainPage page = new DomainPage(driver);
 
-		page.clickCancel().confirm();
-		new ConfirmationDialog(driver).confirm();
+        page.refreshPage();
 
-		soft.assertTrue(isDomainStillPresent(rndStr), "Row is still present");
+        soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
+        soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled");
 
-		index = scrollToDomain(rndStr);
-		page.grid().selectRow(index);
-		page.clickDelete();
-		page.clickSave().confirm();
-
-		soft.assertTrue(!isDomainStillPresent(rndStr), "Row is still NOT present after delete");
-
-
-		soft.assertAll();
-	}
-
-	@Test(description = "DMN-50")
-	public void deleteDomainWithSG(){
-
-		String domainName = Generator.randomAlphaNumeric(10);
-		String pi = Generator.randomAlphaNumeric(10);
-		String ps = Generator.randomAlphaNumeric(10);
-
-		String expectedErrorMess = String.format("Delete validation error Could not delete domains used by Service groups! Domain: %s (%s ) uses by:1 SG.", domainName, domainName);
-
-		SMPRestClient.createDomain(domainName);
-		SMPRestClient.createServiceGroup(pi, ps, new ArrayList<>(Arrays.asList("smp")),new ArrayList<>(Arrays.asList(domainName)));
-
-		SoftAssert soft = new SoftAssert();
-
-		DomainPage page = new DomainPage(driver);
-		page.refreshPage();
-
-		int index = scrollToDomain(domainName);
-		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 domain with SG");
-		soft.assertTrue(message.getMessage().equalsIgnoreCase(expectedErrorMess), "Desired message appears");
-
-		SMPRestClient.deleteSG(pi);
-		SMPRestClient.deleteDomain(domainName);
-
-		soft.assertAll();
-	}
-
-
-
-
-	private boolean isDomainStillPresent(String domainCode){
-		boolean end = false;
-		List<DomainRow> rows = new ArrayList<>();
-		DomainPage page = new DomainPage(driver);
-		page.pagination.skipToFirstPage();
-
-		while (!end) {
-			page = new DomainPage(driver);
-			rows.addAll(page.grid().getRowsInfo());
-			if(page.pagination.hasNextPage()){
-				page.pagination.goToNextPage();
-			}else{end = true;}
-		}
-
-		boolean found = false;
-		for (DomainRow row : rows) {
-			if(row.getDomainCode().equalsIgnoreCase(domainCode)){
-				found = true;
-			}
-		}
-		return found;
-	}
-
-	private int scrollToDomain(String domainCode){
-		DomainPage page = new DomainPage(driver);
-		page.pagination.skipToFirstPage();
-
-		boolean end = false;
-		while (!end) {
-			page = new DomainPage(driver);
-
-			List<DomainRow> rows = page.grid().getRowsInfo();
-			for (int i = 0; i < rows.size(); i++) {
-				if(rows.get(i).getDomainCode().equalsIgnoreCase(domainCode)){
-					return i;
-				}
-			}
-
-			if(page.pagination.hasNextPage()){
-				page.pagination.goToNextPage();
-			}else{end = true;}
-		}
-
-		return -1;
-	}
+        int index = scrollToDomain(rndStr);
 
+        page.grid().selectRow(index);
 
+        soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row selected");
 
+        page.clickDelete();
+        soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled (2)");
+        soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled");
+        soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
+
+        page.clickCancel().confirm();
+        new ConfirmationDialog(driver).confirm();
+
+        soft.assertTrue(isDomainStillPresent(rndStr), "Row is still present");
+
+        index = scrollToDomain(rndStr);
+        page.grid().selectRow(index);
+        page.clickDelete();
+        page.clickSave().confirm();
+
+        soft.assertTrue(!isDomainStillPresent(rndStr), "Row is still NOT present after delete");
+
+
+        soft.assertAll();
+    }
+
+    @Test(description = "DMN-50")
+    public void deleteDomainWithSG() {
+
+        String domainName = Generator.randomAlphaNumeric(10);
+        String pi = Generator.randomAlphaNumeric(10);
+        String ps = Generator.randomAlphaNumeric(10);
+
+        String expectedErrorMess = String.format("Delete validation error Could not delete domains used by Service groups! Domain: %s (%s ) uses by:1 SG.", domainName, domainName);
+
+        SMPRestClient.createDomain(domainName);
+        SMPRestClient.createServiceGroup(pi, ps, new ArrayList<>(Arrays.asList("smp")), new ArrayList<>(Arrays.asList(domainName)));
+
+        SoftAssert soft = new SoftAssert();
+
+        DomainPage page = new DomainPage(driver);
+        page.refreshPage();
+
+        int index = scrollToDomain(domainName);
+        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 domain with SG");
+        soft.assertTrue(message.getMessage().equalsIgnoreCase(expectedErrorMess), "Desired message appears");
+
+        SMPRestClient.deleteSG(pi);
+        SMPRestClient.deleteDomain(domainName);
+
+        soft.assertAll();
+    }
+
+    @Test(description = "DMN-60")
+    public void duplicateDomainCreation() {
+        SoftAssert soft = new SoftAssert();
+        DomainPage page = new DomainPage(driver);
+        String errorMsg = "The Domain code already exists!";
+        soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
+        DomainGrid grid = page.grid();
+        DomainRow row0 = grid.getRowsInfo().get(0);
+        DomainPopup popup = page.clickNew();
+        soft.assertTrue(popup.isLoaded(), "Domain popup is loaded");
+        soft.assertTrue(popup.isDomainCodeInputEnabled(), "When defining new domain - Domain Code input is disabled");
+        soft.assertTrue(popup.isSMLDomainInputEnabled(), "When defining new domain -SML Domain input is disabled");
+        String rndString = Generator.randomAlphaNumeric(10);
+        popup.fillDataForNewDomain(row0.getDomainCode(), rndString, rndString, rndString);
+        soft.assertEquals(popup.getDuplicateDomainErrorMsgText(), errorMsg, "The message is not matching with our expected error message");
+        soft.assertFalse(popup.isEnableOkButton(), "Ok button is enable");
+        soft.assertTrue(popup.isEnableCancelButton(), "Cancel button is disable");
+        popup.clickCancel();
+        soft.assertFalse(page.isSaveButtonEnabled(), "Save button is enabled");
+        soft.assertAll();
+    }
+
+    @Test(description = "DMN-70")
+    public void onlyDomainCodeSavingMsgVerify() {
+        SoftAssert soft = new SoftAssert();
+        DomainPage page = new DomainPage(driver);
+//        String errorMsg = "The domain should have a defined signature CertAlias.";
+        soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
+        int index = scrollToSmlDomain("");
+        if (index >= 0) {
+            try {
+                page.grid().selectRow(index);
+                page.clickDelete();
+                page.clickSave().confirm();
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw e;
+            }
+        }
+        String rndString = Generator.randomAlphaNumeric(10);
+        DomainPopup popup = page.clickNew();
+        soft.assertTrue(popup.isLoaded(), "Domain popup is loaded");
+        soft.assertTrue(popup.isDomainCodeInputEnabled(), "When defining new domain - Domain Code input is disabled");
+        popup.clearAndFillDomainCodeInput(rndString);
+        soft.assertTrue(popup.isEnableOkButton(), "Ok button is disable");
+        popup.clickOK();
+        soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
+        page.clickSave().confirm();
+        soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18),
+                "Success message is as expected");
+        index = scrollToSmlDomain("");
+        if (index >= 0) {
+            page.grid().scrollRow(index);
+        }
+        int rowNumber = index + 1;
+        page.grid().mouseHoverOnDomainCode(rowNumber);
+//        WebElement text = driver.findElement(By.xpath("//*[text()='The domain should have a defined signature CertAlias.']"));
+//        soft.assertEquals(text.getText(),errorMsg, "the message 'The domain should have a defined signature CertAlias.' is not displayed");
+        soft.assertAll();
+    }
+
+    private boolean isDomainStillPresent(String domainCode) {
+        boolean end = false;
+        List<DomainRow> rows = new ArrayList<>();
+        DomainPage page = new DomainPage(driver);
+        page.pagination.skipToFirstPage();
+
+        while (!end) {
+            page = new DomainPage(driver);
+            rows.addAll(page.grid().getRowsInfo());
+            if (page.pagination.hasNextPage()) {
+                page.pagination.goToNextPage();
+            } else {
+                end = true;
+            }
+        }
+
+        boolean found = false;
+        for (DomainRow row : rows) {
+            if (row.getDomainCode().equalsIgnoreCase(domainCode)) {
+                found = true;
+            }
+        }
+        return found;
+    }
+
+    private int scrollToDomain(String domainCode) {
+        DomainPage page = new DomainPage(driver);
+        page.pagination.skipToFirstPage();
+
+        boolean end = false;
+        while (!end) {
+            page = new DomainPage(driver);
+
+            List<DomainRow> rows = page.grid().getRowsInfo();
+            for (int i = 0; i < rows.size(); i++) {
+                if (rows.get(i).getDomainCode().equalsIgnoreCase(domainCode)) {
+                    return i;
+                }
+            }
+
+            if (page.pagination.hasNextPage()) {
+                page.pagination.goToNextPage();
+            } else {
+                end = true;
+            }
+        }
+
+        return -1;
+    }
+
+    private int scrollToSmlDomain(String smlDomain) {
+        try {
+            DomainPage page = new DomainPage(driver);
+            page.pagination.skipToFirstPage();
+            boolean end = false;
+            while (!end) {
+                page = new DomainPage(driver);
+                List<DomainRow> rows = page.grid().getRowsInfo();
+                for (int i = 0; i < rows.size(); i++) {
+                    if (rows.get(i).getSmlDomain().equalsIgnoreCase(smlDomain)) {
+                        return i;
+                    }
+                }
+                if (page.pagination.hasNextPage()) {
+                    page.pagination.goToNextPage();
+                } else {
+                    end = true;
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw e;
+        }
+        return -1;
+    }
 }
diff --git a/smp-ui-tests/src/test/java/ui/UsersPgTest.java b/smp-ui-tests/src/test/java/ui/UsersPgTest.java
index e196b1a2ca204176a98f834a030109e580f1be42..a23996f72b3e88fcdc34ddc075a9c3af95b6e9b2 100644
--- a/smp-ui-tests/src/test/java/ui/UsersPgTest.java
+++ b/smp-ui-tests/src/test/java/ui/UsersPgTest.java
@@ -22,496 +22,557 @@ 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-10")
+    public void newUser() {
+        String username = Generator.randomAlphaNumeric(10);
+        String validPass = "QW!@qw12";
 
-		SoftAssert soft = new SoftAssert();
+        SoftAssert soft = new SoftAssert();
 
-		UsersPage usersPage = new UsersPage(driver);
+        UsersPage usersPage = new UsersPage(driver);
 
-//		soft.assertTrue(usersPage.isNewButtonEnabled(), "New button should be enabled");
+        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");
+        UserPopup popup = usersPage.clickNew();
+        soft.assertTrue(!popup.isOKButtonActive(), "OK button should be disabled until valid data is filled in the popup");
 
-		popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
+        popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
 
-		popup.clickUserDetailsToggle();
+        popup.clickUserDetailsToggle();
 
-		popup.fillDetailsForm(username, validPass, validPass);
-		popup.clickOK();
+        popup.fillDetailsForm(username, validPass, validPass);
+        popup.clickOK();
 
-		soft.assertTrue(usersPage.isSaveButtonEnabled(), "Save button is enabled");
-		soft.assertTrue(usersPage.isCancelButtonEnabled(), "Cancel button is enabled");
+        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().isError(), "Message listed is success");
-		soft.assertTrue(usersPage.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message listed is as expected");
+        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(isUserListed(username), "User present in the page");
+        soft.assertTrue(isUserListed(username), "User present in the page");
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
 
-	@Test(description = "USR-20")
-	public void usernameValidation() {
-		String username = Generator.randomAlphaNumeric(10);
-		String validPass = "QW!@qw12";
+    @Test(description = "USR-20")
+    public void usernameValidation() {
+        String username = Generator.randomAlphaNumeric(10);
+        String validPass = "QW!@qw12";
 
-		SoftAssert soft = new SoftAssert();
+        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");
+        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.rolesSelect.selectOptionWithText("SMP_ADMIN");
+        popup.rolesSelect.selectOptionWithText("SMP_ADMIN");
 
-		popup.clickUserDetailsToggle();
+        popup.clickUserDetailsToggle();
 
-		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.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)");
 
 
-		soft.assertAll();
-	}
+        soft.assertAll();
+    }
 
-	@SuppressWarnings("SpellCheckingInspection")
-	@Test(description = "USR-30")
-	public void passwordValidation() {
+    @SuppressWarnings("SpellCheckingInspection")
+    @Test(description = "USR-30")
+    public void passwordValidation() {
 
-		ArrayList<String> passToValidate = new ArrayList<>(Arrays.asList("qwqw",
-				"QWERQWERQWERQWERQWERQWERQWERQWE33",
+        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);
 
-		for (String pass : passToValidate) {
+        for (String pass : passToValidate) {
 //			usersPage.refreshPage();
-			usersPage.clickVoidSpace();
+            usersPage.clickVoidSpace();
 
-			UserPopup popup = usersPage.clickNew();
-			popup.rolesSelect.selectOptionWithText("SMP_ADMIN");
-			popup.clickUserDetailsToggle();
+            UserPopup popup = usersPage.clickNew();
+            popup.rolesSelect.selectOptionWithText("SMP_ADMIN");
+            popup.clickUserDetailsToggle();
 
-			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));
-		}
+            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.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();
 
-		log.info("created user " + username);
-		UsersPage page = new UsersPage(driver);
-		page.refreshPage();
+        log.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 = scrollToUser(username);
-		page.grid().selectRow(index);
-		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");
+        int index = 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();
-		soft.assertTrue(isUserListed(username), "After canceling delete user is still listed");
+        page.clickCancel().confirm();
+        new ConfirmationDialog(driver).confirm();
+        soft.assertTrue(isUserListed(username), "After canceling delete user is still listed");
 
 
-		index = scrollToUser(username);
-		page.grid().selectRow(index);
-		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select(2)");
+        index = scrollToUser(username);
+        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(!isUserListed(username), "After saving deleted user is not listed");
+        soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message listed is as expected");
+        soft.assertTrue(!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 = scrollToUserWithRole("SYSTEM_ADMIN");
+        UsersPage page = new UsersPage(driver);
+        int index = 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 = scrollToUserWithRole("SMP_ADMIN");
+        UsersPage page = new UsersPage(driver);
+        int index = 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 = scrollToUser(username);
-		page.grid().selectRow(index);
-		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");
+        int index = 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();
 
-		log.info("Created username " + username);
+        log.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 = scrollToUser(username);
-		page.grid().selectRow(index);
-		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");
+        int index = 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();
-		soft.assertTrue(isUserListed(username), "After canceling delete user is still listed");
+        page.clickCancel().confirm();
+        new ConfirmationDialog(driver).confirm();
+        soft.assertTrue(isUserListed(username), "After canceling delete user is still listed");
 
 
-		index = scrollToUser(username);
-		page.grid().selectRow(index);
-		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select(2)");
+        index = scrollToUser(username);
+        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(!isUserListed(username), "After saving deleted user is not listed");
+        soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message is as expected");
+        soft.assertTrue(!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");
-		log.info("Created username" + username);
-		SoftAssert soft = new SoftAssert();
+        String username = Generator.randomAlphaNumeric(10);
+        SMPRestClient.createUser(username, "SERVICE_GROUP_ADMIN");
+        log.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 = scrollToUser(username);
-		page.grid().selectRow(index);
-		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");
+        int index = 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();
-		page.waitForRowsToLoad();
-		soft.assertTrue(isUserListed(username), "After canceling delete user is still listed");
+        page.clickCancel().confirm();
+        new ConfirmationDialog(driver).confirm();
+        page.waitForRowsToLoad();
+        soft.assertTrue(isUserListed(username), "After canceling delete user is still listed");
 
 
-		index = scrollToUser(username);
-		page.grid().selectRow(index);
+        index = 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(!isUserListed(username), "After saving deleted user is not listed");
+        soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18), "Message is as expected");
+        soft.assertTrue(!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)))
+        );
 
-		log.info("Created username " + username);
-		log.info("Created service group " + pi);
+        log.info("Created username " + username);
+        log.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 = scrollToUser(username);
-		page.grid().selectRow(index);
-		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");
+        int index = 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)))
+        );
 
-		log.info("Created username "+ username);
+        log.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 = scrollToUser(username);
-		page.grid().selectRow(index);
-		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");
+        int index = 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();
-	}
+        soft.assertAll();
+    }
 
+    @Test(description = "USR-121")
+    public void duplicateUserCreation() {
+        SoftAssert soft = new SoftAssert();
+        String validPass = "QW!@qw12";
+        String errorMsg = "×\n" + "The operation 'update' not completed successfully. Unexpected technical error occurred.";
+        UsersPage page = new UsersPage(driver);
+        List<UserRowInfo> rows = page.grid().getRows();
+        UserRowInfo userRowInfo = null;
+        for (UserRowInfo row : rows) {
+            if (!row.getUsername().equalsIgnoreCase("smp")) {
+                userRowInfo = row;
+                break;
+            }
+        }
+        if (null != userRowInfo) {
+            String userName = userRowInfo.getUsername();
+            soft.assertTrue(page.isNewButtonEnabled(), "New button should be enabled");
 
-	private boolean isUserListed(String username) {
-		boolean end = false;
-
-		UsersPage page = new UsersPage(driver);
-		page.pagination.skipToFirstPage();
-
-		while (!end) {
-			page = new UsersPage(driver);
-			List<UserRowInfo> rows = page.grid().getRows();
-
-			for (UserRowInfo row : rows) {
-				if (row.getUsername().equalsIgnoreCase(username)) {
-					return true;
-				}
-			}
-
-			if (page.pagination.hasNextPage()) {
-				page.pagination.goToNextPage();
-			} else {
-				end = true;
-			}
-		}
-
-		return false;
-	}
-
-	private int scrollToUser(String username) {
-
-		UsersPage page = new UsersPage(driver);
-		page.pagination.skipToFirstPage();
-
-		boolean end = false;
-		while (!end) {
-			page = new UsersPage(driver);
-
-			List<UserRowInfo> rows = page.grid().getRows();
-			for (int i = 0; i < rows.size(); i++) {
-				if (rows.get(i).getUsername().equalsIgnoreCase(username)) {
-					return i;
-				}
-			}
-
-			if (page.pagination.hasNextPage()) {
-				page.pagination.goToNextPage();
-			} else {
-				end = true;
-			}
-		}
-
-		return -1;
-	}
-
-	private int scrollToUserWithRole(String role) {
-		UsersPage page = new UsersPage(driver);
-		page.pagination.skipToFirstPage();
-
-		boolean end = false;
-		while (!end) {
-			page = new UsersPage(driver);
-
-			List<UserRowInfo> rows = page.grid().getRows();
-			for (int i = 0; i < rows.size(); i++) {
-				if (rows.get(i).getRole().equalsIgnoreCase(role)) {
-					return i;
-				}
-			}
-
-			if (page.pagination.hasNextPage()) {
-				page.pagination.goToNextPage();
-			} else {
-				end = true;
-			}
-		}
-
-		return -1;
-	}
+            UserPopup popup = page.clickNew();
+            soft.assertTrue(!popup.isOKButtonActive(), "OK button is enable before valid data is filled in the popup");
+
+            popup.rolesSelect.selectOptionWithText("SYSTEM_ADMIN");
+
+            popup.clickUserDetailsToggle();
+            popup.fillDetailsForm(userName, validPass, validPass);
+            popup.clickOK();
+
+            soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
+            soft.assertTrue(page.isCancelButtonEnabled(), "Cancel button is enabled");
+
+            page.clickSave().confirm();
+            soft.assertEquals(page.getDuplicateUserErrorMsg(), errorMsg, "The user page is not containing the expeced error message");
+            soft.assertAll();
+        } else {
+            soft.fail("unable to retrieve existing user details");
+        }
+    }
+
+    @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";
+        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.rolesSelect.selectOptionWithText("SMP_ADMIN");
+
+        popup.clickUserDetailsToggle();
+
+        popup.fillDetailsForm(username, validPass,  confirmPass);
+        soft.assertEquals(popup.getPasswordUnmatchingMsg(),errorMsg,"confirmation input does not contain the message 'Passwords do not match' .");
+        soft.assertTrue(!popup.isOKButtonActive(), "OK button is enabled before valid data is filled in the popup(2)");
+        soft.assertAll();
+    }
+
+
+    private boolean isUserListed(String username) {
+        boolean end = false;
+
+        UsersPage page = new UsersPage(driver);
+        page.pagination.skipToFirstPage();
+
+        while (!end) {
+            page = new UsersPage(driver);
+            List<UserRowInfo> rows = page.grid().getRows();
+
+            for (UserRowInfo row : rows) {
+                if (row.getUsername().equalsIgnoreCase(username)) {
+                    return true;
+                }
+            }
+
+            if (page.pagination.hasNextPage()) {
+                page.pagination.goToNextPage();
+            } else {
+                end = true;
+            }
+        }
+
+        return false;
+    }
+
+    private int scrollToUser(String username) {
+
+        UsersPage page = new UsersPage(driver);
+        page.pagination.skipToFirstPage();
+
+        boolean end = false;
+        while (!end) {
+            page = new UsersPage(driver);
+
+            List<UserRowInfo> rows = page.grid().getRows();
+            for (int i = 0; i < rows.size(); i++) {
+                if (rows.get(i).getUsername().equalsIgnoreCase(username)) {
+                    return i;
+                }
+            }
+
+            if (page.pagination.hasNextPage()) {
+                page.pagination.goToNextPage();
+            } else {
+                end = true;
+            }
+        }
+
+        return -1;
+    }
+
+    private int scrollToUserWithRole(String role) {
+        UsersPage page = new UsersPage(driver);
+        page.pagination.skipToFirstPage();
+
+        boolean end = false;
+        while (!end) {
+            page = new UsersPage(driver);
+
+            List<UserRowInfo> rows = page.grid().getRows();
+            for (int i = 0; i < rows.size(); i++) {
+                if (rows.get(i).getRole().equalsIgnoreCase(role)) {
+                    return i;
+                }
+            }
+
+            if (page.pagination.hasNextPage()) {
+                page.pagination.goToNextPage();
+            } else {
+                end = true;
+            }
+        }
+
+        return -1;
+    }
 
 
 }