You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2019/10/21 19:29:32 UTC

[airavata] branch staging updated: AIRAVATA-3238 Add INITIAL_USER_GROUP_ID to DOMAIN

This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch staging
in repository https://gitbox.apache.org/repos/asf/airavata.git


The following commit(s) were added to refs/heads/staging by this push:
     new 1737f8f  AIRAVATA-3238 Add INITIAL_USER_GROUP_ID to DOMAIN
1737f8f is described below

commit 1737f8f1112575868ba36f28c54cb274f38b16c0
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Mon Oct 21 15:28:29 2019 -0400

    AIRAVATA-3238 Add INITIAL_USER_GROUP_ID to DOMAIN
---
 .../model/group/ResourcePermissionType.java        |   2 +-
 .../database_scripts/sharing-registry-mysql.sql    |   5 +-
 .../DeltaScripts/sharingCatalog_schema_delta.sql   |   4 +
 .../sharing/registry/db/entities/DomainEntity.java |  13 +-
 .../server/SharingRegistryServerHandler.java       |   6 +
 .../src/main/resources/sharing-registry-derby.sql  |   3 +
 .../src/main/resources/sharing-registry-mysql.sql  |   5 +-
 .../registry/SharingRegistryServerHandlerTest.java |  35 ++++
 .../airavata/sharing/registry/models/Domain.java   | 141 +++++++++++--
 .../registry/models/DuplicateEntryException.java   |  12 +-
 .../airavata/sharing/registry/models/Entity.java   |  70 +++----
 .../sharing/registry/models/EntityType.java        |  32 ++-
 .../sharing/registry/models/GroupAdmin.java        |  17 +-
 .../sharing/registry/models/GroupMembership.java   |  36 ++--
 .../sharing/registry/models/PermissionType.java    |  32 ++-
 .../sharing/registry/models/SearchCriteria.java    |  25 +--
 .../airavata/sharing/registry/models/Sharing.java  |  46 ++---
 .../registry/models/SharingRegistryException.java  |  12 +-
 .../airavata/sharing/registry/models/User.java     |  50 ++---
 .../sharing/registry/models/UserGroup.java         |  60 ++----
 .../sharing-service-docs/api-docs/sharing_cpi.html | 224 ++++++++++-----------
 .../api-docs/sharing_models.html                   |  70 +++----
 .../sharing-models/sharing_models.thrift           |   6 +-
 23 files changed, 481 insertions(+), 425 deletions(-)

diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/group/ResourcePermissionType.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/group/ResourcePermissionType.java
index 8989c7a..467105c 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/group/ResourcePermissionType.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/group/ResourcePermissionType.java
@@ -51,7 +51,7 @@ public enum ResourcePermissionType implements org.apache.thrift.TEnum {
    * Find a the enum type by its integer value, as defined in the Thrift IDL.
    * @return null if the value is not found.
    */
-  public static ResourcePermissionType findByValue(int value) {
+  public static ResourcePermissionType findByValue(int value) { 
     switch (value) {
       case 0:
         return WRITE;
diff --git a/modules/ide-integration/src/main/resources/database_scripts/sharing-registry-mysql.sql b/modules/ide-integration/src/main/resources/database_scripts/sharing-registry-mysql.sql
index 145d926..87b55d9 100644
--- a/modules/ide-integration/src/main/resources/database_scripts/sharing-registry-mysql.sql
+++ b/modules/ide-integration/src/main/resources/database_scripts/sharing-registry-mysql.sql
@@ -25,6 +25,7 @@ CREATE TABLE DOMAIN (
   DESCRIPTION VARCHAR(255),
   CREATED_TIME BIGINT NOT NULL,
   UPDATED_TIME BIGINT NOT NULL,
+  INITIAL_USER_GROUP_ID VARCHAR(255),
   PRIMARY KEY (DOMAIN_ID)
 )ENGINE=InnoDB DEFAULT CHARACTER SET=latin1;
 
@@ -143,4 +144,6 @@ CREATE TABLE CONFIGURATION
   PRIMARY KEY(CONFIG_KEY, CONFIG_VALUE)
 )ENGINE=InnoDB DEFAULT CHARACTER SET=latin1;
 
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VALUE) VALUES('sharing_reg_version', '0.17');
\ No newline at end of file
+INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VALUE) VALUES('sharing_reg_version', '0.17');
+
+ALTER TABLE DOMAIN ADD CONSTRAINT `DOMAIN_INITIAL_USER_GROUP_ID_FK` FOREIGN KEY (INITIAL_USER_GROUP_ID, DOMAIN_ID) REFERENCES USER_GROUP(GROUP_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION;
diff --git a/modules/registry/release-migration-scripts/0.18-0.19/DeltaScripts/sharingCatalog_schema_delta.sql b/modules/registry/release-migration-scripts/0.18-0.19/DeltaScripts/sharingCatalog_schema_delta.sql
index c9a5533..7d6aaf7 100644
--- a/modules/registry/release-migration-scripts/0.18-0.19/DeltaScripts/sharingCatalog_schema_delta.sql
+++ b/modules/registry/release-migration-scripts/0.18-0.19/DeltaScripts/sharingCatalog_schema_delta.sql
@@ -34,3 +34,7 @@ ALTER TABLE `GROUP_ADMIN` ADD KEY IF NOT EXISTS `ADMIN_ID` (`ADMIN_ID`,`DOMAIN_I
 
 -- Some SINGLE_USER groups were incorrectly created as MULTI_USER
 update USER_GROUP set GROUP_CARDINALITY = 'SINGLE_USER' where GROUP_CARDINALITY = 'MULTI_USER' and OWNER_ID = GROUP_ID;
+
+-- AIRAVATA-3238: add INITIAL_USER_GROUP_ID to DOMAIN
+ALTER TABLE DOMAIN ADD COLUMN IF NOT EXISTS INITIAL_USER_GROUP_ID varchar(255);
+ALTER TABLE DOMAIN ADD CONSTRAINT `DOMAIN_INITIAL_USER_GROUP_ID_FK` FOREIGN KEY IF NOT EXISTS (INITIAL_USER_GROUP_ID, DOMAIN_ID) REFERENCES USER_GROUP(GROUP_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION;
diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/DomainEntity.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/DomainEntity.java
index ef00e67..0f1b76e 100644
--- a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/DomainEntity.java
+++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/db/entities/DomainEntity.java
@@ -33,6 +33,7 @@ public class DomainEntity {
     private String description;
     private Long createdTime;
     private Long updatedTime;
+    private String initialUserGroupId;
 
     @Id
     @Column(name = "DOMAIN_ID")
@@ -84,6 +85,16 @@ public class DomainEntity {
         this.updatedTime = updatedTime;
     }
 
+    @Basic
+    @Column(name = "INITIAL_USER_GROUP_ID")
+    public String getInitialUserGroupId() {
+        return initialUserGroupId;
+    }
+
+    public void setInitialUserGroupId(String initialUserGroupId) {
+        this.initialUserGroupId = initialUserGroupId;
+    }
+
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;
@@ -113,4 +124,4 @@ public class DomainEntity {
         result = 31 * result + (getUpdatedTime() != null ? getUpdatedTime().hashCode() : 0);
         return result;
     }
-}
\ No newline at end of file
+}
diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/server/SharingRegistryServerHandler.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/server/SharingRegistryServerHandler.java
index f4b08ae..b138272 100644
--- a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/server/SharingRegistryServerHandler.java
+++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/server/SharingRegistryServerHandler.java
@@ -175,6 +175,12 @@ public class SharingRegistryServerHandler implements SharingRegistryService.Ifac
             userGroup.setGroupCardinality(GroupCardinality.SINGLE_USER);
             (new UserGroupRepository()).create(userGroup);
 
+            Domain domain = new DomainRepository().get(user.getDomainId());
+            if (domain.getInitialUserGroupId() != null) {
+                addUsersToGroup(user.getDomainId(), Collections.singletonList(user.getUserId()),
+                        domain.getInitialUserGroupId());
+            }
+
             return user.getUserId();
         }catch (Throwable ex) {
             logger.error(ex.getMessage(), ex);
diff --git a/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-derby.sql b/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-derby.sql
index a7038e2..6fe96a1 100644
--- a/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-derby.sql
+++ b/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-derby.sql
@@ -25,6 +25,7 @@ CREATE TABLE DOMAIN (
   DESCRIPTION VARCHAR(255),
   CREATED_TIME BIGINT NOT NULL,
   UPDATED_TIME BIGINT NOT NULL,
+  INITIAL_USER_GROUP_ID VARCHAR(255),
   PRIMARY KEY (DOMAIN_ID)
 );
 
@@ -145,3 +146,5 @@ CREATE TABLE CONFIGURATION
 );
 
 INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VALUE) VALUES('sharing_reg_version', '0.17');
+
+ALTER TABLE DOMAIN ADD FOREIGN KEY (INITIAL_USER_GROUP_ID, DOMAIN_ID) REFERENCES USER_GROUP(GROUP_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION;
diff --git a/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-mysql.sql b/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-mysql.sql
index 145d926..87b55d9 100644
--- a/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-mysql.sql
+++ b/modules/sharing-registry/sharing-registry-server/src/main/resources/sharing-registry-mysql.sql
@@ -25,6 +25,7 @@ CREATE TABLE DOMAIN (
   DESCRIPTION VARCHAR(255),
   CREATED_TIME BIGINT NOT NULL,
   UPDATED_TIME BIGINT NOT NULL,
+  INITIAL_USER_GROUP_ID VARCHAR(255),
   PRIMARY KEY (DOMAIN_ID)
 )ENGINE=InnoDB DEFAULT CHARACTER SET=latin1;
 
@@ -143,4 +144,6 @@ CREATE TABLE CONFIGURATION
   PRIMARY KEY(CONFIG_KEY, CONFIG_VALUE)
 )ENGINE=InnoDB DEFAULT CHARACTER SET=latin1;
 
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VALUE) VALUES('sharing_reg_version', '0.17');
\ No newline at end of file
+INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VALUE) VALUES('sharing_reg_version', '0.17');
+
+ALTER TABLE DOMAIN ADD CONSTRAINT `DOMAIN_INITIAL_USER_GROUP_ID_FK` FOREIGN KEY (INITIAL_USER_GROUP_ID, DOMAIN_ID) REFERENCES USER_GROUP(GROUP_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION;
diff --git a/modules/sharing-registry/sharing-registry-server/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java b/modules/sharing-registry/sharing-registry-server/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java
index 8cdde80..827a29f 100644
--- a/modules/sharing-registry/sharing-registry-server/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java
+++ b/modules/sharing-registry/sharing-registry-server/src/test/java/org/apache/airavata/sharing/registry/SharingRegistryServerHandlerTest.java
@@ -382,5 +382,40 @@ public class SharingRegistryServerHandlerTest {
         Assert.assertTrue("user3 and user7 in shared users", entityId2SharedUsers.contains(user3) && entityId2SharedUsers.contains(user7));
         Assert.assertEquals(1, sharingRegistryServerHandler.getListOfDirectlySharedGroups(domainId, entityId3, permissionTypeId1).size());
         Assert.assertEquals(groupId2, sharingRegistryServerHandler.getListOfDirectlySharedGroups(domainId, entityId3, permissionTypeId1).get(0).getGroupId());
+
+        // Test that new users are added to initialUserGroupId
+        UserGroup initialUserGroup = new UserGroup();
+        String initialUserGroupName = "initial user group";
+        String initialUserGroupId = domainId + ":" + initialUserGroupName;
+        initialUserGroup.setGroupId(initialUserGroupId);
+        initialUserGroup.setDomainId(domainId);
+        initialUserGroup.setName(initialUserGroupName);
+        initialUserGroup.setDescription("initial user group desc");
+        initialUserGroup.setOwnerId(userId1);
+        initialUserGroup.setGroupType(GroupType.USER_LEVEL_GROUP);
+        initialUserGroup.setGroupCardinality(GroupCardinality.MULTI_USER);
+        initialUserGroup.setCreatedTime(System.currentTimeMillis());
+        initialUserGroup.setUpdatedTime(System.currentTimeMillis());
+
+        Assert.assertNotNull(sharingRegistryServerHandler.createGroup(initialUserGroup));
+
+        domain.setInitialUserGroupId(initialUserGroupId);
+        Assert.assertTrue(sharingRegistryServerHandler.updateDomain(domain));
+        Assert.assertEquals(initialUserGroupId, sharingRegistryServerHandler.getDomain(domain.getDomainId()).getInitialUserGroupId());
+
+        User user8 = new User();
+        String userName8 = "test-user-8." + System.currentTimeMillis();
+        String userId8 = domainId + ":" + userName8;
+        user8.setUserId(userId8);
+        user8.setUserName(userName8);
+        user8.setDomainId(domainId);
+        user8.setCreatedTime(System.currentTimeMillis());
+        user8.setUpdatedTime(System.currentTimeMillis());
+
+        Assert.assertNotNull(sharingRegistryServerHandler.createUser(user8));
+        List<UserGroup> user8Groups = sharingRegistryServerHandler.getAllMemberGroupsForUser(domain.getDomainId(), userId8);
+        Assert.assertFalse(user8Groups.isEmpty());
+        Assert.assertEquals(1, user8Groups.size());
+        Assert.assertEquals(initialUserGroupId, user8Groups.get(0).getGroupId());
     }
 }
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java
index b841ec8..3800279 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Domain.java
@@ -33,6 +33,7 @@ package org.apache.airavata.sharing.registry.models;
  * <li>description : A short description for the domain</li>
  * <li>createdTime : Will be set by the system</li>
  * <li>updatedTime : Will be set by the system</li>
+ * <li>initialUserGroupId : New users will automatically be added to this group</li>
  * 
  */
 @javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
@@ -44,15 +45,17 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
   private static final org.apache.thrift.protocol.TField DESCRIPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("description", org.apache.thrift.protocol.TType.STRING, (short)3);
   private static final org.apache.thrift.protocol.TField CREATED_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("createdTime", org.apache.thrift.protocol.TType.I64, (short)4);
   private static final org.apache.thrift.protocol.TField UPDATED_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("updatedTime", org.apache.thrift.protocol.TType.I64, (short)5);
+  private static final org.apache.thrift.protocol.TField INITIAL_USER_GROUP_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("initialUserGroupId", org.apache.thrift.protocol.TType.STRING, (short)6);
 
   private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new DomainStandardSchemeFactory();
   private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new DomainTupleSchemeFactory();
 
-  public java.lang.String domainId; // optional
-  public java.lang.String name; // optional
-  public java.lang.String description; // optional
-  public long createdTime; // optional
-  public long updatedTime; // optional
+  private java.lang.String domainId; // optional
+  private java.lang.String name; // optional
+  private java.lang.String description; // optional
+  private long createdTime; // optional
+  private long updatedTime; // optional
+  private java.lang.String initialUserGroupId; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -60,7 +63,8 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
     NAME((short)2, "name"),
     DESCRIPTION((short)3, "description"),
     CREATED_TIME((short)4, "createdTime"),
-    UPDATED_TIME((short)5, "updatedTime");
+    UPDATED_TIME((short)5, "updatedTime"),
+    INITIAL_USER_GROUP_ID((short)6, "initialUserGroupId");
 
     private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -85,6 +89,8 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
           return CREATED_TIME;
         case 5: // UPDATED_TIME
           return UPDATED_TIME;
+        case 6: // INITIAL_USER_GROUP_ID
+          return INITIAL_USER_GROUP_ID;
         default:
           return null;
       }
@@ -128,7 +134,7 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
   private static final int __CREATEDTIME_ISSET_ID = 0;
   private static final int __UPDATEDTIME_ISSET_ID = 1;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.DOMAIN_ID,_Fields.NAME,_Fields.DESCRIPTION,_Fields.CREATED_TIME,_Fields.UPDATED_TIME};
+  private static final _Fields optionals[] = {_Fields.DOMAIN_ID,_Fields.NAME,_Fields.DESCRIPTION,_Fields.CREATED_TIME,_Fields.UPDATED_TIME,_Fields.INITIAL_USER_GROUP_ID};
   public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -142,6 +148,8 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     tmpMap.put(_Fields.UPDATED_TIME, new org.apache.thrift.meta_data.FieldMetaData("updatedTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+    tmpMap.put(_Fields.INITIAL_USER_GROUP_ID, new org.apache.thrift.meta_data.FieldMetaData("initialUserGroupId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Domain.class, metaDataMap);
   }
@@ -167,6 +175,9 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
     }
     this.createdTime = other.createdTime;
     this.updatedTime = other.updatedTime;
+    if (other.isSetInitialUserGroupId()) {
+      this.initialUserGroupId = other.initialUserGroupId;
+    }
   }
 
   public Domain deepCopy() {
@@ -183,15 +194,15 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
     this.createdTime = 0;
     setUpdatedTimeIsSet(false);
     this.updatedTime = 0;
+    this.initialUserGroupId = null;
   }
 
   public java.lang.String getDomainId() {
     return this.domainId;
   }
 
-  public Domain setDomainId(java.lang.String domainId) {
+  public void setDomainId(java.lang.String domainId) {
     this.domainId = domainId;
-    return this;
   }
 
   public void unsetDomainId() {
@@ -213,9 +224,8 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
     return this.name;
   }
 
-  public Domain setName(java.lang.String name) {
+  public void setName(java.lang.String name) {
     this.name = name;
-    return this;
   }
 
   public void unsetName() {
@@ -237,9 +247,8 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
     return this.description;
   }
 
-  public Domain setDescription(java.lang.String description) {
+  public void setDescription(java.lang.String description) {
     this.description = description;
-    return this;
   }
 
   public void unsetDescription() {
@@ -261,10 +270,9 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
     return this.createdTime;
   }
 
-  public Domain setCreatedTime(long createdTime) {
+  public void setCreatedTime(long createdTime) {
     this.createdTime = createdTime;
     setCreatedTimeIsSet(true);
-    return this;
   }
 
   public void unsetCreatedTime() {
@@ -284,10 +292,9 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
     return this.updatedTime;
   }
 
-  public Domain setUpdatedTime(long updatedTime) {
+  public void setUpdatedTime(long updatedTime) {
     this.updatedTime = updatedTime;
     setUpdatedTimeIsSet(true);
-    return this;
   }
 
   public void unsetUpdatedTime() {
@@ -303,6 +310,29 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
     __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __UPDATEDTIME_ISSET_ID, value);
   }
 
+  public java.lang.String getInitialUserGroupId() {
+    return this.initialUserGroupId;
+  }
+
+  public void setInitialUserGroupId(java.lang.String initialUserGroupId) {
+    this.initialUserGroupId = initialUserGroupId;
+  }
+
+  public void unsetInitialUserGroupId() {
+    this.initialUserGroupId = null;
+  }
+
+  /** Returns true if field initialUserGroupId is set (has been assigned a value) and false otherwise */
+  public boolean isSetInitialUserGroupId() {
+    return this.initialUserGroupId != null;
+  }
+
+  public void setInitialUserGroupIdIsSet(boolean value) {
+    if (!value) {
+      this.initialUserGroupId = null;
+    }
+  }
+
   public void setFieldValue(_Fields field, java.lang.Object value) {
     switch (field) {
     case DOMAIN_ID:
@@ -345,6 +375,14 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
       }
       break;
 
+    case INITIAL_USER_GROUP_ID:
+      if (value == null) {
+        unsetInitialUserGroupId();
+      } else {
+        setInitialUserGroupId((java.lang.String)value);
+      }
+      break;
+
     }
   }
 
@@ -365,6 +403,9 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
     case UPDATED_TIME:
       return getUpdatedTime();
 
+    case INITIAL_USER_GROUP_ID:
+      return getInitialUserGroupId();
+
     }
     throw new java.lang.IllegalStateException();
   }
@@ -386,6 +427,8 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
       return isSetCreatedTime();
     case UPDATED_TIME:
       return isSetUpdatedTime();
+    case INITIAL_USER_GROUP_ID:
+      return isSetInitialUserGroupId();
     }
     throw new java.lang.IllegalStateException();
   }
@@ -450,6 +493,15 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
         return false;
     }
 
+    boolean this_present_initialUserGroupId = true && this.isSetInitialUserGroupId();
+    boolean that_present_initialUserGroupId = true && that.isSetInitialUserGroupId();
+    if (this_present_initialUserGroupId || that_present_initialUserGroupId) {
+      if (!(this_present_initialUserGroupId && that_present_initialUserGroupId))
+        return false;
+      if (!this.initialUserGroupId.equals(that.initialUserGroupId))
+        return false;
+    }
+
     return true;
   }
 
@@ -477,6 +529,10 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
     if (isSetUpdatedTime())
       hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(updatedTime);
 
+    hashCode = hashCode * 8191 + ((isSetInitialUserGroupId()) ? 131071 : 524287);
+    if (isSetInitialUserGroupId())
+      hashCode = hashCode * 8191 + initialUserGroupId.hashCode();
+
     return hashCode;
   }
 
@@ -538,6 +594,16 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
         return lastComparison;
       }
     }
+    lastComparison = java.lang.Boolean.valueOf(isSetInitialUserGroupId()).compareTo(other.isSetInitialUserGroupId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetInitialUserGroupId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.initialUserGroupId, other.initialUserGroupId);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -599,6 +665,16 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
       sb.append(this.updatedTime);
       first = false;
     }
+    if (isSetInitialUserGroupId()) {
+      if (!first) sb.append(", ");
+      sb.append("initialUserGroupId:");
+      if (this.initialUserGroupId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.initialUserGroupId);
+      }
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -684,14 +760,20 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 6: // INITIAL_USER_GROUP_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.initialUserGroupId = iprot.readString();
+              struct.setInitialUserGroupIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
         iprot.readFieldEnd();
       }
       iprot.readStructEnd();
-
-      // check for required fields of primitive type, which can't be checked in the validate method
       struct.validate();
     }
 
@@ -730,6 +812,13 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
         oprot.writeI64(struct.updatedTime);
         oprot.writeFieldEnd();
       }
+      if (struct.initialUserGroupId != null) {
+        if (struct.isSetInitialUserGroupId()) {
+          oprot.writeFieldBegin(INITIAL_USER_GROUP_ID_FIELD_DESC);
+          oprot.writeString(struct.initialUserGroupId);
+          oprot.writeFieldEnd();
+        }
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -763,7 +852,10 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
       if (struct.isSetUpdatedTime()) {
         optionals.set(4);
       }
-      oprot.writeBitSet(optionals, 5);
+      if (struct.isSetInitialUserGroupId()) {
+        optionals.set(5);
+      }
+      oprot.writeBitSet(optionals, 6);
       if (struct.isSetDomainId()) {
         oprot.writeString(struct.domainId);
       }
@@ -779,12 +871,15 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
       if (struct.isSetUpdatedTime()) {
         oprot.writeI64(struct.updatedTime);
       }
+      if (struct.isSetInitialUserGroupId()) {
+        oprot.writeString(struct.initialUserGroupId);
+      }
     }
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, Domain struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
-      java.util.BitSet incoming = iprot.readBitSet(5);
+      java.util.BitSet incoming = iprot.readBitSet(6);
       if (incoming.get(0)) {
         struct.domainId = iprot.readString();
         struct.setDomainIdIsSet(true);
@@ -805,6 +900,10 @@ public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>,
         struct.updatedTime = iprot.readI64();
         struct.setUpdatedTimeIsSet(true);
       }
+      if (incoming.get(5)) {
+        struct.initialUserGroupId = iprot.readString();
+        struct.setInitialUserGroupIdIsSet(true);
+      }
     }
   }
 
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/DuplicateEntryException.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/DuplicateEntryException.java
index cd37d6d..e8ef517 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/DuplicateEntryException.java
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/DuplicateEntryException.java
@@ -40,7 +40,7 @@ public class DuplicateEntryException extends org.apache.thrift.TException implem
   private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new DuplicateEntryExceptionStandardSchemeFactory();
   private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new DuplicateEntryExceptionTupleSchemeFactory();
 
-  public java.lang.String message; // required
+  private java.lang.String message; // required
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -142,9 +142,8 @@ public class DuplicateEntryException extends org.apache.thrift.TException implem
     return this.message;
   }
 
-  public DuplicateEntryException setMessage(java.lang.String message) {
+  public void setMessage(java.lang.String message) {
     this.message = message;
-    return this;
   }
 
   public void unsetMessage() {
@@ -286,9 +285,10 @@ public class DuplicateEntryException extends org.apache.thrift.TException implem
 
   public void validate() throws org.apache.thrift.TException {
     // check for required fields
-    if (message == null) {
-      throw new org.apache.thrift.protocol.TProtocolException("Required field 'message' was not present! Struct: " + toString());
+    if (!isSetMessage()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'message' is unset! Struct:" + toString());
     }
+
     // check for sub-struct validity
   }
 
@@ -340,8 +340,6 @@ public class DuplicateEntryException extends org.apache.thrift.TException implem
         iprot.readFieldEnd();
       }
       iprot.readStructEnd();
-
-      // check for required fields of primitive type, which can't be checked in the validate method
       struct.validate();
     }
 
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Entity.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Entity.java
index 6f7564b..5f9bab5 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Entity.java
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Entity.java
@@ -62,19 +62,19 @@ public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>,
   private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new EntityStandardSchemeFactory();
   private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new EntityTupleSchemeFactory();
 
-  public java.lang.String entityId; // optional
-  public java.lang.String domainId; // optional
-  public java.lang.String entityTypeId; // optional
-  public java.lang.String ownerId; // optional
-  public java.lang.String parentEntityId; // optional
-  public java.lang.String name; // optional
-  public java.lang.String description; // optional
-  public java.nio.ByteBuffer binaryData; // optional
-  public java.lang.String fullText; // optional
-  public long sharedCount; // optional
-  public long originalEntityCreationTime; // optional
-  public long createdTime; // optional
-  public long updatedTime; // optional
+  private java.lang.String entityId; // optional
+  private java.lang.String domainId; // optional
+  private java.lang.String entityTypeId; // optional
+  private java.lang.String ownerId; // optional
+  private java.lang.String parentEntityId; // optional
+  private java.lang.String name; // optional
+  private java.lang.String description; // optional
+  private java.nio.ByteBuffer binaryData; // optional
+  private java.lang.String fullText; // optional
+  private long sharedCount; // optional
+  private long originalEntityCreationTime; // optional
+  private long createdTime; // optional
+  private long updatedTime; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -282,9 +282,8 @@ public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>,
     return this.entityId;
   }
 
-  public Entity setEntityId(java.lang.String entityId) {
+  public void setEntityId(java.lang.String entityId) {
     this.entityId = entityId;
-    return this;
   }
 
   public void unsetEntityId() {
@@ -306,9 +305,8 @@ public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>,
     return this.domainId;
   }
 
-  public Entity setDomainId(java.lang.String domainId) {
+  public void setDomainId(java.lang.String domainId) {
     this.domainId = domainId;
-    return this;
   }
 
   public void unsetDomainId() {
@@ -330,9 +328,8 @@ public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>,
     return this.entityTypeId;
   }
 
-  public Entity setEntityTypeId(java.lang.String entityTypeId) {
+  public void setEntityTypeId(java.lang.String entityTypeId) {
     this.entityTypeId = entityTypeId;
-    return this;
   }
 
   public void unsetEntityTypeId() {
@@ -354,9 +351,8 @@ public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>,
     return this.ownerId;
   }
 
-  public Entity setOwnerId(java.lang.String ownerId) {
+  public void setOwnerId(java.lang.String ownerId) {
     this.ownerId = ownerId;
-    return this;
   }
 
   public void unsetOwnerId() {
@@ -378,9 +374,8 @@ public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>,
     return this.parentEntityId;
   }
 
-  public Entity setParentEntityId(java.lang.String parentEntityId) {
+  public void setParentEntityId(java.lang.String parentEntityId) {
     this.parentEntityId = parentEntityId;
-    return this;
   }
 
   public void unsetParentEntityId() {
@@ -402,9 +397,8 @@ public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>,
     return this.name;
   }
 
-  public Entity setName(java.lang.String name) {
+  public void setName(java.lang.String name) {
     this.name = name;
-    return this;
   }
 
   public void unsetName() {
@@ -426,9 +420,8 @@ public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>,
     return this.description;
   }
 
-  public Entity setDescription(java.lang.String description) {
+  public void setDescription(java.lang.String description) {
     this.description = description;
-    return this;
   }
 
   public void unsetDescription() {
@@ -455,14 +448,12 @@ public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>,
     return org.apache.thrift.TBaseHelper.copyBinary(binaryData);
   }
 
-  public Entity setBinaryData(byte[] binaryData) {
+  public void setBinaryData(byte[] binaryData) {
     this.binaryData = binaryData == null ? (java.nio.ByteBuffer)null : java.nio.ByteBuffer.wrap(binaryData.clone());
-    return this;
   }
 
-  public Entity setBinaryData(java.nio.ByteBuffer binaryData) {
+  public void setBinaryData(java.nio.ByteBuffer binaryData) {
     this.binaryData = org.apache.thrift.TBaseHelper.copyBinary(binaryData);
-    return this;
   }
 
   public void unsetBinaryData() {
@@ -484,9 +475,8 @@ public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>,
     return this.fullText;
   }
 
-  public Entity setFullText(java.lang.String fullText) {
+  public void setFullText(java.lang.String fullText) {
     this.fullText = fullText;
-    return this;
   }
 
   public void unsetFullText() {
@@ -508,10 +498,9 @@ public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>,
     return this.sharedCount;
   }
 
-  public Entity setSharedCount(long sharedCount) {
+  public void setSharedCount(long sharedCount) {
     this.sharedCount = sharedCount;
     setSharedCountIsSet(true);
-    return this;
   }
 
   public void unsetSharedCount() {
@@ -531,10 +520,9 @@ public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>,
     return this.originalEntityCreationTime;
   }
 
-  public Entity setOriginalEntityCreationTime(long originalEntityCreationTime) {
+  public void setOriginalEntityCreationTime(long originalEntityCreationTime) {
     this.originalEntityCreationTime = originalEntityCreationTime;
     setOriginalEntityCreationTimeIsSet(true);
-    return this;
   }
 
   public void unsetOriginalEntityCreationTime() {
@@ -554,10 +542,9 @@ public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>,
     return this.createdTime;
   }
 
-  public Entity setCreatedTime(long createdTime) {
+  public void setCreatedTime(long createdTime) {
     this.createdTime = createdTime;
     setCreatedTimeIsSet(true);
-    return this;
   }
 
   public void unsetCreatedTime() {
@@ -577,10 +564,9 @@ public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>,
     return this.updatedTime;
   }
 
-  public Entity setUpdatedTime(long updatedTime) {
+  public void setUpdatedTime(long updatedTime) {
     this.updatedTime = updatedTime;
     setUpdatedTimeIsSet(true);
-    return this;
   }
 
   public void unsetUpdatedTime() {
@@ -1411,8 +1397,6 @@ public class Entity implements org.apache.thrift.TBase<Entity, Entity._Fields>,
         iprot.readFieldEnd();
       }
       iprot.readStructEnd();
-
-      // check for required fields of primitive type, which can't be checked in the validate method
       struct.validate();
     }
 
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntityType.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntityType.java
index 17977da..1536760 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntityType.java
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/EntityType.java
@@ -48,12 +48,12 @@ public class EntityType implements org.apache.thrift.TBase<EntityType, EntityTyp
   private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new EntityTypeStandardSchemeFactory();
   private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new EntityTypeTupleSchemeFactory();
 
-  public java.lang.String entityTypeId; // optional
-  public java.lang.String domainId; // optional
-  public java.lang.String name; // optional
-  public java.lang.String description; // optional
-  public long createdTime; // optional
-  public long updatedTime; // optional
+  private java.lang.String entityTypeId; // optional
+  private java.lang.String domainId; // optional
+  private java.lang.String name; // optional
+  private java.lang.String description; // optional
+  private long createdTime; // optional
+  private long updatedTime; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -196,9 +196,8 @@ public class EntityType implements org.apache.thrift.TBase<EntityType, EntityTyp
     return this.entityTypeId;
   }
 
-  public EntityType setEntityTypeId(java.lang.String entityTypeId) {
+  public void setEntityTypeId(java.lang.String entityTypeId) {
     this.entityTypeId = entityTypeId;
-    return this;
   }
 
   public void unsetEntityTypeId() {
@@ -220,9 +219,8 @@ public class EntityType implements org.apache.thrift.TBase<EntityType, EntityTyp
     return this.domainId;
   }
 
-  public EntityType setDomainId(java.lang.String domainId) {
+  public void setDomainId(java.lang.String domainId) {
     this.domainId = domainId;
-    return this;
   }
 
   public void unsetDomainId() {
@@ -244,9 +242,8 @@ public class EntityType implements org.apache.thrift.TBase<EntityType, EntityTyp
     return this.name;
   }
 
-  public EntityType setName(java.lang.String name) {
+  public void setName(java.lang.String name) {
     this.name = name;
-    return this;
   }
 
   public void unsetName() {
@@ -268,9 +265,8 @@ public class EntityType implements org.apache.thrift.TBase<EntityType, EntityTyp
     return this.description;
   }
 
-  public EntityType setDescription(java.lang.String description) {
+  public void setDescription(java.lang.String description) {
     this.description = description;
-    return this;
   }
 
   public void unsetDescription() {
@@ -292,10 +288,9 @@ public class EntityType implements org.apache.thrift.TBase<EntityType, EntityTyp
     return this.createdTime;
   }
 
-  public EntityType setCreatedTime(long createdTime) {
+  public void setCreatedTime(long createdTime) {
     this.createdTime = createdTime;
     setCreatedTimeIsSet(true);
-    return this;
   }
 
   public void unsetCreatedTime() {
@@ -315,10 +310,9 @@ public class EntityType implements org.apache.thrift.TBase<EntityType, EntityTyp
     return this.updatedTime;
   }
 
-  public EntityType setUpdatedTime(long updatedTime) {
+  public void setUpdatedTime(long updatedTime) {
     this.updatedTime = updatedTime;
     setUpdatedTimeIsSet(true);
-    return this;
   }
 
   public void unsetUpdatedTime() {
@@ -775,8 +769,6 @@ public class EntityType implements org.apache.thrift.TBase<EntityType, EntityTyp
         iprot.readFieldEnd();
       }
       iprot.readStructEnd();
-
-      // check for required fields of primitive type, which can't be checked in the validate method
       struct.validate();
     }
 
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupAdmin.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupAdmin.java
index 9520b16..d970719 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupAdmin.java
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupAdmin.java
@@ -35,9 +35,9 @@ public class GroupAdmin implements org.apache.thrift.TBase<GroupAdmin, GroupAdmi
   private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new GroupAdminStandardSchemeFactory();
   private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new GroupAdminTupleSchemeFactory();
 
-  public java.lang.String groupId; // optional
-  public java.lang.String domainId; // optional
-  public java.lang.String adminId; // optional
+  private java.lang.String groupId; // optional
+  private java.lang.String domainId; // optional
+  private java.lang.String adminId; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -151,9 +151,8 @@ public class GroupAdmin implements org.apache.thrift.TBase<GroupAdmin, GroupAdmi
     return this.groupId;
   }
 
-  public GroupAdmin setGroupId(java.lang.String groupId) {
+  public void setGroupId(java.lang.String groupId) {
     this.groupId = groupId;
-    return this;
   }
 
   public void unsetGroupId() {
@@ -175,9 +174,8 @@ public class GroupAdmin implements org.apache.thrift.TBase<GroupAdmin, GroupAdmi
     return this.domainId;
   }
 
-  public GroupAdmin setDomainId(java.lang.String domainId) {
+  public void setDomainId(java.lang.String domainId) {
     this.domainId = domainId;
-    return this;
   }
 
   public void unsetDomainId() {
@@ -199,9 +197,8 @@ public class GroupAdmin implements org.apache.thrift.TBase<GroupAdmin, GroupAdmi
     return this.adminId;
   }
 
-  public GroupAdmin setAdminId(java.lang.String adminId) {
+  public void setAdminId(java.lang.String adminId) {
     this.adminId = adminId;
-    return this;
   }
 
   public void unsetAdminId() {
@@ -504,8 +501,6 @@ public class GroupAdmin implements org.apache.thrift.TBase<GroupAdmin, GroupAdmi
         iprot.readFieldEnd();
       }
       iprot.readStructEnd();
-
-      // check for required fields of primitive type, which can't be checked in the validate method
       struct.validate();
     }
 
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupMembership.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupMembership.java
index 138174b..2f37788 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupMembership.java
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/GroupMembership.java
@@ -42,16 +42,12 @@ public class GroupMembership implements org.apache.thrift.TBase<GroupMembership,
   private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new GroupMembershipStandardSchemeFactory();
   private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new GroupMembershipTupleSchemeFactory();
 
-  public java.lang.String parentId; // optional
-  public java.lang.String childId; // optional
-  public java.lang.String domainId; // optional
-  /**
-   * 
-   * @see GroupChildType
-   */
-  public GroupChildType childType; // optional
-  public long createdTime; // optional
-  public long updatedTime; // optional
+  private java.lang.String parentId; // optional
+  private java.lang.String childId; // optional
+  private java.lang.String domainId; // optional
+  private GroupChildType childType; // optional
+  private long createdTime; // optional
+  private long updatedTime; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -198,9 +194,8 @@ public class GroupMembership implements org.apache.thrift.TBase<GroupMembership,
     return this.parentId;
   }
 
-  public GroupMembership setParentId(java.lang.String parentId) {
+  public void setParentId(java.lang.String parentId) {
     this.parentId = parentId;
-    return this;
   }
 
   public void unsetParentId() {
@@ -222,9 +217,8 @@ public class GroupMembership implements org.apache.thrift.TBase<GroupMembership,
     return this.childId;
   }
 
-  public GroupMembership setChildId(java.lang.String childId) {
+  public void setChildId(java.lang.String childId) {
     this.childId = childId;
-    return this;
   }
 
   public void unsetChildId() {
@@ -246,9 +240,8 @@ public class GroupMembership implements org.apache.thrift.TBase<GroupMembership,
     return this.domainId;
   }
 
-  public GroupMembership setDomainId(java.lang.String domainId) {
+  public void setDomainId(java.lang.String domainId) {
     this.domainId = domainId;
-    return this;
   }
 
   public void unsetDomainId() {
@@ -278,9 +271,8 @@ public class GroupMembership implements org.apache.thrift.TBase<GroupMembership,
    * 
    * @see GroupChildType
    */
-  public GroupMembership setChildType(GroupChildType childType) {
+  public void setChildType(GroupChildType childType) {
     this.childType = childType;
-    return this;
   }
 
   public void unsetChildType() {
@@ -302,10 +294,9 @@ public class GroupMembership implements org.apache.thrift.TBase<GroupMembership,
     return this.createdTime;
   }
 
-  public GroupMembership setCreatedTime(long createdTime) {
+  public void setCreatedTime(long createdTime) {
     this.createdTime = createdTime;
     setCreatedTimeIsSet(true);
-    return this;
   }
 
   public void unsetCreatedTime() {
@@ -325,10 +316,9 @@ public class GroupMembership implements org.apache.thrift.TBase<GroupMembership,
     return this.updatedTime;
   }
 
-  public GroupMembership setUpdatedTime(long updatedTime) {
+  public void setUpdatedTime(long updatedTime) {
     this.updatedTime = updatedTime;
     setUpdatedTimeIsSet(true);
-    return this;
   }
 
   public void unsetUpdatedTime() {
@@ -785,8 +775,6 @@ public class GroupMembership implements org.apache.thrift.TBase<GroupMembership,
         iprot.readFieldEnd();
       }
       iprot.readStructEnd();
-
-      // check for required fields of primitive type, which can't be checked in the validate method
       struct.validate();
     }
 
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/PermissionType.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/PermissionType.java
index 915686b..96df5d3 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/PermissionType.java
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/PermissionType.java
@@ -48,12 +48,12 @@ public class PermissionType implements org.apache.thrift.TBase<PermissionType, P
   private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new PermissionTypeStandardSchemeFactory();
   private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new PermissionTypeTupleSchemeFactory();
 
-  public java.lang.String permissionTypeId; // optional
-  public java.lang.String domainId; // optional
-  public java.lang.String name; // optional
-  public java.lang.String description; // optional
-  public long createdTime; // optional
-  public long updatedTime; // optional
+  private java.lang.String permissionTypeId; // optional
+  private java.lang.String domainId; // optional
+  private java.lang.String name; // optional
+  private java.lang.String description; // optional
+  private long createdTime; // optional
+  private long updatedTime; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -196,9 +196,8 @@ public class PermissionType implements org.apache.thrift.TBase<PermissionType, P
     return this.permissionTypeId;
   }
 
-  public PermissionType setPermissionTypeId(java.lang.String permissionTypeId) {
+  public void setPermissionTypeId(java.lang.String permissionTypeId) {
     this.permissionTypeId = permissionTypeId;
-    return this;
   }
 
   public void unsetPermissionTypeId() {
@@ -220,9 +219,8 @@ public class PermissionType implements org.apache.thrift.TBase<PermissionType, P
     return this.domainId;
   }
 
-  public PermissionType setDomainId(java.lang.String domainId) {
+  public void setDomainId(java.lang.String domainId) {
     this.domainId = domainId;
-    return this;
   }
 
   public void unsetDomainId() {
@@ -244,9 +242,8 @@ public class PermissionType implements org.apache.thrift.TBase<PermissionType, P
     return this.name;
   }
 
-  public PermissionType setName(java.lang.String name) {
+  public void setName(java.lang.String name) {
     this.name = name;
-    return this;
   }
 
   public void unsetName() {
@@ -268,9 +265,8 @@ public class PermissionType implements org.apache.thrift.TBase<PermissionType, P
     return this.description;
   }
 
-  public PermissionType setDescription(java.lang.String description) {
+  public void setDescription(java.lang.String description) {
     this.description = description;
-    return this;
   }
 
   public void unsetDescription() {
@@ -292,10 +288,9 @@ public class PermissionType implements org.apache.thrift.TBase<PermissionType, P
     return this.createdTime;
   }
 
-  public PermissionType setCreatedTime(long createdTime) {
+  public void setCreatedTime(long createdTime) {
     this.createdTime = createdTime;
     setCreatedTimeIsSet(true);
-    return this;
   }
 
   public void unsetCreatedTime() {
@@ -315,10 +310,9 @@ public class PermissionType implements org.apache.thrift.TBase<PermissionType, P
     return this.updatedTime;
   }
 
-  public PermissionType setUpdatedTime(long updatedTime) {
+  public void setUpdatedTime(long updatedTime) {
     this.updatedTime = updatedTime;
     setUpdatedTimeIsSet(true);
-    return this;
   }
 
   public void unsetUpdatedTime() {
@@ -775,8 +769,6 @@ public class PermissionType implements org.apache.thrift.TBase<PermissionType, P
         iprot.readFieldEnd();
       }
       iprot.readStructEnd();
-
-      // check for required fields of primitive type, which can't be checked in the validate method
       struct.validate();
     }
 
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SearchCriteria.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SearchCriteria.java
index 0a605a9..8afaf8e 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SearchCriteria.java
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SearchCriteria.java
@@ -42,17 +42,9 @@ public class SearchCriteria implements org.apache.thrift.TBase<SearchCriteria, S
   private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new SearchCriteriaStandardSchemeFactory();
   private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new SearchCriteriaTupleSchemeFactory();
 
-  /**
-   * 
-   * @see EntitySearchField
-   */
-  public EntitySearchField searchField; // optional
-  public java.lang.String value; // optional
-  /**
-   * 
-   * @see SearchCondition
-   */
-  public SearchCondition searchCondition; // optional
+  private EntitySearchField searchField; // optional
+  private java.lang.String value; // optional
+  private SearchCondition searchCondition; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -182,9 +174,8 @@ public class SearchCriteria implements org.apache.thrift.TBase<SearchCriteria, S
    * 
    * @see EntitySearchField
    */
-  public SearchCriteria setSearchField(EntitySearchField searchField) {
+  public void setSearchField(EntitySearchField searchField) {
     this.searchField = searchField;
-    return this;
   }
 
   public void unsetSearchField() {
@@ -206,9 +197,8 @@ public class SearchCriteria implements org.apache.thrift.TBase<SearchCriteria, S
     return this.value;
   }
 
-  public SearchCriteria setValue(java.lang.String value) {
+  public void setValue(java.lang.String value) {
     this.value = value;
-    return this;
   }
 
   public void unsetValue() {
@@ -238,9 +228,8 @@ public class SearchCriteria implements org.apache.thrift.TBase<SearchCriteria, S
    * 
    * @see SearchCondition
    */
-  public SearchCriteria setSearchCondition(SearchCondition searchCondition) {
+  public void setSearchCondition(SearchCondition searchCondition) {
     this.searchCondition = searchCondition;
-    return this;
   }
 
   public void unsetSearchCondition() {
@@ -543,8 +532,6 @@ public class SearchCriteria implements org.apache.thrift.TBase<SearchCriteria, S
         iprot.readFieldEnd();
       }
       iprot.readStructEnd();
-
-      // check for required fields of primitive type, which can't be checked in the validate method
       struct.validate();
     }
 
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Sharing.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Sharing.java
index 38b131c..e5c956c 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Sharing.java
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/Sharing.java
@@ -44,18 +44,14 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
   private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new SharingStandardSchemeFactory();
   private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new SharingTupleSchemeFactory();
 
-  public java.lang.String permissionTypeId; // optional
-  public java.lang.String entityId; // optional
-  public java.lang.String groupId; // optional
-  /**
-   * 
-   * @see SharingType
-   */
-  public SharingType sharingType; // optional
-  public java.lang.String domainId; // optional
-  public java.lang.String inheritedParentId; // optional
-  public long createdTime; // optional
-  public long updatedTime; // optional
+  private java.lang.String permissionTypeId; // optional
+  private java.lang.String entityId; // optional
+  private java.lang.String groupId; // optional
+  private SharingType sharingType; // optional
+  private java.lang.String domainId; // optional
+  private java.lang.String inheritedParentId; // optional
+  private long createdTime; // optional
+  private long updatedTime; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -220,9 +216,8 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
     return this.permissionTypeId;
   }
 
-  public Sharing setPermissionTypeId(java.lang.String permissionTypeId) {
+  public void setPermissionTypeId(java.lang.String permissionTypeId) {
     this.permissionTypeId = permissionTypeId;
-    return this;
   }
 
   public void unsetPermissionTypeId() {
@@ -244,9 +239,8 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
     return this.entityId;
   }
 
-  public Sharing setEntityId(java.lang.String entityId) {
+  public void setEntityId(java.lang.String entityId) {
     this.entityId = entityId;
-    return this;
   }
 
   public void unsetEntityId() {
@@ -268,9 +262,8 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
     return this.groupId;
   }
 
-  public Sharing setGroupId(java.lang.String groupId) {
+  public void setGroupId(java.lang.String groupId) {
     this.groupId = groupId;
-    return this;
   }
 
   public void unsetGroupId() {
@@ -300,9 +293,8 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
    * 
    * @see SharingType
    */
-  public Sharing setSharingType(SharingType sharingType) {
+  public void setSharingType(SharingType sharingType) {
     this.sharingType = sharingType;
-    return this;
   }
 
   public void unsetSharingType() {
@@ -324,9 +316,8 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
     return this.domainId;
   }
 
-  public Sharing setDomainId(java.lang.String domainId) {
+  public void setDomainId(java.lang.String domainId) {
     this.domainId = domainId;
-    return this;
   }
 
   public void unsetDomainId() {
@@ -348,9 +339,8 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
     return this.inheritedParentId;
   }
 
-  public Sharing setInheritedParentId(java.lang.String inheritedParentId) {
+  public void setInheritedParentId(java.lang.String inheritedParentId) {
     this.inheritedParentId = inheritedParentId;
-    return this;
   }
 
   public void unsetInheritedParentId() {
@@ -372,10 +362,9 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
     return this.createdTime;
   }
 
-  public Sharing setCreatedTime(long createdTime) {
+  public void setCreatedTime(long createdTime) {
     this.createdTime = createdTime;
     setCreatedTimeIsSet(true);
-    return this;
   }
 
   public void unsetCreatedTime() {
@@ -395,10 +384,9 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
     return this.updatedTime;
   }
 
-  public Sharing setUpdatedTime(long updatedTime) {
+  public void setUpdatedTime(long updatedTime) {
     this.updatedTime = updatedTime;
     setUpdatedTimeIsSet(true);
-    return this;
   }
 
   public void unsetUpdatedTime() {
@@ -963,8 +951,6 @@ public class Sharing implements org.apache.thrift.TBase<Sharing, Sharing._Fields
         iprot.readFieldEnd();
       }
       iprot.readStructEnd();
-
-      // check for required fields of primitive type, which can't be checked in the validate method
       struct.validate();
     }
 
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SharingRegistryException.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SharingRegistryException.java
index 6bffd6b..4bad273 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SharingRegistryException.java
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/SharingRegistryException.java
@@ -37,7 +37,7 @@ public class SharingRegistryException extends org.apache.thrift.TException imple
   private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new SharingRegistryExceptionStandardSchemeFactory();
   private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new SharingRegistryExceptionTupleSchemeFactory();
 
-  public java.lang.String message; // required
+  private java.lang.String message; // required
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -139,9 +139,8 @@ public class SharingRegistryException extends org.apache.thrift.TException imple
     return this.message;
   }
 
-  public SharingRegistryException setMessage(java.lang.String message) {
+  public void setMessage(java.lang.String message) {
     this.message = message;
-    return this;
   }
 
   public void unsetMessage() {
@@ -283,9 +282,10 @@ public class SharingRegistryException extends org.apache.thrift.TException imple
 
   public void validate() throws org.apache.thrift.TException {
     // check for required fields
-    if (message == null) {
-      throw new org.apache.thrift.protocol.TProtocolException("Required field 'message' was not present! Struct: " + toString());
+    if (!isSetMessage()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'message' is unset! Struct:" + toString());
     }
+
     // check for sub-struct validity
   }
 
@@ -337,8 +337,6 @@ public class SharingRegistryException extends org.apache.thrift.TException imple
         iprot.readFieldEnd();
       }
       iprot.readStructEnd();
-
-      // check for required fields of primitive type, which can't be checked in the validate method
       struct.validate();
     }
 
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/User.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/User.java
index c6641b6..2ad188b 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/User.java
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/User.java
@@ -55,15 +55,15 @@ public class User implements org.apache.thrift.TBase<User, User._Fields>, java.i
   private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new UserStandardSchemeFactory();
   private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new UserTupleSchemeFactory();
 
-  public java.lang.String userId; // optional
-  public java.lang.String domainId; // optional
-  public java.lang.String userName; // optional
-  public java.lang.String firstName; // optional
-  public java.lang.String lastName; // optional
-  public java.lang.String email; // optional
-  public java.nio.ByteBuffer icon; // optional
-  public long createdTime; // optional
-  public long updatedTime; // optional
+  private java.lang.String userId; // optional
+  private java.lang.String domainId; // optional
+  private java.lang.String userName; // optional
+  private java.lang.String firstName; // optional
+  private java.lang.String lastName; // optional
+  private java.lang.String email; // optional
+  private java.nio.ByteBuffer icon; // optional
+  private long createdTime; // optional
+  private long updatedTime; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -233,9 +233,8 @@ public class User implements org.apache.thrift.TBase<User, User._Fields>, java.i
     return this.userId;
   }
 
-  public User setUserId(java.lang.String userId) {
+  public void setUserId(java.lang.String userId) {
     this.userId = userId;
-    return this;
   }
 
   public void unsetUserId() {
@@ -257,9 +256,8 @@ public class User implements org.apache.thrift.TBase<User, User._Fields>, java.i
     return this.domainId;
   }
 
-  public User setDomainId(java.lang.String domainId) {
+  public void setDomainId(java.lang.String domainId) {
     this.domainId = domainId;
-    return this;
   }
 
   public void unsetDomainId() {
@@ -281,9 +279,8 @@ public class User implements org.apache.thrift.TBase<User, User._Fields>, java.i
     return this.userName;
   }
 
-  public User setUserName(java.lang.String userName) {
+  public void setUserName(java.lang.String userName) {
     this.userName = userName;
-    return this;
   }
 
   public void unsetUserName() {
@@ -305,9 +302,8 @@ public class User implements org.apache.thrift.TBase<User, User._Fields>, java.i
     return this.firstName;
   }
 
-  public User setFirstName(java.lang.String firstName) {
+  public void setFirstName(java.lang.String firstName) {
     this.firstName = firstName;
-    return this;
   }
 
   public void unsetFirstName() {
@@ -329,9 +325,8 @@ public class User implements org.apache.thrift.TBase<User, User._Fields>, java.i
     return this.lastName;
   }
 
-  public User setLastName(java.lang.String lastName) {
+  public void setLastName(java.lang.String lastName) {
     this.lastName = lastName;
-    return this;
   }
 
   public void unsetLastName() {
@@ -353,9 +348,8 @@ public class User implements org.apache.thrift.TBase<User, User._Fields>, java.i
     return this.email;
   }
 
-  public User setEmail(java.lang.String email) {
+  public void setEmail(java.lang.String email) {
     this.email = email;
-    return this;
   }
 
   public void unsetEmail() {
@@ -382,14 +376,12 @@ public class User implements org.apache.thrift.TBase<User, User._Fields>, java.i
     return org.apache.thrift.TBaseHelper.copyBinary(icon);
   }
 
-  public User setIcon(byte[] icon) {
+  public void setIcon(byte[] icon) {
     this.icon = icon == null ? (java.nio.ByteBuffer)null : java.nio.ByteBuffer.wrap(icon.clone());
-    return this;
   }
 
-  public User setIcon(java.nio.ByteBuffer icon) {
+  public void setIcon(java.nio.ByteBuffer icon) {
     this.icon = org.apache.thrift.TBaseHelper.copyBinary(icon);
-    return this;
   }
 
   public void unsetIcon() {
@@ -411,10 +403,9 @@ public class User implements org.apache.thrift.TBase<User, User._Fields>, java.i
     return this.createdTime;
   }
 
-  public User setCreatedTime(long createdTime) {
+  public void setCreatedTime(long createdTime) {
     this.createdTime = createdTime;
     setCreatedTimeIsSet(true);
-    return this;
   }
 
   public void unsetCreatedTime() {
@@ -434,10 +425,9 @@ public class User implements org.apache.thrift.TBase<User, User._Fields>, java.i
     return this.updatedTime;
   }
 
-  public User setUpdatedTime(long updatedTime) {
+  public void setUpdatedTime(long updatedTime) {
     this.updatedTime = updatedTime;
     setUpdatedTimeIsSet(true);
-    return this;
   }
 
   public void unsetUpdatedTime() {
@@ -1060,8 +1050,6 @@ public class User implements org.apache.thrift.TBase<User, User._Fields>, java.i
         iprot.readFieldEnd();
       }
       iprot.readStructEnd();
-
-      // check for required fields of primitive type, which can't be checked in the validate method
       struct.validate();
     }
 
diff --git a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/UserGroup.java b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/UserGroup.java
index 95e375b..4641405 100644
--- a/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/UserGroup.java
+++ b/modules/sharing-registry/sharing-registry-stubs/src/main/java/org/apache/airavata/sharing/registry/models/UserGroup.java
@@ -56,24 +56,16 @@ public class UserGroup implements org.apache.thrift.TBase<UserGroup, UserGroup._
   private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new UserGroupStandardSchemeFactory();
   private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new UserGroupTupleSchemeFactory();
 
-  public java.lang.String groupId; // optional
-  public java.lang.String domainId; // optional
-  public java.lang.String name; // optional
-  public java.lang.String description; // optional
-  public java.lang.String ownerId; // optional
-  /**
-   * 
-   * @see GroupType
-   */
-  public GroupType groupType; // optional
-  /**
-   * 
-   * @see GroupCardinality
-   */
-  public GroupCardinality groupCardinality; // optional
-  public long createdTime; // optional
-  public long updatedTime; // optional
-  public java.util.List<GroupAdmin> groupAdmins; // optional
+  private java.lang.String groupId; // optional
+  private java.lang.String domainId; // optional
+  private java.lang.String name; // optional
+  private java.lang.String description; // optional
+  private java.lang.String ownerId; // optional
+  private GroupType groupType; // optional
+  private GroupCardinality groupCardinality; // optional
+  private long createdTime; // optional
+  private long updatedTime; // optional
+  private java.util.List<GroupAdmin> groupAdmins; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -265,9 +257,8 @@ public class UserGroup implements org.apache.thrift.TBase<UserGroup, UserGroup._
     return this.groupId;
   }
 
-  public UserGroup setGroupId(java.lang.String groupId) {
+  public void setGroupId(java.lang.String groupId) {
     this.groupId = groupId;
-    return this;
   }
 
   public void unsetGroupId() {
@@ -289,9 +280,8 @@ public class UserGroup implements org.apache.thrift.TBase<UserGroup, UserGroup._
     return this.domainId;
   }
 
-  public UserGroup setDomainId(java.lang.String domainId) {
+  public void setDomainId(java.lang.String domainId) {
     this.domainId = domainId;
-    return this;
   }
 
   public void unsetDomainId() {
@@ -313,9 +303,8 @@ public class UserGroup implements org.apache.thrift.TBase<UserGroup, UserGroup._
     return this.name;
   }
 
-  public UserGroup setName(java.lang.String name) {
+  public void setName(java.lang.String name) {
     this.name = name;
-    return this;
   }
 
   public void unsetName() {
@@ -337,9 +326,8 @@ public class UserGroup implements org.apache.thrift.TBase<UserGroup, UserGroup._
     return this.description;
   }
 
-  public UserGroup setDescription(java.lang.String description) {
+  public void setDescription(java.lang.String description) {
     this.description = description;
-    return this;
   }
 
   public void unsetDescription() {
@@ -361,9 +349,8 @@ public class UserGroup implements org.apache.thrift.TBase<UserGroup, UserGroup._
     return this.ownerId;
   }
 
-  public UserGroup setOwnerId(java.lang.String ownerId) {
+  public void setOwnerId(java.lang.String ownerId) {
     this.ownerId = ownerId;
-    return this;
   }
 
   public void unsetOwnerId() {
@@ -393,9 +380,8 @@ public class UserGroup implements org.apache.thrift.TBase<UserGroup, UserGroup._
    * 
    * @see GroupType
    */
-  public UserGroup setGroupType(GroupType groupType) {
+  public void setGroupType(GroupType groupType) {
     this.groupType = groupType;
-    return this;
   }
 
   public void unsetGroupType() {
@@ -425,9 +411,8 @@ public class UserGroup implements org.apache.thrift.TBase<UserGroup, UserGroup._
    * 
    * @see GroupCardinality
    */
-  public UserGroup setGroupCardinality(GroupCardinality groupCardinality) {
+  public void setGroupCardinality(GroupCardinality groupCardinality) {
     this.groupCardinality = groupCardinality;
-    return this;
   }
 
   public void unsetGroupCardinality() {
@@ -449,10 +434,9 @@ public class UserGroup implements org.apache.thrift.TBase<UserGroup, UserGroup._
     return this.createdTime;
   }
 
-  public UserGroup setCreatedTime(long createdTime) {
+  public void setCreatedTime(long createdTime) {
     this.createdTime = createdTime;
     setCreatedTimeIsSet(true);
-    return this;
   }
 
   public void unsetCreatedTime() {
@@ -472,10 +456,9 @@ public class UserGroup implements org.apache.thrift.TBase<UserGroup, UserGroup._
     return this.updatedTime;
   }
 
-  public UserGroup setUpdatedTime(long updatedTime) {
+  public void setUpdatedTime(long updatedTime) {
     this.updatedTime = updatedTime;
     setUpdatedTimeIsSet(true);
-    return this;
   }
 
   public void unsetUpdatedTime() {
@@ -510,9 +493,8 @@ public class UserGroup implements org.apache.thrift.TBase<UserGroup, UserGroup._
     return this.groupAdmins;
   }
 
-  public UserGroup setGroupAdmins(java.util.List<GroupAdmin> groupAdmins) {
+  public void setGroupAdmins(java.util.List<GroupAdmin> groupAdmins) {
     this.groupAdmins = groupAdmins;
-    return this;
   }
 
   public void unsetGroupAdmins() {
@@ -1198,8 +1180,6 @@ public class UserGroup implements org.apache.thrift.TBase<UserGroup, UserGroup._
         iprot.readFieldEnd();
       }
       iprot.readStructEnd();
-
-      // check for required fields of primitive type, which can't be checked in the validate method
       struct.validate();
     }
 
diff --git a/modules/sharing-registry/sharing-service-docs/api-docs/sharing_cpi.html b/modules/sharing-registry/sharing-service-docs/api-docs/sharing_cpi.html
index 4cbd468..29da22d 100644
--- a/modules/sharing-registry/sharing-service-docs/api-docs/sharing_cpi.html
+++ b/modules/sharing-registry/sharing-service-docs/api-docs/sharing_cpi.html
@@ -82,308 +82,308 @@
 <div class="definition"><h4 id="Fn_SharingRegistryService_createDomain">Function: SharingRegistryService.createDomain</h4>
 <pre><code>string</code> createDomain(<code><a href="sharing_models.html#Struct_Domain">sharing_models.Domain</a></code> domain)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>, <code><a href="sharing_models.html#Struct_DuplicateEntryException">sharing_models.DuplicateEntryException</a></code>
-</pre><p>API method to create a new domain</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_updateDomain">Function: SharingRegistryService.updateDomain</h4>
+</pre><pre><p>API method to create a new domain</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_updateDomain">Function: SharingRegistryService.updateDomain</h4>
 <pre><code>bool</code> updateDomain(<code><a href="sharing_models.html#Struct_Domain">sharing_models.Domain</a></code> domain)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to update a domain</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_isDomainExists">Function: SharingRegistryService.isDomainExists</h4>
+</pre><pre><p>API method to update a domain</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_isDomainExists">Function: SharingRegistryService.isDomainExists</h4>
 <pre><code>bool</code> isDomainExists(<code>string</code> domainId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to check Domain Exists</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_deleteDomain">Function: SharingRegistryService.deleteDomain</h4>
+</pre><pre><p>API method to check Domain Exists</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_deleteDomain">Function: SharingRegistryService.deleteDomain</h4>
 <pre><code>bool</code> deleteDomain(<code>string</code> domainId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to delete domain</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getDomain">Function: SharingRegistryService.getDomain</h4>
+</pre><pre><p>API method to delete domain</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getDomain">Function: SharingRegistryService.getDomain</h4>
 <pre><code><a href="sharing_models.html#Struct_Domain">sharing_models.Domain</a></code> getDomain(<code>string</code> domainId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to retrieve a domain</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getDomains">Function: SharingRegistryService.getDomains</h4>
+</pre><pre><p>API method to retrieve a domain</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getDomains">Function: SharingRegistryService.getDomains</h4>
 <pre><code>list&lt;<code><a href="sharing_models.html#Struct_Domain">sharing_models.Domain</a></code>&gt;</code> getDomains(<code>i32</code> offset,
                                        <code>i32</code> limit)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to get all domain.</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_createUser">Function: SharingRegistryService.createUser</h4>
+</pre><pre><p>API method to get all domain.</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_createUser">Function: SharingRegistryService.createUser</h4>
 <pre><code>string</code> createUser(<code><a href="sharing_models.html#Struct_User">sharing_models.User</a></code> user)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>, <code><a href="sharing_models.html#Struct_DuplicateEntryException">sharing_models.DuplicateEntryException</a></code>
-</pre><p>API method to register a user in the system</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_updatedUser">Function: SharingRegistryService.updatedUser</h4>
+</pre><pre><p>API method to register a user in the system</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_updatedUser">Function: SharingRegistryService.updatedUser</h4>
 <pre><code>bool</code> updatedUser(<code><a href="sharing_models.html#Struct_User">sharing_models.User</a></code> user)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to update existing user</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_isUserExists">Function: SharingRegistryService.isUserExists</h4>
+</pre><pre><p>API method to update existing user</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_isUserExists">Function: SharingRegistryService.isUserExists</h4>
 <pre><code>bool</code> isUserExists(<code>string</code> domainId,
                   <code>string</code> userId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to check User Exists</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_deleteUser">Function: SharingRegistryService.deleteUser</h4>
+</pre><pre><p>API method to check User Exists</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_deleteUser">Function: SharingRegistryService.deleteUser</h4>
 <pre><code>bool</code> deleteUser(<code>string</code> domainId,
                 <code>string</code> userId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to delete user</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getUser">Function: SharingRegistryService.getUser</h4>
+</pre><pre><p>API method to delete user</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getUser">Function: SharingRegistryService.getUser</h4>
 <pre><code><a href="sharing_models.html#Struct_User">sharing_models.User</a></code> getUser(<code>string</code> domainId,
                             <code>string</code> userId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to get a user</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getUsers">Function: SharingRegistryService.getUsers</h4>
+</pre><pre><p>API method to get a user</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getUsers">Function: SharingRegistryService.getUsers</h4>
 <pre><code>list&lt;<code><a href="sharing_models.html#Struct_User">sharing_models.User</a></code>&gt;</code> getUsers(<code>string</code> domainId,
                                    <code>i32</code> offset,
                                    <code>i32</code> limit)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to get a list of users in a specific domain.</p>
+</pre><pre><p>API method to get a list of users in a specific domain.</p>
 <li>domainId : Domain id</li>
 <li>offset : Starting result number</li>
 <li>limit : Number of max results to be sent</li>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_createGroup">Function: SharingRegistryService.createGroup</h4>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_createGroup">Function: SharingRegistryService.createGroup</h4>
 <pre><code>string</code> createGroup(<code><a href="sharing_models.html#Struct_UserGroup">sharing_models.UserGroup</a></code> group)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to create a new group</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_updateGroup">Function: SharingRegistryService.updateGroup</h4>
+</pre><pre><p>API method to create a new group</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_updateGroup">Function: SharingRegistryService.updateGroup</h4>
 <pre><code>bool</code> updateGroup(<code><a href="sharing_models.html#Struct_UserGroup">sharing_models.UserGroup</a></code> group)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to update a group</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_isGroupExists">Function: SharingRegistryService.isGroupExists</h4>
+</pre><pre><p>API method to update a group</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_isGroupExists">Function: SharingRegistryService.isGroupExists</h4>
 <pre><code>bool</code> isGroupExists(<code>string</code> domainId,
                    <code>string</code> groupId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to check Group Exists</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_deleteGroup">Function: SharingRegistryService.deleteGroup</h4>
+</pre><pre><p>API method to check Group Exists</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_deleteGroup">Function: SharingRegistryService.deleteGroup</h4>
 <pre><code>bool</code> deleteGroup(<code>string</code> domainId,
                  <code>string</code> groupId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to delete a group</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getGroup">Function: SharingRegistryService.getGroup</h4>
+</pre><pre><p>API method to delete a group</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getGroup">Function: SharingRegistryService.getGroup</h4>
 <pre><code><a href="sharing_models.html#Struct_UserGroup">sharing_models.UserGroup</a></code> getGroup(<code>string</code> domainId,
                                   <code>string</code> groupId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to get a group</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getGroups">Function: SharingRegistryService.getGroups</h4>
+</pre><pre><p>API method to get a group</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getGroups">Function: SharingRegistryService.getGroups</h4>
 <pre><code>list&lt;<code><a href="sharing_models.html#Struct_UserGroup">sharing_models.UserGroup</a></code>&gt;</code> getGroups(<code>string</code> domainId,
                                          <code>i32</code> offset,
                                          <code>i32</code> limit)
-</pre><p>API method to get groups in a domainId.</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_addUsersToGroup">Function: SharingRegistryService.addUsersToGroup</h4>
+</pre><pre><p>API method to get groups in a domainId.</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_addUsersToGroup">Function: SharingRegistryService.addUsersToGroup</h4>
 <pre><code>bool</code> addUsersToGroup(<code>string</code> domainId,
                      <code>list&lt;<code>string</code>&gt;</code> userIds,
                      <code>string</code> groupId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to add list of users to a group</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_removeUsersFromGroup">Function: SharingRegistryService.removeUsersFromGroup</h4>
+</pre><pre><p>API method to add list of users to a group</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_removeUsersFromGroup">Function: SharingRegistryService.removeUsersFromGroup</h4>
 <pre><code>bool</code> removeUsersFromGroup(<code>string</code> domainId,
                           <code>list&lt;<code>string</code>&gt;</code> userIds,
                           <code>string</code> groupId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to remove users from a group</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_transferGroupOwnership">Function: SharingRegistryService.transferGroupOwnership</h4>
+</pre><pre><p>API method to remove users from a group</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_transferGroupOwnership">Function: SharingRegistryService.transferGroupOwnership</h4>
 <pre><code>bool</code> transferGroupOwnership(<code>string</code> domainId,
                             <code>string</code> groupId,
                             <code>string</code> newOwnerId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to transfer group ownership</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_addGroupAdmins">Function: SharingRegistryService.addGroupAdmins</h4>
+</pre><pre><p>API method to transfer group ownership</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_addGroupAdmins">Function: SharingRegistryService.addGroupAdmins</h4>
 <pre><code>bool</code> addGroupAdmins(<code>string</code> domainId,
                     <code>string</code> groupId,
                     <code>list&lt;<code>string</code>&gt;</code> adminIds)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to add Admin for a group</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_removeGroupAdmins">Function: SharingRegistryService.removeGroupAdmins</h4>
+</pre><pre><p>API method to add Admin for a group</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_removeGroupAdmins">Function: SharingRegistryService.removeGroupAdmins</h4>
 <pre><code>bool</code> removeGroupAdmins(<code>string</code> domainId,
                        <code>string</code> groupId,
                        <code>list&lt;<code>string</code>&gt;</code> adminIds)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to remove Admin for a group</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_hasAdminAccess">Function: SharingRegistryService.hasAdminAccess</h4>
+</pre><pre><p>API method to remove Admin for a group</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_hasAdminAccess">Function: SharingRegistryService.hasAdminAccess</h4>
 <pre><code>bool</code> hasAdminAccess(<code>string</code> domainId,
                     <code>string</code> groupId,
                     <code>string</code> adminId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to check whether the user has Admin access for the group</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_hasOwnerAccess">Function: SharingRegistryService.hasOwnerAccess</h4>
+</pre><pre><p>API method to check whether the user has Admin access for the group</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_hasOwnerAccess">Function: SharingRegistryService.hasOwnerAccess</h4>
 <pre><code>bool</code> hasOwnerAccess(<code>string</code> domainId,
                     <code>string</code> groupId,
                     <code>string</code> ownerId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to check whether the user has Admin access for the group</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getGroupMembersOfTypeUser">Function: SharingRegistryService.getGroupMembersOfTypeUser</h4>
+</pre><pre><p>API method to check whether the user has Admin access for the group</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getGroupMembersOfTypeUser">Function: SharingRegistryService.getGroupMembersOfTypeUser</h4>
 <pre><code>list&lt;<code><a href="sharing_models.html#Struct_User">sharing_models.User</a></code>&gt;</code> getGroupMembersOfTypeUser(<code>string</code> domainId,
                                                     <code>string</code> groupId,
                                                     <code>i32</code> offset,
                                                     <code>i32</code> limit)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to get list of child users in a group. Only the direct members will be returned.</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getGroupMembersOfTypeGroup">Function: SharingRegistryService.getGroupMembersOfTypeGroup</h4>
+</pre><pre><p>API method to get list of child users in a group. Only the direct members will be returned.</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getGroupMembersOfTypeGroup">Function: SharingRegistryService.getGroupMembersOfTypeGroup</h4>
 <pre><code>list&lt;<code><a href="sharing_models.html#Struct_UserGroup">sharing_models.UserGroup</a></code>&gt;</code> getGroupMembersOfTypeGroup(<code>string</code> domainId,
                                                           <code>string</code> groupId,
                                                           <code>i32</code> offset,
                                                           <code>i32</code> limit)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to get list of child groups in a group. Only the direct members will be returned.</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_addChildGroupsToParentGroup">Function: SharingRegistryService.addChildGroupsToParentGroup</h4>
+</pre><pre><p>API method to get list of child groups in a group. Only the direct members will be returned.</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_addChildGroupsToParentGroup">Function: SharingRegistryService.addChildGroupsToParentGroup</h4>
 <pre><code>bool</code> addChildGroupsToParentGroup(<code>string</code> domainId,
                                  <code>list&lt;<code>string</code>&gt;</code> childIds,
                                  <code>string</code> groupId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to add a child group to a parent group.</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_removeChildGroupFromParentGroup">Function: SharingRegistryService.removeChildGroupFromParentGroup</h4>
+</pre><pre><p>API method to add a child group to a parent group.</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_removeChildGroupFromParentGroup">Function: SharingRegistryService.removeChildGroupFromParentGroup</h4>
 <pre><code>bool</code> removeChildGroupFromParentGroup(<code>string</code> domainId,
                                      <code>string</code> childId,
                                      <code>string</code> groupId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to remove a child group from parent group.</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getAllMemberGroupsForUser">Function: SharingRegistryService.getAllMemberGroupsForUser</h4>
+</pre><pre><p>API method to remove a child group from parent group.</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getAllMemberGroupsForUser">Function: SharingRegistryService.getAllMemberGroupsForUser</h4>
 <pre><code>list&lt;<code><a href="sharing_models.html#Struct_UserGroup">sharing_models.UserGroup</a></code>&gt;</code> getAllMemberGroupsForUser(<code>string</code> domainId,
                                                          <code>string</code> userId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
 </pre></div><div class="definition"><h4 id="Fn_SharingRegistryService_createEntityType">Function: SharingRegistryService.createEntityType</h4>
 <pre><code>string</code> createEntityType(<code><a href="sharing_models.html#Struct_EntityType">sharing_models.EntityType</a></code> entityType)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>, <code><a href="sharing_models.html#Struct_DuplicateEntryException">sharing_models.DuplicateEntryException</a></code>
-</pre><p>API method to create a new entity type</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_updateEntityType">Function: SharingRegistryService.updateEntityType</h4>
+</pre><pre><p>API method to create a new entity type</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_updateEntityType">Function: SharingRegistryService.updateEntityType</h4>
 <pre><code>bool</code> updateEntityType(<code><a href="sharing_models.html#Struct_EntityType">sharing_models.EntityType</a></code> entityType)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to update entity type</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_isEntityTypeExists">Function: SharingRegistryService.isEntityTypeExists</h4>
+</pre><pre><p>API method to update entity type</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_isEntityTypeExists">Function: SharingRegistryService.isEntityTypeExists</h4>
 <pre><code>bool</code> isEntityTypeExists(<code>string</code> domainId,
                         <code>string</code> entityTypeId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to check EntityType Exists</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_deleteEntityType">Function: SharingRegistryService.deleteEntityType</h4>
+</pre><pre><p>API method to check EntityType Exists</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_deleteEntityType">Function: SharingRegistryService.deleteEntityType</h4>
 <pre><code>bool</code> deleteEntityType(<code>string</code> domainId,
                       <code>string</code> entityTypeId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to delete entity type</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getEntityType">Function: SharingRegistryService.getEntityType</h4>
+</pre><pre><p>API method to delete entity type</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getEntityType">Function: SharingRegistryService.getEntityType</h4>
 <pre><code><a href="sharing_models.html#Struct_EntityType">sharing_models.EntityType</a></code> getEntityType(<code>string</code> domainId,
                                         <code>string</code> entityTypeId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to get an entity type</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getEntityTypes">Function: SharingRegistryService.getEntityTypes</h4>
+</pre><pre><p>API method to get an entity type</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getEntityTypes">Function: SharingRegistryService.getEntityTypes</h4>
 <pre><code>list&lt;<code><a href="sharing_models.html#Struct_EntityType">sharing_models.EntityType</a></code>&gt;</code> getEntityTypes(<code>string</code> domainId,
                                                <code>i32</code> offset,
                                                <code>i32</code> limit)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to get entity types in a domainId.</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_createEntity">Function: SharingRegistryService.createEntity</h4>
+</pre><pre><p>API method to get entity types in a domainId.</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_createEntity">Function: SharingRegistryService.createEntity</h4>
 <pre><code>string</code> createEntity(<code><a href="sharing_models.html#Struct_Entity">sharing_models.Entity</a></code> entity)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to register new entity</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_updateEntity">Function: SharingRegistryService.updateEntity</h4>
+</pre><pre><p>API method to register new entity</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_updateEntity">Function: SharingRegistryService.updateEntity</h4>
 <pre><code>bool</code> updateEntity(<code><a href="sharing_models.html#Struct_Entity">sharing_models.Entity</a></code> entity)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to update entity</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_isEntityExists">Function: SharingRegistryService.isEntityExists</h4>
+</pre><pre><p>API method to update entity</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_isEntityExists">Function: SharingRegistryService.isEntityExists</h4>
 <pre><code>bool</code> isEntityExists(<code>string</code> domainId,
                     <code>string</code> entityId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to check Entity Exists</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_deleteEntity">Function: SharingRegistryService.deleteEntity</h4>
+</pre><pre><p>API method to check Entity Exists</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_deleteEntity">Function: SharingRegistryService.deleteEntity</h4>
 <pre><code>bool</code> deleteEntity(<code>string</code> domainId,
                   <code>string</code> entityId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to delete entity</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getEntity">Function: SharingRegistryService.getEntity</h4>
+</pre><pre><p>API method to delete entity</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getEntity">Function: SharingRegistryService.getEntity</h4>
 <pre><code><a href="sharing_models.html#Struct_Entity">sharing_models.Entity</a></code> getEntity(<code>string</code> domainId,
                                 <code>string</code> entityId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to get entity</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_searchEntities">Function: SharingRegistryService.searchEntities</h4>
+</pre><pre><p>API method to get entity</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_searchEntities">Function: SharingRegistryService.searchEntities</h4>
 <pre><code>list&lt;<code><a href="sharing_models.html#Struct_Entity">sharing_models.Entity</a></code>&gt;</code> searchEntities(<code>string</code> domainId,
                                            <code>string</code> userId,
                                            <code>list&lt;<code><a href="sharing_models.html#Struct_SearchCriteria">sharing_models.SearchCriteria</a></code>&gt;</code> filters,
                                            <code>i32</code> offset,
                                            <code>i32</code> limit)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to search entities</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getListOfSharedUsers">Function: SharingRegistryService.getListOfSharedUsers</h4>
+</pre><pre><p>API method to search entities</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getListOfSharedUsers">Function: SharingRegistryService.getListOfSharedUsers</h4>
 <pre><code>list&lt;<code><a href="sharing_models.html#Struct_User">sharing_models.User</a></code>&gt;</code> getListOfSharedUsers(<code>string</code> domainId,
                                                <code>string</code> entityId,
                                                <code>string</code> permissionTypeId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to get a list of shared users given the entity id</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getListOfDirectlySharedUsers">Function: SharingRegistryService.getListOfDirectlySharedUsers</h4>
+</pre><pre><p>API method to get a list of shared users given the entity id</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getListOfDirectlySharedUsers">Function: SharingRegistryService.getListOfDirectlySharedUsers</h4>
 <pre><code>list&lt;<code><a href="sharing_models.html#Struct_User">sharing_models.User</a></code>&gt;</code> getListOfDirectlySharedUsers(<code>string</code> domainId,
                                                        <code>string</code> entityId,
                                                        <code>string</code> permissionTypeId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to get a list of shared users given the entity id where the sharing type is directly applied</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getListOfSharedGroups">Function: SharingRegistryService.getListOfSharedGroups</h4>
+</pre><pre><p>API method to get a list of shared users given the entity id where the sharing type is directly applied</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getListOfSharedGroups">Function: SharingRegistryService.getListOfSharedGroups</h4>
 <pre><code>list&lt;<code><a href="sharing_models.html#Struct_UserGroup">sharing_models.UserGroup</a></code>&gt;</code> getListOfSharedGroups(<code>string</code> domainId,
                                                      <code>string</code> entityId,
                                                      <code>string</code> permissionTypeId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to get a list of shared groups given the entity id</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getListOfDirectlySharedGroups">Function: SharingRegistryService.getListOfDirectlySharedGroups</h4>
+</pre><pre><p>API method to get a list of shared groups given the entity id</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getListOfDirectlySharedGroups">Function: SharingRegistryService.getListOfDirectlySharedGroups</h4>
 <pre><code>list&lt;<code><a href="sharing_models.html#Struct_UserGroup">sharing_models.UserGroup</a></code>&gt;</code> getListOfDirectlySharedGroups(<code>string</code> domainId,
                                                              <code>string</code> entityId,
                                                              <code>string</code> permissionTypeId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to get a list of directly shared groups given the entity id where the sharing type is directly applied</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_createPermissionType">Function: SharingRegistryService.createPermissionType</h4>
+</pre><pre><p>API method to get a list of directly shared groups given the entity id where the sharing type is directly applied</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_createPermissionType">Function: SharingRegistryService.createPermissionType</h4>
 <pre><code>string</code> createPermissionType(<code><a href="sharing_models.html#Struct_PermissionType">sharing_models.PermissionType</a></code> permissionType)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>, <code><a href="sharing_models.html#Struct_DuplicateEntryException">sharing_models.DuplicateEntryException</a></code>
-</pre><p>API method to create permission type</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_updatePermissionType">Function: SharingRegistryService.updatePermissionType</h4>
+</pre><pre><p>API method to create permission type</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_updatePermissionType">Function: SharingRegistryService.updatePermissionType</h4>
 <pre><code>bool</code> updatePermissionType(<code><a href="sharing_models.html#Struct_PermissionType">sharing_models.PermissionType</a></code> permissionType)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to update permission type</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_isPermissionExists">Function: SharingRegistryService.isPermissionExists</h4>
+</pre><pre><p>API method to update permission type</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_isPermissionExists">Function: SharingRegistryService.isPermissionExists</h4>
 <pre><code>bool</code> isPermissionExists(<code>string</code> dimainId,
                         <code>string</code> permissionId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to check Permission Exists</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_deletePermissionType">Function: SharingRegistryService.deletePermissionType</h4>
+</pre><pre><p>API method to check Permission Exists</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_deletePermissionType">Function: SharingRegistryService.deletePermissionType</h4>
 <pre><code>bool</code> deletePermissionType(<code>string</code> domainId,
                           <code>string</code> permissionTypeId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to delete permission type</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getPermissionType">Function: SharingRegistryService.getPermissionType</h4>
+</pre><pre><p>API method to delete permission type</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getPermissionType">Function: SharingRegistryService.getPermissionType</h4>
 <pre><code><a href="sharing_models.html#Struct_PermissionType">sharing_models.PermissionType</a></code> getPermissionType(<code>string</code> domainId,
                                                 <code>string</code> permissionTypeId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to get permission type</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getPermissionTypes">Function: SharingRegistryService.getPermissionTypes</h4>
+</pre><pre><p>API method to get permission type</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_getPermissionTypes">Function: SharingRegistryService.getPermissionTypes</h4>
 <pre><code>list&lt;<code><a href="sharing_models.html#Struct_PermissionType">sharing_models.PermissionType</a></code>&gt;</code> getPermissionTypes(<code>string</code> domainId,
                                                        <code>i32</code> offset,
                                                        <code>i32</code> limit)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to get list of permission types in a given domainId.</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_shareEntityWithUsers">Function: SharingRegistryService.shareEntityWithUsers</h4>
+</pre><pre><p>API method to get list of permission types in a given domainId.</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_shareEntityWithUsers">Function: SharingRegistryService.shareEntityWithUsers</h4>
 <pre><code>bool</code> shareEntityWithUsers(<code>string</code> domainId,
                           <code>string</code> entityId,
                           <code>list&lt;<code>string</code>&gt;</code> userList,
                           <code>string</code> permissionTypeId,
                           <code>bool</code> cascadePermission)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to share an entity with users</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_revokeEntitySharingFromUsers">Function: SharingRegistryService.revokeEntitySharingFromUsers</h4>
+</pre><pre><p>API method to share an entity with users</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_revokeEntitySharingFromUsers">Function: SharingRegistryService.revokeEntitySharingFromUsers</h4>
 <pre><code>bool</code> revokeEntitySharingFromUsers(<code>string</code> domainId,
                                   <code>string</code> entityId,
                                   <code>list&lt;<code>string</code>&gt;</code> userList,
                                   <code>string</code> permissionTypeId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to revoke sharing from a list of users</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_shareEntityWithGroups">Function: SharingRegistryService.shareEntityWithGroups</h4>
+</pre><pre><p>API method to revoke sharing from a list of users</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_shareEntityWithGroups">Function: SharingRegistryService.shareEntityWithGroups</h4>
 <pre><code>bool</code> shareEntityWithGroups(<code>string</code> domainId,
                            <code>string</code> entityId,
                            <code>list&lt;<code>string</code>&gt;</code> groupList,
                            <code>string</code> permissionTypeId,
                            <code>bool</code> cascadePermission)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to share an entity with list of groups</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_revokeEntitySharingFromGroups">Function: SharingRegistryService.revokeEntitySharingFromGroups</h4>
+</pre><pre><p>API method to share an entity with list of groups</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_revokeEntitySharingFromGroups">Function: SharingRegistryService.revokeEntitySharingFromGroups</h4>
 <pre><code>bool</code> revokeEntitySharingFromGroups(<code>string</code> domainId,
                                    <code>string</code> entityId,
                                    <code>list&lt;<code>string</code>&gt;</code> groupList,
                                    <code>string</code> permissionTypeId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to revoke sharing from list of users</p>
-<br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_userHasAccess">Function: SharingRegistryService.userHasAccess</h4>
+</pre><pre><p>API method to revoke sharing from list of users</p>
+</pre><br/></div><div class="definition"><h4 id="Fn_SharingRegistryService_userHasAccess">Function: SharingRegistryService.userHasAccess</h4>
 <pre><code>bool</code> userHasAccess(<code>string</code> domainId,
                    <code>string</code> userId,
                    <code>string</code> entityId,
                    <code>string</code> permissionTypeId)
     throws <code><a href="sharing_models.html#Struct_SharingRegistryException">sharing_models.SharingRegistryException</a></code>
-</pre><p>API method to check whether a user has access to a specific entity</p>
-<br/></div></div></body></html>
+</pre><pre><p>API method to check whether a user has access to a specific entity</p>
+</pre><br/></div></div></body></html>
diff --git a/modules/sharing-registry/sharing-service-docs/api-docs/sharing_models.html b/modules/sharing-registry/sharing-service-docs/api-docs/sharing_models.html
index 3707f44..f44eb9f 100644
--- a/modules/sharing-registry/sharing-service-docs/api-docs/sharing_models.html
+++ b/modules/sharing-registry/sharing-service-docs/api-docs/sharing_models.html
@@ -36,35 +36,35 @@
 <table class="table-bordered table-striped table-condensed"><thead><th>Constant</th><th>Type</th><th>Value</th></thead>
 <tr id="Const_DO_NOT_SET_AT_CLIENTS_ID"><td><code>DO_NOT_SET_AT_CLIENTS_ID</code></td><td><code>string</code></td><td><code>"DO_NOT_SET_AT_CLIENTS_ID"</code></td></tr></table><hr/><h2 id="Enumerations">Enumerations</h2>
 <div class="definition"><h3 id="Enum_GroupCardinality">Enumeration: GroupCardinality</h3>
-<p>This is an system internal enum used to define single user groups and multi users groups. Every user is also
+<pre><p>This is an system internal enum used to define single user groups and multi users groups. Every user is also
 considered as a group in it's own right for implementation ease</p>
 
-<br/><br/><table class="table-bordered table-striped table-condensed">
+</pre><br/><br/><table class="table-bordered table-striped table-condensed">
 <tr><td><code>SINGLE_USER</code></td><td><code>0</code></td><td>
 </td></tr>
 <tr><td><code>MULTI_USER</code></td><td><code>1</code></td><td>
 </td></tr>
 </table></div>
 <div class="definition"><h3 id="Enum_GroupType">Enumeration: GroupType</h3>
-<p>Group types can be either user level or domain level groups.</p>
+<pre><p>Group types can be either user level or domain level groups.</p>
 
-<br/><br/><table class="table-bordered table-striped table-condensed">
+</pre><br/><br/><table class="table-bordered table-striped table-condensed">
 <tr><td><code>DOMAIN_LEVEL_GROUP</code></td><td><code>0</code></td><td>
 </td></tr>
 <tr><td><code>USER_LEVEL_GROUP</code></td><td><code>1</code></td><td>
 </td></tr>
 </table></div>
 <div class="definition"><h3 id="Enum_GroupChildType">Enumeration: GroupChildType</h3>
-<p>System internal data type to match group child types</p>
+<pre><p>System internal data type to match group child types</p>
 
-<br/><br/><table class="table-bordered table-striped table-condensed">
+</pre><br/><br/><table class="table-bordered table-striped table-condensed">
 <tr><td><code>USER</code></td><td><code>0</code></td><td>
 </td></tr>
 <tr><td><code>GROUP</code></td><td><code>1</code></td><td>
 </td></tr>
 </table></div>
 <div class="definition"><h3 id="Enum_EntitySearchField">Enumeration: EntitySearchField</h3>
-<p>This list of fields that can be used to search entities</p>
+<pre><p>This list of fields that can be used to search entities</p>
 <li>NAME : Name of the entity</li>
 <li>DESCRIPTION : Description of the entity</li>
 <li>FULL_TEXT : Full text field of the entity</li>
@@ -74,7 +74,7 @@ considered as a group in it's own right for implementation ease</p>
 <li>UPDATED_TIME : Updated time of the entity</li>
 <li>SHARED_COUNT : Number of directly shared users and groups</li>
 
-<br/><br/><table class="table-bordered table-striped table-condensed">
+</pre><br/><br/><table class="table-bordered table-striped table-condensed">
 <tr><td><code>NAME</code></td><td><code>0</code></td><td>
 </td></tr>
 <tr><td><code>DESCRIPTION</code></td><td><code>1</code></td><td>
@@ -97,14 +97,14 @@ considered as a group in it's own right for implementation ease</p>
 </td></tr>
 </table></div>
 <div class="definition"><h3 id="Enum_SearchCondition">Enumeration: SearchCondition</h3>
-<p>Different search operators that can be used with the entity search fields</p>
+<pre><p>Different search operators that can be used with the entity search fields</p>
 <li>EQUAL : Simply matches for equality. Applicable for name, and parent entity id</li>
 <li>LIKE : Check for the condition %$FIELD% condition. Applicable for name, and description</li>
 <li>FULL_TEXT : Does a full text search. Only applicable for the FULL_TEXT field.</li>
 <li>GTE : Greater than or equal. Only applicable for created time, updated time and shared count.</li>
 <li>LTE : Less than or equal. Only applicable for created time, updated time and shared count.</li>
 
-<br/><br/><table class="table-bordered table-striped table-condensed">
+</pre><br/><br/><table class="table-bordered table-striped table-condensed">
 <tr><td><code>EQUAL</code></td><td><code>0</code></td><td>
 </td></tr>
 <tr><td><code>LIKE</code></td><td><code>1</code></td><td>
@@ -119,9 +119,9 @@ considered as a group in it's own right for implementation ease</p>
 </td></tr>
 </table></div>
 <div class="definition"><h3 id="Enum_SharingType">Enumeration: SharingType</h3>
-<p>This is an internal enum type for managing sharings</p>
+<pre><p>This is an internal enum type for managing sharings</p>
 
-<br/><br/><table class="table-bordered table-striped table-condensed">
+</pre><br/><br/><table class="table-bordered table-striped table-condensed">
 <tr><td><code>DIRECT_NON_CASCADING</code></td><td><code>0</code></td><td>
 </td></tr>
 <tr><td><code>DIRECT_CASCADING</code></td><td><code>1</code></td><td>
@@ -137,7 +137,8 @@ considered as a group in it's own right for implementation ease</p>
 <tr><td>3</td><td>description</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>4</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>5</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><p>Domain is the entity that enables multi-tenency in this componenet. Every tenant will be
+<tr><td>6</td><td>initialUserGroupId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
+</table><br/><pre><p>Domain is the entity that enables multi-tenency in this componenet. Every tenant will be
 operating separately it's own silo which is identified by the domain id. In the current implementation domain id
 will be same as the domain name</p>
 <li>domainId : Will be generated by the server based on the domain name</li>
@@ -145,8 +146,9 @@ will be same as the domain name</p>
 <li>description : A short description for the domain</li>
 <li>createdTime : Will be set by the system</li>
 <li>updatedTime : Will be set by the system</li>
+<li>initialUserGroupId : New users will automatically be added to this group</li>
 
-<br/></div><div class="definition"><h3 id="Struct_User">Struct: User</h3>
+</pre><br/></div><div class="definition"><h3 id="Struct_User">Struct: User</h3>
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>userId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>2</td><td>domainId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
@@ -157,7 +159,7 @@ will be same as the domain name</p>
 <tr><td>7</td><td>icon</td><td><code>binary</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>8</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>9</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><p>User is the model used to register a user in the system. Minimal user information will be required to provide
+</table><br/><pre><p>User is the model used to register a user in the system. Minimal user information will be required to provide
 regarding the user.</p>
 <li><b>userId</b> : User id provided by the client</li>
 <li><b>domainId</b> : Domain id for that user</li>
@@ -169,7 +171,7 @@ regarding the user.</p>
 <li>createdTime : If client provides this value then the system will use it if not the current time will be set</li>
 <li>updatedTime : If client provides this value then the system will use it if not the current time will be set</li>
 
-<br/></div><div class="definition"><h3 id="Struct_GroupAdmin">Struct: GroupAdmin</h3>
+</pre><br/></div><div class="definition"><h3 id="Struct_GroupAdmin">Struct: GroupAdmin</h3>
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>groupId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>2</td><td>domainId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
@@ -186,7 +188,7 @@ regarding the user.</p>
 <tr><td>8</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>9</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>10</td><td>groupAdmins</td><td><code>list&lt;<code><a href="#Struct_GroupAdmin">GroupAdmin</a></code>&gt;</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><p>User group is a collection of users.</p>
+</table><br/><pre><p>User group is a collection of users.</p>
  <li><b>groupId</b> : Group id provided by the client</li>
  <li><b>domainId</b> : Domain id for this user group</li>
  <li><b>name</b> : Name for the user group. should be one word</li>
@@ -198,7 +200,7 @@ regarding the user.</p>
  <li>updatedTime : Will be set by the system</li>
  <li>groupAdmins : Admins for the group</li>
  
-<br/></div><div class="definition"><h3 id="Struct_GroupMembership">Struct: GroupMembership</h3>
+</pre><br/></div><div class="definition"><h3 id="Struct_GroupMembership">Struct: GroupMembership</h3>
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>parentId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>2</td><td>childId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
@@ -206,9 +208,9 @@ regarding the user.</p>
 <tr><td>4</td><td>childType</td><td><code><a href="#Enum_GroupChildType">GroupChildType</a></code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>5</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>6</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><p>System internal data type to map group memberships</p>
+</table><br/><pre><p>System internal data type to map group memberships</p>
 
-<br/></div><div class="definition"><h3 id="Struct_EntityType">Struct: EntityType</h3>
+</pre><br/></div><div class="definition"><h3 id="Struct_EntityType">Struct: EntityType</h3>
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>entityTypeId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>2</td><td>domainId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
@@ -216,7 +218,7 @@ regarding the user.</p>
 <tr><td>4</td><td>description</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>5</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>6</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><p>client defined entity types</p>
+</table><br/><pre><p>client defined entity types</p>
 <li><b>entityTypeId</b> : Entity type id provided by the client</li>
 <li><b>domainId</b> : Domain id of the domain.</li>
 <li><b>name</b> : Name for the entity type. Should be a single word.</li>
@@ -224,17 +226,17 @@ regarding the user.</p>
 <li>createdTime : Will be set by the system</li>
 <li>updatedTime : Will be set by the system</li>
 
-<br/></div><div class="definition"><h3 id="Struct_SearchCriteria">Struct: SearchCriteria</h3>
+</pre><br/></div><div class="definition"><h3 id="Struct_SearchCriteria">Struct: SearchCriteria</h3>
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>searchField</td><td><code><a href="#Enum_EntitySearchField">EntitySearchField</a></code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>2</td><td>value</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>3</td><td>searchCondition</td><td><code><a href="#Enum_SearchCondition">SearchCondition</a></code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><p>Container object for search criteria</p>
+</table><br/><pre><p>Container object for search criteria</p>
 <li><b>searchField</b> : Entity search field</li>
 <li><b>value</b> : Search value</li>
 <li><b>searchCondition</b> : EQUAL, LIKE etc..</li>
 
-<br/></div><div class="definition"><h3 id="Struct_Entity">Struct: Entity</h3>
+</pre><br/></div><div class="definition"><h3 id="Struct_Entity">Struct: Entity</h3>
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>entityId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>2</td><td>domainId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
@@ -249,7 +251,7 @@ regarding the user.</p>
 <tr><td>11</td><td>originalEntityCreationTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>12</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>13</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><p>Entity object which is used to register an entity in the system.</p>
+</table><br/><pre><p>Entity object which is used to register an entity in the system.</p>
 <li><b>entityId</b> : Entity id provided by the client</li>
 <li><b>domainId</b> : Domain id</li>
 <li><b>entityTypeId</b> : Entity type id</li>
@@ -264,7 +266,7 @@ set will be default to current time</li>
 <li>createdTime : Will be set by the system</li>
 <li>updatedTime : Will be set by the system</li>
 
-<br/></div><div class="definition"><h3 id="Struct_PermissionType">Struct: PermissionType</h3>
+</pre><br/></div><div class="definition"><h3 id="Struct_PermissionType">Struct: PermissionType</h3>
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>permissionTypeId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>2</td><td>domainId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
@@ -272,7 +274,7 @@ set will be default to current time</li>
 <tr><td>4</td><td>description</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>5</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>6</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><p>Object for creating client defined permission type</p>
+</table><br/><pre><p>Object for creating client defined permission type</p>
 <li><b>permissionTypeId</b> : Permission type id provided by the client</li>
 <li><b>domainId</b> : Domain id</li>
 <li><b>name</b> : Single word name for the permission</li>
@@ -280,7 +282,7 @@ set will be default to current time</li>
 <li>createdTime : Will be set by the system</li>
 <li>updatedTime : Will be set by the system</li>
 
-<br/></div><div class="definition"><h3 id="Struct_Sharing">Struct: Sharing</h3>
+</pre><br/></div><div class="definition"><h3 id="Struct_Sharing">Struct: Sharing</h3>
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>permissionTypeId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>2</td><td>entityId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
@@ -290,19 +292,19 @@ set will be default to current time</li>
 <tr><td>6</td><td>inheritedParentId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>7</td><td>createdTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>8</td><td>updatedTime</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><p>This is an internal enum type for managing sharings</p>
+</table><br/><pre><p>This is an internal enum type for managing sharings</p>
 
-<br/></div><div class="definition"><h3 id="Struct_SharingRegistryException">Exception: SharingRegistryException</h3>
+</pre><br/></div><div class="definition"><h3 id="Struct_SharingRegistryException">Exception: SharingRegistryException</h3>
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>message</td><td><code>string</code></td><td></td><td>required</td><td></td></tr>
-</table><br/><p>Exception model used in the sharing registry service</p>
+</table><br/><pre><p>Exception model used in the sharing registry service</p>
 
-<br/></div><div class="definition"><h3 id="Struct_DuplicateEntryException">Exception: DuplicateEntryException</h3>
+</pre><br/></div><div class="definition"><h3 id="Struct_DuplicateEntryException">Exception: DuplicateEntryException</h3>
 <table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
 <tr><td>1</td><td>message</td><td><code>string</code></td><td></td><td>required</td><td></td></tr>
-</table><br/>This exception is thrown when you try to save a duplicate entity that already exists
+</table><br/><pre>This exception is thrown when you try to save a duplicate entity that already exists
   in the database.
 
   message: contains the associated error message
 
-<br/></div></div></body></html>
+</pre><br/></div></div></body></html>
diff --git a/thrift-interface-descriptions/data-models/sharing-models/sharing_models.thrift b/thrift-interface-descriptions/data-models/sharing-models/sharing_models.thrift
index 002145c..e1c29a2 100644
--- a/thrift-interface-descriptions/data-models/sharing-models/sharing_models.thrift
+++ b/thrift-interface-descriptions/data-models/sharing-models/sharing_models.thrift
@@ -33,13 +33,15 @@ const string DO_NOT_SET_AT_CLIENTS_ID = "DO_NOT_SET_AT_CLIENTS_ID"
 * <li>description : A short description for the domain</li>
 * <li>createdTime : Will be set by the system</li>
 * <li>updatedTime : Will be set by the system</li>
+* <li>initialUserGroupId : New users will automatically be added to this group</li>
 **/
 struct Domain {
     1: optional string domainId = DO_NOT_SET_AT_CLIENTS_ID,
     2: optional string name,
     3: optional string description,
     4: optional i64 createdTime,
-    5: optional i64 updatedTime
+    5: optional i64 updatedTime,
+    6: optional string initialUserGroupId
 }
 
 /**
@@ -300,4 +302,4 @@ exception SharingRegistryException {
 **/
 exception DuplicateEntryException {
     1: required string message
-}
\ No newline at end of file
+}