Updated database fields and models
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/ProjectReviewerEntity.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/ProjectReviewerEntity.java
new file mode 100644
index 0000000..86e9de6
--- /dev/null
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/ProjectReviewerEntity.java
@@ -0,0 +1,34 @@
+package org.apache.airavata.allocation.manager.db.entities;
+
+import java.io.Serializable;
+import javax.persistence.*;
+
+/**
+ *
+ * @author harsha
+ */
+/**
+ * The persistent class for the PROJECT_REVIEWER database table.
+ * 
+ */
+@Entity
+@Table(name="PROJECT_REVIEWER")
+@NamedQuery(name="ProjectReviewerEntity.findAll", query="SELECT p FROM ProjectReviewerEntity p")
+public class ProjectReviewerEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	@EmbeddedId
+	private ProjectReviewerEntityPK id;
+
+	public ProjectReviewerEntity() {
+	}
+
+	public ProjectReviewerEntityPK getId() {
+		return this.id;
+	}
+
+	public void setId(ProjectReviewerEntityPK id) {
+		this.id = id;
+	}
+
+}
\ 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/entities/ProjectReviewerEntityPK.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/ProjectReviewerEntityPK.java
new file mode 100644
index 0000000..83fa505
--- /dev/null
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/ProjectReviewerEntityPK.java
@@ -0,0 +1,66 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.apache.airavata.allocation.manager.db.entities;
+
+import java.io.Serializable;
+import javax.persistence.*;
+
+/**
+ *
+ * @author harsha
+ */
+/**
+ * The primary key class for the PROJECT_REVIEWER database table.
+ * 
+ */
+@Embeddable
+public class ProjectReviewerEntityPK implements Serializable {
+	//default serial version id, required for serializable classes.
+	private static final long serialVersionUID = 1L;
+
+	@Column(name="PROJECT_ID")
+	private String projectId;
+
+	@Column(name="REVIEWER")
+	private String reviewer;
+
+	public ProjectReviewerEntityPK() {
+	}
+	public String getProjectId() {
+		return this.projectId;
+	}
+	public void setProjectId(String projectId) {
+		this.projectId = projectId;
+	}
+	public String getReviewer() {
+		return this.reviewer;
+	}
+	public void setReviewer(String reviewer) {
+		this.reviewer = reviewer;
+	}
+
+	public boolean equals(Object other) {
+		if (this == other) {
+			return true;
+		}
+		if (!(other instanceof ProjectReviewerEntityPK)) {
+			return false;
+		}
+		ProjectReviewerEntityPK castOther = (ProjectReviewerEntityPK)other;
+		return 
+			this.projectId.equals(castOther.projectId)
+			&& this.reviewer.equals(castOther.reviewer);
+	}
+
+	public int hashCode() {
+		final int prime = 31;
+		int hash = 17;
+		hash = hash * prime + this.projectId.hashCode();
+		hash = hash * prime + this.reviewer.hashCode();
+		
+		return hash;
+	}
+}
\ 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/entities/RequestStatusEntity.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/RequestStatusEntity.java
deleted file mode 100644
index 42ccc4a..0000000
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/RequestStatusEntity.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package org.apache.airavata.allocation.manager.db.entities;
-
-import java.io.Serializable;
-import javax.persistence.*;
-import java.math.BigInteger;
-
-
-/**
- * The persistent class for the REQUEST_STATUS database table.
- * 
- */
-@Entity
-@Table(name="REQUEST_STATUS")
-@NamedQuery(name="RequestStatusEntity.findAll", query="SELECT r FROM RequestStatusEntity r")
-public class RequestStatusEntity implements Serializable {
-	private static final long serialVersionUID = 1L;
-
-	@Id
-	@Column(name="PROJECT_ID")
-	private String projectId;
-
-	@Column(name="END_DATE")
-	private BigInteger endDate;
-
-	@Lob
-	@Column(name="REVIEWERS")
-	private String reviewers;
-
-	@Column(name="START_DATE")
-	private BigInteger startDate;
-
-	@Column(name="STATUS")
-	private String status;
-
-	public RequestStatusEntity() {
-	}
-
-	public String getProjectId() {
-		return this.projectId;
-	}
-
-	public void setProjectId(String projectId) {
-		this.projectId = projectId;
-	}
-
-	public BigInteger getEndDate() {
-		return this.endDate;
-	}
-
-	public void setEndDate(BigInteger endDate) {
-		this.endDate = endDate;
-	}
-
-	public String getReviewers() {
-		return this.reviewers;
-	}
-
-	public void setReviewers(String reviewers) {
-		this.reviewers = reviewers;
-	}
-
-	public BigInteger getStartDate() {
-		return this.startDate;
-	}
-
-	public void setStartDate(BigInteger startDate) {
-		this.startDate = startDate;
-	}
-
-	public String getStatus() {
-		return this.status;
-	}
-
-	public void setStatus(String status) {
-		this.status = status;
-	}
-
-}
\ 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/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 35ab18d..1ebcc9f 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,7 +4,10 @@
 import javax.persistence.*;
 import java.math.BigInteger;
 
-
+/**
+ *
+ * @author harsha
+ */
 /**
  * The persistent class for the USER_ALLOCATION_DETAILS database table.
  * 
@@ -22,6 +25,9 @@
 	@Column(name="APPLICATIONS_TO_BE_USED")
 	private String applicationsToBeUsed;
 
+	@Column(name="AWARD_ALLOCATION")
+	private BigInteger awardAllocation;
+
 	@Column(name="DISK_USAGE_RANGE_PER_JOB")
 	private BigInteger diskUsageRangePerJob;
 
@@ -29,6 +35,9 @@
 	@Column(name="DOCUMENTS")
 	private byte[] documents;
 
+	@Column(name="END_DATE")
+	private BigInteger endDate;
+
 	@Lob
 	@Column(name="FIELD_OF_SCIENCE")
 	private String fieldOfScience;
@@ -51,8 +60,8 @@
 	@Column(name="PROJECT_REVIEWED_AND_FUNDED_BY")
 	private String projectReviewedAndFundedBy;
 
-	@Column(name="REQ_DATE")
-	private BigInteger reqDate;
+	@Column(name="REQUESTED_DATE")
+	private BigInteger requestedDate;
 
 	@Column(name="SERVICE_UNITS")
 	private BigInteger serviceUnits;
@@ -61,6 +70,12 @@
 	@Column(name="SPECIFIC_RESOURCE_SELECTION")
 	private String specificResourceSelection;
 
+	@Column(name="START_DATE")
+	private BigInteger startDate;
+
+	@Column(name="STATUS")
+	private String status;
+
 	@Lob
 	@Column(name="TITLE")
 	private String title;
@@ -90,6 +105,14 @@
 		this.applicationsToBeUsed = applicationsToBeUsed;
 	}
 
+	public BigInteger getAwardAllocation() {
+		return this.awardAllocation;
+	}
+
+	public void setAwardAllocation(BigInteger awardAllocation) {
+		this.awardAllocation = awardAllocation;
+	}
+
 	public BigInteger getDiskUsageRangePerJob() {
 		return this.diskUsageRangePerJob;
 	}
@@ -106,6 +129,14 @@
 		this.documents = documents;
 	}
 
+	public BigInteger getEndDate() {
+		return this.endDate;
+	}
+
+	public void setEndDate(BigInteger endDate) {
+		this.endDate = endDate;
+	}
+
 	public String getFieldOfScience() {
 		return this.fieldOfScience;
 	}
@@ -154,12 +185,12 @@
 		this.projectReviewedAndFundedBy = projectReviewedAndFundedBy;
 	}
 
-	public BigInteger getReqDate() {
-		return this.reqDate;
+	public BigInteger getRequestedDate() {
+		return this.requestedDate;
 	}
 
-	public void setReqDate(BigInteger reqDate) {
-		this.reqDate = reqDate;
+	public void setRequestedDate(BigInteger requestedDate) {
+		this.requestedDate = requestedDate;
 	}
 
 	public BigInteger getServiceUnits() {
@@ -178,6 +209,22 @@
 		this.specificResourceSelection = specificResourceSelection;
 	}
 
+	public BigInteger getStartDate() {
+		return this.startDate;
+	}
+
+	public void setStartDate(BigInteger startDate) {
+		this.startDate = startDate;
+	}
+
+	public String getStatus() {
+		return this.status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
 	public String getTitle() {
 		return this.title;
 	}
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserAllocationDetailEntityPK.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserAllocationDetailEntityPK.java
index e768883..53840f1 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserAllocationDetailEntityPK.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserAllocationDetailEntityPK.java
@@ -4,6 +4,10 @@
 import javax.persistence.*;
 
 /**
+ *
+ * @author harsha
+ */
+/**
  * The primary key class for the USER_ALLOCATION_DETAILS database table.
  * 
  */
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserDetailEntity.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserDetailEntity.java
index 9eb04fc..3647b72 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserDetailEntity.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserDetailEntity.java
@@ -5,6 +5,10 @@
 
 
 /**
+ *
+ * @author harsha
+ */
+/**
  * The persistent class for the USER_DETAILS database table.
  * 
  */
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/ProjectReviewerPKRepository.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/ProjectReviewerPKRepository.java
new file mode 100644
index 0000000..4746c7c
--- /dev/null
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/ProjectReviewerPKRepository.java
@@ -0,0 +1,14 @@
+package org.apache.airavata.allocation.manager.db.repositories;
+
+import org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntityPK;
+import org.apache.airavata.allocation.manager.models.ProjectReviewerPK;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ProjectReviewerPKRepository extends AbstractRepository<ProjectReviewerPK, ProjectReviewerEntityPK, String> {
+    private final static Logger logger = LoggerFactory.getLogger(DomainRepository.class);
+
+    public ProjectReviewerPKRepository(){
+        super(ProjectReviewerPK.class, ProjectReviewerEntityPK.class);
+    }
+}
\ 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/ProjectReviewerRepository.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/ProjectReviewerRepository.java
new file mode 100644
index 0000000..897bd62
--- /dev/null
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/ProjectReviewerRepository.java
@@ -0,0 +1,14 @@
+package org.apache.airavata.allocation.manager.db.repositories;
+
+import org.apache.airavata.allocation.manager.db.entities.ProjectReviewerEntity;
+import org.apache.airavata.allocation.manager.models.ProjectReviewer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ProjectReviewerRepository extends AbstractRepository<ProjectReviewer, ProjectReviewerEntity, String> {
+    private final static Logger logger = LoggerFactory.getLogger(DomainRepository.class);
+
+    public ProjectReviewerRepository(){
+        super(ProjectReviewer.class, ProjectReviewerEntity.class);
+    }
+}
\ 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/RequestStatusRepository.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/RequestStatusRepository.java
deleted file mode 100644
index 71cbba8..0000000
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/RequestStatusRepository.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.apache.airavata.allocation.manager.db.repositories;
-
-import org.apache.airavata.allocation.manager.db.entities.RequestStatusEntity;
-import org.apache.airavata.allocation.manager.models.RequestStatus;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RequestStatusRepository extends AbstractRepository<RequestStatus, RequestStatusEntity,String> {
-    private final static Logger logger = LoggerFactory.getLogger(DomainRepository.class);
-
-    public RequestStatusRepository(){
-        super(RequestStatus.class, RequestStatusEntity.class);
-    }
-}
\ 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/UserAllocationDetailPKRepository.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/UserAllocationDetailPKRepository.java
index 265e063..e6b95a6 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/UserAllocationDetailPKRepository.java
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/UserAllocationDetailPKRepository.java
@@ -5,10 +5,10 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class UserAllocationDetailPKRepository extends AbstractRepository<UserAllocationDetailPK, UserAllocationDetailPK, String> {
+public class UserAllocationDetailPKRepository extends AbstractRepository<UserAllocationDetailPK, UserAllocationDetailEntityPK, String> {
     private final static Logger logger = LoggerFactory.getLogger(DomainRepository.class);
 
     public UserAllocationDetailPKRepository(){
-        super(UserAllocationDetailPK.class, UserAllocationDetailPK.class);
+        super(UserAllocationDetailPK.class, UserAllocationDetailEntityPK.class);
     }
 }
\ No newline at end of file
diff --git a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/resources/allocation-manager-mysql.sql b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/resources/allocation-manager-mysql.sql
index 20824f6..61393ba 100644
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/resources/allocation-manager-mysql.sql
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-server/src/main/resources/allocation-manager-mysql.sql
@@ -37,6 +37,10 @@
     DISK_USAGE_RANGE_PER_JOB BIGINT,
     NUMBER_OF_CPU_PER_JOB BIGINT,
     PROJECT_REVIEWED_AND_FUNDED_BY TEXT,
+    STATUS VARCHAR (255) NOT NULL,
+    START_DATE BIGINT,
+    END_DATE BIGINT,
+    AWARD_ALLOCATION BIGINT,
     PRIMARY KEY (PROJECT_ID, USERNAME)
 );
 
@@ -48,11 +52,8 @@
     USER_TYPE VARCHAR (255) NOT NULL
 );
 
-CREATE TABLE IF NOT EXISTS REQUEST_STATUS (
-    PROJECT_ID VARCHAR (255) PRIMARY KEY,
-    STATUS VARCHAR (255) NOT NULL,
-    REVIEWERS TEXT,
-    START_DATE BIGINT,
-    END_DATE BIGINT,
-    AWARD_ALLOCATION BIGINT
+CREATE TABLE IF NOT EXISTS PROJECT_REVIEWER (
+    PROJECT_ID VARCHAR (255),
+    REVIEWER VARCHAR (255),
+    PRIMARY KEY(PROJECT_ID,REVIEWER)
 );
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 24647dd..ef4e395 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 (0.10.0)
+ * Autogenerated by Thrift Compiler (1.0.0-dev)
  *
  * 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 (0.10.0)")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2017-12-08")
 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 6de324d..4d43a75 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 (0.10.0)
+ * Autogenerated by Thrift Compiler (1.0.0-dev)
  *
  * 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 (0.10.0)")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2017-12-08")
 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
new file mode 100644
index 0000000..418d589
--- /dev/null
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewer.java
@@ -0,0 +1,385 @@
+/**
+ * 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"})
+/**
+ * <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>
+ * <li>reviewers: reviewers of the request</li>
+ * <li>startDate: Start date of the allocation</li>
+ * <li>status: Status of the allocation request</li>
+ * 
+ */
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2017-12-08")
+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");
+
+  private static final org.apache.thrift.protocol.TField ID_FIELD_DESC = new org.apache.thrift.protocol.TField("id", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+
+  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new ProjectReviewerStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new ProjectReviewerTupleSchemeFactory();
+
+  public ProjectReviewerPK id; // 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 {
+    ID((short)1, "id");
+
+    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: // ID
+          return ID;
+        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.ID};
+  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.ID, new org.apache.thrift.meta_data.FieldMetaData("id", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ProjectReviewerPK.class)));
+    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ProjectReviewer.class, metaDataMap);
+  }
+
+  public ProjectReviewer() {
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public ProjectReviewer(ProjectReviewer other) {
+    if (other.isSetId()) {
+      this.id = new ProjectReviewerPK(other.id);
+    }
+  }
+
+  public ProjectReviewer deepCopy() {
+    return new ProjectReviewer(this);
+  }
+
+  @Override
+  public void clear() {
+    this.id = null;
+  }
+
+  public ProjectReviewerPK getId() {
+    return this.id;
+  }
+
+  public ProjectReviewer setId(ProjectReviewerPK id) {
+    this.id = id;
+    return this;
+  }
+
+  public void unsetId() {
+    this.id = null;
+  }
+
+  /** Returns true if field id is set (has been assigned a value) and false otherwise */
+  public boolean isSetId() {
+    return this.id != null;
+  }
+
+  public void setIdIsSet(boolean value) {
+    if (!value) {
+      this.id = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, java.lang.Object value) {
+    switch (field) {
+    case ID:
+      if (value == null) {
+        unsetId();
+      } else {
+        setId((ProjectReviewerPK)value);
+      }
+      break;
+
+    }
+  }
+
+  public java.lang.Object getFieldValue(_Fields field) {
+    switch (field) {
+    case ID:
+      return getId();
+
+    }
+    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 ID:
+      return isSetId();
+    }
+    throw new java.lang.IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(java.lang.Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof ProjectReviewer)
+      return this.equals((ProjectReviewer)that);
+    return false;
+  }
+
+  public boolean equals(ProjectReviewer that) {
+    if (that == null)
+      return false;
+    if (this == that)
+      return true;
+
+    boolean this_present_id = true && this.isSetId();
+    boolean that_present_id = true && that.isSetId();
+    if (this_present_id || that_present_id) {
+      if (!(this_present_id && that_present_id))
+        return false;
+      if (!this.id.equals(that.id))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    int hashCode = 1;
+
+    hashCode = hashCode * 8191 + ((isSetId()) ? 131071 : 524287);
+    if (isSetId())
+      hashCode = hashCode * 8191 + id.hashCode();
+
+    return hashCode;
+  }
+
+  @Override
+  public int compareTo(ProjectReviewer other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = java.lang.Boolean.valueOf(isSetId()).compareTo(other.isSetId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.id, other.id);
+      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("ProjectReviewer(");
+    boolean first = true;
+
+    if (isSetId()) {
+      sb.append("id:");
+      if (this.id == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.id);
+      }
+      first = false;
+    }
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    // check for sub-struct validity
+    if (id != null) {
+      id.validate();
+    }
+  }
+
+  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 ProjectReviewerStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+    public ProjectReviewerStandardScheme getScheme() {
+      return new ProjectReviewerStandardScheme();
+    }
+  }
+
+  private static class ProjectReviewerStandardScheme extends org.apache.thrift.scheme.StandardScheme<ProjectReviewer> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, ProjectReviewer 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: // ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+              struct.id = new ProjectReviewerPK();
+              struct.id.read(iprot);
+              struct.setIdIsSet(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, ProjectReviewer struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.id != null) {
+        if (struct.isSetId()) {
+          oprot.writeFieldBegin(ID_FIELD_DESC);
+          struct.id.write(oprot);
+          oprot.writeFieldEnd();
+        }
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class ProjectReviewerTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+    public ProjectReviewerTupleScheme getScheme() {
+      return new ProjectReviewerTupleScheme();
+    }
+  }
+
+  private static class ProjectReviewerTupleScheme extends org.apache.thrift.scheme.TupleScheme<ProjectReviewer> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, ProjectReviewer 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.isSetId()) {
+        optionals.set(0);
+      }
+      oprot.writeBitSet(optionals, 1);
+      if (struct.isSetId()) {
+        struct.id.write(oprot);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, ProjectReviewer struct) throws org.apache.thrift.TException {
+      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
+      java.util.BitSet incoming = iprot.readBitSet(1);
+      if (incoming.get(0)) {
+        struct.id = new ProjectReviewerPK();
+        struct.id.read(iprot);
+        struct.setIdIsSet(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/ProjectReviewerEntityPK.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewerEntityPK.java
new file mode 100644
index 0000000..c70929c
--- /dev/null
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewerEntityPK.java
@@ -0,0 +1,476 @@
+/**
+ * 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
new file mode 100644
index 0000000..f6bd0c2
--- /dev/null
+++ b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/ProjectReviewerPK.java
@@ -0,0 +1,476 @@
+/**
+ * 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 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");
+
+  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 ProjectReviewerPKStandardSchemeFactory();
+  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new ProjectReviewerPKTupleSchemeFactory();
+
+  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(ProjectReviewerPK.class, metaDataMap);
+  }
+
+  public ProjectReviewerPK() {
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public ProjectReviewerPK(ProjectReviewerPK other) {
+    if (other.isSetProjectId()) {
+      this.projectId = other.projectId;
+    }
+    if (other.isSetReviewer()) {
+      this.reviewer = other.reviewer;
+    }
+  }
+
+  public ProjectReviewerPK deepCopy() {
+    return new ProjectReviewerPK(this);
+  }
+
+  @Override
+  public void clear() {
+    this.projectId = null;
+    this.reviewer = null;
+  }
+
+  public java.lang.String getProjectId() {
+    return this.projectId;
+  }
+
+  public ProjectReviewerPK 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 ProjectReviewerPK 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 ProjectReviewerPK)
+      return this.equals((ProjectReviewerPK)that);
+    return false;
+  }
+
+  public boolean equals(ProjectReviewerPK 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(ProjectReviewerPK 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("ProjectReviewerPK(");
+    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 ProjectReviewerPKStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+    public ProjectReviewerPKStandardScheme getScheme() {
+      return new ProjectReviewerPKStandardScheme();
+    }
+  }
+
+  private static class ProjectReviewerPKStandardScheme extends org.apache.thrift.scheme.StandardScheme<ProjectReviewerPK> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, ProjectReviewerPK 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, ProjectReviewerPK 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 ProjectReviewerPKTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
+    public ProjectReviewerPKTupleScheme getScheme() {
+      return new ProjectReviewerPKTupleScheme();
+    }
+  }
+
+  private static class ProjectReviewerPKTupleScheme extends org.apache.thrift.scheme.TupleScheme<ProjectReviewerPK> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, ProjectReviewerPK 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, ProjectReviewerPK 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/RequestStatus.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/RequestStatus.java
deleted file mode 100644
index f893cd0..0000000
--- a/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/RequestStatus.java
+++ /dev/null
@@ -1,893 +0,0 @@
-/**
- * Autogenerated by Thrift Compiler (0.10.0)
- *
- * 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"})
-/**
- * <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>
- * <li>reviewers: reviewers of the request</li>
- * <li>startDate: Start date of the allocation</li>
- * <li>status: Status of the allocation request</li>
- * 
- */
-@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)")
-public class RequestStatus implements org.apache.thrift.TBase<RequestStatus, RequestStatus._Fields>, java.io.Serializable, Cloneable, Comparable<RequestStatus> {
-  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("RequestStatus");
-
-  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 AWARD_ALLOCATION_FIELD_DESC = new org.apache.thrift.protocol.TField("awardAllocation", org.apache.thrift.protocol.TType.I64, (short)2);
-  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)3);
-  private static final org.apache.thrift.protocol.TField REVIEWERS_FIELD_DESC = new org.apache.thrift.protocol.TField("reviewers", org.apache.thrift.protocol.TType.STRING, (short)4);
-  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)5);
-  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)6);
-
-  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new RequestStatusStandardSchemeFactory();
-  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new RequestStatusTupleSchemeFactory();
-
-  public java.lang.String projectId; // optional
-  public long awardAllocation; // optional
-  public long endDate; // optional
-  public java.lang.String reviewers; // optional
-  public long startDate; // optional
-  public java.lang.String status; // 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"),
-    AWARD_ALLOCATION((short)2, "awardAllocation"),
-    END_DATE((short)3, "endDate"),
-    REVIEWERS((short)4, "reviewers"),
-    START_DATE((short)5, "startDate"),
-    STATUS((short)6, "status");
-
-    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 2: // AWARD_ALLOCATION
-          return AWARD_ALLOCATION;
-        case 3: // END_DATE
-          return END_DATE;
-        case 4: // REVIEWERS
-          return REVIEWERS;
-        case 5: // START_DATE
-          return START_DATE;
-        case 6: // STATUS
-          return STATUS;
-        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 int __AWARDALLOCATION_ISSET_ID = 0;
-  private static final int __ENDDATE_ISSET_ID = 1;
-  private static final int __STARTDATE_ISSET_ID = 2;
-  private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.PROJECT_ID,_Fields.AWARD_ALLOCATION,_Fields.END_DATE,_Fields.REVIEWERS,_Fields.START_DATE,_Fields.STATUS};
-  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.AWARD_ALLOCATION, new org.apache.thrift.meta_data.FieldMetaData("awardAllocation", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
-    tmpMap.put(_Fields.END_DATE, new org.apache.thrift.meta_data.FieldMetaData("endDate", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
-    tmpMap.put(_Fields.REVIEWERS, new org.apache.thrift.meta_data.FieldMetaData("reviewers", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.START_DATE, new org.apache.thrift.meta_data.FieldMetaData("startDate", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        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)));
-    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(RequestStatus.class, metaDataMap);
-  }
-
-  public RequestStatus() {
-  }
-
-  /**
-   * Performs a deep copy on <i>other</i>.
-   */
-  public RequestStatus(RequestStatus other) {
-    __isset_bitfield = other.__isset_bitfield;
-    if (other.isSetProjectId()) {
-      this.projectId = other.projectId;
-    }
-    this.awardAllocation = other.awardAllocation;
-    this.endDate = other.endDate;
-    if (other.isSetReviewers()) {
-      this.reviewers = other.reviewers;
-    }
-    this.startDate = other.startDate;
-    if (other.isSetStatus()) {
-      this.status = other.status;
-    }
-  }
-
-  public RequestStatus deepCopy() {
-    return new RequestStatus(this);
-  }
-
-  @Override
-  public void clear() {
-    this.projectId = null;
-    setAwardAllocationIsSet(false);
-    this.awardAllocation = 0;
-    setEndDateIsSet(false);
-    this.endDate = 0;
-    this.reviewers = null;
-    setStartDateIsSet(false);
-    this.startDate = 0;
-    this.status = null;
-  }
-
-  public java.lang.String getProjectId() {
-    return this.projectId;
-  }
-
-  public RequestStatus 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 long getAwardAllocation() {
-    return this.awardAllocation;
-  }
-
-  public RequestStatus setAwardAllocation(long awardAllocation) {
-    this.awardAllocation = awardAllocation;
-    setAwardAllocationIsSet(true);
-    return this;
-  }
-
-  public void unsetAwardAllocation() {
-    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __AWARDALLOCATION_ISSET_ID);
-  }
-
-  /** Returns true if field awardAllocation is set (has been assigned a value) and false otherwise */
-  public boolean isSetAwardAllocation() {
-    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __AWARDALLOCATION_ISSET_ID);
-  }
-
-  public void setAwardAllocationIsSet(boolean value) {
-    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __AWARDALLOCATION_ISSET_ID, value);
-  }
-
-  public long getEndDate() {
-    return this.endDate;
-  }
-
-  public RequestStatus setEndDate(long endDate) {
-    this.endDate = endDate;
-    setEndDateIsSet(true);
-    return this;
-  }
-
-  public void unsetEndDate() {
-    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __ENDDATE_ISSET_ID);
-  }
-
-  /** Returns true if field endDate is set (has been assigned a value) and false otherwise */
-  public boolean isSetEndDate() {
-    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __ENDDATE_ISSET_ID);
-  }
-
-  public void setEndDateIsSet(boolean value) {
-    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __ENDDATE_ISSET_ID, value);
-  }
-
-  public java.lang.String getReviewers() {
-    return this.reviewers;
-  }
-
-  public RequestStatus setReviewers(java.lang.String reviewers) {
-    this.reviewers = reviewers;
-    return this;
-  }
-
-  public void unsetReviewers() {
-    this.reviewers = null;
-  }
-
-  /** Returns true if field reviewers is set (has been assigned a value) and false otherwise */
-  public boolean isSetReviewers() {
-    return this.reviewers != null;
-  }
-
-  public void setReviewersIsSet(boolean value) {
-    if (!value) {
-      this.reviewers = null;
-    }
-  }
-
-  public long getStartDate() {
-    return this.startDate;
-  }
-
-  public RequestStatus setStartDate(long startDate) {
-    this.startDate = startDate;
-    setStartDateIsSet(true);
-    return this;
-  }
-
-  public void unsetStartDate() {
-    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __STARTDATE_ISSET_ID);
-  }
-
-  /** Returns true if field startDate is set (has been assigned a value) and false otherwise */
-  public boolean isSetStartDate() {
-    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __STARTDATE_ISSET_ID);
-  }
-
-  public void setStartDateIsSet(boolean value) {
-    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __STARTDATE_ISSET_ID, value);
-  }
-
-  public java.lang.String getStatus() {
-    return this.status;
-  }
-
-  public RequestStatus setStatus(java.lang.String status) {
-    this.status = status;
-    return this;
-  }
-
-  public void unsetStatus() {
-    this.status = null;
-  }
-
-  /** Returns true if field status is set (has been assigned a value) and false otherwise */
-  public boolean isSetStatus() {
-    return this.status != null;
-  }
-
-  public void setStatusIsSet(boolean value) {
-    if (!value) {
-      this.status = 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 AWARD_ALLOCATION:
-      if (value == null) {
-        unsetAwardAllocation();
-      } else {
-        setAwardAllocation((java.lang.Long)value);
-      }
-      break;
-
-    case END_DATE:
-      if (value == null) {
-        unsetEndDate();
-      } else {
-        setEndDate((java.lang.Long)value);
-      }
-      break;
-
-    case REVIEWERS:
-      if (value == null) {
-        unsetReviewers();
-      } else {
-        setReviewers((java.lang.String)value);
-      }
-      break;
-
-    case START_DATE:
-      if (value == null) {
-        unsetStartDate();
-      } else {
-        setStartDate((java.lang.Long)value);
-      }
-      break;
-
-    case STATUS:
-      if (value == null) {
-        unsetStatus();
-      } else {
-        setStatus((java.lang.String)value);
-      }
-      break;
-
-    }
-  }
-
-  public java.lang.Object getFieldValue(_Fields field) {
-    switch (field) {
-    case PROJECT_ID:
-      return getProjectId();
-
-    case AWARD_ALLOCATION:
-      return getAwardAllocation();
-
-    case END_DATE:
-      return getEndDate();
-
-    case REVIEWERS:
-      return getReviewers();
-
-    case START_DATE:
-      return getStartDate();
-
-    case STATUS:
-      return getStatus();
-
-    }
-    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 AWARD_ALLOCATION:
-      return isSetAwardAllocation();
-    case END_DATE:
-      return isSetEndDate();
-    case REVIEWERS:
-      return isSetReviewers();
-    case START_DATE:
-      return isSetStartDate();
-    case STATUS:
-      return isSetStatus();
-    }
-    throw new java.lang.IllegalStateException();
-  }
-
-  @Override
-  public boolean equals(java.lang.Object that) {
-    if (that == null)
-      return false;
-    if (that instanceof RequestStatus)
-      return this.equals((RequestStatus)that);
-    return false;
-  }
-
-  public boolean equals(RequestStatus 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_awardAllocation = true && this.isSetAwardAllocation();
-    boolean that_present_awardAllocation = true && that.isSetAwardAllocation();
-    if (this_present_awardAllocation || that_present_awardAllocation) {
-      if (!(this_present_awardAllocation && that_present_awardAllocation))
-        return false;
-      if (this.awardAllocation != that.awardAllocation)
-        return false;
-    }
-
-    boolean this_present_endDate = true && this.isSetEndDate();
-    boolean that_present_endDate = true && that.isSetEndDate();
-    if (this_present_endDate || that_present_endDate) {
-      if (!(this_present_endDate && that_present_endDate))
-        return false;
-      if (this.endDate != that.endDate)
-        return false;
-    }
-
-    boolean this_present_reviewers = true && this.isSetReviewers();
-    boolean that_present_reviewers = true && that.isSetReviewers();
-    if (this_present_reviewers || that_present_reviewers) {
-      if (!(this_present_reviewers && that_present_reviewers))
-        return false;
-      if (!this.reviewers.equals(that.reviewers))
-        return false;
-    }
-
-    boolean this_present_startDate = true && this.isSetStartDate();
-    boolean that_present_startDate = true && that.isSetStartDate();
-    if (this_present_startDate || that_present_startDate) {
-      if (!(this_present_startDate && that_present_startDate))
-        return false;
-      if (this.startDate != that.startDate)
-        return false;
-    }
-
-    boolean this_present_status = true && this.isSetStatus();
-    boolean that_present_status = true && that.isSetStatus();
-    if (this_present_status || that_present_status) {
-      if (!(this_present_status && that_present_status))
-        return false;
-      if (!this.status.equals(that.status))
-        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 + ((isSetAwardAllocation()) ? 131071 : 524287);
-    if (isSetAwardAllocation())
-      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(awardAllocation);
-
-    hashCode = hashCode * 8191 + ((isSetEndDate()) ? 131071 : 524287);
-    if (isSetEndDate())
-      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(endDate);
-
-    hashCode = hashCode * 8191 + ((isSetReviewers()) ? 131071 : 524287);
-    if (isSetReviewers())
-      hashCode = hashCode * 8191 + reviewers.hashCode();
-
-    hashCode = hashCode * 8191 + ((isSetStartDate()) ? 131071 : 524287);
-    if (isSetStartDate())
-      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(startDate);
-
-    hashCode = hashCode * 8191 + ((isSetStatus()) ? 131071 : 524287);
-    if (isSetStatus())
-      hashCode = hashCode * 8191 + status.hashCode();
-
-    return hashCode;
-  }
-
-  @Override
-  public int compareTo(RequestStatus 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(isSetAwardAllocation()).compareTo(other.isSetAwardAllocation());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetAwardAllocation()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.awardAllocation, other.awardAllocation);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = java.lang.Boolean.valueOf(isSetEndDate()).compareTo(other.isSetEndDate());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetEndDate()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.endDate, other.endDate);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = java.lang.Boolean.valueOf(isSetReviewers()).compareTo(other.isSetReviewers());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetReviewers()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.reviewers, other.reviewers);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = java.lang.Boolean.valueOf(isSetStartDate()).compareTo(other.isSetStartDate());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetStartDate()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.startDate, other.startDate);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    lastComparison = java.lang.Boolean.valueOf(isSetStatus()).compareTo(other.isSetStatus());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetStatus()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.status, other.status);
-      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("RequestStatus(");
-    boolean first = true;
-
-    if (isSetProjectId()) {
-      sb.append("projectId:");
-      if (this.projectId == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.projectId);
-      }
-      first = false;
-    }
-    if (isSetAwardAllocation()) {
-      if (!first) sb.append(", ");
-      sb.append("awardAllocation:");
-      sb.append(this.awardAllocation);
-      first = false;
-    }
-    if (isSetEndDate()) {
-      if (!first) sb.append(", ");
-      sb.append("endDate:");
-      sb.append(this.endDate);
-      first = false;
-    }
-    if (isSetReviewers()) {
-      if (!first) sb.append(", ");
-      sb.append("reviewers:");
-      if (this.reviewers == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.reviewers);
-      }
-      first = false;
-    }
-    if (isSetStartDate()) {
-      if (!first) sb.append(", ");
-      sb.append("startDate:");
-      sb.append(this.startDate);
-      first = false;
-    }
-    if (isSetStatus()) {
-      if (!first) sb.append(", ");
-      sb.append("status:");
-      if (this.status == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.status);
-      }
-      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 {
-      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
-      __isset_bitfield = 0;
-      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 RequestStatusStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-    public RequestStatusStandardScheme getScheme() {
-      return new RequestStatusStandardScheme();
-    }
-  }
-
-  private static class RequestStatusStandardScheme extends org.apache.thrift.scheme.StandardScheme<RequestStatus> {
-
-    public void read(org.apache.thrift.protocol.TProtocol iprot, RequestStatus 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 2: // AWARD_ALLOCATION
-            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
-              struct.awardAllocation = iprot.readI64();
-              struct.setAwardAllocationIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 3: // END_DATE
-            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
-              struct.endDate = iprot.readI64();
-              struct.setEndDateIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 4: // REVIEWERS
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.reviewers = iprot.readString();
-              struct.setReviewersIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 5: // START_DATE
-            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
-              struct.startDate = iprot.readI64();
-              struct.setStartDateIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 6: // STATUS
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.status = iprot.readString();
-              struct.setStatusIsSet(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, RequestStatus 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.isSetAwardAllocation()) {
-        oprot.writeFieldBegin(AWARD_ALLOCATION_FIELD_DESC);
-        oprot.writeI64(struct.awardAllocation);
-        oprot.writeFieldEnd();
-      }
-      if (struct.isSetEndDate()) {
-        oprot.writeFieldBegin(END_DATE_FIELD_DESC);
-        oprot.writeI64(struct.endDate);
-        oprot.writeFieldEnd();
-      }
-      if (struct.reviewers != null) {
-        if (struct.isSetReviewers()) {
-          oprot.writeFieldBegin(REVIEWERS_FIELD_DESC);
-          oprot.writeString(struct.reviewers);
-          oprot.writeFieldEnd();
-        }
-      }
-      if (struct.isSetStartDate()) {
-        oprot.writeFieldBegin(START_DATE_FIELD_DESC);
-        oprot.writeI64(struct.startDate);
-        oprot.writeFieldEnd();
-      }
-      if (struct.status != null) {
-        if (struct.isSetStatus()) {
-          oprot.writeFieldBegin(STATUS_FIELD_DESC);
-          oprot.writeString(struct.status);
-          oprot.writeFieldEnd();
-        }
-      }
-      oprot.writeFieldStop();
-      oprot.writeStructEnd();
-    }
-
-  }
-
-  private static class RequestStatusTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
-    public RequestStatusTupleScheme getScheme() {
-      return new RequestStatusTupleScheme();
-    }
-  }
-
-  private static class RequestStatusTupleScheme extends org.apache.thrift.scheme.TupleScheme<RequestStatus> {
-
-    @Override
-    public void write(org.apache.thrift.protocol.TProtocol prot, RequestStatus 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.isSetAwardAllocation()) {
-        optionals.set(1);
-      }
-      if (struct.isSetEndDate()) {
-        optionals.set(2);
-      }
-      if (struct.isSetReviewers()) {
-        optionals.set(3);
-      }
-      if (struct.isSetStartDate()) {
-        optionals.set(4);
-      }
-      if (struct.isSetStatus()) {
-        optionals.set(5);
-      }
-      oprot.writeBitSet(optionals, 6);
-      if (struct.isSetProjectId()) {
-        oprot.writeString(struct.projectId);
-      }
-      if (struct.isSetAwardAllocation()) {
-        oprot.writeI64(struct.awardAllocation);
-      }
-      if (struct.isSetEndDate()) {
-        oprot.writeI64(struct.endDate);
-      }
-      if (struct.isSetReviewers()) {
-        oprot.writeString(struct.reviewers);
-      }
-      if (struct.isSetStartDate()) {
-        oprot.writeI64(struct.startDate);
-      }
-      if (struct.isSetStatus()) {
-        oprot.writeString(struct.status);
-      }
-    }
-
-    @Override
-    public void read(org.apache.thrift.protocol.TProtocol prot, RequestStatus struct) throws org.apache.thrift.TException {
-      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
-      java.util.BitSet incoming = iprot.readBitSet(6);
-      if (incoming.get(0)) {
-        struct.projectId = iprot.readString();
-        struct.setProjectIdIsSet(true);
-      }
-      if (incoming.get(1)) {
-        struct.awardAllocation = iprot.readI64();
-        struct.setAwardAllocationIsSet(true);
-      }
-      if (incoming.get(2)) {
-        struct.endDate = iprot.readI64();
-        struct.setEndDateIsSet(true);
-      }
-      if (incoming.get(3)) {
-        struct.reviewers = iprot.readString();
-        struct.setReviewersIsSet(true);
-      }
-      if (incoming.get(4)) {
-        struct.startDate = iprot.readI64();
-        struct.setStartDateIsSet(true);
-      }
-      if (incoming.get(5)) {
-        struct.status = iprot.readString();
-        struct.setStatusIsSet(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/UserAllocationDetail.java b/allocation-manager/airavata-allocation-manager/airavata-allocation-manager-stubs/src/main/java/org/apache/airavata/allocation/manager/models/UserAllocationDetail.java
index c90e39b..557049d 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 (0.10.0)
+ * Autogenerated by Thrift Compiler (1.0.0-dev)
  *
  * 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 (0.10.0)")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2017-12-08")
 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");
 
@@ -47,6 +47,10 @@
   private static final org.apache.thrift.protocol.TField TITLE_FIELD_DESC = new org.apache.thrift.protocol.TField("title", org.apache.thrift.protocol.TType.STRING, (short)14);
   private static final org.apache.thrift.protocol.TField TYPE_OF_ALLOCATION_FIELD_DESC = new org.apache.thrift.protocol.TField("typeOfAllocation", org.apache.thrift.protocol.TType.STRING, (short)15);
   private static final org.apache.thrift.protocol.TField TYPICAL_SU_PER_JOB_FIELD_DESC = new org.apache.thrift.protocol.TField("typicalSuPerJob", org.apache.thrift.protocol.TType.I64, (short)16);
+  private static final org.apache.thrift.protocol.TField AWARD_ALLOCATION_FIELD_DESC = new org.apache.thrift.protocol.TField("awardAllocation", org.apache.thrift.protocol.TType.I64, (short)17);
+  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.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new UserAllocationDetailStandardSchemeFactory();
   private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new UserAllocationDetailTupleSchemeFactory();
@@ -67,6 +71,10 @@
   public java.lang.String title; // optional
   public java.lang.String typeOfAllocation; // optional
   public long typicalSuPerJob; // optional
+  public long awardAllocation; // optional
+  public long startDate; // optional
+  public long endDate; // optional
+  public java.lang.String status; // 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 {
@@ -85,7 +93,11 @@
     SPECIFIC_RESOURCE_SELECTION((short)13, "specificResourceSelection"),
     TITLE((short)14, "title"),
     TYPE_OF_ALLOCATION((short)15, "typeOfAllocation"),
-    TYPICAL_SU_PER_JOB((short)16, "typicalSuPerJob");
+    TYPICAL_SU_PER_JOB((short)16, "typicalSuPerJob"),
+    AWARD_ALLOCATION((short)17, "awardAllocation"),
+    START_DATE((short)18, "startDate"),
+    END_DATE((short)19, "endDate"),
+    STATUS((short)20, "status");
 
     private static final java.util.Map<java.lang.String, _Fields> byName = new java.util.HashMap<java.lang.String, _Fields>();
 
@@ -132,6 +144,14 @@
           return TYPE_OF_ALLOCATION;
         case 16: // TYPICAL_SU_PER_JOB
           return TYPICAL_SU_PER_JOB;
+        case 17: // AWARD_ALLOCATION
+          return AWARD_ALLOCATION;
+        case 18: // START_DATE
+          return START_DATE;
+        case 19: // END_DATE
+          return END_DATE;
+        case 20: // STATUS
+          return STATUS;
         default:
           return null;
       }
@@ -178,8 +198,11 @@
   private static final int __REQUESTEDDATE_ISSET_ID = 3;
   private static final int __SERVICEUNITS_ISSET_ID = 4;
   private static final int __TYPICALSUPERJOB_ISSET_ID = 5;
-  private byte __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};
+  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 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};
   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);
@@ -215,6 +238,14 @@
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.TYPICAL_SU_PER_JOB, new org.apache.thrift.meta_data.FieldMetaData("typicalSuPerJob", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+    tmpMap.put(_Fields.AWARD_ALLOCATION, new org.apache.thrift.meta_data.FieldMetaData("awardAllocation", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+    tmpMap.put(_Fields.START_DATE, new org.apache.thrift.meta_data.FieldMetaData("startDate", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+    tmpMap.put(_Fields.END_DATE, new org.apache.thrift.meta_data.FieldMetaData("endDate", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        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)));
     metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(UserAllocationDetail.class, metaDataMap);
   }
@@ -263,6 +294,12 @@
       this.typeOfAllocation = other.typeOfAllocation;
     }
     this.typicalSuPerJob = other.typicalSuPerJob;
+    this.awardAllocation = other.awardAllocation;
+    this.startDate = other.startDate;
+    this.endDate = other.endDate;
+    if (other.isSetStatus()) {
+      this.status = other.status;
+    }
   }
 
   public UserAllocationDetail deepCopy() {
@@ -293,6 +330,13 @@
     this.typeOfAllocation = null;
     setTypicalSuPerJobIsSet(false);
     this.typicalSuPerJob = 0;
+    setAwardAllocationIsSet(false);
+    this.awardAllocation = 0;
+    setStartDateIsSet(false);
+    this.startDate = 0;
+    setEndDateIsSet(false);
+    this.endDate = 0;
+    this.status = null;
   }
 
   public UserAllocationDetailPK getId() {
@@ -683,6 +727,99 @@
     __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __TYPICALSUPERJOB_ISSET_ID, value);
   }
 
+  public long getAwardAllocation() {
+    return this.awardAllocation;
+  }
+
+  public UserAllocationDetail setAwardAllocation(long awardAllocation) {
+    this.awardAllocation = awardAllocation;
+    setAwardAllocationIsSet(true);
+    return this;
+  }
+
+  public void unsetAwardAllocation() {
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __AWARDALLOCATION_ISSET_ID);
+  }
+
+  /** Returns true if field awardAllocation is set (has been assigned a value) and false otherwise */
+  public boolean isSetAwardAllocation() {
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __AWARDALLOCATION_ISSET_ID);
+  }
+
+  public void setAwardAllocationIsSet(boolean value) {
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __AWARDALLOCATION_ISSET_ID, value);
+  }
+
+  public long getStartDate() {
+    return this.startDate;
+  }
+
+  public UserAllocationDetail setStartDate(long startDate) {
+    this.startDate = startDate;
+    setStartDateIsSet(true);
+    return this;
+  }
+
+  public void unsetStartDate() {
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __STARTDATE_ISSET_ID);
+  }
+
+  /** Returns true if field startDate is set (has been assigned a value) and false otherwise */
+  public boolean isSetStartDate() {
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __STARTDATE_ISSET_ID);
+  }
+
+  public void setStartDateIsSet(boolean value) {
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __STARTDATE_ISSET_ID, value);
+  }
+
+  public long getEndDate() {
+    return this.endDate;
+  }
+
+  public UserAllocationDetail setEndDate(long endDate) {
+    this.endDate = endDate;
+    setEndDateIsSet(true);
+    return this;
+  }
+
+  public void unsetEndDate() {
+    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __ENDDATE_ISSET_ID);
+  }
+
+  /** Returns true if field endDate is set (has been assigned a value) and false otherwise */
+  public boolean isSetEndDate() {
+    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __ENDDATE_ISSET_ID);
+  }
+
+  public void setEndDateIsSet(boolean value) {
+    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __ENDDATE_ISSET_ID, value);
+  }
+
+  public java.lang.String getStatus() {
+    return this.status;
+  }
+
+  public UserAllocationDetail setStatus(java.lang.String status) {
+    this.status = status;
+    return this;
+  }
+
+  public void unsetStatus() {
+    this.status = null;
+  }
+
+  /** Returns true if field status is set (has been assigned a value) and false otherwise */
+  public boolean isSetStatus() {
+    return this.status != null;
+  }
+
+  public void setStatusIsSet(boolean value) {
+    if (!value) {
+      this.status = null;
+    }
+  }
+
   public void setFieldValue(_Fields field, java.lang.Object value) {
     switch (field) {
     case ID:
@@ -817,6 +954,38 @@
       }
       break;
 
+    case AWARD_ALLOCATION:
+      if (value == null) {
+        unsetAwardAllocation();
+      } else {
+        setAwardAllocation((java.lang.Long)value);
+      }
+      break;
+
+    case START_DATE:
+      if (value == null) {
+        unsetStartDate();
+      } else {
+        setStartDate((java.lang.Long)value);
+      }
+      break;
+
+    case END_DATE:
+      if (value == null) {
+        unsetEndDate();
+      } else {
+        setEndDate((java.lang.Long)value);
+      }
+      break;
+
+    case STATUS:
+      if (value == null) {
+        unsetStatus();
+      } else {
+        setStatus((java.lang.String)value);
+      }
+      break;
+
     }
   }
 
@@ -870,6 +1039,18 @@
     case TYPICAL_SU_PER_JOB:
       return getTypicalSuPerJob();
 
+    case AWARD_ALLOCATION:
+      return getAwardAllocation();
+
+    case START_DATE:
+      return getStartDate();
+
+    case END_DATE:
+      return getEndDate();
+
+    case STATUS:
+      return getStatus();
+
     }
     throw new java.lang.IllegalStateException();
   }
@@ -913,6 +1094,14 @@
       return isSetTypeOfAllocation();
     case TYPICAL_SU_PER_JOB:
       return isSetTypicalSuPerJob();
+    case AWARD_ALLOCATION:
+      return isSetAwardAllocation();
+    case START_DATE:
+      return isSetStartDate();
+    case END_DATE:
+      return isSetEndDate();
+    case STATUS:
+      return isSetStatus();
     }
     throw new java.lang.IllegalStateException();
   }
@@ -1076,6 +1265,42 @@
         return false;
     }
 
+    boolean this_present_awardAllocation = true && this.isSetAwardAllocation();
+    boolean that_present_awardAllocation = true && that.isSetAwardAllocation();
+    if (this_present_awardAllocation || that_present_awardAllocation) {
+      if (!(this_present_awardAllocation && that_present_awardAllocation))
+        return false;
+      if (this.awardAllocation != that.awardAllocation)
+        return false;
+    }
+
+    boolean this_present_startDate = true && this.isSetStartDate();
+    boolean that_present_startDate = true && that.isSetStartDate();
+    if (this_present_startDate || that_present_startDate) {
+      if (!(this_present_startDate && that_present_startDate))
+        return false;
+      if (this.startDate != that.startDate)
+        return false;
+    }
+
+    boolean this_present_endDate = true && this.isSetEndDate();
+    boolean that_present_endDate = true && that.isSetEndDate();
+    if (this_present_endDate || that_present_endDate) {
+      if (!(this_present_endDate && that_present_endDate))
+        return false;
+      if (this.endDate != that.endDate)
+        return false;
+    }
+
+    boolean this_present_status = true && this.isSetStatus();
+    boolean that_present_status = true && that.isSetStatus();
+    if (this_present_status || that_present_status) {
+      if (!(this_present_status && that_present_status))
+        return false;
+      if (!this.status.equals(that.status))
+        return false;
+    }
+
     return true;
   }
 
@@ -1147,6 +1372,22 @@
     if (isSetTypicalSuPerJob())
       hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(typicalSuPerJob);
 
+    hashCode = hashCode * 8191 + ((isSetAwardAllocation()) ? 131071 : 524287);
+    if (isSetAwardAllocation())
+      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(awardAllocation);
+
+    hashCode = hashCode * 8191 + ((isSetStartDate()) ? 131071 : 524287);
+    if (isSetStartDate())
+      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(startDate);
+
+    hashCode = hashCode * 8191 + ((isSetEndDate()) ? 131071 : 524287);
+    if (isSetEndDate())
+      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(endDate);
+
+    hashCode = hashCode * 8191 + ((isSetStatus()) ? 131071 : 524287);
+    if (isSetStatus())
+      hashCode = hashCode * 8191 + status.hashCode();
+
     return hashCode;
   }
 
@@ -1318,6 +1559,46 @@
         return lastComparison;
       }
     }
+    lastComparison = java.lang.Boolean.valueOf(isSetAwardAllocation()).compareTo(other.isSetAwardAllocation());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetAwardAllocation()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.awardAllocation, other.awardAllocation);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = java.lang.Boolean.valueOf(isSetStartDate()).compareTo(other.isSetStartDate());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetStartDate()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.startDate, other.startDate);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = java.lang.Boolean.valueOf(isSetEndDate()).compareTo(other.isSetEndDate());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetEndDate()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.endDate, other.endDate);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = java.lang.Boolean.valueOf(isSetStatus()).compareTo(other.isSetStatus());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetStatus()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.status, other.status);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -1473,6 +1754,34 @@
       sb.append(this.typicalSuPerJob);
       first = false;
     }
+    if (isSetAwardAllocation()) {
+      if (!first) sb.append(", ");
+      sb.append("awardAllocation:");
+      sb.append(this.awardAllocation);
+      first = false;
+    }
+    if (isSetStartDate()) {
+      if (!first) sb.append(", ");
+      sb.append("startDate:");
+      sb.append(this.startDate);
+      first = false;
+    }
+    if (isSetEndDate()) {
+      if (!first) sb.append(", ");
+      sb.append("endDate:");
+      sb.append(this.endDate);
+      first = false;
+    }
+    if (isSetStatus()) {
+      if (!first) sb.append(", ");
+      sb.append("status:");
+      if (this.status == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.status);
+      }
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -1650,6 +1959,38 @@
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 17: // AWARD_ALLOCATION
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.awardAllocation = iprot.readI64();
+              struct.setAwardAllocationIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 18: // START_DATE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.startDate = iprot.readI64();
+              struct.setStartDateIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 19: // END_DATE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.endDate = iprot.readI64();
+              struct.setEndDateIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 20: // STATUS
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.status = iprot.readString();
+              struct.setStatusIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -1765,6 +2106,28 @@
         oprot.writeI64(struct.typicalSuPerJob);
         oprot.writeFieldEnd();
       }
+      if (struct.isSetAwardAllocation()) {
+        oprot.writeFieldBegin(AWARD_ALLOCATION_FIELD_DESC);
+        oprot.writeI64(struct.awardAllocation);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetStartDate()) {
+        oprot.writeFieldBegin(START_DATE_FIELD_DESC);
+        oprot.writeI64(struct.startDate);
+        oprot.writeFieldEnd();
+      }
+      if (struct.isSetEndDate()) {
+        oprot.writeFieldBegin(END_DATE_FIELD_DESC);
+        oprot.writeI64(struct.endDate);
+        oprot.writeFieldEnd();
+      }
+      if (struct.status != null) {
+        if (struct.isSetStatus()) {
+          oprot.writeFieldBegin(STATUS_FIELD_DESC);
+          oprot.writeString(struct.status);
+          oprot.writeFieldEnd();
+        }
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -1831,7 +2194,19 @@
       if (struct.isSetTypicalSuPerJob()) {
         optionals.set(15);
       }
-      oprot.writeBitSet(optionals, 16);
+      if (struct.isSetAwardAllocation()) {
+        optionals.set(16);
+      }
+      if (struct.isSetStartDate()) {
+        optionals.set(17);
+      }
+      if (struct.isSetEndDate()) {
+        optionals.set(18);
+      }
+      if (struct.isSetStatus()) {
+        optionals.set(19);
+      }
+      oprot.writeBitSet(optionals, 20);
       if (struct.isSetId()) {
         struct.id.write(oprot);
       }
@@ -1880,12 +2255,24 @@
       if (struct.isSetTypicalSuPerJob()) {
         oprot.writeI64(struct.typicalSuPerJob);
       }
+      if (struct.isSetAwardAllocation()) {
+        oprot.writeI64(struct.awardAllocation);
+      }
+      if (struct.isSetStartDate()) {
+        oprot.writeI64(struct.startDate);
+      }
+      if (struct.isSetEndDate()) {
+        oprot.writeI64(struct.endDate);
+      }
+      if (struct.isSetStatus()) {
+        oprot.writeString(struct.status);
+      }
     }
 
     @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(16);
+      java.util.BitSet incoming = iprot.readBitSet(20);
       if (incoming.get(0)) {
         struct.id = new UserAllocationDetailPK();
         struct.id.read(iprot);
@@ -1951,6 +2338,22 @@
         struct.typicalSuPerJob = iprot.readI64();
         struct.setTypicalSuPerJobIsSet(true);
       }
+      if (incoming.get(16)) {
+        struct.awardAllocation = iprot.readI64();
+        struct.setAwardAllocationIsSet(true);
+      }
+      if (incoming.get(17)) {
+        struct.startDate = iprot.readI64();
+        struct.setStartDateIsSet(true);
+      }
+      if (incoming.get(18)) {
+        struct.endDate = iprot.readI64();
+        struct.setEndDateIsSet(true);
+      }
+      if (incoming.get(19)) {
+        struct.status = iprot.readString();
+        struct.setStatusIsSet(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 1e50a0c..cb46d72 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 (0.10.0)
+ * Autogenerated by Thrift Compiler (1.0.0-dev)
  *
  * 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 (0.10.0)")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2017-12-08")
 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 6348406..03cc2f5 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 (0.10.0)
+ * Autogenerated by Thrift Compiler (1.0.0-dev)
  *
  * 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 (0.10.0)")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2017-12-08")
 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 0aec5c4..65234f8 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 (0.10.0)
+ * Autogenerated by Thrift Compiler (1.0.0-dev)
  *
  * 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 (0.10.0)")
+@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (1.0.0-dev)", date = "2017-12-08")
 public class AllocationRegistryService {
 
   public interface Iface {
@@ -1267,6 +1267,11 @@
         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);
@@ -1287,6 +1292,11 @@
         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);
@@ -1308,6 +1318,11 @@
         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);
@@ -1329,6 +1344,11 @@
         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);
@@ -1349,6 +1369,11 @@
         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);
@@ -1370,6 +1395,11 @@
         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);
@@ -1390,6 +1420,11 @@
         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);
@@ -1410,6 +1445,11 @@
         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);
@@ -1430,6 +1470,11 @@
         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);
@@ -1450,6 +1495,11 @@
         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);
@@ -1470,6 +1520,11 @@
         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);
@@ -1490,6 +1545,11 @@
         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);
@@ -1511,6 +1571,11 @@
         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);
@@ -1532,6 +1597,11 @@
         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);
@@ -1553,6 +1623,11 @@
         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);
@@ -1574,6 +1649,11 @@
         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);
@@ -1594,6 +1674,11 @@
         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);
@@ -1614,6 +1699,11 @@
         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);
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 2ace87b..7ea3180 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,59 @@
 <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><p>API method to create new allocation requests</p>
-<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_isAllocationRequestExists">Function: AllocationRegistryService.isAllocationRequestExists</h4>
+</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><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><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><p>API method to delete allocation request</p>
-<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_getAllocationRequest">Function: AllocationRegistryService.getAllocationRequest</h4>
+</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><p>API method to get an allocation Request</p>
-<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_updateAllocationRequest">Function: AllocationRegistryService.updateAllocationRequest</h4>
+</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><code>bool</code> updateAllocationRequest(<code><a href="allocation_manager_models.html#Struct_UserAllocationDetail">allocation_manager_models.UserAllocationDetail</a></code> allocDetail)
-</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><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><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><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><code>string</code> getAllocationRequestUserEmail(<code>string</code> userName)
-</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><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><code>string</code> getAllocationManagerAdminEmail(<code>string</code> userType)
-</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><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><code>string</code> getAllocationRequestUserName(<code>string</code> projectId)
-</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><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><code>void</code> updateAllocationRequestStatus(<code>string</code> projectId,
                                    <code>string</code> status)
-</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><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><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><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><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><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><p>API method to assign reviewers</p>
-<br/></div><div class="definition"><h4 id="Fn_AllocationRegistryService_updateRequestByReviewer">Function: AllocationRegistryService.updateRequestByReviewer</h4>
+</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><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><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><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><code>bool</code> isAdmin(<code>string</code> userName)
-</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><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><code>bool</code> isReviewer(<code>string</code> userName)
-</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><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><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><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><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><code><a href="allocation_manager_models.html#Struct_UserDetail">allocation_manager_models.UserDetail</a></code> getUserDetails(<code>string</code> userName)
-</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><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><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><p>API method to get all the reviews for a request</p>
-<br/></div></div></body></html>
+</pre><pre><p>API method to get all the reviews for a request</p>
+</pre><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 c1b6f47..a0f909d 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,16 +7,17 @@
 <title>Thrift module: allocation_manager_models</title></head><body>
 <div class="container-fluid">
 <h1>Thrift module: allocation_manager_models</h1>
-<p>Field to share sponsorship details</p>
+<pre><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>
 
-<br/><table class="table-bordered table-striped table-condensed"><thead><th>Module</th><th>Services</th><th>Data types</th><th>Constants</th></thead>
+</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>
 <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_RequestStatus">RequestStatus</a><br/>
+<a href="#Struct_ProjectReviewer">ProjectReviewer</a><br/>
+<a href="#Struct_ProjectReviewerEntityPK">ProjectReviewerEntityPK</a><br/>
 <a href="#Struct_UserAllocationDetail">UserAllocationDetail</a><br/>
 <a href="#Struct_UserAllocationDetailPK">UserAllocationDetailPK</a><br/>
 <a href="#Struct_UserDetail">UserDetail</a><br/>
@@ -28,11 +29,15 @@
 <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/><p>Field to share sponsorship details</p>
+</table><br/><pre><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>
 
-<br/></div><div class="definition"><h3 id="Struct_UserAllocationDetail">Struct: UserAllocationDetail</h3>
+</pre><br/></div><div class="definition"><h3 id="Struct_ProjectReviewerEntityPK">Struct: ProjectReviewerEntityPK</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>
+</table><br/></div><div class="definition"><h3 id="Struct_UserAllocationDetail">Struct: UserAllocationDetail</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_UserAllocationDetailPK">UserAllocationDetailPK</a></code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>2</td><td>applicationsToBeUsed</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
@@ -50,7 +55,11 @@
 <tr><td>14</td><td>title</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>15</td><td>typeOfAllocation</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
 <tr><td>16</td><td>typicalSuPerJob</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><p>Required allocation request details</p>
+<tr><td>17</td><td>awardAllocation</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
+<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>
 <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>
@@ -68,15 +77,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>
 
-<br/></div><div class="definition"><h3 id="Struct_RequestStatus">Struct: RequestStatus</h3>
+</pre><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>projectId</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
-<tr><td>2</td><td>awardAllocation</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-<tr><td>3</td><td>endDate</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-<tr><td>4</td><td>reviewers</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
-<tr><td>5</td><td>startDate</td><td><code>i64</code></td><td></td><td>optional</td><td></td></tr>
-<tr><td>6</td><td>status</td><td><code>string</code></td><td></td><td>optional</td><td></td></tr>
-</table><br/><p>Allocation Request status details</p>
+<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>
 <li>projectId: Unique id of the project</li>
 <li>awardAllocation: Allocation awarded</li>
 <li>endDate: End date of the request</li>
@@ -84,37 +88,37 @@
 <li>startDate: Start date of the allocation</li>
 <li>status: Status of the allocation request</li>
 
-<br/></div><div class="definition"><h3 id="Struct_UserDetail">Struct: UserDetail</h3>
+</pre><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/><p>A user should have an account with airavata to request an allocation</p>
+</table><br/><pre><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>
 
-<br/></div><div class="definition"><h3 id="Struct_Domain">Struct: Domain</h3>
+</pre><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/><p>An entity for maintaining various domains</p>
+</table><br/><pre><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>
 
-<br/></div><div class="definition"><h3 id="Struct_AllocationManagerException">Exception: AllocationManagerException</h3>
+</pre><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/><p>Exception model used in the allocation manager service</p>
+</table><br/><pre><p>Exception model used in the allocation manager service</p>
 
-<br/></div></div></body></html>
+</pre><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 2b5b3b5..8fe5a18 100644
--- a/allocation-manager/allocation-manager-docs/api-docs/index.html
+++ b/allocation-manager/allocation-manager-docs/api-docs/index.html
@@ -33,7 +33,8 @@
 <td>allocation_manager_models</td><td></td>
 <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_RequestStatus">RequestStatus</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_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_models.thrift b/allocation-manager/thrift_models/allocation_manager_models.thrift
index 8496fc9..98bf5d0 100644
--- a/allocation-manager/thrift_models/allocation_manager_models.thrift
+++ b/allocation-manager/thrift_models/allocation_manager_models.thrift
@@ -9,7 +9,10 @@
 	1:optional string projectId,
 	4:optional string username
 }
-
+struct ProjectReviewerPK{
+	1:optional string projectId,
+	4:optional string reviewer
+}
 
 /**
 * <p>Required allocation request details</p>
@@ -46,7 +49,11 @@
 13:optional string specificResourceSelection,
 14:optional string title,
 15:optional string typeOfAllocation,
-16:optional i64 typicalSuPerJob
+16:optional i64 typicalSuPerJob,
+17:optional i64 awardAllocation,
+18:optional i64 startDate,
+19:optional i64 endDate,
+20:optional string status
 }
 
 /**
@@ -58,13 +65,8 @@
 * <li>startDate: Start date of the allocation</li>
 * <li>status: Status of the allocation request</li>
 **/
-struct RequestStatus{
-1:optional string projectId,
-2:optional i64 awardAllocation,
-3:optional i64 endDate,
-4:optional string reviewers,
-5:optional i64 startDate,
-6:optional string status
+struct ProjectReviewer{
+1:optional ProjectReviewerPK id
 }
 
 /**