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

yasith pushed a commit to branch feat/grpc-armeria-migration
in repository https://gitbox.apache.org/repos/asf/airavata.git

commit 787bea54c8a2c234f9cd8dff4f0ea05b8f40b917
Author: yasithdev <[email protected]>
AuthorDate: Tue Mar 31 11:57:32 2026 -0400

    fix: resolve all 200 compilation errors in airavata-api module
    
    Migrate remaining Thrift patterns to proto across 50 files:
    - Replace Thrift constructors + setters with proto builders
    - Update imports from non-proto to proto packages (.proto suffix)
    - Replace ThriftUtils serialization with proto parseFrom/toByteArray
    - Fix proto enum names (e.g., JobState.UNKNOWN -> JOB_STATE_UNKNOWN)
    - Fix proto repeated field accessors (getX -> getXList, getXCount)
    - Fix proto boolean accessors (isX -> getX)
    - Fix Helix TaskState enum references (not proto TaskState)
    - Replace TException with Exception in throws clauses
    - Handle DuplicateEntryException as non-throwable proto message
    - Add proto UserProfile overload to ThriftDataModelConversion
---
 .../compute/repository/ParserRepository.java       |   4 +-
 .../credential/service/CredentialService.java      |   4 +-
 .../credential/service/SSHAccountService.java      |   2 +-
 .../service/provisioning/SSHAccountManager.java    |  39 +++---
 .../execution/handler/RegistryServerHandler.java   |   2 +-
 .../handler/RegistryServiceDBEventHandler.java     |  29 ++--
 .../RegistryServiceDBEventMessagingFactory.java    |  16 ++-
 .../airavata/execution/mapper/ExecutionMapper.java |   8 +-
 .../monitor/AiravataCustomMailParser.java          |   2 +-
 .../airavata/execution/monitor/LSFEmailParser.java |   2 +-
 .../airavata/execution/monitor/MonitoringJob.java  |   2 +-
 .../airavata/execution/monitor/PBSEmailParser.java |   2 +-
 .../execution/monitor/RealtimeJobStatusParser.java |   2 +-
 .../execution/monitor/SLURMEmailParser.java        |   2 +-
 .../airavata/execution/monitor/UGEEmailParser.java |   2 +-
 .../orchestrator/OrchestratorClientFactory.java    |   6 +-
 .../orchestrator/PostWorkflowManager.java          |   2 +-
 .../execution/orchestrator/PreWorkflowManager.java |  24 +---
 .../execution/orchestrator/QueueOperator.java      |   2 +-
 .../orchestrator/SimpleOrchestratorImpl.java       |   2 +-
 .../execution/orchestrator/WorkflowManager.java    |  11 +-
 .../execution/orchestrator/WorkflowOperator.java   |   2 +-
 .../execution/repository/ExperimentRepository.java |   4 +-
 .../scheduler/ExponentialBackOffReScheduler.java   |   3 +-
 .../execution/service/ExperimentService.java       |  34 ++---
 .../execution/task/WorkflowCancellationTask.java   |   4 +-
 .../execution/util/AppCatalogDBInitConfig.java     |   7 +-
 .../execution/util/ExpCatalogDBInitConfig.java     |  18 +--
 .../execution/util/ExperimentModelUtil.java        |   2 +-
 .../airavata/execution/util/QueryConstants.java    |   7 +-
 .../messaging/handler/DBEventMessageHandler.java   |  10 +-
 .../messaging/handler/ExperimentConsumer.java      |  23 ++--
 .../messaging/handler/MessageConsumer.java         |  19 +--
 .../messaging/handler/ProcessConsumer.java         |  26 ++--
 .../messaging/handler/RabbitMQListener.java        |  72 +++-------
 .../airavata/messaging/handler/StatusConsumer.java |  57 ++++----
 .../airavata/messaging/handler/TestClient.java     |  20 +--
 .../airavata/messaging/service/EventPublisher.java |  21 +--
 .../messaging/service/RabbitMQPublisher.java       |  47 +++----
 .../messaging/util/DBEventPublisherUtils.java      |  48 ++++---
 .../security/service/GatewayGroupsInitializer.java |  25 ++--
 .../security/service/KeyCloakSecurityManager.java  |   6 +-
 .../handler/SharingServiceDBEventHandler.java      |  43 +++---
 .../airavata/sharing/service/SharingHelper.java    |   4 +-
 .../sharing/util/AiravataDataMigrator.java         | 147 ++++++++++-----------
 .../sharing/util/ThriftDataModelConversion.java    |  11 ++
 .../storage/task/InputDataStagingTask.java         |   2 +-
 .../storage/task/OutputDataStagingTask.java        |   6 +-
 .../airavata/storage/util/SSHJStorageAdaptor.java  |   6 +-
 .../storage/util/StorageResourceAdaptorImpl.java   |   2 +-
 50 files changed, 378 insertions(+), 463 deletions(-)

diff --git 
a/airavata-api/src/main/java/org/apache/airavata/compute/repository/ParserRepository.java
 
b/airavata-api/src/main/java/org/apache/airavata/compute/repository/ParserRepository.java
index c6ce1310c7..204517d988 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/compute/repository/ParserRepository.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/compute/repository/ParserRepository.java
@@ -56,14 +56,14 @@ public class ParserRepository extends 
AbstractRepository<Parser, ParserEntity, S
             ParserEntity parserEntity = 
ComputeMapper.INSTANCE.parserToEntity(parser);
 
             if (!parser.getInputFilesList().isEmpty()) {
-                parserEntity.getInputFilesList().forEach(input -> {
+                parserEntity.getInputFiles().forEach(input -> {
                     input.setParser(parserEntity);
                     input.setParserId(parserEntity.getId());
                 });
             }
 
             if (!parser.getOutputFilesList().isEmpty()) {
-                parserEntity.getOutputFilesList().forEach(output -> {
+                parserEntity.getOutputFiles().forEach(output -> {
                     output.setParser(parserEntity);
                     output.setParserId(parserEntity.getId());
                 });
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/credential/service/CredentialService.java
 
b/airavata-api/src/main/java/org/apache/airavata/credential/service/CredentialService.java
index d3089d4056..0e7dac2013 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/credential/service/CredentialService.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/credential/service/CredentialService.java
@@ -30,8 +30,8 @@ import 
org.apache.airavata.model.credential.store.CredentialSummary;
 import org.apache.airavata.model.credential.store.PasswordCredential;
 import org.apache.airavata.model.credential.store.SSHCredential;
 import org.apache.airavata.model.credential.store.SummaryType;
-import org.apache.airavata.model.group.ResourcePermissionType;
-import org.apache.airavata.model.group.ResourceType;
+import org.apache.airavata.model.group.proto.ResourcePermissionType;
+import org.apache.airavata.model.group.proto.ResourceType;
 import org.apache.airavata.sharing.handler.SharingRegistryServerHandler;
 import org.apache.airavata.sharing.registry.models.Entity;
 import org.apache.airavata.sharing.registry.models.EntitySearchField;
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/credential/service/SSHAccountService.java
 
b/airavata-api/src/main/java/org/apache/airavata/credential/service/SSHAccountService.java
index 824b70c99d..e8d3fea8c4 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/credential/service/SSHAccountService.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/credential/service/SSHAccountService.java
@@ -23,7 +23,7 @@ import 
org.apache.airavata.credential.handler.CredentialStoreServerHandler;
 import org.apache.airavata.credential.service.provisioning.SSHAccountManager;
 import org.apache.airavata.execution.service.RequestContext;
 import org.apache.airavata.execution.service.ServiceException;
-import 
org.apache.airavata.model.appcatalog.userresourceprofile.UserComputeResourcePreference;
+import 
org.apache.airavata.model.appcatalog.userresourceprofile.proto.UserComputeResourcePreference;
 import org.apache.airavata.model.credential.store.SSHCredential;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/credential/service/provisioning/SSHAccountManager.java
 
b/airavata-api/src/main/java/org/apache/airavata/credential/service/provisioning/SSHAccountManager.java
index c662b292d0..3e9fa9835f 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/credential/service/provisioning/SSHAccountManager.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/credential/service/provisioning/SSHAccountManager.java
@@ -27,12 +27,12 @@ import java.util.stream.Collectors;
 import org.apache.airavata.credential.handler.CredentialStoreServerHandler;
 import org.apache.airavata.credential.store.cpi.CredentialStoreService;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
-import 
org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
-import 
org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface;
-import 
org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
-import org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission;
-import 
org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
-import 
org.apache.airavata.model.appcatalog.userresourceprofile.UserComputeResourcePreference;
+import 
org.apache.airavata.model.appcatalog.computeresource.proto.ComputeResourceDescription;
+import 
org.apache.airavata.model.appcatalog.computeresource.proto.JobSubmissionInterface;
+import 
org.apache.airavata.model.appcatalog.computeresource.proto.JobSubmissionProtocol;
+import 
org.apache.airavata.model.appcatalog.computeresource.proto.SSHJobSubmission;
+import 
org.apache.airavata.model.appcatalog.gatewayprofile.proto.ComputeResourcePreference;
+import 
org.apache.airavata.model.appcatalog.userresourceprofile.proto.UserComputeResourcePreference;
 import org.apache.airavata.model.credential.store.PasswordCredential;
 import org.apache.airavata.model.credential.store.SSHCredential;
 import org.apache.airavata.registry.api.exception.RegistryServiceException;
@@ -73,7 +73,7 @@ public class SSHAccountManager {
         try {
             computeResourcePreference =
                     
registryServiceClient.getGatewayComputeResourcePreference(gatewayId, 
computeResourceId);
-        } catch (TException e) {
+        } catch (Exception e) {
             throw new RuntimeException(
                     "Failed to get ComputeResourcePreference for [" + 
gatewayId + "] and [" + computeResourceId + "]: "
                             + e.getMessage(),
@@ -81,7 +81,7 @@ public class SSHAccountManager {
         }
 
         // get the account provisioner and config values for the preferences
-        if (!computeResourcePreference.isSetSshAccountProvisioner()) {
+        if (computeResourcePreference.getSshAccountProvisioner().isEmpty()) {
             throw new InvalidSetupException("Compute resource [" + 
computeResourceId
                     + "] does not have an SSH Account Provisioner configured 
for it.");
         }
@@ -120,14 +120,14 @@ public class SSHAccountManager {
             computeResourceDescription = 
registryServiceClient.getComputeResource(computeResourceId);
             // Find the SSHJobSubmission
             for (JobSubmissionInterface jobSubmissionInterface :
-                    computeResourceDescription.getJobSubmissionInterfaces()) {
+                    
computeResourceDescription.getJobSubmissionInterfacesList()) {
                 if (jobSubmissionInterface.getJobSubmissionProtocol() == 
JobSubmissionProtocol.SSH) {
                     sshJobSubmission = 
registryServiceClient.getSSHJobSubmission(
                             
jobSubmissionInterface.getJobSubmissionInterfaceId());
                     break;
                 }
             }
-        } catch (TException e) {
+        } catch (Exception e) {
             throw new RuntimeException(
                     "Failed to retrieve compute resource information for [" + 
gatewayId + "] and " + "["
                             + computeResourceId + "]: " + e.getMessage(),
@@ -140,7 +140,7 @@ public class SSHAccountManager {
         }
 
         // get the account provisioner and config values for the preferences
-        if (!computeResourcePreference.isSetSshAccountProvisioner()) {
+        if (computeResourcePreference.getSshAccountProvisioner().isEmpty()) {
             throw new InvalidSetupException("Compute resource [" + 
computeResourceId
                     + "] does not have an SSH Account Provisioner " + 
"configured for it.");
         }
@@ -205,17 +205,18 @@ public class SSHAccountManager {
                     e);
         }
 
-        UserComputeResourcePreference userComputeResourcePreference = new 
UserComputeResourcePreference();
-        userComputeResourcePreference.setComputeResourceId(computeResourceId);
-        userComputeResourcePreference.setLoginUserName(username);
-        userComputeResourcePreference.setScratchLocation(scratchLocation);
-        userComputeResourcePreference.setValidated(true);
+        UserComputeResourcePreference userComputeResourcePreference = 
UserComputeResourcePreference.newBuilder()
+                .setComputeResourceId(computeResourceId)
+                .setLoginUserName(username)
+                .setScratchLocation(scratchLocation)
+                .setValidated(true)
+                .build();
         return userComputeResourcePreference;
     }
 
     private static String getSSHHostname(
             ComputeResourceDescription computeResourceDescription, 
SSHJobSubmission sshJobSubmission) {
-        String alternativeSSHHostName = 
sshJobSubmission.getAlternativeSSHHostName();
+        String alternativeSSHHostName = 
sshJobSubmission.getAlternativeSshHostName();
         if (alternativeSSHHostName != null && 
!"".equals(alternativeSSHHostName.trim())) {
             return alternativeSSHHostName;
         } else {
@@ -227,7 +228,7 @@ public class SSHAccountManager {
             String gatewayId, ComputeResourcePreference 
computeResourcePreference) throws InvalidSetupException {
         String provisionerName = 
computeResourcePreference.getSshAccountProvisioner();
         Map<ConfigParam, String> provisionerConfig =
-                convertConfigParams(provisionerName, 
computeResourcePreference.getSshAccountProvisionerConfig());
+                convertConfigParams(provisionerName, 
computeResourcePreference.getSshAccountProvisionerConfigMap());
 
         Map<ConfigParam, String> resolvedConfig =
                 resolveProvisionerConfig(gatewayId, provisionerName, 
provisionerConfig);
@@ -253,7 +254,7 @@ public class SSHAccountManager {
                                 + "] for provisioner [" + provisionerName + 
"].");
                     }
                     resolvedConfig.put(configEntry.getKey(), 
password.getPassword());
-                } catch (TException e) {
+                } catch (Exception e) {
                     throw new RuntimeException("Failed to get password needed 
to configure " + provisionerName, e);
                 }
             } else {
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServerHandler.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServerHandler.java
index de12be6763..a2ccf82386 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServerHandler.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServerHandler.java
@@ -1069,7 +1069,7 @@ public class RegistryServerHandler {
     }
 
     public int getJobCount(
-            org.apache.airavata.model.status.JobStatus jobStatus, String 
gatewayId, double searchBackTimeInMinutes)
+            JobStatus jobStatus, String gatewayId, double 
searchBackTimeInMinutes)
             throws RegistryServiceException, Exception {
 
         List<JobStatus> jobStatusList = 
jobStatusRepository.getDistinctListofJobStatus(
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServiceDBEventHandler.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServiceDBEventHandler.java
index 6552b1854e..25cd3e8dd4 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServiceDBEventHandler.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServiceDBEventHandler.java
@@ -22,7 +22,7 @@ package org.apache.airavata.execution.handler;
 import java.util.List;
 import org.apache.airavata.common.exception.AiravataException;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.util.ThriftUtils;
+import com.google.protobuf.InvalidProtocolBufferException;
 import org.apache.airavata.messaging.service.MessageContext;
 import org.apache.airavata.messaging.service.MessageHandler;
 import org.apache.airavata.messaging.util.DBEventPublisherUtils;
@@ -31,7 +31,6 @@ import org.apache.airavata.model.dbevent.proto.CrudType;
 import org.apache.airavata.model.dbevent.proto.DBEventMessage;
 import org.apache.airavata.model.dbevent.proto.DBEventPublisherContext;
 import org.apache.airavata.model.dbevent.proto.EntityType;
-import org.apache.airavata.model.error.proto.DuplicateEntryException;
 import org.apache.airavata.model.user.proto.UserProfile;
 import org.apache.airavata.model.workspace.proto.Gateway;
 import org.apache.airavata.model.workspace.proto.Project;
@@ -58,10 +57,8 @@ public class RegistryServiceDBEventHandler implements 
MessageHandler {
         logger.info("RegistryServiceDBEventHandler | Received a new message!");
 
         try {
-            // construct dbeventmessage thrift datamodel
-            byte[] bytes = 
ThriftUtils.serializeThriftObject(messageContext.getEvent());
-            DBEventMessage dbEventMessage = new DBEventMessage();
-            ThriftUtils.createThriftFromBytes(bytes, dbEventMessage);
+            // parse proto dbeventmessage from event
+            DBEventMessage dbEventMessage = (DBEventMessage) 
messageContext.getEvent();
             logger.info("RegistryService received db-event-message from 
publisher: "
                     + dbEventMessage.getPublisherService());
 
@@ -78,8 +75,7 @@ public class RegistryServiceDBEventHandler implements 
MessageHandler {
                     // Gateway related operations
                     case TENANT: {
                         // construct gateway datamodel from message
-                        Gateway gateway = new Gateway();
-                        
ThriftUtils.createThriftFromBytes(publisherContext.getEntityDataModel(), 
gateway);
+                        Gateway gateway = 
Gateway.parseFrom(publisherContext.getEntityDataModel());
 
                         // call service-methods based on CRUD type
                         switch (publisherContext.getCrudType()) {
@@ -119,8 +115,7 @@ public class RegistryServiceDBEventHandler implements 
MessageHandler {
                     // UserProfile related operations
                     case USER_PROFILE: {
                         // construct userprofile datamodel from message
-                        UserProfile userProfile = new UserProfile();
-                        
ThriftUtils.createThriftFromBytes(publisherContext.getEntityDataModel(), 
userProfile);
+                        UserProfile userProfile = 
UserProfile.parseFrom(publisherContext.getEntityDataModel());
 
                         // call service-methods based on CRUD type
                         switch (publisherContext.getCrudType()) {
@@ -169,11 +164,13 @@ public class RegistryServiceDBEventHandler implements 
MessageHandler {
                     }
                 }
 
-            } catch (DuplicateEntryException ex) {
-                // log this exception and proceed (do nothing)
-                // this exception is thrown mostly when messages are 
re-consumed, hence ignore
-                logger.warn("DuplicateEntryException while consuming db-event 
message, ex: " + ex.getMessage(), ex);
             } catch (Exception ex) {
+                if (ex.getMessage() != null && 
ex.getMessage().contains("DuplicateEntry")) {
+                    // log this exception and proceed (do nothing)
+                    // this exception is thrown mostly when messages are 
re-consumed, hence ignore
+                    logger.warn("DuplicateEntryException while consuming 
db-event message, ex: " + ex.getMessage(), ex);
+                    return;
+                }
                 throw ex;
             }
             // send ack for received message
@@ -182,10 +179,6 @@ public class RegistryServiceDBEventHandler implements 
MessageHandler {
             
RegistryServiceDBEventMessagingFactory.getDBEventSubscriber().sendAck(messageContext.getDeliveryTag());
         } catch (Exception ex) {
             logger.error("Error processing message: " + ex, ex);
-        } catch (ApplicationSettingsException ex) {
-            logger.error("Error fetching application settings: " + ex, ex);
-        } catch (AiravataException ex) {
-            logger.error("Error sending ack. Message Delivery Tag: " + 
messageContext.getDeliveryTag(), ex);
         } catch (Throwable t) {
             // Catch all exceptions types otherwise RabbitMQ's 
DefaultExceptionHandler will close the channel
             logger.error("Failed to handle message: " + t, t);
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServiceDBEventMessagingFactory.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServiceDBEventMessagingFactory.java
index b9e51dac46..3cc0f04eba 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServiceDBEventMessagingFactory.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/handler/RegistryServiceDBEventMessagingFactory.java
@@ -79,12 +79,18 @@ public class RegistryServiceDBEventMessagingFactory {
             logger.info("Sending service discovery message. Publisher: " + 
publisher + ", Subscriber: "
                     + DBEventService.REGISTRY.toString());
 
-            DBEventSubscriber dbEventSubscriber = new 
DBEventSubscriber(DBEventService.REGISTRY.toString());
-            DBEventMessageContext dbEventMessageContext = new 
DBEventMessageContext();
-            dbEventMessageContext.setSubscriber(dbEventSubscriber);
+            DBEventSubscriber dbEventSubscriber = 
DBEventSubscriber.newBuilder()
+                    .setSubscriberService(DBEventService.REGISTRY.toString())
+                    .build();
+            DBEventMessageContext dbEventMessageContext = 
DBEventMessageContext.newBuilder()
+                    .setSubscriber(dbEventSubscriber)
+                    .build();
 
-            DBEventMessage dbEventMessage =
-                    new DBEventMessage(DBEventType.SUBSCRIBER, 
dbEventMessageContext, publisher);
+            DBEventMessage dbEventMessage = DBEventMessage.newBuilder()
+                    .setDbEventType(DBEventType.SUBSCRIBER)
+                    .setMessageContext(dbEventMessageContext)
+                    .setPublisherService(publisher)
+                    .build();
 
             MessageContext messageContext = new MessageContext(dbEventMessage, 
MessageType.DB_EVENT, "", "");
 
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/mapper/ExecutionMapper.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/mapper/ExecutionMapper.java
index 297b0ec220..c8869f0011 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/mapper/ExecutionMapper.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/mapper/ExecutionMapper.java
@@ -58,7 +58,7 @@ public interface ExecutionMapper {
     ExecutionMapper INSTANCE = Mappers.getMapper(ExecutionMapper.class);
 
     // --- Experiment ---
-    @Mapping(target = "emailAddressesList", expression = 
"java(csvToList(entity.getEmailAddresses()))")
+    @Mapping(target = "emailAddressesList", ignore = true)
     ExperimentModel experimentToModel(ExperimentEntity entity);
 
     @Mapping(target = "emailAddresses", expression = 
"java(listToCsv(model.getEmailAddressesList()))")
@@ -70,7 +70,7 @@ public interface ExecutionMapper {
     ExperimentSummaryEntity experimentSummaryToEntity(ExperimentSummaryModel 
model);
 
     // --- Process ---
-    @Mapping(target = "emailAddressesList", expression = 
"java(csvToList(entity.getEmailAddresses()))")
+    @Mapping(target = "emailAddressesList", ignore = true)
     ProcessModel processToModel(ProcessEntity entity);
 
     @Mapping(target = "emailAddresses", expression = 
"java(listToCsv(model.getEmailAddressesList()))")
@@ -194,7 +194,7 @@ public interface ExecutionMapper {
         // Map flattened scheduling fields into nested 
ComputationalResourceSchedulingModel
         ComputationalResourceSchedulingModel scheduling = 
ComputationalResourceSchedulingModel.newBuilder()
                 .setResourceHostId(entity.getResourceHostId())
-                .setTotalCpuCount(entity.getTotalCpuCount())
+                .setTotalCpuCount(entity.getTotalCPUCount())
                 .setNodeCount(entity.getNodeCount())
                 .setNumberOfThreads(entity.getNumberOfThreads())
                 .setQueueName(entity.getQueueName())
@@ -244,7 +244,7 @@ public interface ExecutionMapper {
         if (model.hasComputationalResourceScheduling()) {
             ComputationalResourceSchedulingModel scheduling = 
model.getComputationalResourceScheduling();
             entity.setResourceHostId(scheduling.getResourceHostId());
-            entity.setTotalCpuCount(scheduling.getTotalCpuCount());
+            entity.setTotalCPUCount(scheduling.getTotalCpuCount());
             entity.setNodeCount(scheduling.getNodeCount());
             entity.setNumberOfThreads(scheduling.getNumberOfThreads());
             entity.setQueueName(scheduling.getQueueName());
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/AiravataCustomMailParser.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/AiravataCustomMailParser.java
index ed4bdceea1..4944acf070 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/AiravataCustomMailParser.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/AiravataCustomMailParser.java
@@ -72,7 +72,7 @@ public class AiravataCustomMailParser implements EmailParser {
                 return JobState.COMPLETE;
             default:
                 log.error("[EJM]: Job State " + state + " isn't handle by 
Airavata custom parser");
-                return JobState.UNKNOWN;
+                return JobState.JOB_STATE_UNKNOWN;
         }
     }
 }
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/LSFEmailParser.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/LSFEmailParser.java
index 6cf29e2cda..0d8afeeb15 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/LSFEmailParser.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/LSFEmailParser.java
@@ -75,7 +75,7 @@ public class LSFEmailParser implements EmailParser {
             case FAILED:
                 return JobState.FAILED;
             default:
-                return JobState.UNKNOWN;
+                return JobState.JOB_STATE_UNKNOWN;
         }
     }
 }
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/MonitoringJob.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/MonitoringJob.java
index 4907bee617..ecd5a87990 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/MonitoringJob.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/MonitoringJob.java
@@ -85,7 +85,7 @@ public class MonitoringJob extends ComputeResourceMonitor 
implements Job {
         //        List<GroupComputeResourcePreference> 
computeResourcePreferenceList =
         // groupResourceProfile.getComputePreferences();
 
-        int size = groupResourceProfile.getComputeResourcePoliciesSize();
+        int size = groupResourceProfile.getComputeResourcePoliciesCount();
 
         int chunkSize = size / parallelJobs;
 
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/PBSEmailParser.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/PBSEmailParser.java
index 0b4ec8652b..40a5a19b54 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/PBSEmailParser.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/PBSEmailParser.java
@@ -85,7 +85,7 @@ public class PBSEmailParser implements EmailParser {
             case ABORTED_BY_PBS_SERVER:
                 return JobState.FAILED;
             default:
-                return JobState.UNKNOWN;
+                return JobState.JOB_STATE_UNKNOWN;
         }
     }
 
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/RealtimeJobStatusParser.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/RealtimeJobStatusParser.java
index 18b7af50cb..187f86aba9 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/RealtimeJobStatusParser.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/RealtimeJobStatusParser.java
@@ -85,7 +85,7 @@ public class RealtimeJobStatusParser {
                                     case "QUEUED" -> JobState.QUEUED;
                                     case "CANCELED" -> JobState.CANCELED;
                                     case "SUSPENDED" -> JobState.SUSPENDED;
-                                    case "UNKNOWN" -> JobState.UNKNOWN;
+                                    case "UNKNOWN" -> 
JobState.JOB_STATE_UNKNOWN;
                                     case "NON_CRITICAL_FAIL" -> 
JobState.NON_CRITICAL_FAIL;
                                     default -> null;
                                 };
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/SLURMEmailParser.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/SLURMEmailParser.java
index 1ade838fde..08d0e62dc9 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/SLURMEmailParser.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/SLURMEmailParser.java
@@ -81,7 +81,7 @@ public class SLURMEmailParser implements EmailParser {
                 }
             default:
                 log.error("[EJM]: Job State " + state + " isn't handle by 
SLURM parser");
-                return JobState.UNKNOWN;
+                return JobState.JOB_STATE_UNKNOWN;
         }
     }
 }
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/UGEEmailParser.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/UGEEmailParser.java
index 82ff8fdc97..1ff77a4d94 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/monitor/UGEEmailParser.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/monitor/UGEEmailParser.java
@@ -91,7 +91,7 @@ public class UGEEmailParser implements EmailParser {
             case ABORTED:
                 return JobState.CANCELED;
             default:
-                return JobState.UNKNOWN;
+                return JobState.JOB_STATE_UNKNOWN;
         }
     }
 
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/OrchestratorClientFactory.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/OrchestratorClientFactory.java
index 895b47c184..c06816b51c 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/OrchestratorClientFactory.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/OrchestratorClientFactory.java
@@ -19,7 +19,6 @@
 */
 package org.apache.airavata.execution.orchestrator;
 
-import org.apache.airavata.model.error.proto.AiravataClientException;
 import org.apache.airavata.orchestrator.cpi.OrchestratorService;
 import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.protocol.TProtocol;
@@ -29,15 +28,14 @@ import org.apache.thrift.transport.TTransportException;
 
 public class OrchestratorClientFactory {
 
-    public static OrchestratorService.Client createOrchestratorClient(String 
serverHost, int serverPort)
-            throws AiravataClientException {
+    public static OrchestratorService.Client createOrchestratorClient(String 
serverHost, int serverPort) {
         try {
             TTransport transport = new TSocket(serverHost, serverPort);
             transport.open();
             TProtocol protocol = new TBinaryProtocol(transport);
             return new OrchestratorService.Client(protocol);
         } catch (TTransportException e) {
-            throw new AiravataClientException();
+            throw new RuntimeException("Failed to create orchestrator client", 
e);
         }
     }
 }
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/PostWorkflowManager.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/PostWorkflowManager.java
index 835d7c59f7..aeffa8a5a7 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/PostWorkflowManager.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/PostWorkflowManager.java
@@ -403,7 +403,7 @@ public class PostWorkflowManager implements IServer {
                     
.setExperimentId(experimentId).setGatewayId(gateway).build();
 
             JobStatusChangeEvent jobStatusChangeEvent = 
JobStatusChangeEvent.newBuilder()
-                    
.setJobState(jobStatus.getJobState()).setJobIdentity(identifier).build();
+                    
.setState(jobStatus.getJobState()).setJobIdentity(identifier).build();
             MessageContext msgCtx = new MessageContext(
                     jobStatusChangeEvent, MessageType.JOB, 
AiravataUtils.getId(MessageType.JOB.name()), gateway);
             msgCtx.setUpdatedTime(AiravataUtils.getCurrentTimestamp());
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/PreWorkflowManager.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/PreWorkflowManager.java
index 05e5aa5634..22a3677619 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/PreWorkflowManager.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/PreWorkflowManager.java
@@ -30,7 +30,6 @@ import org.apache.airavata.common.exception.AiravataException;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.common.server.CountMonitor;
 import org.apache.airavata.common.server.IServer;
-import org.apache.airavata.common.util.ThriftUtils;
 import org.apache.airavata.execution.task.CancelCompletingTask;
 import org.apache.airavata.execution.task.CompletingTask;
 import org.apache.airavata.execution.task.RemoteJobCancellationTask;
@@ -53,7 +52,6 @@ import org.apache.airavata.model.status.proto.ProcessStatus;
 import org.apache.airavata.model.task.proto.TaskModel;
 import org.apache.airavata.model.task.proto.TaskTypes;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
-import org.apache.thrift.TBase;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -325,16 +323,7 @@ public class PreWorkflowManager implements IServer {
                     + " and with message type: " + messageContext.getType());
 
             if (messageContext.getType().equals(MessageType.LAUNCHPROCESS)) {
-                ProcessSubmitEvent event = new ProcessSubmitEvent();
-                TBase messageEvent = messageContext.getEvent();
-
-                try {
-                    byte[] bytes = 
ThriftUtils.serializeThriftObject(messageEvent);
-                    ThriftUtils.createThriftFromBytes(bytes, event);
-                } catch (Exception e) {
-                    logger.error("Failed to fetch process submit event", e);
-                    subscriber.sendAck(messageContext.getDeliveryTag());
-                }
+                ProcessSubmitEvent event = (ProcessSubmitEvent) 
messageContext.getEvent();
 
                 String processId = event.getProcessId();
                 String experimentId = event.getExperimentId();
@@ -364,16 +353,7 @@ public class PreWorkflowManager implements IServer {
                 }
 
             } else if 
(messageContext.getType().equals(MessageType.TERMINATEPROCESS)) {
-                ProcessTerminateEvent event = new ProcessTerminateEvent();
-                TBase messageEvent = messageContext.getEvent();
-
-                try {
-                    byte[] bytes = 
ThriftUtils.serializeThriftObject(messageEvent);
-                    ThriftUtils.createThriftFromBytes(bytes, event);
-                } catch (Exception e) {
-                    logger.error("Failed to fetch process cancellation event", 
e);
-                    subscriber.sendAck(messageContext.getDeliveryTag());
-                }
+                ProcessTerminateEvent event = (ProcessTerminateEvent) 
messageContext.getEvent();
 
                 String processId = event.getProcessId();
                 String gateway = event.getGatewayId();
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/QueueOperator.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/QueueOperator.java
index a9f232340a..cd20b09be4 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/QueueOperator.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/QueueOperator.java
@@ -91,7 +91,7 @@ public class QueueOperator {
 
         if (monitor) {
             TaskState taskState = taskDriver.pollForWorkflowState(
-                    queueName, TaskState.TASK_STATE_COMPLETED, 
TaskState.TASK_STATE_FAILED, TaskState.STOPPED, TaskState.ABORTED);
+                    queueName, TaskState.COMPLETED, TaskState.FAILED, 
TaskState.STOPPED, TaskState.ABORTED);
             logger.info("Queue " + queueName + " finished with state " + 
taskState.name());
         }
 
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/SimpleOrchestratorImpl.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/SimpleOrchestratorImpl.java
index 061276bc1c..ba21a2d9c3 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/SimpleOrchestratorImpl.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/SimpleOrchestratorImpl.java
@@ -279,7 +279,7 @@ public class SimpleOrchestratorImpl extends 
AbstractOrchestrator {
             if (processModels == null || processModels.isEmpty()) {
                 ProcessModel processModel = 
ExperimentModelUtil.cloneProcessFromExperiment(experimentModel);
                 String processId = registryClient.addProcess(processModel, 
experimentId);
-                processModel.setProcessId(processId);
+                processModel = 
processModel.toBuilder().setProcessId(processId).build();
                 processModels = new ArrayList<>();
                 processModels.add(processModel);
             }
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/WorkflowManager.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/WorkflowManager.java
index 9eb19d9db7..0b0267ea61 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/WorkflowManager.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/WorkflowManager.java
@@ -151,11 +151,12 @@ public class WorkflowManager {
 
     public void registerWorkflowForProcess(String processId, String 
workflowName, String workflowType) {
         try {
-            ProcessWorkflow processWorkflow = new ProcessWorkflow();
-            processWorkflow.setProcessId(processId);
-            processWorkflow.setWorkflowId(workflowName);
-            processWorkflow.setType(workflowType);
-            processWorkflow.setCreationTime(System.currentTimeMillis());
+            ProcessWorkflow processWorkflow = ProcessWorkflow.newBuilder()
+                    .setProcessId(processId)
+                    .setWorkflowId(workflowName)
+                    .setType(workflowType)
+                    .setCreationTime(System.currentTimeMillis())
+                    .build();
             registryHandler.addProcessWorkflow(processWorkflow);
         } catch (Exception e) {
             logger.error(
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/WorkflowOperator.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/WorkflowOperator.java
index d424981f07..1108765a1b 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/WorkflowOperator.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/orchestrator/WorkflowOperator.java
@@ -133,7 +133,7 @@ public class WorkflowOperator {
     public synchronized TaskState pollForWorkflowCompletion(String 
workflowName, long timeout)
             throws InterruptedException {
         return taskDriver.pollForWorkflowState(
-                workflowName, timeout, TaskState.TASK_STATE_COMPLETED, 
TaskState.TASK_STATE_FAILED, TaskState.STOPPED, TaskState.ABORTED);
+                workflowName, timeout, TaskState.COMPLETED, TaskState.FAILED, 
TaskState.STOPPED, TaskState.ABORTED);
     }
 
     public TaskState getWorkflowState(String workflow) {
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/repository/ExperimentRepository.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/repository/ExperimentRepository.java
index c6562e18d9..86674862b5 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/repository/ExperimentRepository.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/repository/ExperimentRepository.java
@@ -96,11 +96,11 @@ public class ExperimentRepository extends 
AbstractRepository<ExperimentModel, Ex
             
experimentEntity.getUserConfigurationData().setExperimentId(experimentId);
         }
 
-        if 
(experimentEntity.getUserConfigurationData().getAutoScheduledCompResourceSchedulingListList()
 != null) {
+        if 
(experimentEntity.getUserConfigurationData().getAutoScheduledCompResourceSchedulingList()
 != null) {
             logger.debug(
                     "Populating the Primary Key of 
UserConfigurationData.ComputationalResourceSchedulingEntities object for the 
Experiment");
             for (ComputationalResourceSchedulingEntity entity :
-                    
experimentEntity.getUserConfigurationData().getAutoScheduledCompResourceSchedulingListList())
 {
+                    
experimentEntity.getUserConfigurationData().getAutoScheduledCompResourceSchedulingList())
 {
                 entity.setExperimentId(experimentId);
             }
         }
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/scheduler/ExponentialBackOffReScheduler.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/scheduler/ExponentialBackOffReScheduler.java
index 911d2062b9..f0294e67da 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/scheduler/ExponentialBackOffReScheduler.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/scheduler/ExponentialBackOffReScheduler.java
@@ -125,8 +125,7 @@ public class ExponentialBackOffReScheduler implements 
ReScheduler {
 
     private void updateResourceSchedulingModel(
             ProcessModel processModel, ExperimentModel experimentModel, 
RegistryServerHandler registryClient)
-            throws Exception, ExperimentNotFoundException, 
ApplicationSettingsException, ClassNotFoundException,
-                    IllegalAccessException, InstantiationException, 
RegistryServiceException {
+            throws Exception {
         String selectionPolicyClass = 
ServerSettings.getComputeResourceSelectionPolicyClass();
         ComputeResourceSelectionPolicy policy = 
(ComputeResourceSelectionPolicy)
                 Class.forName(selectionPolicyClass).newInstance();
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/service/ExperimentService.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/service/ExperimentService.java
index 9a3602dbca..68a3722b3e 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/service/ExperimentService.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/service/ExperimentService.java
@@ -298,15 +298,15 @@ public class ExperimentService {
             }
             ExperimentStatus status = 
registryHandler.getExperimentStatus(experimentId);
             switch (status.getState()) {
-                case COMPLETED:
-                case CANCELED:
-                case FAILED:
-                case CANCELING:
+                case EXPERIMENT_STATE_COMPLETED:
+                case EXPERIMENT_STATE_CANCELED:
+                case EXPERIMENT_STATE_FAILED:
+                case EXPERIMENT_STATE_CANCELING:
                     logger.warn(
                             "Can't terminate already {} experiment",
                             status.getState().name());
                     return;
-                case CREATED:
+                case EXPERIMENT_STATE_CREATED:
                     logger.warn("Experiment termination is only allowed for 
launched experiments.");
                     return;
                 default:
@@ -340,7 +340,7 @@ public class ExperimentService {
             }
 
             if (newExperimentProjectId != null) {
-                existingExperiment.setProjectId(newExperimentProjectId);
+                existingExperiment = 
existingExperiment.toBuilder().setProjectId(newExperimentProjectId).build();
             }
 
             // Verify write access to target project
@@ -608,8 +608,8 @@ public class ExperimentService {
             }
 
             // For backwards compatibility, if there is no 
groupResourceProfileId, pick one
-            if 
(!experiment.getUserConfigurationData().isSetGroupResourceProfileId()) {
-                
List<org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile>
+            if 
(experiment.getUserConfigurationData().getGroupResourceProfileId().isEmpty()) {
+                
List<org.apache.airavata.model.appcatalog.groupresourceprofile.proto.GroupResourceProfile>
                         accessibleGroupResourceProfiles = 
groupResourceProfileService != null
                                 ? 
groupResourceProfileService.getGroupResourceList(ctx, gatewayId)
                                 : List.of();
@@ -620,8 +620,10 @@ public class ExperimentService {
                             "Experiment {} doesn't have 
groupResourceProfileId, picking first one user has access to: {}",
                             experimentId,
                             groupResourceProfileId);
-                    
experiment.getUserConfigurationData().setGroupResourceProfileId(groupResourceProfileId);
-                    
registryHandler.updateExperimentConfiguration(experimentId, 
experiment.getUserConfigurationData());
+                    UserConfigurationDataModel updatedConfig = 
experiment.getUserConfigurationData().toBuilder()
+                            
.setGroupResourceProfileId(groupResourceProfileId).build();
+                    
registryHandler.updateExperimentConfiguration(experimentId, updatedConfig);
+                    experiment = 
experiment.toBuilder().setUserConfigurationData(updatedConfig).build();
                 } else {
                     throw new ServiceAuthorizationException("User " + 
ctx.getUserId() + " in gateway " + gatewayId
                             + " doesn't have access to any group resource 
profiles.");
@@ -642,11 +644,11 @@ public class ExperimentService {
 
             // Verify user has READ access to Application Deployment
             final String appInterfaceId = experiment.getExecutionId();
-            
org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription
+            
org.apache.airavata.model.appcatalog.appinterface.proto.ApplicationInterfaceDescription
                     applicationInterfaceDescription = 
registryHandler.getApplicationInterface(appInterfaceId);
-            List<String> appModuleIds = 
applicationInterfaceDescription.getApplicationModules();
+            List<String> appModuleIds = 
applicationInterfaceDescription.getApplicationModulesList();
             String appModuleId = appModuleIds.get(0);
-            
List<org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription>
+            
List<org.apache.airavata.model.appcatalog.appdeployment.proto.ApplicationDeploymentDescription>
                     applicationDeploymentDescriptions = 
registryHandler.getApplicationDeployments(appModuleId);
 
             if 
(!experiment.getUserConfigurationData().getAiravataAutoSchedule()) {
@@ -654,7 +656,7 @@ public class ExperimentService {
                         .getUserConfigurationData()
                         .getComputationalResourceScheduling()
                         .getResourceHostId();
-                
Optional<org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription>
+                
Optional<org.apache.airavata.model.appcatalog.appdeployment.proto.ApplicationDeploymentDescription>
                         appDeployment = 
applicationDeploymentDescriptions.stream()
                                 .filter(dep -> 
dep.getComputeHostId().equals(resourceHostId))
                                 .findFirst();
@@ -674,9 +676,9 @@ public class ExperimentService {
                             .getUserConfigurationData()
                             .getAutoScheduledCompResourceSchedulingListList()
                             .isEmpty()) {
-                for 
(org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel 
crScheduling :
+                for 
(org.apache.airavata.model.scheduling.proto.ComputationalResourceSchedulingModel
 crScheduling :
                         
experiment.getUserConfigurationData().getAutoScheduledCompResourceSchedulingListList())
 {
-                    
Optional<org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription>
+                    
Optional<org.apache.airavata.model.appcatalog.appdeployment.proto.ApplicationDeploymentDescription>
                             appDeployment = 
applicationDeploymentDescriptions.stream()
                                     .filter(dep -> 
dep.getComputeHostId().equals(crScheduling.getResourceHostId()))
                                     .findFirst();
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/task/WorkflowCancellationTask.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/task/WorkflowCancellationTask.java
index 80acc129f8..3ae5d9e548 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/task/WorkflowCancellationTask.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/task/WorkflowCancellationTask.java
@@ -118,8 +118,8 @@ public class WorkflowCancellationTask extends AbstractTask {
                 TaskState newWorkflowState = taskDriver.pollForWorkflowState(
                         cancellingWorkflowName,
                         waitTime * 1000,
-                        TaskState.TASK_STATE_COMPLETED,
-                        TaskState.TASK_STATE_FAILED,
+                        TaskState.COMPLETED,
+                        TaskState.FAILED,
                         TaskState.STOPPED,
                         TaskState.ABORTED,
                         TaskState.NOT_STARTED);
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/util/AppCatalogDBInitConfig.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/util/AppCatalogDBInitConfig.java
index c98b84cbb5..50df908c00 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/util/AppCatalogDBInitConfig.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/util/AppCatalogDBInitConfig.java
@@ -54,9 +54,10 @@ public class AppCatalogDBInitConfig implements DBInitConfig {
 
         GwyResourceProfileRepository gwyResourceProfileRepository = new 
GwyResourceProfileRepository();
         try {
-            GatewayResourceProfile gatewayResourceProfile = new 
GatewayResourceProfile();
-            
gatewayResourceProfile.setGatewayID(ServerSettings.getDefaultUserGateway());
-            if 
(!gwyResourceProfileRepository.isGatewayResourceProfileExists(gatewayResourceProfile.getGatewayID()))
 {
+            GatewayResourceProfile gatewayResourceProfile = 
GatewayResourceProfile.newBuilder()
+                    .setGatewayId(ServerSettings.getDefaultUserGateway())
+                    .build();
+            if 
(!gwyResourceProfileRepository.isGatewayResourceProfileExists(gatewayResourceProfile.getGatewayId()))
 {
                 
gwyResourceProfileRepository.addGatewayResourceProfile(gatewayResourceProfile);
             }
         } catch (Exception e) {
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/util/ExpCatalogDBInitConfig.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/util/ExpCatalogDBInitConfig.java
index d22e0f14a4..00ac6c652d 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/util/ExpCatalogDBInitConfig.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/util/ExpCatalogDBInitConfig.java
@@ -60,20 +60,22 @@ public class ExpCatalogDBInitConfig implements DBInitConfig 
{
             GatewayRepository gatewayRepository = new GatewayRepository();
             String defaultGatewayId = ServerSettings.getDefaultUserGateway();
             if (!gatewayRepository.isGatewayExist(defaultGatewayId)) {
-                Gateway gateway = new Gateway();
-                gateway.setGatewayId(defaultGatewayId);
-                
gateway.setGatewayApprovalStatus(GatewayApprovalStatus.APPROVED);
-                
gateway.setOauthClientId(ServerSettings.getSetting("default.registry.oauth.client.id"));
-                
gateway.setOauthClientSecret(ServerSettings.getSetting("default.registry.oauth.client.secret"));
+                Gateway gateway = Gateway.newBuilder()
+                        .setGatewayId(defaultGatewayId)
+                        
.setGatewayApprovalStatus(GatewayApprovalStatus.APPROVED)
+                        
.setOauthClientId(ServerSettings.getSetting("default.registry.oauth.client.id"))
+                        
.setOauthClientSecret(ServerSettings.getSetting("default.registry.oauth.client.secret"))
+                        .build();
                 gatewayRepository.addGateway(gateway);
             }
 
             UserRepository userRepository = new UserRepository();
             String defaultUsername = ServerSettings.getDefaultUser();
             if (!userRepository.isUserExists(defaultGatewayId, 
defaultUsername)) {
-                UserProfile defaultUser = new UserProfile();
-                defaultUser.setUserId(defaultUsername);
-                defaultUser.setGatewayId(defaultGatewayId);
+                UserProfile defaultUser = UserProfile.newBuilder()
+                        .setUserId(defaultUsername)
+                        .setGatewayId(defaultGatewayId)
+                        .build();
                 userRepository.addUser(defaultUser);
             }
 
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/util/ExperimentModelUtil.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/util/ExperimentModelUtil.java
index 7058041f1f..31fa3b670b 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/util/ExperimentModelUtil.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/util/ExperimentModelUtil.java
@@ -102,7 +102,7 @@ public class ExperimentModelUtil {
                 builder.setProcessResourceSchedule(scheduling);
                 builder.setComputeResourceId(scheduling.getResourceHostId());
             }
-            builder.setUseUserCRPref(configData.getUseUserCrPref());
+            builder.setUseUserCrPref(configData.getUseUserCrPref());
             
builder.setGroupResourceProfileId(configData.getGroupResourceProfileId());
         }
         builder.setUserName(experiment.getUserName());
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/execution/util/QueryConstants.java
 
b/airavata-api/src/main/java/org/apache/airavata/execution/util/QueryConstants.java
index ae5b37d12f..35fc6082fc 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/execution/util/QueryConstants.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/execution/util/QueryConstants.java
@@ -22,7 +22,6 @@ package org.apache.airavata.execution.util;
 import org.apache.airavata.compute.model.*;
 import org.apache.airavata.execution.model.*;
 import org.apache.airavata.execution.model.workflow.AiravataWorkflowEntity;
-import org.apache.airavata.model.user.proto.UserProfile;
 import org.apache.airavata.storage.model.DataProductEntity;
 import org.apache.airavata.storage.model.GridftpEndpointEntity;
 import org.apache.airavata.storage.model.StoragePreferenceEntity;
@@ -32,11 +31,11 @@ import 
org.apache.airavata.storage.model.UserStoragePreferenceEntity;
 public interface QueryConstants {
 
     String FIND_USER_PROFILE_BY_USER_ID = "SELECT u FROM UserProfileEntity u " 
+ "where u.userId LIKE :"
-            + UserProfile._Fields.USER_ID.getFieldName() + " " + "AND 
u.gatewayId LIKE :"
-            + UserProfile._Fields.GATEWAY_ID.getFieldName() + "";
+            + "userId" + " " + "AND u.gatewayId LIKE :"
+            + "gatewayId" + "";
 
     String FIND_ALL_USER_PROFILES_BY_GATEWAY_ID = "SELECT u FROM 
UserProfileEntity u " + "where u.gatewayId LIKE :"
-            + UserProfile._Fields.GATEWAY_ID.getFieldName() + "";
+            + "gatewayId" + "";
 
     // Application Deployment Queries
     String FIND_APPLICATION_DEPLOYMENTS_FOR_GATEWAY_ID =
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/DBEventMessageHandler.java
 
b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/DBEventMessageHandler.java
index 91dcca21d2..bc8e411c61 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/DBEventMessageHandler.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/DBEventMessageHandler.java
@@ -23,14 +23,13 @@ import java.util.Collections;
 import java.util.List;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.common.util.AiravataUtils;
-import org.apache.airavata.common.util.ThriftUtils;
 import org.apache.airavata.messaging.service.MessageContext;
 import org.apache.airavata.messaging.service.MessageHandler;
 import org.apache.airavata.messaging.util.DBEventManagerConstants;
 import org.apache.airavata.messaging.util.DBEventManagerException;
 import org.apache.airavata.messaging.util.DbEventManagerZkUtils;
-import org.apache.airavata.model.dbevent.DBEventMessage;
-import org.apache.airavata.model.dbevent.DBEventMessageContext;
+import org.apache.airavata.model.dbevent.proto.DBEventMessage;
+import org.apache.airavata.model.dbevent.proto.DBEventMessageContext;
 import org.apache.airavata.model.messaging.event.proto.MessageType;
 import org.apache.curator.framework.CuratorFramework;
 import org.slf4j.Logger;
@@ -59,10 +58,7 @@ public class DBEventMessageHandler implements MessageHandler 
{
         log.info("Incoming DB event message. Message Id : " + 
messageContext.getMessageId());
         try {
 
-            byte[] bytes = 
ThriftUtils.serializeThriftObject(messageContext.getEvent());
-
-            DBEventMessage dbEventMessage = new DBEventMessage();
-            ThriftUtils.createThriftFromBytes(bytes, dbEventMessage);
+            DBEventMessage dbEventMessage = (DBEventMessage) 
messageContext.getEvent();
 
             DBEventMessageContext dBEventMessageContext = 
dbEventMessage.getMessageContext();
 
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/ExperimentConsumer.java
 
b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/ExperimentConsumer.java
index 3b6cc3a008..a253a01047 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/ExperimentConsumer.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/ExperimentConsumer.java
@@ -27,12 +27,10 @@ import com.rabbitmq.client.Envelope;
 import java.io.IOException;
 import org.apache.airavata.common.config.ServerSettings;
 import org.apache.airavata.common.util.AiravataUtils;
-import org.apache.airavata.common.util.ThriftUtils;
+import com.google.protobuf.InvalidProtocolBufferException;
 import org.apache.airavata.messaging.service.MessageContext;
 import org.apache.airavata.messaging.service.MessageHandler;
-import org.apache.airavata.model.messaging.event.*;
-import org.apache.thrift.TBase;
-import org.apache.thrift.TException;
+import org.apache.airavata.model.messaging.event.proto.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -54,19 +52,16 @@ public class ExperimentConsumer extends DefaultConsumer {
     public void handleDelivery(String consumerTag, Envelope envelope, 
AMQP.BasicProperties properties, byte[] body)
             throws IOException {
 
-        Message message = new Message();
-
         try {
-            ThriftUtils.createThriftFromBytes(body, message);
+            Message message = Message.parseFrom(body);
             long deliveryTag = envelope.getDeliveryTag();
 
-            TBase event = null;
+            Object event = null;
             String gatewayId = null;
             if (message.getMessageType() == MessageType.EXPERIMENT
                     || message.getMessageType() == 
MessageType.EXPERIMENT_CANCEL) {
 
-                ExperimentSubmitEvent experimentEvent = new 
ExperimentSubmitEvent();
-                ThriftUtils.createThriftFromBytes(message.getEvent(), 
experimentEvent);
+                ExperimentSubmitEvent experimentEvent = 
ExperimentSubmitEvent.parseFrom(message.getEvent());
                 log.info(" Message Received with message id '" + 
message.getMessageId()
                         + "' and with message type '" + 
message.getMessageType() + "'  for experimentId:" + " "
                         + experimentEvent.getExperimentId());
@@ -80,8 +75,8 @@ public class ExperimentConsumer extends DefaultConsumer {
 
             } else if (message.getMessageType() == 
MessageType.INTERMEDIATE_OUTPUTS) {
 
-                ExperimentIntermediateOutputsEvent intermediateOutEvt = new 
ExperimentIntermediateOutputsEvent();
-                ThriftUtils.createThriftFromBytes(message.getEvent(), 
intermediateOutEvt);
+                ExperimentIntermediateOutputsEvent intermediateOutEvt =
+                        
ExperimentIntermediateOutputsEvent.parseFrom(message.getEvent());
                 log.info(" Message Received with message id '" + 
message.getMessageId()
                         + "' and with message type '" + 
message.getMessageType() + "'  for experimentId:" + " "
                         + intermediateOutEvt.getExperimentId());
@@ -101,8 +96,8 @@ public class ExperimentConsumer extends DefaultConsumer {
                         deliveryTag);
                 sendAck(deliveryTag);
             }
-        } catch (TException e) {
-            String msg = "Failed to de-serialize the thrift message, from 
routing keys:" + envelope.getRoutingKey();
+        } catch (InvalidProtocolBufferException e) {
+            String msg = "Failed to de-serialize the proto message, from 
routing keys:" + envelope.getRoutingKey();
             log.warn(msg, e);
         }
     }
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/MessageConsumer.java
 
b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/MessageConsumer.java
index 58602c7140..a4dbf71e94 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/MessageConsumer.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/MessageConsumer.java
@@ -21,15 +21,13 @@ package org.apache.airavata.messaging.handler;
 
 import com.rabbitmq.client.*;
 import java.io.IOException;
-import org.apache.airavata.common.util.ThriftUtils;
+import com.google.protobuf.InvalidProtocolBufferException;
 import org.apache.airavata.messaging.service.MessageContext;
 import org.apache.airavata.messaging.service.MessageHandler;
-import org.apache.airavata.model.dbevent.DBEventMessage;
-import org.apache.airavata.model.messaging.event.Message;
+import org.apache.airavata.model.dbevent.proto.DBEventMessage;
+import org.apache.airavata.model.messaging.event.proto.Message;
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
-import org.apache.thrift.TBase;
-import org.apache.thrift.TException;
 
 public class MessageConsumer extends DefaultConsumer {
 
@@ -50,17 +48,14 @@ public class MessageConsumer extends DefaultConsumer {
     public void handleDelivery(String consumerTag, Envelope envelope, 
AMQP.BasicProperties properties, byte[] body)
             throws IOException {
 
-        Message message = new Message();
-
         try {
             logger.info("handleDelivery() -> Handling message delivery. 
Consumer Tag : " + consumerTag);
-            ThriftUtils.createThriftFromBytes(body, message);
+            Message message = Message.parseFrom(body);
 
-            DBEventMessage dBEventMessage = new DBEventMessage();
-            ThriftUtils.createThriftFromBytes(message.getEvent(), 
dBEventMessage);
+            DBEventMessage dBEventMessage = 
DBEventMessage.parseFrom(message.getEvent());
 
             MessageContext messageContext = new MessageContext(
-                    (TBase) dBEventMessage,
+                    dBEventMessage,
                     message.getMessageType(),
                     message.getMessageId(),
                     "gatewayId",
@@ -68,7 +63,7 @@ public class MessageConsumer extends DefaultConsumer {
             handler.onMessage(messageContext);
             // sendAck(deliveryTag);
 
-        } catch (TException e) {
+        } catch (InvalidProtocolBufferException e) {
             logger.error("handleDelivery() -> Error handling delivery. 
Consumer Tag : " + consumerTag, e);
         }
     }
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/ProcessConsumer.java
 
b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/ProcessConsumer.java
index 5d0e5e3a5d..771d11b8f2 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/ProcessConsumer.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/ProcessConsumer.java
@@ -27,15 +27,13 @@ import com.rabbitmq.client.Envelope;
 import java.io.IOException;
 import org.apache.airavata.common.config.ServerSettings;
 import org.apache.airavata.common.util.AiravataUtils;
-import org.apache.airavata.common.util.ThriftUtils;
+import com.google.protobuf.InvalidProtocolBufferException;
 import org.apache.airavata.messaging.service.MessageContext;
 import org.apache.airavata.messaging.service.MessageHandler;
-import org.apache.airavata.model.messaging.event.Message;
+import org.apache.airavata.model.messaging.event.proto.Message;
 import org.apache.airavata.model.messaging.event.proto.MessageType;
-import org.apache.airavata.model.messaging.event.ProcessSubmitEvent;
-import org.apache.airavata.model.messaging.event.ProcessTerminateEvent;
-import org.apache.thrift.TBase;
-import org.apache.thrift.TException;
+import org.apache.airavata.model.messaging.event.proto.ProcessSubmitEvent;
+import org.apache.airavata.model.messaging.event.proto.ProcessTerminateEvent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -57,16 +55,13 @@ public class ProcessConsumer extends DefaultConsumer {
     public void handleDelivery(String consumerTag, Envelope envelope, 
AMQP.BasicProperties basicProperties, byte[] body)
             throws IOException {
 
-        Message message = new Message();
-
         try {
-            ThriftUtils.createThriftFromBytes(body, message);
-            TBase event = null;
+            Message message = Message.parseFrom(body);
+            Object event = null;
             String gatewayId = null;
             long deliveryTag = envelope.getDeliveryTag();
             if (message.getMessageType().equals(MessageType.LAUNCHPROCESS)) {
-                ProcessSubmitEvent processSubmitEvent = new 
ProcessSubmitEvent();
-                ThriftUtils.createThriftFromBytes(message.getEvent(), 
processSubmitEvent);
+                ProcessSubmitEvent processSubmitEvent = 
ProcessSubmitEvent.parseFrom(message.getEvent());
                 log.info(" Message Received with message id '" + 
message.getMessageId()
                         + " and with message type:" + message.getMessageType() 
+ ", for processId:"
                         + processSubmitEvent.getProcessId()
@@ -79,8 +74,7 @@ public class ProcessConsumer extends DefaultConsumer {
                 messageContext.setIsRedeliver(envelope.isRedeliver());
                 handler.onMessage(messageContext);
             } else if 
(message.getMessageType().equals(MessageType.TERMINATEPROCESS)) {
-                ProcessTerminateEvent processTerminateEvent = new 
ProcessTerminateEvent();
-                ThriftUtils.createThriftFromBytes(message.getEvent(), 
processTerminateEvent);
+                ProcessTerminateEvent processTerminateEvent = 
ProcessTerminateEvent.parseFrom(message.getEvent());
                 log.info(" Message Received with message id '" + 
message.getMessageId()
                         + " and with message type:" + message.getMessageType() 
+ ", for processId:"
                         + processTerminateEvent.getProcessId());
@@ -99,8 +93,8 @@ public class ProcessConsumer extends DefaultConsumer {
                         deliveryTag);
                 sendAck(deliveryTag);
             }
-        } catch (TException e) {
-            String msg = "Failed to de-serialize the thrift message, from 
routing keys:" + envelope.getRoutingKey();
+        } catch (InvalidProtocolBufferException e) {
+            String msg = "Failed to de-serialize the proto message, from 
routing keys:" + envelope.getRoutingKey();
             log.warn(msg, e);
         }
     }
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/RabbitMQListener.java
 
b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/RabbitMQListener.java
index 3e74cdd14d..60aada5df1 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/RabbitMQListener.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/RabbitMQListener.java
@@ -28,22 +28,19 @@ import java.util.ArrayList;
 import java.util.List;
 import org.apache.airavata.common.config.ServerSettings;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.util.ThriftUtils;
 import org.apache.airavata.messaging.service.MessageHandler;
 import org.apache.airavata.messaging.service.MessagingFactory;
 import org.apache.airavata.messaging.service.Subscriber;
 import org.apache.airavata.messaging.service.Type;
-import org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent;
-import org.apache.airavata.model.messaging.event.JobStatusChangeEvent;
+import 
org.apache.airavata.model.messaging.event.proto.ExperimentStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.proto.JobStatusChangeEvent;
 import org.apache.airavata.model.messaging.event.proto.MessageType;
-import org.apache.airavata.model.messaging.event.TaskStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.proto.TaskStatusChangeEvent;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
 import org.apache.commons.cli.PosixParser;
-import org.apache.thrift.TBase;
-import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -86,56 +83,25 @@ public class RabbitMQListener {
                 e.printStackTrace();
             }
             if (message.getType().equals(MessageType.EXPERIMENT)) {
-                try {
-                    ExperimentStatusChangeEvent event = new 
ExperimentStatusChangeEvent();
-                    TBase messageEvent = message.getEvent();
-                    byte[] bytes = 
ThriftUtils.serializeThriftObject(messageEvent);
-                    ThriftUtils.createThriftFromBytes(bytes, event);
-                    System.out.println(" Message Received with message id '" + 
message.getMessageId()
-                            + "' and with message type '" + message.getType() 
+ "' and with state : '"
-                            + event.getState().toString() + " for Gateway "
-                            + event.getGatewayId());
-                } catch (TException e) {
-                    logger.error(e.getMessage(), e);
-                }
+                ExperimentStatusChangeEvent event = 
(ExperimentStatusChangeEvent) message.getEvent();
+                System.out.println(" Message Received with message id '" + 
message.getMessageId()
+                        + "' and with message type '" + message.getType() + "' 
and with state : '"
+                        + event.getState().toString() + " for Gateway "
+                        + event.getGatewayId());
             } else if (message.getType().equals(MessageType.PROCESS)) {
-                /*try {
-                    WorkflowNodeStatusChangeEvent event = new 
WorkflowNodeStatusChangeEvent();
-                    TBase messageEvent = message.getEvent();
-                    byte[] bytes = 
ThriftUtils.serializeThriftObject(messageEvent);
-                    ThriftUtils.createThriftFromBytes(bytes, event);
-                    System.out.println(" Message Received with message id '" + 
message.getMessageId()
-                            + "' and with message type '" + message.getType() 
+ "' and with state : '" + event.getState().toString() +
-                            " for Gateway " + 
event.getWorkflowNodeIdentity().getGatewayId());
-                } catch (TException e) {
-                    logger.error(e.getMessage(), e);
-                }*/
+                // no-op
             } else if (message.getType().equals(MessageType.TASK)) {
-                try {
-                    TaskStatusChangeEvent event = new TaskStatusChangeEvent();
-                    TBase messageEvent = message.getEvent();
-                    byte[] bytes = 
ThriftUtils.serializeThriftObject(messageEvent);
-                    ThriftUtils.createThriftFromBytes(bytes, event);
-                    System.out.println(" Message Received with message id '" + 
message.getMessageId()
-                            + "' and with message type '" + message.getType() 
+ "' and with state : '"
-                            + event.getState().toString() + " for Gateway "
-                            + event.getTaskIdentity().getGatewayId());
-                } catch (TException e) {
-                    logger.error(e.getMessage(), e);
-                }
+                TaskStatusChangeEvent event = (TaskStatusChangeEvent) 
message.getEvent();
+                System.out.println(" Message Received with message id '" + 
message.getMessageId()
+                        + "' and with message type '" + message.getType() + "' 
and with state : '"
+                        + event.getState().toString() + " for Gateway "
+                        + event.getTaskIdentity().getGatewayId());
             } else if (message.getType().equals(MessageType.JOB)) {
-                try {
-                    JobStatusChangeEvent event = new JobStatusChangeEvent();
-                    TBase messageEvent = message.getEvent();
-                    byte[] bytes = 
ThriftUtils.serializeThriftObject(messageEvent);
-                    ThriftUtils.createThriftFromBytes(bytes, event);
-                    System.out.println(" Message Received with message id '" + 
message.getMessageId()
-                            + "' and with message type '" + message.getType() 
+ "' and with state : '"
-                            + event.getState().toString() + " for Gateway "
-                            + event.getJobIdentity().getGatewayId());
-                } catch (TException e) {
-                    logger.error(e.getMessage(), e);
-                }
+                JobStatusChangeEvent event = (JobStatusChangeEvent) 
message.getEvent();
+                System.out.println(" Message Received with message id '" + 
message.getMessageId()
+                        + "' and with message type '" + message.getType() + "' 
and with state : '"
+                        + event.getState().toString() + " for Gateway "
+                        + event.getJobIdentity().getGatewayId());
             }
         };
     }
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/StatusConsumer.java
 
b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/StatusConsumer.java
index d7dbadeb54..f240ff79d4 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/StatusConsumer.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/StatusConsumer.java
@@ -25,21 +25,19 @@ import com.rabbitmq.client.Connection;
 import com.rabbitmq.client.DefaultConsumer;
 import com.rabbitmq.client.Envelope;
 import java.io.IOException;
+import com.google.protobuf.InvalidProtocolBufferException;
 import org.apache.airavata.common.util.AiravataUtils;
-import org.apache.airavata.common.util.ThriftUtils;
 import org.apache.airavata.messaging.service.MessageContext;
 import org.apache.airavata.messaging.service.MessageHandler;
-import org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent;
-import org.apache.airavata.model.messaging.event.JobStatusChangeEvent;
-import org.apache.airavata.model.messaging.event.Message;
+import 
org.apache.airavata.model.messaging.event.proto.ExperimentStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.proto.JobStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.proto.Message;
 import org.apache.airavata.model.messaging.event.proto.MessageType;
-import org.apache.airavata.model.messaging.event.ProcessStatusChangeEvent;
-import org.apache.airavata.model.messaging.event.ProcessSubmitEvent;
-import org.apache.airavata.model.messaging.event.ProcessTerminateEvent;
-import org.apache.airavata.model.messaging.event.TaskOutputChangeEvent;
-import org.apache.airavata.model.messaging.event.TaskStatusChangeEvent;
-import org.apache.thrift.TBase;
-import org.apache.thrift.TException;
+import 
org.apache.airavata.model.messaging.event.proto.ProcessStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.proto.ProcessSubmitEvent;
+import org.apache.airavata.model.messaging.event.proto.ProcessTerminateEvent;
+import org.apache.airavata.model.messaging.event.proto.TaskOutputChangeEvent;
+import org.apache.airavata.model.messaging.event.proto.TaskStatusChangeEvent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -64,54 +62,53 @@ public class StatusConsumer extends DefaultConsumer {
     @Override
     public void handleDelivery(String consumerTag, Envelope envelope, 
AMQP.BasicProperties properties, byte[] body)
             throws IOException {
-        Message message = new Message();
 
         try {
-            ThriftUtils.createThriftFromBytes(body, message);
-            TBase event = null;
+            Message message = Message.parseFrom(body);
+            Object event = null;
             String gatewayId = null;
 
             if (message.getMessageType().equals(MessageType.EXPERIMENT)) {
-                ExperimentStatusChangeEvent experimentStatusChangeEvent = new 
ExperimentStatusChangeEvent();
-                ThriftUtils.createThriftFromBytes(message.getEvent(), 
experimentStatusChangeEvent);
+                ExperimentStatusChangeEvent experimentStatusChangeEvent =
+                        
ExperimentStatusChangeEvent.parseFrom(message.getEvent());
                 log.debug(" Message Received with message id '" + 
message.getMessageId()
                         + "' and with message type '" + 
message.getMessageType() + "'  with status "
                         + experimentStatusChangeEvent.getState());
                 event = experimentStatusChangeEvent;
                 gatewayId = experimentStatusChangeEvent.getGatewayId();
             } else if (message.getMessageType().equals(MessageType.PROCESS)) {
-                ProcessStatusChangeEvent processStatusChangeEvent = new 
ProcessStatusChangeEvent();
-                ThriftUtils.createThriftFromBytes(message.getEvent(), 
processStatusChangeEvent);
+                ProcessStatusChangeEvent processStatusChangeEvent =
+                        ProcessStatusChangeEvent.parseFrom(message.getEvent());
                 log.debug("Message Recieved with message id :" + 
message.getMessageId() + " and with " + "message type "
                         + message.getMessageType() + " with status " + 
processStatusChangeEvent.getState());
                 event = processStatusChangeEvent;
                 gatewayId = 
processStatusChangeEvent.getProcessIdentity().getGatewayId();
             } else if (message.getMessageType().equals(MessageType.TASK)) {
-                TaskStatusChangeEvent taskStatusChangeEvent = new 
TaskStatusChangeEvent();
-                ThriftUtils.createThriftFromBytes(message.getEvent(), 
taskStatusChangeEvent);
+                TaskStatusChangeEvent taskStatusChangeEvent =
+                        TaskStatusChangeEvent.parseFrom(message.getEvent());
                 log.debug(" Message Received with message id '" + 
message.getMessageId()
                         + "' and with message type '" + 
message.getMessageType() + "'  with status "
                         + taskStatusChangeEvent.getState());
                 event = taskStatusChangeEvent;
                 gatewayId = 
taskStatusChangeEvent.getTaskIdentity().getGatewayId();
             } else if (message.getMessageType() == MessageType.PROCESSOUTPUT) {
-                TaskOutputChangeEvent taskOutputChangeEvent = new 
TaskOutputChangeEvent();
-                ThriftUtils.createThriftFromBytes(message.getEvent(), 
taskOutputChangeEvent);
+                TaskOutputChangeEvent taskOutputChangeEvent =
+                        TaskOutputChangeEvent.parseFrom(message.getEvent());
                 log.debug(" Message Received with message id '" + 
message.getMessageId() + "' and with message type '"
                         + message.getMessageType());
                 event = taskOutputChangeEvent;
                 gatewayId = 
taskOutputChangeEvent.getTaskIdentity().getGatewayId();
             } else if (message.getMessageType().equals(MessageType.JOB)) {
-                JobStatusChangeEvent jobStatusChangeEvent = new 
JobStatusChangeEvent();
-                ThriftUtils.createThriftFromBytes(message.getEvent(), 
jobStatusChangeEvent);
+                JobStatusChangeEvent jobStatusChangeEvent =
+                        JobStatusChangeEvent.parseFrom(message.getEvent());
                 log.debug(" Message Received with message id '" + 
message.getMessageId()
                         + "' and with message type '" + 
message.getMessageType() + "'  with status "
                         + jobStatusChangeEvent.getState());
                 event = jobStatusChangeEvent;
                 gatewayId = 
jobStatusChangeEvent.getJobIdentity().getGatewayId();
             } else if 
(message.getMessageType().equals(MessageType.LAUNCHPROCESS)) {
-                ProcessSubmitEvent processSubmitEvent = new 
ProcessSubmitEvent();
-                ThriftUtils.createThriftFromBytes(message.getEvent(), 
processSubmitEvent);
+                ProcessSubmitEvent processSubmitEvent =
+                        ProcessSubmitEvent.parseFrom(message.getEvent());
                 log.debug(" Message Received with message id '" + 
message.getMessageId()
                         + "' and with message type '" + 
message.getMessageType() + "'  for experimentId: "
                         + processSubmitEvent.getExperimentId()
@@ -119,8 +116,8 @@ public class StatusConsumer extends DefaultConsumer {
                 event = processSubmitEvent;
                 gatewayId = processSubmitEvent.getGatewayId();
             } else if 
(message.getMessageType().equals(MessageType.TERMINATEPROCESS)) {
-                ProcessTerminateEvent processTerminateEvent = new 
ProcessTerminateEvent();
-                ThriftUtils.createThriftFromBytes(message.getEvent(), 
processTerminateEvent);
+                ProcessTerminateEvent processTerminateEvent =
+                        ProcessTerminateEvent.parseFrom(message.getEvent());
                 log.debug(" Message Received with message id '" + 
message.getMessageId()
                         + "' and with message type '" + 
message.getMessageType() + "'  for processId: "
                         + processTerminateEvent.getProcessId());
@@ -132,8 +129,8 @@ public class StatusConsumer extends DefaultConsumer {
             
messageContext.setUpdatedTime(AiravataUtils.getTime(message.getUpdatedTime()));
             messageContext.setIsRedeliver(envelope.isRedeliver());
             handler.onMessage(messageContext);
-        } catch (TException e) {
-            String msg = "Failed to de-serialize the thrift message, from 
routing keys: " + envelope.getRoutingKey();
+        } catch (InvalidProtocolBufferException e) {
+            String msg = "Failed to de-serialize the proto message, from 
routing keys: " + envelope.getRoutingKey();
             log.warn(msg, e);
         }
     }
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/TestClient.java
 
b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/TestClient.java
index 9eb6895dae..234dd0c6e7 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/messaging/handler/TestClient.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/messaging/handler/TestClient.java
@@ -22,14 +22,11 @@ package org.apache.airavata.messaging.handler;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.util.ThriftUtils;
 import org.apache.airavata.messaging.service.MessageHandler;
 import org.apache.airavata.messaging.service.MessagingFactory;
 import org.apache.airavata.messaging.service.Type;
-import org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent;
+import 
org.apache.airavata.model.messaging.event.proto.ExperimentStatusChangeEvent;
 import org.apache.airavata.model.messaging.event.proto.MessageType;
-import org.apache.thrift.TBase;
-import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -55,17 +52,10 @@ public class TestClient {
     private static MessageHandler getMessageHandler() {
         return message -> {
             if (message.getType().equals(MessageType.EXPERIMENT)) {
-                try {
-                    ExperimentStatusChangeEvent event = new 
ExperimentStatusChangeEvent();
-                    TBase messageEvent = message.getEvent();
-                    byte[] bytes = 
ThriftUtils.serializeThriftObject(messageEvent);
-                    ThriftUtils.createThriftFromBytes(bytes, event);
-                    System.out.println(" Message Received with message id '" + 
message.getMessageId()
-                            + "' and with message type '" + message.getType() 
+ "' and with state : '"
-                            + event.getState().toString());
-                } catch (TException e) {
-                    logger.error(e.getMessage(), e);
-                }
+                ExperimentStatusChangeEvent event = 
(ExperimentStatusChangeEvent) message.getEvent();
+                System.out.println(" Message Received with message id '" + 
message.getMessageId()
+                        + "' and with message type '" + message.getType() + "' 
and with state : '"
+                        + event.getState().toString());
             }
         };
     }
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/messaging/service/EventPublisher.java
 
b/airavata-api/src/main/java/org/apache/airavata/messaging/service/EventPublisher.java
index 034efa489a..abe8be93d4 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/messaging/service/EventPublisher.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/messaging/service/EventPublisher.java
@@ -23,11 +23,11 @@ import java.util.List;
 import java.util.UUID;
 import org.apache.airavata.common.exception.AiravataException;
 import org.apache.airavata.common.util.AiravataUtils;
-import 
org.apache.airavata.model.messaging.event.ExperimentIntermediateOutputsEvent;
-import org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent;
-import org.apache.airavata.model.messaging.event.ExperimentSubmitEvent;
+import 
org.apache.airavata.model.messaging.event.proto.ExperimentIntermediateOutputsEvent;
+import 
org.apache.airavata.model.messaging.event.proto.ExperimentStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.proto.ExperimentSubmitEvent;
 import org.apache.airavata.model.messaging.event.proto.MessageType;
-import org.apache.airavata.model.status.ExperimentState;
+import org.apache.airavata.model.status.proto.ExperimentState;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -46,7 +46,8 @@ public class EventPublisher {
     public void publishExperimentStatus(String experimentId, String gatewayId, 
ExperimentState state) {
         if (statusPublisher == null) return;
         try {
-            ExperimentStatusChangeEvent event = new 
ExperimentStatusChangeEvent(state, experimentId, gatewayId);
+            ExperimentStatusChangeEvent event = 
ExperimentStatusChangeEvent.newBuilder()
+                    
.setState(state).setExperimentId(experimentId).setGatewayId(gatewayId).build();
             String messageId = AiravataUtils.getId("EXPERIMENT");
             MessageContext messageContext = new MessageContext(event, 
MessageType.EXPERIMENT, messageId, gatewayId);
             messageContext.setUpdatedTime(AiravataUtils.getCurrentTimestamp());
@@ -59,7 +60,8 @@ public class EventPublisher {
     public void publishExperimentLaunch(String experimentId, String gatewayId) 
{
         if (experimentPublisher == null) return;
         try {
-            ExperimentSubmitEvent event = new 
ExperimentSubmitEvent(experimentId, gatewayId);
+            ExperimentSubmitEvent event = ExperimentSubmitEvent.newBuilder()
+                    
.setExperimentId(experimentId).setGatewayId(gatewayId).build();
             MessageContext messageContext =
                     new MessageContext(event, MessageType.EXPERIMENT, 
"LAUNCH.EXP-" + UUID.randomUUID(), gatewayId);
             messageContext.setUpdatedTime(AiravataUtils.getCurrentTimestamp());
@@ -72,7 +74,8 @@ public class EventPublisher {
     public void publishExperimentCancel(String experimentId, String gatewayId) 
{
         if (experimentPublisher == null) return;
         try {
-            ExperimentSubmitEvent event = new 
ExperimentSubmitEvent(experimentId, gatewayId);
+            ExperimentSubmitEvent event = ExperimentSubmitEvent.newBuilder()
+                    
.setExperimentId(experimentId).setGatewayId(gatewayId).build();
             MessageContext messageContext = new MessageContext(
                     event, MessageType.EXPERIMENT_CANCEL, "CANCEL.EXP-" + 
UUID.randomUUID(), gatewayId);
             messageContext.setUpdatedTime(AiravataUtils.getCurrentTimestamp());
@@ -85,8 +88,8 @@ public class EventPublisher {
     public void publishIntermediateOutputs(String experimentId, String 
gatewayId, List<String> outputNames) {
         if (experimentPublisher == null) return;
         try {
-            ExperimentIntermediateOutputsEvent event =
-                    new ExperimentIntermediateOutputsEvent(experimentId, 
gatewayId, outputNames);
+            ExperimentIntermediateOutputsEvent event = 
ExperimentIntermediateOutputsEvent.newBuilder()
+                    
.setExperimentId(experimentId).setGatewayId(gatewayId).addAllOutputNames(outputNames).build();
             MessageContext messageContext = new MessageContext(
                     event,
                     MessageType.INTERMEDIATE_OUTPUTS,
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/messaging/service/RabbitMQPublisher.java
 
b/airavata-api/src/main/java/org/apache/airavata/messaging/service/RabbitMQPublisher.java
index 195fe1fc3f..8f3e58fc75 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/messaging/service/RabbitMQPublisher.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/messaging/service/RabbitMQPublisher.java
@@ -28,10 +28,10 @@ import com.rabbitmq.client.ShutdownSignalException;
 import java.io.IOException;
 import java.util.function.Function;
 import org.apache.airavata.common.exception.AiravataException;
-import org.apache.airavata.common.util.ThriftUtils;
+import com.google.protobuf.ByteString;
+import com.google.protobuf.MessageLite;
 import org.apache.airavata.messaging.util.RabbitMQProperties;
-import org.apache.airavata.model.messaging.event.Message;
-import org.apache.thrift.TException;
+import org.apache.airavata.model.messaging.event.proto.Message;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -76,21 +76,16 @@ public class RabbitMQPublisher implements Publisher {
     @Override
     public void publish(MessageContext messageContext) throws 
AiravataException {
         try {
-            byte[] body = 
ThriftUtils.serializeThriftObject(messageContext.getEvent());
-            Message message = new Message();
-            message.setEvent(body);
-            message.setMessageId(messageContext.getMessageId());
-            message.setMessageType(messageContext.getType());
-            message.setUpdatedTime(messageContext.getUpdatedTime().getTime());
+            byte[] body = ((MessageLite) 
messageContext.getEvent()).toByteArray();
+            Message message = Message.newBuilder()
+                    .setEvent(ByteString.copyFrom(body))
+                    .setMessageId(messageContext.getMessageId())
+                    .setMessageType(messageContext.getType())
+                    .setUpdatedTime(messageContext.getUpdatedTime().getTime())
+                    .build();
             String routingKey = routingKeySupplier.apply(messageContext);
-            //            log.info("publish messageId:" + 
messageContext.getMessageId() + ", messageType:" +
-            // messageContext.getType() + ", to routingKey:" + routingKey);
-            byte[] messageBody = ThriftUtils.serializeThriftObject(message);
+            byte[] messageBody = message.toByteArray();
             send(messageBody, routingKey);
-        } catch (TException e) {
-            String msg = "Error while deserializing the object";
-            log.error(msg, e);
-            throw new AiravataException(msg, e);
         } catch (Exception e) {
             String msg = "Error while sending to rabbitmq";
             log.error(msg, e);
@@ -107,22 +102,16 @@ public class RabbitMQPublisher implements Publisher {
     @Override
     public void publish(MessageContext messageContext, String routingKey) 
throws AiravataException {
         try {
-            byte[] body = 
ThriftUtils.serializeThriftObject(messageContext.getEvent());
-            Message message = new Message();
-            message.setEvent(body);
-            message.setMessageId(messageContext.getMessageId());
-            message.setMessageType(messageContext.getType());
+            byte[] body = ((MessageLite) 
messageContext.getEvent()).toByteArray();
+            Message.Builder messageBuilder = Message.newBuilder()
+                    .setEvent(ByteString.copyFrom(body))
+                    .setMessageId(messageContext.getMessageId())
+                    .setMessageType(messageContext.getType());
             if (messageContext.getUpdatedTime() != null) {
-                
message.setUpdatedTime(messageContext.getUpdatedTime().getTime());
+                
messageBuilder.setUpdatedTime(messageContext.getUpdatedTime().getTime());
             }
-            //            log.info("publish messageId:" + 
messageContext.getMessageId() + ", messageType:" +
-            // messageContext.getType() + ", to routingKey:" + routingKey);
-            byte[] messageBody = ThriftUtils.serializeThriftObject(message);
+            byte[] messageBody = messageBuilder.build().toByteArray();
             send(messageBody, routingKey);
-        } catch (TException e) {
-            String msg = "Error while deserializing the object";
-            log.error(msg, e);
-            throw new AiravataException(msg, e);
         } catch (Exception e) {
             String msg = "Error while sending to rabbitmq";
             log.error(msg, e);
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/messaging/util/DBEventPublisherUtils.java
 
b/airavata-api/src/main/java/org/apache/airavata/messaging/util/DBEventPublisherUtils.java
index cfa9d7b65e..2a87e4ce73 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/messaging/util/DBEventPublisherUtils.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/messaging/util/DBEventPublisherUtils.java
@@ -19,20 +19,19 @@
 */
 package org.apache.airavata.messaging.util;
 
+import com.google.protobuf.MessageLite;
 import org.apache.airavata.common.exception.AiravataException;
-import org.apache.airavata.common.util.ThriftUtils;
 import org.apache.airavata.messaging.service.MessageContext;
 import org.apache.airavata.messaging.service.MessagingFactory;
 import org.apache.airavata.messaging.service.Publisher;
-import org.apache.airavata.model.dbevent.CrudType;
-import org.apache.airavata.model.dbevent.DBEventMessage;
-import org.apache.airavata.model.dbevent.DBEventMessageContext;
-import org.apache.airavata.model.dbevent.DBEventPublisher;
-import org.apache.airavata.model.dbevent.DBEventPublisherContext;
-import org.apache.airavata.model.dbevent.DBEventType;
-import org.apache.airavata.model.dbevent.EntityType;
+import org.apache.airavata.model.dbevent.proto.CrudType;
+import org.apache.airavata.model.dbevent.proto.DBEventMessage;
+import org.apache.airavata.model.dbevent.proto.DBEventMessageContext;
+import org.apache.airavata.model.dbevent.proto.DBEventPublisher;
+import org.apache.airavata.model.dbevent.proto.DBEventPublisherContext;
+import org.apache.airavata.model.dbevent.proto.DBEventType;
+import org.apache.airavata.model.dbevent.proto.EntityType;
 import org.apache.airavata.model.messaging.event.proto.MessageType;
-import org.apache.thrift.TBase;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -55,7 +54,7 @@ public class DBEventPublisherUtils {
      * @param crudType
      * @param entityModel
      */
-    public void publish(EntityType entityType, CrudType crudType, TBase 
entityModel) throws AiravataException {
+    public void publish(EntityType entityType, CrudType crudType, MessageLite 
entityModel) throws AiravataException {
 
         getDbEventPublisher()
                 .publish(
@@ -89,27 +88,32 @@ public class DBEventPublisherUtils {
      * @return
      * @throws AiravataException
      */
-    private MessageContext getDBEventMessageContext(EntityType entityType, 
CrudType crudType, TBase entityModel)
+    private MessageContext getDBEventMessageContext(EntityType entityType, 
CrudType crudType, MessageLite entityModel)
             throws AiravataException {
         try {
             // set the publisherContext
-            DBEventMessage dbEventMessage = new DBEventMessage();
-            DBEventPublisherContext publisherContext = new 
DBEventPublisherContext();
-            publisherContext.setCrudType(crudType);
-            
publisherContext.setEntityDataModel(ThriftUtils.serializeThriftObject(entityModel));
-            publisherContext.setEntityType(entityType);
+            DBEventPublisherContext publisherContext = 
DBEventPublisherContext.newBuilder()
+                    .setCrudType(crudType)
+                    .setEntityDataModel(entityModel.toByteString())
+                    .setEntityType(entityType)
+                    .build();
 
             // create dbEventPublisher with publisherContext
-            DBEventPublisher dbEventPublisher = new DBEventPublisher();
-            dbEventPublisher.setPublisherContext(publisherContext);
+            DBEventPublisher dbEventPublisher = DBEventPublisher.newBuilder()
+                    .setPublisherContext(publisherContext)
+                    .build();
 
             // set messageContext to dbEventPublisher
-            DBEventMessageContext dbMessageContext = 
DBEventMessageContext.publisher(dbEventPublisher);
+            DBEventMessageContext dbMessageContext = 
DBEventMessageContext.newBuilder()
+                    .setPublisher(dbEventPublisher)
+                    .build();
 
             // set dbEventMessage with messageContext
-            dbEventMessage.setDbEventType(DBEventType.PUBLISHER);
-            
dbEventMessage.setPublisherService(this.publisherService.toString());
-            dbEventMessage.setMessageContext(dbMessageContext);
+            DBEventMessage dbEventMessage = DBEventMessage.newBuilder()
+                    .setDbEventType(DBEventType.PUBLISHER)
+                    .setPublisherService(this.publisherService.toString())
+                    .setMessageContext(dbMessageContext)
+                    .build();
 
             // construct and return messageContext
             return new MessageContext(dbEventMessage, MessageType.DB_EVENT, 
"", "");
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/security/service/GatewayGroupsInitializer.java
 
b/airavata-api/src/main/java/org/apache/airavata/security/service/GatewayGroupsInitializer.java
index bcb3020fd5..735acdf377 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/security/service/GatewayGroupsInitializer.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/security/service/GatewayGroupsInitializer.java
@@ -23,8 +23,8 @@ import org.apache.airavata.common.util.AiravataUtils;
 import org.apache.airavata.credential.handler.CredentialStoreServerHandler;
 import org.apache.airavata.credential.store.cpi.CredentialStoreService;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
-import org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups;
-import 
org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
+import org.apache.airavata.model.appcatalog.gatewaygroups.proto.GatewayGroups;
+import 
org.apache.airavata.model.appcatalog.gatewayprofile.proto.GatewayResourceProfile;
 import org.apache.airavata.model.credential.store.PasswordCredential;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
 import org.apache.airavata.sharing.handler.SharingRegistryServerHandler;
@@ -74,12 +74,12 @@ public class GatewayGroupsInitializer {
         this.credentialStoreClient = credentialStoreClient;
     }
 
-    public GatewayGroups initialize(String gatewayId) throws TException {
+    public GatewayGroups initialize(String gatewayId) throws Exception {
 
         logger.info("Creating a GatewayGroups instance for gateway " + 
gatewayId + " ...");
 
-        GatewayGroups gatewayGroups = new GatewayGroups();
-        gatewayGroups.setGatewayId(gatewayId);
+        GatewayGroups.Builder gatewayGroupsBuilder = GatewayGroups.newBuilder()
+                .setGatewayId(gatewayId);
 
         String adminOwnerUsername = getAdminOwnerUsername(registryClient, 
credentialStoreClient, gatewayId);
         String ownerId = adminOwnerUsername + "@" + gatewayId;
@@ -96,11 +96,11 @@ public class GatewayGroupsInitializer {
         // Gateway Users
         UserGroup gatewayUsersGroup = createGroup(
                 sharingRegistryClient, gatewayId, ownerId, "Gateway Users", 
"Default group for users of the gateway.");
-        
gatewayGroups.setDefaultGatewayUsersGroupId(gatewayUsersGroup.getGroupId());
+        
gatewayGroupsBuilder.setDefaultGatewayUsersGroupId(gatewayUsersGroup.getGroupId());
         // Admin Users
         UserGroup adminUsersGroup =
                 createGroup(sharingRegistryClient, gatewayId, ownerId, "Admin 
Users", "Admin users group.");
-        gatewayGroups.setAdminsGroupId(adminUsersGroup.getGroupId());
+        gatewayGroupsBuilder.setAdminsGroupId(adminUsersGroup.getGroupId());
         // Read Only Admin Users
         UserGroup readOnlyAdminsGroup = createGroup(
                 sharingRegistryClient,
@@ -108,11 +108,12 @@ public class GatewayGroupsInitializer {
                 ownerId,
                 "Read Only Admin Users",
                 "Group of admin users with read-only access.");
-        
gatewayGroups.setReadOnlyAdminsGroupId(readOnlyAdminsGroup.getGroupId());
+        
gatewayGroupsBuilder.setReadOnlyAdminsGroupId(readOnlyAdminsGroup.getGroupId());
+        GatewayGroups gatewayGroups = gatewayGroupsBuilder.build();
 
         try {
             registryClient.createGatewayGroups(gatewayGroups);
-        } catch (TException e) {
+        } catch (Exception e) {
             logger.error(
                     "Gateway groups created in Sharing Catalog failed to save 
GatewayGroups entity in Registry", e);
             throw e;
@@ -127,7 +128,7 @@ public class GatewayGroupsInitializer {
             String ownerId,
             String groupName,
             String groupDescription)
-            throws TException {
+            throws Exception {
 
         UserGroup userGroup = new UserGroup();
         userGroup.setGroupId(AiravataUtils.getId(groupName));
@@ -146,11 +147,11 @@ public class GatewayGroupsInitializer {
 
     private String getAdminOwnerUsername(
             RegistryServerHandler registryClient, CredentialStoreService.Iface 
credentialStoreClient, String gatewayId)
-            throws TException {
+            throws Exception {
 
         GatewayResourceProfile gatewayResourceProfile = 
registryClient.getGatewayResourceProfile(gatewayId);
         PasswordCredential credential = 
credentialStoreClient.getPasswordCredential(
-                gatewayResourceProfile.getIdentityServerPwdCredToken(), 
gatewayResourceProfile.getGatewayID());
+                gatewayResourceProfile.getIdentityServerPwdCredToken(), 
gatewayResourceProfile.getGatewayId());
         String adminUsername = credential.getLoginUserName();
         return adminUsername;
     }
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/security/service/KeyCloakSecurityManager.java
 
b/airavata-api/src/main/java/org/apache/airavata/security/service/KeyCloakSecurityManager.java
index 25e7be8d5b..8e4782ecfe 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/security/service/KeyCloakSecurityManager.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/security/service/KeyCloakSecurityManager.java
@@ -32,10 +32,10 @@ import org.apache.airavata.common.config.Constants;
 import org.apache.airavata.common.config.ServerSettings;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
-import org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups;
-import 
org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
+import org.apache.airavata.model.appcatalog.gatewaygroups.proto.GatewayGroups;
+import 
org.apache.airavata.model.appcatalog.gatewayprofile.proto.GatewayResourceProfile;
 import org.apache.airavata.model.security.AuthzToken;
-import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.model.workspace.proto.Gateway;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
 import org.apache.airavata.security.service.authzcache.*;
 import org.apache.airavata.security.util.AiravataSecurityException;
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/sharing/handler/SharingServiceDBEventHandler.java
 
b/airavata-api/src/main/java/org/apache/airavata/sharing/handler/SharingServiceDBEventHandler.java
index 49883ae3a1..b5097bcf81 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/sharing/handler/SharingServiceDBEventHandler.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/sharing/handler/SharingServiceDBEventHandler.java
@@ -21,17 +21,17 @@ package org.apache.airavata.sharing.handler;
 
 import org.apache.airavata.common.exception.AiravataException;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.util.ThriftUtils;
+import com.google.protobuf.InvalidProtocolBufferException;
 import org.apache.airavata.messaging.service.MessageContext;
 import org.apache.airavata.messaging.service.MessageHandler;
-import org.apache.airavata.model.dbevent.DBEventMessage;
-import org.apache.airavata.model.dbevent.DBEventMessageContext;
-import org.apache.airavata.model.error.DuplicateEntryException;
-import org.apache.airavata.model.group.ResourceType;
-import org.apache.airavata.model.user.UserProfile;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.dbevent.proto.DBEventMessage;
+import org.apache.airavata.model.dbevent.proto.DBEventMessageContext;
+import org.apache.airavata.model.group.proto.ResourceType;
+import org.apache.airavata.model.user.proto.UserProfile;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.apache.airavata.sharing.registry.models.Domain;
+import org.apache.airavata.sharing.registry.models.DuplicateEntryException;
 import org.apache.airavata.sharing.registry.models.Entity;
 import org.apache.airavata.sharing.registry.models.PermissionType;
 import org.apache.airavata.sharing.registry.models.User;
@@ -62,10 +62,7 @@ public class SharingServiceDBEventHandler implements 
MessageHandler {
 
         try {
 
-            byte[] bytes = 
ThriftUtils.serializeThriftObject(messageContext.getEvent());
-
-            DBEventMessage dbEventMessage = new DBEventMessage();
-            ThriftUtils.createThriftFromBytes(bytes, dbEventMessage);
+            DBEventMessage dbEventMessage = (DBEventMessage) 
messageContext.getEvent();
 
             log.info("DB Event message to sharing service from " + 
dbEventMessage.getPublisherService());
 
@@ -79,13 +76,11 @@ public class SharingServiceDBEventHandler implements 
MessageHandler {
                         log.info("User profile specific DB Event communicated 
by "
                                 + dbEventMessage.getPublisherService());
 
-                        UserProfile userProfile = new UserProfile();
-                        ThriftUtils.createThriftFromBytes(
+                        UserProfile userProfile = UserProfile.parseFrom(
                                 dBEventMessageContext
                                         .getPublisher()
                                         .getPublisherContext()
-                                        .getEntityDataModel(),
-                                userProfile);
+                                        .getEntityDataModel());
                         User user = 
ThriftDataModelConversion.getUser(userProfile);
 
                         switch (dBEventMessageContext
@@ -122,13 +117,11 @@ public class SharingServiceDBEventHandler implements 
MessageHandler {
                     case TENANT:
                         log.info("Tenant specific DB Event communicated by " + 
dbEventMessage.getPublisherService());
 
-                        Gateway gateway = new Gateway();
-                        ThriftUtils.createThriftFromBytes(
+                        Gateway gateway = Gateway.parseFrom(
                                 dBEventMessageContext
                                         .getPublisher()
                                         .getPublisherContext()
-                                        .getEntityDataModel(),
-                                gateway);
+                                        .getEntityDataModel());
 
                         switch (dBEventMessageContext
                                 .getPublisher()
@@ -309,15 +302,13 @@ public class SharingServiceDBEventHandler implements 
MessageHandler {
                     case PROJECT:
                         log.info("Project specific DB Event communicated by " 
+ dbEventMessage.getPublisherService());
 
-                        Project project = new Project();
-                        ThriftUtils.createThriftFromBytes(
+                        Project project = Project.parseFrom(
                                 dBEventMessageContext
                                         .getPublisher()
                                         .getPublisherContext()
-                                        .getEntityDataModel(),
-                                project);
+                                        .getEntityDataModel());
                         final String domainId = project.getGatewayId();
-                        final String entityId = project.getProjectID();
+                        final String entityId = project.getProjectId();
 
                         switch (dBEventMessageContext
                                 .getPublisher()
@@ -374,6 +365,8 @@ public class SharingServiceDBEventHandler implements 
MessageHandler {
             log.info("Sending ack. Message Delivery Tag : " + 
messageContext.getDeliveryTag());
             
SharingServiceDBEventMessagingFactory.getDBEventSubscriber().sendAck(messageContext.getDeliveryTag());
 
+        } catch (InvalidProtocolBufferException e) {
+            log.error("Error parsing proto message", e);
         } catch (TException e) {
             log.error("Error processing message.", e);
         } catch (ApplicationSettingsException e) {
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/sharing/service/SharingHelper.java
 
b/airavata-api/src/main/java/org/apache/airavata/sharing/service/SharingHelper.java
index 72768c64a5..502048012b 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/sharing/service/SharingHelper.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/sharing/service/SharingHelper.java
@@ -64,7 +64,7 @@ public class SharingHelper {
     }
 
     public static GatewayGroups retrieveGatewayGroups(RegistryServerHandler 
registryHandler, String gatewayId)
-            throws TException {
+            throws Exception {
         if (registryHandler.isGatewayGroupsExists(gatewayId)) {
             return registryHandler.getGatewayGroups(gatewayId);
         }
@@ -73,7 +73,7 @@ public class SharingHelper {
 
     public static void shareEntityWithAdminGatewayGroups(
             SharingRegistryServerHandler sharingHandler, RegistryServerHandler 
registryHandler, Entity entity)
-            throws TException {
+            throws Exception {
         String domainId = entity.getDomainId();
         GatewayGroups gatewayGroups = retrieveGatewayGroups(registryHandler, 
domainId);
         createManageSharingPermissionTypeIfMissing(sharingHandler, domainId);
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/sharing/util/AiravataDataMigrator.java
 
b/airavata-api/src/main/java/org/apache/airavata/sharing/util/AiravataDataMigrator.java
index 553d018706..ad0f7d2153 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/sharing/util/AiravataDataMigrator.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/sharing/util/AiravataDataMigrator.java
@@ -35,21 +35,19 @@ import org.apache.airavata.common.util.AiravataUtils;
 import org.apache.airavata.credential.handler.CredentialStoreServerHandler;
 import org.apache.airavata.credential.store.cpi.CredentialStoreService;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
-import 
org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
-import 
org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
-import org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups;
-import 
org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
-import 
org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
-import 
org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy;
-import 
org.apache.airavata.model.appcatalog.groupresourceprofile.EnvironmentSpecificPreferences;
-import 
org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference;
-import 
org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile;
-import 
org.apache.airavata.model.appcatalog.groupresourceprofile.SlurmComputeResourcePreference;
+import 
org.apache.airavata.model.appcatalog.appdeployment.proto.ApplicationDeploymentDescription;
+import 
org.apache.airavata.model.appcatalog.computeresource.proto.ComputeResourceDescription;
+import org.apache.airavata.model.appcatalog.gatewaygroups.proto.GatewayGroups;
+import 
org.apache.airavata.model.appcatalog.gatewayprofile.proto.ComputeResourcePreference;
+import 
org.apache.airavata.model.appcatalog.gatewayprofile.proto.GatewayResourceProfile;
+import 
org.apache.airavata.model.appcatalog.groupresourceprofile.proto.ComputeResourcePolicy;
+import 
org.apache.airavata.model.appcatalog.groupresourceprofile.proto.GroupComputeResourcePreference;
+import 
org.apache.airavata.model.appcatalog.groupresourceprofile.proto.GroupResourceProfile;
 import org.apache.airavata.model.credential.store.CredentialSummary;
 import org.apache.airavata.model.credential.store.PasswordCredential;
 import org.apache.airavata.model.credential.store.SummaryType;
-import org.apache.airavata.model.group.ResourcePermissionType;
-import org.apache.airavata.model.group.ResourceType;
+import org.apache.airavata.model.group.proto.ResourcePermissionType;
+import org.apache.airavata.model.group.proto.ResourceType;
 import org.apache.airavata.model.security.AuthzToken;
 import org.apache.airavata.model.user.Status;
 import org.apache.airavata.model.user.UserProfile;
@@ -75,7 +73,7 @@ import org.apache.thrift.TException;
 public class AiravataDataMigrator {
 
     public static void main(String[] args)
-            throws SQLException, ClassNotFoundException, TException, 
ApplicationSettingsException {
+            throws Exception {
         String gatewayId = null;
         if (args.length > 0) {
             gatewayId = args[0];
@@ -467,7 +465,7 @@ public class AiravataDataMigrator {
             Entity entity,
             GatewayGroups gatewayGroups,
             boolean cascadePermission)
-            throws TException {
+            throws Exception {
         // Give default Gateway Users group READ access
         sharingRegistryServerHandler.shareEntityWithGroups(
                 entity.getDomainId(),
@@ -483,7 +481,7 @@ public class AiravataDataMigrator {
             Entity entity,
             GatewayGroups gatewayGroups,
             boolean cascadePermission)
-            throws TException {
+            throws Exception {
         // Give Admins group and Read Only Admins group READ access
         sharingRegistryServerHandler.shareEntityWithGroups(
                 entity.getDomainId(),
@@ -506,7 +504,7 @@ public class AiravataDataMigrator {
             AuthzToken authzToken,
             String search,
             String domainId)
-            throws TException {
+            throws Exception {
 
         String gatewayId = 
authzToken.getClaimsMap().get(org.apache.airavata.common.config.Constants.GATEWAY_ID);
         List<UserProfile> missingUsers = new ArrayList<>();
@@ -524,7 +522,7 @@ public class AiravataDataMigrator {
 
     private static boolean migrateKeycloakUsersToGateway(
             TenantManagementKeycloakImpl keycloakClient, AuthzToken 
authzToken, List<UserProfile> missingUsers)
-            throws TException {
+            throws Exception {
 
         String gatewayId = 
authzToken.getClaimsMap().get(org.apache.airavata.common.config.Constants.GATEWAY_ID);
         boolean allUsersUpdated = true;
@@ -537,7 +535,7 @@ public class AiravataDataMigrator {
 
     private static void checkUsersInSharingRegistryService(
             SharingRegistryServerHandler sharingRegistryServerHandler, 
List<UserProfile> missingUsers, String domainId)
-            throws TException {
+            throws Exception {
         System.out.println("Waiting for " + missingUsers.size() + " missing 
users to be propogated to sharing db");
         int waitCount = 0;
         // Wait up to 10 seconds for event based replication to complete, then
@@ -575,7 +573,7 @@ public class AiravataDataMigrator {
             List<UserProfile> missingUsers,
             GatewayGroups gatewayGroups,
             String domainId)
-            throws TException, ApplicationSettingsException {
+            throws Exception {
         // before adding to groups make sure sharing registry has the user 
otherwise add it
         checkUsersInSharingRegistryService(sharingRegistryServerHandler, 
missingUsers, domainId);
         boolean updatedAllUsers = true;
@@ -615,9 +613,9 @@ public class AiravataDataMigrator {
             String ownerId,
             SharingRegistryServerHandler sharingRegistryServerHandler,
             RegistryServerHandler registryServiceClient)
-            throws TException, ApplicationSettingsException {
-        GatewayGroups gatewayGroups = new GatewayGroups();
-        gatewayGroups.setGatewayId(domain.getDomainId());
+            throws Exception {
+        GatewayGroups.Builder gatewayGroupsBuilder = GatewayGroups.newBuilder()
+                .setGatewayId(domain.getDomainId());
 
         // Migrate roles to groups
         List<String> usernames = 
sharingRegistryServerHandler.getUsers(domain.getDomainId(), 0, -1).stream()
@@ -634,7 +632,7 @@ public class AiravataDataMigrator {
                 "Gateway Users",
                 "Default group for users of the gateway.",
                 roleMap.containsKey("gateway-user") ? 
roleMap.get("gateway-user") : Collections.emptyList());
-        
gatewayGroups.setDefaultGatewayUsersGroupId(gatewayUsersGroup.getGroupId());
+        
gatewayGroupsBuilder.setDefaultGatewayUsersGroupId(gatewayUsersGroup.getGroupId());
 
         UserGroup adminUsersGroup = createGroup(
                 sharingRegistryServerHandler,
@@ -643,7 +641,7 @@ public class AiravataDataMigrator {
                 "Admin Users",
                 "Admin users group.",
                 roleMap.containsKey("admin") ? roleMap.get("admin") : 
Collections.emptyList());
-        gatewayGroups.setAdminsGroupId(adminUsersGroup.getGroupId());
+        gatewayGroupsBuilder.setAdminsGroupId(adminUsersGroup.getGroupId());
 
         UserGroup readOnlyAdminsGroup = createGroup(
                 sharingRegistryServerHandler,
@@ -652,8 +650,9 @@ public class AiravataDataMigrator {
                 "Read Only Admin Users",
                 "Group of admin users with read-only access.",
                 roleMap.containsKey("admin-read-only") ? 
roleMap.get("admin-read-only") : Collections.emptyList());
-        
gatewayGroups.setReadOnlyAdminsGroupId(readOnlyAdminsGroup.getGroupId());
+        
gatewayGroupsBuilder.setReadOnlyAdminsGroupId(readOnlyAdminsGroup.getGroupId());
 
+        GatewayGroups gatewayGroups = gatewayGroupsBuilder.build();
         registryServiceClient.createGatewayGroups(gatewayGroups);
         return gatewayGroups;
     }
@@ -663,7 +662,7 @@ public class AiravataDataMigrator {
             SharingRegistryServerHandler sharingRegistryServerHandler,
             CredentialStoreService.Iface credentialStoreServiceClient,
             RegistryServerHandler registryServiceClient)
-            throws TException {
+            throws Exception {
         GatewayResourceProfile gatewayResourceProfile = null;
         try {
             gatewayResourceProfile = 
registryServiceClient.getGatewayResourceProfile(domain.getDomainId());
@@ -680,7 +679,7 @@ public class AiravataDataMigrator {
         String groupOwner = null;
         try {
             PasswordCredential credential = 
credentialStoreServiceClient.getPasswordCredential(
-                    gatewayResourceProfile.getIdentityServerPwdCredToken(), 
gatewayResourceProfile.getGatewayID());
+                    gatewayResourceProfile.getIdentityServerPwdCredToken(), 
gatewayResourceProfile.getGatewayId());
             groupOwner = credential.getLoginUserName();
         } catch (Exception e) {
             System.out.println("Skipping creating group based auth migration 
for " + domain.getDomainId()
@@ -698,7 +697,7 @@ public class AiravataDataMigrator {
     }
 
     private static Map<String, List<String>> loadRolesForUsers(String 
gatewayId, List<String> usernames)
-            throws TException, ApplicationSettingsException {
+            throws Exception {
 
         TenantManagementKeycloakImpl tenantManagementKeycloak = new 
TenantManagementKeycloakImpl();
         PasswordCredential tenantAdminPasswordCredential = 
getTenantAdminPasswordCredential(gatewayId);
@@ -727,12 +726,12 @@ public class AiravataDataMigrator {
     }
 
     private static PasswordCredential getTenantAdminPasswordCredential(String 
tenantId)
-            throws TException, ApplicationSettingsException {
+            throws Exception {
 
         GatewayResourceProfile gwrp = 
getRegistryServiceClient().getGatewayResourceProfile(tenantId);
 
         CredentialStoreService.Iface csClient = 
getCredentialStoreServiceClient();
-        return 
csClient.getPasswordCredential(gwrp.getIdentityServerPwdCredToken(), 
gwrp.getGatewayID());
+        return 
csClient.getPasswordCredential(gwrp.getIdentityServerPwdCredToken(), 
gwrp.getGatewayId());
     }
 
     private static UserGroup createGroup(
@@ -742,7 +741,7 @@ public class AiravataDataMigrator {
             String groupName,
             String groupDescription,
             List<String> usernames)
-            throws TException {
+            throws Exception {
 
         UserGroup userGroup = new UserGroup();
         userGroup.setGroupId(AiravataUtils.getId(groupName));
@@ -769,7 +768,7 @@ public class AiravataDataMigrator {
             String domainOwnerId,
             RegistryServerHandler registryServiceClient,
             SharingRegistryServerHandler sharingRegistryServerHandler)
-            throws TException {
+            throws Exception {
         // Return true if GatewayResourceProfile has at least one 
ComputeResourcePreference and there is no
         // GroupResourceProfile
         List<ComputeResourcePreference> computeResourcePreferences =
@@ -790,14 +789,14 @@ public class AiravataDataMigrator {
     }
 
     private static GroupResourceProfile 
migrateGatewayResourceProfileToGroupResourceProfile(
-            String gatewayId, RegistryServerHandler registryServiceClient) 
throws TException {
+            String gatewayId, RegistryServerHandler registryServiceClient) 
throws Exception {
 
-        GroupResourceProfile groupResourceProfile = new GroupResourceProfile();
-        groupResourceProfile.setGatewayId(gatewayId);
-        groupResourceProfile.setGroupResourceProfileName("Default");
+        GroupResourceProfile.Builder grpBuilder = 
GroupResourceProfile.newBuilder()
+                .setGatewayId(gatewayId)
+                .setGroupResourceProfileName("Default");
         GatewayResourceProfile gatewayResourceProfile = 
registryServiceClient.getGatewayResourceProfile(gatewayId);
         if (isValid(gatewayResourceProfile.getCredentialStoreToken())) {
-            
groupResourceProfile.setDefaultCredentialStoreToken(gatewayResourceProfile.getCredentialStoreToken());
+            
grpBuilder.setDefaultCredentialStoreToken(gatewayResourceProfile.getCredentialStoreToken());
         }
         List<GroupComputeResourcePreference> groupComputeResourcePreferences = 
new ArrayList<>();
         List<ComputeResourcePolicy> computeResourcePolicies = new 
ArrayList<>();
@@ -812,79 +811,79 @@ public class AiravataDataMigrator {
             }
             GroupComputeResourcePreference groupComputeResourcePreference =
                     
convertComputeResourcePreferenceToGroupComputeResourcePreference(
-                            groupResourceProfile.getGroupResourceProfileId(), 
computeResourcePreference);
+                            grpBuilder.getGroupResourceProfileId(), 
computeResourcePreference);
             ComputeResourcePolicy computeResourcePolicy = 
createDefaultComputeResourcePolicy(
-                    groupResourceProfile.getGroupResourceProfileId(),
+                    grpBuilder.getGroupResourceProfileId(),
                     computeResourcePreference.getComputeResourceId(),
                     registryServiceClient);
             
groupComputeResourcePreferences.add(groupComputeResourcePreference);
             computeResourcePolicies.add(computeResourcePolicy);
         }
-        
groupResourceProfile.setComputePreferences(groupComputeResourcePreferences);
-        
groupResourceProfile.setComputeResourcePolicies(computeResourcePolicies);
+        grpBuilder.addAllComputePreferences(groupComputeResourcePreferences);
+        grpBuilder.addAllComputeResourcePolicies(computeResourcePolicies);
+        GroupResourceProfile groupResourceProfile = grpBuilder.build();
         String groupResourceProfileId = 
registryServiceClient.createGroupResourceProfile(groupResourceProfile);
-        groupResourceProfile.setGroupResourceProfileId(groupResourceProfileId);
+        groupResourceProfile = 
groupResourceProfile.toBuilder().setGroupResourceProfileId(groupResourceProfileId).build();
         return groupResourceProfile;
     }
 
     private static GroupComputeResourcePreference 
convertComputeResourcePreferenceToGroupComputeResourcePreference(
             String groupResourceProfileId, ComputeResourcePreference 
computeResourcePreference) {
-        GroupComputeResourcePreference groupComputeResourcePreference = new 
GroupComputeResourcePreference();
-        
groupComputeResourcePreference.setGroupResourceProfileId(groupResourceProfileId);
-        
groupComputeResourcePreference.setComputeResourceId(computeResourcePreference.getComputeResourceId());
-        
groupComputeResourcePreference.setOverridebyAiravata(computeResourcePreference.isOverridebyAiravata());
+        GroupComputeResourcePreference.Builder gcBuilder = 
GroupComputeResourcePreference.newBuilder()
+                .setGroupResourceProfileId(groupResourceProfileId)
+                
.setComputeResourceId(computeResourcePreference.getComputeResourceId())
+                
.setOverrideByAiravata(computeResourcePreference.getOverrideByAiravata())
+                
.setPreferredJobSubmissionProtocol(computeResourcePreference.getPreferredJobSubmissionProtocol())
+                
.setPreferredDataMovementProtocol(computeResourcePreference.getPreferredDataMovementProtocol())
+                
.setResourceType(org.apache.airavata.model.appcatalog.groupresourceprofile.proto.ResourceType.SLURM);
         if (isValid(computeResourcePreference.getLoginUserName())) {
-            
groupComputeResourcePreference.setLoginUserName(computeResourcePreference.getLoginUserName());
+            
gcBuilder.setLoginUserName(computeResourcePreference.getLoginUserName());
         }
-        groupComputeResourcePreference.setPreferredJobSubmissionProtocol(
-                computeResourcePreference.getPreferredJobSubmissionProtocol());
-        groupComputeResourcePreference.setPreferredDataMovementProtocol(
-                computeResourcePreference.getPreferredDataMovementProtocol());
         if 
(isValid(computeResourcePreference.getResourceSpecificCredentialStoreToken())) {
-            
groupComputeResourcePreference.setResourceSpecificCredentialStoreToken(
+            gcBuilder.setResourceSpecificCredentialStoreToken(
                     
computeResourcePreference.getResourceSpecificCredentialStoreToken());
         }
         if (isValid(computeResourcePreference.getScratchLocation())) {
-            
groupComputeResourcePreference.setScratchLocation(computeResourcePreference.getScratchLocation());
+            
gcBuilder.setScratchLocation(computeResourcePreference.getScratchLocation());
         }
 
-        groupComputeResourcePreference.setResourceType(
-                
org.apache.airavata.model.appcatalog.groupresourceprofile.ResourceType.SLURM);
-        SlurmComputeResourcePreference slurm = new 
SlurmComputeResourcePreference();
+        // Build SlurmComputeResourcePreference for environment-specific 
settings
+        
org.apache.airavata.model.appcatalog.groupresourceprofile.proto.SlurmComputeResourcePreference.Builder
 slurmBuilder =
+                
org.apache.airavata.model.appcatalog.groupresourceprofile.proto.SlurmComputeResourcePreference.newBuilder();
         if (isValid(computeResourcePreference.getPreferredBatchQueue())) {
-            
slurm.setPreferredBatchQueue(computeResourcePreference.getPreferredBatchQueue());
+            
slurmBuilder.setPreferredBatchQueue(computeResourcePreference.getPreferredBatchQueue());
         }
         if (isValid(computeResourcePreference.getAllocationProjectNumber())) {
-            
slurm.setAllocationProjectNumber(computeResourcePreference.getAllocationProjectNumber());
+            
slurmBuilder.setAllocationProjectNumber(computeResourcePreference.getAllocationProjectNumber());
         }
         if (isValid(computeResourcePreference.getUsageReportingGatewayId())) {
-            
slurm.setUsageReportingGatewayId(computeResourcePreference.getUsageReportingGatewayId());
+            
slurmBuilder.setUsageReportingGatewayId(computeResourcePreference.getUsageReportingGatewayId());
         }
         if (isValid(computeResourcePreference.getQualityOfService())) {
-            
slurm.setQualityOfService(computeResourcePreference.getQualityOfService());
+            
slurmBuilder.setQualityOfService(computeResourcePreference.getQualityOfService());
         }
-
-        EnvironmentSpecificPreferences esp = new 
EnvironmentSpecificPreferences();
-        esp.setSlurm(slurm);
-        groupComputeResourcePreference.setSpecificPreferences(esp);
+        gcBuilder.setSpecificPreferences(
+                
org.apache.airavata.model.appcatalog.groupresourceprofile.proto.EnvironmentSpecificPreferences.newBuilder()
+                        .setSlurm(slurmBuilder.build())
+                        .build());
 
         // Note: skipping copying of reservation time and ssh account 
provisioner configuration for now
-        return groupComputeResourcePreference;
+        return gcBuilder.build();
     }
 
     private static ComputeResourcePolicy createDefaultComputeResourcePolicy(
             String groupResourceProfileId, String computeResourceId, 
RegistryServerHandler registryServiceClient)
-            throws TException {
-        ComputeResourcePolicy computeResourcePolicy = new 
ComputeResourcePolicy();
-        computeResourcePolicy.setComputeResourceId(computeResourceId);
-        
computeResourcePolicy.setGroupResourceProfileId(groupResourceProfileId);
+            throws Exception {
         ComputeResourceDescription computeResourceDescription =
                 registryServiceClient.getComputeResource(computeResourceId);
-        List<String> batchQueueNames = 
computeResourceDescription.getBatchQueues().stream()
+        List<String> batchQueueNames = 
computeResourceDescription.getBatchQueuesList().stream()
                 .map(bq -> bq.getQueueName())
                 .collect(Collectors.toList());
-        computeResourcePolicy.setAllowedBatchQueues(batchQueueNames);
-        return computeResourcePolicy;
+        return ComputeResourcePolicy.newBuilder()
+                .setComputeResourceId(computeResourceId)
+                .setGroupResourceProfileId(groupResourceProfileId)
+                .addAllAllowedBatchQueues(batchQueueNames)
+                .build();
     }
 
     private static boolean isValid(String s) {
@@ -900,7 +899,7 @@ public class AiravataDataMigrator {
         }
     }
 
-    private static CredentialStoreService.Iface 
getCredentialStoreServiceClient() throws TException {
+    private static CredentialStoreService.Iface 
getCredentialStoreServiceClient() throws Exception {
         try {
             return new CredentialStoreServerHandler();
         } catch (Exception e) {
@@ -912,7 +911,7 @@ public class AiravataDataMigrator {
         return new RegistryServerHandler();
     }
 
-    private static AuthzToken getManagementUsersAccessToken(String tenantId) 
throws TException {
+    private static AuthzToken getManagementUsersAccessToken(String tenantId) 
throws Exception {
         try {
             AiravataSecurityManager securityManager = 
SecurityManagerFactory.getSecurityManager();
             AuthzToken authzToken = 
securityManager.getUserManagementServiceAccountAuthzToken(tenantId);
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/sharing/util/ThriftDataModelConversion.java
 
b/airavata-api/src/main/java/org/apache/airavata/sharing/util/ThriftDataModelConversion.java
index 498157fc5e..a14fad2780 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/sharing/util/ThriftDataModelConversion.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/sharing/util/ThriftDataModelConversion.java
@@ -43,4 +43,15 @@ public class ThriftDataModelConversion {
         user.setEmail(userProfile.getEmails().get(0));
         return user;
     }
+
+    public static User 
getUser(org.apache.airavata.model.user.proto.UserProfile userProfile) {
+        User user = new User();
+        user.setUserId(userProfile.getAiravataInternalUserId());
+        user.setDomainId(userProfile.getGatewayId());
+        user.setUserName(userProfile.getUserId());
+        user.setFirstName(userProfile.getFirstName());
+        user.setLastName(userProfile.getLastName());
+        user.setEmail(userProfile.getEmailsList().get(0));
+        return user;
+    }
 }
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/storage/task/InputDataStagingTask.java
 
b/airavata-api/src/main/java/org/apache/airavata/storage/task/InputDataStagingTask.java
index 5948730bf9..a34360c3eb 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/storage/task/InputDataStagingTask.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/storage/task/InputDataStagingTask.java
@@ -61,7 +61,7 @@ public class InputDataStagingTask extends DataStagingTask {
                         + getTaskId() + ":- Couldn't stage file " + 
processInput.getName()
                         + " , file name shouldn't be null. ";
                 logger.error(message);
-                if (processInput.isIsRequired()) {
+                if (processInput.getIsRequired()) {
                     message += "File name is null, but this input's isRequired 
bit is not set";
                 } else {
                     message += "File name is null";
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/storage/task/OutputDataStagingTask.java
 
b/airavata-api/src/main/java/org/apache/airavata/storage/task/OutputDataStagingTask.java
index c0d5a8e0d9..f85938023a 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/storage/task/OutputDataStagingTask.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/storage/task/OutputDataStagingTask.java
@@ -69,7 +69,7 @@ public class OutputDataStagingTask extends DataStagingTask {
                         + getTaskId() + ":- Couldn't stage file " + 
processOutput.getName()
                         + " , file name shouldn't be null. ";
                 logger.error(message);
-                if (processOutput.isIsRequired()) {
+                if (processOutput.getIsRequired()) {
                     message += "File name is null, but this output's 
isRequired bit is not set";
                 } else {
                     message += "File name is null";
@@ -214,7 +214,7 @@ public class OutputDataStagingTask extends DataStagingTask {
                     try {
                         ApplicationInterfaceDescription appInterface =
                                 
getTaskContext().getApplicationInterfaceDescription();
-                        if (appInterface != null && 
appInterface.isCleanAfterStaged()) {
+                        if (appInterface != null && 
appInterface.getCleanAfterStaged()) {
                             logger.info(
                                     "cleanAfterStaged is enabled, deleting 
source files after successful staging for task with the Id: {}",
                                     getTaskId());
@@ -249,7 +249,7 @@ public class OutputDataStagingTask extends DataStagingTask {
                     try {
                         ApplicationInterfaceDescription appInterface =
                                 
getTaskContext().getApplicationInterfaceDescription();
-                        if (appInterface != null && 
appInterface.isCleanAfterStaged()) {
+                        if (appInterface != null && 
appInterface.getCleanAfterStaged()) {
                             logger.info(
                                     "cleanAfterStaged is enabled, deleting 
source file after successful staging for task with the Id: {}",
                                     getTaskId());
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/storage/util/SSHJStorageAdaptor.java
 
b/airavata-api/src/main/java/org/apache/airavata/storage/util/SSHJStorageAdaptor.java
index 757a3139e7..425cedb9f1 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/storage/util/SSHJStorageAdaptor.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/storage/util/SSHJStorageAdaptor.java
@@ -25,7 +25,7 @@ import org.apache.airavata.compute.util.AgentUtils;
 import org.apache.airavata.compute.util.CommandOutput;
 import org.apache.airavata.compute.util.SSHJAgentAdaptor;
 import 
org.apache.airavata.model.appcatalog.storageresource.proto.StorageResourceDescription;
-import org.apache.airavata.model.credential.store.proto.SSHCredential;
+import org.apache.airavata.model.credential.store.SSHCredential;
 import org.apache.airavata.model.data.movement.proto.DataMovementInterface;
 import org.apache.airavata.model.data.movement.proto.DataMovementProtocol;
 import org.apache.airavata.model.data.movement.proto.SCPDataMovement;
@@ -48,7 +48,7 @@ public class SSHJStorageAdaptor extends SSHJAgentAdaptor 
implements StorageResou
             logger.info("Fetching data movement interfaces for storage 
resource " + storageResourceId);
 
             Optional<DataMovementInterface> dmInterfaceOp =
-                    
storageResourceDescription.getDataMovementInterfaces().stream()
+                    
storageResourceDescription.getDataMovementInterfacesList().stream()
                             .filter(iface -> iface.getDataMovementProtocol() 
== DataMovementProtocol.SCP)
                             .findFirst();
 
@@ -67,7 +67,7 @@ public class SSHJStorageAdaptor extends SSHJAgentAdaptor 
implements StorageResou
 
             logger.info("Description for token : " + token + " : " + 
sshCredential.getDescription());
 
-            String alternateHostName = 
scpDataMovement.getAlternativeSCPHostName();
+            String alternateHostName = 
scpDataMovement.getAlternativeScpHostName();
             String selectedHostName = (alternateHostName == null || 
"".equals(alternateHostName))
                     ? storageResourceDescription.getHostName()
                     : alternateHostName;
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/storage/util/StorageResourceAdaptorImpl.java
 
b/airavata-api/src/main/java/org/apache/airavata/storage/util/StorageResourceAdaptorImpl.java
index 28db41c5a1..0403de959a 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/storage/util/StorageResourceAdaptorImpl.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/storage/util/StorageResourceAdaptorImpl.java
@@ -25,7 +25,7 @@ import org.apache.airavata.compute.util.CommandOutput;
 import org.apache.airavata.compute.util.SshAdaptorParams;
 import org.apache.airavata.compute.util.SshAgentAdaptor;
 import 
org.apache.airavata.model.appcatalog.storageresource.proto.StorageResourceDescription;
-import org.apache.airavata.model.credential.store.proto.SSHCredential;
+import org.apache.airavata.model.credential.store.SSHCredential;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 


Reply via email to