Adding missing thrift models
diff --git a/app/libraries/Airavata/Model/AppCatalog/AccountProvisioning/Types.php b/app/libraries/Airavata/Model/AppCatalog/AccountProvisioning/Types.php
index 541abd8..3dc1c52 100644
--- a/app/libraries/Airavata/Model/AppCatalog/AccountProvisioning/Types.php
+++ b/app/libraries/Airavata/Model/AppCatalog/AccountProvisioning/Types.php
@@ -2,7 +2,7 @@
 namespace Airavata\Model\AppCatalog\AccountProvisioning;
 
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
diff --git a/app/libraries/Airavata/Model/AppCatalog/ComputeResource/Types.php b/app/libraries/Airavata/Model/AppCatalog/ComputeResource/Types.php
new file mode 100644
index 0000000..d42d05f
--- /dev/null
+++ b/app/libraries/Airavata/Model/AppCatalog/ComputeResource/Types.php
@@ -0,0 +1,2511 @@
+<?php
+namespace Airavata\Model\AppCatalog\ComputeResource;
+
+/**
+ * Autogenerated by Thrift Compiler (0.10.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+/**
+ * * Enumeration of local resource job manager types supported by Airavata
+ * *
+ * * FORK:
+ * *  Forking of commands without any job manager
+ * *
+ * * PBS:
+ * *  Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
+ * *
+ * * SLURM:
+ * *  The Simple Linux Utility for Resource Management is a open source workload manager.
+ *  *
+ *  * UGE:
+ *  *  Univa Grid Engine, a variation of PBS implementation.
+ *  *
+ *  * LSF:
+ *  *  IBM Platform Load Sharing Facility is dominantly installed on IBM clusters.
+ * *
+ */
+final class ResourceJobManagerType {
+  const FORK = 0;
+  const PBS = 1;
+  const SLURM = 2;
+  const LSF = 3;
+  const UGE = 4;
+  const CLOUD = 5;
+  const AIRAVATA_CUSTOM = 6;
+  static public $__names = array(
+    0 => 'FORK',
+    1 => 'PBS',
+    2 => 'SLURM',
+    3 => 'LSF',
+    4 => 'UGE',
+    5 => 'CLOUD',
+    6 => 'AIRAVATA_CUSTOM',
+  );
+}
+
+/**
+ * Enumeration of resource job manager commands
+ * 
+ * SUBMISSION:
+ *  Ex: qsub, sbatch
+ * 
+ * JOBMONITORING:
+ *  Ex: qstat, squeue
+ * 
+ * DELETION:
+ *  Ex: qdel, scancel
+ * 
+ * CHECK_JOB:
+ *  Detailed Status about the Job. Ex: checkjob
+ * 
+ * SHOW_QUEUE:
+ *  List of Queued Job by the schedular. Ex: showq
+ * 
+ * SHOW_RESERVATION:
+ *  List all reservations. Ex:showres, show_res
+ * 
+ * SHOW_START:
+ *  Display the start time of the specified job. Ex: showstart
+ * 
+ */
+final class JobManagerCommand {
+  const SUBMISSION = 0;
+  const JOB_MONITORING = 1;
+  const DELETION = 2;
+  const CHECK_JOB = 3;
+  const SHOW_QUEUE = 4;
+  const SHOW_RESERVATION = 5;
+  const SHOW_START = 6;
+  static public $__names = array(
+    0 => 'SUBMISSION',
+    1 => 'JOB_MONITORING',
+    2 => 'DELETION',
+    3 => 'CHECK_JOB',
+    4 => 'SHOW_QUEUE',
+    5 => 'SHOW_RESERVATION',
+    6 => 'SHOW_START',
+  );
+}
+
+/**
+ * Enumeration of File Systems on the resource
+ * 
+ * FORK:
+ *  Forking of commands without any job manager
+ * 
+ * PBS:
+ *  Job manager supporting the Portal Batch System (PBS) protocol. Some examples include TORQUE, PBSPro, Grid Engine.
+ * 
+ * UGE:
+ *  Univa Grid Engine, a variation of PBS implementation.
+ * 
+ * SLURM:
+ *  The Simple Linux Utility for Resource Management is a open source workload manager.
+ * 
+ */
+final class FileSystems {
+  const HOME = 0;
+  const WORK = 1;
+  const LOCALTMP = 2;
+  const SCRATCH = 3;
+  const ARCHIVE = 4;
+  static public $__names = array(
+    0 => 'HOME',
+    1 => 'WORK',
+    2 => 'LOCALTMP',
+    3 => 'SCRATCH',
+    4 => 'ARCHIVE',
+  );
+}
+
+/**
+ * Enumeration of Airavata supported Job Submission Mechanisms for High Performance Computing Clusters.
+ * 
+ * SSH:
+ *  Execute remote job submission commands using via secure shell protocol.
+ * 
+ * GRAM:
+ *  Execute remote jobs via Globus GRAM service.
+ * 
+ * UNICORE:
+ *  Execute remote jobs via Unicore services
+ * 
+ */
+final class JobSubmissionProtocol {
+  const LOCAL = 0;
+  const SSH = 1;
+  const GLOBUS = 2;
+  const UNICORE = 3;
+  const CLOUD = 4;
+  const SSH_FORK = 5;
+  const LOCAL_FORK = 6;
+  static public $__names = array(
+    0 => 'LOCAL',
+    1 => 'SSH',
+    2 => 'GLOBUS',
+    3 => 'UNICORE',
+    4 => 'CLOUD',
+    5 => 'SSH_FORK',
+    6 => 'LOCAL_FORK',
+  );
+}
+
+/**
+ * Monitoring modes
+ * 
+ * POLL_JOB_MANAGER:
+ * GFac need to pull job status changes.
+ * 
+ * XSEDE_AMQP_SUBSCRIBE:
+ * Server will publish job status changes to amqp servert.
+ * 
+ * 
+ */
+final class MonitorMode {
+  const POLL_JOB_MANAGER = 0;
+  const CLOUD_JOB_MONITOR = 1;
+  const JOB_EMAIL_NOTIFICATION_MONITOR = 2;
+  const XSEDE_AMQP_SUBSCRIBE = 3;
+  const FORK = 4;
+  const LOCAL = 5;
+  static public $__names = array(
+    0 => 'POLL_JOB_MANAGER',
+    1 => 'CLOUD_JOB_MONITOR',
+    2 => 'JOB_EMAIL_NOTIFICATION_MONITOR',
+    3 => 'XSEDE_AMQP_SUBSCRIBE',
+    4 => 'FORK',
+    5 => 'LOCAL',
+  );
+}
+
+final class DMType {
+  const COMPUTE_RESOURCE = 0;
+  const STORAGE_RESOURCE = 1;
+  static public $__names = array(
+    0 => 'COMPUTE_RESOURCE',
+    1 => 'STORAGE_RESOURCE',
+  );
+}
+
+/**
+ * Provider name
+ * 
+ */
+final class ProviderName {
+  const EC2 = 0;
+  const AWSEC2 = 1;
+  const RACKSPACE = 2;
+  static public $__names = array(
+    0 => 'EC2',
+    1 => 'AWSEC2',
+    2 => 'RACKSPACE',
+  );
+}
+
+/**
+ * Resource Job Manager Information
+ * 
+ * resourceJobManagerType:
+ *  A typical HPC cluster has a single Job Manager to manage the resources.
+ * 
+ * pushMonitoringEndpoint:
+ *  If the job manager pushes out state changes to a database or bus, specify the service endpoint.
+ *   Ex: Moab Web Service, Moab MongoDB URL, AMQP (GLUE2) Broker
+ * 
+ * jobManagerBinPath:
+ *  Path to the Job Manager Installation Binary directory.
+ * 
+ * jobManagerCommands:
+ *  An enumeration of commonly used manager commands.
+ * 
+ */
+class ResourceJobManager {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $resourceJobManagerId = "DO_NOT_SET_AT_CLIENTS";
+  /**
+   * @var int
+   */
+  public $resourceJobManagerType = null;
+  /**
+   * @var string
+   */
+  public $pushMonitoringEndpoint = null;
+  /**
+   * @var string
+   */
+  public $jobManagerBinPath = null;
+  /**
+   * @var array
+   */
+  public $jobManagerCommands = null;
+  /**
+   * @var array
+   */
+  public $parallelismPrefix = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'resourceJobManagerId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'resourceJobManagerType',
+          'type' => TType::I32,
+          ),
+        3 => array(
+          'var' => 'pushMonitoringEndpoint',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'jobManagerBinPath',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'jobManagerCommands',
+          'type' => TType::MAP,
+          'ktype' => TType::I32,
+          'vtype' => TType::STRING,
+          'key' => array(
+            'type' => TType::I32,
+          ),
+          'val' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        6 => array(
+          'var' => 'parallelismPrefix',
+          'type' => TType::MAP,
+          'ktype' => TType::I32,
+          'vtype' => TType::STRING,
+          'key' => array(
+            'type' => TType::I32,
+          ),
+          'val' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['resourceJobManagerId'])) {
+        $this->resourceJobManagerId = $vals['resourceJobManagerId'];
+      }
+      if (isset($vals['resourceJobManagerType'])) {
+        $this->resourceJobManagerType = $vals['resourceJobManagerType'];
+      }
+      if (isset($vals['pushMonitoringEndpoint'])) {
+        $this->pushMonitoringEndpoint = $vals['pushMonitoringEndpoint'];
+      }
+      if (isset($vals['jobManagerBinPath'])) {
+        $this->jobManagerBinPath = $vals['jobManagerBinPath'];
+      }
+      if (isset($vals['jobManagerCommands'])) {
+        $this->jobManagerCommands = $vals['jobManagerCommands'];
+      }
+      if (isset($vals['parallelismPrefix'])) {
+        $this->parallelismPrefix = $vals['parallelismPrefix'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'ResourceJobManager';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->resourceJobManagerId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->resourceJobManagerType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->pushMonitoringEndpoint);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->jobManagerBinPath);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::MAP) {
+            $this->jobManagerCommands = array();
+            $_size0 = 0;
+            $_ktype1 = 0;
+            $_vtype2 = 0;
+            $xfer += $input->readMapBegin($_ktype1, $_vtype2, $_size0);
+            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            {
+              $key5 = 0;
+              $val6 = '';
+              $xfer += $input->readI32($key5);
+              $xfer += $input->readString($val6);
+              $this->jobManagerCommands[$key5] = $val6;
+            }
+            $xfer += $input->readMapEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::MAP) {
+            $this->parallelismPrefix = array();
+            $_size7 = 0;
+            $_ktype8 = 0;
+            $_vtype9 = 0;
+            $xfer += $input->readMapBegin($_ktype8, $_vtype9, $_size7);
+            for ($_i11 = 0; $_i11 < $_size7; ++$_i11)
+            {
+              $key12 = 0;
+              $val13 = '';
+              $xfer += $input->readI32($key12);
+              $xfer += $input->readString($val13);
+              $this->parallelismPrefix[$key12] = $val13;
+            }
+            $xfer += $input->readMapEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('ResourceJobManager');
+    if ($this->resourceJobManagerId !== null) {
+      $xfer += $output->writeFieldBegin('resourceJobManagerId', TType::STRING, 1);
+      $xfer += $output->writeString($this->resourceJobManagerId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->resourceJobManagerType !== null) {
+      $xfer += $output->writeFieldBegin('resourceJobManagerType', TType::I32, 2);
+      $xfer += $output->writeI32($this->resourceJobManagerType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->pushMonitoringEndpoint !== null) {
+      $xfer += $output->writeFieldBegin('pushMonitoringEndpoint', TType::STRING, 3);
+      $xfer += $output->writeString($this->pushMonitoringEndpoint);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->jobManagerBinPath !== null) {
+      $xfer += $output->writeFieldBegin('jobManagerBinPath', TType::STRING, 4);
+      $xfer += $output->writeString($this->jobManagerBinPath);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->jobManagerCommands !== null) {
+      if (!is_array($this->jobManagerCommands)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('jobManagerCommands', TType::MAP, 5);
+      {
+        $output->writeMapBegin(TType::I32, TType::STRING, count($this->jobManagerCommands));
+        {
+          foreach ($this->jobManagerCommands as $kiter14 => $viter15)
+          {
+            $xfer += $output->writeI32($kiter14);
+            $xfer += $output->writeString($viter15);
+          }
+        }
+        $output->writeMapEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->parallelismPrefix !== null) {
+      if (!is_array($this->parallelismPrefix)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('parallelismPrefix', TType::MAP, 6);
+      {
+        $output->writeMapBegin(TType::I32, TType::STRING, count($this->parallelismPrefix));
+        {
+          foreach ($this->parallelismPrefix as $kiter16 => $viter17)
+          {
+            $xfer += $output->writeI32($kiter16);
+            $xfer += $output->writeString($viter17);
+          }
+        }
+        $output->writeMapEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * Batch Queue Information on SuperComputers
+ * 
+ * maxRunTime:
+ *  Maximum allowed run time in hours.
+ */
+class BatchQueue {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $queueName = null;
+  /**
+   * @var string
+   */
+  public $queueDescription = null;
+  /**
+   * @var int
+   */
+  public $maxRunTime = null;
+  /**
+   * @var int
+   */
+  public $maxNodes = null;
+  /**
+   * @var int
+   */
+  public $maxProcessors = null;
+  /**
+   * @var int
+   */
+  public $maxJobsInQueue = null;
+  /**
+   * @var int
+   */
+  public $maxMemory = null;
+  /**
+   * @var int
+   */
+  public $cpuPerNode = null;
+  /**
+   * @var int
+   */
+  public $defaultNodeCount = null;
+  /**
+   * @var int
+   */
+  public $defaultCPUCount = null;
+  /**
+   * @var int
+   */
+  public $defaultWalltime = null;
+  /**
+   * @var string
+   */
+  public $queueSpecificMacros = null;
+  /**
+   * @var bool
+   */
+  public $isDefaultQueue = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'queueName',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'queueDescription',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'maxRunTime',
+          'type' => TType::I32,
+          ),
+        4 => array(
+          'var' => 'maxNodes',
+          'type' => TType::I32,
+          ),
+        5 => array(
+          'var' => 'maxProcessors',
+          'type' => TType::I32,
+          ),
+        6 => array(
+          'var' => 'maxJobsInQueue',
+          'type' => TType::I32,
+          ),
+        7 => array(
+          'var' => 'maxMemory',
+          'type' => TType::I32,
+          ),
+        8 => array(
+          'var' => 'cpuPerNode',
+          'type' => TType::I32,
+          ),
+        9 => array(
+          'var' => 'defaultNodeCount',
+          'type' => TType::I32,
+          ),
+        10 => array(
+          'var' => 'defaultCPUCount',
+          'type' => TType::I32,
+          ),
+        11 => array(
+          'var' => 'defaultWalltime',
+          'type' => TType::I32,
+          ),
+        12 => array(
+          'var' => 'queueSpecificMacros',
+          'type' => TType::STRING,
+          ),
+        13 => array(
+          'var' => 'isDefaultQueue',
+          'type' => TType::BOOL,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['queueName'])) {
+        $this->queueName = $vals['queueName'];
+      }
+      if (isset($vals['queueDescription'])) {
+        $this->queueDescription = $vals['queueDescription'];
+      }
+      if (isset($vals['maxRunTime'])) {
+        $this->maxRunTime = $vals['maxRunTime'];
+      }
+      if (isset($vals['maxNodes'])) {
+        $this->maxNodes = $vals['maxNodes'];
+      }
+      if (isset($vals['maxProcessors'])) {
+        $this->maxProcessors = $vals['maxProcessors'];
+      }
+      if (isset($vals['maxJobsInQueue'])) {
+        $this->maxJobsInQueue = $vals['maxJobsInQueue'];
+      }
+      if (isset($vals['maxMemory'])) {
+        $this->maxMemory = $vals['maxMemory'];
+      }
+      if (isset($vals['cpuPerNode'])) {
+        $this->cpuPerNode = $vals['cpuPerNode'];
+      }
+      if (isset($vals['defaultNodeCount'])) {
+        $this->defaultNodeCount = $vals['defaultNodeCount'];
+      }
+      if (isset($vals['defaultCPUCount'])) {
+        $this->defaultCPUCount = $vals['defaultCPUCount'];
+      }
+      if (isset($vals['defaultWalltime'])) {
+        $this->defaultWalltime = $vals['defaultWalltime'];
+      }
+      if (isset($vals['queueSpecificMacros'])) {
+        $this->queueSpecificMacros = $vals['queueSpecificMacros'];
+      }
+      if (isset($vals['isDefaultQueue'])) {
+        $this->isDefaultQueue = $vals['isDefaultQueue'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'BatchQueue';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->queueName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->queueDescription);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->maxRunTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->maxNodes);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->maxProcessors);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->maxJobsInQueue);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->maxMemory);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->cpuPerNode);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->defaultNodeCount);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 10:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->defaultCPUCount);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 11:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->defaultWalltime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 12:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->queueSpecificMacros);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 13:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->isDefaultQueue);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('BatchQueue');
+    if ($this->queueName !== null) {
+      $xfer += $output->writeFieldBegin('queueName', TType::STRING, 1);
+      $xfer += $output->writeString($this->queueName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->queueDescription !== null) {
+      $xfer += $output->writeFieldBegin('queueDescription', TType::STRING, 2);
+      $xfer += $output->writeString($this->queueDescription);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->maxRunTime !== null) {
+      $xfer += $output->writeFieldBegin('maxRunTime', TType::I32, 3);
+      $xfer += $output->writeI32($this->maxRunTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->maxNodes !== null) {
+      $xfer += $output->writeFieldBegin('maxNodes', TType::I32, 4);
+      $xfer += $output->writeI32($this->maxNodes);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->maxProcessors !== null) {
+      $xfer += $output->writeFieldBegin('maxProcessors', TType::I32, 5);
+      $xfer += $output->writeI32($this->maxProcessors);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->maxJobsInQueue !== null) {
+      $xfer += $output->writeFieldBegin('maxJobsInQueue', TType::I32, 6);
+      $xfer += $output->writeI32($this->maxJobsInQueue);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->maxMemory !== null) {
+      $xfer += $output->writeFieldBegin('maxMemory', TType::I32, 7);
+      $xfer += $output->writeI32($this->maxMemory);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->cpuPerNode !== null) {
+      $xfer += $output->writeFieldBegin('cpuPerNode', TType::I32, 8);
+      $xfer += $output->writeI32($this->cpuPerNode);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->defaultNodeCount !== null) {
+      $xfer += $output->writeFieldBegin('defaultNodeCount', TType::I32, 9);
+      $xfer += $output->writeI32($this->defaultNodeCount);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->defaultCPUCount !== null) {
+      $xfer += $output->writeFieldBegin('defaultCPUCount', TType::I32, 10);
+      $xfer += $output->writeI32($this->defaultCPUCount);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->defaultWalltime !== null) {
+      $xfer += $output->writeFieldBegin('defaultWalltime', TType::I32, 11);
+      $xfer += $output->writeI32($this->defaultWalltime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->queueSpecificMacros !== null) {
+      $xfer += $output->writeFieldBegin('queueSpecificMacros', TType::STRING, 12);
+      $xfer += $output->writeString($this->queueSpecificMacros);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->isDefaultQueue !== null) {
+      $xfer += $output->writeFieldBegin('isDefaultQueue', TType::BOOL, 13);
+      $xfer += $output->writeBool($this->isDefaultQueue);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * Locally Fork Jobs as OS processes
+ * 
+ * alternativeSSHHostName:
+ *  If the login to ssh is different than the hostname itself, specify it here
+ * 
+ * sshPort:
+ *  If a non-default port needs to used, specify it.
+ */
+class LOCALSubmission {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $jobSubmissionInterfaceId = "DO_NOT_SET_AT_CLIENTS";
+  /**
+   * @var \Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager
+   */
+  public $resourceJobManager = null;
+  /**
+   * @var int
+   */
+  public $securityProtocol = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'jobSubmissionInterfaceId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'resourceJobManager',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager',
+          ),
+        3 => array(
+          'var' => 'securityProtocol',
+          'type' => TType::I32,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['jobSubmissionInterfaceId'])) {
+        $this->jobSubmissionInterfaceId = $vals['jobSubmissionInterfaceId'];
+      }
+      if (isset($vals['resourceJobManager'])) {
+        $this->resourceJobManager = $vals['resourceJobManager'];
+      }
+      if (isset($vals['securityProtocol'])) {
+        $this->securityProtocol = $vals['securityProtocol'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'LOCALSubmission';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->jobSubmissionInterfaceId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->resourceJobManager = new \Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager();
+            $xfer += $this->resourceJobManager->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->securityProtocol);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('LOCALSubmission');
+    if ($this->jobSubmissionInterfaceId !== null) {
+      $xfer += $output->writeFieldBegin('jobSubmissionInterfaceId', TType::STRING, 1);
+      $xfer += $output->writeString($this->jobSubmissionInterfaceId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->resourceJobManager !== null) {
+      if (!is_object($this->resourceJobManager)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('resourceJobManager', TType::STRUCT, 2);
+      $xfer += $this->resourceJobManager->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->securityProtocol !== null) {
+      $xfer += $output->writeFieldBegin('securityProtocol', TType::I32, 3);
+      $xfer += $output->writeI32($this->securityProtocol);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * Authenticate using Secured Shell
+ * 
+ * alternativeSSHHostName:
+ *  If the login to ssh is different than the hostname itself, specify it here
+ * 
+ * sshPort:
+ *  If a non-default port needs to used, specify it.
+ * 
+ * batchQueueEmailSenders:
+ *  If a resource always sends the monitoring from a specific address, specify the
+ *   full email address. If a resource sends emails from multiple addresses (
+ *    example: based on the submitted login node) then use the wildchar * to indicate
+ *    the same. Example: *@*.example.com or *@example.com
+ * 
+ */
+class SSHJobSubmission {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $jobSubmissionInterfaceId = "DO_NOT_SET_AT_CLIENTS";
+  /**
+   * @var int
+   */
+  public $securityProtocol = null;
+  /**
+   * @var \Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager
+   */
+  public $resourceJobManager = null;
+  /**
+   * @var string
+   */
+  public $alternativeSSHHostName = null;
+  /**
+   * @var int
+   */
+  public $sshPort = 22;
+  /**
+   * @var int
+   */
+  public $monitorMode = null;
+  /**
+   * @var string[]
+   */
+  public $batchQueueEmailSenders = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'jobSubmissionInterfaceId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'securityProtocol',
+          'type' => TType::I32,
+          ),
+        3 => array(
+          'var' => 'resourceJobManager',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager',
+          ),
+        4 => array(
+          'var' => 'alternativeSSHHostName',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'sshPort',
+          'type' => TType::I32,
+          ),
+        6 => array(
+          'var' => 'monitorMode',
+          'type' => TType::I32,
+          ),
+        7 => array(
+          'var' => 'batchQueueEmailSenders',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['jobSubmissionInterfaceId'])) {
+        $this->jobSubmissionInterfaceId = $vals['jobSubmissionInterfaceId'];
+      }
+      if (isset($vals['securityProtocol'])) {
+        $this->securityProtocol = $vals['securityProtocol'];
+      }
+      if (isset($vals['resourceJobManager'])) {
+        $this->resourceJobManager = $vals['resourceJobManager'];
+      }
+      if (isset($vals['alternativeSSHHostName'])) {
+        $this->alternativeSSHHostName = $vals['alternativeSSHHostName'];
+      }
+      if (isset($vals['sshPort'])) {
+        $this->sshPort = $vals['sshPort'];
+      }
+      if (isset($vals['monitorMode'])) {
+        $this->monitorMode = $vals['monitorMode'];
+      }
+      if (isset($vals['batchQueueEmailSenders'])) {
+        $this->batchQueueEmailSenders = $vals['batchQueueEmailSenders'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'SSHJobSubmission';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->jobSubmissionInterfaceId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->securityProtocol);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRUCT) {
+            $this->resourceJobManager = new \Airavata\Model\AppCatalog\ComputeResource\ResourceJobManager();
+            $xfer += $this->resourceJobManager->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->alternativeSSHHostName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->sshPort);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->monitorMode);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::LST) {
+            $this->batchQueueEmailSenders = array();
+            $_size18 = 0;
+            $_etype21 = 0;
+            $xfer += $input->readListBegin($_etype21, $_size18);
+            for ($_i22 = 0; $_i22 < $_size18; ++$_i22)
+            {
+              $elem23 = null;
+              $xfer += $input->readString($elem23);
+              $this->batchQueueEmailSenders []= $elem23;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('SSHJobSubmission');
+    if ($this->jobSubmissionInterfaceId !== null) {
+      $xfer += $output->writeFieldBegin('jobSubmissionInterfaceId', TType::STRING, 1);
+      $xfer += $output->writeString($this->jobSubmissionInterfaceId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->securityProtocol !== null) {
+      $xfer += $output->writeFieldBegin('securityProtocol', TType::I32, 2);
+      $xfer += $output->writeI32($this->securityProtocol);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->resourceJobManager !== null) {
+      if (!is_object($this->resourceJobManager)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('resourceJobManager', TType::STRUCT, 3);
+      $xfer += $this->resourceJobManager->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->alternativeSSHHostName !== null) {
+      $xfer += $output->writeFieldBegin('alternativeSSHHostName', TType::STRING, 4);
+      $xfer += $output->writeString($this->alternativeSSHHostName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->sshPort !== null) {
+      $xfer += $output->writeFieldBegin('sshPort', TType::I32, 5);
+      $xfer += $output->writeI32($this->sshPort);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->monitorMode !== null) {
+      $xfer += $output->writeFieldBegin('monitorMode', TType::I32, 6);
+      $xfer += $output->writeI32($this->monitorMode);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->batchQueueEmailSenders !== null) {
+      if (!is_array($this->batchQueueEmailSenders)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('batchQueueEmailSenders', TType::LST, 7);
+      {
+        $output->writeListBegin(TType::STRING, count($this->batchQueueEmailSenders));
+        {
+          foreach ($this->batchQueueEmailSenders as $iter24)
+          {
+            $xfer += $output->writeString($iter24);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GlobusJobSubmission {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $jobSubmissionInterfaceId = "DO_NOT_SET_AT_CLIENTS";
+  /**
+   * @var int
+   */
+  public $securityProtocol = null;
+  /**
+   * @var string[]
+   */
+  public $globusGateKeeperEndPoint = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'jobSubmissionInterfaceId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'securityProtocol',
+          'type' => TType::I32,
+          ),
+        3 => array(
+          'var' => 'globusGateKeeperEndPoint',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['jobSubmissionInterfaceId'])) {
+        $this->jobSubmissionInterfaceId = $vals['jobSubmissionInterfaceId'];
+      }
+      if (isset($vals['securityProtocol'])) {
+        $this->securityProtocol = $vals['securityProtocol'];
+      }
+      if (isset($vals['globusGateKeeperEndPoint'])) {
+        $this->globusGateKeeperEndPoint = $vals['globusGateKeeperEndPoint'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GlobusJobSubmission';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->jobSubmissionInterfaceId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->securityProtocol);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::LST) {
+            $this->globusGateKeeperEndPoint = array();
+            $_size25 = 0;
+            $_etype28 = 0;
+            $xfer += $input->readListBegin($_etype28, $_size25);
+            for ($_i29 = 0; $_i29 < $_size25; ++$_i29)
+            {
+              $elem30 = null;
+              $xfer += $input->readString($elem30);
+              $this->globusGateKeeperEndPoint []= $elem30;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GlobusJobSubmission');
+    if ($this->jobSubmissionInterfaceId !== null) {
+      $xfer += $output->writeFieldBegin('jobSubmissionInterfaceId', TType::STRING, 1);
+      $xfer += $output->writeString($this->jobSubmissionInterfaceId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->securityProtocol !== null) {
+      $xfer += $output->writeFieldBegin('securityProtocol', TType::I32, 2);
+      $xfer += $output->writeI32($this->securityProtocol);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->globusGateKeeperEndPoint !== null) {
+      if (!is_array($this->globusGateKeeperEndPoint)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('globusGateKeeperEndPoint', TType::LST, 3);
+      {
+        $output->writeListBegin(TType::STRING, count($this->globusGateKeeperEndPoint));
+        {
+          foreach ($this->globusGateKeeperEndPoint as $iter31)
+          {
+            $xfer += $output->writeString($iter31);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * Unicore Job Submission
+ * 
+ * unicoreEndPointURL:
+ *  unicoreGateway End Point. The provider will query this service to fetch required service end points.
+ * authenticationMode
+ *  The authenticationMode defines the way certificate is fetched.
+ */
+class UnicoreJobSubmission {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $jobSubmissionInterfaceId = "DO_NOT_SET_AT_CLIENTS";
+  /**
+   * @var int
+   */
+  public $securityProtocol = null;
+  /**
+   * @var string
+   */
+  public $unicoreEndPointURL = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'jobSubmissionInterfaceId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'securityProtocol',
+          'type' => TType::I32,
+          ),
+        3 => array(
+          'var' => 'unicoreEndPointURL',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['jobSubmissionInterfaceId'])) {
+        $this->jobSubmissionInterfaceId = $vals['jobSubmissionInterfaceId'];
+      }
+      if (isset($vals['securityProtocol'])) {
+        $this->securityProtocol = $vals['securityProtocol'];
+      }
+      if (isset($vals['unicoreEndPointURL'])) {
+        $this->unicoreEndPointURL = $vals['unicoreEndPointURL'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'UnicoreJobSubmission';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->jobSubmissionInterfaceId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->securityProtocol);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->unicoreEndPointURL);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('UnicoreJobSubmission');
+    if ($this->jobSubmissionInterfaceId !== null) {
+      $xfer += $output->writeFieldBegin('jobSubmissionInterfaceId', TType::STRING, 1);
+      $xfer += $output->writeString($this->jobSubmissionInterfaceId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->securityProtocol !== null) {
+      $xfer += $output->writeFieldBegin('securityProtocol', TType::I32, 2);
+      $xfer += $output->writeI32($this->securityProtocol);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->unicoreEndPointURL !== null) {
+      $xfer += $output->writeFieldBegin('unicoreEndPointURL', TType::STRING, 3);
+      $xfer += $output->writeString($this->unicoreEndPointURL);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * Cloud Job Submission
+ * 
+ * 
+ */
+class CloudJobSubmission {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $jobSubmissionInterfaceId = "DO_NOT_SET_AT_CLIENTS";
+  /**
+   * @var int
+   */
+  public $securityProtocol = null;
+  /**
+   * @var string
+   */
+  public $nodeId = null;
+  /**
+   * @var string
+   */
+  public $executableType = null;
+  /**
+   * @var int
+   */
+  public $providerName = null;
+  /**
+   * @var string
+   */
+  public $userAccountName = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'jobSubmissionInterfaceId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'securityProtocol',
+          'type' => TType::I32,
+          ),
+        3 => array(
+          'var' => 'nodeId',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'executableType',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'providerName',
+          'type' => TType::I32,
+          ),
+        6 => array(
+          'var' => 'userAccountName',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['jobSubmissionInterfaceId'])) {
+        $this->jobSubmissionInterfaceId = $vals['jobSubmissionInterfaceId'];
+      }
+      if (isset($vals['securityProtocol'])) {
+        $this->securityProtocol = $vals['securityProtocol'];
+      }
+      if (isset($vals['nodeId'])) {
+        $this->nodeId = $vals['nodeId'];
+      }
+      if (isset($vals['executableType'])) {
+        $this->executableType = $vals['executableType'];
+      }
+      if (isset($vals['providerName'])) {
+        $this->providerName = $vals['providerName'];
+      }
+      if (isset($vals['userAccountName'])) {
+        $this->userAccountName = $vals['userAccountName'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'CloudJobSubmission';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->jobSubmissionInterfaceId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->securityProtocol);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->nodeId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->executableType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->providerName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userAccountName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('CloudJobSubmission');
+    if ($this->jobSubmissionInterfaceId !== null) {
+      $xfer += $output->writeFieldBegin('jobSubmissionInterfaceId', TType::STRING, 1);
+      $xfer += $output->writeString($this->jobSubmissionInterfaceId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->securityProtocol !== null) {
+      $xfer += $output->writeFieldBegin('securityProtocol', TType::I32, 2);
+      $xfer += $output->writeI32($this->securityProtocol);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->nodeId !== null) {
+      $xfer += $output->writeFieldBegin('nodeId', TType::STRING, 3);
+      $xfer += $output->writeString($this->nodeId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->executableType !== null) {
+      $xfer += $output->writeFieldBegin('executableType', TType::STRING, 4);
+      $xfer += $output->writeString($this->executableType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->providerName !== null) {
+      $xfer += $output->writeFieldBegin('providerName', TType::I32, 5);
+      $xfer += $output->writeI32($this->providerName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userAccountName !== null) {
+      $xfer += $output->writeFieldBegin('userAccountName', TType::STRING, 6);
+      $xfer += $output->writeString($this->userAccountName);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * Job Submission Interfaces
+ * 
+ * jobSubmissionInterfaceId: The Job Submission Interface has to be previously registered and referenced here.
+ * 
+ * priorityOrder:
+ *  For resources with multiple interfaces, the priority order should be selected.
+ *   Lower the numerical number, higher the priority
+ * 
+ */
+class JobSubmissionInterface {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $jobSubmissionInterfaceId = null;
+  /**
+   * @var int
+   */
+  public $jobSubmissionProtocol = null;
+  /**
+   * @var int
+   */
+  public $priorityOrder = 0;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'jobSubmissionInterfaceId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'jobSubmissionProtocol',
+          'type' => TType::I32,
+          ),
+        3 => array(
+          'var' => 'priorityOrder',
+          'type' => TType::I32,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['jobSubmissionInterfaceId'])) {
+        $this->jobSubmissionInterfaceId = $vals['jobSubmissionInterfaceId'];
+      }
+      if (isset($vals['jobSubmissionProtocol'])) {
+        $this->jobSubmissionProtocol = $vals['jobSubmissionProtocol'];
+      }
+      if (isset($vals['priorityOrder'])) {
+        $this->priorityOrder = $vals['priorityOrder'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'JobSubmissionInterface';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->jobSubmissionInterfaceId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->jobSubmissionProtocol);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->priorityOrder);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('JobSubmissionInterface');
+    if ($this->jobSubmissionInterfaceId !== null) {
+      $xfer += $output->writeFieldBegin('jobSubmissionInterfaceId', TType::STRING, 1);
+      $xfer += $output->writeString($this->jobSubmissionInterfaceId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->jobSubmissionProtocol !== null) {
+      $xfer += $output->writeFieldBegin('jobSubmissionProtocol', TType::I32, 2);
+      $xfer += $output->writeI32($this->jobSubmissionProtocol);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->priorityOrder !== null) {
+      $xfer += $output->writeFieldBegin('priorityOrder', TType::I32, 3);
+      $xfer += $output->writeI32($this->priorityOrder);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+/**
+ * Computational Resource Description
+ * 
+ * computeResourceId: Airavata Internal Unique Identifier to distinguish Compute Resource.
+ * 
+ * hostName:
+ *   Fully Qualified Host Name.
+ * 
+ * hostAliases:
+ *   Aliases if any.
+ * 
+ * ipAddress:
+ *   IP Addresses of the Resource.
+ * 
+ * resourceDescription:
+ *  A user friendly description of the resource.
+ * 
+ * JobSubmissionProtocols:
+ *  A computational resources may have one or more ways of submitting Jobs. This structure
+ *    will hold all available mechanisms to interact with the resource.
+ *  The key is the priority
+ * 
+ * DataMovementProtocol:
+ *  Option to specify a prefered data movement mechanism of the available options.
+ * 
+ * fileSystems:
+ *  Map of file systems type and the path.
+ * 
+ */
+class ComputeResourceDescription {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $computeResourceId = "DO_NOT_SET_AT_CLIENTS";
+  /**
+   * @var string
+   */
+  public $hostName = null;
+  /**
+   * @var string[]
+   */
+  public $hostAliases = null;
+  /**
+   * @var string[]
+   */
+  public $ipAddresses = null;
+  /**
+   * @var string
+   */
+  public $resourceDescription = null;
+  /**
+   * @var bool
+   */
+  public $enabled = null;
+  /**
+   * @var \Airavata\Model\AppCatalog\ComputeResource\BatchQueue[]
+   */
+  public $batchQueues = null;
+  /**
+   * @var array
+   */
+  public $fileSystems = null;
+  /**
+   * @var \Airavata\Model\AppCatalog\ComputeResource\JobSubmissionInterface[]
+   */
+  public $jobSubmissionInterfaces = null;
+  /**
+   * @var \Airavata\Model\Data\Movement\DataMovementInterface[]
+   */
+  public $dataMovementInterfaces = null;
+  /**
+   * @var int
+   */
+  public $maxMemoryPerNode = null;
+  /**
+   * @var bool
+   */
+  public $gatewayUsageReporting = null;
+  /**
+   * @var string
+   */
+  public $gatewayUsageModuleLoadCommand = null;
+  /**
+   * @var string
+   */
+  public $gatewayUsageExecutable = null;
+  /**
+   * @var int
+   */
+  public $cpusPerNode = null;
+  /**
+   * @var int
+   */
+  public $defaultNodeCount = null;
+  /**
+   * @var int
+   */
+  public $defaultCPUCount = null;
+  /**
+   * @var int
+   */
+  public $defaultWalltime = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'computeResourceId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'hostName',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'hostAliases',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        4 => array(
+          'var' => 'ipAddresses',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        5 => array(
+          'var' => 'resourceDescription',
+          'type' => TType::STRING,
+          ),
+        6 => array(
+          'var' => 'enabled',
+          'type' => TType::BOOL,
+          ),
+        7 => array(
+          'var' => 'batchQueues',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\AppCatalog\ComputeResource\BatchQueue',
+            ),
+          ),
+        8 => array(
+          'var' => 'fileSystems',
+          'type' => TType::MAP,
+          'ktype' => TType::I32,
+          'vtype' => TType::STRING,
+          'key' => array(
+            'type' => TType::I32,
+          ),
+          'val' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        9 => array(
+          'var' => 'jobSubmissionInterfaces',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\AppCatalog\ComputeResource\JobSubmissionInterface',
+            ),
+          ),
+        10 => array(
+          'var' => 'dataMovementInterfaces',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Data\Movement\DataMovementInterface',
+            ),
+          ),
+        11 => array(
+          'var' => 'maxMemoryPerNode',
+          'type' => TType::I32,
+          ),
+        12 => array(
+          'var' => 'gatewayUsageReporting',
+          'type' => TType::BOOL,
+          ),
+        13 => array(
+          'var' => 'gatewayUsageModuleLoadCommand',
+          'type' => TType::STRING,
+          ),
+        14 => array(
+          'var' => 'gatewayUsageExecutable',
+          'type' => TType::STRING,
+          ),
+        15 => array(
+          'var' => 'cpusPerNode',
+          'type' => TType::I32,
+          ),
+        16 => array(
+          'var' => 'defaultNodeCount',
+          'type' => TType::I32,
+          ),
+        17 => array(
+          'var' => 'defaultCPUCount',
+          'type' => TType::I32,
+          ),
+        18 => array(
+          'var' => 'defaultWalltime',
+          'type' => TType::I32,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['computeResourceId'])) {
+        $this->computeResourceId = $vals['computeResourceId'];
+      }
+      if (isset($vals['hostName'])) {
+        $this->hostName = $vals['hostName'];
+      }
+      if (isset($vals['hostAliases'])) {
+        $this->hostAliases = $vals['hostAliases'];
+      }
+      if (isset($vals['ipAddresses'])) {
+        $this->ipAddresses = $vals['ipAddresses'];
+      }
+      if (isset($vals['resourceDescription'])) {
+        $this->resourceDescription = $vals['resourceDescription'];
+      }
+      if (isset($vals['enabled'])) {
+        $this->enabled = $vals['enabled'];
+      }
+      if (isset($vals['batchQueues'])) {
+        $this->batchQueues = $vals['batchQueues'];
+      }
+      if (isset($vals['fileSystems'])) {
+        $this->fileSystems = $vals['fileSystems'];
+      }
+      if (isset($vals['jobSubmissionInterfaces'])) {
+        $this->jobSubmissionInterfaces = $vals['jobSubmissionInterfaces'];
+      }
+      if (isset($vals['dataMovementInterfaces'])) {
+        $this->dataMovementInterfaces = $vals['dataMovementInterfaces'];
+      }
+      if (isset($vals['maxMemoryPerNode'])) {
+        $this->maxMemoryPerNode = $vals['maxMemoryPerNode'];
+      }
+      if (isset($vals['gatewayUsageReporting'])) {
+        $this->gatewayUsageReporting = $vals['gatewayUsageReporting'];
+      }
+      if (isset($vals['gatewayUsageModuleLoadCommand'])) {
+        $this->gatewayUsageModuleLoadCommand = $vals['gatewayUsageModuleLoadCommand'];
+      }
+      if (isset($vals['gatewayUsageExecutable'])) {
+        $this->gatewayUsageExecutable = $vals['gatewayUsageExecutable'];
+      }
+      if (isset($vals['cpusPerNode'])) {
+        $this->cpusPerNode = $vals['cpusPerNode'];
+      }
+      if (isset($vals['defaultNodeCount'])) {
+        $this->defaultNodeCount = $vals['defaultNodeCount'];
+      }
+      if (isset($vals['defaultCPUCount'])) {
+        $this->defaultCPUCount = $vals['defaultCPUCount'];
+      }
+      if (isset($vals['defaultWalltime'])) {
+        $this->defaultWalltime = $vals['defaultWalltime'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'ComputeResourceDescription';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->computeResourceId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->hostName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::LST) {
+            $this->hostAliases = array();
+            $_size32 = 0;
+            $_etype35 = 0;
+            $xfer += $input->readListBegin($_etype35, $_size32);
+            for ($_i36 = 0; $_i36 < $_size32; ++$_i36)
+            {
+              $elem37 = null;
+              $xfer += $input->readString($elem37);
+              $this->hostAliases []= $elem37;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::LST) {
+            $this->ipAddresses = array();
+            $_size38 = 0;
+            $_etype41 = 0;
+            $xfer += $input->readListBegin($_etype41, $_size38);
+            for ($_i42 = 0; $_i42 < $_size38; ++$_i42)
+            {
+              $elem43 = null;
+              $xfer += $input->readString($elem43);
+              $this->ipAddresses []= $elem43;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->resourceDescription);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->enabled);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::LST) {
+            $this->batchQueues = array();
+            $_size44 = 0;
+            $_etype47 = 0;
+            $xfer += $input->readListBegin($_etype47, $_size44);
+            for ($_i48 = 0; $_i48 < $_size44; ++$_i48)
+            {
+              $elem49 = null;
+              $elem49 = new \Airavata\Model\AppCatalog\ComputeResource\BatchQueue();
+              $xfer += $elem49->read($input);
+              $this->batchQueues []= $elem49;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::MAP) {
+            $this->fileSystems = array();
+            $_size50 = 0;
+            $_ktype51 = 0;
+            $_vtype52 = 0;
+            $xfer += $input->readMapBegin($_ktype51, $_vtype52, $_size50);
+            for ($_i54 = 0; $_i54 < $_size50; ++$_i54)
+            {
+              $key55 = 0;
+              $val56 = '';
+              $xfer += $input->readI32($key55);
+              $xfer += $input->readString($val56);
+              $this->fileSystems[$key55] = $val56;
+            }
+            $xfer += $input->readMapEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::LST) {
+            $this->jobSubmissionInterfaces = array();
+            $_size57 = 0;
+            $_etype60 = 0;
+            $xfer += $input->readListBegin($_etype60, $_size57);
+            for ($_i61 = 0; $_i61 < $_size57; ++$_i61)
+            {
+              $elem62 = null;
+              $elem62 = new \Airavata\Model\AppCatalog\ComputeResource\JobSubmissionInterface();
+              $xfer += $elem62->read($input);
+              $this->jobSubmissionInterfaces []= $elem62;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 10:
+          if ($ftype == TType::LST) {
+            $this->dataMovementInterfaces = array();
+            $_size63 = 0;
+            $_etype66 = 0;
+            $xfer += $input->readListBegin($_etype66, $_size63);
+            for ($_i67 = 0; $_i67 < $_size63; ++$_i67)
+            {
+              $elem68 = null;
+              $elem68 = new \Airavata\Model\Data\Movement\DataMovementInterface();
+              $xfer += $elem68->read($input);
+              $this->dataMovementInterfaces []= $elem68;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 11:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->maxMemoryPerNode);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 12:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->gatewayUsageReporting);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 13:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayUsageModuleLoadCommand);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 14:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayUsageExecutable);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 15:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->cpusPerNode);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 16:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->defaultNodeCount);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 17:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->defaultCPUCount);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 18:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->defaultWalltime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('ComputeResourceDescription');
+    if ($this->computeResourceId !== null) {
+      $xfer += $output->writeFieldBegin('computeResourceId', TType::STRING, 1);
+      $xfer += $output->writeString($this->computeResourceId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->hostName !== null) {
+      $xfer += $output->writeFieldBegin('hostName', TType::STRING, 2);
+      $xfer += $output->writeString($this->hostName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->hostAliases !== null) {
+      if (!is_array($this->hostAliases)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('hostAliases', TType::LST, 3);
+      {
+        $output->writeListBegin(TType::STRING, count($this->hostAliases));
+        {
+          foreach ($this->hostAliases as $iter69)
+          {
+            $xfer += $output->writeString($iter69);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ipAddresses !== null) {
+      if (!is_array($this->ipAddresses)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('ipAddresses', TType::LST, 4);
+      {
+        $output->writeListBegin(TType::STRING, count($this->ipAddresses));
+        {
+          foreach ($this->ipAddresses as $iter70)
+          {
+            $xfer += $output->writeString($iter70);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->resourceDescription !== null) {
+      $xfer += $output->writeFieldBegin('resourceDescription', TType::STRING, 5);
+      $xfer += $output->writeString($this->resourceDescription);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->enabled !== null) {
+      $xfer += $output->writeFieldBegin('enabled', TType::BOOL, 6);
+      $xfer += $output->writeBool($this->enabled);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->batchQueues !== null) {
+      if (!is_array($this->batchQueues)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('batchQueues', TType::LST, 7);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->batchQueues));
+        {
+          foreach ($this->batchQueues as $iter71)
+          {
+            $xfer += $iter71->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->fileSystems !== null) {
+      if (!is_array($this->fileSystems)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('fileSystems', TType::MAP, 8);
+      {
+        $output->writeMapBegin(TType::I32, TType::STRING, count($this->fileSystems));
+        {
+          foreach ($this->fileSystems as $kiter72 => $viter73)
+          {
+            $xfer += $output->writeI32($kiter72);
+            $xfer += $output->writeString($viter73);
+          }
+        }
+        $output->writeMapEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->jobSubmissionInterfaces !== null) {
+      if (!is_array($this->jobSubmissionInterfaces)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('jobSubmissionInterfaces', TType::LST, 9);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->jobSubmissionInterfaces));
+        {
+          foreach ($this->jobSubmissionInterfaces as $iter74)
+          {
+            $xfer += $iter74->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->dataMovementInterfaces !== null) {
+      if (!is_array($this->dataMovementInterfaces)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('dataMovementInterfaces', TType::LST, 10);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->dataMovementInterfaces));
+        {
+          foreach ($this->dataMovementInterfaces as $iter75)
+          {
+            $xfer += $iter75->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->maxMemoryPerNode !== null) {
+      $xfer += $output->writeFieldBegin('maxMemoryPerNode', TType::I32, 11);
+      $xfer += $output->writeI32($this->maxMemoryPerNode);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gatewayUsageReporting !== null) {
+      $xfer += $output->writeFieldBegin('gatewayUsageReporting', TType::BOOL, 12);
+      $xfer += $output->writeBool($this->gatewayUsageReporting);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gatewayUsageModuleLoadCommand !== null) {
+      $xfer += $output->writeFieldBegin('gatewayUsageModuleLoadCommand', TType::STRING, 13);
+      $xfer += $output->writeString($this->gatewayUsageModuleLoadCommand);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gatewayUsageExecutable !== null) {
+      $xfer += $output->writeFieldBegin('gatewayUsageExecutable', TType::STRING, 14);
+      $xfer += $output->writeString($this->gatewayUsageExecutable);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->cpusPerNode !== null) {
+      $xfer += $output->writeFieldBegin('cpusPerNode', TType::I32, 15);
+      $xfer += $output->writeI32($this->cpusPerNode);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->defaultNodeCount !== null) {
+      $xfer += $output->writeFieldBegin('defaultNodeCount', TType::I32, 16);
+      $xfer += $output->writeI32($this->defaultNodeCount);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->defaultCPUCount !== null) {
+      $xfer += $output->writeFieldBegin('defaultCPUCount', TType::I32, 17);
+      $xfer += $output->writeI32($this->defaultCPUCount);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->defaultWalltime !== null) {
+      $xfer += $output->writeFieldBegin('defaultWalltime', TType::I32, 18);
+      $xfer += $output->writeI32($this->defaultWalltime);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+
diff --git a/app/libraries/Airavata/Model/AppCatalog/StorageResource/Types.php b/app/libraries/Airavata/Model/AppCatalog/StorageResource/Types.php
index 93df378..ed1a4f8 100644
--- a/app/libraries/Airavata/Model/AppCatalog/StorageResource/Types.php
+++ b/app/libraries/Airavata/Model/AppCatalog/StorageResource/Types.php
@@ -2,7 +2,7 @@
 namespace Airavata\Model\AppCatalog\StorageResource;
 
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
diff --git a/app/libraries/Airavata/Model/AppCatalog/UserResourceProfile/Types.php b/app/libraries/Airavata/Model/AppCatalog/UserResourceProfile/Types.php
index c4a0a9c..a35a7f8 100644
--- a/app/libraries/Airavata/Model/AppCatalog/UserResourceProfile/Types.php
+++ b/app/libraries/Airavata/Model/AppCatalog/UserResourceProfile/Types.php
@@ -2,7 +2,7 @@
 namespace Airavata\Model\AppCatalog\UserResourceProfile;
 
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
diff --git a/app/libraries/Airavata/Model/Application/Io/Types.php b/app/libraries/Airavata/Model/Application/Io/Types.php
index b8bdf76..c417a5b 100644
--- a/app/libraries/Airavata/Model/Application/Io/Types.php
+++ b/app/libraries/Airavata/Model/Application/Io/Types.php
@@ -2,7 +2,7 @@
 namespace Airavata\Model\Application\Io;
 
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
diff --git a/app/libraries/Airavata/Model/Credential/Store/Types.php b/app/libraries/Airavata/Model/Credential/Store/Types.php
index 861403d..625b8c7 100644
--- a/app/libraries/Airavata/Model/Credential/Store/Types.php
+++ b/app/libraries/Airavata/Model/Credential/Store/Types.php
@@ -2,7 +2,7 @@
 namespace Airavata\Model\Credential\Store;
 
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
diff --git a/app/libraries/Airavata/Model/Experiment/Types.php b/app/libraries/Airavata/Model/Experiment/Types.php
index f015ff4..7719ea7 100644
--- a/app/libraries/Airavata/Model/Experiment/Types.php
+++ b/app/libraries/Airavata/Model/Experiment/Types.php
@@ -2,7 +2,7 @@
 namespace Airavata\Model\Experiment;
 
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
diff --git a/app/libraries/Airavata/Model/Scheduling/Types.php b/app/libraries/Airavata/Model/Scheduling/Types.php
index 9eb8ebb..2e556a4 100644
--- a/app/libraries/Airavata/Model/Scheduling/Types.php
+++ b/app/libraries/Airavata/Model/Scheduling/Types.php
@@ -2,7 +2,7 @@
 namespace Airavata\Model\Scheduling;
 
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
diff --git a/app/libraries/Airavata/Model/Workflow/Types.php b/app/libraries/Airavata/Model/Workflow/Types.php
deleted file mode 100644
index e9cc2c4..0000000
--- a/app/libraries/Airavata/Model/Workflow/Types.php
+++ /dev/null
@@ -1,2518 +0,0 @@
-<?php
-namespace Airavata\Model\Workflow;
-
-/**
- * Autogenerated by Thrift Compiler (0.10.0)
- *
- * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
- *  @generated
- */
-use Thrift\Base\TBase;
-use Thrift\Type\TType;
-use Thrift\Type\TMessageType;
-use Thrift\Exception\TException;
-use Thrift\Exception\TProtocolException;
-use Thrift\Protocol\TProtocol;
-use Thrift\Protocol\TBinaryProtocolAccelerated;
-use Thrift\Exception\TApplicationException;
-
-
-final class WorkflowState {
-  const CREATED = 0;
-  const VALIDATED = 1;
-  const SCHEDULED = 2;
-  const LAUNCHED = 3;
-  const EXECUTING = 4;
-  const PAUSING = 5;
-  const PAUSED = 6;
-  const RESTARTING = 7;
-  const CANCELING = 8;
-  const CANCELED = 9;
-  const COMPLETED = 10;
-  const FAILED = 11;
-  static public $__names = array(
-    0 => 'CREATED',
-    1 => 'VALIDATED',
-    2 => 'SCHEDULED',
-    3 => 'LAUNCHED',
-    4 => 'EXECUTING',
-    5 => 'PAUSING',
-    6 => 'PAUSED',
-    7 => 'RESTARTING',
-    8 => 'CANCELING',
-    9 => 'CANCELED',
-    10 => 'COMPLETED',
-    11 => 'FAILED',
-  );
-}
-
-final class ApplicationState {
-  const CREATED = 0;
-  const VALIDATED = 1;
-  const SCHEDULED = 2;
-  const LAUNCHED = 3;
-  const EXECUTING = 4;
-  const CANCELING = 5;
-  const CANCELED = 6;
-  const COMPLETED = 7;
-  const FAILED = 8;
-  static public $__names = array(
-    0 => 'CREATED',
-    1 => 'VALIDATED',
-    2 => 'SCHEDULED',
-    3 => 'LAUNCHED',
-    4 => 'EXECUTING',
-    5 => 'CANCELING',
-    6 => 'CANCELED',
-    7 => 'COMPLETED',
-    8 => 'FAILED',
-  );
-}
-
-final class HandlerType {
-  const FLOW_STARTER = 0;
-  const FLOW_TERMINATOR = 1;
-  const DOWHILE_LOOP = 2;
-  const FOREACH_LOOP = 3;
-  static public $__names = array(
-    0 => 'FLOW_STARTER',
-    1 => 'FLOW_TERMINATOR',
-    2 => 'DOWHILE_LOOP',
-    3 => 'FOREACH_LOOP',
-  );
-}
-
-final class HandlerState {
-  const CREATED = 0;
-  const VALIDATED = 1;
-  const SCHEDULED = 2;
-  const LAUNCHED = 3;
-  const EXECUTING = 4;
-  const CANCELING = 5;
-  const CANCELED = 6;
-  const COMPLETED = 7;
-  const FAILED = 8;
-  static public $__names = array(
-    0 => 'CREATED',
-    1 => 'VALIDATED',
-    2 => 'SCHEDULED',
-    3 => 'LAUNCHED',
-    4 => 'EXECUTING',
-    5 => 'CANCELING',
-    6 => 'CANCELED',
-    7 => 'COMPLETED',
-    8 => 'FAILED',
-  );
-}
-
-final class ComponentType {
-  const APPLICATION = 0;
-  const HANDLER = 1;
-  static public $__names = array(
-    0 => 'APPLICATION',
-    1 => 'HANDLER',
-  );
-}
-
-class WorkflowStatus {
-  static $_TSPEC;
-
-  /**
-   * @var string
-   */
-  public $id = null;
-  /**
-   * @var int
-   */
-  public $state = null;
-  /**
-   * @var string
-   */
-  public $description = null;
-  /**
-   * @var int
-   */
-  public $updatedAt = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'id',
-          'type' => TType::STRING,
-          ),
-        2 => array(
-          'var' => 'state',
-          'type' => TType::I32,
-          ),
-        3 => array(
-          'var' => 'description',
-          'type' => TType::STRING,
-          ),
-        4 => array(
-          'var' => 'updatedAt',
-          'type' => TType::I64,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['id'])) {
-        $this->id = $vals['id'];
-      }
-      if (isset($vals['state'])) {
-        $this->state = $vals['state'];
-      }
-      if (isset($vals['description'])) {
-        $this->description = $vals['description'];
-      }
-      if (isset($vals['updatedAt'])) {
-        $this->updatedAt = $vals['updatedAt'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'WorkflowStatus';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->id);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->state);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->description);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->updatedAt);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('WorkflowStatus');
-    if ($this->id !== null) {
-      $xfer += $output->writeFieldBegin('id', TType::STRING, 1);
-      $xfer += $output->writeString($this->id);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->state !== null) {
-      $xfer += $output->writeFieldBegin('state', TType::I32, 2);
-      $xfer += $output->writeI32($this->state);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->description !== null) {
-      $xfer += $output->writeFieldBegin('description', TType::STRING, 3);
-      $xfer += $output->writeString($this->description);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->updatedAt !== null) {
-      $xfer += $output->writeFieldBegin('updatedAt', TType::I64, 4);
-      $xfer += $output->writeI64($this->updatedAt);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class NotificationEmail {
-  static $_TSPEC;
-
-  /**
-   * @var string
-   */
-  public $email = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'email',
-          'type' => TType::STRING,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['email'])) {
-        $this->email = $vals['email'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'NotificationEmail';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->email);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('NotificationEmail');
-    if ($this->email !== null) {
-      $xfer += $output->writeFieldBegin('email', TType::STRING, 1);
-      $xfer += $output->writeString($this->email);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class ApplicationStatus {
-  static $_TSPEC;
-
-  /**
-   * @var string
-   */
-  public $id = null;
-  /**
-   * @var int
-   */
-  public $state = null;
-  /**
-   * @var string
-   */
-  public $description = null;
-  /**
-   * @var int
-   */
-  public $updatedAt = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'id',
-          'type' => TType::STRING,
-          ),
-        2 => array(
-          'var' => 'state',
-          'type' => TType::I32,
-          ),
-        3 => array(
-          'var' => 'description',
-          'type' => TType::STRING,
-          ),
-        4 => array(
-          'var' => 'updatedAt',
-          'type' => TType::I64,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['id'])) {
-        $this->id = $vals['id'];
-      }
-      if (isset($vals['state'])) {
-        $this->state = $vals['state'];
-      }
-      if (isset($vals['description'])) {
-        $this->description = $vals['description'];
-      }
-      if (isset($vals['updatedAt'])) {
-        $this->updatedAt = $vals['updatedAt'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'ApplicationStatus';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->id);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->state);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->description);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->updatedAt);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('ApplicationStatus');
-    if ($this->id !== null) {
-      $xfer += $output->writeFieldBegin('id', TType::STRING, 1);
-      $xfer += $output->writeString($this->id);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->state !== null) {
-      $xfer += $output->writeFieldBegin('state', TType::I32, 2);
-      $xfer += $output->writeI32($this->state);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->description !== null) {
-      $xfer += $output->writeFieldBegin('description', TType::STRING, 3);
-      $xfer += $output->writeString($this->description);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->updatedAt !== null) {
-      $xfer += $output->writeFieldBegin('updatedAt', TType::I64, 4);
-      $xfer += $output->writeI64($this->updatedAt);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class WorkflowApplication {
-  static $_TSPEC;
-
-  /**
-   * @var string
-   */
-  public $id = null;
-  /**
-   * @var bool
-   */
-  public $belongsToMainWorkflow = null;
-  /**
-   * @var string
-   */
-  public $applicationInterfaceId = null;
-  /**
-   * @var string
-   */
-  public $computeResourceId = null;
-  /**
-   * @var string
-   */
-  public $queueName = null;
-  /**
-   * @var int
-   */
-  public $nodeCount = null;
-  /**
-   * @var int
-   */
-  public $coreCount = null;
-  /**
-   * @var int
-   */
-  public $wallTimeLimit = null;
-  /**
-   * @var int
-   */
-  public $physicalMemory = null;
-  /**
-   * @var \Airavata\Model\Workflow\ApplicationStatus[]
-   */
-  public $statuses = null;
-  /**
-   * @var \Airavata\Model\Commons\ErrorModel[]
-   */
-  public $errors = null;
-  /**
-   * @var int
-   */
-  public $createdAt = null;
-  /**
-   * @var int
-   */
-  public $updatedAt = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'id',
-          'type' => TType::STRING,
-          ),
-        2 => array(
-          'var' => 'belongsToMainWorkflow',
-          'type' => TType::BOOL,
-          ),
-        3 => array(
-          'var' => 'applicationInterfaceId',
-          'type' => TType::STRING,
-          ),
-        4 => array(
-          'var' => 'computeResourceId',
-          'type' => TType::STRING,
-          ),
-        5 => array(
-          'var' => 'queueName',
-          'type' => TType::STRING,
-          ),
-        6 => array(
-          'var' => 'nodeCount',
-          'type' => TType::I32,
-          ),
-        7 => array(
-          'var' => 'coreCount',
-          'type' => TType::I32,
-          ),
-        8 => array(
-          'var' => 'wallTimeLimit',
-          'type' => TType::I32,
-          ),
-        9 => array(
-          'var' => 'physicalMemory',
-          'type' => TType::I32,
-          ),
-        10 => array(
-          'var' => 'statuses',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workflow\ApplicationStatus',
-            ),
-          ),
-        11 => array(
-          'var' => 'errors',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Commons\ErrorModel',
-            ),
-          ),
-        12 => array(
-          'var' => 'createdAt',
-          'type' => TType::I64,
-          ),
-        13 => array(
-          'var' => 'updatedAt',
-          'type' => TType::I64,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['id'])) {
-        $this->id = $vals['id'];
-      }
-      if (isset($vals['belongsToMainWorkflow'])) {
-        $this->belongsToMainWorkflow = $vals['belongsToMainWorkflow'];
-      }
-      if (isset($vals['applicationInterfaceId'])) {
-        $this->applicationInterfaceId = $vals['applicationInterfaceId'];
-      }
-      if (isset($vals['computeResourceId'])) {
-        $this->computeResourceId = $vals['computeResourceId'];
-      }
-      if (isset($vals['queueName'])) {
-        $this->queueName = $vals['queueName'];
-      }
-      if (isset($vals['nodeCount'])) {
-        $this->nodeCount = $vals['nodeCount'];
-      }
-      if (isset($vals['coreCount'])) {
-        $this->coreCount = $vals['coreCount'];
-      }
-      if (isset($vals['wallTimeLimit'])) {
-        $this->wallTimeLimit = $vals['wallTimeLimit'];
-      }
-      if (isset($vals['physicalMemory'])) {
-        $this->physicalMemory = $vals['physicalMemory'];
-      }
-      if (isset($vals['statuses'])) {
-        $this->statuses = $vals['statuses'];
-      }
-      if (isset($vals['errors'])) {
-        $this->errors = $vals['errors'];
-      }
-      if (isset($vals['createdAt'])) {
-        $this->createdAt = $vals['createdAt'];
-      }
-      if (isset($vals['updatedAt'])) {
-        $this->updatedAt = $vals['updatedAt'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'WorkflowApplication';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->id);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->belongsToMainWorkflow);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->applicationInterfaceId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->computeResourceId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 5:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->queueName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 6:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->nodeCount);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 7:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->coreCount);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 8:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->wallTimeLimit);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 9:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->physicalMemory);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 10:
-          if ($ftype == TType::LST) {
-            $this->statuses = array();
-            $_size0 = 0;
-            $_etype3 = 0;
-            $xfer += $input->readListBegin($_etype3, $_size0);
-            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
-            {
-              $elem5 = null;
-              $elem5 = new \Airavata\Model\Workflow\ApplicationStatus();
-              $xfer += $elem5->read($input);
-              $this->statuses []= $elem5;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 11:
-          if ($ftype == TType::LST) {
-            $this->errors = array();
-            $_size6 = 0;
-            $_etype9 = 0;
-            $xfer += $input->readListBegin($_etype9, $_size6);
-            for ($_i10 = 0; $_i10 < $_size6; ++$_i10)
-            {
-              $elem11 = null;
-              $elem11 = new \Airavata\Model\Commons\ErrorModel();
-              $xfer += $elem11->read($input);
-              $this->errors []= $elem11;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 12:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->createdAt);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 13:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->updatedAt);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('WorkflowApplication');
-    if ($this->id !== null) {
-      $xfer += $output->writeFieldBegin('id', TType::STRING, 1);
-      $xfer += $output->writeString($this->id);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->belongsToMainWorkflow !== null) {
-      $xfer += $output->writeFieldBegin('belongsToMainWorkflow', TType::BOOL, 2);
-      $xfer += $output->writeBool($this->belongsToMainWorkflow);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->applicationInterfaceId !== null) {
-      $xfer += $output->writeFieldBegin('applicationInterfaceId', TType::STRING, 3);
-      $xfer += $output->writeString($this->applicationInterfaceId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->computeResourceId !== null) {
-      $xfer += $output->writeFieldBegin('computeResourceId', TType::STRING, 4);
-      $xfer += $output->writeString($this->computeResourceId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->queueName !== null) {
-      $xfer += $output->writeFieldBegin('queueName', TType::STRING, 5);
-      $xfer += $output->writeString($this->queueName);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->nodeCount !== null) {
-      $xfer += $output->writeFieldBegin('nodeCount', TType::I32, 6);
-      $xfer += $output->writeI32($this->nodeCount);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->coreCount !== null) {
-      $xfer += $output->writeFieldBegin('coreCount', TType::I32, 7);
-      $xfer += $output->writeI32($this->coreCount);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->wallTimeLimit !== null) {
-      $xfer += $output->writeFieldBegin('wallTimeLimit', TType::I32, 8);
-      $xfer += $output->writeI32($this->wallTimeLimit);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->physicalMemory !== null) {
-      $xfer += $output->writeFieldBegin('physicalMemory', TType::I32, 9);
-      $xfer += $output->writeI32($this->physicalMemory);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->statuses !== null) {
-      if (!is_array($this->statuses)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('statuses', TType::LST, 10);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->statuses));
-        {
-          foreach ($this->statuses as $iter12)
-          {
-            $xfer += $iter12->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->errors !== null) {
-      if (!is_array($this->errors)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('errors', TType::LST, 11);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->errors));
-        {
-          foreach ($this->errors as $iter13)
-          {
-            $xfer += $iter13->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->createdAt !== null) {
-      $xfer += $output->writeFieldBegin('createdAt', TType::I64, 12);
-      $xfer += $output->writeI64($this->createdAt);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->updatedAt !== null) {
-      $xfer += $output->writeFieldBegin('updatedAt', TType::I64, 13);
-      $xfer += $output->writeI64($this->updatedAt);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class WorkflowConnection {
-  static $_TSPEC;
-
-  /**
-   * @var string
-   */
-  public $id = "DO_NOT_SET_AT_CLIENTS";
-  /**
-   * @var bool
-   */
-  public $belongsToMainWorkflow = null;
-  /**
-   * @var int
-   */
-  public $fromType = null;
-  /**
-   * @var string
-   */
-  public $fromId = null;
-  /**
-   * @var string
-   */
-  public $fromOutputName = null;
-  /**
-   * @var int
-   */
-  public $toType = null;
-  /**
-   * @var string
-   */
-  public $toId = null;
-  /**
-   * @var string
-   */
-  public $toInputName = null;
-  /**
-   * @var int
-   */
-  public $createdAt = null;
-  /**
-   * @var int
-   */
-  public $updatedAt = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'id',
-          'type' => TType::STRING,
-          ),
-        2 => array(
-          'var' => 'belongsToMainWorkflow',
-          'type' => TType::BOOL,
-          ),
-        3 => array(
-          'var' => 'fromType',
-          'type' => TType::I32,
-          ),
-        4 => array(
-          'var' => 'fromId',
-          'type' => TType::STRING,
-          ),
-        5 => array(
-          'var' => 'fromOutputName',
-          'type' => TType::STRING,
-          ),
-        6 => array(
-          'var' => 'toType',
-          'type' => TType::I32,
-          ),
-        7 => array(
-          'var' => 'toId',
-          'type' => TType::STRING,
-          ),
-        8 => array(
-          'var' => 'toInputName',
-          'type' => TType::STRING,
-          ),
-        9 => array(
-          'var' => 'createdAt',
-          'type' => TType::I64,
-          ),
-        10 => array(
-          'var' => 'updatedAt',
-          'type' => TType::I64,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['id'])) {
-        $this->id = $vals['id'];
-      }
-      if (isset($vals['belongsToMainWorkflow'])) {
-        $this->belongsToMainWorkflow = $vals['belongsToMainWorkflow'];
-      }
-      if (isset($vals['fromType'])) {
-        $this->fromType = $vals['fromType'];
-      }
-      if (isset($vals['fromId'])) {
-        $this->fromId = $vals['fromId'];
-      }
-      if (isset($vals['fromOutputName'])) {
-        $this->fromOutputName = $vals['fromOutputName'];
-      }
-      if (isset($vals['toType'])) {
-        $this->toType = $vals['toType'];
-      }
-      if (isset($vals['toId'])) {
-        $this->toId = $vals['toId'];
-      }
-      if (isset($vals['toInputName'])) {
-        $this->toInputName = $vals['toInputName'];
-      }
-      if (isset($vals['createdAt'])) {
-        $this->createdAt = $vals['createdAt'];
-      }
-      if (isset($vals['updatedAt'])) {
-        $this->updatedAt = $vals['updatedAt'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'WorkflowConnection';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->id);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->belongsToMainWorkflow);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->fromType);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->fromId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 5:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->fromOutputName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 6:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->toType);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 7:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->toId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 8:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->toInputName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 9:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->createdAt);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 10:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->updatedAt);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('WorkflowConnection');
-    if ($this->id !== null) {
-      $xfer += $output->writeFieldBegin('id', TType::STRING, 1);
-      $xfer += $output->writeString($this->id);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->belongsToMainWorkflow !== null) {
-      $xfer += $output->writeFieldBegin('belongsToMainWorkflow', TType::BOOL, 2);
-      $xfer += $output->writeBool($this->belongsToMainWorkflow);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->fromType !== null) {
-      $xfer += $output->writeFieldBegin('fromType', TType::I32, 3);
-      $xfer += $output->writeI32($this->fromType);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->fromId !== null) {
-      $xfer += $output->writeFieldBegin('fromId', TType::STRING, 4);
-      $xfer += $output->writeString($this->fromId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->fromOutputName !== null) {
-      $xfer += $output->writeFieldBegin('fromOutputName', TType::STRING, 5);
-      $xfer += $output->writeString($this->fromOutputName);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->toType !== null) {
-      $xfer += $output->writeFieldBegin('toType', TType::I32, 6);
-      $xfer += $output->writeI32($this->toType);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->toId !== null) {
-      $xfer += $output->writeFieldBegin('toId', TType::STRING, 7);
-      $xfer += $output->writeString($this->toId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->toInputName !== null) {
-      $xfer += $output->writeFieldBegin('toInputName', TType::STRING, 8);
-      $xfer += $output->writeString($this->toInputName);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->createdAt !== null) {
-      $xfer += $output->writeFieldBegin('createdAt', TType::I64, 9);
-      $xfer += $output->writeI64($this->createdAt);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->updatedAt !== null) {
-      $xfer += $output->writeFieldBegin('updatedAt', TType::I64, 10);
-      $xfer += $output->writeI64($this->updatedAt);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class HandlerStatus {
-  static $_TSPEC;
-
-  /**
-   * @var string
-   */
-  public $id = null;
-  /**
-   * @var int
-   */
-  public $state = null;
-  /**
-   * @var string
-   */
-  public $description = null;
-  /**
-   * @var int
-   */
-  public $updatedAt = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'id',
-          'type' => TType::STRING,
-          ),
-        2 => array(
-          'var' => 'state',
-          'type' => TType::I32,
-          ),
-        3 => array(
-          'var' => 'description',
-          'type' => TType::STRING,
-          ),
-        4 => array(
-          'var' => 'updatedAt',
-          'type' => TType::I64,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['id'])) {
-        $this->id = $vals['id'];
-      }
-      if (isset($vals['state'])) {
-        $this->state = $vals['state'];
-      }
-      if (isset($vals['description'])) {
-        $this->description = $vals['description'];
-      }
-      if (isset($vals['updatedAt'])) {
-        $this->updatedAt = $vals['updatedAt'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'HandlerStatus';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->id);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->state);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->description);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->updatedAt);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('HandlerStatus');
-    if ($this->id !== null) {
-      $xfer += $output->writeFieldBegin('id', TType::STRING, 1);
-      $xfer += $output->writeString($this->id);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->state !== null) {
-      $xfer += $output->writeFieldBegin('state', TType::I32, 2);
-      $xfer += $output->writeI32($this->state);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->description !== null) {
-      $xfer += $output->writeFieldBegin('description', TType::STRING, 3);
-      $xfer += $output->writeString($this->description);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->updatedAt !== null) {
-      $xfer += $output->writeFieldBegin('updatedAt', TType::I64, 4);
-      $xfer += $output->writeI64($this->updatedAt);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class DataBlock {
-  static $_TSPEC;
-
-  /**
-   * @var string
-   */
-  public $id = null;
-  /**
-   * @var string
-   */
-  public $value = null;
-  /**
-   * @var int
-   */
-  public $type = null;
-  /**
-   * @var int
-   */
-  public $createdAt = null;
-  /**
-   * @var int
-   */
-  public $updatedAt = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'id',
-          'type' => TType::STRING,
-          ),
-        2 => array(
-          'var' => 'value',
-          'type' => TType::STRING,
-          ),
-        3 => array(
-          'var' => 'type',
-          'type' => TType::I32,
-          ),
-        4 => array(
-          'var' => 'createdAt',
-          'type' => TType::I64,
-          ),
-        5 => array(
-          'var' => 'updatedAt',
-          'type' => TType::I64,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['id'])) {
-        $this->id = $vals['id'];
-      }
-      if (isset($vals['value'])) {
-        $this->value = $vals['value'];
-      }
-      if (isset($vals['type'])) {
-        $this->type = $vals['type'];
-      }
-      if (isset($vals['createdAt'])) {
-        $this->createdAt = $vals['createdAt'];
-      }
-      if (isset($vals['updatedAt'])) {
-        $this->updatedAt = $vals['updatedAt'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'DataBlock';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->id);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->value);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->type);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->createdAt);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 5:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->updatedAt);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('DataBlock');
-    if ($this->id !== null) {
-      $xfer += $output->writeFieldBegin('id', TType::STRING, 1);
-      $xfer += $output->writeString($this->id);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->value !== null) {
-      $xfer += $output->writeFieldBegin('value', TType::STRING, 2);
-      $xfer += $output->writeString($this->value);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->type !== null) {
-      $xfer += $output->writeFieldBegin('type', TType::I32, 3);
-      $xfer += $output->writeI32($this->type);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->createdAt !== null) {
-      $xfer += $output->writeFieldBegin('createdAt', TType::I64, 4);
-      $xfer += $output->writeI64($this->createdAt);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->updatedAt !== null) {
-      $xfer += $output->writeFieldBegin('updatedAt', TType::I64, 5);
-      $xfer += $output->writeI64($this->updatedAt);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class WorkflowHandler {
-  static $_TSPEC;
-
-  /**
-   * @var string
-   */
-  public $id = null;
-  /**
-   * @var bool
-   */
-  public $belongsToMainWorkflow = null;
-  /**
-   * @var int
-   */
-  public $type = null;
-  /**
-   * @var \Airavata\Model\Application\Io\InputDataObjectType[]
-   */
-  public $inputs = null;
-  /**
-   * @var \Airavata\Model\Application\Io\OutputDataObjectType[]
-   */
-  public $outputs = null;
-  /**
-   * @var \Airavata\Model\Workflow\WorkflowApplication[]
-   */
-  public $applications = null;
-  /**
-   * @var \Airavata\Model\Workflow\WorkflowConnection[]
-   */
-  public $connections = null;
-  /**
-   * @var \Airavata\Model\Workflow\HandlerStatus[]
-   */
-  public $statuses = null;
-  /**
-   * @var \Airavata\Model\Commons\ErrorModel[]
-   */
-  public $errors = null;
-  /**
-   * @var int
-   */
-  public $createdAt = null;
-  /**
-   * @var int
-   */
-  public $updatedAt = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'id',
-          'type' => TType::STRING,
-          ),
-        2 => array(
-          'var' => 'belongsToMainWorkflow',
-          'type' => TType::BOOL,
-          ),
-        3 => array(
-          'var' => 'type',
-          'type' => TType::I32,
-          ),
-        4 => array(
-          'var' => 'inputs',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Application\Io\InputDataObjectType',
-            ),
-          ),
-        5 => array(
-          'var' => 'outputs',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Application\Io\OutputDataObjectType',
-            ),
-          ),
-        6 => array(
-          'var' => 'applications',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workflow\WorkflowApplication',
-            ),
-          ),
-        7 => array(
-          'var' => 'connections',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workflow\WorkflowConnection',
-            ),
-          ),
-        8 => array(
-          'var' => 'statuses',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workflow\HandlerStatus',
-            ),
-          ),
-        9 => array(
-          'var' => 'errors',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Commons\ErrorModel',
-            ),
-          ),
-        10 => array(
-          'var' => 'createdAt',
-          'type' => TType::I64,
-          ),
-        11 => array(
-          'var' => 'updatedAt',
-          'type' => TType::I64,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['id'])) {
-        $this->id = $vals['id'];
-      }
-      if (isset($vals['belongsToMainWorkflow'])) {
-        $this->belongsToMainWorkflow = $vals['belongsToMainWorkflow'];
-      }
-      if (isset($vals['type'])) {
-        $this->type = $vals['type'];
-      }
-      if (isset($vals['inputs'])) {
-        $this->inputs = $vals['inputs'];
-      }
-      if (isset($vals['outputs'])) {
-        $this->outputs = $vals['outputs'];
-      }
-      if (isset($vals['applications'])) {
-        $this->applications = $vals['applications'];
-      }
-      if (isset($vals['connections'])) {
-        $this->connections = $vals['connections'];
-      }
-      if (isset($vals['statuses'])) {
-        $this->statuses = $vals['statuses'];
-      }
-      if (isset($vals['errors'])) {
-        $this->errors = $vals['errors'];
-      }
-      if (isset($vals['createdAt'])) {
-        $this->createdAt = $vals['createdAt'];
-      }
-      if (isset($vals['updatedAt'])) {
-        $this->updatedAt = $vals['updatedAt'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'WorkflowHandler';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->id);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->belongsToMainWorkflow);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->type);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::LST) {
-            $this->inputs = array();
-            $_size14 = 0;
-            $_etype17 = 0;
-            $xfer += $input->readListBegin($_etype17, $_size14);
-            for ($_i18 = 0; $_i18 < $_size14; ++$_i18)
-            {
-              $elem19 = null;
-              $elem19 = new \Airavata\Model\Application\Io\InputDataObjectType();
-              $xfer += $elem19->read($input);
-              $this->inputs []= $elem19;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 5:
-          if ($ftype == TType::LST) {
-            $this->outputs = array();
-            $_size20 = 0;
-            $_etype23 = 0;
-            $xfer += $input->readListBegin($_etype23, $_size20);
-            for ($_i24 = 0; $_i24 < $_size20; ++$_i24)
-            {
-              $elem25 = null;
-              $elem25 = new \Airavata\Model\Application\Io\OutputDataObjectType();
-              $xfer += $elem25->read($input);
-              $this->outputs []= $elem25;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 6:
-          if ($ftype == TType::LST) {
-            $this->applications = array();
-            $_size26 = 0;
-            $_etype29 = 0;
-            $xfer += $input->readListBegin($_etype29, $_size26);
-            for ($_i30 = 0; $_i30 < $_size26; ++$_i30)
-            {
-              $elem31 = null;
-              $elem31 = new \Airavata\Model\Workflow\WorkflowApplication();
-              $xfer += $elem31->read($input);
-              $this->applications []= $elem31;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 7:
-          if ($ftype == TType::LST) {
-            $this->connections = array();
-            $_size32 = 0;
-            $_etype35 = 0;
-            $xfer += $input->readListBegin($_etype35, $_size32);
-            for ($_i36 = 0; $_i36 < $_size32; ++$_i36)
-            {
-              $elem37 = null;
-              $elem37 = new \Airavata\Model\Workflow\WorkflowConnection();
-              $xfer += $elem37->read($input);
-              $this->connections []= $elem37;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 8:
-          if ($ftype == TType::LST) {
-            $this->statuses = array();
-            $_size38 = 0;
-            $_etype41 = 0;
-            $xfer += $input->readListBegin($_etype41, $_size38);
-            for ($_i42 = 0; $_i42 < $_size38; ++$_i42)
-            {
-              $elem43 = null;
-              $elem43 = new \Airavata\Model\Workflow\HandlerStatus();
-              $xfer += $elem43->read($input);
-              $this->statuses []= $elem43;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 9:
-          if ($ftype == TType::LST) {
-            $this->errors = array();
-            $_size44 = 0;
-            $_etype47 = 0;
-            $xfer += $input->readListBegin($_etype47, $_size44);
-            for ($_i48 = 0; $_i48 < $_size44; ++$_i48)
-            {
-              $elem49 = null;
-              $elem49 = new \Airavata\Model\Commons\ErrorModel();
-              $xfer += $elem49->read($input);
-              $this->errors []= $elem49;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 10:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->createdAt);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 11:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->updatedAt);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('WorkflowHandler');
-    if ($this->id !== null) {
-      $xfer += $output->writeFieldBegin('id', TType::STRING, 1);
-      $xfer += $output->writeString($this->id);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->belongsToMainWorkflow !== null) {
-      $xfer += $output->writeFieldBegin('belongsToMainWorkflow', TType::BOOL, 2);
-      $xfer += $output->writeBool($this->belongsToMainWorkflow);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->type !== null) {
-      $xfer += $output->writeFieldBegin('type', TType::I32, 3);
-      $xfer += $output->writeI32($this->type);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->inputs !== null) {
-      if (!is_array($this->inputs)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('inputs', TType::LST, 4);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->inputs));
-        {
-          foreach ($this->inputs as $iter50)
-          {
-            $xfer += $iter50->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->outputs !== null) {
-      if (!is_array($this->outputs)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('outputs', TType::LST, 5);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->outputs));
-        {
-          foreach ($this->outputs as $iter51)
-          {
-            $xfer += $iter51->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->applications !== null) {
-      if (!is_array($this->applications)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('applications', TType::LST, 6);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->applications));
-        {
-          foreach ($this->applications as $iter52)
-          {
-            $xfer += $iter52->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->connections !== null) {
-      if (!is_array($this->connections)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('connections', TType::LST, 7);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->connections));
-        {
-          foreach ($this->connections as $iter53)
-          {
-            $xfer += $iter53->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->statuses !== null) {
-      if (!is_array($this->statuses)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('statuses', TType::LST, 8);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->statuses));
-        {
-          foreach ($this->statuses as $iter54)
-          {
-            $xfer += $iter54->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->errors !== null) {
-      if (!is_array($this->errors)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('errors', TType::LST, 9);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->errors));
-        {
-          foreach ($this->errors as $iter55)
-          {
-            $xfer += $iter55->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->createdAt !== null) {
-      $xfer += $output->writeFieldBegin('createdAt', TType::I64, 10);
-      $xfer += $output->writeI64($this->createdAt);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->updatedAt !== null) {
-      $xfer += $output->writeFieldBegin('updatedAt', TType::I64, 11);
-      $xfer += $output->writeI64($this->updatedAt);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class AiravataWorkflow {
-  static $_TSPEC;
-
-  /**
-   * @var string
-   */
-  public $id = "DO_NOT_SET_AT_CLIENTS";
-  /**
-   * @var string
-   */
-  public $name = null;
-  /**
-   * @var string
-   */
-  public $gatewayId = null;
-  /**
-   * @var string
-   */
-  public $userName = null;
-  /**
-   * @var string
-   */
-  public $storageResourceId = null;
-  /**
-   * @var string
-   */
-  public $description = null;
-  /**
-   * @var bool
-   */
-  public $enableEmailNotification = null;
-  /**
-   * @var \Airavata\Model\Workflow\NotificationEmail[]
-   */
-  public $notificationEmails = null;
-  /**
-   * @var \Airavata\Model\Workflow\WorkflowApplication[]
-   */
-  public $applications = null;
-  /**
-   * @var \Airavata\Model\Workflow\WorkflowHandler[]
-   */
-  public $handlers = null;
-  /**
-   * @var \Airavata\Model\Workflow\WorkflowConnection[]
-   */
-  public $connections = null;
-  /**
-   * @var \Airavata\Model\Workflow\WorkflowStatus[]
-   */
-  public $statuses = null;
-  /**
-   * @var \Airavata\Model\Commons\ErrorModel[]
-   */
-  public $errors = null;
-  /**
-   * @var int
-   */
-  public $createdAt = null;
-  /**
-   * @var int
-   */
-  public $updatedAt = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'id',
-          'type' => TType::STRING,
-          ),
-        2 => array(
-          'var' => 'name',
-          'type' => TType::STRING,
-          ),
-        3 => array(
-          'var' => 'gatewayId',
-          'type' => TType::STRING,
-          ),
-        4 => array(
-          'var' => 'userName',
-          'type' => TType::STRING,
-          ),
-        5 => array(
-          'var' => 'storageResourceId',
-          'type' => TType::STRING,
-          ),
-        6 => array(
-          'var' => 'description',
-          'type' => TType::STRING,
-          ),
-        7 => array(
-          'var' => 'enableEmailNotification',
-          'type' => TType::BOOL,
-          ),
-        8 => array(
-          'var' => 'notificationEmails',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workflow\NotificationEmail',
-            ),
-          ),
-        9 => array(
-          'var' => 'applications',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workflow\WorkflowApplication',
-            ),
-          ),
-        10 => array(
-          'var' => 'handlers',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workflow\WorkflowHandler',
-            ),
-          ),
-        11 => array(
-          'var' => 'connections',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workflow\WorkflowConnection',
-            ),
-          ),
-        12 => array(
-          'var' => 'statuses',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Workflow\WorkflowStatus',
-            ),
-          ),
-        13 => array(
-          'var' => 'errors',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Commons\ErrorModel',
-            ),
-          ),
-        14 => array(
-          'var' => 'createdAt',
-          'type' => TType::I64,
-          ),
-        15 => array(
-          'var' => 'updatedAt',
-          'type' => TType::I64,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['id'])) {
-        $this->id = $vals['id'];
-      }
-      if (isset($vals['name'])) {
-        $this->name = $vals['name'];
-      }
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
-      }
-      if (isset($vals['userName'])) {
-        $this->userName = $vals['userName'];
-      }
-      if (isset($vals['storageResourceId'])) {
-        $this->storageResourceId = $vals['storageResourceId'];
-      }
-      if (isset($vals['description'])) {
-        $this->description = $vals['description'];
-      }
-      if (isset($vals['enableEmailNotification'])) {
-        $this->enableEmailNotification = $vals['enableEmailNotification'];
-      }
-      if (isset($vals['notificationEmails'])) {
-        $this->notificationEmails = $vals['notificationEmails'];
-      }
-      if (isset($vals['applications'])) {
-        $this->applications = $vals['applications'];
-      }
-      if (isset($vals['handlers'])) {
-        $this->handlers = $vals['handlers'];
-      }
-      if (isset($vals['connections'])) {
-        $this->connections = $vals['connections'];
-      }
-      if (isset($vals['statuses'])) {
-        $this->statuses = $vals['statuses'];
-      }
-      if (isset($vals['errors'])) {
-        $this->errors = $vals['errors'];
-      }
-      if (isset($vals['createdAt'])) {
-        $this->createdAt = $vals['createdAt'];
-      }
-      if (isset($vals['updatedAt'])) {
-        $this->updatedAt = $vals['updatedAt'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'AiravataWorkflow';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->id);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->name);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->userName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 5:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->storageResourceId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 6:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->description);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 7:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->enableEmailNotification);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 8:
-          if ($ftype == TType::LST) {
-            $this->notificationEmails = array();
-            $_size56 = 0;
-            $_etype59 = 0;
-            $xfer += $input->readListBegin($_etype59, $_size56);
-            for ($_i60 = 0; $_i60 < $_size56; ++$_i60)
-            {
-              $elem61 = null;
-              $elem61 = new \Airavata\Model\Workflow\NotificationEmail();
-              $xfer += $elem61->read($input);
-              $this->notificationEmails []= $elem61;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 9:
-          if ($ftype == TType::LST) {
-            $this->applications = array();
-            $_size62 = 0;
-            $_etype65 = 0;
-            $xfer += $input->readListBegin($_etype65, $_size62);
-            for ($_i66 = 0; $_i66 < $_size62; ++$_i66)
-            {
-              $elem67 = null;
-              $elem67 = new \Airavata\Model\Workflow\WorkflowApplication();
-              $xfer += $elem67->read($input);
-              $this->applications []= $elem67;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 10:
-          if ($ftype == TType::LST) {
-            $this->handlers = array();
-            $_size68 = 0;
-            $_etype71 = 0;
-            $xfer += $input->readListBegin($_etype71, $_size68);
-            for ($_i72 = 0; $_i72 < $_size68; ++$_i72)
-            {
-              $elem73 = null;
-              $elem73 = new \Airavata\Model\Workflow\WorkflowHandler();
-              $xfer += $elem73->read($input);
-              $this->handlers []= $elem73;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 11:
-          if ($ftype == TType::LST) {
-            $this->connections = array();
-            $_size74 = 0;
-            $_etype77 = 0;
-            $xfer += $input->readListBegin($_etype77, $_size74);
-            for ($_i78 = 0; $_i78 < $_size74; ++$_i78)
-            {
-              $elem79 = null;
-              $elem79 = new \Airavata\Model\Workflow\WorkflowConnection();
-              $xfer += $elem79->read($input);
-              $this->connections []= $elem79;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 12:
-          if ($ftype == TType::LST) {
-            $this->statuses = array();
-            $_size80 = 0;
-            $_etype83 = 0;
-            $xfer += $input->readListBegin($_etype83, $_size80);
-            for ($_i84 = 0; $_i84 < $_size80; ++$_i84)
-            {
-              $elem85 = null;
-              $elem85 = new \Airavata\Model\Workflow\WorkflowStatus();
-              $xfer += $elem85->read($input);
-              $this->statuses []= $elem85;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 13:
-          if ($ftype == TType::LST) {
-            $this->errors = array();
-            $_size86 = 0;
-            $_etype89 = 0;
-            $xfer += $input->readListBegin($_etype89, $_size86);
-            for ($_i90 = 0; $_i90 < $_size86; ++$_i90)
-            {
-              $elem91 = null;
-              $elem91 = new \Airavata\Model\Commons\ErrorModel();
-              $xfer += $elem91->read($input);
-              $this->errors []= $elem91;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 14:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->createdAt);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 15:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->updatedAt);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('AiravataWorkflow');
-    if ($this->id !== null) {
-      $xfer += $output->writeFieldBegin('id', TType::STRING, 1);
-      $xfer += $output->writeString($this->id);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->name !== null) {
-      $xfer += $output->writeFieldBegin('name', TType::STRING, 2);
-      $xfer += $output->writeString($this->name);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 3);
-      $xfer += $output->writeString($this->gatewayId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->userName !== null) {
-      $xfer += $output->writeFieldBegin('userName', TType::STRING, 4);
-      $xfer += $output->writeString($this->userName);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->storageResourceId !== null) {
-      $xfer += $output->writeFieldBegin('storageResourceId', TType::STRING, 5);
-      $xfer += $output->writeString($this->storageResourceId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->description !== null) {
-      $xfer += $output->writeFieldBegin('description', TType::STRING, 6);
-      $xfer += $output->writeString($this->description);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->enableEmailNotification !== null) {
-      $xfer += $output->writeFieldBegin('enableEmailNotification', TType::BOOL, 7);
-      $xfer += $output->writeBool($this->enableEmailNotification);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->notificationEmails !== null) {
-      if (!is_array($this->notificationEmails)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('notificationEmails', TType::LST, 8);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->notificationEmails));
-        {
-          foreach ($this->notificationEmails as $iter92)
-          {
-            $xfer += $iter92->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->applications !== null) {
-      if (!is_array($this->applications)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('applications', TType::LST, 9);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->applications));
-        {
-          foreach ($this->applications as $iter93)
-          {
-            $xfer += $iter93->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->handlers !== null) {
-      if (!is_array($this->handlers)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('handlers', TType::LST, 10);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->handlers));
-        {
-          foreach ($this->handlers as $iter94)
-          {
-            $xfer += $iter94->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->connections !== null) {
-      if (!is_array($this->connections)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('connections', TType::LST, 11);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->connections));
-        {
-          foreach ($this->connections as $iter95)
-          {
-            $xfer += $iter95->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->statuses !== null) {
-      if (!is_array($this->statuses)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('statuses', TType::LST, 12);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->statuses));
-        {
-          foreach ($this->statuses as $iter96)
-          {
-            $xfer += $iter96->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->errors !== null) {
-      if (!is_array($this->errors)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('errors', TType::LST, 13);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->errors));
-        {
-          foreach ($this->errors as $iter97)
-          {
-            $xfer += $iter97->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->createdAt !== null) {
-      $xfer += $output->writeFieldBegin('createdAt', TType::I64, 14);
-      $xfer += $output->writeI64($this->createdAt);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->updatedAt !== null) {
-      $xfer += $output->writeFieldBegin('updatedAt', TType::I64, 15);
-      $xfer += $output->writeI64($this->updatedAt);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-
diff --git a/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/Error/Types.php b/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/Error/Types.php
index 28fa514..fb73d5a 100644
--- a/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/Error/Types.php
+++ b/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/Error/Types.php
@@ -2,7 +2,7 @@
 namespace Airavata\Service\Iam\Admin\Services\CPI\Error;
 
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
diff --git a/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/IamAdminServices.php b/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/IamAdminServices.php
index 0393df3..30f7abd 100644
--- a/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/IamAdminServices.php
+++ b/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/IamAdminServices.php
@@ -1,7 +1,7 @@
 <?php
 namespace Airavata\Service\Iam\Admin\Services\CPI;
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -55,14 +55,6 @@
   /**
    * @param \Airavata\Model\Security\AuthzToken $authzToken
    * @param string $username
-   * @return bool
-   * @throws \Airavata\Service\Iam\Admin\Services\CPI\Error\IamAdminServicesException
-   * @throws \Airavata\API\Error\AuthorizationException
-   */
-  public function isUserEnabled(\Airavata\Model\Security\AuthzToken $authzToken, $username);
-  /**
-   * @param \Airavata\Model\Security\AuthzToken $authzToken
-   * @param string $username
    * @param string $newPassword
    * @return bool
    * @throws \Airavata\Service\Iam\Admin\Services\CPI\Error\IamAdminServicesException
@@ -113,6 +105,7 @@
   public function getUsersWithRole(\Airavata\Model\Security\AuthzToken $authzToken, $roleName);
 }
 
+
 class IamAdminServicesClient implements \Airavata\Service\Iam\Admin\Services\CPI\IamAdminServicesIf {
   protected $input_ = null;
   protected $output_ = null;
@@ -359,64 +352,6 @@
     throw new \Exception("enableUser failed: unknown result");
   }
 
-  public function isUserEnabled(\Airavata\Model\Security\AuthzToken $authzToken, $username)
-  {
-    $this->send_isUserEnabled($authzToken, $username);
-    return $this->recv_isUserEnabled();
-  }
-
-  public function send_isUserEnabled(\Airavata\Model\Security\AuthzToken $authzToken, $username)
-  {
-    $args = new \Airavata\Service\Iam\Admin\Services\CPI\IamAdminServices_isUserEnabled_args();
-    $args->authzToken = $authzToken;
-    $args->username = $username;
-    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
-    if ($bin_accel)
-    {
-      thrift_protocol_write_binary($this->output_, 'isUserEnabled', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
-    }
-    else
-    {
-      $this->output_->writeMessageBegin('isUserEnabled', TMessageType::CALL, $this->seqid_);
-      $args->write($this->output_);
-      $this->output_->writeMessageEnd();
-      $this->output_->getTransport()->flush();
-    }
-  }
-
-  public function recv_isUserEnabled()
-  {
-    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
-    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\Service\Iam\Admin\Services\CPI\IamAdminServices_isUserEnabled_result', $this->input_->isStrictRead());
-    else
-    {
-      $rseqid = 0;
-      $fname = null;
-      $mtype = 0;
-
-      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
-      if ($mtype == TMessageType::EXCEPTION) {
-        $x = new TApplicationException();
-        $x->read($this->input_);
-        $this->input_->readMessageEnd();
-        throw $x;
-      }
-      $result = new \Airavata\Service\Iam\Admin\Services\CPI\IamAdminServices_isUserEnabled_result();
-      $result->read($this->input_);
-      $this->input_->readMessageEnd();
-    }
-    if ($result->success !== null) {
-      return $result->success;
-    }
-    if ($result->Idse !== null) {
-      throw $result->Idse;
-    }
-    if ($result->ae !== null) {
-      throw $result->ae;
-    }
-    throw new \Exception("isUserEnabled failed: unknown result");
-  }
-
   public function resetUserPassword(\Airavata\Model\Security\AuthzToken $authzToken, $username, $newPassword)
   {
     $this->send_resetUserPassword($authzToken, $username, $newPassword);
@@ -768,6 +703,7 @@
 
 }
 
+
 // HELPER FUNCTIONS AND STRUCTURES
 
 class IamAdminServices_getAPIVersion_args {
@@ -1761,234 +1697,6 @@
 
 }
 
-class IamAdminServices_isUserEnabled_args {
-  static $_TSPEC;
-
-  /**
-   * @var \Airavata\Model\Security\AuthzToken
-   */
-  public $authzToken = null;
-  /**
-   * @var string
-   */
-  public $username = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'authzToken',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Security\AuthzToken',
-          ),
-        2 => array(
-          'var' => 'username',
-          'type' => TType::STRING,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['authzToken'])) {
-        $this->authzToken = $vals['authzToken'];
-      }
-      if (isset($vals['username'])) {
-        $this->username = $vals['username'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'IamAdminServices_isUserEnabled_args';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRUCT) {
-            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
-            $xfer += $this->authzToken->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->username);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('IamAdminServices_isUserEnabled_args');
-    if ($this->authzToken !== null) {
-      if (!is_object($this->authzToken)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
-      $xfer += $this->authzToken->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->username !== null) {
-      $xfer += $output->writeFieldBegin('username', TType::STRING, 2);
-      $xfer += $output->writeString($this->username);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class IamAdminServices_isUserEnabled_result {
-  static $_TSPEC;
-
-  /**
-   * @var bool
-   */
-  public $success = null;
-  /**
-   * @var \Airavata\Service\Iam\Admin\Services\CPI\Error\IamAdminServicesException
-   */
-  public $Idse = null;
-  /**
-   * @var \Airavata\API\Error\AuthorizationException
-   */
-  public $ae = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        0 => array(
-          'var' => 'success',
-          'type' => TType::BOOL,
-          ),
-        1 => array(
-          'var' => 'Idse',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Service\Iam\Admin\Services\CPI\Error\IamAdminServicesException',
-          ),
-        2 => array(
-          'var' => 'ae',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\API\Error\AuthorizationException',
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['success'])) {
-        $this->success = $vals['success'];
-      }
-      if (isset($vals['Idse'])) {
-        $this->Idse = $vals['Idse'];
-      }
-      if (isset($vals['ae'])) {
-        $this->ae = $vals['ae'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'IamAdminServices_isUserEnabled_result';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 0:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->success);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 1:
-          if ($ftype == TType::STRUCT) {
-            $this->Idse = new \Airavata\Service\Iam\Admin\Services\CPI\Error\IamAdminServicesException();
-            $xfer += $this->Idse->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::STRUCT) {
-            $this->ae = new \Airavata\API\Error\AuthorizationException();
-            $xfer += $this->ae->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('IamAdminServices_isUserEnabled_result');
-    if ($this->success !== null) {
-      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
-      $xfer += $output->writeBool($this->success);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->Idse !== null) {
-      $xfer += $output->writeFieldBegin('Idse', TType::STRUCT, 1);
-      $xfer += $this->Idse->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->ae !== null) {
-      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 2);
-      $xfer += $this->ae->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
 class IamAdminServices_resetUserPassword_args {
   static $_TSPEC;
 
diff --git a/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/Types.php b/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/Types.php
index fb21133..54391ec 100644
--- a/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/Types.php
+++ b/app/libraries/Airavata/Service/Iam/Admin/Services/CPI/Types.php
@@ -2,7 +2,7 @@
 namespace Airavata\Service\Iam\Admin\Services\CPI;
 
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
diff --git a/app/libraries/Airavata/Service/Profile/Groupmanager/CPI/Error/Types.php b/app/libraries/Airavata/Service/Profile/Groupmanager/CPI/Error/Types.php
new file mode 100644
index 0000000..b8f7146
--- /dev/null
+++ b/app/libraries/Airavata/Service/Profile/Groupmanager/CPI/Error/Types.php
@@ -0,0 +1,95 @@
+<?php
+namespace Airavata\Service\Profile\Groupmanager\CPI\Error;
+
+/**
+ * Autogenerated by Thrift Compiler (0.10.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+class GroupManagerServiceException extends TException {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $message = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'message',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['message'])) {
+        $this->message = $vals['message'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerServiceException';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->message);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerServiceException');
+    if ($this->message !== null) {
+      $xfer += $output->writeFieldBegin('message', TType::STRING, 1);
+      $xfer += $output->writeString($this->message);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+
diff --git a/app/libraries/Airavata/Service/Profile/Groupmanager/CPI/GroupManagerService.php b/app/libraries/Airavata/Service/Profile/Groupmanager/CPI/GroupManagerService.php
new file mode 100644
index 0000000..e643115
--- /dev/null
+++ b/app/libraries/Airavata/Service/Profile/Groupmanager/CPI/GroupManagerService.php
@@ -0,0 +1,3224 @@
+<?php
+namespace Airavata\Service\Profile\Groupmanager\CPI;
+/**
+ * Autogenerated by Thrift Compiler (0.10.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+interface GroupManagerServiceIf {
+  /**
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param \Airavata\Model\Group\GroupModel $groupModel
+   * @return string
+   * @throws \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function createGroup(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Group\GroupModel $groupModel);
+  /**
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param \Airavata\Model\Group\GroupModel $groupModel
+   * @return bool
+   * @throws \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function updateGroup(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Group\GroupModel $groupModel);
+  /**
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param string $groupId
+   * @param string $ownerId
+   * @return bool
+   * @throws \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function deleteGroup(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, $ownerId);
+  /**
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param string $groupId
+   * @return \Airavata\Model\Group\GroupModel
+   * @throws \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function getGroup(\Airavata\Model\Security\AuthzToken $authzToken, $groupId);
+  /**
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param string $userName
+   * @return \Airavata\Model\Group\GroupModel[]
+   * @throws \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function getAllGroupsUserBelongs(\Airavata\Model\Security\AuthzToken $authzToken, $userName);
+  /**
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param string $groupId
+   * @param string $newOwnerId
+   * @return bool
+   * @throws \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function transferGroupOwnership(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, $newOwnerId);
+  /**
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param string $groupId
+   * @param string[] $adminIds
+   * @return bool
+   * @throws \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function addGroupAdmins(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, array $adminIds);
+  /**
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param string $groupId
+   * @param string[] $adminIds
+   * @return bool
+   * @throws \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function removeGroupAdmins(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, array $adminIds);
+  /**
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param string $groupId
+   * @param string $adminId
+   * @return bool
+   * @throws \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function hasAdminAccess(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, $adminId);
+  /**
+   * @param \Airavata\Model\Security\AuthzToken $authzToken
+   * @param string $groupId
+   * @param string $ownerId
+   * @return bool
+   * @throws \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   * @throws \Airavata\API\Error\AuthorizationException
+   */
+  public function hasOwnerAccess(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, $ownerId);
+}
+
+
+class GroupManagerServiceClient implements \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerServiceIf {
+  protected $input_ = null;
+  protected $output_ = null;
+
+  protected $seqid_ = 0;
+
+  public function __construct($input, $output=null) {
+    $this->input_ = $input;
+    $this->output_ = $output ? $output : $input;
+  }
+
+  public function createGroup(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Group\GroupModel $groupModel)
+  {
+    $this->send_createGroup($authzToken, $groupModel);
+    return $this->recv_createGroup();
+  }
+
+  public function send_createGroup(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Group\GroupModel $groupModel)
+  {
+    $args = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_createGroup_args();
+    $args->authzToken = $authzToken;
+    $args->groupModel = $groupModel;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'createGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('createGroup', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_createGroup()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_createGroup_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_createGroup_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->gse !== null) {
+      throw $result->gse;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("createGroup failed: unknown result");
+  }
+
+  public function updateGroup(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Group\GroupModel $groupModel)
+  {
+    $this->send_updateGroup($authzToken, $groupModel);
+    return $this->recv_updateGroup();
+  }
+
+  public function send_updateGroup(\Airavata\Model\Security\AuthzToken $authzToken, \Airavata\Model\Group\GroupModel $groupModel)
+  {
+    $args = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_updateGroup_args();
+    $args->authzToken = $authzToken;
+    $args->groupModel = $groupModel;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'updateGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('updateGroup', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_updateGroup()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_updateGroup_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_updateGroup_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->gse !== null) {
+      throw $result->gse;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("updateGroup failed: unknown result");
+  }
+
+  public function deleteGroup(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, $ownerId)
+  {
+    $this->send_deleteGroup($authzToken, $groupId, $ownerId);
+    return $this->recv_deleteGroup();
+  }
+
+  public function send_deleteGroup(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, $ownerId)
+  {
+    $args = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_deleteGroup_args();
+    $args->authzToken = $authzToken;
+    $args->groupId = $groupId;
+    $args->ownerId = $ownerId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'deleteGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('deleteGroup', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_deleteGroup()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_deleteGroup_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_deleteGroup_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->gse !== null) {
+      throw $result->gse;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("deleteGroup failed: unknown result");
+  }
+
+  public function getGroup(\Airavata\Model\Security\AuthzToken $authzToken, $groupId)
+  {
+    $this->send_getGroup($authzToken, $groupId);
+    return $this->recv_getGroup();
+  }
+
+  public function send_getGroup(\Airavata\Model\Security\AuthzToken $authzToken, $groupId)
+  {
+    $args = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_getGroup_args();
+    $args->authzToken = $authzToken;
+    $args->groupId = $groupId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getGroup', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getGroup()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_getGroup_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_getGroup_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->gse !== null) {
+      throw $result->gse;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("getGroup failed: unknown result");
+  }
+
+  public function getAllGroupsUserBelongs(\Airavata\Model\Security\AuthzToken $authzToken, $userName)
+  {
+    $this->send_getAllGroupsUserBelongs($authzToken, $userName);
+    return $this->recv_getAllGroupsUserBelongs();
+  }
+
+  public function send_getAllGroupsUserBelongs(\Airavata\Model\Security\AuthzToken $authzToken, $userName)
+  {
+    $args = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_getAllGroupsUserBelongs_args();
+    $args->authzToken = $authzToken;
+    $args->userName = $userName;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getAllGroupsUserBelongs', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getAllGroupsUserBelongs', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getAllGroupsUserBelongs()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_getAllGroupsUserBelongs_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_getAllGroupsUserBelongs_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->gse !== null) {
+      throw $result->gse;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("getAllGroupsUserBelongs failed: unknown result");
+  }
+
+  public function transferGroupOwnership(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, $newOwnerId)
+  {
+    $this->send_transferGroupOwnership($authzToken, $groupId, $newOwnerId);
+    return $this->recv_transferGroupOwnership();
+  }
+
+  public function send_transferGroupOwnership(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, $newOwnerId)
+  {
+    $args = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_transferGroupOwnership_args();
+    $args->authzToken = $authzToken;
+    $args->groupId = $groupId;
+    $args->newOwnerId = $newOwnerId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'transferGroupOwnership', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('transferGroupOwnership', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_transferGroupOwnership()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_transferGroupOwnership_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_transferGroupOwnership_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->gse !== null) {
+      throw $result->gse;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("transferGroupOwnership failed: unknown result");
+  }
+
+  public function addGroupAdmins(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, array $adminIds)
+  {
+    $this->send_addGroupAdmins($authzToken, $groupId, $adminIds);
+    return $this->recv_addGroupAdmins();
+  }
+
+  public function send_addGroupAdmins(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, array $adminIds)
+  {
+    $args = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_addGroupAdmins_args();
+    $args->authzToken = $authzToken;
+    $args->groupId = $groupId;
+    $args->adminIds = $adminIds;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'addGroupAdmins', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('addGroupAdmins', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_addGroupAdmins()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_addGroupAdmins_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_addGroupAdmins_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->gse !== null) {
+      throw $result->gse;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("addGroupAdmins failed: unknown result");
+  }
+
+  public function removeGroupAdmins(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, array $adminIds)
+  {
+    $this->send_removeGroupAdmins($authzToken, $groupId, $adminIds);
+    return $this->recv_removeGroupAdmins();
+  }
+
+  public function send_removeGroupAdmins(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, array $adminIds)
+  {
+    $args = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_removeGroupAdmins_args();
+    $args->authzToken = $authzToken;
+    $args->groupId = $groupId;
+    $args->adminIds = $adminIds;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'removeGroupAdmins', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('removeGroupAdmins', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_removeGroupAdmins()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_removeGroupAdmins_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_removeGroupAdmins_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->gse !== null) {
+      throw $result->gse;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("removeGroupAdmins failed: unknown result");
+  }
+
+  public function hasAdminAccess(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, $adminId)
+  {
+    $this->send_hasAdminAccess($authzToken, $groupId, $adminId);
+    return $this->recv_hasAdminAccess();
+  }
+
+  public function send_hasAdminAccess(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, $adminId)
+  {
+    $args = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_hasAdminAccess_args();
+    $args->authzToken = $authzToken;
+    $args->groupId = $groupId;
+    $args->adminId = $adminId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'hasAdminAccess', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('hasAdminAccess', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_hasAdminAccess()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_hasAdminAccess_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_hasAdminAccess_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->gse !== null) {
+      throw $result->gse;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("hasAdminAccess failed: unknown result");
+  }
+
+  public function hasOwnerAccess(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, $ownerId)
+  {
+    $this->send_hasOwnerAccess($authzToken, $groupId, $ownerId);
+    return $this->recv_hasOwnerAccess();
+  }
+
+  public function send_hasOwnerAccess(\Airavata\Model\Security\AuthzToken $authzToken, $groupId, $ownerId)
+  {
+    $args = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_hasOwnerAccess_args();
+    $args->authzToken = $authzToken;
+    $args->groupId = $groupId;
+    $args->ownerId = $ownerId;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'hasOwnerAccess', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('hasOwnerAccess', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_hasOwnerAccess()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_hasOwnerAccess_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\Service\Profile\Groupmanager\CPI\GroupManagerService_hasOwnerAccess_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->gse !== null) {
+      throw $result->gse;
+    }
+    if ($result->ae !== null) {
+      throw $result->ae;
+    }
+    throw new \Exception("hasOwnerAccess failed: unknown result");
+  }
+
+}
+
+
+// HELPER FUNCTIONS AND STRUCTURES
+
+class GroupManagerService_createGroup_args {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Security\AuthzToken
+   */
+  public $authzToken = null;
+  /**
+   * @var \Airavata\Model\Group\GroupModel
+   */
+  public $groupModel = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'authzToken',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Security\AuthzToken',
+          ),
+        2 => array(
+          'var' => 'groupModel',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Group\GroupModel',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['authzToken'])) {
+        $this->authzToken = $vals['authzToken'];
+      }
+      if (isset($vals['groupModel'])) {
+        $this->groupModel = $vals['groupModel'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_createGroup_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
+            $xfer += $this->authzToken->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->groupModel = new \Airavata\Model\Group\GroupModel();
+            $xfer += $this->groupModel->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_createGroup_args');
+    if ($this->authzToken !== null) {
+      if (!is_object($this->authzToken)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
+      $xfer += $this->authzToken->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->groupModel !== null) {
+      if (!is_object($this->groupModel)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('groupModel', TType::STRUCT, 2);
+      $xfer += $this->groupModel->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_createGroup_result {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $success = null;
+  /**
+   * @var \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   */
+  public $gse = null;
+  /**
+   * @var \Airavata\API\Error\AuthorizationException
+   */
+  public $ae = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::STRING,
+          ),
+        1 => array(
+          'var' => 'gse',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException',
+          ),
+        2 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['gse'])) {
+        $this->gse = $vals['gse'];
+      }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_createGroup_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->gse = new \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException();
+            $xfer += $this->gse->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_createGroup_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
+      $xfer += $output->writeString($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gse !== null) {
+      $xfer += $output->writeFieldBegin('gse', TType::STRUCT, 1);
+      $xfer += $this->gse->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 2);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_updateGroup_args {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Security\AuthzToken
+   */
+  public $authzToken = null;
+  /**
+   * @var \Airavata\Model\Group\GroupModel
+   */
+  public $groupModel = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'authzToken',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Security\AuthzToken',
+          ),
+        2 => array(
+          'var' => 'groupModel',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Group\GroupModel',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['authzToken'])) {
+        $this->authzToken = $vals['authzToken'];
+      }
+      if (isset($vals['groupModel'])) {
+        $this->groupModel = $vals['groupModel'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_updateGroup_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
+            $xfer += $this->authzToken->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->groupModel = new \Airavata\Model\Group\GroupModel();
+            $xfer += $this->groupModel->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_updateGroup_args');
+    if ($this->authzToken !== null) {
+      if (!is_object($this->authzToken)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
+      $xfer += $this->authzToken->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->groupModel !== null) {
+      if (!is_object($this->groupModel)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('groupModel', TType::STRUCT, 2);
+      $xfer += $this->groupModel->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_updateGroup_result {
+  static $_TSPEC;
+
+  /**
+   * @var bool
+   */
+  public $success = null;
+  /**
+   * @var \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   */
+  public $gse = null;
+  /**
+   * @var \Airavata\API\Error\AuthorizationException
+   */
+  public $ae = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::BOOL,
+          ),
+        1 => array(
+          'var' => 'gse',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException',
+          ),
+        2 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['gse'])) {
+        $this->gse = $vals['gse'];
+      }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_updateGroup_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->gse = new \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException();
+            $xfer += $this->gse->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_updateGroup_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gse !== null) {
+      $xfer += $output->writeFieldBegin('gse', TType::STRUCT, 1);
+      $xfer += $this->gse->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 2);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_deleteGroup_args {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Security\AuthzToken
+   */
+  public $authzToken = null;
+  /**
+   * @var string
+   */
+  public $groupId = null;
+  /**
+   * @var string
+   */
+  public $ownerId = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'authzToken',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Security\AuthzToken',
+          ),
+        2 => array(
+          'var' => 'groupId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'ownerId',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['authzToken'])) {
+        $this->authzToken = $vals['authzToken'];
+      }
+      if (isset($vals['groupId'])) {
+        $this->groupId = $vals['groupId'];
+      }
+      if (isset($vals['ownerId'])) {
+        $this->ownerId = $vals['ownerId'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_deleteGroup_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
+            $xfer += $this->authzToken->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->groupId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->ownerId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_deleteGroup_args');
+    if ($this->authzToken !== null) {
+      if (!is_object($this->authzToken)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
+      $xfer += $this->authzToken->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->groupId !== null) {
+      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
+      $xfer += $output->writeString($this->groupId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ownerId !== null) {
+      $xfer += $output->writeFieldBegin('ownerId', TType::STRING, 3);
+      $xfer += $output->writeString($this->ownerId);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_deleteGroup_result {
+  static $_TSPEC;
+
+  /**
+   * @var bool
+   */
+  public $success = null;
+  /**
+   * @var \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   */
+  public $gse = null;
+  /**
+   * @var \Airavata\API\Error\AuthorizationException
+   */
+  public $ae = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::BOOL,
+          ),
+        1 => array(
+          'var' => 'gse',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException',
+          ),
+        2 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['gse'])) {
+        $this->gse = $vals['gse'];
+      }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_deleteGroup_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->gse = new \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException();
+            $xfer += $this->gse->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_deleteGroup_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gse !== null) {
+      $xfer += $output->writeFieldBegin('gse', TType::STRUCT, 1);
+      $xfer += $this->gse->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 2);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_getGroup_args {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Security\AuthzToken
+   */
+  public $authzToken = null;
+  /**
+   * @var string
+   */
+  public $groupId = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'authzToken',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Security\AuthzToken',
+          ),
+        2 => array(
+          'var' => 'groupId',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['authzToken'])) {
+        $this->authzToken = $vals['authzToken'];
+      }
+      if (isset($vals['groupId'])) {
+        $this->groupId = $vals['groupId'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_getGroup_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
+            $xfer += $this->authzToken->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->groupId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_getGroup_args');
+    if ($this->authzToken !== null) {
+      if (!is_object($this->authzToken)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
+      $xfer += $this->authzToken->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->groupId !== null) {
+      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
+      $xfer += $output->writeString($this->groupId);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_getGroup_result {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Group\GroupModel
+   */
+  public $success = null;
+  /**
+   * @var \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   */
+  public $gse = null;
+  /**
+   * @var \Airavata\API\Error\AuthorizationException
+   */
+  public $ae = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Group\GroupModel',
+          ),
+        1 => array(
+          'var' => 'gse',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException',
+          ),
+        2 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['gse'])) {
+        $this->gse = $vals['gse'];
+      }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_getGroup_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::STRUCT) {
+            $this->success = new \Airavata\Model\Group\GroupModel();
+            $xfer += $this->success->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->gse = new \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException();
+            $xfer += $this->gse->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_getGroup_result');
+    if ($this->success !== null) {
+      if (!is_object($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
+      $xfer += $this->success->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gse !== null) {
+      $xfer += $output->writeFieldBegin('gse', TType::STRUCT, 1);
+      $xfer += $this->gse->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 2);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_getAllGroupsUserBelongs_args {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Security\AuthzToken
+   */
+  public $authzToken = null;
+  /**
+   * @var string
+   */
+  public $userName = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'authzToken',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Security\AuthzToken',
+          ),
+        2 => array(
+          'var' => 'userName',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['authzToken'])) {
+        $this->authzToken = $vals['authzToken'];
+      }
+      if (isset($vals['userName'])) {
+        $this->userName = $vals['userName'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_getAllGroupsUserBelongs_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
+            $xfer += $this->authzToken->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_getAllGroupsUserBelongs_args');
+    if ($this->authzToken !== null) {
+      if (!is_object($this->authzToken)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
+      $xfer += $this->authzToken->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userName !== null) {
+      $xfer += $output->writeFieldBegin('userName', TType::STRING, 2);
+      $xfer += $output->writeString($this->userName);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_getAllGroupsUserBelongs_result {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Group\GroupModel[]
+   */
+  public $success = null;
+  /**
+   * @var \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   */
+  public $gse = null;
+  /**
+   * @var \Airavata\API\Error\AuthorizationException
+   */
+  public $ae = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Group\GroupModel',
+            ),
+          ),
+        1 => array(
+          'var' => 'gse',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException',
+          ),
+        2 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['gse'])) {
+        $this->gse = $vals['gse'];
+      }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_getAllGroupsUserBelongs_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::LST) {
+            $this->success = array();
+            $_size0 = 0;
+            $_etype3 = 0;
+            $xfer += $input->readListBegin($_etype3, $_size0);
+            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            {
+              $elem5 = null;
+              $elem5 = new \Airavata\Model\Group\GroupModel();
+              $xfer += $elem5->read($input);
+              $this->success []= $elem5;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->gse = new \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException();
+            $xfer += $this->gse->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_getAllGroupsUserBelongs_result');
+    if ($this->success !== null) {
+      if (!is_array($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->success));
+        {
+          foreach ($this->success as $iter6)
+          {
+            $xfer += $iter6->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gse !== null) {
+      $xfer += $output->writeFieldBegin('gse', TType::STRUCT, 1);
+      $xfer += $this->gse->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 2);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_transferGroupOwnership_args {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Security\AuthzToken
+   */
+  public $authzToken = null;
+  /**
+   * @var string
+   */
+  public $groupId = null;
+  /**
+   * @var string
+   */
+  public $newOwnerId = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'authzToken',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Security\AuthzToken',
+          ),
+        2 => array(
+          'var' => 'groupId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'newOwnerId',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['authzToken'])) {
+        $this->authzToken = $vals['authzToken'];
+      }
+      if (isset($vals['groupId'])) {
+        $this->groupId = $vals['groupId'];
+      }
+      if (isset($vals['newOwnerId'])) {
+        $this->newOwnerId = $vals['newOwnerId'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_transferGroupOwnership_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
+            $xfer += $this->authzToken->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->groupId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->newOwnerId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_transferGroupOwnership_args');
+    if ($this->authzToken !== null) {
+      if (!is_object($this->authzToken)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
+      $xfer += $this->authzToken->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->groupId !== null) {
+      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
+      $xfer += $output->writeString($this->groupId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->newOwnerId !== null) {
+      $xfer += $output->writeFieldBegin('newOwnerId', TType::STRING, 3);
+      $xfer += $output->writeString($this->newOwnerId);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_transferGroupOwnership_result {
+  static $_TSPEC;
+
+  /**
+   * @var bool
+   */
+  public $success = null;
+  /**
+   * @var \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   */
+  public $gse = null;
+  /**
+   * @var \Airavata\API\Error\AuthorizationException
+   */
+  public $ae = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::BOOL,
+          ),
+        1 => array(
+          'var' => 'gse',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException',
+          ),
+        2 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['gse'])) {
+        $this->gse = $vals['gse'];
+      }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_transferGroupOwnership_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->gse = new \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException();
+            $xfer += $this->gse->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_transferGroupOwnership_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gse !== null) {
+      $xfer += $output->writeFieldBegin('gse', TType::STRUCT, 1);
+      $xfer += $this->gse->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 2);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_addGroupAdmins_args {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Security\AuthzToken
+   */
+  public $authzToken = null;
+  /**
+   * @var string
+   */
+  public $groupId = null;
+  /**
+   * @var string[]
+   */
+  public $adminIds = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'authzToken',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Security\AuthzToken',
+          ),
+        2 => array(
+          'var' => 'groupId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'adminIds',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['authzToken'])) {
+        $this->authzToken = $vals['authzToken'];
+      }
+      if (isset($vals['groupId'])) {
+        $this->groupId = $vals['groupId'];
+      }
+      if (isset($vals['adminIds'])) {
+        $this->adminIds = $vals['adminIds'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_addGroupAdmins_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
+            $xfer += $this->authzToken->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->groupId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::LST) {
+            $this->adminIds = array();
+            $_size7 = 0;
+            $_etype10 = 0;
+            $xfer += $input->readListBegin($_etype10, $_size7);
+            for ($_i11 = 0; $_i11 < $_size7; ++$_i11)
+            {
+              $elem12 = null;
+              $xfer += $input->readString($elem12);
+              $this->adminIds []= $elem12;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_addGroupAdmins_args');
+    if ($this->authzToken !== null) {
+      if (!is_object($this->authzToken)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
+      $xfer += $this->authzToken->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->groupId !== null) {
+      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
+      $xfer += $output->writeString($this->groupId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->adminIds !== null) {
+      if (!is_array($this->adminIds)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('adminIds', TType::LST, 3);
+      {
+        $output->writeListBegin(TType::STRING, count($this->adminIds));
+        {
+          foreach ($this->adminIds as $iter13)
+          {
+            $xfer += $output->writeString($iter13);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_addGroupAdmins_result {
+  static $_TSPEC;
+
+  /**
+   * @var bool
+   */
+  public $success = null;
+  /**
+   * @var \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   */
+  public $gse = null;
+  /**
+   * @var \Airavata\API\Error\AuthorizationException
+   */
+  public $ae = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::BOOL,
+          ),
+        1 => array(
+          'var' => 'gse',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException',
+          ),
+        2 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['gse'])) {
+        $this->gse = $vals['gse'];
+      }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_addGroupAdmins_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->gse = new \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException();
+            $xfer += $this->gse->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_addGroupAdmins_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gse !== null) {
+      $xfer += $output->writeFieldBegin('gse', TType::STRUCT, 1);
+      $xfer += $this->gse->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 2);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_removeGroupAdmins_args {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Security\AuthzToken
+   */
+  public $authzToken = null;
+  /**
+   * @var string
+   */
+  public $groupId = null;
+  /**
+   * @var string[]
+   */
+  public $adminIds = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'authzToken',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Security\AuthzToken',
+          ),
+        2 => array(
+          'var' => 'groupId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'adminIds',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['authzToken'])) {
+        $this->authzToken = $vals['authzToken'];
+      }
+      if (isset($vals['groupId'])) {
+        $this->groupId = $vals['groupId'];
+      }
+      if (isset($vals['adminIds'])) {
+        $this->adminIds = $vals['adminIds'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_removeGroupAdmins_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
+            $xfer += $this->authzToken->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->groupId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::LST) {
+            $this->adminIds = array();
+            $_size14 = 0;
+            $_etype17 = 0;
+            $xfer += $input->readListBegin($_etype17, $_size14);
+            for ($_i18 = 0; $_i18 < $_size14; ++$_i18)
+            {
+              $elem19 = null;
+              $xfer += $input->readString($elem19);
+              $this->adminIds []= $elem19;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_removeGroupAdmins_args');
+    if ($this->authzToken !== null) {
+      if (!is_object($this->authzToken)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
+      $xfer += $this->authzToken->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->groupId !== null) {
+      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
+      $xfer += $output->writeString($this->groupId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->adminIds !== null) {
+      if (!is_array($this->adminIds)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('adminIds', TType::LST, 3);
+      {
+        $output->writeListBegin(TType::STRING, count($this->adminIds));
+        {
+          foreach ($this->adminIds as $iter20)
+          {
+            $xfer += $output->writeString($iter20);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_removeGroupAdmins_result {
+  static $_TSPEC;
+
+  /**
+   * @var bool
+   */
+  public $success = null;
+  /**
+   * @var \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   */
+  public $gse = null;
+  /**
+   * @var \Airavata\API\Error\AuthorizationException
+   */
+  public $ae = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::BOOL,
+          ),
+        1 => array(
+          'var' => 'gse',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException',
+          ),
+        2 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['gse'])) {
+        $this->gse = $vals['gse'];
+      }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_removeGroupAdmins_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->gse = new \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException();
+            $xfer += $this->gse->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_removeGroupAdmins_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gse !== null) {
+      $xfer += $output->writeFieldBegin('gse', TType::STRUCT, 1);
+      $xfer += $this->gse->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 2);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_hasAdminAccess_args {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Security\AuthzToken
+   */
+  public $authzToken = null;
+  /**
+   * @var string
+   */
+  public $groupId = null;
+  /**
+   * @var string
+   */
+  public $adminId = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'authzToken',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Security\AuthzToken',
+          ),
+        2 => array(
+          'var' => 'groupId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'adminId',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['authzToken'])) {
+        $this->authzToken = $vals['authzToken'];
+      }
+      if (isset($vals['groupId'])) {
+        $this->groupId = $vals['groupId'];
+      }
+      if (isset($vals['adminId'])) {
+        $this->adminId = $vals['adminId'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_hasAdminAccess_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
+            $xfer += $this->authzToken->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->groupId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->adminId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_hasAdminAccess_args');
+    if ($this->authzToken !== null) {
+      if (!is_object($this->authzToken)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
+      $xfer += $this->authzToken->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->groupId !== null) {
+      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
+      $xfer += $output->writeString($this->groupId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->adminId !== null) {
+      $xfer += $output->writeFieldBegin('adminId', TType::STRING, 3);
+      $xfer += $output->writeString($this->adminId);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_hasAdminAccess_result {
+  static $_TSPEC;
+
+  /**
+   * @var bool
+   */
+  public $success = null;
+  /**
+   * @var \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   */
+  public $gse = null;
+  /**
+   * @var \Airavata\API\Error\AuthorizationException
+   */
+  public $ae = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::BOOL,
+          ),
+        1 => array(
+          'var' => 'gse',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException',
+          ),
+        2 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['gse'])) {
+        $this->gse = $vals['gse'];
+      }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_hasAdminAccess_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->gse = new \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException();
+            $xfer += $this->gse->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_hasAdminAccess_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gse !== null) {
+      $xfer += $output->writeFieldBegin('gse', TType::STRUCT, 1);
+      $xfer += $this->gse->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 2);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_hasOwnerAccess_args {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Security\AuthzToken
+   */
+  public $authzToken = null;
+  /**
+   * @var string
+   */
+  public $groupId = null;
+  /**
+   * @var string
+   */
+  public $ownerId = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'authzToken',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Model\Security\AuthzToken',
+          ),
+        2 => array(
+          'var' => 'groupId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'ownerId',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['authzToken'])) {
+        $this->authzToken = $vals['authzToken'];
+      }
+      if (isset($vals['groupId'])) {
+        $this->groupId = $vals['groupId'];
+      }
+      if (isset($vals['ownerId'])) {
+        $this->ownerId = $vals['ownerId'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_hasOwnerAccess_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->authzToken = new \Airavata\Model\Security\AuthzToken();
+            $xfer += $this->authzToken->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->groupId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->ownerId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_hasOwnerAccess_args');
+    if ($this->authzToken !== null) {
+      if (!is_object($this->authzToken)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('authzToken', TType::STRUCT, 1);
+      $xfer += $this->authzToken->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->groupId !== null) {
+      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
+      $xfer += $output->writeString($this->groupId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ownerId !== null) {
+      $xfer += $output->writeFieldBegin('ownerId', TType::STRING, 3);
+      $xfer += $output->writeString($this->ownerId);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class GroupManagerService_hasOwnerAccess_result {
+  static $_TSPEC;
+
+  /**
+   * @var bool
+   */
+  public $success = null;
+  /**
+   * @var \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException
+   */
+  public $gse = null;
+  /**
+   * @var \Airavata\API\Error\AuthorizationException
+   */
+  public $ae = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::BOOL,
+          ),
+        1 => array(
+          'var' => 'gse',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException',
+          ),
+        2 => array(
+          'var' => 'ae',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\AuthorizationException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['gse'])) {
+        $this->gse = $vals['gse'];
+      }
+      if (isset($vals['ae'])) {
+        $this->ae = $vals['ae'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'GroupManagerService_hasOwnerAccess_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->gse = new \Airavata\Service\Profile\Groupmanager\CPI\Error\GroupManagerServiceException();
+            $xfer += $this->gse->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->ae = new \Airavata\API\Error\AuthorizationException();
+            $xfer += $this->ae->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('GroupManagerService_hasOwnerAccess_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
+      $xfer += $output->writeBool($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gse !== null) {
+      $xfer += $output->writeFieldBegin('gse', TType::STRUCT, 1);
+      $xfer += $this->gse->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ae !== null) {
+      $xfer += $output->writeFieldBegin('ae', TType::STRUCT, 2);
+      $xfer += $this->ae->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+
diff --git a/app/libraries/Airavata/Service/Profile/Groupmanager/CPI/Types.php b/app/libraries/Airavata/Service/Profile/Groupmanager/CPI/Types.php
new file mode 100644
index 0000000..b49f4a3
--- /dev/null
+++ b/app/libraries/Airavata/Service/Profile/Groupmanager/CPI/Types.php
@@ -0,0 +1,33 @@
+<?php
+namespace Airavata\Service\Profile\Groupmanager\CPI;
+
+/**
+ * Autogenerated by Thrift Compiler (0.10.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+final class Constant extends \Thrift\Type\TConstant {
+  static protected $GROUP_MANAGER_CPI_VERSION;
+  static protected $GROUP_MANAGER_CPI_NAME;
+
+  static protected function init_GROUP_MANAGER_CPI_VERSION() {
+    return "0.17";
+  }
+
+  static protected function init_GROUP_MANAGER_CPI_NAME() {
+    return "GroupManagerService";
+  }
+}
+
+
diff --git a/app/libraries/Airavata/Service/Profile/Tenant/CPI/Error/Types.php b/app/libraries/Airavata/Service/Profile/Tenant/CPI/Error/Types.php
index 796dbf6..90afbf2 100644
--- a/app/libraries/Airavata/Service/Profile/Tenant/CPI/Error/Types.php
+++ b/app/libraries/Airavata/Service/Profile/Tenant/CPI/Error/Types.php
@@ -2,7 +2,7 @@
 namespace Airavata\Service\Profile\Tenant\CPI\Error;
 
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
diff --git a/app/libraries/Airavata/Service/Profile/Tenant/CPI/TenantProfileService.php b/app/libraries/Airavata/Service/Profile/Tenant/CPI/TenantProfileService.php
index a1211be..633771e 100644
--- a/app/libraries/Airavata/Service/Profile/Tenant/CPI/TenantProfileService.php
+++ b/app/libraries/Airavata/Service/Profile/Tenant/CPI/TenantProfileService.php
@@ -1,7 +1,7 @@
 <?php
 namespace Airavata\Service\Profile\Tenant\CPI;
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -84,6 +84,7 @@
   public function getAllGatewaysForUser(\Airavata\Model\Security\AuthzToken $authzToken, $requesterUsername);
 }
 
+
 class TenantProfileServiceClient implements \Airavata\Service\Profile\Tenant\CPI\TenantProfileServiceIf {
   protected $input_ = null;
   protected $output_ = null;
@@ -560,6 +561,7 @@
 
 }
 
+
 // HELPER FUNCTIONS AND STRUCTURES
 
 class TenantProfileService_getAPIVersion_args {
diff --git a/app/libraries/Airavata/Service/Profile/Tenant/CPI/Types.php b/app/libraries/Airavata/Service/Profile/Tenant/CPI/Types.php
index 92038a2..41891f4 100644
--- a/app/libraries/Airavata/Service/Profile/Tenant/CPI/Types.php
+++ b/app/libraries/Airavata/Service/Profile/Tenant/CPI/Types.php
@@ -2,7 +2,7 @@
 namespace Airavata\Service\Profile\Tenant\CPI;
 
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
diff --git a/app/libraries/Airavata/Service/Profile/Types.php b/app/libraries/Airavata/Service/Profile/Types.php
index f6eafb7..271a25e 100644
--- a/app/libraries/Airavata/Service/Profile/Types.php
+++ b/app/libraries/Airavata/Service/Profile/Types.php
@@ -2,7 +2,7 @@
 namespace Airavata\Service\Profile;
 
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
diff --git a/app/libraries/Airavata/Service/Profile/User/CPI/Error/Types.php b/app/libraries/Airavata/Service/Profile/User/CPI/Error/Types.php
index b633c38..ab0f081 100644
--- a/app/libraries/Airavata/Service/Profile/User/CPI/Error/Types.php
+++ b/app/libraries/Airavata/Service/Profile/User/CPI/Error/Types.php
@@ -2,7 +2,7 @@
 namespace Airavata\Service\Profile\User\CPI\Error;
 
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
diff --git a/app/libraries/Airavata/Service/Profile/User/CPI/Types.php b/app/libraries/Airavata/Service/Profile/User/CPI/Types.php
index c5c6626..bceeb65 100644
--- a/app/libraries/Airavata/Service/Profile/User/CPI/Types.php
+++ b/app/libraries/Airavata/Service/Profile/User/CPI/Types.php
@@ -2,7 +2,7 @@
 namespace Airavata\Service\Profile\User\CPI;
 
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
diff --git a/app/libraries/Airavata/Service/Profile/User/CPI/UserProfileService.php b/app/libraries/Airavata/Service/Profile/User/CPI/UserProfileService.php
index 6c773b6..0efa67e 100644
--- a/app/libraries/Airavata/Service/Profile/User/CPI/UserProfileService.php
+++ b/app/libraries/Airavata/Service/Profile/User/CPI/UserProfileService.php
@@ -1,7 +1,7 @@
 <?php
 namespace Airavata\Service\Profile\User\CPI;
 /**
- * Autogenerated by Thrift Compiler (0.9.3)
+ * Autogenerated by Thrift Compiler (0.10.0)
  *
  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
  *  @generated
@@ -128,6 +128,7 @@
   public function doesUserExist(\Airavata\Model\Security\AuthzToken $authzToken, $userId, $gatewayId);
 }
 
+
 class UserProfileServiceClient implements \Airavata\Service\Profile\User\CPI\UserProfileServiceIf {
   protected $input_ = null;
   protected $output_ = null;
@@ -494,6 +495,7 @@
 
 }
 
+
 // HELPER FUNCTIONS AND STRUCTURES
 
 class UserProfileService_addUserProfile_args {