Implemented methods in service handler and repositories
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserAllocationDetailEntity.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserAllocationDetailEntity.java
index 1ebcc9f..c05efca 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserAllocationDetailEntity.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserAllocationDetailEntity.java
@@ -4,10 +4,7 @@
 import javax.persistence.*;
 import java.math.BigInteger;
 
-/**
- *
- * @author harsha
- */
+
 /**
  * The persistent class for the USER_ALLOCATION_DETAILS database table.
  * 
@@ -42,6 +39,9 @@
 	@Column(name="FIELD_OF_SCIENCE")
 	private String fieldOfScience;
 
+	@Column(name="IS_PRIMARY_OWNER")
+	private byte isPrimaryOwner;
+
 	@Lob
 	@Column(name="KEYWORDS")
 	private String keywords;
@@ -145,6 +145,14 @@
 		this.fieldOfScience = fieldOfScience;
 	}
 
+	public byte getIsPrimaryOwner() {
+		return this.isPrimaryOwner;
+	}
+
+	public void setIsPrimaryOwner(byte isPrimaryOwner) {
+		this.isPrimaryOwner = isPrimaryOwner;
+	}
+
 	public String getKeywords() {
 		return this.keywords;
 	}
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/ProjectReviewerRepository.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/ProjectReviewerRepository.java
index 897bd62..58b6b7c 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/ProjectReviewerRepository.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/ProjectReviewerRepository.java
@@ -1,14 +1,31 @@
 package org.apache.airavata.allocation.manager.db.repositories;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntity;
+import org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntityPK;
+import org.apache.airavata.allocation.manager.db.utils.DBConstants;
+import org.apache.airavata.allocation.manager.models.AllocationManagerException;
 import org.apache.airavata.allocation.manager.models.ProjectReviewer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class ProjectReviewerRepository extends AbstractRepository<ProjectReviewer, ProjectReviewerEntity, String> {
+public class ProjectReviewerRepository extends AbstractRepository<ProjectReviewer, ProjectReviewerEntity, ProjectReviewerEntityPK> {
     private final static Logger logger = LoggerFactory.getLogger(DomainRepository.class);
 
     public ProjectReviewerRepository(){
         super(ProjectReviewer.class, ProjectReviewerEntity.class);
     }
+    
+    /*Method for getting a list of project assigned to a reviewer*/
+    public List<ProjectReviewer> getProjectForReviewer(String reviewerUserName) throws AllocationManagerException, Exception {
+        String query = "SELECT "+ DBConstants.ProjectReviewerTable.PROJECTID +" from " + ProjectReviewerEntity.class.getSimpleName();
+        query += " WHERE ";
+        query += DBConstants.ProjectReviewerTable.REVIEWER + " = " + reviewerUserName;
+        Map<String,Object> queryParameters = new HashMap<>();
+        queryParameters.put(DBConstants.ProjectReviewerTable.REVIEWER, reviewerUserName);
+        return select(query, queryParameters, 0, -1);
+    }
+    
 }
\ No newline at end of file
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/UserAllocationDetailRepository.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/UserAllocationDetailRepository.java
index adfd6d2..f2ec4f3 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/UserAllocationDetailRepository.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/UserAllocationDetailRepository.java
@@ -1,14 +1,29 @@
 package org.apache.airavata.allocation.manager.db.repositories;
 
+import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
 import org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntity;
+import org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntityPK;
+import org.apache.airavata.allocation.manager.db.utils.DBConstants;
 import org.apache.airavata.allocation.manager.models.UserAllocationDetail;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class UserAllocationDetailRepository extends AbstractRepository<UserAllocationDetail, UserAllocationDetailEntity, String> {
+public class UserAllocationDetailRepository extends AbstractRepository<UserAllocationDetail, UserAllocationDetailEntity, UserAllocationDetailEntityPK> {
     private final static Logger logger = LoggerFactory.getLogger(DomainRepository.class);
 
     public UserAllocationDetailRepository(){
         super(UserAllocationDetail.class, UserAllocationDetailEntity.class);
     }
+    
+    public String getPrimaryOwner(String projectId) throws Exception{
+        Map<String,Object> queryParameters = new HashMap<>();
+        String query = "SELECT * from " + UserAllocationDetailEntity.class.getSimpleName();
+        query += " WHERE ";
+        query += DBConstants.UserAllocationDetailTable.PROJECTID + " = " + projectId + " AND "; 
+        query += DBConstants.UserAllocationDetailTable.ISPRIMARYOWNER + " = TRUE" ;
+        queryParameters.put(DBConstants.UserAllocationDetailTable.PROJECTID, projectId);
+        return select(query, queryParameters, 0, -1).get(0).getId().getUsername();
+    }
 }
\ No newline at end of file
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/utils/DBConstants.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/utils/DBConstants.java
index 749fb40..e740ac0 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/utils/DBConstants.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/utils/DBConstants.java
@@ -35,80 +35,18 @@
         public static final String UPDATED_TIME = "updatedTime";
     }
 
-    public static class UserTable {
-        public static final String USER_ID = "userId";
-        public static final String DOMAIN_ID = "domainId";
-        public static final String USER_NAME = "userName";
-        public static final String CREATED_TIME = "createdTime";
-        public static final String UPDATED_TIME = "updatedTime";
+    // Added the ProjectReviewer table fields
+    public static class ProjectReviewerTable{
+        public static final String PROJECTID = "PROJECT_ID";
+        public static final String REVIEWER = "REVIEWER";  
     }
-
-    public static class UserGroupTable {
-        public static final String GROUP_ID = "groupId";
-        public static final String DOMAIN_ID = "domainId";
-        public static final String NAME = "name";
-        public static final String DESCRIPTION = "description";
-        public static final String OWNER_ID = "ownerId";
-        public static final String GROUP_TYPE = "groupType";
-        public static final String GROUP_CARDINALITY = "groupCardinality";
-        public static final String CREATED_TIME = "createdTime";
-        public static final String UPDATED_TIME = "updatedTime";
+    
+    public static class UserAllocationDetailTable{
+        public static final String PROJECTID = "PROJECT_ID";
+        public static final String ISPRIMARYOWNER = "IS_PRIMARY_OWNER";
     }
-
-    public static class GroupMembershipTable {
-        public static final String PARENT_ID = "parentId";
-        public static final String CHILD_ID = "childId";
-        public static final String CHILD_TYPE = "childType";
-        public static final String DOMAIN_ID = "domainId";
-        public static final String CREATED_TIME = "createdTime";
-        public static final String UPDATED_TIME = "updatedTime";
-    }
-
-    public static class EntityTypeTable {
-        public static final String ENTITY_TYPE_ID = "entityTypeId";
-        public static final String DOMAIN_ID = "domainId";
-        public static final String CREATED_TIME = "createdTime";
-        public static final String UPDATED_TIME = "updatedTime";
-    }
-
-    public static class PermissionTypeTable {
-        public static final String ENTITY_TYPE_ID = "permissionTypeId";
-        public static final String DOMAIN_ID = "domainId";
-        public static final String NAME = "name";
-        public static final String CREATED_TIME = "createdTime";
-        public static final String UPDATED_TIME = "updatedTime";
-    }
-
-    public static class EntityTable {
-        public static final String ENTITY_ID = "entityId";
-        public static final String PARENT_ENTITY_ID = "parentEntityId";
-        public static final String ENTITY_TYPE_ID = "entityTypeId";
-        public static final String NAME = "name";
-        public static final String DESCRIPTION = "description";
-        public static final String FULL_TEXT = "fullText";
-        public static final String CREATED_TIME = "createdTime";
-        public static final String UPDATED_TIME = "updatedTime";
-        public static final String DOMAIN_ID = "domainId";
-        public static final String ORIGINAL_ENTITY_CREATION_TIME = "originalEntityCreationTime";
-        public static final String SHARED = "shared";
-    }
-
-    public static class SharingTable {
-        public static final String DOMAIN_ID = "domainId";
-        public static final String PERMISSION_TYPE_ID = "permissionTypeId";
-        public static final String ENTITY_ID = "entityId";
-        public static final String GROUP_ID = "groupId";
-        public static final String INHERITED_PARENT_ID = "inheritedParentId";
-        public static final String SHARING_TYPE = "sharingType";
-        public static final String CREATED_TIME = "createdTime";
-        public static final String UPDATED_TIME = "updatedTime";
-    }
-    // Added the UserDetail table fields 
-    public static class UserDetailTable {
-        public static final String USERNAME = "username";
-        public static final String EMAIL = "email";
-        public static final String FULLNAME = "fullName";
-        public static final String PASSWORD = "password";
-        public static final String USERTYPE = "userType";
+    
+    public static class UserDetailTable{
+        public static final String USERTYPE = "USER_TYPE";
     }
 }
\ No newline at end of file
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/messaging/AllocationServiceDBEventHandler.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/messaging/AllocationServiceDBEventHandler.java
index fd33c59..35834d4 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/messaging/AllocationServiceDBEventHandler.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/messaging/AllocationServiceDBEventHandler.java
@@ -80,7 +80,7 @@
                             case READ:
                                 log.info("Updating user. User name : " + user.id.getUsername());
 
-                                allocationManagerClient.getAllocationRequest(user.id.projectId);
+                                allocationManagerClient.getAllocationRequest(user.id.projectId, user.id.getUsername());
                                 log.debug("User updated. User Id : " + user.id.getUsername());
 
                                 break;
@@ -95,7 +95,7 @@
                             case DELETE:
                                 log.info("Deleting user. User name : " + user.id.getUsername());
 
-                                allocationManagerClient.deleteAllocationRequest(user.id.projectId);
+                                allocationManagerClient.deleteAllocationRequest(user.id.projectId, user.id.getUsername());
                                 log.debug("User deleted. User name : " + user.id.getUsername());
 
                                 break;
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/server/AllocationManagerServerHandler.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/server/AllocationManagerServerHandler.java
index 0c88673..405f5c2 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/server/AllocationManagerServerHandler.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/server/AllocationManagerServerHandler.java
@@ -19,9 +19,13 @@
  */
 package org.apache.airavata.allocation.manager.server;
 
+import static java.lang.System.in;
+import java.util.ArrayList;
 import java.util.List;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.allocation.manager.client.NotificationManager;
+import org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntityPK;
+import org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntityPK;
 import org.apache.airavata.allocation.manager.db.repositories.*;
 import org.apache.airavata.allocation.manager.db.utils.JPAUtils;
 import org.apache.airavata.allocation.manager.models.*;
@@ -46,7 +50,11 @@
     @Override
     public String createAllocationRequest(UserAllocationDetail reqDetails) throws AllocationManagerException, TException {
         try{
-            if((new UserAllocationDetailPKRepository()).isExists(reqDetails.id.projectId))  
+            UserAllocationDetailEntityPK objAllocationDetailEntityPK = new UserAllocationDetailEntityPK();
+            objAllocationDetailEntityPK.setProjectId(reqDetails.id.projectId);
+            objAllocationDetailEntityPK.setUsername(reqDetails.id.username);
+            
+            if((new UserAllocationDetailRepository()).isExists(objAllocationDetailEntityPK))  
             throw new TException("There exist project with the id");
             UserAllocationDetail create = (new UserAllocationDetailRepository()).create(reqDetails);
             return reqDetails.id.projectId;
@@ -58,11 +66,13 @@
 
     //Implementing isAllocationRequestExists method to check if the allocation request exists
     @Override
-    public boolean isAllocationRequestExists(String projectId) throws AllocationManagerException, TException {
+    public boolean isAllocationRequestExists(String projectId, String userName) throws AllocationManagerException, TException {
         try{
-            UserAllocationDetailPK alloc = new UserAllocationDetailPK();
-            alloc.setProjectId(projectId);
-            return ((new UserAllocationDetailRepository()).isExists(alloc.projectId));
+            UserAllocationDetailEntityPK objAllocationDetailEntityPK = new UserAllocationDetailEntityPK();
+            objAllocationDetailEntityPK.setProjectId(projectId);
+            objAllocationDetailEntityPK.setUsername(userName);
+            
+            return ((new UserAllocationDetailRepository()).isExists(objAllocationDetailEntityPK));
         }catch (Exception ex) {
             throw new AllocationManagerException().setMessage(ex.getMessage() + " Stack trace:" + ExceptionUtils.getStackTrace(ex));
         }
@@ -70,11 +80,13 @@
 
     //Implementing deleteAllocationRequest method to delete an allocation request
     @Override
-    public boolean deleteAllocationRequest(String projectId) throws AllocationManagerException, TException {
+    public boolean deleteAllocationRequest(String projectId, String userName) throws AllocationManagerException, TException {
         try{
-            UserAllocationDetailPK alloc = new UserAllocationDetailPK();
-            alloc.setProjectId(projectId);
-            (new UserAllocationDetailPKRepository()).delete(alloc.projectId);
+            UserAllocationDetailEntityPK objAllocationDetailEntityPK = new UserAllocationDetailEntityPK();
+            objAllocationDetailEntityPK.setProjectId(projectId);
+            objAllocationDetailEntityPK.setUsername(userName);
+            
+            (new UserAllocationDetailRepository()).delete(objAllocationDetailEntityPK);
             return true;
         }catch (Exception ex) {
             logger.error(ex.getMessage(), ex);
@@ -84,11 +96,13 @@
 
     //Implementing getAllocationRequest method to get an allocation request
     @Override
-    public UserAllocationDetail getAllocationRequest(String projectId) throws AllocationManagerException, TException {
+    public UserAllocationDetail getAllocationRequest(String projectId, String userName) throws AllocationManagerException, TException {
         try{
-            UserAllocationDetailPK alloc = new UserAllocationDetailPK();
-            alloc.setProjectId(projectId);
-            return (new UserAllocationDetailRepository()).get(alloc.projectId);
+            UserAllocationDetailEntityPK objAllocationDetailEntityPK = new UserAllocationDetailEntityPK();
+            objAllocationDetailEntityPK.setProjectId(projectId);
+            objAllocationDetailEntityPK.setUsername(userName);
+            
+            return (new UserAllocationDetailRepository().get(objAllocationDetailEntityPK));
         }catch (Exception ex) {
             logger.error(ex.getMessage(), ex);
             throw new AllocationManagerException().setMessage(ex.getMessage() + " Stack trace:" + ExceptionUtils.getStackTrace(ex));
@@ -123,9 +137,12 @@
     }
     
     @Override
-    public String getAllocationRequestStatus(String projectId) throws org.apache.thrift.TException{ 
-        try{
-            return (new RequestStatusRepository()).get(projectId).status;
+    public String getAllocationRequestStatus(String projectId, String userName) throws org.apache.thrift.TException{ 
+       try{
+            UserAllocationDetailEntityPK objAllocDetails = new UserAllocationDetailEntityPK();
+            objAllocDetails.setProjectId(projectId);
+            objAllocDetails.setUsername(userName);
+            return (new UserAllocationDetailRepository()).get(objAllocDetails).status;
         }catch (Exception ex) {
             logger.error(ex.getMessage(), ex);
             throw new AllocationManagerException().setMessage(ex.getMessage() + " Stack trace:" + ExceptionUtils.getStackTrace(ex));
@@ -166,12 +183,15 @@
     @Override
     public void updateAllocationRequestStatus(String projectId, String status) throws TException {
         // TODO Auto-generated method stub
-        RequestStatusRepository request = new RequestStatusRepository();
+        UserAllocationDetailRepository userAllocationDetail = new UserAllocationDetailRepository();
         try {
-
-                request.get(projectId).setStatus(status);
-                 //once status updated notify user
-                (new NotificationManager()).notificationSender(projectId);
+            UserAllocationDetailEntityPK userAllocationDetailPK  = new UserAllocationDetailEntityPK();
+            userAllocationDetailPK.setProjectId(projectId);
+            userAllocationDetailPK.setUsername(new UserAllocationDetailRepository().getPrimaryOwner(projectId));
+            userAllocationDetail.get(userAllocationDetailPK).setStatus(status);
+            
+            //once status updated notify user
+            (new NotificationManager()).notificationSender(projectId);
         } catch (Exception ex) {
                 logger.error(ex.getMessage(), ex);
     throw new AllocationManagerException().setMessage(ex.getMessage() + " Stack trace:" + ExceptionUtils.getStackTrace(ex));
@@ -203,7 +223,22 @@
 
     @Override
     public List<UserAllocationDetail> getAllRequestsForReviewers(String userName)  throws AllocationManagerException, TException {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        List<UserAllocationDetail> userAllocationDetailList = new ArrayList<UserAllocationDetail>(); 
+        try{
+            if(!isReviewer(userName)){
+                throw new AllocationManagerException().setMessage("Invalid reviewer id!");
+            }
+            List<ProjectReviewer> projReviewerList = (new ProjectReviewerRepository()).getProjectForReviewer(userName);
+            for(ProjectReviewer objProj : projReviewerList){
+                UserAllocationDetailEntityPK userAllocationDetailPK  = new UserAllocationDetailEntityPK();
+                userAllocationDetailPK.setProjectId(objProj.id.getProjectId());
+                userAllocationDetailPK.setUsername(new UserAllocationDetailRepository().getPrimaryOwner(objProj.id.getProjectId()));
+                userAllocationDetailList.add(new UserAllocationDetailRepository().get(userAllocationDetailPK));
+            }
+        }catch (Exception ex) {
+            throw new AllocationManagerException().setMessage(ex.getMessage() + " Stack trace:" + ExceptionUtils.getStackTrace(ex));
+        }
+        return userAllocationDetailList;
     }
 
     @Override
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/test/java/org/apache/airavata/allocation/manager/AllocationManagerServerHandlerTest.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/test/java/org/apache/airavata/allocation/manager/AllocationManagerServerHandlerTest.java
index 80dc934..3a5e59e 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/test/java/org/apache/airavata/allocation/manager/AllocationManagerServerHandlerTest.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/test/java/org/apache/airavata/allocation/manager/AllocationManagerServerHandlerTest.java
@@ -70,7 +70,7 @@
 
 
         Assert.assertNotNull(allocationManagerServerHandler.createAllocationRequest(userAllocationDetails));
-        Assert.assertEquals(allocationManagerServerHandler.getAllocationRequest("123"),userAllocationDetails);
+        Assert.assertEquals(allocationManagerServerHandler.getAllocationRequest("123",""),userAllocationDetails);
 
         UserAllocationDetail userAllocationDetails1 = new UserAllocationDetail();
         UserAllocationDetailPK userAllocationDetailPK1 = new UserAllocationDetailPK(); 
@@ -78,9 +78,9 @@
         userAllocationDetailPK1.setUsername("harsha");
         userAllocationDetails1.setId(userAllocationDetailPK1);
 
-        Assert.assertTrue(allocationManagerServerHandler.isAllocationRequestExists(userAllocationDetailPK1.getProjectId()));
+        Assert.assertTrue(allocationManagerServerHandler.isAllocationRequestExists(userAllocationDetailPK1.getProjectId(),""));
         Assert.assertEquals(allocationManagerServerHandler.createAllocationRequest(userAllocationDetails1),"There exist project with the id");
 
-        Assert.assertTrue(allocationManagerServerHandler.deleteAllocationRequest("123"));
+        Assert.assertTrue(allocationManagerServerHandler.deleteAllocationRequest("123",""));
     }
 }
\ No newline at end of file
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/client/AllocationManagerAdminClient.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/client/AllocationManagerAdminClient.java
index 2cd65ba..dc6b90c 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/client/AllocationManagerAdminClient.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/client/AllocationManagerAdminClient.java
@@ -22,6 +22,7 @@
 			if (requestType.equals("UPDATE_REQUEST")) {
 				client.updateAllocationRequestStatus(projectId, status);
 			} else if(requestType.equals("GET_REQUEST")){
+                            
 				client.getAllocationRequest(projectId);
 			}	else if(requestType.equals("GET_REQUEST_STATUS")){
 				client.getAllocationRequestStatus(projectId);
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/AllocationManagerException.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/AllocationManagerException.java
index ef4e395..24647dd 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/AllocationManagerException.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/AllocationManagerException.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -11,7 +11,7 @@
  * <p>Exception model used in the allocation manager service</p>
  * 
  */
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2017-12-08")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class AllocationManagerException extends org.apache.thrift.TException implements org.apache.thrift.TBase<AllocationManagerException, AllocationManagerException._Fields>, java.io.Serializable, Cloneable, Comparable<AllocationManagerException> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("AllocationManagerException");
 
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/Domain.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/Domain.java
index 4d43a75..6de324d 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/Domain.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/Domain.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -16,7 +16,7 @@
  * <li>updatedTime: Time when domain was updated</li>
  * 
  */
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2017-12-08")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class Domain implements org.apache.thrift.TBase<Domain, Domain._Fields>, java.io.Serializable, Cloneable, Comparable<Domain> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Domain");
 
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewer.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewer.java
index 418d589..70185f2 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewer.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewer.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -17,7 +17,7 @@
  * <li>status: Status of the allocation request</li>
  * 
  */
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2017-12-08")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class ProjectReviewer implements org.apache.thrift.TBase<ProjectReviewer, ProjectReviewer._Fields>, java.io.Serializable, Cloneable, Comparable<ProjectReviewer> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProjectReviewer");
 
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewerEntityPK.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewerEntityPK.java
deleted file mode 100644
index c70929c..0000000
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewerEntityPK.java
+++ /dev/null
@@ -1,476 +0,0 @@
-/**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
- *
- * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
- *  @generated
- */
-package org.apache.airavata.allocation.manager.models;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2017-12-08")
-public class ProjectReviewerEntityPK implements org.apache.thrift.TBase<ProjectReviewerEntityPK, ProjectReviewerEntityPK._Fields>, java.io.Serializable, Cloneable, Comparable<ProjectReviewerEntityPK> {
-  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProjectReviewerEntityPK");
-
-  private static final org.apache.thrift.protocol.TField PROJECT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("projectId", org.apache.thrift.protocol.TType.STRING, (short)1);
-  private static final org.apache.thrift.protocol.TField REVIEWER_FIELD_DESC = new org.apache.thrift.protocol.TField("reviewer", org.apache.thrift.protocol.TType.STRING, (short)4);
-
-  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new ProjectReviewerEntityPKStandardSchemeFactory();
-  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new ProjectReviewerEntityPKTupleSchemeFactory();
-
-  public java.lang.String projectId; // optional
-  public java.lang.String reviewer; // 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 {
-    PROJECT_ID((short)1, "projectId"),
-    REVIEWER((short)4, "reviewer");
-
-    private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
-
-    static {
-      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
-        byName.put(field.getFieldName(), field);
-      }
-    }
-
-    /**
-     * Find the _Fields constant that matches fieldId, or null if its not found.
-     */
-    public static _Fields findByThriftId(int fieldId) {
-      switch(fieldId) {
-        case 1: // PROJECT_ID
-          return PROJECT_ID;
-        case 4: // REVIEWER
-          return REVIEWER;
-        default:
-          return null;
-      }
-    }
-
-    /**
-     * Find the _Fields constant that matches fieldId, throwing an exception
-     * if it is not found.
-     */
-    public static _Fields findByThriftIdOrThrow(int fieldId) {
-      _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
-      return fields;
-    }
-
-    /**
-     * Find the _Fields constant that matches name, or null if its not found.
-     */
-    public static _Fields findByName(java.lang.String name) {
-      return byName.get(name);
-    }
-
-    private final short _thriftId;
-    private final java.lang.String _fieldName;
-
-    _Fields(short thriftId, java.lang.String fieldName) {
-      _thriftId = thriftId;
-      _fieldName = fieldName;
-    }
-
-    public short getThriftFieldId() {
-      return _thriftId;
-    }
-
-    public java.lang.String getFieldName() {
-      return _fieldName;
-    }
-  }
-
-  // isset id assignments
-  private static final _Fields optionals[] = {_Fields.PROJECT_ID,_Fields.REVIEWER};
-  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);
-    tmpMap.put(_Fields.PROJECT_ID, new org.apache.thrift.meta_data.FieldMetaData("projectId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.REVIEWER, new org.apache.thrift.meta_data.FieldMetaData("reviewer", 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(ProjectReviewerEntityPK.class, metaDataMap);
-  }
-
-  public ProjectReviewerEntityPK() {
-  }
-
-  /**
-   * Performs a deep copy on <i>other</i>.
-   */
-  public ProjectReviewerEntityPK(ProjectReviewerEntityPK other) {
-    if (other.isSetProjectId()) {
-      this.projectId = other.projectId;
-    }
-    if (other.isSetReviewer()) {
-      this.reviewer = other.reviewer;
-    }
-  }
-
-  public ProjectReviewerEntityPK deepCopy() {
-    return new ProjectReviewerEntityPK(this);
-  }
-
-  @Override
-  public void clear() {
-    this.projectId = null;
-    this.reviewer = null;
-  }
-
-  public java.lang.String getProjectId() {
-    return this.projectId;
-  }
-
-  public ProjectReviewerEntityPK setProjectId(java.lang.String projectId) {
-    this.projectId = projectId;
-    return this;
-  }
-
-  public void unsetProjectId() {
-    this.projectId = null;
-  }
-
-  /** Returns true if field projectId is set (has been assigned a value) and false otherwise */
-  public boolean isSetProjectId() {
-    return this.projectId != null;
-  }
-
-  public void setProjectIdIsSet(boolean value) {
-    if (!value) {
-      this.projectId = null;
-    }
-  }
-
-  public java.lang.String getReviewer() {
-    return this.reviewer;
-  }
-
-  public ProjectReviewerEntityPK setReviewer(java.lang.String reviewer) {
-    this.reviewer = reviewer;
-    return this;
-  }
-
-  public void unsetReviewer() {
-    this.reviewer = null;
-  }
-
-  /** Returns true if field reviewer is set (has been assigned a value) and false otherwise */
-  public boolean isSetReviewer() {
-    return this.reviewer != null;
-  }
-
-  public void setReviewerIsSet(boolean value) {
-    if (!value) {
-      this.reviewer = null;
-    }
-  }
-
-  public void setFieldValue(_Fields field, java.lang.Object value) {
-    switch (field) {
-    case PROJECT_ID:
-      if (value == null) {
-        unsetProjectId();
-      } else {
-        setProjectId((java.lang.String)value);
-      }
-      break;
-
-    case REVIEWER:
-      if (value == null) {
-        unsetReviewer();
-      } else {
-        setReviewer((java.lang.String)value);
-      }
-      break;
-
-    }
-  }
-
-  public java.lang.Object getFieldValue(_Fields field) {
-    switch (field) {
-    case PROJECT_ID:
-      return getProjectId();
-
-    case REVIEWER:
-      return getReviewer();
-
-    }
-    throw new java.lang.IllegalStateException();
-  }
-
-  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
-  public boolean isSet(_Fields field) {
-    if (field == null) {
-      throw new java.lang.IllegalArgumentException();
-    }
-
-    switch (field) {
-    case PROJECT_ID:
-      return isSetProjectId();
-    case REVIEWER:
-      return isSetReviewer();
-    }
-    throw new java.lang.IllegalStateException();
-  }
-
-  @Override
-  public boolean equals(java.lang.Object that) {
-    if (that == null)
-      return false;
-    if (that instanceof ProjectReviewerEntityPK)
-      return this.equals((ProjectReviewerEntityPK)that);
-    return false;
-  }
-
-  public boolean equals(ProjectReviewerEntityPK that) {
-    if (that == null)
-      return false;
-    if (this == that)
-      return true;
-
-    boolean this_present_projectId = true && this.isSetProjectId();
-    boolean that_present_projectId = true && that.isSetProjectId();
-    if (this_present_projectId || that_present_projectId) {
-      if (!(this_present_projectId && that_present_projectId))
-        return false;
-      if (!this.projectId.equals(that.projectId))
-        return false;
-    }
-
-    boolean this_present_reviewer = true && this.isSetReviewer();
-    boolean that_present_reviewer = true && that.isSetReviewer();
-    if (this_present_reviewer || that_present_reviewer) {
-      if (!(this_present_reviewer && that_present_reviewer))
-        return false;
-      if (!this.reviewer.equals(that.reviewer))
-        return false;
-    }
-
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    int hashCode = 1;
-
-    hashCode = hashCode * 8191 + ((isSetProjectId()) ? 131071 : 524287);
-    if (isSetProjectId())
-      hashCode = hashCode * 8191 + projectId.hashCode();
-
-    hashCode = hashCode * 8191 + ((isSetReviewer()) ? 131071 : 524287);
-    if (isSetReviewer())
-      hashCode = hashCode * 8191 + reviewer.hashCode();
-
-    return hashCode;
-  }
-
-  @Override
-  public int compareTo(ProjectReviewerEntityPK other) {
-    if (!getClass().equals(other.getClass())) {
-      return getClass().getName().compareTo(other.getClass().getName());
-    }
-
-    int lastComparison = 0;
-
-    lastComparison = java.lang.Boolean.valueOf(isSetProjectId()).compareTo(other.isSetProjectId());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetProjectId()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.projectId, other.projectId);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = java.lang.Boolean.valueOf(isSetReviewer()).compareTo(other.isSetReviewer());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetReviewer()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.reviewer, other.reviewer);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    return 0;
-  }
-
-  public _Fields fieldForId(int fieldId) {
-    return _Fields.findByThriftId(fieldId);
-  }
-
-  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
-    scheme(iprot).read(iprot, this);
-  }
-
-  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
-    scheme(oprot).write(oprot, this);
-  }
-
-  @Override
-  public java.lang.String toString() {
-    java.lang.StringBuilder sb = new java.lang.StringBuilder("ProjectReviewerEntityPK(");
-    boolean first = true;
-
-    if (isSetProjectId()) {
-      sb.append("projectId:");
-      if (this.projectId == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.projectId);
-      }
-      first = false;
-    }
-    if (isSetReviewer()) {
-      if (!first) sb.append(", ");
-      sb.append("reviewer:");
-      if (this.reviewer == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.reviewer);
-      }
-      first = false;
-    }
-    sb.append(")");
-    return sb.toString();
-  }
-
-  public void validate() throws org.apache.thrift.TException {
-    // check for required fields
-    // check for sub-struct validity
-  }
-
-  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
-    try {
-      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
-    } catch (org.apache.thrift.TException te) {
-      throw new java.io.IOException(te);
-    }
-  }
-
-  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException {
-    try {
-      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
-    } catch (org.apache.thrift.TException te) {
-      throw new java.io.IOException(te);
-    }
-  }
-
-  private static class ProjectReviewerEntityPKStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-    public ProjectReviewerEntityPKStandardScheme getScheme() {
-      return new ProjectReviewerEntityPKStandardScheme();
-    }
-  }
-
-  private static class ProjectReviewerEntityPKStandardScheme extends org.apache.thrift.scheme.StandardScheme<ProjectReviewerEntityPK> {
-
-    public void read(org.apache.thrift.protocol.TProtocol iprot, ProjectReviewerEntityPK struct) throws org.apache.thrift.TException {
-      org.apache.thrift.protocol.TField schemeField;
-      iprot.readStructBegin();
-      while (true)
-      {
-        schemeField = iprot.readFieldBegin();
-        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
-          break;
-        }
-        switch (schemeField.id) {
-          case 1: // PROJECT_ID
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.projectId = iprot.readString();
-              struct.setProjectIdIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 4: // REVIEWER
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.reviewer = iprot.readString();
-              struct.setReviewerIsSet(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();
-    }
-
-    public void write(org.apache.thrift.protocol.TProtocol oprot, ProjectReviewerEntityPK struct) throws org.apache.thrift.TException {
-      struct.validate();
-
-      oprot.writeStructBegin(STRUCT_DESC);
-      if (struct.projectId != null) {
-        if (struct.isSetProjectId()) {
-          oprot.writeFieldBegin(PROJECT_ID_FIELD_DESC);
-          oprot.writeString(struct.projectId);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.reviewer != null) {
-        if (struct.isSetReviewer()) {
-          oprot.writeFieldBegin(REVIEWER_FIELD_DESC);
-          oprot.writeString(struct.reviewer);
-          oprot.writeFieldEnd();
-        }
-      }
-      oprot.writeFieldStop();
-      oprot.writeStructEnd();
-    }
-
-  }
-
-  private static class ProjectReviewerEntityPKTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-    public ProjectReviewerEntityPKTupleScheme getScheme() {
-      return new ProjectReviewerEntityPKTupleScheme();
-    }
-  }
-
-  private static class ProjectReviewerEntityPKTupleScheme extends org.apache.thrift.scheme.TupleScheme<ProjectReviewerEntityPK> {
-
-    @Override
-    public void write(org.apache.thrift.protocol.TProtocol prot, ProjectReviewerEntityPK struct) throws org.apache.thrift.TException {
-      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
-      java.util.BitSet optionals = new java.util.BitSet();
-      if (struct.isSetProjectId()) {
-        optionals.set(0);
-      }
-      if (struct.isSetReviewer()) {
-        optionals.set(1);
-      }
-      oprot.writeBitSet(optionals, 2);
-      if (struct.isSetProjectId()) {
-        oprot.writeString(struct.projectId);
-      }
-      if (struct.isSetReviewer()) {
-        oprot.writeString(struct.reviewer);
-      }
-    }
-
-    @Override
-    public void read(org.apache.thrift.protocol.TProtocol prot, ProjectReviewerEntityPK struct) throws org.apache.thrift.TException {
-      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
-      java.util.BitSet incoming = iprot.readBitSet(2);
-      if (incoming.get(0)) {
-        struct.projectId = iprot.readString();
-        struct.setProjectIdIsSet(true);
-      }
-      if (incoming.get(1)) {
-        struct.reviewer = iprot.readString();
-        struct.setReviewerIsSet(true);
-      }
-    }
-  }
-
-  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
-    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
-  }
-}
-
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewerPK.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewerPK.java
index f6bd0c2..2ca2a85 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewerPK.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewerPK.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -7,7 +7,7 @@
 package org.apache.airavata.allocation.manager.models;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2017-12-08")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class ProjectReviewerPK implements org.apache.thrift.TBase<ProjectReviewerPK, ProjectReviewerPK._Fields>, java.io.Serializable, Cloneable, Comparable<ProjectReviewerPK> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ProjectReviewerPK");
 
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetail.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetail.java
index 557049d..256ff4c 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetail.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetail.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -27,7 +27,7 @@
  * <li>typicalSuPerJob :  An optional field to help reviewer and PI for allocation approval</li>
  * 
  */
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2017-12-08")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class UserAllocationDetail implements org.apache.thrift.TBase<UserAllocationDetail, UserAllocationDetail._Fields>, java.io.Serializable, Cloneable, Comparable<UserAllocationDetail> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UserAllocationDetail");
 
@@ -51,6 +51,7 @@
   private static final org.apache.thrift.protocol.TField START_DATE_FIELD_DESC = new org.apache.thrift.protocol.TField("startDate", org.apache.thrift.protocol.TType.I64, (short)18);
   private static final org.apache.thrift.protocol.TField END_DATE_FIELD_DESC = new org.apache.thrift.protocol.TField("endDate", org.apache.thrift.protocol.TType.I64, (short)19);
   private static final org.apache.thrift.protocol.TField STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("status", org.apache.thrift.protocol.TType.STRING, (short)20);
+  private static final org.apache.thrift.protocol.TField IS_PRIMARY_OWNER_FIELD_DESC = new org.apache.thrift.protocol.TField("isPrimaryOwner", org.apache.thrift.protocol.TType.BOOL, (short)21);
 
   private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new UserAllocationDetailStandardSchemeFactory();
   private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new UserAllocationDetailTupleSchemeFactory();
@@ -75,6 +76,7 @@
   public long startDate; // optional
   public long endDate; // optional
   public java.lang.String status; // optional
+  public boolean isPrimaryOwner; // 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 {
@@ -97,7 +99,8 @@
     AWARD_ALLOCATION((short)17, "awardAllocation"),
     START_DATE((short)18, "startDate"),
     END_DATE((short)19, "endDate"),
-    STATUS((short)20, "status");
+    STATUS((short)20, "status"),
+    IS_PRIMARY_OWNER((short)21, "isPrimaryOwner");
 
     private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -152,6 +155,8 @@
           return END_DATE;
         case 20: // STATUS
           return STATUS;
+        case 21: // IS_PRIMARY_OWNER
+          return IS_PRIMARY_OWNER;
         default:
           return null;
       }
@@ -201,8 +206,9 @@
   private static final int __AWARDALLOCATION_ISSET_ID = 6;
   private static final int __STARTDATE_ISSET_ID = 7;
   private static final int __ENDDATE_ISSET_ID = 8;
+  private static final int __ISPRIMARYOWNER_ISSET_ID = 9;
   private short __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.ID,_Fields.APPLICATIONS_TO_BE_USED,_Fields.DISK_USAGE_RANGE_PER_JOB,_Fields.DOCUMENTS,_Fields.FIELD_OF_SCIENCE,_Fields.KEYWORDS,_Fields.MAX_MEMORY_PER_CPU,_Fields.NUMBER_OF_CPU_PER_JOB,_Fields.PROJECT_DESCRIPTION,_Fields.PROJECT_REVIEWED_AND_FUNDED_BY,_Fields.REQUESTED_DATE,_Fields.SERVICE_UNITS,_Fields.SPECIFIC_RESOURCE_SELECTION,_Fields.TITLE,_Fields.TYPE_OF_ALLOCATION,_Fields.TYPICAL_SU_PER_JOB,_Fields.AWARD_ALLOCATION,_Fields.START_DATE,_Fields.END_DATE,_Fields.STATUS};
+  private static final _Fields optionals[] = {_Fields.ID,_Fields.APPLICATIONS_TO_BE_USED,_Fields.DISK_USAGE_RANGE_PER_JOB,_Fields.DOCUMENTS,_Fields.FIELD_OF_SCIENCE,_Fields.KEYWORDS,_Fields.MAX_MEMORY_PER_CPU,_Fields.NUMBER_OF_CPU_PER_JOB,_Fields.PROJECT_DESCRIPTION,_Fields.PROJECT_REVIEWED_AND_FUNDED_BY,_Fields.REQUESTED_DATE,_Fields.SERVICE_UNITS,_Fields.SPECIFIC_RESOURCE_SELECTION,_Fields.TITLE,_Fields.TYPE_OF_ALLOCATION,_Fields.TYPICAL_SU_PER_JOB,_Fields.AWARD_ALLOCATION,_Fields.START_DATE,_Fields.END_DATE,_Fields.STATUS,_Fields.IS_PRIMARY_OWNER};
   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);
@@ -246,6 +252,8 @@
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     tmpMap.put(_Fields.STATUS, new org.apache.thrift.meta_data.FieldMetaData("status", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.IS_PRIMARY_OWNER, new org.apache.thrift.meta_data.FieldMetaData("isPrimaryOwner", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
     metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(UserAllocationDetail.class, metaDataMap);
   }
@@ -300,6 +308,7 @@
     if (other.isSetStatus()) {
       this.status = other.status;
     }
+    this.isPrimaryOwner = other.isPrimaryOwner;
   }
 
   public UserAllocationDetail deepCopy() {
@@ -337,6 +346,8 @@
     setEndDateIsSet(false);
     this.endDate = 0;
     this.status = null;
+    setIsPrimaryOwnerIsSet(false);
+    this.isPrimaryOwner = false;
   }
 
   public UserAllocationDetailPK getId() {
@@ -820,6 +831,29 @@
     }
   }
 
+  public boolean isIsPrimaryOwner() {
+    return this.isPrimaryOwner;
+  }
+
+  public UserAllocationDetail setIsPrimaryOwner(boolean isPrimaryOwner) {
+    this.isPrimaryOwner = isPrimaryOwner;
+    setIsPrimaryOwnerIsSet(true);
+    return this;
+  }
+
+  public void unsetIsPrimaryOwner() {
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __ISPRIMARYOWNER_ISSET_ID);
+  }
+
+  /** Returns true if field isPrimaryOwner is set (has been assigned a value) and false otherwise */
+  public boolean isSetIsPrimaryOwner() {
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __ISPRIMARYOWNER_ISSET_ID);
+  }
+
+  public void setIsPrimaryOwnerIsSet(boolean value) {
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __ISPRIMARYOWNER_ISSET_ID, value);
+  }
+
   public void setFieldValue(_Fields field, java.lang.Object value) {
     switch (field) {
     case ID:
@@ -986,6 +1020,14 @@
       }
       break;
 
+    case IS_PRIMARY_OWNER:
+      if (value == null) {
+        unsetIsPrimaryOwner();
+      } else {
+        setIsPrimaryOwner((java.lang.Boolean)value);
+      }
+      break;
+
     }
   }
 
@@ -1051,6 +1093,9 @@
     case STATUS:
       return getStatus();
 
+    case IS_PRIMARY_OWNER:
+      return isIsPrimaryOwner();
+
     }
     throw new java.lang.IllegalStateException();
   }
@@ -1102,6 +1147,8 @@
       return isSetEndDate();
     case STATUS:
       return isSetStatus();
+    case IS_PRIMARY_OWNER:
+      return isSetIsPrimaryOwner();
     }
     throw new java.lang.IllegalStateException();
   }
@@ -1301,6 +1348,15 @@
         return false;
     }
 
+    boolean this_present_isPrimaryOwner = true && this.isSetIsPrimaryOwner();
+    boolean that_present_isPrimaryOwner = true && that.isSetIsPrimaryOwner();
+    if (this_present_isPrimaryOwner || that_present_isPrimaryOwner) {
+      if (!(this_present_isPrimaryOwner && that_present_isPrimaryOwner))
+        return false;
+      if (this.isPrimaryOwner != that.isPrimaryOwner)
+        return false;
+    }
+
     return true;
   }
 
@@ -1388,6 +1444,10 @@
     if (isSetStatus())
       hashCode = hashCode * 8191 + status.hashCode();
 
+    hashCode = hashCode * 8191 + ((isSetIsPrimaryOwner()) ? 131071 : 524287);
+    if (isSetIsPrimaryOwner())
+      hashCode = hashCode * 8191 + ((isPrimaryOwner) ? 131071 : 524287);
+
     return hashCode;
   }
 
@@ -1599,6 +1659,16 @@
         return lastComparison;
       }
     }
+    lastComparison = java.lang.Boolean.valueOf(isSetIsPrimaryOwner()).compareTo(other.isSetIsPrimaryOwner());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetIsPrimaryOwner()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.isPrimaryOwner, other.isPrimaryOwner);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -1782,6 +1852,12 @@
       }
       first = false;
     }
+    if (isSetIsPrimaryOwner()) {
+      if (!first) sb.append(", ");
+      sb.append("isPrimaryOwner:");
+      sb.append(this.isPrimaryOwner);
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -1991,6 +2067,14 @@
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 21: // IS_PRIMARY_OWNER
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.isPrimaryOwner = iprot.readBool();
+              struct.setIsPrimaryOwnerIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -2128,6 +2212,11 @@
           oprot.writeFieldEnd();
         }
       }
+      if (struct.isSetIsPrimaryOwner()) {
+        oprot.writeFieldBegin(IS_PRIMARY_OWNER_FIELD_DESC);
+        oprot.writeBool(struct.isPrimaryOwner);
+        oprot.writeFieldEnd();
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -2206,7 +2295,10 @@
       if (struct.isSetStatus()) {
         optionals.set(19);
       }
-      oprot.writeBitSet(optionals, 20);
+      if (struct.isSetIsPrimaryOwner()) {
+        optionals.set(20);
+      }
+      oprot.writeBitSet(optionals, 21);
       if (struct.isSetId()) {
         struct.id.write(oprot);
       }
@@ -2267,12 +2359,15 @@
       if (struct.isSetStatus()) {
         oprot.writeString(struct.status);
       }
+      if (struct.isSetIsPrimaryOwner()) {
+        oprot.writeBool(struct.isPrimaryOwner);
+      }
     }
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, UserAllocationDetail struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
-      java.util.BitSet incoming = iprot.readBitSet(20);
+      java.util.BitSet incoming = iprot.readBitSet(21);
       if (incoming.get(0)) {
         struct.id = new UserAllocationDetailPK();
         struct.id.read(iprot);
@@ -2354,6 +2449,10 @@
         struct.status = iprot.readString();
         struct.setStatusIsSet(true);
       }
+      if (incoming.get(20)) {
+        struct.isPrimaryOwner = iprot.readBool();
+        struct.setIsPrimaryOwnerIsSet(true);
+      }
     }
   }
 
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetailPK.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetailPK.java
index cb46d72..1e50a0c 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetailPK.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetailPK.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -13,7 +13,7 @@
  * <li>sponsorName : Name of supervisor, manager, group leader or self</li>
  * 
  */
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2017-12-08")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class UserAllocationDetailPK implements org.apache.thrift.TBase<UserAllocationDetailPK, UserAllocationDetailPK._Fields>, java.io.Serializable, Cloneable, Comparable<UserAllocationDetailPK> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UserAllocationDetailPK");
 
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserDetail.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserDetail.java
index 03cc2f5..6348406 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserDetail.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserDetail.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -16,7 +16,7 @@
  * <li>userType: Type of the user</li>
  * 
  */
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2017-12-08")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class UserDetail implements org.apache.thrift.TBase<UserDetail, UserDetail._Fields>, java.io.Serializable, Cloneable, Comparable<UserDetail> {
   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("UserDetail");
 
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/service/cpi/AllocationRegistryService.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/service/cpi/AllocationRegistryService.java
index 65234f8..2faba92 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/service/cpi/AllocationRegistryService.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/service/cpi/AllocationRegistryService.java
@@ -1,5 +1,5 @@
 /**
- * Autogenerated by Thrift Compiler (1.0.0-dev)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -7,7 +7,7 @@
 package org.apache.airavata.allocation.manager.service.cpi;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2017-12-08")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
 public class AllocationRegistryService {
 
   public interface Iface {
@@ -23,22 +23,25 @@
      * <p>API method to check if the allocation request exists</p>
      * 
      * @param projectId
+     * @param userName
      */
-    public boolean isAllocationRequestExists(java.lang.String projectId) throws org.apache.thrift.TException;
+    public boolean isAllocationRequestExists(java.lang.String projectId, java.lang.String userName) throws org.apache.thrift.TException;
 
     /**
      * <p>API method to delete allocation request</p>
      * 
      * @param projectId
+     * @param userName
      */
-    public boolean deleteAllocationRequest(java.lang.String projectId) throws org.apache.thrift.TException;
+    public boolean deleteAllocationRequest(java.lang.String projectId, java.lang.String userName) throws org.apache.thrift.TException;
 
     /**
      * <p>API method to get an allocation Request</p>
      * 
      * @param projectId
+     * @param userName
      */
-    public org.apache.airavata.allocation.manager.models.UserAllocationDetail getAllocationRequest(java.lang.String projectId) throws org.apache.thrift.TException;
+    public org.apache.airavata.allocation.manager.models.UserAllocationDetail getAllocationRequest(java.lang.String projectId, java.lang.String userName) throws org.apache.thrift.TException;
 
     /**
      * <p>API method to update an allocation Request</p>
@@ -51,8 +54,9 @@
      * <p>API method to get an allocation Request status</p>
      * 
      * @param projectId
+     * @param userName
      */
-    public java.lang.String getAllocationRequestStatus(java.lang.String projectId) throws org.apache.thrift.TException;
+    public java.lang.String getAllocationRequestStatus(java.lang.String projectId, java.lang.String userName) throws org.apache.thrift.TException;
 
     /**
      * <p>API method to get an allocation Request PI email</p>
@@ -147,15 +151,15 @@
 
     public void createAllocationRequest(org.apache.airavata.allocation.manager.models.UserAllocationDetail allocDetail, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException;
 
-    public void isAllocationRequestExists(java.lang.String projectId, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;
+    public void isAllocationRequestExists(java.lang.String projectId, java.lang.String userName, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;
 
-    public void deleteAllocationRequest(java.lang.String projectId, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;
+    public void deleteAllocationRequest(java.lang.String projectId, java.lang.String userName, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;
 
-    public void getAllocationRequest(java.lang.String projectId, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.allocation.manager.models.UserAllocationDetail> resultHandler) throws org.apache.thrift.TException;
+    public void getAllocationRequest(java.lang.String projectId, java.lang.String userName, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.allocation.manager.models.UserAllocationDetail> resultHandler) throws org.apache.thrift.TException;
 
     public void updateAllocationRequest(org.apache.airavata.allocation.manager.models.UserAllocationDetail allocDetail, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException;
 
-    public void getAllocationRequestStatus(java.lang.String projectId, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException;
+    public void getAllocationRequestStatus(java.lang.String projectId, java.lang.String userName, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException;
 
     public void getAllocationRequestUserEmail(java.lang.String userName, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException;
 
@@ -226,16 +230,17 @@
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "createAllocationRequest failed: unknown result");
     }
 
-    public boolean isAllocationRequestExists(java.lang.String projectId) throws org.apache.thrift.TException
+    public boolean isAllocationRequestExists(java.lang.String projectId, java.lang.String userName) throws org.apache.thrift.TException
     {
-      send_isAllocationRequestExists(projectId);
+      send_isAllocationRequestExists(projectId, userName);
       return recv_isAllocationRequestExists();
     }
 
-    public void send_isAllocationRequestExists(java.lang.String projectId) throws org.apache.thrift.TException
+    public void send_isAllocationRequestExists(java.lang.String projectId, java.lang.String userName) throws org.apache.thrift.TException
     {
       isAllocationRequestExists_args args = new isAllocationRequestExists_args();
       args.setProjectId(projectId);
+      args.setUserName(userName);
       sendBase("isAllocationRequestExists", args);
     }
 
@@ -249,16 +254,17 @@
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "isAllocationRequestExists failed: unknown result");
     }
 
-    public boolean deleteAllocationRequest(java.lang.String projectId) throws org.apache.thrift.TException
+    public boolean deleteAllocationRequest(java.lang.String projectId, java.lang.String userName) throws org.apache.thrift.TException
     {
-      send_deleteAllocationRequest(projectId);
+      send_deleteAllocationRequest(projectId, userName);
       return recv_deleteAllocationRequest();
     }
 
-    public void send_deleteAllocationRequest(java.lang.String projectId) throws org.apache.thrift.TException
+    public void send_deleteAllocationRequest(java.lang.String projectId, java.lang.String userName) throws org.apache.thrift.TException
     {
       deleteAllocationRequest_args args = new deleteAllocationRequest_args();
       args.setProjectId(projectId);
+      args.setUserName(userName);
       sendBase("deleteAllocationRequest", args);
     }
 
@@ -272,16 +278,17 @@
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "deleteAllocationRequest failed: unknown result");
     }
 
-    public org.apache.airavata.allocation.manager.models.UserAllocationDetail getAllocationRequest(java.lang.String projectId) throws org.apache.thrift.TException
+    public org.apache.airavata.allocation.manager.models.UserAllocationDetail getAllocationRequest(java.lang.String projectId, java.lang.String userName) throws org.apache.thrift.TException
     {
-      send_getAllocationRequest(projectId);
+      send_getAllocationRequest(projectId, userName);
       return recv_getAllocationRequest();
     }
 
-    public void send_getAllocationRequest(java.lang.String projectId) throws org.apache.thrift.TException
+    public void send_getAllocationRequest(java.lang.String projectId, java.lang.String userName) throws org.apache.thrift.TException
     {
       getAllocationRequest_args args = new getAllocationRequest_args();
       args.setProjectId(projectId);
+      args.setUserName(userName);
       sendBase("getAllocationRequest", args);
     }
 
@@ -318,16 +325,17 @@
       throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "updateAllocationRequest failed: unknown result");
     }
 
-    public java.lang.String getAllocationRequestStatus(java.lang.String projectId) throws org.apache.thrift.TException
+    public java.lang.String getAllocationRequestStatus(java.lang.String projectId, java.lang.String userName) throws org.apache.thrift.TException
     {
-      send_getAllocationRequestStatus(projectId);
+      send_getAllocationRequestStatus(projectId, userName);
       return recv_getAllocationRequestStatus();
     }
 
-    public void send_getAllocationRequestStatus(java.lang.String projectId) throws org.apache.thrift.TException
+    public void send_getAllocationRequestStatus(java.lang.String projectId, java.lang.String userName) throws org.apache.thrift.TException
     {
       getAllocationRequestStatus_args args = new getAllocationRequestStatus_args();
       args.setProjectId(projectId);
+      args.setUserName(userName);
       sendBase("getAllocationRequestStatus", args);
     }
 
@@ -667,24 +675,27 @@
       }
     }
 
-    public void isAllocationRequestExists(java.lang.String projectId, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
+    public void isAllocationRequestExists(java.lang.String projectId, java.lang.String userName, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      isAllocationRequestExists_call method_call = new isAllocationRequestExists_call(projectId, resultHandler, this, ___protocolFactory, ___transport);
+      isAllocationRequestExists_call method_call = new isAllocationRequestExists_call(projectId, userName, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class isAllocationRequestExists_call extends org.apache.thrift.async.TAsyncMethodCall<java.lang.Boolean> {
       private java.lang.String projectId;
-      public isAllocationRequestExists_call(java.lang.String projectId, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private java.lang.String userName;
+      public isAllocationRequestExists_call(java.lang.String projectId, java.lang.String userName, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.projectId = projectId;
+        this.userName = userName;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("isAllocationRequestExists", org.apache.thrift.protocol.TMessageType.CALL, 0));
         isAllocationRequestExists_args args = new isAllocationRequestExists_args();
         args.setProjectId(projectId);
+        args.setUserName(userName);
         args.write(prot);
         prot.writeMessageEnd();
       }
@@ -699,24 +710,27 @@
       }
     }
 
-    public void deleteAllocationRequest(java.lang.String projectId, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
+    public void deleteAllocationRequest(java.lang.String projectId, java.lang.String userName, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      deleteAllocationRequest_call method_call = new deleteAllocationRequest_call(projectId, resultHandler, this, ___protocolFactory, ___transport);
+      deleteAllocationRequest_call method_call = new deleteAllocationRequest_call(projectId, userName, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class deleteAllocationRequest_call extends org.apache.thrift.async.TAsyncMethodCall<java.lang.Boolean> {
       private java.lang.String projectId;
-      public deleteAllocationRequest_call(java.lang.String projectId, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private java.lang.String userName;
+      public deleteAllocationRequest_call(java.lang.String projectId, java.lang.String userName, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.projectId = projectId;
+        this.userName = userName;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("deleteAllocationRequest", org.apache.thrift.protocol.TMessageType.CALL, 0));
         deleteAllocationRequest_args args = new deleteAllocationRequest_args();
         args.setProjectId(projectId);
+        args.setUserName(userName);
         args.write(prot);
         prot.writeMessageEnd();
       }
@@ -731,24 +745,27 @@
       }
     }
 
-    public void getAllocationRequest(java.lang.String projectId, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.allocation.manager.models.UserAllocationDetail> resultHandler) throws org.apache.thrift.TException {
+    public void getAllocationRequest(java.lang.String projectId, java.lang.String userName, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.allocation.manager.models.UserAllocationDetail> resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      getAllocationRequest_call method_call = new getAllocationRequest_call(projectId, resultHandler, this, ___protocolFactory, ___transport);
+      getAllocationRequest_call method_call = new getAllocationRequest_call(projectId, userName, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class getAllocationRequest_call extends org.apache.thrift.async.TAsyncMethodCall<org.apache.airavata.allocation.manager.models.UserAllocationDetail> {
       private java.lang.String projectId;
-      public getAllocationRequest_call(java.lang.String projectId, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.allocation.manager.models.UserAllocationDetail> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private java.lang.String userName;
+      public getAllocationRequest_call(java.lang.String projectId, java.lang.String userName, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.allocation.manager.models.UserAllocationDetail> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.projectId = projectId;
+        this.userName = userName;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getAllocationRequest", org.apache.thrift.protocol.TMessageType.CALL, 0));
         getAllocationRequest_args args = new getAllocationRequest_args();
         args.setProjectId(projectId);
+        args.setUserName(userName);
         args.write(prot);
         prot.writeMessageEnd();
       }
@@ -795,24 +812,27 @@
       }
     }
 
-    public void getAllocationRequestStatus(java.lang.String projectId, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException {
+    public void getAllocationRequestStatus(java.lang.String projectId, java.lang.String userName, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException {
       checkReady();
-      getAllocationRequestStatus_call method_call = new getAllocationRequestStatus_call(projectId, resultHandler, this, ___protocolFactory, ___transport);
+      getAllocationRequestStatus_call method_call = new getAllocationRequestStatus_call(projectId, userName, resultHandler, this, ___protocolFactory, ___transport);
       this.___currentMethod = method_call;
       ___manager.call(method_call);
     }
 
     public static class getAllocationRequestStatus_call extends org.apache.thrift.async.TAsyncMethodCall<java.lang.String> {
       private java.lang.String projectId;
-      public getAllocationRequestStatus_call(java.lang.String projectId, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+      private java.lang.String userName;
+      public getAllocationRequestStatus_call(java.lang.String projectId, java.lang.String userName, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
         super(client, protocolFactory, transport, resultHandler, false);
         this.projectId = projectId;
+        this.userName = userName;
       }
 
       public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
         prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getAllocationRequestStatus", org.apache.thrift.protocol.TMessageType.CALL, 0));
         getAllocationRequestStatus_args args = new getAllocationRequestStatus_args();
         args.setProjectId(projectId);
+        args.setUserName(userName);
         args.write(prot);
         prot.writeMessageEnd();
       }
@@ -1267,11 +1287,6 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public createAllocationRequest_result getResult(I iface, createAllocationRequest_args args) throws org.apache.thrift.TException {
         createAllocationRequest_result result = new createAllocationRequest_result();
         result.success = iface.createAllocationRequest(args.allocDetail);
@@ -1292,14 +1307,9 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public isAllocationRequestExists_result getResult(I iface, isAllocationRequestExists_args args) throws org.apache.thrift.TException {
         isAllocationRequestExists_result result = new isAllocationRequestExists_result();
-        result.success = iface.isAllocationRequestExists(args.projectId);
+        result.success = iface.isAllocationRequestExists(args.projectId, args.userName);
         result.setSuccessIsSet(true);
         return result;
       }
@@ -1318,14 +1328,9 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public deleteAllocationRequest_result getResult(I iface, deleteAllocationRequest_args args) throws org.apache.thrift.TException {
         deleteAllocationRequest_result result = new deleteAllocationRequest_result();
-        result.success = iface.deleteAllocationRequest(args.projectId);
+        result.success = iface.deleteAllocationRequest(args.projectId, args.userName);
         result.setSuccessIsSet(true);
         return result;
       }
@@ -1344,14 +1349,9 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllocationRequest_result getResult(I iface, getAllocationRequest_args args) throws org.apache.thrift.TException {
         getAllocationRequest_result result = new getAllocationRequest_result();
-        result.success = iface.getAllocationRequest(args.projectId);
+        result.success = iface.getAllocationRequest(args.projectId, args.userName);
         return result;
       }
     }
@@ -1369,11 +1369,6 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public updateAllocationRequest_result getResult(I iface, updateAllocationRequest_args args) throws org.apache.thrift.TException {
         updateAllocationRequest_result result = new updateAllocationRequest_result();
         result.success = iface.updateAllocationRequest(args.allocDetail);
@@ -1395,14 +1390,9 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllocationRequestStatus_result getResult(I iface, getAllocationRequestStatus_args args) throws org.apache.thrift.TException {
         getAllocationRequestStatus_result result = new getAllocationRequestStatus_result();
-        result.success = iface.getAllocationRequestStatus(args.projectId);
+        result.success = iface.getAllocationRequestStatus(args.projectId, args.userName);
         return result;
       }
     }
@@ -1420,11 +1410,6 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllocationRequestUserEmail_result getResult(I iface, getAllocationRequestUserEmail_args args) throws org.apache.thrift.TException {
         getAllocationRequestUserEmail_result result = new getAllocationRequestUserEmail_result();
         result.success = iface.getAllocationRequestUserEmail(args.userName);
@@ -1445,11 +1430,6 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllocationManagerAdminEmail_result getResult(I iface, getAllocationManagerAdminEmail_args args) throws org.apache.thrift.TException {
         getAllocationManagerAdminEmail_result result = new getAllocationManagerAdminEmail_result();
         result.success = iface.getAllocationManagerAdminEmail(args.userType);
@@ -1470,11 +1450,6 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllocationRequestUserName_result getResult(I iface, getAllocationRequestUserName_args args) throws org.apache.thrift.TException {
         getAllocationRequestUserName_result result = new getAllocationRequestUserName_result();
         result.success = iface.getAllocationRequestUserName(args.projectId);
@@ -1495,11 +1470,6 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public updateAllocationRequestStatus_result getResult(I iface, updateAllocationRequestStatus_args args) throws org.apache.thrift.TException {
         updateAllocationRequestStatus_result result = new updateAllocationRequestStatus_result();
         iface.updateAllocationRequestStatus(args.projectId, args.status);
@@ -1520,11 +1490,6 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllRequestsForAdmin_result getResult(I iface, getAllRequestsForAdmin_args args) throws org.apache.thrift.TException {
         getAllRequestsForAdmin_result result = new getAllRequestsForAdmin_result();
         result.success = iface.getAllRequestsForAdmin(args.userName);
@@ -1545,11 +1510,6 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public assignReviewers_result getResult(I iface, assignReviewers_args args) throws org.apache.thrift.TException {
         assignReviewers_result result = new assignReviewers_result();
         result.success = iface.assignReviewers(args.projectId, args.userName);
@@ -1571,11 +1531,6 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public updateRequestByReviewer_result getResult(I iface, updateRequestByReviewer_args args) throws org.apache.thrift.TException {
         updateRequestByReviewer_result result = new updateRequestByReviewer_result();
         result.success = iface.updateRequestByReviewer(args.projectId, args.userAllocationDetail);
@@ -1597,11 +1552,6 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public isAdmin_result getResult(I iface, isAdmin_args args) throws org.apache.thrift.TException {
         isAdmin_result result = new isAdmin_result();
         result.success = iface.isAdmin(args.userName);
@@ -1623,11 +1573,6 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public isReviewer_result getResult(I iface, isReviewer_args args) throws org.apache.thrift.TException {
         isReviewer_result result = new isReviewer_result();
         result.success = iface.isReviewer(args.userName);
@@ -1649,11 +1594,6 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getAllRequestsForReviewers_result getResult(I iface, getAllRequestsForReviewers_args args) throws org.apache.thrift.TException {
         getAllRequestsForReviewers_result result = new getAllRequestsForReviewers_result();
         result.success = iface.getAllRequestsForReviewers(args.userName);
@@ -1674,11 +1614,6 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getUserDetails_result getResult(I iface, getUserDetails_args args) throws org.apache.thrift.TException {
         getUserDetails_result result = new getUserDetails_result();
         result.success = iface.getUserDetails(args.userName);
@@ -1699,11 +1634,6 @@
         return false;
       }
 
-      @Override
-      protected boolean handleRuntimeExceptions() {
-        return false;
-      }
-
       public getReviewsForRequest_result getResult(I iface, getReviewsForRequest_args args) throws org.apache.thrift.TException {
         getReviewsForRequest_result result = new getReviewsForRequest_result();
         result.success = iface.getReviewsForRequest(args.projectId);
@@ -1864,7 +1794,7 @@
       }
 
       public void start(I iface, isAllocationRequestExists_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
-        iface.isAllocationRequestExists(args.projectId,resultHandler);
+        iface.isAllocationRequestExists(args.projectId, args.userName,resultHandler);
       }
     }
 
@@ -1926,7 +1856,7 @@
       }
 
       public void start(I iface, deleteAllocationRequest_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.Boolean> resultHandler) throws org.apache.thrift.TException {
-        iface.deleteAllocationRequest(args.projectId,resultHandler);
+        iface.deleteAllocationRequest(args.projectId, args.userName,resultHandler);
       }
     }
 
@@ -1987,7 +1917,7 @@
       }
 
       public void start(I iface, getAllocationRequest_args args, org.apache.thrift.async.AsyncMethodCallback<org.apache.airavata.allocation.manager.models.UserAllocationDetail> resultHandler) throws org.apache.thrift.TException {
-        iface.getAllocationRequest(args.projectId,resultHandler);
+        iface.getAllocationRequest(args.projectId, args.userName,resultHandler);
       }
     }
 
@@ -2110,7 +2040,7 @@
       }
 
       public void start(I iface, getAllocationRequestStatus_args args, org.apache.thrift.async.AsyncMethodCallback<java.lang.String> resultHandler) throws org.apache.thrift.TException {
-        iface.getAllocationRequestStatus(args.projectId,resultHandler);
+        iface.getAllocationRequestStatus(args.projectId, args.userName,resultHandler);
       }
     }
 
@@ -3577,15 +3507,18 @@
     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("isAllocationRequestExists_args");
 
     private static final org.apache.thrift.protocol.TField PROJECT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("projectId", org.apache.thrift.protocol.TType.STRING, (short)1);
+    private static final org.apache.thrift.protocol.TField USER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("userName", org.apache.thrift.protocol.TType.STRING, (short)2);
 
     private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new isAllocationRequestExists_argsStandardSchemeFactory();
     private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new isAllocationRequestExists_argsTupleSchemeFactory();
 
     public java.lang.String projectId; // required
+    public java.lang.String userName; // 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 {
-      PROJECT_ID((short)1, "projectId");
+      PROJECT_ID((short)1, "projectId"),
+      USER_NAME((short)2, "userName");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -3602,6 +3535,8 @@
         switch(fieldId) {
           case 1: // PROJECT_ID
             return PROJECT_ID;
+          case 2: // USER_NAME
+            return USER_NAME;
           default:
             return null;
         }
@@ -3647,6 +3582,8 @@
       java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
       tmpMap.put(_Fields.PROJECT_ID, new org.apache.thrift.meta_data.FieldMetaData("projectId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.USER_NAME, new org.apache.thrift.meta_data.FieldMetaData("userName", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          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(isAllocationRequestExists_args.class, metaDataMap);
     }
@@ -3655,10 +3592,12 @@
     }
 
     public isAllocationRequestExists_args(
-      java.lang.String projectId)
+      java.lang.String projectId,
+      java.lang.String userName)
     {
       this();
       this.projectId = projectId;
+      this.userName = userName;
     }
 
     /**
@@ -3668,6 +3607,9 @@
       if (other.isSetProjectId()) {
         this.projectId = other.projectId;
       }
+      if (other.isSetUserName()) {
+        this.userName = other.userName;
+      }
     }
 
     public isAllocationRequestExists_args deepCopy() {
@@ -3677,6 +3619,7 @@
     @Override
     public void clear() {
       this.projectId = null;
+      this.userName = null;
     }
 
     public java.lang.String getProjectId() {
@@ -3703,6 +3646,30 @@
       }
     }
 
+    public java.lang.String getUserName() {
+      return this.userName;
+    }
+
+    public isAllocationRequestExists_args setUserName(java.lang.String userName) {
+      this.userName = userName;
+      return this;
+    }
+
+    public void unsetUserName() {
+      this.userName = null;
+    }
+
+    /** Returns true if field userName is set (has been assigned a value) and false otherwise */
+    public boolean isSetUserName() {
+      return this.userName != null;
+    }
+
+    public void setUserNameIsSet(boolean value) {
+      if (!value) {
+        this.userName = null;
+      }
+    }
+
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
       case PROJECT_ID:
@@ -3713,6 +3680,14 @@
         }
         break;
 
+      case USER_NAME:
+        if (value == null) {
+          unsetUserName();
+        } else {
+          setUserName((java.lang.String)value);
+        }
+        break;
+
       }
     }
 
@@ -3721,6 +3696,9 @@
       case PROJECT_ID:
         return getProjectId();
 
+      case USER_NAME:
+        return getUserName();
+
       }
       throw new java.lang.IllegalStateException();
     }
@@ -3734,6 +3712,8 @@
       switch (field) {
       case PROJECT_ID:
         return isSetProjectId();
+      case USER_NAME:
+        return isSetUserName();
       }
       throw new java.lang.IllegalStateException();
     }
@@ -3762,6 +3742,15 @@
           return false;
       }
 
+      boolean this_present_userName = true && this.isSetUserName();
+      boolean that_present_userName = true && that.isSetUserName();
+      if (this_present_userName || that_present_userName) {
+        if (!(this_present_userName && that_present_userName))
+          return false;
+        if (!this.userName.equals(that.userName))
+          return false;
+      }
+
       return true;
     }
 
@@ -3773,6 +3762,10 @@
       if (isSetProjectId())
         hashCode = hashCode * 8191 + projectId.hashCode();
 
+      hashCode = hashCode * 8191 + ((isSetUserName()) ? 131071 : 524287);
+      if (isSetUserName())
+        hashCode = hashCode * 8191 + userName.hashCode();
+
       return hashCode;
     }
 
@@ -3794,6 +3787,16 @@
           return lastComparison;
         }
       }
+      lastComparison = java.lang.Boolean.valueOf(isSetUserName()).compareTo(other.isSetUserName());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetUserName()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userName, other.userName);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       return 0;
     }
 
@@ -3821,6 +3824,14 @@
         sb.append(this.projectId);
       }
       first = false;
+      if (!first) sb.append(", ");
+      sb.append("userName:");
+      if (this.userName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.userName);
+      }
+      first = false;
       sb.append(")");
       return sb.toString();
     }
@@ -3830,6 +3841,9 @@
       if (projectId == null) {
         throw new org.apache.thrift.protocol.TProtocolException("Required field 'projectId' was not present! Struct: " + toString());
       }
+      if (userName == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'userName' was not present! Struct: " + toString());
+      }
       // check for sub-struct validity
     }
 
@@ -3875,6 +3889,14 @@
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
+            case 2: // USER_NAME
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.userName = iprot.readString();
+                struct.setUserNameIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             default:
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -3895,6 +3917,11 @@
           oprot.writeString(struct.projectId);
           oprot.writeFieldEnd();
         }
+        if (struct.userName != null) {
+          oprot.writeFieldBegin(USER_NAME_FIELD_DESC);
+          oprot.writeString(struct.userName);
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
@@ -3913,6 +3940,7 @@
       public void write(org.apache.thrift.protocol.TProtocol prot, isAllocationRequestExists_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         oprot.writeString(struct.projectId);
+        oprot.writeString(struct.userName);
       }
 
       @Override
@@ -3920,6 +3948,8 @@
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         struct.projectId = iprot.readString();
         struct.setProjectIdIsSet(true);
+        struct.userName = iprot.readString();
+        struct.setUserNameIsSet(true);
       }
     }
 
@@ -4292,15 +4322,18 @@
     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("deleteAllocationRequest_args");
 
     private static final org.apache.thrift.protocol.TField PROJECT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("projectId", org.apache.thrift.protocol.TType.STRING, (short)1);
+    private static final org.apache.thrift.protocol.TField USER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("userName", org.apache.thrift.protocol.TType.STRING, (short)2);
 
     private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new deleteAllocationRequest_argsStandardSchemeFactory();
     private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new deleteAllocationRequest_argsTupleSchemeFactory();
 
     public java.lang.String projectId; // required
+    public java.lang.String userName; // 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 {
-      PROJECT_ID((short)1, "projectId");
+      PROJECT_ID((short)1, "projectId"),
+      USER_NAME((short)2, "userName");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -4317,6 +4350,8 @@
         switch(fieldId) {
           case 1: // PROJECT_ID
             return PROJECT_ID;
+          case 2: // USER_NAME
+            return USER_NAME;
           default:
             return null;
         }
@@ -4362,6 +4397,8 @@
       java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
       tmpMap.put(_Fields.PROJECT_ID, new org.apache.thrift.meta_data.FieldMetaData("projectId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.USER_NAME, new org.apache.thrift.meta_data.FieldMetaData("userName", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          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(deleteAllocationRequest_args.class, metaDataMap);
     }
@@ -4370,10 +4407,12 @@
     }
 
     public deleteAllocationRequest_args(
-      java.lang.String projectId)
+      java.lang.String projectId,
+      java.lang.String userName)
     {
       this();
       this.projectId = projectId;
+      this.userName = userName;
     }
 
     /**
@@ -4383,6 +4422,9 @@
       if (other.isSetProjectId()) {
         this.projectId = other.projectId;
       }
+      if (other.isSetUserName()) {
+        this.userName = other.userName;
+      }
     }
 
     public deleteAllocationRequest_args deepCopy() {
@@ -4392,6 +4434,7 @@
     @Override
     public void clear() {
       this.projectId = null;
+      this.userName = null;
     }
 
     public java.lang.String getProjectId() {
@@ -4418,6 +4461,30 @@
       }
     }
 
+    public java.lang.String getUserName() {
+      return this.userName;
+    }
+
+    public deleteAllocationRequest_args setUserName(java.lang.String userName) {
+      this.userName = userName;
+      return this;
+    }
+
+    public void unsetUserName() {
+      this.userName = null;
+    }
+
+    /** Returns true if field userName is set (has been assigned a value) and false otherwise */
+    public boolean isSetUserName() {
+      return this.userName != null;
+    }
+
+    public void setUserNameIsSet(boolean value) {
+      if (!value) {
+        this.userName = null;
+      }
+    }
+
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
       case PROJECT_ID:
@@ -4428,6 +4495,14 @@
         }
         break;
 
+      case USER_NAME:
+        if (value == null) {
+          unsetUserName();
+        } else {
+          setUserName((java.lang.String)value);
+        }
+        break;
+
       }
     }
 
@@ -4436,6 +4511,9 @@
       case PROJECT_ID:
         return getProjectId();
 
+      case USER_NAME:
+        return getUserName();
+
       }
       throw new java.lang.IllegalStateException();
     }
@@ -4449,6 +4527,8 @@
       switch (field) {
       case PROJECT_ID:
         return isSetProjectId();
+      case USER_NAME:
+        return isSetUserName();
       }
       throw new java.lang.IllegalStateException();
     }
@@ -4477,6 +4557,15 @@
           return false;
       }
 
+      boolean this_present_userName = true && this.isSetUserName();
+      boolean that_present_userName = true && that.isSetUserName();
+      if (this_present_userName || that_present_userName) {
+        if (!(this_present_userName && that_present_userName))
+          return false;
+        if (!this.userName.equals(that.userName))
+          return false;
+      }
+
       return true;
     }
 
@@ -4488,6 +4577,10 @@
       if (isSetProjectId())
         hashCode = hashCode * 8191 + projectId.hashCode();
 
+      hashCode = hashCode * 8191 + ((isSetUserName()) ? 131071 : 524287);
+      if (isSetUserName())
+        hashCode = hashCode * 8191 + userName.hashCode();
+
       return hashCode;
     }
 
@@ -4509,6 +4602,16 @@
           return lastComparison;
         }
       }
+      lastComparison = java.lang.Boolean.valueOf(isSetUserName()).compareTo(other.isSetUserName());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetUserName()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userName, other.userName);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       return 0;
     }
 
@@ -4536,6 +4639,14 @@
         sb.append(this.projectId);
       }
       first = false;
+      if (!first) sb.append(", ");
+      sb.append("userName:");
+      if (this.userName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.userName);
+      }
+      first = false;
       sb.append(")");
       return sb.toString();
     }
@@ -4545,6 +4656,9 @@
       if (projectId == null) {
         throw new org.apache.thrift.protocol.TProtocolException("Required field 'projectId' was not present! Struct: " + toString());
       }
+      if (userName == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'userName' was not present! Struct: " + toString());
+      }
       // check for sub-struct validity
     }
 
@@ -4590,6 +4704,14 @@
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
+            case 2: // USER_NAME
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.userName = iprot.readString();
+                struct.setUserNameIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             default:
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -4610,6 +4732,11 @@
           oprot.writeString(struct.projectId);
           oprot.writeFieldEnd();
         }
+        if (struct.userName != null) {
+          oprot.writeFieldBegin(USER_NAME_FIELD_DESC);
+          oprot.writeString(struct.userName);
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
@@ -4628,6 +4755,7 @@
       public void write(org.apache.thrift.protocol.TProtocol prot, deleteAllocationRequest_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         oprot.writeString(struct.projectId);
+        oprot.writeString(struct.userName);
       }
 
       @Override
@@ -4635,6 +4763,8 @@
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         struct.projectId = iprot.readString();
         struct.setProjectIdIsSet(true);
+        struct.userName = iprot.readString();
+        struct.setUserNameIsSet(true);
       }
     }
 
@@ -5007,15 +5137,18 @@
     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getAllocationRequest_args");
 
     private static final org.apache.thrift.protocol.TField PROJECT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("projectId", org.apache.thrift.protocol.TType.STRING, (short)1);
+    private static final org.apache.thrift.protocol.TField USER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("userName", org.apache.thrift.protocol.TType.STRING, (short)2);
 
     private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getAllocationRequest_argsStandardSchemeFactory();
     private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getAllocationRequest_argsTupleSchemeFactory();
 
     public java.lang.String projectId; // required
+    public java.lang.String userName; // 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 {
-      PROJECT_ID((short)1, "projectId");
+      PROJECT_ID((short)1, "projectId"),
+      USER_NAME((short)2, "userName");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -5032,6 +5165,8 @@
         switch(fieldId) {
           case 1: // PROJECT_ID
             return PROJECT_ID;
+          case 2: // USER_NAME
+            return USER_NAME;
           default:
             return null;
         }
@@ -5077,6 +5212,8 @@
       java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
       tmpMap.put(_Fields.PROJECT_ID, new org.apache.thrift.meta_data.FieldMetaData("projectId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.USER_NAME, new org.apache.thrift.meta_data.FieldMetaData("userName", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          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(getAllocationRequest_args.class, metaDataMap);
     }
@@ -5085,10 +5222,12 @@
     }
 
     public getAllocationRequest_args(
-      java.lang.String projectId)
+      java.lang.String projectId,
+      java.lang.String userName)
     {
       this();
       this.projectId = projectId;
+      this.userName = userName;
     }
 
     /**
@@ -5098,6 +5237,9 @@
       if (other.isSetProjectId()) {
         this.projectId = other.projectId;
       }
+      if (other.isSetUserName()) {
+        this.userName = other.userName;
+      }
     }
 
     public getAllocationRequest_args deepCopy() {
@@ -5107,6 +5249,7 @@
     @Override
     public void clear() {
       this.projectId = null;
+      this.userName = null;
     }
 
     public java.lang.String getProjectId() {
@@ -5133,6 +5276,30 @@
       }
     }
 
+    public java.lang.String getUserName() {
+      return this.userName;
+    }
+
+    public getAllocationRequest_args setUserName(java.lang.String userName) {
+      this.userName = userName;
+      return this;
+    }
+
+    public void unsetUserName() {
+      this.userName = null;
+    }
+
+    /** Returns true if field userName is set (has been assigned a value) and false otherwise */
+    public boolean isSetUserName() {
+      return this.userName != null;
+    }
+
+    public void setUserNameIsSet(boolean value) {
+      if (!value) {
+        this.userName = null;
+      }
+    }
+
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
       case PROJECT_ID:
@@ -5143,6 +5310,14 @@
         }
         break;
 
+      case USER_NAME:
+        if (value == null) {
+          unsetUserName();
+        } else {
+          setUserName((java.lang.String)value);
+        }
+        break;
+
       }
     }
 
@@ -5151,6 +5326,9 @@
       case PROJECT_ID:
         return getProjectId();
 
+      case USER_NAME:
+        return getUserName();
+
       }
       throw new java.lang.IllegalStateException();
     }
@@ -5164,6 +5342,8 @@
       switch (field) {
       case PROJECT_ID:
         return isSetProjectId();
+      case USER_NAME:
+        return isSetUserName();
       }
       throw new java.lang.IllegalStateException();
     }
@@ -5192,6 +5372,15 @@
           return false;
       }
 
+      boolean this_present_userName = true && this.isSetUserName();
+      boolean that_present_userName = true && that.isSetUserName();
+      if (this_present_userName || that_present_userName) {
+        if (!(this_present_userName && that_present_userName))
+          return false;
+        if (!this.userName.equals(that.userName))
+          return false;
+      }
+
       return true;
     }
 
@@ -5203,6 +5392,10 @@
       if (isSetProjectId())
         hashCode = hashCode * 8191 + projectId.hashCode();
 
+      hashCode = hashCode * 8191 + ((isSetUserName()) ? 131071 : 524287);
+      if (isSetUserName())
+        hashCode = hashCode * 8191 + userName.hashCode();
+
       return hashCode;
     }
 
@@ -5224,6 +5417,16 @@
           return lastComparison;
         }
       }
+      lastComparison = java.lang.Boolean.valueOf(isSetUserName()).compareTo(other.isSetUserName());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetUserName()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userName, other.userName);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       return 0;
     }
 
@@ -5251,6 +5454,14 @@
         sb.append(this.projectId);
       }
       first = false;
+      if (!first) sb.append(", ");
+      sb.append("userName:");
+      if (this.userName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.userName);
+      }
+      first = false;
       sb.append(")");
       return sb.toString();
     }
@@ -5260,6 +5471,9 @@
       if (projectId == null) {
         throw new org.apache.thrift.protocol.TProtocolException("Required field 'projectId' was not present! Struct: " + toString());
       }
+      if (userName == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'userName' was not present! Struct: " + toString());
+      }
       // check for sub-struct validity
     }
 
@@ -5305,6 +5519,14 @@
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
+            case 2: // USER_NAME
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.userName = iprot.readString();
+                struct.setUserNameIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             default:
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -5325,6 +5547,11 @@
           oprot.writeString(struct.projectId);
           oprot.writeFieldEnd();
         }
+        if (struct.userName != null) {
+          oprot.writeFieldBegin(USER_NAME_FIELD_DESC);
+          oprot.writeString(struct.userName);
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
@@ -5343,6 +5570,7 @@
       public void write(org.apache.thrift.protocol.TProtocol prot, getAllocationRequest_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         oprot.writeString(struct.projectId);
+        oprot.writeString(struct.userName);
       }
 
       @Override
@@ -5350,6 +5578,8 @@
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         struct.projectId = iprot.readString();
         struct.setProjectIdIsSet(true);
+        struct.userName = iprot.readString();
+        struct.setUserNameIsSet(true);
       }
     }
 
@@ -6449,15 +6679,18 @@
     private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getAllocationRequestStatus_args");
 
     private static final org.apache.thrift.protocol.TField PROJECT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("projectId", org.apache.thrift.protocol.TType.STRING, (short)1);
+    private static final org.apache.thrift.protocol.TField USER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("userName", org.apache.thrift.protocol.TType.STRING, (short)2);
 
     private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getAllocationRequestStatus_argsStandardSchemeFactory();
     private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getAllocationRequestStatus_argsTupleSchemeFactory();
 
     public java.lang.String projectId; // required
+    public java.lang.String userName; // 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 {
-      PROJECT_ID((short)1, "projectId");
+      PROJECT_ID((short)1, "projectId"),
+      USER_NAME((short)2, "userName");
 
       private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -6474,6 +6707,8 @@
         switch(fieldId) {
           case 1: // PROJECT_ID
             return PROJECT_ID;
+          case 2: // USER_NAME
+            return USER_NAME;
           default:
             return null;
         }
@@ -6519,6 +6754,8 @@
       java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
       tmpMap.put(_Fields.PROJECT_ID, new org.apache.thrift.meta_data.FieldMetaData("projectId", org.apache.thrift.TFieldRequirementType.REQUIRED, 
           new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.USER_NAME, new org.apache.thrift.meta_data.FieldMetaData("userName", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+          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(getAllocationRequestStatus_args.class, metaDataMap);
     }
@@ -6527,10 +6764,12 @@
     }
 
     public getAllocationRequestStatus_args(
-      java.lang.String projectId)
+      java.lang.String projectId,
+      java.lang.String userName)
     {
       this();
       this.projectId = projectId;
+      this.userName = userName;
     }
 
     /**
@@ -6540,6 +6779,9 @@
       if (other.isSetProjectId()) {
         this.projectId = other.projectId;
       }
+      if (other.isSetUserName()) {
+        this.userName = other.userName;
+      }
     }
 
     public getAllocationRequestStatus_args deepCopy() {
@@ -6549,6 +6791,7 @@
     @Override
     public void clear() {
       this.projectId = null;
+      this.userName = null;
     }
 
     public java.lang.String getProjectId() {
@@ -6575,6 +6818,30 @@
       }
     }
 
+    public java.lang.String getUserName() {
+      return this.userName;
+    }
+
+    public getAllocationRequestStatus_args setUserName(java.lang.String userName) {
+      this.userName = userName;
+      return this;
+    }
+
+    public void unsetUserName() {
+      this.userName = null;
+    }
+
+    /** Returns true if field userName is set (has been assigned a value) and false otherwise */
+    public boolean isSetUserName() {
+      return this.userName != null;
+    }
+
+    public void setUserNameIsSet(boolean value) {
+      if (!value) {
+        this.userName = null;
+      }
+    }
+
     public void setFieldValue(_Fields field, java.lang.Object value) {
       switch (field) {
       case PROJECT_ID:
@@ -6585,6 +6852,14 @@
         }
         break;
 
+      case USER_NAME:
+        if (value == null) {
+          unsetUserName();
+        } else {
+          setUserName((java.lang.String)value);
+        }
+        break;
+
       }
     }
 
@@ -6593,6 +6868,9 @@
       case PROJECT_ID:
         return getProjectId();
 
+      case USER_NAME:
+        return getUserName();
+
       }
       throw new java.lang.IllegalStateException();
     }
@@ -6606,6 +6884,8 @@
       switch (field) {
       case PROJECT_ID:
         return isSetProjectId();
+      case USER_NAME:
+        return isSetUserName();
       }
       throw new java.lang.IllegalStateException();
     }
@@ -6634,6 +6914,15 @@
           return false;
       }
 
+      boolean this_present_userName = true && this.isSetUserName();
+      boolean that_present_userName = true && that.isSetUserName();
+      if (this_present_userName || that_present_userName) {
+        if (!(this_present_userName && that_present_userName))
+          return false;
+        if (!this.userName.equals(that.userName))
+          return false;
+      }
+
       return true;
     }
 
@@ -6645,6 +6934,10 @@
       if (isSetProjectId())
         hashCode = hashCode * 8191 + projectId.hashCode();
 
+      hashCode = hashCode * 8191 + ((isSetUserName()) ? 131071 : 524287);
+      if (isSetUserName())
+        hashCode = hashCode * 8191 + userName.hashCode();
+
       return hashCode;
     }
 
@@ -6666,6 +6959,16 @@
           return lastComparison;
         }
       }
+      lastComparison = java.lang.Boolean.valueOf(isSetUserName()).compareTo(other.isSetUserName());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetUserName()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userName, other.userName);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
       return 0;
     }
 
@@ -6693,6 +6996,14 @@
         sb.append(this.projectId);
       }
       first = false;
+      if (!first) sb.append(", ");
+      sb.append("userName:");
+      if (this.userName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.userName);
+      }
+      first = false;
       sb.append(")");
       return sb.toString();
     }
@@ -6702,6 +7013,9 @@
       if (projectId == null) {
         throw new org.apache.thrift.protocol.TProtocolException("Required field 'projectId' was not present! Struct: " + toString());
       }
+      if (userName == null) {
+        throw new org.apache.thrift.protocol.TProtocolException("Required field 'userName' was not present! Struct: " + toString());
+      }
       // check for sub-struct validity
     }
 
@@ -6747,6 +7061,14 @@
                 org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
               }
               break;
+            case 2: // USER_NAME
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.userName = iprot.readString();
+                struct.setUserNameIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
             default:
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
           }
@@ -6767,6 +7089,11 @@
           oprot.writeString(struct.projectId);
           oprot.writeFieldEnd();
         }
+        if (struct.userName != null) {
+          oprot.writeFieldBegin(USER_NAME_FIELD_DESC);
+          oprot.writeString(struct.userName);
+          oprot.writeFieldEnd();
+        }
         oprot.writeFieldStop();
         oprot.writeStructEnd();
       }
@@ -6785,6 +7112,7 @@
       public void write(org.apache.thrift.protocol.TProtocol prot, getAllocationRequestStatus_args struct) throws org.apache.thrift.TException {
         org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         oprot.writeString(struct.projectId);
+        oprot.writeString(struct.userName);
       }
 
       @Override
@@ -6792,6 +7120,8 @@
         org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
         struct.projectId = iprot.readString();
         struct.setProjectIdIsSet(true);
+        struct.userName = iprot.readString();
+        struct.setUserNameIsSet(true);
       }
     }
 
diff --git a/allocation-manager/allocation-manager-docs/api-docs/allocation_manager_cpi.html b/allocation-manager/allocation-manager-docs/api-docs/allocation_manager_cpi.html
index 7ea3180..918c90c 100644
--- a/allocation-manager/allocation-manager-docs/api-docs/allocation_manager_cpi.html
+++ b/allocation-manager/allocation-manager-docs/api-docs/allocation_manager_cpi.html
@@ -38,59 +38,63 @@
 <h3 id="Svc_AllocationRegistryService">Service: AllocationRegistryService</h3>
 <div class="definition"><h4 id="Fn_AllocationRegistryService_createAllocationRequest">Function: AllocationRegistryService.createAllocationRequest</h4>
 <pre><code>string</code> createAllocationRequest(<code><a href="allocation_manager_models.html#Struct_UserAllocationDetail">allocation_manager_models.UserAllocationDetail</a></code> allocDetail)
-</pre><pre><p>API method to create new allocation requests</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_isAllocationRequestExists">Function: AllocationRegistryService.isAllocationRequestExists</h4>
-<pre><code>bool</code> isAllocationRequestExists(<code>string</code> projectId)
-</pre><pre><p>API method to check if the allocation request exists</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_deleteAllocationRequest">Function: AllocationRegistryService.deleteAllocationRequest</h4>
-<pre><code>bool</code> deleteAllocationRequest(<code>string</code> projectId)
-</pre><pre><p>API method to delete allocation request</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequest">Function: AllocationRegistryService.getAllocationRequest</h4>
-<pre><code><a href="allocation_manager_models.html#Struct_UserAllocationDetail">allocation_manager_models.UserAllocationDetail</a></code> getAllocationRequest(<code>string</code> projectId)
-</pre><pre><p>API method to get an allocation Request</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_updateAllocationRequest">Function: AllocationRegistryService.updateAllocationRequest</h4>
+</pre><p>API method to create new allocation requests</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_isAllocationRequestExists">Function: AllocationRegistryService.isAllocationRequestExists</h4>
+<pre><code>bool</code> isAllocationRequestExists(<code>string</code> projectId,
+                               <code>string</code> userName)
+</pre><p>API method to check if the allocation request exists</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_deleteAllocationRequest">Function: AllocationRegistryService.deleteAllocationRequest</h4>
+<pre><code>bool</code> deleteAllocationRequest(<code>string</code> projectId,
+                             <code>string</code> userName)
+</pre><p>API method to delete allocation request</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequest">Function: AllocationRegistryService.getAllocationRequest</h4>
+<pre><code><a href="allocation_manager_models.html#Struct_UserAllocationDetail">allocation_manager_models.UserAllocationDetail</a></code> getAllocationRequest(<code>string</code> projectId,
+                                                                    <code>string</code> userName)
+</pre><p>API method to get an allocation Request</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_updateAllocationRequest">Function: AllocationRegistryService.updateAllocationRequest</h4>
 <pre><code>bool</code> updateAllocationRequest(<code><a href="allocation_manager_models.html#Struct_UserAllocationDetail">allocation_manager_models.UserAllocationDetail</a></code> allocDetail)
-</pre><pre><p>API method to update an allocation Request</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequestStatus">Function: AllocationRegistryService.getAllocationRequestStatus</h4>
-<pre><code>string</code> getAllocationRequestStatus(<code>string</code> projectId)
-</pre><pre><p>API method to get an allocation Request status</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequestUserEmail">Function: AllocationRegistryService.getAllocationRequestUserEmail</h4>
+</pre><p>API method to update an allocation Request</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequestStatus">Function: AllocationRegistryService.getAllocationRequestStatus</h4>
+<pre><code>string</code> getAllocationRequestStatus(<code>string</code> projectId,
+                                  <code>string</code> userName)
+</pre><p>API method to get an allocation Request status</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequestUserEmail">Function: AllocationRegistryService.getAllocationRequestUserEmail</h4>
 <pre><code>string</code> getAllocationRequestUserEmail(<code>string</code> userName)
-</pre><pre><p>API method to get an allocation Request PI email</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationManagerAdminEmail">Function: AllocationRegistryService.getAllocationManagerAdminEmail</h4>
+</pre><p>API method to get an allocation Request PI email</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationManagerAdminEmail">Function: AllocationRegistryService.getAllocationManagerAdminEmail</h4>
 <pre><code>string</code> getAllocationManagerAdminEmail(<code>string</code> userType)
-</pre><pre><p>API method to get an allocation Request Admin email</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequestUserName">Function: AllocationRegistryService.getAllocationRequestUserName</h4>
+</pre><p>API method to get an allocation Request Admin email</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequestUserName">Function: AllocationRegistryService.getAllocationRequestUserName</h4>
 <pre><code>string</code> getAllocationRequestUserName(<code>string</code> projectId)
-</pre><pre><p>API method to get an allocation Request PI</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_updateAllocationRequestStatus">Function: AllocationRegistryService.updateAllocationRequestStatus</h4>
+</pre><p>API method to get an allocation Request PI</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_updateAllocationRequestStatus">Function: AllocationRegistryService.updateAllocationRequestStatus</h4>
 <pre><code>void</code> updateAllocationRequestStatus(<code>string</code> projectId,
                                    <code>string</code> status)
-</pre><pre><p>API method to update the status of a request</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllRequestsForAdmin">Function: AllocationRegistryService.getAllRequestsForAdmin</h4>
+</pre><p>API method to update the status of a request</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllRequestsForAdmin">Function: AllocationRegistryService.getAllRequestsForAdmin</h4>
 <pre><code>list&lt;<code><a href="allocation_manager_models.html#Struct_UserAllocationDetail">allocation_manager_models.UserAllocationDetail</a></code>&gt;</code> getAllRequestsForAdmin(<code>string</code> userName)
-</pre><pre><p>API method to get all requests for admin</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_assignReviewers">Function: AllocationRegistryService.assignReviewers</h4>
+</pre><p>API method to get all requests for admin</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_assignReviewers">Function: AllocationRegistryService.assignReviewers</h4>
 <pre><code>bool</code> assignReviewers(<code><a href="allocation_manager_models.html#Struct_UserAllocationDetailPK">allocation_manager_models.UserAllocationDetailPK</a></code> projectId,
                      <code>string</code> userName)
-</pre><pre><p>API method to assign reviewers</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_updateRequestByReviewer">Function: AllocationRegistryService.updateRequestByReviewer</h4>
+</pre><p>API method to assign reviewers</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_updateRequestByReviewer">Function: AllocationRegistryService.updateRequestByReviewer</h4>
 <pre><code>bool</code> updateRequestByReviewer(<code><a href="allocation_manager_models.html#Struct_UserAllocationDetailPK">allocation_manager_models.UserAllocationDetailPK</a></code> projectId,
                              <code><a href="allocation_manager_models.html#Struct_UserAllocationDetail">allocation_manager_models.UserAllocationDetail</a></code> userAllocationDetail)
-</pre><pre><p>API method to update request submitted by reviewer</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_isAdmin">Function: AllocationRegistryService.isAdmin</h4>
+</pre><p>API method to update request submitted by reviewer</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_isAdmin">Function: AllocationRegistryService.isAdmin</h4>
 <pre><code>bool</code> isAdmin(<code>string</code> userName)
-</pre><pre><p>API method to check if the logged in user is an Admin</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_isReviewer">Function: AllocationRegistryService.isReviewer</h4>
+</pre><p>API method to check if the logged in user is an Admin</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_isReviewer">Function: AllocationRegistryService.isReviewer</h4>
 <pre><code>bool</code> isReviewer(<code>string</code> userName)
-</pre><pre><p>API method to check if the logged in user is a Reviewer</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllRequestsForReviewers">Function: AllocationRegistryService.getAllRequestsForReviewers</h4>
+</pre><p>API method to check if the logged in user is a Reviewer</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllRequestsForReviewers">Function: AllocationRegistryService.getAllRequestsForReviewers</h4>
 <pre><code>list&lt;<code><a href="allocation_manager_models.html#Struct_UserAllocationDetail">allocation_manager_models.UserAllocationDetail</a></code>&gt;</code> getAllRequestsForReviewers(<code>string</code> userName)
-</pre><pre><p>API method to get all requests assigned to the reviewers</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getUserDetails">Function: AllocationRegistryService.getUserDetails</h4>
+</pre><p>API method to get all requests assigned to the reviewers</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getUserDetails">Function: AllocationRegistryService.getUserDetails</h4>
 <pre><code><a href="allocation_manager_models.html#Struct_UserDetail">allocation_manager_models.UserDetail</a></code> getUserDetails(<code>string</code> userName)
-</pre><pre><p>API method to get a user details</p>
-</pre><br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getReviewsForRequest">Function: AllocationRegistryService.getReviewsForRequest</h4>
+</pre><p>API method to get a user details</p>
+<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getReviewsForRequest">Function: AllocationRegistryService.getReviewsForRequest</h4>
 <pre><code>list&lt;<code><a href="allocation_manager_models.html#Struct_UserAllocationDetail">allocation_manager_models.UserAllocationDetail</a></code>&gt;</code> getReviewsForRequest(<code><a href="allocation_manager_models.html#Struct_UserAllocationDetailPK">allocation_manager_models.UserAllocationDetailPK</a></code> projectId)
-</pre><pre><p>API method to get all the reviews for a request</p>
-</pre><br/></div></div></body></html>
+</pre><p>API method to get all the reviews for a request</p>
+<br/></div></div></body></html>
diff --git a/allocation-manager/allocation-manager-docs/api-docs/allocation_manager_models.html b/allocation-manager/allocation-manager-docs/api-docs/allocation_manager_models.html
index a0f909d..e75cb8e 100644
--- a/allocation-manager/allocation-manager-docs/api-docs/allocation_manager_models.html
+++ b/allocation-manager/allocation-manager-docs/api-docs/allocation_manager_models.html
@@ -7,17 +7,17 @@
 <title>Thrift module: allocation_manager_models</title></head><body>
 <div class="container-fluid">
 <h1>Thrift module: allocation_manager_models</h1>
-<pre><p>Field to share sponsorship details</p>
+<p>Field to share sponsorship details</p>
 <li>projectId : Id of the project</li>
 <li>sponsorName : Name of supervisor, manager, group leader or self</li>
 
-</pre><br/><table class="table-bordered table-striped table-condensed"><thead><th>Module</th><th>Services</th><th>Data types</th><th>Constants</th></thead>
+<br/><table class="table-bordered table-striped table-condensed"><thead><th>Module</th><th>Services</th><th>Data types</th><th>Constants</th></thead>
 <tr>
 <td>allocation_manager_models</td><td></td>
 <td><a href="#Struct_AllocationManagerException">AllocationManagerException</a><br/>
 <a href="#Struct_Domain">Domain</a><br/>
 <a href="#Struct_ProjectReviewer">ProjectReviewer</a><br/>
-<a href="#Struct_ProjectReviewerEntityPK">ProjectReviewerEntityPK</a><br/>
+<a href="#Struct_ProjectReviewerPK">ProjectReviewerPK</a><br/>
 <a href="#Struct_UserAllocationDetail">UserAllocationDetail</a><br/>
 <a href="#Struct_UserAllocationDetailPK">UserAllocationDetailPK</a><br/>
 <a href="#Struct_UserDetail">UserDetail</a><br/>
@@ -29,11 +29,11 @@
 <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>projectId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>4</td><td>username</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><pre><p>Field to share sponsorship details</p>
+</table><br/><p>Field to share sponsorship details</p>
 <li>projectId : Id of the project</li>
 <li>sponsorName : Name of supervisor, manager, group leader or self</li>
 
-</pre><br/></div><div class="definition"><h3 id="Struct_ProjectReviewerEntityPK">Struct: ProjectReviewerEntityPK</h3>
+<br/></div><div class="definition"><h3 id="Struct_ProjectReviewerPK">Struct: ProjectReviewerPK</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>projectId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>4</td><td>reviewer</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
@@ -59,7 +59,8 @@
 <tr><td>18</td><td>startDate</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>19</td><td>endDate</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>20</td><td>status</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><pre><p>Required allocation request details</p>
+<tr><td>21</td><td>isPrimaryOwner</td><td><code>bool</code></td><td></td><td>optional</td><td></td></tr>
+</table><br/><p>Required allocation request details</p>
 <li>id : (primary key) Ask the user to assign project ID, but this project should unique, we will need an API endpoint to check whether this ID is not used by other projects and the username</li>
 <li>applicationsToBeUsed : Select the application that the user intends to use, according to application chosen here, resources that can be allocable will be fetch from resource discovery module. User will not be restricted to these application upon allocation grant, provided the resources allocated support the application.</li>
 <li>diskUsageRangePerJob : An optional field to help reviewer and PI for allocation approval</li>
@@ -77,10 +78,10 @@
 <li>typeOfAllocation : If the User has an exclusive allocation with third party organization and wants to use airavata middleware to manage jobs.</li>
 <li>typicalSuPerJob :  An optional field to help reviewer and PI for allocation approval</li>
 
-</pre><br/></div><div class="definition"><h3 id="Struct_ProjectReviewer">Struct: ProjectReviewer</h3>
+<br/></div><div class="definition"><h3 id="Struct_ProjectReviewer">Struct: ProjectReviewer</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>id</td><td><code><a href="#Struct_ProjectReviewerEntityPK">ProjectReviewerEntityPK</a></code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><pre><p>Allocation Request status details</p>
+<tr><td>1</td><td>id</td><td><code><a href="#Struct_ProjectReviewerPK">ProjectReviewerPK</a></code></td><td></td><td>optional</td><td></td></tr>
+</table><br/><p>Allocation Request status details</p>
 <li>projectId: Unique id of the project</li>
 <li>awardAllocation: Allocation awarded</li>
 <li>endDate: End date of the request</li>
@@ -88,37 +89,37 @@
 <li>startDate: Start date of the allocation</li>
 <li>status: Status of the allocation request</li>
 
-</pre><br/></div><div class="definition"><h3 id="Struct_UserDetail">Struct: UserDetail</h3>
+<br/></div><div class="definition"><h3 id="Struct_UserDetail">Struct: UserDetail</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>username</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>2</td><td>email</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>3</td><td>fullName</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>4</td><td>password</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>5</td><td>userType</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><pre><p>A user should have an account with airavata to request an allocation</p>
+</table><br/><p>A user should have an account with airavata to request an allocation</p>
 <li>username : Login Username</li>
 <li>email :Login email</li>
 <li>fullName: Full name of the user</li>
 <li>Password: Password of the user</li>
 <li>userType: Type of the user</li>
 
-</pre><br/></div><div class="definition"><h3 id="Struct_Domain">Struct: Domain</h3>
+<br/></div><div class="definition"><h3 id="Struct_Domain">Struct: Domain</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>domainId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>2</td><td>name</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <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/><pre><p>An entity for maintaining various domains</p>
+</table><br/><p>An entity for maintaining various domains</p>
 <li>domainId : Unique id of the domain</li>
 <li>name : Name of the domain</li>
 <li>description: Description of the domain</li>
 <li>createdTime: Time when the domain was created</li>
 <li>updatedTime: Time when domain was updated</li>
 
-</pre><br/></div><div class="definition"><h3 id="Struct_AllocationManagerException">Exception: AllocationManagerException</h3>
+<br/></div><div class="definition"><h3 id="Struct_AllocationManagerException">Exception: AllocationManagerException</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/><pre><p>Exception model used in the allocation manager service</p>
+</table><br/><p>Exception model used in the allocation manager service</p>
 
-</pre><br/></div></div></body></html>
+<br/></div></div></body></html>
diff --git a/allocation-manager/allocation-manager-docs/api-docs/index.html b/allocation-manager/allocation-manager-docs/api-docs/index.html
index 8fe5a18..ea01282 100644
--- a/allocation-manager/allocation-manager-docs/api-docs/index.html
+++ b/allocation-manager/allocation-manager-docs/api-docs/index.html
@@ -34,7 +34,7 @@
 <td><a href="allocation_manager_models.html#Struct_AllocationManagerException">AllocationManagerException</a><br/>
 <a href="allocation_manager_models.html#Struct_Domain">Domain</a><br/>
 <a href="allocation_manager_models.html#Struct_ProjectReviewer">ProjectReviewer</a><br/>
-<a href="allocation_manager_models.html#Struct_ProjectReviewerEntityPK">ProjectReviewerEntityPK</a><br/>
+<a href="allocation_manager_models.html#Struct_ProjectReviewerPK">ProjectReviewerPK</a><br/>
 <a href="allocation_manager_models.html#Struct_UserAllocationDetail">UserAllocationDetail</a><br/>
 <a href="allocation_manager_models.html#Struct_UserAllocationDetailPK">UserAllocationDetailPK</a><br/>
 <a href="allocation_manager_models.html#Struct_UserDetail">UserDetail</a><br/>
diff --git a/allocation-manager/thrift_models/allocation_manager_cpi.thrift b/allocation-manager/thrift_models/allocation_manager_cpi.thrift
index 4c97565..eb89f85 100755
--- a/allocation-manager/thrift_models/allocation_manager_cpi.thrift
+++ b/allocation-manager/thrift_models/allocation_manager_cpi.thrift
@@ -12,17 +12,17 @@
     /**
      <p>API method to check if the allocation request exists</p>
     */
-    bool isAllocationRequestExists(1: required string projectId)
+    bool isAllocationRequestExists(1: required string projectId, 2: required string userName)
     
     /**
      <p>API method to delete allocation request</p>
     */
-    bool deleteAllocationRequest(1: required string projectId)
+    bool deleteAllocationRequest(1: required string projectId, 2: required string userName)
     
     /**
      <p>API method to get an allocation Request</p>
     */
-    allocation_manager_models.UserAllocationDetail getAllocationRequest(1: required string projectId)
+    allocation_manager_models.UserAllocationDetail getAllocationRequest(1: required string projectId, 2: required string userName)
     
     /**
      <p>API method to update an allocation Request</p>
@@ -32,7 +32,7 @@
    /**
     <p>API method to get an allocation Request status</p>
     */
-    string getAllocationRequestStatus(1: required string projectId)
+    string getAllocationRequestStatus(1: required string projectId, 2: required string userName)
 
     /**
     <p>API method to get an allocation Request PI email</p>
diff --git a/allocation-manager/thrift_models/allocation_manager_models.thrift b/allocation-manager/thrift_models/allocation_manager_models.thrift
index 98bf5d0..3a6c98a 100644
--- a/allocation-manager/thrift_models/allocation_manager_models.thrift
+++ b/allocation-manager/thrift_models/allocation_manager_models.thrift
@@ -53,7 +53,8 @@
 17:optional i64 awardAllocation,
 18:optional i64 startDate,
 19:optional i64 endDate,
-20:optional string status
+20:optional string status,
+21:optional bool isPrimaryOwner
 }
 
 /**