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 a5ced38bd67063b74b9c86ccb7fc8b2260319a8d..4f6eeb4cce58acbb902a5d47d762826388888459 100644
--- a/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java
+++ b/smp-ui-tests/src/main/java/pages/domain/DomainPopup.java
@@ -49,6 +49,9 @@ public class DomainPopup extends PageComponent {
 	@FindBy(css = "div.mat-form-field-infix > div.ng-star-inserted")
 	WebElement domainCodeValidationError;
 
+	@FindBy(css = "#MetadataTextArea")
+	private WebElement metadataTextArea;
+
 	@FindBy(css = "#smlClientKeyAlias_id")
 	WebElement smlClientAliasSelectContainer;
 	GenericSelect smlClientAliasSelect;
@@ -65,6 +68,7 @@ public class DomainPopup extends PageComponent {
 		waitForElementToBeGone(cancelBtn);
 	}
 
+
 	public boolean isLoaded() {
 		log.info("checking if domain popup is properly loaded");
 		return isVisible(okBtn)
@@ -143,7 +147,29 @@ public class DomainPopup extends PageComponent {
 		}
 
 	}
+	public String domainCode63CharValidationGetErrMsg() {
+		try {
+			waitForElementToBeVisible(domainCodeValidationError);
+			return domainCodeValidationError.getAttribute("value");
+		} catch (Exception e) {
+		}
+		return null;
+	}
 
+	public String getSmlSmpId63CharValidationMsg() {
+		WebElement invalidSmlSmpIdErrorMsg = driver.findElement(By.cssSelector("div.mat-form-field-infix > div.ng-star-inserted"));
+		try {
+			waitForElementToBeVisible(invalidSmlSmpIdErrorMsg);
+			return invalidSmlSmpIdErrorMsg.getAttribute("value");
+		} catch (Exception e) {
+		}
+		return null;
+	}
+
+	public String xmlFieldVALUE(){
+		log.info("value is "+metadataTextArea.getAttribute("value"));
+		return metadataTextArea.getAttribute("value");
+	}
 	public void clearAndFillDomainCodeInput(String domainCode) {
 		log.info("clear and fill domain code data");
 		clearAndFillInput(domainCodeInput, domainCode);
diff --git a/smp-ui-tests/src/main/java/pages/service_groups/edit/ServiceMetadataPopup.java b/smp-ui-tests/src/main/java/pages/service_groups/edit/ServiceMetadataPopup.java
index 0b98f19153ad4469ed169d93140ec628ce2ea735..b3998e7587e09a09395220ea5335463d273d316f 100644
--- a/smp-ui-tests/src/main/java/pages/service_groups/edit/ServiceMetadataPopup.java
+++ b/smp-ui-tests/src/main/java/pages/service_groups/edit/ServiceMetadataPopup.java
@@ -28,7 +28,7 @@ public class ServiceMetadataPopup extends PageComponent {
 	private WebElement clearButton;
 	@FindBy(css = "mat-card-content > mat-toolbar > mat-toolbar-row > button:nth-child(2)")
 	private WebElement generateXMLButton;
-	@FindBy(css = "mat-card-content > mat-toolbar > mat-toolbar-row > button:nth-child(3)")
+	@FindBy(css = "mat-card-content > mat-toolbar > mat-toolbar-row > button:nth-child(4)")
 	private WebElement validateButton;
 
 	@FindBy(css = "#MetadataTextArea")
@@ -49,6 +49,9 @@ public class ServiceMetadataPopup extends PageComponent {
 	@FindBy(xpath = "//span[text() ='Metadata wizard']")
 	private WebElement metadataWizardBtn;
 
+	@FindBy(css = "mat-card-content > div > div.ng-star-inserted:nth-child(2)")
+	private WebElement xmlValidationMsg;
+
 	@FindBy(css = "mat-dialog-content #domain_id")
 	private WebElement domainSelectContainer;
 	private GenericSelect domainSelect;
@@ -73,6 +76,11 @@ public class ServiceMetadataPopup extends PageComponent {
 
 	}
 
+	public String xmlFieldVALUE(){
+		log.info("value is "+metadataTextArea.getAttribute("value"));
+		return metadataTextArea.getAttribute("value");
+	}
+
 	public void fillForm(String domain, String docID, String docScheme) {
 		waitForElementToBeVisible(documentIdentifierInput);
 		domainSelect.selectWithIndex(0);
@@ -83,7 +91,26 @@ public class ServiceMetadataPopup extends PageComponent {
 		generateXMLButton.click();
 
 	}
+	public String captureTextOfMetadataTextArea(){
+		return metadataTextArea.getText();
+	}
+
+	public void clickValidateBtn(){
+		waitForElementToBeClickable(validateButton).click();
+	}
+	public void clickGenerateXMLBtn(){
+		waitForElementToBeClickable(generateXMLButton).click();
+	}
+	public void clickClearBtn(){
+		waitForElementToBeClickable(clearButton).click();
+	}
+	public String getXMLValidationMessage(){
+		return xmlValidationMsg.getText();
+	}
+	public void addTextToMetadataTextArea(String generator){
+		metadataTextArea.sendKeys(generator);
 
+	}
 
 	public String docIDFieldValue(){
 		return documentIdentifierInput.getAttribute("value");
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 2e8e26222118af2ffaddc003d1c792ba28b6879f..f34c534e769ccc0105f57232800fe1c5f9ee8c58 100644
--- a/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java
+++ b/smp-ui-tests/src/main/java/utils/enums/SMPMessages.java
@@ -76,4 +76,15 @@ public class SMPMessages {
 	public static final String SMLSMPID_VALIDATION_MESSAGE = "SML SMP ID should be up to 63 characters long, should only contain alphanumeric and hyphen characters, should not start with a digit nor a hyphen and should not end with a hyphen.";
 	public static final String USER_EMAIL_VALIDATION_MESSAGE = "Email is invalid!";
 	public static final String DOMAINCODE_VALIDATION_MESSAGE = "Domain code must contain only chars and numbers and must be less than 63 chars long.";
+	public static final String VALID_XML_MESSAGE = "Servicemetadata is valid!";
+	public static final String INVALID_XML_MESSAGE1 = "SAXParseException: XML document structures must start and end within the same entity.";
+	public static final String INVALID_XML_MESSAGE2 = "SAXParseException: Content is not allowed in prolog.";
+	public static final String INVALID_XML_MESSAGE3 = "SAXParseException: Content is not allowed in trailing section.";
+	public static final String INVALID_XML_MESSAGE4 = "SAXParseException: cvc-complex-type.2.3: Element 'ServiceMetadata' cannot have character [children], because the type's content type is element-only.";
+	public static final String INVALID_XML_MESSAGE5 = "SAXParseException: The end-tag for element type \"ServiceMetadata\" must end with a '>' delimiter.";
+	public static final String INVALID_XML_MESSAGE6 = "SAXParseException: cvc-complex-type.2.3: Element 'Process' cannot have character [children], because the type's content type is element-only.";
+	public static final String EMPTY_XML_WARN_MESSAGE = "Service metadata xml must not be empty";
+	public static final String EMPTY_XML_MESSAGE = "Valid service metadata XML is required!";
+	public static final String INVALID_XML_MESSAGE7 = "SAXParseException: The markup in the document following the root element must be well-formed.";
+
 }
diff --git a/smp-ui-tests/src/test/java/ui/DomainPgTest.java b/smp-ui-tests/src/test/java/ui/DomainPgTest.java
index 054710a9127e060ed879fc3add9c130ecbca1e43..635c3ea6d5b071dd796938034a1d3cfd49fdf2c7 100644
--- a/smp-ui-tests/src/test/java/ui/DomainPgTest.java
+++ b/smp-ui-tests/src/test/java/ui/DomainPgTest.java
@@ -18,29 +18,30 @@ import utils.Generator;
 import utils.enums.SMPMessages;
 import utils.rest.SMPRestClient;
 
+import java.awt.*;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
 public class DomainPgTest extends BaseTest {
-
+	
 	@AfterMethod
-	public void logoutAndReset() {
+	public void logoutAndReset(){
 		genericLogoutProcedure();
 	}
 
-
+	
 	@BeforeMethod
-	public void loginAndGoToDomainPage() {
-
+	public void loginAndGoToDomainPage(){
+		
 		SMPPage page = genericLoginProcedure("SYS_ADMIN");
 
 		logger.info("Going to Domain page");
 		page.sidebar.goToPage(DomainPage.class);
 	}
-
+	
 	@Test(description = "DMN-0")
-	public void openDomainPage() {
+	public void openDomainPage(){
 		SoftAssert soft = new SoftAssert();
 		DomainPage page = new DomainPage(driver);
 
@@ -48,7 +49,7 @@ public class DomainPgTest extends BaseTest {
 		DomainGrid grid = page.grid();
 		DomainRow row0 = grid.getRowsInfo().get(0);
 		grid.doubleClickRow(0);
-
+		
 		DomainPopup popup = new DomainPopup(driver);
 
 		soft.assertTrue(popup.isLoaded(), "Domain popup is loaded");
@@ -57,7 +58,7 @@ public class DomainPgTest extends BaseTest {
 		soft.assertTrue(!popup.isSMLDomainInputEnabled(), "On double click SML Domain input is disabled");
 
 		popup.clickCancel();
-
+		
 		soft.assertEquals(row0, page.grid().getRowsInfo().get(0), "Row is unchanged");
 		soft.assertTrue(!page.isSaveButtonEnabled(), "Save button is not enabled");
 
@@ -65,11 +66,11 @@ public class DomainPgTest extends BaseTest {
 	}
 
 	@Test(description = "DMN-10")
-	public void editDomain() {
+	public void editDomain(){
 
 		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);
@@ -109,7 +110,7 @@ public class DomainPgTest extends BaseTest {
 
 
 	@Test(description = "DMN-20")
-	public void newDomain() {
+	public void newDomain(){
 		SoftAssert soft = new SoftAssert();
 		DomainPage page = new DomainPage(driver);
 
@@ -141,14 +142,14 @@ public class DomainPgTest extends BaseTest {
 				"Success message is as expected");
 
 		List<DomainRow> rows = page.grid().getRowsInfo();
-		while (page.pagination.hasNextPage()) {
+		while (page.pagination.hasNextPage()){
 			page.pagination.goToNextPage();
 			rows.addAll(page.grid().getRowsInfo());
 		}
 
 		boolean found = false;
 		for (DomainRow row : rows) {
-			if (row.getDomainCode().equalsIgnoreCase(rndString)) {
+			if(row.getDomainCode().equalsIgnoreCase(rndString)){
 				found = true;
 				break;
 			}
@@ -160,7 +161,7 @@ public class DomainPgTest extends BaseTest {
 	}
 
 	@Test(description = "DMN-30")
-	public void cancelNewDomainCreation() {
+	public void cancelNewDomainCreation(){
 		SoftAssert soft = new SoftAssert();
 		DomainPage page = new DomainPage(driver);
 
@@ -176,6 +177,11 @@ public class DomainPgTest extends BaseTest {
 
 
 		popup.fillDataForNewDomain(rndString, rndString, rndString, rndString);
+		try {
+			Thread.sleep(1000);
+		} catch (InterruptedException e) {
+			e.printStackTrace();
+		}
 		popup.clickOK();
 
 		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
@@ -184,14 +190,14 @@ public class DomainPgTest extends BaseTest {
 		new ConfirmationDialog(driver).confirm();
 
 		List<DomainRow> rows = page.grid().getRowsInfo();
-		while (page.pagination.hasNextPage()) {
+		while (page.pagination.hasNextPage()){
 			page.pagination.goToNextPage();
 			rows.addAll(page.grid().getRowsInfo());
 		}
 
 		boolean found = false;
 		for (DomainRow row : rows) {
-			if (row.getDomainCode().equalsIgnoreCase(rndString)) {
+			if(row.getDomainCode().equalsIgnoreCase(rndString)){
 				found = true;
 				break;
 			}
@@ -203,7 +209,7 @@ public class DomainPgTest extends BaseTest {
 	}
 
 	@Test(description = "DMN-40")
-	public void deleteDomain() {
+	public void deleteDomain(){
 		String rndStr = Generator.randomAlphaNumeric(10);
 		SMPRestClient.createDomain(rndStr);
 
@@ -215,7 +221,7 @@ public class DomainPgTest extends BaseTest {
 		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
 		soft.assertTrue(!page.isDeleteButtonEnabled(), "Delete button is not enabled");
 
-		int index = page.grid().scrollToDomain(rndStr);
+        int index = page.grid().scrollToDomain(rndStr);
 
 		page.grid().selectRow(index);
 
@@ -229,21 +235,21 @@ public class DomainPgTest extends BaseTest {
 		page.clickCancel().confirm();
 		new ConfirmationDialog(driver).confirm();
 
-		soft.assertTrue(page.grid().isDomainStillPresent(rndStr), "Row is still present");
+        soft.assertTrue(page.grid().isDomainStillPresent(rndStr), "Row is still present");
 
-		index = page.grid().scrollToDomain(rndStr);
-		page.grid().selectRow(index);
-		page.clickDelete();
-		page.clickSave().confirm();
+        index = page.grid().scrollToDomain(rndStr);
+        page.grid().selectRow(index);
+        page.clickDelete();
+        page.clickSave().confirm();
 
-		soft.assertTrue(!page.grid().isDomainStillPresent(rndStr), "Row is still NOT present after delete");
+        soft.assertTrue(!page.grid().isDomainStillPresent(rndStr), "Row is still NOT present after delete");
 
 
 		soft.assertAll();
 	}
 
 	@Test(description = "DMN-50")
-	public void deleteDomainWithSG() {
+	public void deleteDomainWithSG(){
 
 		String domainName = Generator.randomAlphaNumeric(10);
 		String pi = Generator.randomAlphaNumeric(10);
@@ -252,16 +258,16 @@ public class DomainPgTest extends BaseTest {
 		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)));
+		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 = page.grid().scrollToDomain(domainName);
-		page.grid().selectRow(index);
-		soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");
+        int index = page.grid().scrollToDomain(domainName);
+        page.grid().selectRow(index);
+        soft.assertTrue(page.isDeleteButtonEnabled(), "Delete button is enabled after row select");
 
 		page.clickDelete();
 		AlertMessage message = page.alertArea.getAlertMessage();
@@ -274,66 +280,66 @@ public class DomainPgTest extends BaseTest {
 		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");
-		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");
-		soft.assertTrue(popup.isSMLDomainInputEnabled(), "When defining new domain -SML Domain input is disabled");
-		popup.fillDataForNewDomain(rndString, rndString, rndString, rndString);
-		popup.clickOK();
-		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
-		page.clickSave().confirm();
-		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");
-		popup.fillDataForNewDomain(rndString, 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 disabled");
-		popup.clickCancel();
-		soft.assertAll();
-	}
-
-	@Test(description = "DMN-70")
-	public void onlyDomainCodeSavingMsgVerify() {
-		SoftAssert soft = new SoftAssert();
-		DomainPage page = new DomainPage(driver);
-		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
-		int index = page.grid().scrollToSmlDomain("");
-		if (index >= 0) {
-			try {
-				page.grid().selectRow(index);
-				page.clickDelete();
-				page.clickSave().confirm();
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-		}
-		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 disabled");
-		popup.clickOK();
-		soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
-		page.clickSave().confirm();
-		soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18),
-				"Success message is as expected");
-		index = page.grid().scrollToSmlDomain("");
-		if (index >= 0) {
-			page.grid().scrollRow(index);
-		}
-		int rowNumber = index + 1;
-		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");
+        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");
+        soft.assertTrue(popup.isSMLDomainInputEnabled(), "When defining new domain -SML Domain input is disabled");
+        popup.fillDataForNewDomain(rndString, rndString, rndString, rndString);
+        popup.clickOK();
+        soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
+        page.clickSave().confirm();
+        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");
+        popup.fillDataForNewDomain(rndString, 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 disabled");
+        popup.clickCancel();
+        soft.assertAll();
+    }
+
+    @Test(description = "DMN-70")
+    public void onlyDomainCodeSavingMsgVerify() {
+        SoftAssert soft = new SoftAssert();
+        DomainPage page = new DomainPage(driver);
+        soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
+        int index = page.grid().scrollToSmlDomain("");
+        if (index >= 0) {
+            try {
+                page.grid().selectRow(index);
+                page.clickDelete();
+                page.clickSave().confirm();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        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 disabled");
+        popup.clickOK();
+        soft.assertTrue(page.isSaveButtonEnabled(), "Save button is enabled");
+        page.clickSave().confirm();
+        soft.assertTrue(page.alertArea.getAlertMessage().getMessage().equalsIgnoreCase(SMPMessages.MSG_18),
+                "Success message is as expected");
+        index = page.grid().scrollToSmlDomain("");
+        if (index >= 0) {
+            page.grid().scrollRow(index);
+        }
+        int rowNumber = index + 1;
+        soft.assertAll();
+    }
 
 	@Test(description = "DMN-80")
 	public void onlyDomainCodeAndSMLDomainSavingMsgVerify() {
@@ -366,23 +372,23 @@ public class DomainPgTest extends BaseTest {
 		SoftAssert soft = new SoftAssert();
 		DomainPage page = new DomainPage(driver);
 		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
-		String pass = "test123";
+		String pass="test123";
 		KeyStoreEditDialog keyStoreEdit = page.clickEditKeyStore();
 		int keyStoreRowBeforeAddition = keyStoreEdit.grid().getRowsNo();
 		KeyStoreImportDialog keyStoreImport = keyStoreEdit.clickImportKeystore();
 		keyStoreImport.chooseKeystoreFile("src/main/resources/keystore/keystore_dummy1.jks");
-		Assert.assertEquals(keyStoreImport.getKeyStoreFileName(), "keystore_dummy1.jks", "the keystore file name is not correct");
+		Assert.assertEquals(keyStoreImport.getKeyStoreFileName(),"keystore_dummy1.jks","the keystore file name is not correct");
 		keyStoreImport.fillPassword(pass);
 		keyStoreImport.clickImportBtn();
 		keyStoreEdit.clickCloseInKeystore();
 		soft.assertFalse(page.alertArea.getAlertMessage().isError());
 		keyStoreEdit = page.clickEditKeyStore();
 		int keyStoreRowAfterAddition = keyStoreEdit.grid().getRowsNo();
-		soft.assertEquals(keyStoreRowAfterAddition, keyStoreRowBeforeAddition + 1, "KeyStore is not added to the grid");
-		if (keyStoreRowAfterAddition > 1) {
-			keyStoreEdit.grid().deleteKeyStore(keyStoreRowAfterAddition - 1).confirm();
+		soft.assertEquals(keyStoreRowAfterAddition,keyStoreRowBeforeAddition+1, "KeyStore is not added to the grid");
+		if(keyStoreRowAfterAddition > 1){
+			keyStoreEdit.grid().deleteKeyStore(keyStoreRowAfterAddition-1).confirm();
 			int keyStoreRowAfterDeletion = keyStoreEdit.grid().getRowsNo();
-			soft.assertEquals(keyStoreRowAfterDeletion, keyStoreRowAfterAddition - 1, "KeyStore is not delete from the grid");
+			soft.assertEquals(keyStoreRowAfterDeletion,keyStoreRowAfterAddition-1, "KeyStore is not delete from the grid");
 			keyStoreEdit.clickCloseInKeystore();
 			soft.assertFalse(page.alertArea.getAlertMessage().isError());
 		}
@@ -391,43 +397,43 @@ public class DomainPgTest extends BaseTest {
 
 	@Test(description = "DMN-100")
 	public void allowDuplicateKeyStore() {
-		SoftAssert soft = new SoftAssert();
-		DomainPage page = new DomainPage(driver);
-		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
-		String pass = "test123";
-		KeyStoreEditDialog keyStoreEdit = page.clickEditKeyStore();
-		int keyStoreRowBeforeAddition = keyStoreEdit.grid().getRowsNo();
-		KeyStoreImportDialog keyStoreImport = keyStoreEdit.clickImportKeystore();
-		keyStoreImport.chooseKeystoreFile("src/main/resources/keystore/keystore_dummy1.jks");
-		Assert.assertEquals(keyStoreImport.getKeyStoreFileName(), "keystore_dummy1.jks", "the keystore file name is not correct");
-		keyStoreImport.fillPassword(pass);
-		keyStoreImport.clickImportBtn();
-		keyStoreEdit.clickCloseInKeystore();
-		soft.assertFalse(page.alertArea.getAlertMessage().isError());
-		keyStoreEdit = page.clickEditKeyStore();
-		int keyStoreRowAfterAddition = keyStoreEdit.grid().getRowsNo();
-		soft.assertEquals(keyStoreRowAfterAddition, keyStoreRowBeforeAddition + 1, "KeyStore is not added to the grid");
+			SoftAssert soft = new SoftAssert();
+			DomainPage page = new DomainPage(driver);
+			soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
+			String pass="test123";
+			KeyStoreEditDialog keyStoreEdit = page.clickEditKeyStore();
+			int keyStoreRowBeforeAddition = keyStoreEdit.grid().getRowsNo();
+			KeyStoreImportDialog keyStoreImport = keyStoreEdit.clickImportKeystore();
+			keyStoreImport.chooseKeystoreFile("src/main/resources/keystore/keystore_dummy1.jks");
+			Assert.assertEquals(keyStoreImport.getKeyStoreFileName(),"keystore_dummy1.jks","the keystore file name is not correct");
+			keyStoreImport.fillPassword(pass);
+			keyStoreImport.clickImportBtn();
+			keyStoreEdit.clickCloseInKeystore();
+			soft.assertFalse(page.alertArea.getAlertMessage().isError());
+			keyStoreEdit = page.clickEditKeyStore();
+			int keyStoreRowAfterAddition = keyStoreEdit.grid().getRowsNo();
+			soft.assertEquals(keyStoreRowAfterAddition,keyStoreRowBeforeAddition+1, "KeyStore is not added to the grid");
 		keyStoreRowBeforeAddition = keyStoreRowAfterAddition;
 		keyStoreImport = keyStoreEdit.clickImportKeystore();
 		keyStoreImport.chooseKeystoreFile("src/main/resources/keystore/keystore_dummy1.jks");
-		Assert.assertEquals(keyStoreImport.getKeyStoreFileName(), "keystore_dummy1.jks", "the keystore file name is not correct");
+		Assert.assertEquals(keyStoreImport.getKeyStoreFileName(),"keystore_dummy1.jks","the keystore file name is not correct");
 		keyStoreImport.fillPassword(pass);
 		keyStoreImport.clickImportBtn();
 		keyStoreEdit.clickCloseInKeystore();
 		soft.assertFalse(page.alertArea.getAlertMessage().isError());
 		keyStoreEdit = page.clickEditKeyStore();
 		keyStoreRowAfterAddition = keyStoreEdit.grid().getRowsNo();
-		soft.assertEquals(keyStoreRowAfterAddition, keyStoreRowBeforeAddition + 1, "KeyStore is not added to the grid");
-		if (keyStoreRowAfterAddition > 1) {
-			keyStoreEdit.grid().deleteKeyStore(keyStoreRowAfterAddition - 1).confirm();
+		soft.assertEquals(keyStoreRowAfterAddition,keyStoreRowBeforeAddition+1, "KeyStore is not added to the grid");
+		if(keyStoreRowAfterAddition > 1){
+			keyStoreEdit.grid().deleteKeyStore(keyStoreRowAfterAddition-1).confirm();
 			int keyStoreRowAfterDeletion = keyStoreEdit.grid().getRowsNo();
-			soft.assertEquals(keyStoreRowAfterDeletion, keyStoreRowAfterAddition - 1, "KeyStore is not delete from the grid");
+			soft.assertEquals(keyStoreRowAfterDeletion,keyStoreRowAfterAddition-1, "KeyStore is not delete from the grid");
 			keyStoreRowAfterAddition = keyStoreRowAfterDeletion;
 		}
-		if (keyStoreRowAfterAddition > 1) {
-			keyStoreEdit.grid().deleteKeyStore(keyStoreRowAfterAddition - 1).confirm();
+		if(keyStoreRowAfterAddition > 1){
+			keyStoreEdit.grid().deleteKeyStore(keyStoreRowAfterAddition-1).confirm();
 			int keyStoreRowAfterDeletion = keyStoreEdit.grid().getRowsNo();
-			soft.assertEquals(keyStoreRowAfterDeletion, keyStoreRowAfterAddition - 1, "KeyStore is not delete from the grid");
+			soft.assertEquals(keyStoreRowAfterDeletion,keyStoreRowAfterAddition-1, "KeyStore is not delete from the grid");
 			keyStoreEdit.clickCloseInKeystore();
 			soft.assertFalse(page.alertArea.getAlertMessage().isError());
 		}
@@ -435,47 +441,48 @@ public class DomainPgTest extends BaseTest {
 	}
 
 	@Test(description = "DMN-110")
-	public void mandatoryDomainIdFieldVerification() {
+	public void mandatoryDomainIdFieldVerification()
+	{
 		SoftAssert soft = new SoftAssert();
 		DomainPage page = new DomainPage(driver);
-		String randstring = Generator.randomAlphaNumeric(10);
+		String randstring =Generator.randomAlphaNumeric(10);
 		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
 		DomainPopup popup = page.clickNew();
-		popup.fillDataForNewDomain("", randstring, randstring, randstring);
-		soft.assertTrue(!popup.isEnableOkButton(), "Ok button is not disabled after leave domain input empty");
+		popup.fillDataForNewDomain("",randstring,randstring,randstring);
+		soft.assertTrue(!popup.isEnableOkButton(),"Ok button is not disabled after leave domain input empty");
 		soft.assertAll();
 	}
 
 	@Test(description = "DMN-120")
-	public void verifyInvalidSMLSMPIDField() {
+	public void verifyInvalidSMLSMPIDField(){
 		SoftAssert soft = new SoftAssert();
 		DomainPage page = new DomainPage(driver);
-		String randstring = Generator.randomAlphaNumeric(10);
-		ArrayList<String> smlsmpId = new ArrayList<>(Arrays.asList("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopmkjh",
-				"abc@k",
+		String randstring =Generator.randomAlphaNumeric(10);
+		ArrayList<String> smlsmpId = new ArrayList<>(Arrays.asList("abc@k",
 				"abcd-",
 				"-abgxknvlk",
 				"1qwertyuvbnm"));
 		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
 		DomainPopup popup = page.clickNew();
-		for (String smlsmpid : smlsmpId) {
+		for(String smlsmpid : smlsmpId) {
 			popup.fillDataForNewDomain(randstring, randstring, smlsmpid, randstring);
-			soft.assertTrue(!popup.isEnableOkButton(), "OK button is enable after sending the invalid smlsmpId");
-			soft.assertEquals(popup.getSmlSmpIdValidationMsg(), SMPMessages.SMLSMPID_VALIDATION_MESSAGE, "Error message is not in list");
+			soft.assertTrue(!popup.isEnableOkButton(),"OK button is enable after sending the invalid smlsmpId");
+			soft.assertEquals(popup.getSmlSmpIdValidationMsg(), SMPMessages.SMLSMPID_VALIDATION_MESSAGE,"Error message is not in list");
 
 		}
-		soft.assertAll();
+       soft.assertAll();
 	}
 
 	@Test(description = "DMN-130")
-	public void clientCertHeaderToggleTest() {
+	public void clientCertHeaderToggleTest()
+	{
 		SoftAssert soft = new SoftAssert();
 		DomainPage page = new DomainPage(driver);
 		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
 		DomainPopup popup = page.clickNew();
-		soft.assertEquals(popup.checkedUserClientCertHeaderToggl(), "false", "The user toggle is on");
+		soft.assertEquals(popup.checkedUserClientCertHeaderToggl(),"false","The user toggle is on");
 		popup.clickUserClientCertHeaderToggle();
-		soft.assertEquals(popup.checkedUserClientCertHeaderToggl(), "true", "The user toggle is off");
+		soft.assertEquals(popup.checkedUserClientCertHeaderToggl(),"true","The user toggle is off");
 		soft.assertAll();
 	}
 
@@ -486,8 +493,7 @@ public class DomainPgTest extends BaseTest {
 
 		soft.assertTrue(page.isLoaded(), "Check that the page is loaded");
 		ArrayList<String> domainCode = new ArrayList<>(Arrays.asList("sddfgf@",
-				"123%",
-				"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz12345678901g"));
+				"123%"));
 
 		DomainPopup popup = page.clickNew();
 		soft.assertTrue(popup.isLoaded(), "Domain popup is loaded");
@@ -499,11 +505,27 @@ public class DomainPgTest extends BaseTest {
 
 		for (String domain : domainCode) {
 			popup.fillDataForNewDomain(domain, rndString, rndString, rndString);
-			soft.assertTrue(!popup.isEnableOkButton(), "OK button is active after s4ending invalid domain code");
+			soft.assertTrue(!popup.isEnableOkButton(),"OK button is active after s4ending invalid domain code");
 			soft.assertEquals(popup.domainCodeValidationGetErrMsg(), SMPMessages.DOMAINCODE_VALIDATION_MESSAGE, "Message is not in the list");
 		}
 
 		soft.assertAll();
 	}
 
+	@Test(description = "USR-150")
+	public void verifyNoOfCharcterAllowanceLimitInDomaincodeAndSMLSMPId(){
+		SoftAssert soft = new SoftAssert();
+		DomainPage page = new DomainPage(driver);
+		String randstring =Generator.randomAlphaNumeric(10);
+		String string = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz12345678901g";
+
+		soft.assertTrue(page.isLoaded(), "Check that the page is not loaded");
+		DomainPopup popup = page.clickNew();
+		soft.assertTrue(popup.isLoaded(), "Domain popup is not loaded");
+		popup.fillDataForNewDomain(string, randstring, string, randstring);
+		soft.assertEquals(popup.domainCode63CharValidationGetErrMsg(), SMPMessages.DOMAINCODE_VALIDATION_MESSAGE, "Message is not in the list");
+		soft.assertEquals(popup.getSmlSmpId63CharValidationMsg(), SMPMessages.SMLSMPID_VALIDATION_MESSAGE,"Error message is not in list");
+
+		soft.assertAll();
+	}
 }
diff --git a/smp-ui-tests/src/test/java/ui/EditPgTest.java b/smp-ui-tests/src/test/java/ui/EditPgTest.java
index 876238d33f2a9ca6e5d4a619e16a0d5a64685abf..f00178500a2cfe4075c5c22f8e5101c007dcf9d7 100644
--- a/smp-ui-tests/src/test/java/ui/EditPgTest.java
+++ b/smp-ui-tests/src/test/java/ui/EditPgTest.java
@@ -10,6 +10,7 @@ import pages.service_groups.ServiceGroupGrid;
 import pages.service_groups.ServiceGroupRow;
 import pages.service_groups.edit.*;
 import utils.Generator;
+import utils.enums.SMPMessages;
 import utils.rest.SMPRestClient;
 
 import java.util.List;
@@ -166,7 +167,7 @@ public class EditPgTest extends BaseTest {
 		ServiceGroupPopup popup = new ServiceGroupPopup(driver);
 
 		soft.assertTrue(row0.getParticipantIdentifier().equalsIgnoreCase(popup.getParticipantIdentifierValue()), "Popup opened for appropriate service group");
-		soft.assertTrue(row0.getParticipantIdentifier().equalsIgnoreCase(popup.getParticipantSchemeValue()), "Popup opened for appropriate service group");
+		soft.assertTrue(row0.getParticipantScheme().equalsIgnoreCase(popup.getParticipantSchemeValue()), "Popup opened for appropriate service group");
 		soft.assertTrue(popup.isExtensionAreaEditable(), "extension area is editable");
 
 		soft.assertTrue(!popup.isParticipantIdentifierInputEnabled(), "Participant Identifier field is disabled");
@@ -435,6 +436,74 @@ public class EditPgTest extends BaseTest {
 		soft.assertAll();
 	}
 
+	@Test(description = "EDT-140")
+	public void serviceMetadataXMLValidationRule(){
+		SoftAssert soft = new SoftAssert();
+		EditPage page = new EditPage(driver);
+		String generator = Generator.randomAlphaNumeric(10);
+		ServiceGroupGrid grid = page.getGrid();
+		Integer index = 0;
+		ServiceGroupRowE row0 = grid.getRowsAs(ServiceGroupRowE.class).get(index);
+		ServiceMetadataPopup metadataPopup= row0.clickAddMetadata();
+		metadataPopup.fillForm(generator,generator,generator);
+		metadataPopup.clickValidateBtn();
+		soft.assertEquals(metadataPopup.getXMLValidationMessage(), SMPMessages.VALID_XML_MESSAGE,"The message is not in list");
+		metadataPopup.clickClearBtn();
+		metadataPopup.clickValidateBtn();
+		soft.assertEquals(metadataPopup.getXMLValidationMessage(),SMPMessages.EMPTY_XML_WARN_MESSAGE,"The message is not in list");
+		metadataPopup.clickGenerateXMLBtn();
+		String xml1 = metadataPopup.captureTextOfMetadataTextArea();
+		String invalidxml1 = xml1+"xcvjdvxv";
+		metadataPopup.addTextToMetadataTextArea(invalidxml1);
+		metadataPopup.clickValidateBtn();
+		soft.assertEquals(metadataPopup.getXMLValidationMessage(),SMPMessages.INVALID_XML_MESSAGE3,"The message error message is not in list");
+		metadataPopup.clickClearBtn();
+		metadataPopup.addTextToMetadataTextArea("xjvnkcfjblcf");
+		metadataPopup.clickValidateBtn();
+		soft.assertEquals(metadataPopup.getXMLValidationMessage(),SMPMessages.INVALID_XML_MESSAGE2,"The message error message is not in list");
+		metadataPopup.clickClearBtn();
+
+		soft.assertAll();
+
+	}
+
+	@Test(description = "EDT-150")
+	public void verifyServiceMetadataXMLClearBtn(){
+		SoftAssert soft = new SoftAssert();
+		EditPage page = new EditPage(driver);
+		String generator = Generator.randomAlphaNumeric(10);
+		ServiceGroupGrid grid = page.getGrid();
+		Integer index = 0;
+		ServiceGroupRowE row0 = grid.getRowsAs(ServiceGroupRowE.class).get(index);
+		ServiceMetadataPopup metadataPopup= row0.clickAddMetadata();
+		metadataPopup.fillForm(generator,generator,generator);
+		soft.assertNotEquals(metadataPopup.xmlFieldVALUE(),"","The xml field area is empty");
+		metadataPopup.clickClearBtn();
+		soft.assertEquals(metadataPopup.xmlFieldVALUE(),"","The clear button did not clear the xml field");
+		soft.assertAll();
+	}
+
+	@Test(description = "EDT-160")
+	public void verifyServiceMetadataWizardOkBtn(){
+		SoftAssert soft = new SoftAssert();
+		EditPage page = new EditPage(driver);
+		String generator = Generator.randomAlphaNumeric(10);
+		ServiceGroupGrid grid = page.getGrid();
+		int index = 0;
+		ServiceGroupRowE row0 = grid.getRowsAs(ServiceGroupRowE.class).get(index);
+		ServiceMetadataPopup metadataPopup= row0.clickAddMetadata();
+		ServiceMetadataWizardPopup metadataWizard = metadataPopup.clickMetadataWizard();
+		soft.assertTrue(!metadataPopup.isParticipantIdentifierEnabled(),"participantId field is enabled for an existing service group in service metadata popup");
+		soft.assertTrue(!metadataPopup.isParticipantSchemeEnabled(),"participantScheme field is enabled for an existing service group in service metadata popup");
+		soft.assertFalse(metadataWizard.isEnableOkBtn(),"OK button is enable before providing the valid data");
+		metadataWizard.fillForm(generator,generator,generator,generator,"bdxr-transport-ebms3-as4-v1p0","internal/rest/domain");
+		metadataWizard.fillCerificateBox(generator);
+		soft.assertTrue(metadataWizard.isEnableOkBtn(),"OK button is disable after providing the valid data");
+
+		soft.assertAll();
+
+	}
+
 
 	private int scrollToSG(String pi) {
 		EditPage page = new EditPage(driver);