diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod
index 5dfff61a5e6ce074a6af97ffd6cedc64f859d21f..4847be9300d0229cc47552c842b323affb7e9c02 100644
--- a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod
+++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod
@@ -4,6 +4,7 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/MSTTeamMember_entity/documentation.adoc</documentation>
   <siblings />
+  <onValidation>%aditoprj%/entity/MSTTeamMember_entity/onValidation.js</onValidation>
   <recordContainer>jdito</recordContainer>
   <entityFields>
     <entityProvider>
@@ -89,14 +90,12 @@
     <entityField>
       <name>ROLE</name>
       <title>Role</title>
-      <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js</mandatoryProcess>
       <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js</dropDownProcess>
       <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js</stateProcess>
     </entityField>
     <entityField>
       <name>INVITE</name>
       <title>Invitation</title>
-      <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js</mandatoryProcess>
       <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js</dropDownProcess>
       <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js</stateProcess>
     </entityField>
@@ -112,6 +111,7 @@
       <contentProcess>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
       <hasDependentRecords v="true" />
       <onInsert>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js</onInsert>
+      <onUpdate>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
       <onDelete>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js</onDelete>
       <recordFieldMappings>
         <jDitoRecordFieldMapping>
diff --git a/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js
deleted file mode 100644
index 5d0862085379af1fba6e90fc54726f7eebba4968..0000000000000000000000000000000000000000
--- a/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.result");
-import("system.vars");
-
-result.string(!vars.get("$field.MEMBERNAME") && vars.get("$field.ISEXTERN") == "true");
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js
deleted file mode 100644
index 5015e9937f425709e83507cd3b248022dde8baec..0000000000000000000000000000000000000000
--- a/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.result");
-import("system.vars");
-
-result.string(vars.get("$field.ISEXTERN") != "true");
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/onValidation.js b/entity/MSTTeamMember_entity/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..9db830c5c678bed75d478e7dfcf17f975f095bd1
--- /dev/null
+++ b/entity/MSTTeamMember_entity/onValidation.js
@@ -0,0 +1,21 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+
+var isExtern = vars.getString("$field.ISEXTERN") == "true";
+var res;
+
+if (vars.get("$field.CONTACT_ID"))
+{
+    if (isExtern && !vars.get("$field.INVITE"))
+    {
+        res = translate.withArguments("Required value for %0 is missing", [vars.get("$property.INVITE.title")]);
+    }
+    else if(!isExtern && !vars.get("$field.ROLE"))
+    {
+        res = translate.withArguments("Required value for %0 is missing", [vars.get("$property.ROLE.title")]);
+    }
+}
+
+if (res)
+    result.string(res);
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..1df92b6ad9e44d0f84ee47f4e96b94fffa54721f
--- /dev/null
+++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js
@@ -0,0 +1,2 @@
+//updating is done in the MSTTeam_entity
+var dummy = "dummy";
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js
index 9219ab01d69f03955ecb506539986ff60a85b8d2..07569b024b862d9ffeb5b09a33b7cd403dac7baf 100644
--- a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js
@@ -10,12 +10,12 @@ var teamId = rowData["UID.value"];
 var teamName = rowData["TEAMNAME.value"];
 var description = rowData["DESCRIPTION.value"];
 var insertedTeamMembers = vars.get("$field.TeamMembers.insertedRows");
+var changedTeamMembers = vars.get("$field.TeamMembers.changedRows");
 var deletedTeamMembers = vars.get("$field.TeamMembers.deletedRows");
 
 var internalMembers = [];
 var externalMembers = [];
-insertedTeamMembers.forEach(function (teamMember)
-{
+insertedTeamMembers.forEach(function (teamMember){
     var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]);
     if (!memberUser)
     {
@@ -45,6 +45,13 @@ if (internalMembers.length !== 0)
 if (externalMembers.length !== 0)
     teams.addExternalMembers(teamId, externalMembers);
 
+changedTeamMembers.forEach(function (teamMember){
+    var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]);
+    
+    //teams.changeRole(teamId, );
+});
+
+
 var owners = teams.getAllOwners(teamId);
 var removeMembers = deletedTeamMembers.map(function (member)
 {