You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ya...@apache.org on 2026/04/01 19:05:05 UTC

(airavata) 32/49: fix: migrate all test files from Thrift to proto types

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 b9f8a513f37af0d94338f416e8b4d600678d27e8
Author: yasithdev <ya...@icloud.com>
AuthorDate: Tue Mar 31 20:37:42 2026 -0400

    fix: migrate all test files from Thrift to proto types
    
    - Update imports from org.apache.airavata.model.X.Y to
      org.apache.airavata.model.X.proto.Y across 55+ test files
    - Convert Thrift mutable objects (new Foo() + setters) to protobuf
      builder pattern (Foo.newBuilder().setX().build())
    - Replace Thrift enum values with proto equivalents (e.g.,
      ExperimentState.CREATED -> EXPERIMENT_STATE_CREATED)
    - Migrate sharing registry Thrift models to JPA entities (e.g.,
      sharing.registry.models.User -> sharing.model.UserEntity)
    - Replace TException with Exception
    - Fix boolean getters (isFoo -> getFoo), list size (getFooSize ->
      getFooCount), list getters (getFoo -> getFooList)
    - Fix field name casing differences (setDefaultCPUCount ->
      setDefaultCpuCount)
    - Rewrite GatewayGroupsInitializerTest and CipresTest to use
      handler types instead of Thrift clients
    
    Note: 3 compute repository test files (ComputeResourceRepositoryTest,
    GatewayProfileRepositoryTest, GroupResourceProfileRepositoryTest)
    still have partial builder pattern conversion needed due to complex
    mutable object graph patterns.
---
 .../ApplicationDeploymentRepositoryTest.java       | 213 +++++----
 .../ApplicationInterfaceRepositoryTest.java        | 512 +++++++++++----------
 .../repository/ComputeResourceRepositoryTest.java  | 284 ++++++------
 .../repository/GatewayGroupsRepositoryTest.java    |  22 +-
 .../repository/GatewayProfileRepositoryTest.java   |  77 ++--
 .../GroupResourceProfileRepositoryTest.java        |  75 ++-
 .../JobSubmissionInterfaceRepositoryTest.java      |  22 +-
 .../repository/StorageResourceRepositoryTest.java  |  50 +-
 .../UserResourceProfileRepositoryTest.java         |  43 +-
 .../service/ApplicationCatalogServiceTest.java     |  44 +-
 .../service/GatewayResourceProfileServiceTest.java |  14 +-
 .../service/GroupResourceProfileServiceTest.java   |  27 +-
 .../compute/service/ParserServiceTest.java         |  10 +-
 .../compute/service/ResourceServiceTest.java       |  19 +-
 .../service/UserResourceProfileServiceTest.java    |  16 +-
 .../GroupComputeResourcePreferenceUtilTest.java    |   4 +-
 .../repository/db/CredentialsDAOTest.java          |   2 +-
 .../credential/service/CredentialServiceTest.java  |  16 +-
 .../credential/service/SSHAccountServiceTest.java  |   7 +-
 .../repository/ExperimentErrorRepositoryTest.java  |  46 +-
 .../repository/ExperimentInputRepositoryTest.java  |  50 +-
 .../repository/ExperimentOutputRepositoryTest.java |  50 +-
 .../repository/ExperimentRepositoryTest.java       | 219 +++++----
 .../repository/ExperimentStatusRepositoryTest.java |  57 ++-
 .../ExperimentSummaryRepositoryTest.java           | 103 ++---
 .../repository/GatewayRepositoryTest.java          |  19 +-
 .../execution/repository/JobRepositoryTest.java    |  75 ++-
 .../repository/JobStatusRepositoryTest.java        |  71 ++-
 .../repository/NotificationRepositoryTest.java     |  15 +-
 .../repository/ProcessErrorRepositoryTest.java     |  46 +-
 .../repository/ProcessInputRepositoryTest.java     |  52 +--
 .../repository/ProcessOutputRepositoryTest.java    |  52 +--
 .../repository/ProcessRepositoryTest.java          | 114 +++--
 .../repository/ProcessStatusRepositoryTest.java    |  61 ++-
 .../repository/ProjectRepositoryTest.java          |  22 +-
 .../repository/QueueStatusRepositoryTest.java      |  15 +-
 .../repository/TaskErrorRepositoryTest.java        |  57 ++-
 .../execution/repository/TaskRepositoryTest.java   |  72 ++-
 .../repository/TaskStatusRepositoryTest.java       |  62 ++-
 .../execution/repository/UserRepositoryTest.java   |  38 +-
 .../repository/WorkflowRepositoryTest.java         |   2 +-
 .../execution/service/ExperimentServiceTest.java   | 130 +++---
 .../execution/service/GatewayServiceTest.java      |  21 +-
 .../execution/service/NotificationServiceTest.java |  19 +-
 .../execution/service/ProjectServiceTest.java      |  39 +-
 .../replicacatalog/DataProductRepositoryTest.java  |  60 ++-
 .../DataReplicaLocationRepositoryTest.java         |  31 +-
 .../ExperimentRepositoryIntegrationTest.java       |  81 ++--
 .../integration/SharingServiceIntegrationTest.java |  34 +-
 .../admin/services/core/tests/SetupNewGateway.java |  74 ++-
 .../service/GatewayGroupsInitializerTest.java      |  60 +--
 .../service/KeyCloakSecurityManagerTest.java       |  52 ++-
 .../util/AuthenticatorConfigurationReaderTest.java |   6 +-
 .../airavata/sharing/handler/CipresTest.java       | 246 ++--------
 .../handler/SharingRegistryServerHandlerTest.java  |  66 +--
 .../service/ResourceSharingServiceTest.java        |   8 +-
 .../storage/service/DataProductServiceTest.java    |  19 +-
 57 files changed, 1683 insertions(+), 2018 deletions(-)

diff --git a/airavata-api/src/test/java/org/apache/airavata/compute/repository/ApplicationDeploymentRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/compute/repository/ApplicationDeploymentRepositoryTest.java
index 43ca1842ee..4cc2a14a69 100644
--- a/airavata-api/src/test/java/org/apache/airavata/compute/repository/ApplicationDeploymentRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/compute/repository/ApplicationDeploymentRepositoryTest.java
@@ -25,13 +25,12 @@ import java.util.*;
 import org.apache.airavata.execution.util.DBConstants;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.AppCatalogException;
-import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
-import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
-import org.apache.airavata.model.appcatalog.appdeployment.CommandObject;
-import org.apache.airavata.model.appcatalog.appdeployment.SetEnvPaths;
-import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
-import org.apache.airavata.model.commons.airavata_commonsConstants;
-import org.apache.airavata.model.parallelism.ApplicationParallelismType;
+import org.apache.airavata.model.appcatalog.appdeployment.proto.ApplicationDeploymentDescription;
+import org.apache.airavata.model.appcatalog.appdeployment.proto.ApplicationModule;
+import org.apache.airavata.model.appcatalog.appdeployment.proto.CommandObject;
+import org.apache.airavata.model.appcatalog.appdeployment.proto.SetEnvPaths;
+import org.apache.airavata.model.appcatalog.computeresource.proto.ComputeResourceDescription;
+import org.apache.airavata.model.parallelism.proto.ApplicationParallelismType;
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Disabled;
@@ -56,16 +55,18 @@ public class ApplicationDeploymentRepositoryTest extends TestBase {
     }
 
     private String addSampleApplicationModule(String tag) throws AppCatalogException {
-        ApplicationModule applicationModule = new ApplicationModule();
-        applicationModule.setAppModuleId("appMod" + tag);
-        applicationModule.setAppModuleName("appModName" + tag);
+        ApplicationModule applicationModule = ApplicationModule.newBuilder()
+                .setAppModuleId("appMod" + tag)
+                .setAppModuleName("appModName" + tag)
+                .build();
         return applicationInterfaceRepository.addApplicationModule(applicationModule, gatewayId);
     }
 
     private String addSampleComputeResource(String tag) throws AppCatalogException {
-        ComputeResourceDescription computeResourceDescription = new ComputeResourceDescription();
-        computeResourceDescription.setComputeResourceId("compHost" + tag);
-        computeResourceDescription.setHostName("compHostName" + tag);
+        ComputeResourceDescription computeResourceDescription = ComputeResourceDescription.newBuilder()
+                .setComputeResourceId("compHost" + tag)
+                .setHostName("compHostName" + tag)
+                .build();
         return computeResourceRepository.addComputeResource(computeResourceDescription);
     }
 
@@ -76,42 +77,44 @@ public class ApplicationDeploymentRepositoryTest extends TestBase {
                 && EqualsBuilder.reflectionEquals(
                         expected,
                         actual,
-                        "moduleLoadCmds",
-                        "libPrependPaths",
-                        "libAppendPaths",
-                        "setEnvironment",
-                        "preJobCommands",
-                        "postJobCommands",
-                        "__isset_bitfield");
+                        "moduleLoadCmds_",
+                        "libPrependPaths_",
+                        "libAppendPaths_",
+                        "setEnvironment_",
+                        "preJobCommands_",
+                        "postJobCommands_",
+                        "memoizedIsInitialized",
+                        "memoizedSize",
+                        "memoizedHashCode");
         equals = equals
                 && deepCompareLists(
-                        expected.getSetEnvironment(),
-                        actual.getSetEnvironment(),
+                        expected.getSetEnvironmentList(),
+                        actual.getSetEnvironmentList(),
                         Comparator.comparingInt(SetEnvPaths::getEnvPathOrder));
         equals = equals
                 && deepCompareLists(
-                        expected.getLibPrependPaths(),
-                        actual.getLibPrependPaths(),
+                        expected.getLibPrependPathsList(),
+                        actual.getLibPrependPathsList(),
                         Comparator.comparingInt(SetEnvPaths::getEnvPathOrder));
         equals = equals
                 && deepCompareLists(
-                        expected.getLibAppendPaths(),
-                        actual.getLibAppendPaths(),
+                        expected.getLibAppendPathsList(),
+                        actual.getLibAppendPathsList(),
                         Comparator.comparingInt(SetEnvPaths::getEnvPathOrder));
         equals = equals
                 && deepCompareLists(
-                        expected.getModuleLoadCmds(),
-                        actual.getModuleLoadCmds(),
+                        expected.getModuleLoadCmdsList(),
+                        actual.getModuleLoadCmdsList(),
                         Comparator.comparingInt(CommandObject::getCommandOrder));
         equals = equals
                 && deepCompareLists(
-                        expected.getPreJobCommands(),
-                        actual.getPreJobCommands(),
+                        expected.getPreJobCommandsList(),
+                        actual.getPreJobCommandsList(),
                         Comparator.comparingInt(CommandObject::getCommandOrder));
         equals = equals
                 && deepCompareLists(
-                        expected.getPostJobCommands(),
-                        actual.getPostJobCommands(),
+                        expected.getPostJobCommandsList(),
+                        actual.getPostJobCommandsList(),
                         Comparator.comparingInt(CommandObject::getCommandOrder));
         return equals;
     }
@@ -126,7 +129,7 @@ public class ApplicationDeploymentRepositoryTest extends TestBase {
             return false;
         }
         for (int i = 0; i < expectedCopy.size(); i++) {
-            if (!EqualsBuilder.reflectionEquals(expectedCopy.get(i), actualCopy.get(i), "__isset_bitfield")) {
+            if (!EqualsBuilder.reflectionEquals(expectedCopy.get(i), actualCopy.get(i), "memoizedIsInitialized", "memoizedSize", "memoizedHashCode")) {
                 return false;
             }
         }
@@ -135,51 +138,56 @@ public class ApplicationDeploymentRepositoryTest extends TestBase {
 
     private ApplicationDeploymentDescription prepareSampleDeployment(
             String tag, String applicationModule, String computeResource) {
-        CommandObject moduleLoadCmd = new CommandObject();
-        moduleLoadCmd.setCommand("moduleLoadCmd");
-        moduleLoadCmd.setCommandOrder(1);
-
-        SetEnvPaths libPrependPath = new SetEnvPaths();
-        libPrependPath.setName("libPrependPath");
-        libPrependPath.setValue("libPrependPathValue");
-        libPrependPath.setEnvPathOrder(1);
-        SetEnvPaths libAppendPath = new SetEnvPaths();
-        libAppendPath.setName("libAppendPath");
-        libAppendPath.setValue("libAppendPathValue");
-        libAppendPath.setEnvPathOrder(2);
-
-        SetEnvPaths setEnvironment = new SetEnvPaths();
-        setEnvironment.setName("setEnvironment");
-        setEnvironment.setValue("setEnvironmentValue");
-        setEnvironment.setEnvPathOrder(3);
-
-        CommandObject preJobCommand = new CommandObject();
-        preJobCommand.setCommand("preCommand");
-        preJobCommand.setCommandOrder(2);
-        CommandObject postJobCommand = new CommandObject();
-        postJobCommand.setCommand("postCommand");
-        postJobCommand.setCommandOrder(3);
-
-        ApplicationDeploymentDescription deployment = new ApplicationDeploymentDescription();
-        deployment.setAppDeploymentId("appDep" + tag);
-        deployment.setAppDeploymentDescription("test application deployment" + tag);
-        deployment.setAppModuleId(applicationModule);
-        deployment.setComputeHostId(computeResource);
-        deployment.setExecutablePath("executablePath" + tag);
-        deployment.setParallelism(ApplicationParallelismType.SERIAL);
-        deployment.setModuleLoadCmds(new ArrayList<>(Arrays.asList(moduleLoadCmd)));
-        deployment.setLibPrependPaths(new ArrayList<>(Arrays.asList(libPrependPath)));
-        deployment.setLibAppendPaths(new ArrayList<>(Arrays.asList(libAppendPath)));
-        deployment.setPreJobCommands(new ArrayList<>(Arrays.asList(preJobCommand)));
-        deployment.setPostJobCommands(new ArrayList<>(Arrays.asList(postJobCommand)));
-        deployment.setSetEnvironment(new ArrayList<>(Arrays.asList(setEnvironment)));
-        deployment.setDefaultQueueName("queue" + tag);
-        deployment.setDefaultCPUCount(10);
-        deployment.setDefaultNodeCount(5);
-        deployment.setDefaultWalltime(15);
-        deployment.setEditableByUser(true);
-
-        return deployment;
+        CommandObject moduleLoadCmd = CommandObject.newBuilder()
+                .setCommand("moduleLoadCmd")
+                .setCommandOrder(1)
+                .build();
+
+        SetEnvPaths libPrependPath = SetEnvPaths.newBuilder()
+                .setName("libPrependPath")
+                .setValue("libPrependPathValue")
+                .setEnvPathOrder(1)
+                .build();
+        SetEnvPaths libAppendPath = SetEnvPaths.newBuilder()
+                .setName("libAppendPath")
+                .setValue("libAppendPathValue")
+                .setEnvPathOrder(2)
+                .build();
+
+        SetEnvPaths setEnvironment = SetEnvPaths.newBuilder()
+                .setName("setEnvironment")
+                .setValue("setEnvironmentValue")
+                .setEnvPathOrder(3)
+                .build();
+
+        CommandObject preJobCommand = CommandObject.newBuilder()
+                .setCommand("preCommand")
+                .setCommandOrder(2)
+                .build();
+        CommandObject postJobCommand = CommandObject.newBuilder()
+                .setCommand("postCommand")
+                .setCommandOrder(3)
+                .build();
+
+        return ApplicationDeploymentDescription.newBuilder()
+                .setAppDeploymentId("appDep" + tag)
+                .setAppDeploymentDescription("test application deployment" + tag)
+                .setAppModuleId(applicationModule)
+                .setComputeHostId(computeResource)
+                .setExecutablePath("executablePath" + tag)
+                .setParallelism(ApplicationParallelismType.SERIAL)
+                .addModuleLoadCmds(moduleLoadCmd)
+                .addLibPrependPaths(libPrependPath)
+                .addLibAppendPaths(libAppendPath)
+                .addPreJobCommands(preJobCommand)
+                .addPostJobCommands(postJobCommand)
+                .addSetEnvironment(setEnvironment)
+                .setDefaultQueueName("queue" + tag)
+                .setDefaultCpuCount(10)
+                .setDefaultNodeCount(5)
+                .setDefaultWalltime(15)
+                .setEditableByUser(true)
+                .build();
     }
 
     @Disabled("Schema gap: SetEnvPaths.envPathOrder not stored in entity, deep comparison fails on round-trip")
@@ -205,9 +213,9 @@ public class ApplicationDeploymentRepositoryTest extends TestBase {
         String computeResource = addSampleComputeResource("1");
 
         ApplicationDeploymentDescription deployment = prepareSampleDeployment("1", applicationModule, computeResource);
-        deployment.setAppDeploymentId(airavata_commonsConstants.DEFAULT_ID);
+        deployment = deployment.toBuilder().setAppDeploymentId("DO_NOT_SET_AT_CLIENTS").build();
         String deploymentId = applicationDeploymentRepository.addApplicationDeployment(deployment, gatewayId);
-        Assertions.assertNotEquals(deploymentId, airavata_commonsConstants.DEFAULT_ID);
+        Assertions.assertNotEquals(deploymentId, "DO_NOT_SET_AT_CLIENTS");
         Assertions.assertEquals("compHostName1" + "_" + applicationModule, deploymentId);
     }
 
@@ -221,28 +229,29 @@ public class ApplicationDeploymentRepositoryTest extends TestBase {
 
         String deploymentId = applicationDeploymentRepository.addApplicationDeployment(deployment, gatewayId);
 
-        deployment.setDefaultQueueName("updated");
-        deployment.setAppDeploymentDescription("updated description");
-
-        CommandObject moduleLoadCmd = new CommandObject();
-        moduleLoadCmd.setCommand("moduleLoadCmd2");
-        moduleLoadCmd.setCommandOrder(2);
-
-        deployment.getModuleLoadCmds().add(moduleLoadCmd);
-
-        SetEnvPaths libPrependPath = new SetEnvPaths();
-        libPrependPath.setName("libPrependPath2");
-        libPrependPath.setValue("libPrependPathValue2");
-        libPrependPath.setEnvPathOrder(4);
-
-        deployment.getLibPrependPaths().add(libPrependPath);
-
-        deployment.setExecutablePath("executablePath2");
-        deployment.setParallelism(ApplicationParallelismType.MPI);
-        deployment.setDefaultCPUCount(12);
-        deployment.setDefaultNodeCount(15);
-        deployment.setDefaultWalltime(10);
-        deployment.setEditableByUser(false);
+        CommandObject moduleLoadCmd = CommandObject.newBuilder()
+                .setCommand("moduleLoadCmd2")
+                .setCommandOrder(2)
+                .build();
+
+        SetEnvPaths libPrependPath = SetEnvPaths.newBuilder()
+                .setName("libPrependPath2")
+                .setValue("libPrependPathValue2")
+                .setEnvPathOrder(4)
+                .build();
+
+        deployment = deployment.toBuilder()
+                .setDefaultQueueName("updated")
+                .setAppDeploymentDescription("updated description")
+                .addModuleLoadCmds(moduleLoadCmd)
+                .addLibPrependPaths(libPrependPath)
+                .setExecutablePath("executablePath2")
+                .setParallelism(ApplicationParallelismType.MPI)
+                .setDefaultCpuCount(12)
+                .setDefaultNodeCount(15)
+                .setDefaultWalltime(10)
+                .setEditableByUser(false)
+                .build();
 
         applicationDeploymentRepository.updateApplicationDeployment(deploymentId, deployment);
 
diff --git a/airavata-api/src/test/java/org/apache/airavata/compute/repository/ApplicationInterfaceRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/compute/repository/ApplicationInterfaceRepositoryTest.java
index e131c50767..83821c1588 100644
--- a/airavata-api/src/test/java/org/apache/airavata/compute/repository/ApplicationInterfaceRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/compute/repository/ApplicationInterfaceRepositoryTest.java
@@ -26,14 +26,14 @@ import java.util.*;
 import org.apache.airavata.execution.util.DBConstants;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.AppCatalogException;
-import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
-import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
-import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
-import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
-import org.apache.airavata.model.application.io.DataType;
-import org.apache.airavata.model.application.io.InputDataObjectType;
-import org.apache.airavata.model.application.io.OutputDataObjectType;
-import org.apache.airavata.model.parallelism.ApplicationParallelismType;
+import org.apache.airavata.model.appcatalog.appdeployment.proto.ApplicationDeploymentDescription;
+import org.apache.airavata.model.appcatalog.appdeployment.proto.ApplicationModule;
+import org.apache.airavata.model.appcatalog.appinterface.proto.ApplicationInterfaceDescription;
+import org.apache.airavata.model.appcatalog.computeresource.proto.ComputeResourceDescription;
+import org.apache.airavata.model.application.io.proto.DataType;
+import org.apache.airavata.model.application.io.proto.InputDataObjectType;
+import org.apache.airavata.model.application.io.proto.OutputDataObjectType;
+import org.apache.airavata.model.parallelism.proto.ApplicationParallelismType;
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
@@ -61,11 +61,12 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
 
     @Test
     public void addApplicationModuleTest() throws AppCatalogException {
-        ApplicationModule applicationModule = new ApplicationModule();
-        applicationModule.setAppModuleId("appMod1");
-        applicationModule.setAppModuleName("appMod1Name");
-        applicationModule.setAppModuleDescription("Description");
-        applicationModule.setAppModuleVersion("Version1");
+        ApplicationModule applicationModule = ApplicationModule.newBuilder()
+                .setAppModuleId("appMod1")
+                .setAppModuleName("appMod1Name")
+                .setAppModuleDescription("Description")
+                .setAppModuleVersion("Version1")
+                .build();
         String moduleId = applicationInterfaceRepository.addApplicationModule(applicationModule, gatewayId);
 
         ApplicationModule savedAppModule = applicationInterfaceRepository.getApplicationModule(moduleId);
@@ -74,10 +75,11 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
 
     @Test
     public void addApplicationModuleWithEmptyIdTest() throws AppCatalogException {
-        ApplicationModule applicationModule = new ApplicationModule();
-        applicationModule.setAppModuleName("appMod1Name");
-        applicationModule.setAppModuleDescription("Description");
-        applicationModule.setAppModuleVersion("Version1");
+        ApplicationModule applicationModule = ApplicationModule.newBuilder()
+                .setAppModuleName("appMod1Name")
+                .setAppModuleDescription("Description")
+                .setAppModuleVersion("Version1")
+                .build();
         String moduleId = applicationInterfaceRepository.addApplicationModule(applicationModule, gatewayId);
 
         ApplicationModule savedAppModule = applicationInterfaceRepository.getApplicationModule(moduleId);
@@ -90,9 +92,10 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
 
         Assertions.assertNull(applicationInterfaceRepository.getApplicationModule("appMod1"));
 
-        ApplicationModule applicationModule = new ApplicationModule();
-        applicationModule.setAppModuleId("appMod1");
-        applicationModule.setAppModuleName("appMod1Name");
+        ApplicationModule applicationModule = ApplicationModule.newBuilder()
+                .setAppModuleId("appMod1")
+                .setAppModuleName("appMod1Name")
+                .build();
         String moduleId = applicationInterfaceRepository.addApplicationModule(applicationModule, gatewayId);
         Assertions.assertNotNull(applicationInterfaceRepository.getApplicationModule(moduleId));
 
@@ -103,19 +106,22 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
 
     @Test
     public void updateApplicationModuleTest() throws AppCatalogException {
-        ApplicationModule applicationModule = new ApplicationModule();
-        applicationModule.setAppModuleId("appMod1");
-        applicationModule.setAppModuleName("appMod1Name");
-        applicationModule.setAppModuleDescription("Description");
-        applicationModule.setAppModuleVersion("Version1");
+        ApplicationModule applicationModule = ApplicationModule.newBuilder()
+                .setAppModuleId("appMod1")
+                .setAppModuleName("appMod1Name")
+                .setAppModuleDescription("Description")
+                .setAppModuleVersion("Version1")
+                .build();
         String moduleId = applicationInterfaceRepository.addApplicationModule(applicationModule, gatewayId);
 
         ApplicationModule savedAppModule = applicationInterfaceRepository.getApplicationModule(moduleId);
         Assertions.assertTrue(EqualsBuilder.reflectionEquals(applicationModule, savedAppModule));
 
-        savedAppModule.setAppModuleName("Updated Name");
-        savedAppModule.setAppModuleDescription("Updated Description");
-        savedAppModule.setAppModuleVersion("new version");
+        savedAppModule = savedAppModule.toBuilder()
+                .setAppModuleName("Updated Name")
+                .setAppModuleDescription("Updated Description")
+                .setAppModuleVersion("new version")
+                .build();
 
         applicationInterfaceRepository.updateApplicationModule("appMod1", savedAppModule);
 
@@ -125,12 +131,10 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
 
     @Test
     public void addApplicationInterfaceTest() throws AppCatalogException {
-        ApplicationInterfaceDescription applicationInterfaceDescription = new ApplicationInterfaceDescription();
-        applicationInterfaceDescription.setApplicationInterfaceId("interface1");
-        applicationInterfaceDescription.setApplicationName("app interface 1");
-        applicationInterfaceDescription.setApplicationModules(new ArrayList<>());
-        applicationInterfaceDescription.setApplicationInputs(new ArrayList<>());
-        applicationInterfaceDescription.setApplicationOutputs(new ArrayList<>());
+        ApplicationInterfaceDescription applicationInterfaceDescription = ApplicationInterfaceDescription.newBuilder()
+                .setApplicationInterfaceId("interface1")
+                .setApplicationName("app interface 1")
+                .build();
 
         String interfaceId =
                 applicationInterfaceRepository.addApplicationInterface(applicationInterfaceDescription, gatewayId);
@@ -144,27 +148,25 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
 
     @Test
     public void addApplicationInterfaceWithDefaultIdTest() throws AppCatalogException {
-        ApplicationInterfaceDescription applicationInterfaceDescription = new ApplicationInterfaceDescription();
-        applicationInterfaceDescription.setApplicationName("app interface 1");
-
-        applicationInterfaceDescription.setApplicationModules(new ArrayList<>());
-
-        InputDataObjectType input = new InputDataObjectType();
-        input.setName("input1");
-        input.setApplicationArgument("Arg");
-        input.setDataStaged(true);
-        input.setInputOrder(0);
-        input.setIsReadOnly(true);
-        input.setIsRequired(true);
-        input.setRequiredToAddedToCommandLine(true);
-        input.setType(DataType.FLOAT);
-        input.setUserFriendlyDescription("User friendly description");
-        input.setValue("113");
-        input.setMetaData("Metadata");
-        input.setStandardInput(true);
-        applicationInterfaceDescription.setApplicationInputs(Collections.singletonList(input));
-
-        applicationInterfaceDescription.setApplicationOutputs(new ArrayList<>());
+        InputDataObjectType input = InputDataObjectType.newBuilder()
+                .setName("input1")
+                .setApplicationArgument("Arg")
+                .setDataStaged(true)
+                .setInputOrder(0)
+                .setIsReadOnly(true)
+                .setIsRequired(true)
+                .setRequiredToAddedToCommandLine(true)
+                .setType(DataType.FLOAT)
+                .setUserFriendlyDescription("User friendly description")
+                .setValue("113")
+                .setMetaData("Metadata")
+                .setStandardInput(true)
+                .build();
+
+        ApplicationInterfaceDescription applicationInterfaceDescription = ApplicationInterfaceDescription.newBuilder()
+                .setApplicationName("app interface 1")
+                .addApplicationInputs(input)
+                .build();
 
         String interfaceId =
                 applicationInterfaceRepository.addApplicationInterface(applicationInterfaceDescription, gatewayId);
@@ -178,40 +180,40 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
 
         Assertions.assertNull(applicationInterfaceRepository.getApplicationModule("interface1"));
 
-        ApplicationInterfaceDescription applicationInterfaceDescription = new ApplicationInterfaceDescription();
-        applicationInterfaceDescription.setApplicationInterfaceId("interface1");
-        applicationInterfaceDescription.setApplicationName("app interface 1");
-        applicationInterfaceDescription.setApplicationModules(new ArrayList<>());
-        applicationInterfaceDescription.setApplicationInputs(new ArrayList<>());
-        applicationInterfaceDescription.setApplicationOutputs(new ArrayList<>());
-
-        InputDataObjectType input = new InputDataObjectType();
-        input.setName("input1");
-        input.setApplicationArgument("Arg");
-        input.setDataStaged(true);
-        input.setInputOrder(0);
-        input.setIsReadOnly(true);
-        input.setIsRequired(true);
-        input.setRequiredToAddedToCommandLine(true);
-        input.setType(DataType.FLOAT);
-        input.setUserFriendlyDescription("User friendly description");
-        input.setValue("113");
-        input.setMetaData("Metadata");
-        input.setStandardInput(true);
-        applicationInterfaceDescription.addToApplicationInputs(input);
-
-        OutputDataObjectType output = new OutputDataObjectType();
-        output.setName("output1");
-        output.setValue("value");
-        output.setType(DataType.FLOAT);
-        output.setApplicationArgument("Argument");
-        output.setDataMovement(true);
-        output.setIsRequired(true);
-        output.setLocation("/home/");
-        output.setSearchQuery("Search query");
-        output.setRequiredToAddedToCommandLine(true);
-        output.setOutputStreaming(true);
-        applicationInterfaceDescription.addToApplicationOutputs(output);
+        InputDataObjectType input = InputDataObjectType.newBuilder()
+                .setName("input1")
+                .setApplicationArgument("Arg")
+                .setDataStaged(true)
+                .setInputOrder(0)
+                .setIsReadOnly(true)
+                .setIsRequired(true)
+                .setRequiredToAddedToCommandLine(true)
+                .setType(DataType.FLOAT)
+                .setUserFriendlyDescription("User friendly description")
+                .setValue("113")
+                .setMetaData("Metadata")
+                .setStandardInput(true)
+                .build();
+
+        OutputDataObjectType output = OutputDataObjectType.newBuilder()
+                .setName("output1")
+                .setValue("value")
+                .setType(DataType.FLOAT)
+                .setApplicationArgument("Argument")
+                .setDataMovement(true)
+                .setIsRequired(true)
+                .setLocation("/home/")
+                .setSearchQuery("Search query")
+                .setRequiredToAddedToCommandLine(true)
+                .setOutputStreaming(true)
+                .build();
+
+        ApplicationInterfaceDescription applicationInterfaceDescription = ApplicationInterfaceDescription.newBuilder()
+                .setApplicationInterfaceId("interface1")
+                .setApplicationName("app interface 1")
+                .addApplicationInputs(input)
+                .addApplicationOutputs(output)
+                .build();
 
         String interfaceId =
                 applicationInterfaceRepository.addApplicationInterface(applicationInterfaceDescription, gatewayId);
@@ -223,19 +225,22 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
 
     @Test
     public void addModulesToInterfaceTest() throws AppCatalogException {
-        ApplicationModule applicationModule1 = new ApplicationModule();
-        applicationModule1.setAppModuleId("appMod1");
-        applicationModule1.setAppModuleName("appMod1Name");
+        ApplicationModule applicationModule1 = ApplicationModule.newBuilder()
+                .setAppModuleId("appMod1")
+                .setAppModuleName("appMod1Name")
+                .build();
         String moduleId1 = applicationInterfaceRepository.addApplicationModule(applicationModule1, gatewayId);
 
-        ApplicationModule applicationModule2 = new ApplicationModule();
-        applicationModule2.setAppModuleId("appMod2");
-        applicationModule2.setAppModuleName("appMod2Name");
+        ApplicationModule applicationModule2 = ApplicationModule.newBuilder()
+                .setAppModuleId("appMod2")
+                .setAppModuleName("appMod2Name")
+                .build();
         String moduleId2 = applicationInterfaceRepository.addApplicationModule(applicationModule2, gatewayId);
 
-        ApplicationInterfaceDescription applicationInterfaceDescription = new ApplicationInterfaceDescription();
-        applicationInterfaceDescription.setApplicationInterfaceId("interface1");
-        applicationInterfaceDescription.setApplicationName("app interface 1");
+        ApplicationInterfaceDescription applicationInterfaceDescription = ApplicationInterfaceDescription.newBuilder()
+                .setApplicationInterfaceId("interface1")
+                .setApplicationName("app interface 1")
+                .build();
 
         String interfaceId =
                 applicationInterfaceRepository.addApplicationInterface(applicationInterfaceDescription, gatewayId);
@@ -246,65 +251,66 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
         ApplicationInterfaceDescription savedInterface =
                 applicationInterfaceRepository.getApplicationInterface(interfaceId);
 
-        Assertions.assertEquals(savedInterface.getApplicationModules().get(0), applicationModule1.getAppModuleId());
-        Assertions.assertEquals(savedInterface.getApplicationModules().get(1), applicationModule2.getAppModuleId());
+        Assertions.assertEquals(savedInterface.getApplicationModulesList().get(0), applicationModule1.getAppModuleId());
+        Assertions.assertEquals(savedInterface.getApplicationModulesList().get(1), applicationModule2.getAppModuleId());
     }
 
     @Test
     public void addInputsOutputsToInterfaceTest() throws AppCatalogException {
 
-        ApplicationInterfaceDescription applicationInterfaceDescription = new ApplicationInterfaceDescription();
-        applicationInterfaceDescription.setApplicationInterfaceId("interface1");
-        applicationInterfaceDescription.setApplicationName("app interface 1");
+        ApplicationInterfaceDescription applicationInterfaceDescription = ApplicationInterfaceDescription.newBuilder()
+                .setApplicationInterfaceId("interface1")
+                .setApplicationName("app interface 1")
+                .build();
 
         String interfaceId =
                 applicationInterfaceRepository.addApplicationInterface(applicationInterfaceDescription, gatewayId);
 
-        InputDataObjectType input = new InputDataObjectType();
-        input.setName("input1");
-        input.setApplicationArgument("Arg");
-        input.setDataStaged(true);
-        input.setInputOrder(0);
-        input.setIsReadOnly(true);
-        input.setIsRequired(true);
-        input.setRequiredToAddedToCommandLine(true);
-        input.setType(DataType.FLOAT);
-        input.setUserFriendlyDescription("User friendly description");
-        input.setValue("113");
-        input.setMetaData("Metadata");
-        input.setStandardInput(true);
-        // TODO missing field
-        // input.setStorageResourceId("Storage resource id");
-
-        OutputDataObjectType output = new OutputDataObjectType();
-        output.setName("output1");
-        output.setValue("value");
-        output.setType(DataType.FLOAT);
-        output.setApplicationArgument("Argument");
-        output.setDataMovement(true);
-        output.setIsRequired(true);
-        output.setLocation("/home/");
-        output.setSearchQuery("Search query");
-        output.setRequiredToAddedToCommandLine(true);
-        output.setOutputStreaming(true);
-        output.setMetaData("outputMetaData");
-        // TODO missing field
-        // output.setStorageResourceId("Storage resource id");
-
-        applicationInterfaceDescription.setApplicationInputs(Collections.singletonList(input));
-        applicationInterfaceDescription.setApplicationOutputs(Collections.singletonList(output));
+        InputDataObjectType input = InputDataObjectType.newBuilder()
+                .setName("input1")
+                .setApplicationArgument("Arg")
+                .setDataStaged(true)
+                .setInputOrder(0)
+                .setIsReadOnly(true)
+                .setIsRequired(true)
+                .setRequiredToAddedToCommandLine(true)
+                .setType(DataType.FLOAT)
+                .setUserFriendlyDescription("User friendly description")
+                .setValue("113")
+                .setMetaData("Metadata")
+                .setStandardInput(true)
+                .build();
+
+        OutputDataObjectType output = OutputDataObjectType.newBuilder()
+                .setName("output1")
+                .setValue("value")
+                .setType(DataType.FLOAT)
+                .setApplicationArgument("Argument")
+                .setDataMovement(true)
+                .setIsRequired(true)
+                .setLocation("/home/")
+                .setSearchQuery("Search query")
+                .setRequiredToAddedToCommandLine(true)
+                .setOutputStreaming(true)
+                .setMetaData("outputMetaData")
+                .build();
+
+        applicationInterfaceDescription = applicationInterfaceDescription.toBuilder()
+                .addApplicationInputs(input)
+                .addApplicationOutputs(output)
+                .build();
 
         applicationInterfaceRepository.updateApplicationInterface(interfaceId, applicationInterfaceDescription);
 
         ApplicationInterfaceDescription savedInterface =
                 applicationInterfaceRepository.getApplicationInterface(interfaceId);
-        Assertions.assertEquals(1, savedInterface.getApplicationInputsSize());
-        Assertions.assertEquals(1, savedInterface.getApplicationOutputsSize());
+        Assertions.assertEquals(1, savedInterface.getApplicationInputsCount());
+        Assertions.assertEquals(1, savedInterface.getApplicationOutputsCount());
 
         Assertions.assertTrue(EqualsBuilder.reflectionEquals(
-                input, savedInterface.getApplicationInputs().get(0), "__isset_bitfield"));
+                input, savedInterface.getApplicationInputsList().get(0), "__isset_bitfield"));
         Assertions.assertTrue(EqualsBuilder.reflectionEquals(
-                output, savedInterface.getApplicationOutputs().get(0), "__isset_bitfield"));
+                output, savedInterface.getApplicationOutputsList().get(0), "__isset_bitfield"));
 
         List<InputDataObjectType> savedInputs = applicationInterfaceRepository.getApplicationInputs(interfaceId);
         List<OutputDataObjectType> savedOutputs = applicationInterfaceRepository.getApplicationOutputs(interfaceId);
@@ -319,64 +325,70 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
     @Test
     public void addAndRemoveInputsOutputsToInterfaceTest() throws AppCatalogException {
 
-        ApplicationInterfaceDescription applicationInterfaceDescription = new ApplicationInterfaceDescription();
-        applicationInterfaceDescription.setApplicationInterfaceId("interface1");
-        applicationInterfaceDescription.setApplicationName("app interface 1");
+        InputDataObjectType input = InputDataObjectType.newBuilder()
+                .setName("input1")
+                .setApplicationArgument("Arg")
+                .setDataStaged(true)
+                .setInputOrder(0)
+                .setIsReadOnly(true)
+                .setIsRequired(true)
+                .setRequiredToAddedToCommandLine(true)
+                .setType(DataType.FLOAT)
+                .setUserFriendlyDescription("User friendly description")
+                .setValue("113")
+                .setMetaData("Metadata")
+                .setStandardInput(true)
+                .build();
+
+        InputDataObjectType input2 = InputDataObjectType.newBuilder()
+                .setName("input2")
+                .setInputOrder(1)
+                .build();
+
+        OutputDataObjectType output = OutputDataObjectType.newBuilder()
+                .setName("output1")
+                .setValue("value")
+                .setType(DataType.FLOAT)
+                .setApplicationArgument("Argument")
+                .setDataMovement(true)
+                .setIsRequired(true)
+                .setLocation("/home/")
+                .setSearchQuery("Search query")
+                .setRequiredToAddedToCommandLine(true)
+                .setOutputStreaming(true)
+                .build();
+
+        OutputDataObjectType output2 = OutputDataObjectType.newBuilder()
+                .setName("output2")
+                .build();
+
+        ApplicationInterfaceDescription applicationInterfaceDescription = ApplicationInterfaceDescription.newBuilder()
+                .setApplicationInterfaceId("interface1")
+                .setApplicationName("app interface 1")
+                .addAllApplicationInputs(Arrays.asList(input, input2))
+                .addAllApplicationOutputs(Arrays.asList(output, output2))
+                .build();
 
         String interfaceId =
                 applicationInterfaceRepository.addApplicationInterface(applicationInterfaceDescription, gatewayId);
 
-        InputDataObjectType input = new InputDataObjectType();
-        input.setName("input1");
-        input.setApplicationArgument("Arg");
-        input.setDataStaged(true);
-        input.setInputOrder(0);
-        input.setIsReadOnly(true);
-        input.setIsRequired(true);
-        input.setRequiredToAddedToCommandLine(true);
-        input.setType(DataType.FLOAT);
-        input.setUserFriendlyDescription("User friendly description");
-        input.setValue("113");
-        input.setMetaData("Metadata");
-        input.setStandardInput(true);
-
-        InputDataObjectType input2 = new InputDataObjectType();
-        input2.setName("input2");
-        input2.setInputOrder(1);
-
-        OutputDataObjectType output = new OutputDataObjectType();
-        output.setName("output1");
-        output.setValue("value");
-        output.setType(DataType.FLOAT);
-        output.setApplicationArgument("Argument");
-        output.setDataMovement(true);
-        output.setIsRequired(true);
-        output.setLocation("/home/");
-        output.setSearchQuery("Search query");
-        output.setRequiredToAddedToCommandLine(true);
-        output.setOutputStreaming(true);
-
-        OutputDataObjectType output2 = new OutputDataObjectType();
-        output2.setName("output2");
-
-        applicationInterfaceDescription.setApplicationInputs(Arrays.asList(input, input2));
-        applicationInterfaceDescription.setApplicationOutputs(Arrays.asList(output, output2));
-
-        applicationInterfaceRepository.updateApplicationInterface(interfaceId, applicationInterfaceDescription);
-
         ApplicationInterfaceDescription savedInterface =
                 applicationInterfaceRepository.getApplicationInterface(interfaceId);
-        Assertions.assertEquals(2, savedInterface.getApplicationInputsSize());
-        Assertions.assertEquals(2, savedInterface.getApplicationOutputsSize());
+        Assertions.assertEquals(2, savedInterface.getApplicationInputsCount());
+        Assertions.assertEquals(2, savedInterface.getApplicationOutputsCount());
 
-        savedInterface.setApplicationInputs(Arrays.asList(input));
-        savedInterface.setApplicationOutputs(Arrays.asList(output));
+        savedInterface = savedInterface.toBuilder()
+                .clearApplicationInputs()
+                .addApplicationInputs(input)
+                .clearApplicationOutputs()
+                .addApplicationOutputs(output)
+                .build();
 
         applicationInterfaceRepository.updateApplicationInterface(interfaceId, savedInterface);
         ApplicationInterfaceDescription updatedInterface =
                 applicationInterfaceRepository.getApplicationInterface(interfaceId);
-        Assertions.assertEquals(1, updatedInterface.getApplicationInputsSize());
-        Assertions.assertEquals(1, updatedInterface.getApplicationOutputsSize());
+        Assertions.assertEquals(1, updatedInterface.getApplicationInputsCount());
+        Assertions.assertEquals(1, updatedInterface.getApplicationOutputsCount());
     }
 
     @Test
@@ -384,9 +396,11 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
 
         List<ApplicationInterfaceDescription> interfaces = new ArrayList<>();
         for (int i = 0; i < 5; i++) {
-            ApplicationInterfaceDescription applicationInterfaceDescription = new ApplicationInterfaceDescription();
-            applicationInterfaceDescription.setApplicationInterfaceId("interface" + i);
-            applicationInterfaceDescription.setApplicationName("app interface " + i);
+            ApplicationInterfaceDescription applicationInterfaceDescription =
+                    ApplicationInterfaceDescription.newBuilder()
+                            .setApplicationInterfaceId("interface" + i)
+                            .setApplicationName("app interface " + i)
+                            .build();
             interfaces.add(applicationInterfaceDescription);
             applicationInterfaceRepository.addApplicationInterface(applicationInterfaceDescription, gatewayId);
         }
@@ -407,11 +421,12 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
     public void filterApplicationModulesTest() throws AppCatalogException {
         List<ApplicationModule> modules = new ArrayList<>();
         for (int i = 0; i < 5; i++) {
-            ApplicationModule applicationModule = new ApplicationModule();
-            applicationModule.setAppModuleId("appMod" + i);
-            applicationModule.setAppModuleName("appMod1Name");
-            applicationModule.setAppModuleDescription("Description");
-            applicationModule.setAppModuleVersion("Version1");
+            ApplicationModule applicationModule = ApplicationModule.newBuilder()
+                    .setAppModuleId("appMod" + i)
+                    .setAppModuleName("appMod1Name")
+                    .setAppModuleDescription("Description")
+                    .setAppModuleVersion("Version1")
+                    .build();
             modules.add(applicationModule);
             applicationInterfaceRepository.addApplicationModule(applicationModule, gatewayId);
         }
@@ -431,11 +446,12 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
     @Test
     public void filterModuleByWrongCategoryTest() throws AppCatalogException {
 
-        ApplicationModule applicationModule = new ApplicationModule();
-        applicationModule.setAppModuleId("appMod1");
-        applicationModule.setAppModuleName("appMod1Name");
-        applicationModule.setAppModuleDescription("Description");
-        applicationModule.setAppModuleVersion("Version1");
+        ApplicationModule applicationModule = ApplicationModule.newBuilder()
+                .setAppModuleId("appMod1")
+                .setAppModuleName("appMod1Name")
+                .setAppModuleDescription("Description")
+                .setAppModuleVersion("Version1")
+                .build();
         applicationInterfaceRepository.addApplicationModule(applicationModule, gatewayId);
 
         Map<String, String> filters = new HashMap<>();
@@ -451,9 +467,10 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
     @Test
     public void filterInterfaceByWrongCategoryTest() throws AppCatalogException {
 
-        ApplicationInterfaceDescription applicationInterfaceDescription = new ApplicationInterfaceDescription();
-        applicationInterfaceDescription.setApplicationInterfaceId("interface1");
-        applicationInterfaceDescription.setApplicationName("app interface");
+        ApplicationInterfaceDescription applicationInterfaceDescription = ApplicationInterfaceDescription.newBuilder()
+                .setApplicationInterfaceId("interface1")
+                .setApplicationName("app interface")
+                .build();
         applicationInterfaceRepository.addApplicationInterface(applicationInterfaceDescription, gatewayId);
 
         Map<String, String> filters = new HashMap<>();
@@ -472,44 +489,52 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
     @Test
     public void getAccessibleApplicationModulesTest() throws AppCatalogException {
 
-        ComputeResourceDescription computeResourceDescription1 = new ComputeResourceDescription();
-        computeResourceDescription1.setComputeResourceId("compHost1");
-        computeResourceDescription1.setHostName("compHost1Name");
+        ComputeResourceDescription computeResourceDescription1 = ComputeResourceDescription.newBuilder()
+                .setComputeResourceId("compHost1")
+                .setHostName("compHost1Name")
+                .build();
         String computeResourceId1 = computeResourceRepository.addComputeResource(computeResourceDescription1);
 
-        ComputeResourceDescription computeResourceDescription2 = new ComputeResourceDescription();
-        computeResourceDescription2.setComputeResourceId("compHost2");
-        computeResourceDescription2.setHostName("compHost2Name");
+        ComputeResourceDescription computeResourceDescription2 = ComputeResourceDescription.newBuilder()
+                .setComputeResourceId("compHost2")
+                .setHostName("compHost2Name")
+                .build();
         String computeResourceId2 = computeResourceRepository.addComputeResource(computeResourceDescription2);
 
-        ApplicationModule applicationModule1 = new ApplicationModule();
-        applicationModule1.setAppModuleId("appMod1");
-        applicationModule1.setAppModuleName("appMod1Name");
+        ApplicationModule applicationModule1 = ApplicationModule.newBuilder()
+                .setAppModuleId("appMod1")
+                .setAppModuleName("appMod1Name")
+                .build();
         String moduleId1 = applicationInterfaceRepository.addApplicationModule(applicationModule1, gatewayId);
 
-        ApplicationModule applicationModule2 = new ApplicationModule();
-        applicationModule2.setAppModuleId("appMod2");
-        applicationModule2.setAppModuleName("appMod2Name");
+        ApplicationModule applicationModule2 = ApplicationModule.newBuilder()
+                .setAppModuleId("appMod2")
+                .setAppModuleName("appMod2Name")
+                .build();
         String moduleId2 = applicationInterfaceRepository.addApplicationModule(applicationModule2, gatewayId);
 
-        ApplicationDeploymentDescription applicationDeploymentDescription1 = new ApplicationDeploymentDescription();
-        applicationDeploymentDescription1.setAppDeploymentId("appDep1");
-        applicationDeploymentDescription1.setAppModuleId(moduleId1);
-        applicationDeploymentDescription1.setComputeHostId(computeResourceId1);
-        applicationDeploymentDescription1.setExecutablePath("executablePath");
-        applicationDeploymentDescription1.setParallelism(ApplicationParallelismType.SERIAL);
+        ApplicationDeploymentDescription applicationDeploymentDescription1 =
+                ApplicationDeploymentDescription.newBuilder()
+                        .setAppDeploymentId("appDep1")
+                        .setAppModuleId(moduleId1)
+                        .setComputeHostId(computeResourceId1)
+                        .setExecutablePath("executablePath")
+                        .setParallelism(ApplicationParallelismType.SERIAL)
+                        .build();
         String deploymentId1 =
                 applicationDeploymentRepository.addApplicationDeployment(applicationDeploymentDescription1, gatewayId);
 
         ApplicationDeploymentDescription applicationDeployement =
                 applicationDeploymentRepository.getApplicationDeployement(deploymentId1);
 
-        ApplicationDeploymentDescription applicationDeploymentDescription2 = new ApplicationDeploymentDescription();
-        applicationDeploymentDescription2.setAppDeploymentId("appDep2");
-        applicationDeploymentDescription2.setAppModuleId(moduleId1);
-        applicationDeploymentDescription2.setComputeHostId(computeResourceId2);
-        applicationDeploymentDescription2.setExecutablePath("executablePath");
-        applicationDeploymentDescription2.setParallelism(ApplicationParallelismType.SERIAL);
+        ApplicationDeploymentDescription applicationDeploymentDescription2 =
+                ApplicationDeploymentDescription.newBuilder()
+                        .setAppDeploymentId("appDep2")
+                        .setAppModuleId(moduleId1)
+                        .setComputeHostId(computeResourceId2)
+                        .setExecutablePath("executablePath")
+                        .setParallelism(ApplicationParallelismType.SERIAL)
+                        .build();
         String deploymentId2 =
                 applicationDeploymentRepository.addApplicationDeployment(applicationDeploymentDescription2, gatewayId);
 
@@ -560,11 +585,12 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
             List<ApplicationModule> modules = new ArrayList<>();
             String gateway = "gateway" + j;
             for (int i = 0; i < 5; i++) {
-                ApplicationModule applicationModule = new ApplicationModule();
-                applicationModule.setAppModuleId(gateway + "appMod" + i);
-                applicationModule.setAppModuleName(gateway + "appMod1Name");
-                applicationModule.setAppModuleDescription(gateway + "Description");
-                applicationModule.setAppModuleVersion(gateway + "Version1");
+                ApplicationModule applicationModule = ApplicationModule.newBuilder()
+                        .setAppModuleId(gateway + "appMod" + i)
+                        .setAppModuleName(gateway + "appMod1Name")
+                        .setAppModuleDescription(gateway + "Description")
+                        .setAppModuleVersion(gateway + "Version1")
+                        .build();
                 modules.add(applicationModule);
                 applicationInterfaceRepository.addApplicationModule(applicationModule, gateway);
             }
@@ -592,12 +618,11 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
             List<ApplicationInterfaceDescription> interfaces = new ArrayList<>();
             String gateway = "gateway" + j;
             for (int i = 0; i < 5; i++) {
-                ApplicationInterfaceDescription applicationInterfaceDescription = new ApplicationInterfaceDescription();
-                applicationInterfaceDescription.setApplicationInterfaceId(gateway + "interface" + i);
-                applicationInterfaceDescription.setApplicationName(gateway + "app interface " + i);
-                applicationInterfaceDescription.setApplicationModules(new ArrayList<>());
-                applicationInterfaceDescription.setApplicationInputs(new ArrayList<>());
-                applicationInterfaceDescription.setApplicationOutputs(new ArrayList<>());
+                ApplicationInterfaceDescription applicationInterfaceDescription =
+                        ApplicationInterfaceDescription.newBuilder()
+                                .setApplicationInterfaceId(gateway + "interface" + i)
+                                .setApplicationName(gateway + "app interface " + i)
+                                .build();
                 interfaces.add(applicationInterfaceDescription);
                 applicationInterfaceRepository.addApplicationInterface(applicationInterfaceDescription, gateway);
             }
@@ -624,12 +649,11 @@ public class ApplicationInterfaceRepositoryTest extends TestBase {
         for (int j = 0; j < 5; j++) {
             String gateway = "gateway" + j;
             for (int i = 0; i < 5; i++) {
-                ApplicationInterfaceDescription applicationInterfaceDescription = new ApplicationInterfaceDescription();
-                applicationInterfaceDescription.setApplicationInterfaceId(gateway + "interface" + i);
-                applicationInterfaceDescription.setApplicationName(gateway + "app interface " + i);
-                applicationInterfaceDescription.setApplicationModules(new ArrayList<>());
-                applicationInterfaceDescription.setApplicationInputs(new ArrayList<>());
-                applicationInterfaceDescription.setApplicationOutputs(new ArrayList<>());
+                ApplicationInterfaceDescription applicationInterfaceDescription =
+                        ApplicationInterfaceDescription.newBuilder()
+                                .setApplicationInterfaceId(gateway + "interface" + i)
+                                .setApplicationName(gateway + "app interface " + i)
+                                .build();
                 interfaces.add(applicationInterfaceDescription);
                 applicationInterfaceRepository.addApplicationInterface(applicationInterfaceDescription, gateway);
             }
diff --git a/airavata-api/src/test/java/org/apache/airavata/compute/repository/ComputeResourceRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/compute/repository/ComputeResourceRepositoryTest.java
index fc7fe87ecc..12e08a312e 100644
--- a/airavata-api/src/test/java/org/apache/airavata/compute/repository/ComputeResourceRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/compute/repository/ComputeResourceRepositoryTest.java
@@ -23,9 +23,9 @@ import java.util.*;
 import org.apache.airavata.execution.util.DBConstants;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.AppCatalogException;
-import org.apache.airavata.model.appcatalog.computeresource.*;
-import org.apache.airavata.model.data.movement.*;
-import org.apache.airavata.model.parallelism.ApplicationParallelismType;
+import org.apache.airavata.model.appcatalog.computeresource.proto.*;
+import org.apache.airavata.model.data.movement.proto.*;
+import org.apache.airavata.model.parallelism.proto.ApplicationParallelismType;
 import org.apache.commons.lang3.builder.EqualsBuilder;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
@@ -61,7 +61,7 @@ public class ComputeResourceRepositoryTest extends TestBase {
 
         String savedComputeResourceId = computeResourceRepository.addComputeResource(computeResourceDescription);
 
-        List<BatchQueue> batchQueues = computeResourceDescription.getBatchQueues();
+        List<BatchQueue> batchQueues = computeResourceDescription.getBatchQueuesList();
         Assertions.assertTrue(batchQueues.size() > 0);
 
         computeResourceRepository.removeBatchQueue(
@@ -70,7 +70,7 @@ public class ComputeResourceRepositoryTest extends TestBase {
         ComputeResourceDescription updatedComputeResource =
                 computeResourceRepository.getComputeResource(savedComputeResourceId);
 
-        List<BatchQueue> updatedBatchQueues = updatedComputeResource.getBatchQueues();
+        List<BatchQueue> updatedBatchQueues = updatedComputeResource.getBatchQueuesList();
 
         Assertions.assertEquals(batchQueues.size(), updatedBatchQueues.size() + 1);
         Optional<BatchQueue> searchedInterfaceResult = updatedBatchQueues.stream()
@@ -98,7 +98,7 @@ public class ComputeResourceRepositoryTest extends TestBase {
 
         String savedComputeResourceId = computeResourceRepository.addComputeResource(computeResourceDescription);
 
-        List<DataMovementInterface> dataMovementInterfaces = computeResourceDescription.getDataMovementInterfaces();
+        List<DataMovementInterface> dataMovementInterfaces = computeResourceDescription.getDataMovementInterfacesList();
         Assertions.assertTrue(dataMovementInterfaces.size() > 0);
 
         computeResourceRepository.removeDataMovementInterface(
@@ -107,7 +107,7 @@ public class ComputeResourceRepositoryTest extends TestBase {
         ComputeResourceDescription updatedComputeResource =
                 computeResourceRepository.getComputeResource(savedComputeResourceId);
 
-        List<DataMovementInterface> updatedDataMovementInterfaces = updatedComputeResource.getDataMovementInterfaces();
+        List<DataMovementInterface> updatedDataMovementInterfaces = updatedComputeResource.getDataMovementInterfacesList();
 
         Assertions.assertEquals(dataMovementInterfaces.size(), updatedDataMovementInterfaces.size() + 1);
         Optional<DataMovementInterface> searchedInterfaceResult = updatedDataMovementInterfaces.stream()
@@ -136,7 +136,7 @@ public class ComputeResourceRepositoryTest extends TestBase {
 
         String savedComputeResourceId = computeResourceRepository.addComputeResource(computeResourceDescription);
 
-        List<JobSubmissionInterface> jobSubmissionInterfaces = computeResourceDescription.getJobSubmissionInterfaces();
+        List<JobSubmissionInterface> jobSubmissionInterfaces = computeResourceDescription.getJobSubmissionInterfacesList();
         Assertions.assertTrue(jobSubmissionInterfaces.size() > 0);
 
         computeResourceRepository.removeJobSubmissionInterface(
@@ -146,7 +146,7 @@ public class ComputeResourceRepositoryTest extends TestBase {
                 computeResourceRepository.getComputeResource(savedComputeResourceId);
 
         List<JobSubmissionInterface> updatedJobSubmissionInterfaces =
-                updatedComputeResource.getJobSubmissionInterfaces();
+                updatedComputeResource.getJobSubmissionInterfacesList();
 
         Assertions.assertEquals(jobSubmissionInterfaces.size(), updatedJobSubmissionInterfaces.size() + 1);
         Optional<JobSubmissionInterface> searchedInterfaceResult = updatedJobSubmissionInterfaces.stream()
@@ -176,8 +176,10 @@ public class ComputeResourceRepositoryTest extends TestBase {
         for (int i = 0; i < 5; i++) {
             ComputeResourceDescription computeResourceDescription =
                     prepareComputeResource(sshSubmissionId, scpDataMovementId, gridFTPDataMovementId, 4);
-            computeResourceDescription.setHostName("Host" + i);
-            computeResourceDescription.setEnabled((i % 2 == 0));
+            computeResourceDescription = computeResourceDescription.toBuilder()
+                    .setHostName("Host" + i)
+                    .setEnabled((i % 2 == 0))
+                    .build();
             String savedId = computeResourceRepository.addComputeResource(computeResourceDescription);
             allIds.add(savedId);
             allComputeResources.add(computeResourceDescription);
@@ -270,26 +272,28 @@ public class ComputeResourceRepositoryTest extends TestBase {
 
         ComputeResourceDescription savedComputeResource =
                 computeResourceRepository.getComputeResource(computeResourceId);
-        savedComputeResource.getHostAliases().add("New Alias");
-
-        BatchQueue batchQueue = new BatchQueue();
-        batchQueue.setQueueName("queue new ");
-        batchQueue.setQueueDescription("que1Desc new");
-        batchQueue.setMaxRunTime(16);
-        batchQueue.setMaxNodes(10);
-        batchQueue.setMaxProcessors(11);
-        batchQueue.setMaxJobsInQueue(5);
-        batchQueue.setMaxMemory(2005);
-        batchQueue.setCpuPerNode(7);
-        batchQueue.setDefaultNodeCount(11);
-        batchQueue.setDefaultCPUCount(3);
-        batchQueue.setDefaultWalltime(34);
-        batchQueue.setQueueSpecificMacros("Macros new");
-        batchQueue.setIsDefaultQueue(true);
-
-        savedComputeResource.getBatchQueues().add(batchQueue);
-        savedComputeResource.setCpusPerNode(43);
-        savedComputeResource.setDefaultWalltime(4343);
+        BatchQueue batchQueue = BatchQueue.newBuilder()
+                .setQueueName("queue new ")
+                .setQueueDescription("que1Desc new")
+                .setMaxRunTime(16)
+                .setMaxNodes(10)
+                .setMaxProcessors(11)
+                .setMaxJobsInQueue(5)
+                .setMaxMemory(2005)
+                .setCpuPerNode(7)
+                .setDefaultNodeCount(11)
+                .setDefaultCpuCount(3)
+                .setDefaultWalltime(34)
+                .setQueueSpecificMacros("Macros new")
+                .setIsDefaultQueue(true)
+                .build();
+
+        savedComputeResource = savedComputeResource.toBuilder()
+                .addHostAliases("New Alias")
+                .addBatchQueues(batchQueue)
+                .setCpusPerNode(43)
+                .setDefaultWalltime(4343)
+                .build();
 
         computeResourceRepository.updateComputeResource(computeResourceId, savedComputeResource);
 
@@ -314,7 +318,7 @@ public class ComputeResourceRepositoryTest extends TestBase {
         ComputeResourceDescription computeResourceDescription =
                 prepareComputeResource(sshSubmissionId, scpDataMovementId, gridFTPDataMovementId, 4);
 
-        computeResourceDescription.setComputeResourceId("manually-entered-id");
+        computeResourceDescription = computeResourceDescription.toBuilder().setComputeResourceId("manually-entered-id").build();
 
         Assertions.assertNull(computeResourceRepository.getComputeResource("manually-entered-id"));
         String computeResourceId = computeResourceRepository.addComputeResource(computeResourceDescription);
@@ -351,9 +355,11 @@ public class ComputeResourceRepositoryTest extends TestBase {
         String jobManagerId = computeResourceRepository.addResourceJobManager(resourceJobManager);
         ResourceJobManager savedJobManager = computeResourceRepository.getResourceJobManager(jobManagerId);
 
-        savedJobManager.setJobManagerBinPath("/new bin");
-        savedJobManager.getJobManagerCommands().put(JobManagerCommand.SHOW_START, "New Command Value");
-        savedJobManager.getParallelismPrefix().put(ApplicationParallelismType.MPI, "MPI Type");
+        savedJobManager = savedJobManager.toBuilder()
+                .setJobManagerBinPath("/new bin")
+                .putJobManagerCommands(JobManagerCommand.SHOW_START_VALUE, "New Command Value")
+                .putParallelismPrefix(ApplicationParallelismType.MPI_VALUE, "MPI Type")
+                .build();
 
         computeResourceRepository.updateResourceJobManager(jobManagerId, savedJobManager);
 
@@ -464,146 +470,128 @@ public class ComputeResourceRepositoryTest extends TestBase {
 
     private ComputeResourceDescription prepareComputeResource(
             String sshSubmissionId, String scpDataMoveId, String gridFTPDataMoveId, int batchQueueCount) {
-        ComputeResourceDescription description = new ComputeResourceDescription();
-
-        description.setHostName("localhost");
-        description.setResourceDescription("test compute resource");
-        description.setGatewayUsageReporting(true);
-        List<String> ipdaresses = new ArrayList<String>();
-        ipdaresses.add("222.33.43.444");
-        ipdaresses.add("23.344.44.454");
-        description.setIpAddresses(ipdaresses);
-
-        JobSubmissionInterface sshSubmissionInt = new JobSubmissionInterface();
-        sshSubmissionInt.setJobSubmissionInterfaceId(sshSubmissionId);
-        sshSubmissionInt.setPriorityOrder(1);
-        sshSubmissionInt.setJobSubmissionProtocol(JobSubmissionProtocol.SSH);
-        List<JobSubmissionInterface> interfaceList = new ArrayList<JobSubmissionInterface>();
-        interfaceList.add(sshSubmissionInt);
-        description.setJobSubmissionInterfaces(interfaceList);
-
-        List<DataMovementInterface> dataMovementInterfaces = new ArrayList<DataMovementInterface>();
-        DataMovementInterface scpInterface = new DataMovementInterface();
-        scpInterface.setDataMovementInterfaceId(scpDataMoveId);
-        scpInterface.setDataMovementProtocol(DataMovementProtocol.SCP);
-        scpInterface.setPriorityOrder(1);
-
-        DataMovementInterface gridFTPMv = new DataMovementInterface();
-        gridFTPMv.setDataMovementInterfaceId(gridFTPDataMoveId);
-        gridFTPMv.setDataMovementProtocol(DataMovementProtocol.GridFTP);
-        gridFTPMv.setPriorityOrder(2);
-
-        dataMovementInterfaces.add(scpInterface);
-        dataMovementInterfaces.add(gridFTPMv);
-
-        description.setDataMovementInterfaces(dataMovementInterfaces);
 
-        List<BatchQueue> batchQueueList = new ArrayList<BatchQueue>();
+        JobSubmissionInterface sshSubmissionInt = JobSubmissionInterface.newBuilder()
+                .setJobSubmissionInterfaceId(sshSubmissionId)
+                .setPriorityOrder(1)
+                .setJobSubmissionProtocol(JobSubmissionProtocol.SSH)
+                .build();
 
-        for (int i = 0; i < batchQueueCount; i++) {
-            BatchQueue batchQueue = new BatchQueue();
-            batchQueue.setQueueName("queue" + i);
-            batchQueue.setQueueDescription("que1Desc" + i);
-            batchQueue.setMaxRunTime(10 + i);
-            batchQueue.setMaxNodes(4 + i);
-            batchQueue.setMaxProcessors(5 + i);
-            batchQueue.setMaxJobsInQueue(i);
-            batchQueue.setMaxMemory(2000 + i);
-            batchQueue.setCpuPerNode(1 + i);
-            batchQueue.setDefaultNodeCount(3 + i);
-            batchQueue.setDefaultCPUCount(15 + i);
-            batchQueue.setDefaultWalltime(2 + i);
-            batchQueue.setQueueSpecificMacros("Macros " + i);
-            batchQueue.setIsDefaultQueue(i == 0);
-            batchQueueList.add(batchQueue);
-        }
-        description.setBatchQueues(batchQueueList);
+        DataMovementInterface scpInterface = DataMovementInterface.newBuilder()
+                .setDataMovementInterfaceId(scpDataMoveId)
+                .setDataMovementProtocol(DataMovementProtocol.SCP)
+                .setPriorityOrder(1)
+                .build();
 
-        Map<FileSystems, String> fileSysMap = new HashMap<FileSystems, String>();
-        fileSysMap.put(FileSystems.HOME, "/home");
-        fileSysMap.put(FileSystems.SCRATCH, "/tmp");
-        description.setFileSystems(fileSysMap);
+        DataMovementInterface gridFTPMv = DataMovementInterface.newBuilder()
+                .setDataMovementInterfaceId(gridFTPDataMoveId)
+                .setDataMovementProtocol(DataMovementProtocol.GRID_FTP)
+                .setPriorityOrder(2)
+                .build();
 
-        description.setHostAliases(new ArrayList<>());
+        List<BatchQueue> batchQueueList = new ArrayList<BatchQueue>();
+        for (int i = 0; i < batchQueueCount; i++) {
+            batchQueueList.add(BatchQueue.newBuilder()
+                    .setQueueName("queue" + i)
+                    .setQueueDescription("que1Desc" + i)
+                    .setMaxRunTime(10 + i)
+                    .setMaxNodes(4 + i)
+                    .setMaxProcessors(5 + i)
+                    .setMaxJobsInQueue(i)
+                    .setMaxMemory(2000 + i)
+                    .setCpuPerNode(1 + i)
+                    .setDefaultNodeCount(3 + i)
+                    .setDefaultCpuCount(15 + i)
+                    .setDefaultWalltime(2 + i)
+                    .setQueueSpecificMacros("Macros " + i)
+                    .setIsDefaultQueue(i == 0)
+                    .build());
+        }
 
-        return description;
+        return ComputeResourceDescription.newBuilder()
+                .setHostName("localhost")
+                .setResourceDescription("test compute resource")
+                .setGatewayUsageReporting(true)
+                .addIpAddresses("222.33.43.444")
+                .addIpAddresses("23.344.44.454")
+                .addJobSubmissionInterfaces(sshSubmissionInt)
+                .addDataMovementInterfaces(scpInterface)
+                .addDataMovementInterfaces(gridFTPMv)
+                .addAllBatchQueues(batchQueueList)
+                .putFileSystems(FileSystems.HOME_VALUE, "/home")
+                .putFileSystems(FileSystems.SCRATCH_VALUE, "/tmp")
+                .build();
     }
 
     private ResourceJobManager prepareResourceJobManager() {
-        ResourceJobManager jobManager = new ResourceJobManager();
-        jobManager.setResourceJobManagerType(ResourceJobManagerType.PBS);
-        jobManager.setPushMonitoringEndpoint("monitor ep");
-        jobManager.setJobManagerBinPath("/bin");
-
-        Map<ApplicationParallelismType, String> parallelismPrefix = new HashMap<>();
-        parallelismPrefix.put(ApplicationParallelismType.CCM, "ccm parallel");
-        jobManager.setParallelismPrefix(parallelismPrefix);
-
-        Map<JobManagerCommand, String> commands = new HashMap<JobManagerCommand, String>();
-        commands.put(JobManagerCommand.SUBMISSION, "Sub command");
-        commands.put(JobManagerCommand.SHOW_QUEUE, "show q command");
-        jobManager.setJobManagerCommands(commands);
-        return jobManager;
+        return ResourceJobManager.newBuilder()
+                .setResourceJobManagerType(ResourceJobManagerType.PBS)
+                .setPushMonitoringEndpoint("monitor ep")
+                .setJobManagerBinPath("/bin")
+                .putParallelismPrefix(ApplicationParallelismType.CCM_VALUE, "ccm parallel")
+                .putJobManagerCommands(JobManagerCommand.SUBMISSION_VALUE, "Sub command")
+                .putJobManagerCommands(JobManagerCommand.SHOW_QUEUE_VALUE, "show q command")
+                .build();
     }
 
     private UnicoreJobSubmission prepareUnicoreJobSubmission() {
-        UnicoreJobSubmission unicoreJobSubmission = new UnicoreJobSubmission();
-        unicoreJobSubmission.setSecurityProtocol(SecurityProtocol.KERBEROS);
-        unicoreJobSubmission.setUnicoreEndPointURL("http://endpoint");
-        return unicoreJobSubmission;
+        return UnicoreJobSubmission.newBuilder()
+                .setSecurityProtocol(SecurityProtocol.KERBEROS)
+                .setUnicoreEndPointURL("http://endpoint")
+                .build();
     }
 
     private CloudJobSubmission prepareCloudJobSubmission() {
-        CloudJobSubmission cloudJobSubmission = new CloudJobSubmission();
-        cloudJobSubmission.setExecutableType("Executable");
-        cloudJobSubmission.setProviderName(ProviderName.EC2);
-        cloudJobSubmission.setNodeId("ec2 node");
-        cloudJobSubmission.setSecurityProtocol(SecurityProtocol.KERBEROS);
-        cloudJobSubmission.setUserAccountName("user1");
-        return cloudJobSubmission;
+        return CloudJobSubmission.newBuilder()
+                .setExecutableType("Executable")
+                .setProviderName(ProviderName.EC2)
+                .setNodeId("ec2 node")
+                .setSecurityProtocol(SecurityProtocol.KERBEROS)
+                .setUserAccountName("user1")
+                .build();
     }
 
     private LOCALSubmission prepareLocalJobSubmission(ResourceJobManager jobManager) {
-        LOCALSubmission localSubmission = new LOCALSubmission();
-        localSubmission.setResourceJobManager(jobManager);
-        localSubmission.setSecurityProtocol(SecurityProtocol.KERBEROS);
-        return localSubmission;
+        return LOCALSubmission.newBuilder()
+                .setResourceJobManager(jobManager)
+                .setSecurityProtocol(SecurityProtocol.KERBEROS)
+                .build();
     }
 
     private SSHJobSubmission prepareSSHJobSubmission(ResourceJobManager jobManager) {
-        SSHJobSubmission jobSubmission = new SSHJobSubmission();
-        jobSubmission.setSshPort(22);
-        jobSubmission.setSecurityProtocol(SecurityProtocol.GSI);
-        jobSubmission.setMonitorMode(MonitorMode.POLL_JOB_MANAGER);
-        jobSubmission.setResourceJobManager(jobManager);
-        return jobSubmission;
+        return SSHJobSubmission.newBuilder()
+                .setSshPort(22)
+                .setSecurityProtocol(SecurityProtocol.GSI)
+                .setMonitorMode(MonitorMode.POLL_JOB_MANAGER)
+                .setResourceJobManager(jobManager)
+                .build();
     }
 
     private LOCALDataMovement prepareLocalDataMovement() {
-        return new LOCALDataMovement();
+        return LOCALDataMovement.getDefaultInstance();
     }
 
     private SCPDataMovement prepareScpDataMovement() {
-        SCPDataMovement dataMovement = new SCPDataMovement();
-        dataMovement.setSshPort(22);
-        dataMovement.setSecurityProtocol(SecurityProtocol.SSH_KEYS);
-        return dataMovement;
+        return SCPDataMovement.newBuilder()
+                .setSshPort(22)
+                .setSecurityProtocol(SecurityProtocol.SSH_KEYS)
+                .build();
     }
 
     private UnicoreDataMovement prepareUnicoreDataMovement() {
-        UnicoreDataMovement dataMovement = new UnicoreDataMovement();
-        dataMovement.setSecurityProtocol(SecurityProtocol.KERBEROS);
-        dataMovement.setUnicoreEndPointURL("http://endpoint");
-        return dataMovement;
+        return UnicoreDataMovement.newBuilder()
+                .setSecurityProtocol(SecurityProtocol.KERBEROS)
+                .setUnicoreEndPointURL("http://endpoint")
+                .build();
     }
 
     private GridFTPDataMovement prepareGridFTPDataMovement(String... endpoints) {
-        GridFTPDataMovement dataMovement = new GridFTPDataMovement();
-        dataMovement.setSecurityProtocol(SecurityProtocol.SSH_KEYS);
-        List<String> endPoints = new ArrayList<String>();
-        endPoints.addAll(endPoints);
-        dataMovement.setGridFTPEndPoints(endPoints);
-        return dataMovement;
+        GridFTPDataMovement.Builder builder = GridFTPDataMovement.newBuilder()
+                .setSecurityProtocol(SecurityProtocol.SSH_KEYS);
+        for (String ep : endpoints) {
+            builder.addGridFTPEndPoints(ep);
+        }
+        return builder.build();
     }
 
     private boolean deepCompareComputeResourceDescription(
@@ -619,14 +607,14 @@ public class ComputeResourceRepositoryTest extends TestBase {
                 "ipAddresses",
                 "hostAliases");
 
-        equals = equals & deepCompareArrayList(expected.getBatchQueues(), actual.getBatchQueues(), false);
+        equals = equals & deepCompareArrayList(expected.getBatchQueuesList(), actual.getBatchQueuesList(), false);
         equals = equals
                 & deepCompareArrayList(
-                        expected.getJobSubmissionInterfaces(), actual.getJobSubmissionInterfaces(), false);
+                        expected.getJobSubmissionInterfacesList(), actual.getJobSubmissionInterfacesList(), false);
         equals = equals
-                & deepCompareArrayList(expected.getDataMovementInterfaces(), actual.getDataMovementInterfaces(), false);
-        equals = equals & deepCompareArrayList(expected.getIpAddresses(), actual.getIpAddresses(), false);
-        equals = equals & deepCompareArrayList(expected.getHostAliases(), actual.getHostAliases(), false);
+                & deepCompareArrayList(expected.getDataMovementInterfacesList(), actual.getDataMovementInterfacesList(), false);
+        equals = equals & deepCompareArrayList(expected.getIpAddressesList(), actual.getIpAddressesList(), false);
+        equals = equals & deepCompareArrayList(expected.getHostAliasesList(), actual.getHostAliasesList(), false);
         return equals;
     }
 
diff --git a/airavata-api/src/test/java/org/apache/airavata/compute/repository/GatewayGroupsRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/compute/repository/GatewayGroupsRepositoryTest.java
index 2f79268a36..982f8f0446 100644
--- a/airavata-api/src/test/java/org/apache/airavata/compute/repository/GatewayGroupsRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/compute/repository/GatewayGroupsRepositoryTest.java
@@ -20,7 +20,7 @@
 package org.apache.airavata.compute.repository;
 
 import org.apache.airavata.execution.util.common.TestBase;
-import org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups;
+import org.apache.airavata.model.appcatalog.gatewaygroups.proto.GatewayGroups;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
@@ -44,11 +44,10 @@ public class GatewayGroupsRepositoryTest extends TestBase {
     @Test
     public void testCreateAndRetrieveGatewayGroups() throws Exception {
 
-        GatewayGroups gatewayGroups = new GatewayGroups();
-        gatewayGroups.setGatewayId(GATEWAY_ID);
-        gatewayGroups.setAdminsGroupId(ADMIN_GROUPS_ID);
-        gatewayGroups.setReadOnlyAdminsGroupId(READ_ONLY_ADMINS_GROUP_ID);
-        gatewayGroups.setDefaultGatewayUsersGroupId(DEFAULT_GATEWAY_USERS_GROUP_ID);
+        GatewayGroups gatewayGroups = GatewayGroups.newBuilder().setGatewayId(GATEWAY_ID).build();
+        gatewayGroups = gatewayGroups.toBuilder().setAdminsGroupId(ADMIN_GROUPS_ID).build();
+        gatewayGroups = gatewayGroups.toBuilder().setReadOnlyAdminsGroupId(READ_ONLY_ADMINS_GROUP_ID).build();
+        gatewayGroups = gatewayGroups.toBuilder().setDefaultGatewayUsersGroupId(DEFAULT_GATEWAY_USERS_GROUP_ID).build();
 
         gatewayGroupsRepository.create(gatewayGroups);
 
@@ -65,16 +64,15 @@ public class GatewayGroupsRepositoryTest extends TestBase {
     @Test
     public void testUpdateGatewayGroups() throws Exception {
 
-        GatewayGroups gatewayGroups = new GatewayGroups();
-        gatewayGroups.setGatewayId(GATEWAY_ID);
-        gatewayGroups.setAdminsGroupId(ADMIN_GROUPS_ID);
-        gatewayGroups.setReadOnlyAdminsGroupId(READ_ONLY_ADMINS_GROUP_ID);
-        gatewayGroups.setDefaultGatewayUsersGroupId(DEFAULT_GATEWAY_USERS_GROUP_ID);
+        GatewayGroups gatewayGroups = GatewayGroups.newBuilder().setGatewayId(GATEWAY_ID).build();
+        gatewayGroups = gatewayGroups.toBuilder().setAdminsGroupId(ADMIN_GROUPS_ID).build();
+        gatewayGroups = gatewayGroups.toBuilder().setReadOnlyAdminsGroupId(READ_ONLY_ADMINS_GROUP_ID).build();
+        gatewayGroups = gatewayGroups.toBuilder().setDefaultGatewayUsersGroupId(DEFAULT_GATEWAY_USERS_GROUP_ID).build();
 
         gatewayGroupsRepository.create(gatewayGroups);
 
         final String defaultGatewayUsersGroupId = "some-other-group-id";
-        gatewayGroups.setDefaultGatewayUsersGroupId(defaultGatewayUsersGroupId);
+        gatewayGroups = gatewayGroups.toBuilder().setDefaultGatewayUsersGroupId(defaultGatewayUsersGroupId).build();
 
         gatewayGroupsRepository.update(gatewayGroups);
 
diff --git a/airavata-api/src/test/java/org/apache/airavata/compute/repository/GatewayProfileRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/compute/repository/GatewayProfileRepositoryTest.java
index debb53d387..dfdc57360c 100644
--- a/airavata-api/src/test/java/org/apache/airavata/compute/repository/GatewayProfileRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/compute/repository/GatewayProfileRepositoryTest.java
@@ -31,11 +31,11 @@ import org.apache.airavata.common.config.ServerSettings;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.AppCatalogException;
-import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
-import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
-import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
-import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
-import org.apache.airavata.model.data.movement.DataMovementProtocol;
+import org.apache.airavata.model.appcatalog.computeresource.proto.ComputeResourceDescription;
+import org.apache.airavata.model.appcatalog.computeresource.proto.JobSubmissionProtocol;
+import org.apache.airavata.model.appcatalog.gatewayprofile.proto.ComputeResourcePreference;
+import org.apache.airavata.model.appcatalog.gatewayprofile.proto.GatewayResourceProfile;
+import org.apache.airavata.model.data.movement.proto.DataMovementProtocol;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
@@ -62,64 +62,59 @@ public class GatewayProfileRepositoryTest extends TestBase {
         assertEquals(1, defaultGatewayResourceProfileList.size());
         assertEquals(
                 ServerSettings.getDefaultUserGateway(),
-                defaultGatewayResourceProfileList.get(0).getGatewayID());
+                defaultGatewayResourceProfileList.get(0).getGatewayId());
 
         GatewayResourceProfile gf = new GatewayResourceProfile();
         ComputeResourceRepository computeResourceRepository = new ComputeResourceRepository();
-        ComputeResourceDescription cm1 = new ComputeResourceDescription();
-        cm1.setHostName("localhost");
-        cm1.setResourceDescription("test compute host");
+        ComputeResourceDescription cm1 = ComputeResourceDescription.newBuilder().setHostName("localhost").build();
+        cm1 = cm1.toBuilder().setResourceDescription("test compute host").build();
         String hostId1 = computeResourceRepository.addComputeResource(cm1);
 
-        ComputeResourceDescription cm2 = new ComputeResourceDescription();
-        cm2.setHostName("localhost");
-        cm2.setResourceDescription("test compute host");
+        ComputeResourceDescription cm2 = ComputeResourceDescription.newBuilder().setHostName("localhost").build();
+        cm2 = cm2.toBuilder().setResourceDescription("test compute host").build();
         String hostId2 = computeResourceRepository.addComputeResource(cm2);
 
-        ComputeResourcePreference preference1 = new ComputeResourcePreference();
-        preference1.setComputeResourceId(hostId1);
-        preference1.setOverridebyAiravata(true);
-        preference1.setPreferredJobSubmissionProtocol(JobSubmissionProtocol.SSH);
-        preference1.setPreferredDataMovementProtocol(DataMovementProtocol.SCP);
-        preference1.setPreferredBatchQueue("queue1");
-        preference1.setScratchLocation("/tmp");
-        preference1.setAllocationProjectNumber("project1");
+        ComputeResourcePreference preference1 = ComputeResourcePreference.newBuilder().setComputeResourceId(hostId1).build();
+        preference1 = preference1.toBuilder().setOverridebyAiravata(true).build();
+        preference1 = preference1.toBuilder().setPreferredJobSubmissionProtocol(JobSubmissionProtocol.SSH).build();
+        preference1 = preference1.toBuilder().setPreferredDataMovementProtocol(DataMovementProtocol.SCP).build();
+        preference1 = preference1.toBuilder().setPreferredBatchQueue("queue1").build();
+        preference1 = preference1.toBuilder().setScratchLocation("/tmp").build();
+        preference1 = preference1.toBuilder().setAllocationProjectNumber("project1").build();
 
         Map<String, String> sshConfig = new HashMap<>();
         sshConfig.put("ANYTEST", "check");
-        preference1.setSshAccountProvisionerConfig(sshConfig);
+        preference1 = preference1.toBuilder().setSshAccountProvisionerConfig(sshConfig).build();
 
-        ComputeResourcePreference preference2 = new ComputeResourcePreference();
-        preference2.setComputeResourceId(hostId2);
-        preference2.setOverridebyAiravata(false);
-        preference2.setPreferredJobSubmissionProtocol(JobSubmissionProtocol.LOCAL);
-        preference2.setPreferredDataMovementProtocol(DataMovementProtocol.GridFTP);
-        preference2.setPreferredBatchQueue("queue2");
-        preference2.setScratchLocation("/tmp");
-        preference2.setAllocationProjectNumber("project2");
+        ComputeResourcePreference preference2 = ComputeResourcePreference.newBuilder().setComputeResourceId(hostId2).build();
+        preference2 = preference2.toBuilder().setOverridebyAiravata(false).build();
+        preference2 = preference2.toBuilder().setPreferredJobSubmissionProtocol(JobSubmissionProtocol.LOCAL).build();
+        preference2 = preference2.toBuilder().setPreferredDataMovementProtocol(DataMovementProtocol.GRID_FTP).build();
+        preference2 = preference2.toBuilder().setPreferredBatchQueue("queue2").build();
+        preference2 = preference2.toBuilder().setScratchLocation("/tmp").build();
+        preference2 = preference2.toBuilder().setAllocationProjectNumber("project2").build();
 
         List<ComputeResourcePreference> list = new ArrayList<ComputeResourcePreference>();
         list.add(preference1);
         list.add(preference2);
 
-        gf.setGatewayID("testGateway");
-        gf.setCredentialStoreToken("testCredential");
-        gf.setIdentityServerPwdCredToken("pwdCredential");
-        gf.setIdentityServerTenant("testTenant");
-        gf.setComputeResourcePreferences(list);
+        gf = gf.toBuilder().setGatewayId("testGateway").build();
+        gf = gf.toBuilder().setCredentialStoreToken("testCredential").build();
+        gf = gf.toBuilder().setIdentityServerPwdCredToken("pwdCredential").build();
+        gf = gf.toBuilder().setIdentityServerTenant("testTenant").build();
+        gf = gf.toBuilder().setComputeResourcePreferences(list).build();
 
-        GatewayResourceProfile gf1 = new GatewayResourceProfile();
-        gf1.setGatewayID("testGateway1");
-        gf1.setCredentialStoreToken("testCredential");
-        gf1.setIdentityServerPwdCredToken("pwdCredential");
-        gf1.setIdentityServerTenant("testTenant");
+        GatewayResourceProfile gf1 = GatewayResourceProfile.newBuilder().setGatewayId("testGateway1").build();
+        gf1 = gf1.toBuilder().setCredentialStoreToken("testCredential").build();
+        gf1 = gf1.toBuilder().setIdentityServerPwdCredToken("pwdCredential").build();
+        gf1 = gf1.toBuilder().setIdentityServerTenant("testTenant").build();
 
         String gwId = gwyResourceProfileRepository.addGatewayResourceProfile(gf);
         GatewayResourceProfile retrievedProfile = null;
         if (gwyResourceProfileRepository.isExists(gwId)) {
             retrievedProfile = gwyResourceProfileRepository.getGatewayProfile(gwId);
-            System.out.println("************ gateway id ************** :" + retrievedProfile.getGatewayID());
-            assertTrue(retrievedProfile.getGatewayID().equals("testGateway"), "Retrieved gateway id matched");
+            System.out.println("************ gateway id ************** :" + retrievedProfile.getGatewayId());
+            assertTrue(retrievedProfile.getGatewayId().equals("testGateway"), "Retrieved gateway id matched");
             assertTrue(retrievedProfile.getCredentialStoreToken().equals("testCredential"));
             assertTrue(retrievedProfile.getIdentityServerPwdCredToken().equals("pwdCredential"));
             assertTrue(retrievedProfile.getIdentityServerTenant().equals("testTenant"));
diff --git a/airavata-api/src/test/java/org/apache/airavata/compute/repository/GroupResourceProfileRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/compute/repository/GroupResourceProfileRepositoryTest.java
index cecf8e5808..b13c25bd4d 100644
--- a/airavata-api/src/test/java/org/apache/airavata/compute/repository/GroupResourceProfileRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/compute/repository/GroupResourceProfileRepositoryTest.java
@@ -29,9 +29,9 @@ import java.util.List;
 import org.apache.airavata.common.util.AiravataUtils;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.AppCatalogException;
-import org.apache.airavata.model.appcatalog.computeresource.BatchQueue;
-import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription;
-import org.apache.airavata.model.appcatalog.groupresourceprofile.*;
+import org.apache.airavata.model.appcatalog.computeresource.proto.BatchQueue;
+import org.apache.airavata.model.appcatalog.computeresource.proto.ComputeResourceDescription;
+import org.apache.airavata.model.appcatalog.groupresourceprofile.proto.*;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
@@ -64,58 +64,51 @@ public class GroupResourceProfileRepositoryTest extends TestBase {
     public void setUp() throws Exception {
         super.setUp();
 
-        ComputeResourceDescription description = new ComputeResourceDescription();
-
-        description.setHostName("localhost");
-        description.setResourceDescription("test compute resource");
+        ComputeResourceDescription description = ComputeResourceDescription.newBuilder().setHostName("localhost").build();
+        description = description.toBuilder().setResourceDescription("test compute resource").build();
         List<String> ipdaresses = new ArrayList<String>();
         ipdaresses.add("222.33.43.444");
         ipdaresses.add("23.344.44.454");
-        description.setIpAddresses(ipdaresses);
-
-        BatchQueue batchQueue1 = new BatchQueue();
-        batchQueue1.setQueueName(QUEUE1_NAME);
-        batchQueue1.setQueueDescription("que1Desc1");
-        batchQueue1.setMaxRunTime(10);
-        batchQueue1.setMaxNodes(4);
-        batchQueue1.setMaxJobsInQueue(1);
-
-        BatchQueue batchQueue2 = new BatchQueue();
-        batchQueue2.setQueueName(QUEUE2_NAME);
-        batchQueue2.setQueueDescription("que1Desc2");
-        batchQueue2.setMaxRunTime(10);
-        batchQueue2.setMaxNodes(4);
-        batchQueue2.setMaxJobsInQueue(1);
+        description = description.toBuilder().setIpAddresses(ipdaresses).build();
+
+        BatchQueue batchQueue1 = BatchQueue.newBuilder().setQueueName(QUEUE1_NAME).build();
+        batchQueue1 = batchQueue1.toBuilder().setQueueDescription("que1Desc1").build();
+        batchQueue1 = batchQueue1.toBuilder().setMaxRunTime(10).build();
+        batchQueue1 = batchQueue1.toBuilder().setMaxNodes(4).build();
+        batchQueue1 = batchQueue1.toBuilder().setMaxJobsInQueue(1).build();
+
+        BatchQueue batchQueue2 = BatchQueue.newBuilder().setQueueName(QUEUE2_NAME).build();
+        batchQueue2 = batchQueue2.toBuilder().setQueueDescription("que1Desc2").build();
+        batchQueue2 = batchQueue2.toBuilder().setMaxRunTime(10).build();
+        batchQueue2 = batchQueue2.toBuilder().setMaxNodes(4).build();
+        batchQueue2 = batchQueue2.toBuilder().setMaxJobsInQueue(1).build();
 
         List<BatchQueue> batchQueueList = new ArrayList<BatchQueue>();
         batchQueueList.add(batchQueue1);
         batchQueueList.add(batchQueue2);
-        description.setBatchQueues(batchQueueList);
+        description = description.toBuilder().setBatchQueues(batchQueueList).build();
 
         this.resourceId1 = computeResourceRepository.addComputeResource(description);
 
-        ComputeResourceDescription cm2 = new ComputeResourceDescription();
-        cm2.setHostName("localhost2");
-        cm2.setResourceDescription("test compute host");
+        ComputeResourceDescription cm2 = ComputeResourceDescription.newBuilder().setHostName("localhost2").build();
+        cm2 = cm2.toBuilder().setResourceDescription("test compute host").build();
 
-        BatchQueue cm_batchQueue1 = new BatchQueue();
-        cm_batchQueue1.setQueueName("cmqueue1");
-        cm_batchQueue1.setQueueDescription("cmque1Desc1");
-        cm_batchQueue1.setMaxRunTime(10);
-        cm_batchQueue1.setMaxNodes(4);
-        cm_batchQueue1.setMaxJobsInQueue(1);
+        BatchQueue cm_batchQueue1 = BatchQueue.newBuilder().setQueueName("cmqueue1").build();
+        cm_batchQueue1 = cm_batchQueue1.toBuilder().setQueueDescription("cmque1Desc1").build();
+        cm_batchQueue1 = cm_batchQueue1.toBuilder().setMaxRunTime(10).build();
+        cm_batchQueue1 = cm_batchQueue1.toBuilder().setMaxNodes(4).build();
+        cm_batchQueue1 = cm_batchQueue1.toBuilder().setMaxJobsInQueue(1).build();
 
-        BatchQueue cm_batchQueue2 = new BatchQueue();
-        cm_batchQueue2.setQueueName("cmqueue2");
-        cm_batchQueue2.setQueueDescription("cmque1Desc2");
-        cm_batchQueue2.setMaxRunTime(10);
-        cm_batchQueue2.setMaxNodes(4);
-        cm_batchQueue2.setMaxJobsInQueue(1);
+        BatchQueue cm_batchQueue2 = BatchQueue.newBuilder().setQueueName("cmqueue2").build();
+        cm_batchQueue2 = cm_batchQueue2.toBuilder().setQueueDescription("cmque1Desc2").build();
+        cm_batchQueue2 = cm_batchQueue2.toBuilder().setMaxRunTime(10).build();
+        cm_batchQueue2 = cm_batchQueue2.toBuilder().setMaxNodes(4).build();
+        cm_batchQueue2 = cm_batchQueue2.toBuilder().setMaxJobsInQueue(1).build();
 
         List<BatchQueue> cmbatchQueueList = new ArrayList<BatchQueue>();
         cmbatchQueueList.add(cm_batchQueue1);
         cmbatchQueueList.add(cm_batchQueue2);
-        cm2.setBatchQueues(cmbatchQueueList);
+        cm2 = cm2.toBuilder().setBatchQueues(cmbatchQueueList).build();
 
         this.resourceId2 = computeResourceRepository.addComputeResource(cm2);
     }
@@ -208,9 +201,9 @@ public class GroupResourceProfileRepositoryTest extends TestBase {
             assertEquals("test-cred-store-token", getGroupResourceProfile.getDefaultCredentialStoreToken());
 
             assertTrue(getGroupResourceProfile.getComputePreferences().size() == 2);
-            assertTrue(getGroupResourceProfile.getComputeResourcePolicies().size() == 2);
+            assertTrue(getGroupResourceProfile.getComputeResourcePoliciesList().size() == 2);
             assertTrue(getGroupResourceProfile.getBatchQueueResourcePolicies().size() == 2);
-            computeResourcePolicyId1 = getGroupResourceProfile.getComputeResourcePolicies().stream()
+            computeResourcePolicyId1 = getGroupResourceProfile.getComputeResourcePoliciesList().stream()
                     .filter(crp -> crp.getComputeResourceId().equals(resourceId1))
                     .map(crp -> crp.getResourcePolicyId())
                     .findFirst()
diff --git a/airavata-api/src/test/java/org/apache/airavata/compute/repository/JobSubmissionInterfaceRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/compute/repository/JobSubmissionInterfaceRepositoryTest.java
index 6726143b38..a282005788 100644
--- a/airavata-api/src/test/java/org/apache/airavata/compute/repository/JobSubmissionInterfaceRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/compute/repository/JobSubmissionInterfaceRepositoryTest.java
@@ -22,10 +22,10 @@ package org.apache.airavata.compute.repository;
 import org.apache.airavata.compute.model.JobSubmissionInterfacePK;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.AppCatalogException;
-import org.apache.airavata.model.appcatalog.computeresource.BatchQueue;
-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.proto.BatchQueue;
+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.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
@@ -49,10 +49,9 @@ public class JobSubmissionInterfaceRepositoryTest extends TestBase {
     @BeforeEach
     public void createTestComputeResource() throws AppCatalogException {
 
-        ComputeResourceDescription description = new ComputeResourceDescription();
-        description.setHostName("localhost");
-        description.addToBatchQueues(new BatchQueue("queue1"));
-        description.addToBatchQueues(new BatchQueue("queue2"));
+        ComputeResourceDescription description = ComputeResourceDescription.newBuilder().setHostName("localhost").build();
+        description = description.toBuilder().addBatchQueues(new BatchQueue("queue1")).build();
+        description = description.toBuilder().addBatchQueues(new BatchQueue("queue2")).build();
         computeResourceId = computeResourceRepository.addComputeResource(description);
     }
 
@@ -65,10 +64,9 @@ public class JobSubmissionInterfaceRepositoryTest extends TestBase {
     @Test
     public void testAddJobSubmissionInterface() throws AppCatalogException {
 
-        JobSubmissionInterface jobSubmissionInterface = new JobSubmissionInterface();
-        jobSubmissionInterface.setJobSubmissionInterfaceId("test");
-        jobSubmissionInterface.setPriorityOrder(1);
-        jobSubmissionInterface.setJobSubmissionProtocol(JobSubmissionProtocol.SSH);
+        JobSubmissionInterface jobSubmissionInterface = JobSubmissionInterface.newBuilder().setJobSubmissionInterfaceId("test").build();
+        jobSubmissionInterface = jobSubmissionInterface.toBuilder().setPriorityOrder(1).build();
+        jobSubmissionInterface = jobSubmissionInterface.toBuilder().setJobSubmissionProtocol(JobSubmissionProtocol.SSH).build();
 
         String jobSubmissionInterfaceId =
                 jobSubmissionInterfaceRepository.addJobSubmission(computeResourceId, jobSubmissionInterface);
diff --git a/airavata-api/src/test/java/org/apache/airavata/compute/repository/StorageResourceRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/compute/repository/StorageResourceRepositoryTest.java
index d7d41fe008..f5ab396106 100644
--- a/airavata-api/src/test/java/org/apache/airavata/compute/repository/StorageResourceRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/compute/repository/StorageResourceRepositoryTest.java
@@ -26,12 +26,12 @@ import java.util.ArrayList;
 import java.util.List;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.AppCatalogException;
-import org.apache.airavata.model.appcatalog.storageresource.StorageResourceDescription;
-import org.apache.airavata.model.data.movement.DataMovementInterface;
-import org.apache.airavata.model.data.movement.DataMovementProtocol;
-import org.apache.airavata.model.data.movement.GridFTPDataMovement;
-import org.apache.airavata.model.data.movement.SCPDataMovement;
-import org.apache.airavata.model.data.movement.SecurityProtocol;
+import org.apache.airavata.model.appcatalog.storageresource.proto.StorageResourceDescription;
+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.GridFTPDataMovement;
+import org.apache.airavata.model.data.movement.proto.SCPDataMovement;
+import org.apache.airavata.model.data.movement.proto.SecurityProtocol;
 import org.apache.airavata.storage.repository.StorageResourceRepository;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
@@ -54,11 +54,9 @@ public class StorageResourceRepositoryTest extends TestBase {
     @Test
     public void StorageResourceRepositoryTest() throws AppCatalogException {
 
-        StorageResourceDescription description = new StorageResourceDescription();
-
-        description.setHostName("localhost");
-        description.setEnabled(true);
-        description.setStorageResourceDescription("testDescription");
+        StorageResourceDescription description = StorageResourceDescription.newBuilder().setHostName("localhost").build();
+        description = description.toBuilder().setEnabled(true).build();
+        description = description.toBuilder().setStorageResourceDescription("testDescription").build();
 
         String scpDataMoveId = addSCPDataMovement();
         System.out.println("**** SCP DataMoveId****** :" + scpDataMoveId);
@@ -66,19 +64,17 @@ public class StorageResourceRepositoryTest extends TestBase {
         System.out.println("**** grid FTP DataMoveId****** :" + gridFTPDataMoveId);
 
         List<DataMovementInterface> dataMovementInterfaces = new ArrayList<DataMovementInterface>();
-        DataMovementInterface scpInterface = new DataMovementInterface();
-        scpInterface.setDataMovementInterfaceId(scpDataMoveId);
-        scpInterface.setDataMovementProtocol(DataMovementProtocol.SCP);
-        scpInterface.setPriorityOrder(1);
+        DataMovementInterface scpInterface = DataMovementInterface.newBuilder().setDataMovementInterfaceId(scpDataMoveId).build();
+        scpInterface = scpInterface.toBuilder().setDataMovementProtocol(DataMovementProtocol.SCP).build();
+        scpInterface = scpInterface.toBuilder().setPriorityOrder(1).build();
 
-        DataMovementInterface gridFTPMv = new DataMovementInterface();
-        gridFTPMv.setDataMovementInterfaceId(gridFTPDataMoveId);
-        gridFTPMv.setDataMovementProtocol(DataMovementProtocol.GridFTP);
-        gridFTPMv.setPriorityOrder(2);
+        DataMovementInterface gridFTPMv = DataMovementInterface.newBuilder().setDataMovementInterfaceId(gridFTPDataMoveId).build();
+        gridFTPMv = gridFTPMv.toBuilder().setDataMovementProtocol(DataMovementProtocol.GRID_FTP).build();
+        gridFTPMv = gridFTPMv.toBuilder().setPriorityOrder(2).build();
 
         dataMovementInterfaces.add(scpInterface);
         dataMovementInterfaces.add(gridFTPMv);
-        description.setDataMovementInterfaces(dataMovementInterfaces);
+        description = description.toBuilder().setDataMovementInterfaces(dataMovementInterfaces).build();
 
         String resourceId = storageResourceRepository.addStorageResource(description);
         StorageResourceDescription storageResourceDescription = null;
@@ -88,7 +84,7 @@ public class StorageResourceRepositoryTest extends TestBase {
             assertTrue(storageResourceDescription.getHostName().equals("localhost"));
             assertTrue(
                     storageResourceDescription.getStorageResourceDescription().equals("testDescription"));
-            List<DataMovementInterface> movementInterfaces = storageResourceDescription.getDataMovementInterfaces();
+            List<DataMovementInterface> movementInterfaces = storageResourceDescription.getDataMovementInterfacesList();
             if (movementInterfaces != null && !movementInterfaces.isEmpty()) {
                 for (DataMovementInterface dataMovementInterface : movementInterfaces) {
                     System.out.println(
@@ -101,7 +97,7 @@ public class StorageResourceRepositoryTest extends TestBase {
             fail("Created Storage Resource not found");
         }
 
-        description.setHostName("localhost2");
+        description = description.toBuilder().setHostName("localhost2").build();
         storageResourceRepository.updateStorageResource(resourceId, description);
         if (storageResourceRepository.isStorageResourceExists(resourceId)) {
             storageResourceDescription = storageResourceRepository.getStorageResource(resourceId);
@@ -114,9 +110,8 @@ public class StorageResourceRepositoryTest extends TestBase {
 
     public String addSCPDataMovement() {
         try {
-            SCPDataMovement dataMovement = new SCPDataMovement();
-            dataMovement.setSshPort(22);
-            dataMovement.setSecurityProtocol(SecurityProtocol.SSH_KEYS);
+            SCPDataMovement dataMovement = SCPDataMovement.newBuilder().setSshPort(22).build();
+            dataMovement = dataMovement.toBuilder().setSecurityProtocol(SecurityProtocol.SSH_KEYS).build();
             return new ComputeResourceRepository().addScpDataMovement(dataMovement);
         } catch (AppCatalogException e) {
             logger.error(e.getMessage(), e);
@@ -126,12 +121,11 @@ public class StorageResourceRepositoryTest extends TestBase {
 
     public String addGridFTPDataMovement() {
         try {
-            GridFTPDataMovement dataMovement = new GridFTPDataMovement();
-            dataMovement.setSecurityProtocol(SecurityProtocol.SSH_KEYS);
+            GridFTPDataMovement dataMovement = GridFTPDataMovement.newBuilder().setSecurityProtocol(SecurityProtocol.SSH_KEYS).build();
             List<String> endPoints = new ArrayList<String>();
             endPoints.add("222.33.43.444");
             endPoints.add("23.344.44.454");
-            dataMovement.setGridFTPEndPoints(endPoints);
+            dataMovement = dataMovement.toBuilder().setGridFTPEndPoints(endPoints).build();
             return new ComputeResourceRepository().addGridFTPDataMovement(dataMovement);
         } catch (AppCatalogException e) {
             logger.error(e.getMessage(), e);
diff --git a/airavata-api/src/test/java/org/apache/airavata/compute/repository/UserResourceProfileRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/compute/repository/UserResourceProfileRepositoryTest.java
index ff0f557a57..cf37ec635e 100644
--- a/airavata-api/src/test/java/org/apache/airavata/compute/repository/UserResourceProfileRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/compute/repository/UserResourceProfileRepositoryTest.java
@@ -25,9 +25,9 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import java.util.*;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.AppCatalogException;
-import org.apache.airavata.model.appcatalog.userresourceprofile.UserComputeResourcePreference;
-import org.apache.airavata.model.appcatalog.userresourceprofile.UserResourceProfile;
-import org.apache.airavata.model.appcatalog.userresourceprofile.UserStoragePreference;
+import org.apache.airavata.model.appcatalog.userresourceprofile.proto.UserComputeResourcePreference;
+import org.apache.airavata.model.appcatalog.userresourceprofile.proto.UserResourceProfile;
+import org.apache.airavata.model.appcatalog.userresourceprofile.proto.UserStoragePreference;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
@@ -49,36 +49,33 @@ public class UserResourceProfileRepositoryTest extends TestBase {
     @Disabled("UserStoragePreference lost on update round-trip: child entity FK population issue")
     @Test
     public void UserResourceProfileRepositoryTest() throws AppCatalogException {
-        UserComputeResourcePreference userComputeResourcePreference = new UserComputeResourcePreference();
-        userComputeResourcePreference.setComputeResourceId("computeResource1");
-        userComputeResourcePreference.setLoginUserName(userId);
-        userComputeResourcePreference.setPreferredBatchQueue("queue1");
-        userComputeResourcePreference.setScratchLocation("location1");
+        UserComputeResourcePreference userComputeResourcePreference = UserComputeResourcePreference.newBuilder().setComputeResourceId("computeResource1").build();
+        userComputeResourcePreference = userComputeResourcePreference.toBuilder().setLoginUserName(userId).build();
+        userComputeResourcePreference = userComputeResourcePreference.toBuilder().setPreferredBatchQueue("queue1").build();
+        userComputeResourcePreference = userComputeResourcePreference.toBuilder().setScratchLocation("location1").build();
 
-        UserStoragePreference userStoragePreference = new UserStoragePreference();
-        userStoragePreference.setStorageResourceId("storageResource1");
-        userStoragePreference.setLoginUserName(userId);
-        userStoragePreference.setFileSystemRootLocation("location2");
-        userStoragePreference.setResourceSpecificCredentialStoreToken("token1");
+        UserStoragePreference userStoragePreference = UserStoragePreference.newBuilder().setStorageResourceId("storageResource1").build();
+        userStoragePreference = userStoragePreference.toBuilder().setLoginUserName(userId).build();
+        userStoragePreference = userStoragePreference.toBuilder().setFileSystemRootLocation("location2").build();
+        userStoragePreference = userStoragePreference.toBuilder().setResourceSpecificCredentialStoreToken("token1").build();
 
-        UserResourceProfile userResourceProfile = new UserResourceProfile();
-        userResourceProfile.setUserId(userId);
-        userResourceProfile.setGatewayID(gatewayId);
-        userResourceProfile.setCredentialStoreToken("token");
-        userResourceProfile.setUserComputeResourcePreferences(Arrays.asList(userComputeResourcePreference));
-        userResourceProfile.setUserStoragePreferences(Arrays.asList(userStoragePreference));
-        userResourceProfile.setIdentityServerTenant("tenant1");
-        userResourceProfile.setIdentityServerPwdCredToken("password");
+        UserResourceProfile userResourceProfile = UserResourceProfile.newBuilder().setUserId(userId).build();
+        userResourceProfile = userResourceProfile.toBuilder().setGatewayId(gatewayId).build();
+        userResourceProfile = userResourceProfile.toBuilder().setCredentialStoreToken("token").build();
+        userResourceProfile = userResourceProfile.toBuilder().setUserComputeResourcePreferences(Arrays.asList(userComputeResourcePreference)).build();
+        userResourceProfile = userResourceProfile.toBuilder().setUserStoragePreferences(Arrays.asList(userStoragePreference)).build();
+        userResourceProfile = userResourceProfile.toBuilder().setIdentityServerTenant("tenant1").build();
+        userResourceProfile = userResourceProfile.toBuilder().setIdentityServerPwdCredToken("password").build();
         if (!userResourceProfileRepository.isUserResourceProfileExists(userId, gatewayId))
             userResourceProfileRepository.addUserResourceProfile(userResourceProfile);
         assertEquals(userId, userResourceProfile.getUserId());
 
-        userResourceProfile.setIdentityServerTenant("tenant2");
+        userResourceProfile = userResourceProfile.toBuilder().setIdentityServerTenant("tenant2").build();
         userResourceProfileRepository.updateUserResourceProfile(userId, gatewayId, userResourceProfile);
 
         UserResourceProfile retrievedUserResourceProfile =
                 userResourceProfileRepository.getUserResourceProfile(userId, gatewayId);
-        assertTrue(retrievedUserResourceProfile.getUserStoragePreferences().size() == 1);
+        assertTrue(retrievedUserResourceProfile.getUserStoragePreferencesList().size() == 1);
         assertEquals(
                 userResourceProfile.getIdentityServerTenant(), retrievedUserResourceProfile.getIdentityServerTenant());
 
diff --git a/airavata-api/src/test/java/org/apache/airavata/compute/service/ApplicationCatalogServiceTest.java b/airavata-api/src/test/java/org/apache/airavata/compute/service/ApplicationCatalogServiceTest.java
index 45152a70ce..dc6fbe4f60 100644
--- a/airavata-api/src/test/java/org/apache/airavata/compute/service/ApplicationCatalogServiceTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/compute/service/ApplicationCatalogServiceTest.java
@@ -28,11 +28,11 @@ import org.apache.airavata.credential.handler.CredentialStoreServerHandler;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
 import org.apache.airavata.execution.service.RequestContext;
 import org.apache.airavata.execution.service.ServiceException;
-import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
-import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
-import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
-import org.apache.airavata.model.application.io.InputDataObjectType;
-import org.apache.airavata.model.application.io.OutputDataObjectType;
+import org.apache.airavata.model.appcatalog.appdeployment.proto.ApplicationDeploymentDescription;
+import org.apache.airavata.model.appcatalog.appdeployment.proto.ApplicationModule;
+import org.apache.airavata.model.appcatalog.appinterface.proto.ApplicationInterfaceDescription;
+import org.apache.airavata.model.application.io.proto.InputDataObjectType;
+import org.apache.airavata.model.application.io.proto.OutputDataObjectType;
 import org.apache.airavata.sharing.handler.SharingRegistryServerHandler;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -68,8 +68,7 @@ class ApplicationCatalogServiceTest {
 
     @Test
     void registerApplicationModule_delegatesToRegistry() throws Exception {
-        ApplicationModule module = new ApplicationModule();
-        module.setAppModuleName("Gaussian");
+        ApplicationModule module = ApplicationModule.newBuilder().setAppModuleName("Gaussian").build();
         when(registryHandler.registerApplicationModule("testGateway", module)).thenReturn("mod-1");
 
         String result = service.registerApplicationModule(ctx, "testGateway", module);
@@ -80,9 +79,8 @@ class ApplicationCatalogServiceTest {
 
     @Test
     void getApplicationModule_delegatesToRegistry() throws Exception {
-        ApplicationModule module = new ApplicationModule();
-        module.setAppModuleId("mod-1");
-        module.setAppModuleName("Gaussian");
+        ApplicationModule module = ApplicationModule.newBuilder().setAppModuleId("mod-1").build();
+        module = module.toBuilder().setAppModuleName("Gaussian").build();
         when(registryHandler.getApplicationModule("mod-1")).thenReturn(module);
 
         ApplicationModule result = service.getApplicationModule(ctx, "mod-1");
@@ -94,8 +92,7 @@ class ApplicationCatalogServiceTest {
 
     @Test
     void updateApplicationModule_delegatesToRegistry() throws Exception {
-        ApplicationModule module = new ApplicationModule();
-        module.setAppModuleId("mod-1");
+        ApplicationModule module = ApplicationModule.newBuilder().setAppModuleId("mod-1").build();
         when(registryHandler.updateApplicationModule("mod-1", module)).thenReturn(true);
 
         boolean result = service.updateApplicationModule(ctx, "mod-1", module);
@@ -116,10 +113,8 @@ class ApplicationCatalogServiceTest {
 
     @Test
     void getAllAppModules_delegatesToRegistry() throws Exception {
-        ApplicationModule m1 = new ApplicationModule();
-        m1.setAppModuleId("mod-1");
-        ApplicationModule m2 = new ApplicationModule();
-        m2.setAppModuleId("mod-2");
+        ApplicationModule m1 = ApplicationModule.newBuilder().setAppModuleId("mod-1").build();
+        ApplicationModule m2 = ApplicationModule.newBuilder().setAppModuleId("mod-2").build();
         when(registryHandler.getAllAppModules("testGateway")).thenReturn(List.of(m1, m2));
 
         List<ApplicationModule> result = service.getAllAppModules(ctx, "testGateway");
@@ -135,8 +130,7 @@ class ApplicationCatalogServiceTest {
     @Test
     void getApplicationDeployment_returnsDeploymentWhenSharingDisabled() throws Exception {
         // ServerSettings.isEnableSharing() returns false in test env, so no sharing check is done
-        ApplicationDeploymentDescription dep = new ApplicationDeploymentDescription();
-        dep.setAppDeploymentId("dep-1");
+        ApplicationDeploymentDescription dep = ApplicationDeploymentDescription.newBuilder().setAppDeploymentId("dep-1").build();
         when(registryHandler.getApplicationDeployment("dep-1")).thenReturn(dep);
 
         ApplicationDeploymentDescription result = service.getApplicationDeployment(ctx, "dep-1");
@@ -148,8 +142,7 @@ class ApplicationCatalogServiceTest {
 
     @Test
     void updateApplicationDeployment_delegatesToRegistry() throws Exception {
-        ApplicationDeploymentDescription dep = new ApplicationDeploymentDescription();
-        dep.setAppDeploymentId("dep-1");
+        ApplicationDeploymentDescription dep = ApplicationDeploymentDescription.newBuilder().setAppDeploymentId("dep-1").build();
         when(registryHandler.updateApplicationDeployment("dep-1", dep)).thenReturn(true);
 
         // sharing disabled in test env — no access check
@@ -175,8 +168,7 @@ class ApplicationCatalogServiceTest {
 
     @Test
     void registerApplicationInterface_delegatesToRegistry() throws Exception {
-        ApplicationInterfaceDescription iface = new ApplicationInterfaceDescription();
-        iface.setApplicationName("GaussianInterface");
+        ApplicationInterfaceDescription iface = ApplicationInterfaceDescription.newBuilder().setApplicationName("GaussianInterface").build();
         when(registryHandler.registerApplicationInterface("testGateway", iface)).thenReturn("iface-1");
 
         String result = service.registerApplicationInterface(ctx, "testGateway", iface);
@@ -187,8 +179,7 @@ class ApplicationCatalogServiceTest {
 
     @Test
     void getApplicationInterface_delegatesToRegistry() throws Exception {
-        ApplicationInterfaceDescription iface = new ApplicationInterfaceDescription();
-        iface.setApplicationInterfaceId("iface-1");
+        ApplicationInterfaceDescription iface = ApplicationInterfaceDescription.newBuilder().setApplicationInterfaceId("iface-1").build();
         when(registryHandler.getApplicationInterface("iface-1")).thenReturn(iface);
 
         ApplicationInterfaceDescription result = service.getApplicationInterface(ctx, "iface-1");
@@ -208,9 +199,8 @@ class ApplicationCatalogServiceTest {
 
     @Test
     void cloneApplicationInterface_registersNewInterface() throws Exception {
-        ApplicationInterfaceDescription iface = new ApplicationInterfaceDescription();
-        iface.setApplicationInterfaceId("iface-old");
-        iface.setApplicationName("OldApp");
+        ApplicationInterfaceDescription iface = ApplicationInterfaceDescription.newBuilder().setApplicationInterfaceId("iface-old").build();
+        iface = iface.toBuilder().setApplicationName("OldApp").build();
         when(registryHandler.getApplicationInterface("iface-old")).thenReturn(iface);
         when(registryHandler.registerApplicationInterface(eq("testGateway"), any()))
                 .thenReturn("iface-new");
diff --git a/airavata-api/src/test/java/org/apache/airavata/compute/service/GatewayResourceProfileServiceTest.java b/airavata-api/src/test/java/org/apache/airavata/compute/service/GatewayResourceProfileServiceTest.java
index aa00b52ca5..e712117ca0 100644
--- a/airavata-api/src/test/java/org/apache/airavata/compute/service/GatewayResourceProfileServiceTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/compute/service/GatewayResourceProfileServiceTest.java
@@ -27,9 +27,9 @@ import java.util.Map;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
 import org.apache.airavata.execution.service.RequestContext;
 import org.apache.airavata.execution.service.ServiceException;
-import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference;
-import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
-import org.apache.airavata.model.appcatalog.gatewayprofile.StoragePreference;
+import org.apache.airavata.model.appcatalog.gatewayprofile.proto.ComputeResourcePreference;
+import org.apache.airavata.model.appcatalog.gatewayprofile.proto.GatewayResourceProfile;
+import org.apache.airavata.model.appcatalog.gatewayprofile.proto.StoragePreference;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -54,8 +54,7 @@ class GatewayResourceProfileServiceTest {
 
     @Test
     void registerGatewayResourceProfile_returnsId() throws Exception {
-        GatewayResourceProfile profile = new GatewayResourceProfile();
-        profile.setGatewayID("testGateway");
+        GatewayResourceProfile profile = GatewayResourceProfile.newBuilder().setGatewayId("testGateway").build();
         when(registryHandler.registerGatewayResourceProfile(profile)).thenReturn("profile-id");
 
         String result = service.registerGatewayResourceProfile(ctx, profile);
@@ -66,14 +65,13 @@ class GatewayResourceProfileServiceTest {
 
     @Test
     void getGatewayResourceProfile_delegatesToRegistry() throws Exception {
-        GatewayResourceProfile profile = new GatewayResourceProfile();
-        profile.setGatewayID("testGateway");
+        GatewayResourceProfile profile = GatewayResourceProfile.newBuilder().setGatewayId("testGateway").build();
         when(registryHandler.getGatewayResourceProfile("testGateway")).thenReturn(profile);
 
         GatewayResourceProfile result = service.getGatewayResourceProfile(ctx, "testGateway");
 
         assertNotNull(result);
-        assertEquals("testGateway", result.getGatewayID());
+        assertEquals("testGateway", result.getGatewayId());
     }
 
     @Test
diff --git a/airavata-api/src/test/java/org/apache/airavata/compute/service/GroupResourceProfileServiceTest.java b/airavata-api/src/test/java/org/apache/airavata/compute/service/GroupResourceProfileServiceTest.java
index 3834298230..6bc6b68ed7 100644
--- a/airavata-api/src/test/java/org/apache/airavata/compute/service/GroupResourceProfileServiceTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/compute/service/GroupResourceProfileServiceTest.java
@@ -27,10 +27,10 @@ import java.util.List;
 import java.util.Map;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
 import org.apache.airavata.execution.service.RequestContext;
-import org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups;
-import org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourcePolicy;
-import org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference;
-import org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile;
+import org.apache.airavata.model.appcatalog.gatewaygroups.proto.GatewayGroups;
+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.sharing.handler.SharingRegistryServerHandler;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -59,9 +59,8 @@ class GroupResourceProfileServiceTest {
 
     @Test
     void createGroupResourceProfile_sharingDisabled_returnsId() throws Exception {
-        GroupResourceProfile profile = new GroupResourceProfile();
-        profile.setGatewayId("testGateway");
-        profile.setGroupResourceProfileName("test-profile");
+        GroupResourceProfile profile = GroupResourceProfile.newBuilder().setGatewayId("testGateway").build();
+        profile = profile.toBuilder().setGroupResourceProfileName("test-profile").build();
         when(registryHandler.createGroupResourceProfile(profile)).thenReturn("grp-profile-1");
 
         // Sharing disabled (ServerSettings.isEnableSharing() returns false in tests)
@@ -73,8 +72,7 @@ class GroupResourceProfileServiceTest {
 
     @Test
     void getGroupResourceProfile_sharingDisabled_returnsProfile() throws Exception {
-        GroupResourceProfile profile = new GroupResourceProfile();
-        profile.setGroupResourceProfileId("grp-profile-1");
+        GroupResourceProfile profile = GroupResourceProfile.newBuilder().setGroupResourceProfileId("grp-profile-1").build();
         when(registryHandler.getGroupResourceProfile("grp-profile-1")).thenReturn(profile);
 
         GroupResourceProfile result = service.getGroupResourceProfile(ctx, "grp-profile-1");
@@ -107,9 +105,8 @@ class GroupResourceProfileServiceTest {
 
     @Test
     void updateGroupResourceProfile_sharingDisabled_delegatesToRegistry() throws Exception {
-        GroupResourceProfile profile = new GroupResourceProfile();
-        profile.setGroupResourceProfileId("grp-profile-1");
-        profile.setGatewayId("testGateway");
+        GroupResourceProfile profile = GroupResourceProfile.newBuilder().setGroupResourceProfileId("grp-profile-1").build();
+        profile = profile.toBuilder().setGatewayId("testGateway").build();
 
         assertDoesNotThrow(() -> service.updateGroupResourceProfile(ctx, profile));
         verify(registryHandler).updateGroupResourceProfile(profile);
@@ -127,8 +124,7 @@ class GroupResourceProfileServiceTest {
 
     @Test
     void getGatewayGroups_sharingDisabled_returnsGroups() throws Exception {
-        GatewayGroups groups = new GatewayGroups();
-        groups.setGatewayId("testGateway");
+        GatewayGroups groups = GatewayGroups.newBuilder().setGatewayId("testGateway").build();
         when(registryHandler.isGatewayGroupsExists("testGateway")).thenReturn(true);
         when(registryHandler.getGatewayGroups("testGateway")).thenReturn(groups);
 
@@ -150,8 +146,7 @@ class GroupResourceProfileServiceTest {
 
     @Test
     void getGroupComputeResourcePolicy_sharingDisabled_returnsPolicy() throws Exception {
-        ComputeResourcePolicy policy = new ComputeResourcePolicy();
-        policy.setResourcePolicyId("policy-1");
+        ComputeResourcePolicy policy = ComputeResourcePolicy.newBuilder().setResourcePolicyId("policy-1").build();
         when(registryHandler.getGroupComputeResourcePolicy("policy-1")).thenReturn(policy);
 
         ComputeResourcePolicy result = service.getGroupComputeResourcePolicy(ctx, "policy-1");
diff --git a/airavata-api/src/test/java/org/apache/airavata/compute/service/ParserServiceTest.java b/airavata-api/src/test/java/org/apache/airavata/compute/service/ParserServiceTest.java
index a7d0539390..c3efbf586b 100644
--- a/airavata-api/src/test/java/org/apache/airavata/compute/service/ParserServiceTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/compute/service/ParserServiceTest.java
@@ -27,8 +27,8 @@ import java.util.Map;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
 import org.apache.airavata.execution.service.RequestContext;
 import org.apache.airavata.execution.service.ServiceException;
-import org.apache.airavata.model.appcatalog.parser.Parser;
-import org.apache.airavata.model.appcatalog.parser.ParsingTemplate;
+import org.apache.airavata.model.appcatalog.parser.proto.Parser;
+import org.apache.airavata.model.appcatalog.parser.proto.ParsingTemplate;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -53,8 +53,7 @@ class ParserServiceTest {
 
     @Test
     void getParser_returnsParser() throws Exception {
-        Parser parser = new Parser();
-        parser.setId("parser-1");
+        Parser parser = Parser.newBuilder().setId("parser-1").build();
         when(registryHandler.getParser("parser-1", "testGateway")).thenReturn(parser);
 
         Parser result = parserService.getParser(ctx, "parser-1", "testGateway");
@@ -97,8 +96,7 @@ class ParserServiceTest {
 
     @Test
     void getParsingTemplate_returnsTemplate() throws Exception {
-        ParsingTemplate template = new ParsingTemplate();
-        template.setId("tpl-1");
+        ParsingTemplate template = ParsingTemplate.newBuilder().setId("tpl-1").build();
         when(registryHandler.getParsingTemplate("tpl-1", "testGateway")).thenReturn(template);
 
         ParsingTemplate result = parserService.getParsingTemplate(ctx, "tpl-1", "testGateway");
diff --git a/airavata-api/src/test/java/org/apache/airavata/compute/service/ResourceServiceTest.java b/airavata-api/src/test/java/org/apache/airavata/compute/service/ResourceServiceTest.java
index fac50b010b..22b20e8b6e 100644
--- a/airavata-api/src/test/java/org/apache/airavata/compute/service/ResourceServiceTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/compute/service/ResourceServiceTest.java
@@ -25,10 +25,10 @@ import static org.mockito.Mockito.*;
 import java.util.Map;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
 import org.apache.airavata.execution.service.ServiceException;
-import org.apache.airavata.model.appcatalog.computeresource.*;
-import org.apache.airavata.model.appcatalog.storageresource.StorageResourceDescription;
-import org.apache.airavata.model.data.movement.DMType;
-import org.apache.airavata.model.data.movement.SCPDataMovement;
+import org.apache.airavata.model.appcatalog.computeresource.proto.*;
+import org.apache.airavata.model.appcatalog.storageresource.proto.StorageResourceDescription;
+import org.apache.airavata.model.data.movement.proto.DMType;
+import org.apache.airavata.model.data.movement.proto.SCPDataMovement;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -55,8 +55,7 @@ class ResourceServiceTest {
 
     @Test
     void registerComputeResource_returnsId() throws Exception {
-        ComputeResourceDescription desc = new ComputeResourceDescription();
-        desc.setHostName("cluster.example.com");
+        ComputeResourceDescription desc = ComputeResourceDescription.newBuilder().setHostName("cluster.example.com").build();
         when(registryHandler.registerComputeResource(desc)).thenReturn("cr-001");
 
         String result = resourceService.registerComputeResource(desc);
@@ -75,8 +74,7 @@ class ResourceServiceTest {
 
     @Test
     void getComputeResource_returnsDescription() throws Exception {
-        ComputeResourceDescription desc = new ComputeResourceDescription();
-        desc.setComputeResourceId("cr-001");
+        ComputeResourceDescription desc = ComputeResourceDescription.newBuilder().setComputeResourceId("cr-001").build();
         when(registryHandler.getComputeResource("cr-001")).thenReturn(desc);
 
         ComputeResourceDescription result = resourceService.getComputeResource("cr-001");
@@ -98,9 +96,8 @@ class ResourceServiceTest {
 
     @Test
     void getStorageResource_returnsDescription() throws Exception {
-        StorageResourceDescription desc = new StorageResourceDescription();
-        desc.setStorageResourceId("sr-001");
-        desc.setHostName("storage.example.com");
+        StorageResourceDescription desc = StorageResourceDescription.newBuilder().setStorageResourceId("sr-001").build();
+        desc = desc.toBuilder().setHostName("storage.example.com").build();
         when(registryHandler.getStorageResource("sr-001")).thenReturn(desc);
 
         StorageResourceDescription result = resourceService.getStorageResource("sr-001");
diff --git a/airavata-api/src/test/java/org/apache/airavata/compute/service/UserResourceProfileServiceTest.java b/airavata-api/src/test/java/org/apache/airavata/compute/service/UserResourceProfileServiceTest.java
index 1d99e0d1e2..294a0d0671 100644
--- a/airavata-api/src/test/java/org/apache/airavata/compute/service/UserResourceProfileServiceTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/compute/service/UserResourceProfileServiceTest.java
@@ -27,10 +27,10 @@ import java.util.Map;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
 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.UserResourceProfile;
-import org.apache.airavata.model.appcatalog.userresourceprofile.UserStoragePreference;
-import org.apache.airavata.model.status.QueueStatusModel;
+import org.apache.airavata.model.appcatalog.userresourceprofile.proto.UserComputeResourcePreference;
+import org.apache.airavata.model.appcatalog.userresourceprofile.proto.UserResourceProfile;
+import org.apache.airavata.model.appcatalog.userresourceprofile.proto.UserStoragePreference;
+import org.apache.airavata.model.status.proto.QueueStatusModel;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -55,9 +55,8 @@ class UserResourceProfileServiceTest {
 
     @Test
     void registerUserResourceProfile_returnsId() throws Exception {
-        UserResourceProfile profile = new UserResourceProfile();
-        profile.setUserId("testUser");
-        profile.setGatewayID("testGateway");
+        UserResourceProfile profile = UserResourceProfile.newBuilder().setUserId("testUser").build();
+        profile = profile.toBuilder().setGatewayId("testGateway").build();
         when(registryHandler.registerUserResourceProfile(profile)).thenReturn("testUser");
 
         String result = service.registerUserResourceProfile(ctx, profile);
@@ -77,8 +76,7 @@ class UserResourceProfileServiceTest {
 
     @Test
     void getUserResourceProfile_delegatesToRegistry() throws Exception {
-        UserResourceProfile profile = new UserResourceProfile();
-        profile.setUserId("testUser");
+        UserResourceProfile profile = UserResourceProfile.newBuilder().setUserId("testUser").build();
         when(registryHandler.getUserResourceProfile("testUser", "testGateway")).thenReturn(profile);
 
         UserResourceProfile result = service.getUserResourceProfile(ctx, "testUser", "testGateway");
diff --git a/airavata-api/src/test/java/org/apache/airavata/compute/util/GroupComputeResourcePreferenceUtilTest.java b/airavata-api/src/test/java/org/apache/airavata/compute/util/GroupComputeResourcePreferenceUtilTest.java
index 5905d7b187..78d5cf76f7 100644
--- a/airavata-api/src/test/java/org/apache/airavata/compute/util/GroupComputeResourcePreferenceUtilTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/compute/util/GroupComputeResourcePreferenceUtilTest.java
@@ -22,8 +22,8 @@ package org.apache.airavata.compute.util;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
-import org.apache.airavata.model.appcatalog.groupresourceprofile.ComputeResourceReservation;
-import org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference;
+import org.apache.airavata.model.appcatalog.groupresourceprofile.proto.ComputeResourceReservation;
+import org.apache.airavata.model.appcatalog.groupresourceprofile.proto.GroupComputeResourcePreference;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
diff --git a/airavata-api/src/test/java/org/apache/airavata/credential/repository/db/CredentialsDAOTest.java b/airavata-api/src/test/java/org/apache/airavata/credential/repository/db/CredentialsDAOTest.java
index 941ce727de..5b485fca97 100644
--- a/airavata-api/src/test/java/org/apache/airavata/credential/repository/db/CredentialsDAOTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/credential/repository/db/CredentialsDAOTest.java
@@ -302,7 +302,7 @@ public class CredentialsDAOTest extends DatabaseTestCases {
             CertificateCredential certificateCredential =
                     (CertificateCredential) credentialsDAO.getCredential("gw1", "tom", connection);
             // Test get gateway name
-            String gateway = credentialsDAO.getGatewayID("tom", connection);
+            String gateway = credentialsDAO.getGatewayId("tom", connection);
             assertNotNull(certificateCredential);
             assertEquals("jerry", certificateCredential.getPortalUserName());
             assertEquals("gw1", gateway);
diff --git a/airavata-api/src/test/java/org/apache/airavata/credential/service/CredentialServiceTest.java b/airavata-api/src/test/java/org/apache/airavata/credential/service/CredentialServiceTest.java
index f989693534..9f3e396cec 100644
--- a/airavata-api/src/test/java/org/apache/airavata/credential/service/CredentialServiceTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/credential/service/CredentialServiceTest.java
@@ -28,11 +28,11 @@ import java.util.Map;
 import org.apache.airavata.credential.handler.CredentialStoreServerHandler;
 import org.apache.airavata.execution.service.RequestContext;
 import org.apache.airavata.execution.service.ServiceAuthorizationException;
-import org.apache.airavata.model.credential.store.CredentialSummary;
-import org.apache.airavata.model.credential.store.SummaryType;
-import org.apache.airavata.model.group.ResourcePermissionType;
+import org.apache.airavata.model.credential.store.proto.CredentialSummary;
+import org.apache.airavata.model.credential.store.proto.SummaryType;
+import org.apache.airavata.model.group.proto.ResourcePermissionType;
 import org.apache.airavata.sharing.handler.SharingRegistryServerHandler;
-import org.apache.airavata.sharing.registry.models.Entity;
+import org.apache.airavata.sharing.model.EntityEntity;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -107,8 +107,7 @@ class CredentialServiceTest {
                         eq("tok-1"),
                         eq("testGateway:" + ResourcePermissionType.OWNER)))
                 .thenReturn(true);
-        CredentialSummary summary = new CredentialSummary();
-        summary.setToken("tok-1");
+        CredentialSummary summary = CredentialSummary.newBuilder().setToken("tok-1").build();
         when(credentialHandler.getCredentialSummary("tok-1", "testGateway")).thenReturn(summary);
 
         CredentialSummary result = credentialService.getCredentialSummary(ctx, "tok-1");
@@ -168,12 +167,11 @@ class CredentialServiceTest {
 
     @Test
     void getAllCredentialSummaries_delegatesToCredentialHandler() throws Exception {
-        Entity entity = new Entity();
+        EntityEntity entity = new EntityEntity();
         entity.setEntityId("tok-1");
         when(sharingHandler.searchEntities(eq("testGateway"), eq("testUser@testGateway"), any(), eq(0), eq(-1)))
                 .thenReturn(List.of(entity));
-        CredentialSummary summary = new CredentialSummary();
-        summary.setToken("tok-1");
+        CredentialSummary summary = CredentialSummary.newBuilder().setToken("tok-1").build();
         when(credentialHandler.getAllCredentialSummaries(eq(SummaryType.SSH), any(), eq("testGateway")))
                 .thenReturn(List.of(summary));
 
diff --git a/airavata-api/src/test/java/org/apache/airavata/credential/service/SSHAccountServiceTest.java b/airavata-api/src/test/java/org/apache/airavata/credential/service/SSHAccountServiceTest.java
index 6383a97f53..fb876a7bdf 100644
--- a/airavata-api/src/test/java/org/apache/airavata/credential/service/SSHAccountServiceTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/credential/service/SSHAccountServiceTest.java
@@ -27,8 +27,8 @@ 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.credential.store.SSHCredential;
+import org.apache.airavata.model.appcatalog.userresourceprofile.proto.UserComputeResourcePreference;
+import org.apache.airavata.model.credential.store.proto.SSHCredential;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -107,8 +107,7 @@ class SSHAccountServiceTest {
         SSHCredential cred = new SSHCredential();
         when(credentialHandler.getSSHCredential("tok-123", "testGateway")).thenReturn(cred);
 
-        UserComputeResourcePreference pref = new UserComputeResourcePreference();
-        pref.setComputeResourceId("cr-001");
+        UserComputeResourcePreference pref = UserComputeResourcePreference.newBuilder().setComputeResourceId("cr-001").build();
 
         try (MockedStatic<SSHAccountManager> mock = mockStatic(SSHAccountManager.class)) {
             mock.when(() -> SSHAccountManager.setupSSHAccount("testGateway", "cr-001", "testUser", cred))
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentErrorRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentErrorRepositoryTest.java
index 40f6ff2e61..9796e42167 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentErrorRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentErrorRepositoryTest.java
@@ -25,12 +25,12 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import java.util.List;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.commons.ErrorModel;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.commons.proto.ErrorModel;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -54,38 +54,34 @@ public class ExperimentErrorRepositoryTest extends TestBase {
 
     @Test
     public void ExperimentRepositoryTest() throws RegistryException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         String gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
 
         String projectId = projectRepository.addProject(project, gatewayId);
 
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
         assertTrue(experimentId != null);
 
-        ErrorModel errorModel = new ErrorModel();
-        errorModel.setErrorId("error");
+        ErrorModel errorModel = ErrorModel.newBuilder().setErrorId("error").build();
 
         String experimentErrorId = experimentErrorRepository.addExperimentError(errorModel, experimentId);
         assertTrue(experimentErrorId != null);
-        assertTrue(experimentRepository.getExperiment(experimentId).getErrors().size() == 1);
+        assertTrue(experimentRepository.getExperiment(experimentId).getErrorsList().size() == 1);
 
-        errorModel.setActualErrorMessage("message");
+        errorModel = errorModel.toBuilder().setActualErrorMessage("message").build();
         experimentErrorRepository.updateExperimentError(errorModel, experimentId);
 
         List<ErrorModel> retrievedErrorList = experimentErrorRepository.getExperimentErrors(experimentId);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentInputRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentInputRepositoryTest.java
index d438cfceb8..73f92a3416 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentInputRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentInputRepositoryTest.java
@@ -26,13 +26,13 @@ import java.util.ArrayList;
 import java.util.List;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.application.io.DataType;
-import org.apache.airavata.model.application.io.InputDataObjectType;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.application.io.proto.DataType;
+import org.apache.airavata.model.application.io.proto.InputDataObjectType;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -56,33 +56,29 @@ public class ExperimentInputRepositoryTest extends TestBase {
 
     @Test
     public void ExperimentInputRepositoryTest() throws RegistryException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         String gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
 
         String projectId = projectRepository.addProject(project, gatewayId);
 
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
         assertTrue(experimentId != null);
 
-        InputDataObjectType inputDataObjectTypeExp = new InputDataObjectType();
-        inputDataObjectTypeExp.setName("inputE");
-        inputDataObjectTypeExp.setType(DataType.STRING);
+        InputDataObjectType inputDataObjectTypeExp = InputDataObjectType.newBuilder().setName("inputE").build();
+        inputDataObjectTypeExp = inputDataObjectTypeExp.toBuilder().setType(DataType.STRING).build();
 
         List<InputDataObjectType> inputDataObjectTypeExpList = new ArrayList<>();
         inputDataObjectTypeExpList.add(inputDataObjectTypeExp);
@@ -91,11 +87,11 @@ public class ExperimentInputRepositoryTest extends TestBase {
                 experimentId, experimentInputRepository.addExperimentInputs(inputDataObjectTypeExpList, experimentId));
         assertTrue(experimentRepository
                         .getExperiment(experimentId)
-                        .getExperimentInputs()
+                        .getExperimentInputsList()
                         .size()
                 == 1);
 
-        inputDataObjectTypeExp.setValue("iValueE");
+        inputDataObjectTypeExp = inputDataObjectTypeExp.toBuilder().setValue("iValueE").build();
         experimentInputRepository.updateExperimentInputs(inputDataObjectTypeExpList, experimentId);
 
         List<InputDataObjectType> retrievedExpInputsList = experimentInputRepository.getExperimentInputs(experimentId);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentOutputRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentOutputRepositoryTest.java
index 9da1463e23..ad0dd2e916 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentOutputRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentOutputRepositoryTest.java
@@ -26,13 +26,13 @@ import java.util.ArrayList;
 import java.util.List;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.application.io.DataType;
-import org.apache.airavata.model.application.io.OutputDataObjectType;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.application.io.proto.DataType;
+import org.apache.airavata.model.application.io.proto.OutputDataObjectType;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -56,33 +56,29 @@ public class ExperimentOutputRepositoryTest extends TestBase {
 
     @Test
     public void ExperimentInputRepositoryTest() throws RegistryException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         String gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
 
         String projectId = projectRepository.addProject(project, gatewayId);
 
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
         assertTrue(experimentId != null);
 
-        OutputDataObjectType outputDataObjectTypeExp = new OutputDataObjectType();
-        outputDataObjectTypeExp.setName("outputE");
-        outputDataObjectTypeExp.setType(DataType.STRING);
+        OutputDataObjectType outputDataObjectTypeExp = OutputDataObjectType.newBuilder().setName("outputE").build();
+        outputDataObjectTypeExp = outputDataObjectTypeExp.toBuilder().setType(DataType.STRING).build();
 
         List<OutputDataObjectType> outputDataObjectTypeExpList = new ArrayList<>();
         outputDataObjectTypeExpList.add(outputDataObjectTypeExp);
@@ -92,11 +88,11 @@ public class ExperimentOutputRepositoryTest extends TestBase {
                 experimentOutputRepository.addExperimentOutputs(outputDataObjectTypeExpList, experimentId));
         assertTrue(experimentRepository
                         .getExperiment(experimentId)
-                        .getExperimentOutputs()
+                        .getExperimentOutputsList()
                         .size()
                 == 1);
 
-        outputDataObjectTypeExp.setValue("oValueE");
+        outputDataObjectTypeExp = outputDataObjectTypeExp.toBuilder().setValue("oValueE").build();
         experimentOutputRepository.updateExperimentOutputs(outputDataObjectTypeExpList, experimentId);
 
         List<OutputDataObjectType> retrievedExpOutputList =
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentRepositoryTest.java
index 63cd57a0cf..71c62bc281 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentRepositoryTest.java
@@ -23,15 +23,15 @@ import static org.junit.jupiter.api.Assertions.*;
 
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.application.io.DataType;
-import org.apache.airavata.model.application.io.InputDataObjectType;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel;
-import org.apache.airavata.model.status.ExperimentState;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.application.io.proto.DataType;
+import org.apache.airavata.model.application.io.proto.InputDataObjectType;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.scheduling.proto.ComputationalResourceSchedulingModel;
+import org.apache.airavata.model.status.proto.ExperimentState;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -59,16 +59,14 @@ public class ExperimentRepositoryTest extends TestBase {
     public void setUp() throws Exception {
         super.setUp();
 
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
 
         projectId = projectRepository.addProject(project, gatewayId);
     }
@@ -76,33 +74,32 @@ public class ExperimentRepositoryTest extends TestBase {
     @Test
     public void ExperimentRepositoryTest() throws RegistryException {
 
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
-        experimentModel.setGatewayInstanceId("gateway-instance-id");
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
+        experimentModel = experimentModel.toBuilder().setGatewayInstanceId("gateway-instance-id").build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
         assertTrue(experimentId != null);
-        assertEquals(0, experimentRepository.getExperiment(experimentId).getEmailAddressesSize());
+        assertEquals(0, experimentRepository.getExperiment(experimentId).getEmailAddressesCount());
 
-        experimentModel.setDescription("description");
-        experimentModel.addToEmailAddresses("notify@example.com");
-        experimentModel.addToEmailAddresses("notify2@example.com");
+        experimentModel = experimentModel.toBuilder().setDescription("description").build();
+        experimentModel = experimentModel.toBuilder().addEmailAddresses("notify@example.com").build();
+        experimentModel = experimentModel.toBuilder().addEmailAddresses("notify2@example.com").build();
         experimentRepository.updateExperiment(experimentModel, experimentId);
 
         ExperimentModel retrievedExperimentModel = experimentRepository.getExperiment(experimentId);
         assertEquals("description", retrievedExperimentModel.getDescription());
         assertEquals(ExperimentType.SINGLE_APPLICATION, retrievedExperimentModel.getExperimentType());
         assertEquals("gateway-instance-id", retrievedExperimentModel.getGatewayInstanceId());
-        assertEquals(1, retrievedExperimentModel.getExperimentStatusSize());
+        assertEquals(1, retrievedExperimentModel.getExperimentStatusCount());
         assertEquals(
-                ExperimentState.CREATED,
+                ExperimentState.EXPERIMENT_STATE_CREATED,
                 retrievedExperimentModel.getExperimentStatus().get(0).getState());
-        assertEquals(2, retrievedExperimentModel.getEmailAddressesSize());
+        assertEquals(2, retrievedExperimentModel.getEmailAddressesCount());
         assertEquals(
                 "notify@example.com",
                 retrievedExperimentModel.getEmailAddresses().get(0));
@@ -110,28 +107,27 @@ public class ExperimentRepositoryTest extends TestBase {
                 "notify2@example.com",
                 retrievedExperimentModel.getEmailAddresses().get(1));
 
-        UserConfigurationDataModel userConfigurationDataModel = new UserConfigurationDataModel();
-        userConfigurationDataModel.setAiravataAutoSchedule(true);
-        userConfigurationDataModel.setOverrideManualScheduledParams(false);
+        UserConfigurationDataModel userConfigurationDataModel = UserConfigurationDataModel.newBuilder().setAiravataAutoSchedule(true).build();
+        userConfigurationDataModel = userConfigurationDataModel.toBuilder().setOverrideManualScheduledParams(false).build();
         ComputationalResourceSchedulingModel computationalResourceSchedulingModel =
                 new ComputationalResourceSchedulingModel();
-        computationalResourceSchedulingModel.setResourceHostId("resource-host-id");
-        computationalResourceSchedulingModel.setTotalCPUCount(12);
-        computationalResourceSchedulingModel.setNodeCount(13);
-        computationalResourceSchedulingModel.setNumberOfThreads(14);
-        computationalResourceSchedulingModel.setOverrideAllocationProjectNumber("override-project-num");
-        computationalResourceSchedulingModel.setOverrideLoginUserName("override-login-username");
-        computationalResourceSchedulingModel.setOverrideScratchLocation("override-scratch-location");
-        computationalResourceSchedulingModel.setQueueName("queue-name");
-        computationalResourceSchedulingModel.setStaticWorkingDir("static-working-dir");
-        computationalResourceSchedulingModel.setTotalPhysicalMemory(1333);
-        computationalResourceSchedulingModel.setWallTimeLimit(77);
-        userConfigurationDataModel.setComputationalResourceScheduling(computationalResourceSchedulingModel);
+        computationalResourceSchedulingModel = computationalResourceSchedulingModel.toBuilder().setResourceHostId("resource-host-id").build();
+        computationalResourceSchedulingModel = computationalResourceSchedulingModel.toBuilder().setTotalCpuCount(12).build();
+        computationalResourceSchedulingModel = computationalResourceSchedulingModel.toBuilder().setNodeCount(13).build();
+        computationalResourceSchedulingModel = computationalResourceSchedulingModel.toBuilder().setNumberOfThreads(14).build();
+        computationalResourceSchedulingModel = computationalResourceSchedulingModel.toBuilder().setOverrideAllocationProjectNumber("override-project-num").build();
+        computationalResourceSchedulingModel = computationalResourceSchedulingModel.toBuilder().setOverrideLoginUserName("override-login-username").build();
+        computationalResourceSchedulingModel = computationalResourceSchedulingModel.toBuilder().setOverrideScratchLocation("override-scratch-location").build();
+        computationalResourceSchedulingModel = computationalResourceSchedulingModel.toBuilder().setQueueName("queue-name").build();
+        computationalResourceSchedulingModel = computationalResourceSchedulingModel.toBuilder().setStaticWorkingDir("static-working-dir").build();
+        computationalResourceSchedulingModel = computationalResourceSchedulingModel.toBuilder().setTotalPhysicalMemory(1333).build();
+        computationalResourceSchedulingModel = computationalResourceSchedulingModel.toBuilder().setWallTimeLimit(77).build();
+        userConfigurationDataModel = userConfigurationDataModel.toBuilder().setComputationalResourceScheduling(computationalResourceSchedulingModel).build();
         assertEquals(
                 experimentId, experimentRepository.addUserConfigurationData(userConfigurationDataModel, experimentId));
 
-        userConfigurationDataModel.setInputStorageResourceId("storage2");
-        userConfigurationDataModel.setOutputStorageResourceId("storage2");
+        userConfigurationDataModel = userConfigurationDataModel.toBuilder().setInputStorageResourceId("storage2").build();
+        userConfigurationDataModel = userConfigurationDataModel.toBuilder().setOutputStorageResourceId("storage2").build();
         experimentRepository.updateUserConfigurationData(userConfigurationDataModel, experimentId);
 
         final UserConfigurationDataModel retrievedUserConfigurationDataModel =
@@ -142,7 +138,7 @@ public class ExperimentRepositoryTest extends TestBase {
                 retrievedUserConfigurationDataModel.getComputationalResourceScheduling();
         assertNotNull(retrievedComputationalResourceScheduling);
         assertEquals("resource-host-id", retrievedComputationalResourceScheduling.getResourceHostId());
-        assertEquals(12, retrievedComputationalResourceScheduling.getTotalCPUCount());
+        assertEquals(12, retrievedComputationalResourceScheduling.getTotalCpuCount());
         assertEquals(13, retrievedComputationalResourceScheduling.getNodeCount());
         assertEquals(14, retrievedComputationalResourceScheduling.getNumberOfThreads());
         assertEquals(
@@ -162,83 +158,81 @@ public class ExperimentRepositoryTest extends TestBase {
     @Test
     public void testExperimentInputs() throws RegistryException {
 
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
-        experimentModel.setGatewayInstanceId("gateway-instance-id");
-
-        InputDataObjectType input1 = new InputDataObjectType();
-        input1.setName("name1");
-        input1.setIsRequired(true);
-        input1.setType(DataType.STRING);
-        input1.setInputOrder(0);
-        input1.setApplicationArgument("-arg1");
-        input1.setDataStaged(true);
-        input1.setIsReadOnly(true);
-        input1.setMetaData("{\"foo\": 123}");
-        input1.setRequiredToAddedToCommandLine(true);
-        input1.setStandardInput(true);
-        input1.setStorageResourceId("storageResourceId");
-        input1.setUserFriendlyDescription("First argument");
-        input1.setValue("value1");
-        input1.setOverrideFilename("gaussian.com");
-        experimentModel.addToExperimentInputs(input1);
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
+        experimentModel = experimentModel.toBuilder().setGatewayInstanceId("gateway-instance-id").build();
+
+        InputDataObjectType input1 = InputDataObjectType.newBuilder().setName("name1").build();
+        input1 = input1.toBuilder().setIsRequired(true).build();
+        input1 = input1.toBuilder().setType(DataType.STRING).build();
+        input1 = input1.toBuilder().setInputOrder(0).build();
+        input1 = input1.toBuilder().setApplicationArgument("-arg1").build();
+        input1 = input1.toBuilder().setDataStaged(true).build();
+        input1 = input1.toBuilder().setIsReadOnly(true).build();
+        input1 = input1.toBuilder().setMetaData("{\"foo\": 123}").build();
+        input1 = input1.toBuilder().setRequiredToAddedToCommandLine(true).build();
+        input1 = input1.toBuilder().setStandardInput(true).build();
+        input1 = input1.toBuilder().setStorageResourceId("storageResourceId").build();
+        input1 = input1.toBuilder().setUserFriendlyDescription("First argument").build();
+        input1 = input1.toBuilder().setValue("value1").build();
+        input1 = input1.toBuilder().setOverrideFilename("gaussian.com").build();
+        experimentModel = experimentModel.toBuilder().addExperimentInputs(input1).build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
         assertTrue(experimentId != null);
 
         ExperimentModel retrievedExperimentModel = experimentRepository.getExperiment(experimentId);
-        assertEquals(1, retrievedExperimentModel.getExperimentInputsSize());
+        assertEquals(1, retrievedExperimentModel.getExperimentInputsCount());
         InputDataObjectType retrievedInput1 =
                 retrievedExperimentModel.getExperimentInputs().get(0);
         assertEquals("name1", retrievedInput1.getName());
-        assertTrue(retrievedInput1.isIsRequired());
+        assertTrue(retrievedInput1.getIsRequired());
         assertEquals(DataType.STRING, retrievedInput1.getType());
         assertEquals(0, retrievedInput1.getInputOrder());
         assertEquals("-arg1", retrievedInput1.getApplicationArgument());
-        assertTrue(retrievedInput1.isDataStaged());
-        assertTrue(retrievedInput1.isIsReadOnly());
+        assertTrue(retrievedInput1.getDataStaged());
+        assertTrue(retrievedInput1.getIsReadOnly());
         assertEquals("{\"foo\": 123}", retrievedInput1.getMetaData());
-        assertTrue(retrievedInput1.isRequiredToAddedToCommandLine());
-        assertTrue(retrievedInput1.isStandardInput());
+        assertTrue(retrievedInput1.getRequiredToAddedToCommandLine());
+        assertTrue(retrievedInput1.getStandardInput());
         assertEquals("storageResourceId", retrievedInput1.getStorageResourceId());
         assertEquals("First argument", retrievedInput1.getUserFriendlyDescription());
         assertEquals("value1", retrievedInput1.getValue());
         assertEquals("gaussian.com", retrievedInput1.getOverrideFilename());
 
         // Update values of the input
-        retrievedInput1.setIsRequired(false);
-        retrievedInput1.setType(DataType.URI);
-        retrievedInput1.setInputOrder(1);
-        retrievedInput1.setApplicationArgument("-arg1a");
-        retrievedInput1.setDataStaged(false);
-        retrievedInput1.setIsReadOnly(false);
-        retrievedInput1.setMetaData("{\"bar\": 456}");
-        retrievedInput1.setRequiredToAddedToCommandLine(false);
-        retrievedInput1.setStandardInput(false);
-        retrievedInput1.setStorageResourceId("storageResourceId2");
-        retrievedInput1.setUserFriendlyDescription("First argument~");
-        retrievedInput1.setValue("value1a");
-        retrievedInput1.setOverrideFilename("gaussian.com-updated");
+        retrievedInput1 = retrievedInput1.toBuilder().setIsRequired(false).build();
+        retrievedInput1 = retrievedInput1.toBuilder().setType(DataType.URI).build();
+        retrievedInput1 = retrievedInput1.toBuilder().setInputOrder(1).build();
+        retrievedInput1 = retrievedInput1.toBuilder().setApplicationArgument("-arg1a").build();
+        retrievedInput1 = retrievedInput1.toBuilder().setDataStaged(false).build();
+        retrievedInput1 = retrievedInput1.toBuilder().setIsReadOnly(false).build();
+        retrievedInput1 = retrievedInput1.toBuilder().setMetaData("{\"bar\": 456}").build();
+        retrievedInput1 = retrievedInput1.toBuilder().setRequiredToAddedToCommandLine(false).build();
+        retrievedInput1 = retrievedInput1.toBuilder().setStandardInput(false).build();
+        retrievedInput1 = retrievedInput1.toBuilder().setStorageResourceId("storageResourceId2").build();
+        retrievedInput1 = retrievedInput1.toBuilder().setUserFriendlyDescription("First argument~").build();
+        retrievedInput1 = retrievedInput1.toBuilder().setValue("value1a").build();
+        retrievedInput1 = retrievedInput1.toBuilder().setOverrideFilename("gaussian.com-updated").build();
 
         experimentRepository.updateExperiment(retrievedExperimentModel, experimentId);
 
         retrievedExperimentModel = experimentRepository.getExperiment(experimentId);
-        assertEquals(1, retrievedExperimentModel.getExperimentInputsSize());
+        assertEquals(1, retrievedExperimentModel.getExperimentInputsCount());
         retrievedInput1 = retrievedExperimentModel.getExperimentInputs().get(0);
-        assertFalse(retrievedInput1.isIsRequired());
+        assertFalse(retrievedInput1.getIsRequired());
         assertEquals(DataType.URI, retrievedInput1.getType());
         assertEquals(1, retrievedInput1.getInputOrder());
         assertEquals("-arg1a", retrievedInput1.getApplicationArgument());
-        assertFalse(retrievedInput1.isDataStaged());
-        assertFalse(retrievedInput1.isIsReadOnly());
+        assertFalse(retrievedInput1.getDataStaged());
+        assertFalse(retrievedInput1.getIsReadOnly());
         assertEquals("{\"bar\": 456}", retrievedInput1.getMetaData());
-        assertFalse(retrievedInput1.isRequiredToAddedToCommandLine());
-        assertFalse(retrievedInput1.isStandardInput());
+        assertFalse(retrievedInput1.getRequiredToAddedToCommandLine());
+        assertFalse(retrievedInput1.getStandardInput());
         assertEquals("storageResourceId2", retrievedInput1.getStorageResourceId());
         assertEquals("First argument~", retrievedInput1.getUserFriendlyDescription());
         assertEquals("value1a", retrievedInput1.getValue());
@@ -255,25 +249,24 @@ public class ExperimentRepositoryTest extends TestBase {
     public void testSlashesInExperimentName() throws RegistryException {
 
         // Forward slashes
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name/forward-slash//a");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name/forward-slash//a").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
         assertTrue(experimentId.startsWith("name_forward-slash__a"));
 
         // Backward slashes
         experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name\\backward-slash\\\\a");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
+        experimentModel = experimentModel.toBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name\\backward-slash\\\\a").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
 
         experimentId = experimentRepository.addExperiment(experimentModel);
         assertTrue(experimentId.startsWith("name_backward-slash__a"));
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentStatusRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentStatusRepositoryTest.java
index 0a5e8b3616..df076164ae 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentStatusRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentStatusRepositoryTest.java
@@ -24,13 +24,13 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.status.ExperimentState;
-import org.apache.airavata.model.status.ExperimentStatus;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.status.proto.ExperimentState;
+import org.apache.airavata.model.status.proto.ExperimentStatus;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -54,26 +54,23 @@ public class ExperimentStatusRepositoryTest extends TestBase {
 
     @Test
     public void ExperimentStatusRepositoryTest() throws RegistryException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         String gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
 
         String projectId = projectRepository.addProject(project, gatewayId);
 
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
         assertTrue(experimentId != null);
@@ -82,30 +79,30 @@ public class ExperimentStatusRepositoryTest extends TestBase {
                 1,
                 experimentRepository
                         .getExperiment(experimentId)
-                        .getExperimentStatus()
+                        .getExperimentStatusList()
                         .size());
 
-        ExperimentStatus experimentStatus = new ExperimentStatus(ExperimentState.VALIDATED);
+        ExperimentStatus experimentStatus = new ExperimentStatus(ExperimentState.EXPERIMENT_STATE_VALIDATED);
         String experimentStatusId = experimentStatusRepository.addExperimentStatus(experimentStatus, experimentId);
         assertTrue(experimentStatusId != null);
         assertEquals(
                 2,
                 experimentRepository
                         .getExperiment(experimentId)
-                        .getExperimentStatus()
+                        .getExperimentStatusList()
                         .size());
 
-        experimentStatus.setState(ExperimentState.EXECUTING);
+        experimentStatus = experimentStatus.toBuilder().setState(ExperimentState.EXPERIMENT_STATE_EXECUTING).build();
         experimentStatusRepository.updateExperimentStatus(experimentStatus, experimentId);
 
-        ExperimentStatus updatedExecutingStatus = new ExperimentStatus(ExperimentState.EXECUTING);
-        updatedExecutingStatus.setReason("updated reason");
-        updatedExecutingStatus.setTimeOfStateChange(experimentStatus.getTimeOfStateChange());
+        ExperimentStatus updatedExecutingStatus = new ExperimentStatus(ExperimentState.EXPERIMENT_STATE_EXECUTING);
+        updatedExecutingStatus = updatedExecutingStatus.toBuilder().setReason("updated reason").build();
+        updatedExecutingStatus = updatedExecutingStatus.toBuilder().setTimeOfStateChange(experimentStatus.getTimeOfStateChange()).build();
         String updatedExperimentStatusId =
                 experimentStatusRepository.updateExperimentStatus(updatedExecutingStatus, experimentId);
 
         ExperimentStatus retrievedExpStatus = experimentStatusRepository.getExperimentStatus(experimentId);
-        assertEquals(ExperimentState.EXECUTING, retrievedExpStatus.getState());
+        assertEquals(ExperimentState.EXPERIMENT_STATE_EXECUTING, retrievedExpStatus.getState());
         assertEquals("updated reason", updatedExecutingStatus.getReason());
 
         experimentRepository.removeExperiment(experimentId);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentSummaryRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentSummaryRepositoryTest.java
index 0f7e3bb00d..191d9c2b9d 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentSummaryRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ExperimentSummaryRepositoryTest.java
@@ -28,15 +28,15 @@ import org.apache.airavata.execution.util.DBConstants;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
 import org.apache.airavata.execution.util.cpi.ResultOrderType;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentStatistics;
-import org.apache.airavata.model.experiment.ExperimentSummaryModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.status.ExperimentState;
-import org.apache.airavata.model.status.ExperimentStatus;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentStatistics;
+import org.apache.airavata.model.experiment.proto.ExperimentSummaryModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.status.proto.ExperimentState;
+import org.apache.airavata.model.status.proto.ExperimentStatus;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
@@ -64,47 +64,42 @@ public class ExperimentSummaryRepositoryTest extends TestBase {
     @Disabled("EXPERIMENT_SUMMARY view/table not populated by addExperiment: needs trigger or manual sync")
     @Test
     public void ExperimentSummaryRepositoryTest() throws RegistryException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         String gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
         String projectId = projectRepository.addProject(project, gatewayId);
 
-        ExperimentModel experimentModelOne = new ExperimentModel();
-        experimentModelOne.setProjectId(projectId);
-        experimentModelOne.setGatewayId(gatewayId);
-        experimentModelOne.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModelOne.setUserName("userOne");
-        experimentModelOne.setExperimentName("nameOne");
-        experimentModelOne.setUserConfigurationData(new UserConfigurationDataModel());
-        experimentModelOne.setDescription("descriptionOne");
-        experimentModelOne.setExecutionId("executionIdOne");
-
-        ExperimentModel experimentModelTwo = new ExperimentModel();
-        experimentModelTwo.setProjectId(projectId);
-        experimentModelTwo.setGatewayId(gatewayId);
-        experimentModelTwo.setExperimentType(ExperimentType.WORKFLOW);
-        experimentModelTwo.setUserName("userTwo");
-        experimentModelTwo.setExperimentName("nameTwo");
-        experimentModelTwo.setUserConfigurationData(new UserConfigurationDataModel());
-        experimentModelTwo.setDescription("descriptionTwo");
-        experimentModelTwo.setExecutionId("executionIdTwo");
-
-        ExperimentModel experimentModelThree = new ExperimentModel();
-        experimentModelThree.setProjectId(projectId);
-        experimentModelThree.setGatewayId(gatewayId);
-        experimentModelThree.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModelThree.setUserName("userThree");
-        experimentModelThree.setExperimentName("nameThree");
-        experimentModelThree.setUserConfigurationData(new UserConfigurationDataModel());
-        experimentModelThree.setDescription("descriptionThree");
-        experimentModelThree.setExecutionId("executionIdThree");
+        ExperimentModel experimentModelOne = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModelOne = experimentModelOne.toBuilder().setGatewayId(gatewayId).build();
+        experimentModelOne = experimentModelOne.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModelOne = experimentModelOne.toBuilder().setUserName("userOne").build();
+        experimentModelOne = experimentModelOne.toBuilder().setExperimentName("nameOne").build();
+        experimentModelOne = experimentModelOne.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
+        experimentModelOne = experimentModelOne.toBuilder().setDescription("descriptionOne").build();
+        experimentModelOne = experimentModelOne.toBuilder().setExecutionId("executionIdOne").build();
+
+        ExperimentModel experimentModelTwo = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModelTwo = experimentModelTwo.toBuilder().setGatewayId(gatewayId).build();
+        experimentModelTwo = experimentModelTwo.toBuilder().setExperimentType(ExperimentType.WORKFLOW).build();
+        experimentModelTwo = experimentModelTwo.toBuilder().setUserName("userTwo").build();
+        experimentModelTwo = experimentModelTwo.toBuilder().setExperimentName("nameTwo").build();
+        experimentModelTwo = experimentModelTwo.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
+        experimentModelTwo = experimentModelTwo.toBuilder().setDescription("descriptionTwo").build();
+        experimentModelTwo = experimentModelTwo.toBuilder().setExecutionId("executionIdTwo").build();
+
+        ExperimentModel experimentModelThree = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModelThree = experimentModelThree.toBuilder().setGatewayId(gatewayId).build();
+        experimentModelThree = experimentModelThree.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModelThree = experimentModelThree.toBuilder().setUserName("userThree").build();
+        experimentModelThree = experimentModelThree.toBuilder().setExperimentName("nameThree").build();
+        experimentModelThree = experimentModelThree.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
+        experimentModelThree = experimentModelThree.toBuilder().setDescription("descriptionThree").build();
+        experimentModelThree = experimentModelThree.toBuilder().setExecutionId("executionIdThree").build();
 
         String experimentIdOne = experimentRepository.addExperiment(experimentModelOne);
         assertTrue(experimentIdOne != null);
@@ -122,15 +117,15 @@ public class ExperimentSummaryRepositoryTest extends TestBase {
         experimentModelThree = experimentRepository.getExperiment(experimentIdThree);
 
         Timestamp timeOne = Timestamp.valueOf("2010-01-01 09:00:00");
-        experimentModelOne.setCreationTime(timeOne.getTime());
+        experimentModelOne = experimentModelOne.toBuilder().setCreationTime(timeOne.getTime()).build();
         experimentRepository.updateExperiment(experimentModelOne, experimentIdOne);
 
         Timestamp timeTwo = Timestamp.valueOf("2018-01-01 09:00:00");
-        experimentModelTwo.setCreationTime(timeTwo.getTime());
+        experimentModelTwo = experimentModelTwo.toBuilder().setCreationTime(timeTwo.getTime()).build();
         experimentRepository.updateExperiment(experimentModelTwo, experimentIdTwo);
 
         Timestamp timeThree = Timestamp.valueOf("2020-01-01 09:00:00");
-        experimentModelThree.setCreationTime(timeThree.getTime());
+        experimentModelThree = experimentModelThree.toBuilder().setCreationTime(timeThree.getTime()).build();
         experimentRepository.updateExperiment(experimentModelThree, experimentIdThree);
 
         Map<String, String> filters = new HashMap<>();
@@ -245,15 +240,15 @@ public class ExperimentSummaryRepositoryTest extends TestBase {
         filters.remove(DBConstants.Experiment.USER_NAME);
         filters.remove(DBConstants.Experiment.EXECUTION_ID);
 
-        ExperimentStatus experimentStatusOne = new ExperimentStatus(ExperimentState.CREATED);
+        ExperimentStatus experimentStatusOne = new ExperimentStatus(ExperimentState.EXPERIMENT_STATE_CREATED);
         String statusIdOne = experimentStatusRepository.addExperimentStatus(experimentStatusOne, experimentIdOne);
         assertTrue(statusIdOne != null);
 
-        ExperimentStatus experimentStatusTwo = new ExperimentStatus(ExperimentState.EXECUTING);
+        ExperimentStatus experimentStatusTwo = new ExperimentStatus(ExperimentState.EXPERIMENT_STATE_EXECUTING);
         String statusIdTwo = experimentStatusRepository.addExperimentStatus(experimentStatusTwo, experimentIdTwo);
         assertTrue(statusIdTwo != null);
 
-        ExperimentStatus experimentStatusThree = new ExperimentStatus(ExperimentState.CANCELED);
+        ExperimentStatus experimentStatusThree = new ExperimentStatus(ExperimentState.EXPERIMENT_STATE_CANCELED);
         String statusIdThree = experimentStatusRepository.addExperimentStatus(experimentStatusThree, experimentIdThree);
         assertTrue(statusIdThree != null);
 
@@ -279,13 +274,13 @@ public class ExperimentSummaryRepositoryTest extends TestBase {
         // Only CREATED status
         filters = new HashMap<>();
         filters.put(DBConstants.Experiment.GATEWAY_ID, gatewayId);
-        filters.put(DBConstants.ExperimentSummary.EXPERIMENT_STATUS, ExperimentState.CREATED.name());
+        filters.put(DBConstants.ExperimentSummary.EXPERIMENT_STATUS, ExperimentState.EXPERIMENT_STATE_CREATED.name());
         experimentSummaryModelList = experimentSummaryRepository.searchAllAccessibleExperiments(
                 allExperimentIds, filters, -1, 0, DBConstants.Experiment.CREATION_TIME, ResultOrderType.ASC);
         assertEquals(1, experimentSummaryModelList.size(), "should return only one CREATED exp");
         assertEquals(experimentIdOne, experimentSummaryModelList.get(0).getExperimentId());
         // Only EXECUTING status
-        filters.put(DBConstants.ExperimentSummary.EXPERIMENT_STATUS, ExperimentState.EXECUTING.name());
+        filters.put(DBConstants.ExperimentSummary.EXPERIMENT_STATUS, ExperimentState.EXPERIMENT_STATE_EXECUTING.name());
         experimentSummaryModelList = experimentSummaryRepository.searchAllAccessibleExperiments(
                 allExperimentIds, filters, -1, 0, DBConstants.Experiment.CREATION_TIME, ResultOrderType.ASC);
         assertEquals(1, experimentSummaryModelList.size(), "should return only one EXECUTING exp");
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/GatewayRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/GatewayRepositoryTest.java
index 505526ca5a..5878f8918c 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/GatewayRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/GatewayRepositoryTest.java
@@ -26,8 +26,8 @@ import java.util.List;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.GatewayApprovalStatus;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.GatewayApprovalStatus;
 import org.junit.jupiter.api.Test;
 
 public class GatewayRepositoryTest extends TestBase {
@@ -46,18 +46,17 @@ public class GatewayRepositoryTest extends TestBase {
         List<Gateway> initialGatewayList = gatewayRepository.getAllGateways();
         assertEquals(0, initialGatewayList.size());
 
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId(testGatewayId);
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
-        gateway.setGatewayApprovalStatus(GatewayApprovalStatus.APPROVED);
-        gateway.setOauthClientId("pga");
-        gateway.setOauthClientSecret("9580cafa-7c1e-434f-bfe9-595f63907a43");
+        Gateway gateway = Gateway.newBuilder().setGatewayId(testGatewayId).build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
+        gateway = gateway.toBuilder().setGatewayApprovalStatus(GatewayApprovalStatus.APPROVED).build();
+        gateway = gateway.toBuilder().setOauthClientId("pga").build();
+        gateway = gateway.toBuilder().setOauthClientSecret("9580cafa-7c1e-434f-bfe9-595f63907a43").build();
 
         String gatewayId = gatewayRepository.addGateway(gateway);
         assertEquals(testGatewayId, gatewayId);
 
-        gateway.setGatewayAdminFirstName("ABC");
+        gateway = gateway.toBuilder().setGatewayAdminFirstName("ABC").build();
         gatewayRepository.updateGateway(testGatewayId, gateway);
 
         Gateway retrievedGateway = gatewayRepository.getGateway(gatewayId);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/JobRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/JobRepositoryTest.java
index 99a8b052eb..4bcecd9a11 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/JobRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/JobRepositoryTest.java
@@ -28,17 +28,17 @@ import org.apache.airavata.execution.model.JobPK;
 import org.apache.airavata.execution.util.DBConstants;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.job.JobModel;
-import org.apache.airavata.model.process.ProcessModel;
-import org.apache.airavata.model.status.JobState;
-import org.apache.airavata.model.status.JobStatus;
-import org.apache.airavata.model.task.TaskModel;
-import org.apache.airavata.model.task.TaskTypes;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.job.proto.JobModel;
+import org.apache.airavata.model.process.proto.ProcessModel;
+import org.apache.airavata.model.status.proto.JobState;
+import org.apache.airavata.model.status.proto.JobStatus;
+import org.apache.airavata.model.task.proto.TaskModel;
+import org.apache.airavata.model.task.proto.TaskTypes;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -66,65 +66,60 @@ public class JobRepositoryTest extends TestBase {
 
     @Test
     public void JobRepositoryTest() throws RegistryException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         String gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
 
         String projectId = projectRepository.addProject(project, gatewayId);
 
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
 
         ProcessModel processModel = new ProcessModel(null, experimentId);
         String processId = processRepository.addProcess(processModel, experimentId);
 
-        TaskModel taskModel = new TaskModel();
-        taskModel.setTaskType(TaskTypes.JOB_SUBMISSION);
-        taskModel.setLastUpdateTime(System.currentTimeMillis());
-        taskModel.setParentProcessId(processId);
+        TaskModel taskModel = TaskModel.newBuilder().setTaskType(TaskTypes.JOB_SUBMISSION).build();
+        taskModel = taskModel.toBuilder().setLastUpdateTime(System.currentTimeMillis()).build();
+        taskModel = taskModel.toBuilder().setParentProcessId(processId).build();
 
         String taskId = taskRepository.addTask(taskModel, processId);
         assertTrue(taskId != null);
 
-        taskModel.setTaskType(TaskTypes.MONITORING);
-        taskModel.setLastUpdateTime(System.currentTimeMillis());
+        taskModel = taskModel.toBuilder().setTaskType(TaskTypes.MONITORING).build();
+        taskModel = taskModel.toBuilder().setLastUpdateTime(System.currentTimeMillis()).build();
         taskRepository.updateTask(taskModel, taskId);
 
-        JobModel jobModel = new JobModel();
-        jobModel.setJobId("job");
-        jobModel.setTaskId(taskId);
-        jobModel.setJobDescription("jobDescription");
+        JobModel jobModel = JobModel.newBuilder().setJobId("job").build();
+        jobModel = jobModel.toBuilder().setTaskId(taskId).build();
+        jobModel = jobModel.toBuilder().setJobDescription("jobDescription").build();
 
         JobStatus jobStatus = new JobStatus(JobState.SUBMITTED);
-        jobModel.addToJobStatuses(jobStatus);
+        jobModel = jobModel.toBuilder().addJobStatuses(jobStatus).build();
 
         String jobId = jobRepository.addJob(jobModel, processId);
         assertTrue(jobId != null);
-        assertTrue(taskRepository.getTask(taskId).getJobs().size() == 1);
+        assertTrue(taskRepository.getTask(taskId).getJobsList().size() == 1);
 
         JobPK jobPK = new JobPK();
         jobPK.setJobId(jobId);
         jobPK.setTaskId(taskId);
 
-        jobModel.setJobName("jobName");
+        jobModel = jobModel.toBuilder().setJobName("jobName").build();
         jobRepository.updateJob(jobModel, jobPK);
         final JobModel retrievedJob = jobRepository.getJob(jobPK);
         assertEquals("jobName", retrievedJob.getJobName());
-        assertEquals(1, retrievedJob.getJobStatusesSize());
+        assertEquals(1, retrievedJob.getJobStatusesCount());
         assertEquals(JobState.SUBMITTED, retrievedJob.getJobStatuses().get(0).getJobState());
 
         List<String> jobIdList = jobRepository.getJobIds(DBConstants.Job.TASK_ID, taskId);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/JobStatusRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/JobStatusRepositoryTest.java
index 1c2fa6402a..6c3346753d 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/JobStatusRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/JobStatusRepositoryTest.java
@@ -25,17 +25,17 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import org.apache.airavata.execution.model.JobPK;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.job.JobModel;
-import org.apache.airavata.model.process.ProcessModel;
-import org.apache.airavata.model.status.JobState;
-import org.apache.airavata.model.status.JobStatus;
-import org.apache.airavata.model.task.TaskModel;
-import org.apache.airavata.model.task.TaskTypes;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.job.proto.JobModel;
+import org.apache.airavata.model.process.proto.ProcessModel;
+import org.apache.airavata.model.status.proto.JobState;
+import org.apache.airavata.model.status.proto.JobStatus;
+import org.apache.airavata.model.task.proto.TaskModel;
+import org.apache.airavata.model.task.proto.TaskTypes;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -65,52 +65,47 @@ public class JobStatusRepositoryTest extends TestBase {
 
     @Test
     public void JobStatusRepositoryTest() throws RegistryException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         String gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
 
         String projectId = projectRepository.addProject(project, gatewayId);
 
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
 
         ProcessModel processModel = new ProcessModel(null, experimentId);
         String processId = processRepository.addProcess(processModel, experimentId);
 
-        TaskModel taskModel = new TaskModel();
-        taskModel.setTaskType(TaskTypes.JOB_SUBMISSION);
-        taskModel.setLastUpdateTime(System.currentTimeMillis());
-        taskModel.setParentProcessId(processId);
+        TaskModel taskModel = TaskModel.newBuilder().setTaskType(TaskTypes.JOB_SUBMISSION).build();
+        taskModel = taskModel.toBuilder().setLastUpdateTime(System.currentTimeMillis()).build();
+        taskModel = taskModel.toBuilder().setParentProcessId(processId).build();
 
         String taskId = taskRepository.addTask(taskModel, processId);
         assertTrue(taskId != null);
 
-        taskModel.setTaskType(TaskTypes.MONITORING);
-        taskModel.setLastUpdateTime(System.currentTimeMillis());
+        taskModel = taskModel.toBuilder().setTaskType(TaskTypes.MONITORING).build();
+        taskModel = taskModel.toBuilder().setLastUpdateTime(System.currentTimeMillis()).build();
         taskRepository.updateTask(taskModel, taskId);
 
         JobPK jobPK = new JobPK();
         jobPK.setJobId("job");
         jobPK.setTaskId(taskId);
 
-        JobModel jobModel = new JobModel();
-        jobModel.setJobId(jobPK.getJobId());
-        jobModel.setTaskId(jobPK.getTaskId());
-        jobModel.setJobDescription("jobDescription");
+        JobModel jobModel = JobModel.newBuilder().setJobId(jobPK.getJobId()).build();
+        jobModel = jobModel.toBuilder().setTaskId(jobPK.getTaskId()).build();
+        jobModel = jobModel.toBuilder().setJobDescription("jobDescription").build();
 
         String jobId = jobRepository.addJob(jobModel, processId);
         assertTrue(jobId != null);
@@ -118,9 +113,9 @@ public class JobStatusRepositoryTest extends TestBase {
         JobStatus jobStatus = new JobStatus(JobState.QUEUED);
         String jobStatusId = jobStatusRepository.addJobStatus(jobStatus, jobPK);
         assertTrue(jobStatusId != null);
-        assertTrue(jobRepository.getJob(jobPK).getJobStatuses().size() == 1);
+        assertTrue(jobRepository.getJob(jobPK).getJobStatusesList().size() == 1);
 
-        jobStatus.setJobState(JobState.ACTIVE);
+        jobStatus = jobStatus.toBuilder().setJobState(JobState.ACTIVE).build();
         jobStatusRepository.updateJobStatus(jobStatus, jobPK);
 
         JobStatus retrievedJobStatus = jobStatusRepository.getJobStatus(jobPK);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/NotificationRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/NotificationRepositoryTest.java
index cfaeaada11..a96b19caa5 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/NotificationRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/NotificationRepositoryTest.java
@@ -24,8 +24,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.workspace.Notification;
-import org.apache.airavata.model.workspace.NotificationPriority;
+import org.apache.airavata.model.workspace.proto.Notification;
+import org.apache.airavata.model.workspace.proto.NotificationPriority;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -44,16 +44,15 @@ public class NotificationRepositoryTest extends TestBase {
 
     @Test
     public void NotificationRepositoryTest() throws RegistryException {
-        Notification notification = new Notification();
-        notification.setNotificationId("notificationId");
-        notification.setGatewayId(testGateway);
-        notification.setTitle("notificationTitle");
-        notification.setNotificationMessage("notificationMessage");
+        Notification notification = Notification.newBuilder().setNotificationId("notificationId").build();
+        notification = notification.toBuilder().setGatewayId(testGateway).build();
+        notification = notification.toBuilder().setTitle("notificationTitle").build();
+        notification = notification.toBuilder().setNotificationMessage("notificationMessage").build();
 
         String notificationId = notificationRepository.createNotification(notification);
         assertEquals(notification.getNotificationId(), notificationId);
 
-        notification.setPriority(NotificationPriority.NORMAL);
+        notification = notification.toBuilder().setPriority(NotificationPriority.NORMAL).build();
         notificationRepository.updateNotification(notification);
 
         Notification retrievedNotification = notificationRepository.getNotification(notificationId);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessErrorRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessErrorRepositoryTest.java
index d874824eec..dc26fd6f4f 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessErrorRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessErrorRepositoryTest.java
@@ -25,13 +25,13 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import java.util.List;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.commons.ErrorModel;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.process.ProcessModel;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.commons.proto.ErrorModel;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.process.proto.ProcessModel;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -57,26 +57,23 @@ public class ProcessErrorRepositoryTest extends TestBase {
 
     @Test
     public void ProcessErrorRepositoryTest() throws RegistryException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         String gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
 
         String projectId = projectRepository.addProject(project, gatewayId);
 
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
 
@@ -84,14 +81,13 @@ public class ProcessErrorRepositoryTest extends TestBase {
         String processId = processRepository.addProcess(processModel, experimentId);
         assertTrue(processId != null);
 
-        ErrorModel errorModel = new ErrorModel();
-        errorModel.setErrorId("error");
+        ErrorModel errorModel = ErrorModel.newBuilder().setErrorId("error").build();
 
         String processErrorId = processErrorRepository.addProcessError(errorModel, processId);
         assertTrue(processErrorId != null);
         assertTrue(processRepository.getProcess(processId).getProcessErrors().size() == 1);
 
-        errorModel.setActualErrorMessage("message");
+        errorModel = errorModel.toBuilder().setActualErrorMessage("message").build();
         processErrorRepository.updateProcessError(errorModel, processId);
 
         List<ErrorModel> retrievedErrorList = processErrorRepository.getProcessError(processId);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessInputRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessInputRepositoryTest.java
index ea8deb43bd..6f254d27f8 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessInputRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessInputRepositoryTest.java
@@ -26,14 +26,14 @@ import java.util.ArrayList;
 import java.util.List;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.application.io.DataType;
-import org.apache.airavata.model.application.io.InputDataObjectType;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.process.ProcessModel;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.application.io.proto.DataType;
+import org.apache.airavata.model.application.io.proto.InputDataObjectType;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.process.proto.ProcessModel;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -59,26 +59,23 @@ public class ProcessInputRepositoryTest extends TestBase {
 
     @Test
     public void ProcessInputRepositoryTest() throws RegistryException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         String gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
 
         String projectId = projectRepository.addProject(project, gatewayId);
 
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
 
@@ -86,17 +83,16 @@ public class ProcessInputRepositoryTest extends TestBase {
         String processId = processRepository.addProcess(processModel, experimentId);
         assertTrue(processId != null);
 
-        InputDataObjectType inputDataObjectProType = new InputDataObjectType();
-        inputDataObjectProType.setName("inputP");
-        inputDataObjectProType.setType(DataType.STDOUT);
+        InputDataObjectType inputDataObjectProType = InputDataObjectType.newBuilder().setName("inputP").build();
+        inputDataObjectProType = inputDataObjectProType.toBuilder().setType(DataType.STDOUT).build();
 
         List<InputDataObjectType> inputDataObjectTypeProList = new ArrayList<>();
         inputDataObjectTypeProList.add(inputDataObjectProType);
 
         assertEquals(processId, processInputRepository.addProcessInputs(inputDataObjectTypeProList, processId));
-        assertTrue(processRepository.getProcess(processId).getProcessInputs().size() == 1);
+        assertTrue(processRepository.getProcess(processId).getProcessInputsList().size() == 1);
 
-        inputDataObjectProType.setValue("iValueP");
+        inputDataObjectProType = inputDataObjectProType.toBuilder().setValue("iValueP").build();
         processInputRepository.updateProcessInputs(inputDataObjectTypeProList, processId);
 
         List<InputDataObjectType> retrievedProInputsList = processInputRepository.getProcessInputs(processId);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessOutputRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessOutputRepositoryTest.java
index a02a99ddc6..eb929603e5 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessOutputRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessOutputRepositoryTest.java
@@ -26,14 +26,14 @@ import java.util.ArrayList;
 import java.util.List;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.application.io.DataType;
-import org.apache.airavata.model.application.io.OutputDataObjectType;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.process.ProcessModel;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.application.io.proto.DataType;
+import org.apache.airavata.model.application.io.proto.OutputDataObjectType;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.process.proto.ProcessModel;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -59,26 +59,23 @@ public class ProcessOutputRepositoryTest extends TestBase {
 
     @Test
     public void ProcessOutputRepositoryTest() throws RegistryException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         String gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
 
         String projectId = projectRepository.addProject(project, gatewayId);
 
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
 
@@ -86,17 +83,16 @@ public class ProcessOutputRepositoryTest extends TestBase {
         String processId = processRepository.addProcess(processModel, experimentId);
         assertTrue(processId != null);
 
-        OutputDataObjectType outputDataObjectProType = new OutputDataObjectType();
-        outputDataObjectProType.setName("outputP");
-        outputDataObjectProType.setType(DataType.STDERR);
+        OutputDataObjectType outputDataObjectProType = OutputDataObjectType.newBuilder().setName("outputP").build();
+        outputDataObjectProType = outputDataObjectProType.toBuilder().setType(DataType.STDERR).build();
 
         List<OutputDataObjectType> outputDataObjectTypeProList = new ArrayList<>();
         outputDataObjectTypeProList.add(outputDataObjectProType);
 
         assertEquals(processId, processOutputRepository.addProcessOutputs(outputDataObjectTypeProList, processId));
-        assertTrue(processRepository.getProcess(processId).getProcessOutputs().size() == 1);
+        assertTrue(processRepository.getProcess(processId).getProcessOutputsList().size() == 1);
 
-        outputDataObjectProType.setValue("oValueP");
+        outputDataObjectProType = outputDataObjectProType.toBuilder().setValue("oValueP").build();
         processOutputRepository.updateProcessOutputs(outputDataObjectTypeProList, processId);
 
         List<OutputDataObjectType> retrievedProOutputList = processOutputRepository.getProcessOutputs(processId);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessRepositoryTest.java
index f27e370217..4ab59d3d3e 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessRepositoryTest.java
@@ -25,17 +25,17 @@ import java.util.List;
 import org.apache.airavata.execution.util.DBConstants;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.job.JobModel;
-import org.apache.airavata.model.process.ProcessModel;
-import org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel;
-import org.apache.airavata.model.status.*;
-import org.apache.airavata.model.task.TaskModel;
-import org.apache.airavata.model.task.TaskTypes;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.job.proto.JobModel;
+import org.apache.airavata.model.process.proto.ProcessModel;
+import org.apache.airavata.model.scheduling.proto.ComputationalResourceSchedulingModel;
+import org.apache.airavata.model.status.proto.*;
+import org.apache.airavata.model.task.proto.TaskModel;
+import org.apache.airavata.model.task.proto.TaskTypes;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -59,77 +59,71 @@ public class ProcessRepositoryTest extends TestBase {
 
     @Test
     public void ProcessRepositoryTest() throws RegistryException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         String gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
 
         String projectId = projectRepository.addProject(project, gatewayId);
 
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
 
         ProcessModel processModel = new ProcessModel(null, experimentId);
 
-        TaskModel task = new TaskModel();
-        task.setTaskId("task-id");
-        task.setTaskType(TaskTypes.ENV_SETUP);
-        task.setLastUpdateTime(System.currentTimeMillis());
-        processModel.addToTasks(task);
+        TaskModel task = TaskModel.newBuilder().setTaskId("task-id").build();
+        task = task.toBuilder().setTaskType(TaskTypes.ENV_SETUP).build();
+        task = task.toBuilder().setLastUpdateTime(System.currentTimeMillis()).build();
+        processModel = processModel.toBuilder().addTasks(task).build();
 
-        TaskStatus taskStatus = new TaskStatus(TaskState.CREATED);
+        TaskStatus taskStatus = new TaskStatus(TaskState.TASK_STATE_CREATED);
         taskStatus.setStatusId("task-status-id");
-        task.addToTaskStatuses(taskStatus);
+        task = task.toBuilder().addTaskStatuses(taskStatus).build();
 
         String processId = processRepository.addProcess(processModel, experimentId);
         assertTrue(processId != null);
         assertTrue(
-                experimentRepository.getExperiment(experimentId).getProcesses().size() == 1);
-
-        processModel.setProcessDetail("detail");
-        processModel.setUseUserCRPref(true);
-        processModel.addToEmailAddresses("notify@example.com");
-        processModel.addToEmailAddresses("notify1@example.com");
-
-        TaskModel jobSubmissionTask = new TaskModel();
-        jobSubmissionTask.setTaskType(TaskTypes.JOB_SUBMISSION);
-        jobSubmissionTask.setLastUpdateTime(System.currentTimeMillis());
-        jobSubmissionTask.setTaskId("job-task-id");
-        JobModel job = new JobModel();
-        job.setProcessId(processId);
-        job.setJobId("job-id");
-        job.setJobDescription("job-description");
+                experimentRepository.getExperiment(experimentId).getProcessesList().size() == 1);
+
+        processModel = processModel.toBuilder().setProcessDetail("detail").build();
+        processModel = processModel.toBuilder().setUseUserCRPref(true).build();
+        processModel = processModel.toBuilder().addEmailAddresses("notify@example.com").build();
+        processModel = processModel.toBuilder().addEmailAddresses("notify1@example.com").build();
+
+        TaskModel jobSubmissionTask = TaskModel.newBuilder().setTaskType(TaskTypes.JOB_SUBMISSION).build();
+        jobSubmissionTask = jobSubmissionTask.toBuilder().setLastUpdateTime(System.currentTimeMillis()).build();
+        jobSubmissionTask = jobSubmissionTask.toBuilder().setTaskId("job-task-id").build();
+        JobModel job = JobModel.newBuilder().setProcessId(processId).build();
+        job = job.toBuilder().setJobId("job-id").build();
+        job = job.toBuilder().setJobDescription("job-description").build();
         JobStatus jobStatus = new JobStatus(JobState.SUBMITTED);
         jobStatus.setStatusId("submitted-job-status-id");
-        job.addToJobStatuses(jobStatus);
-        jobSubmissionTask.addToJobs(job);
-        processModel.addToTasks(jobSubmissionTask);
+        job = job.toBuilder().addJobStatuses(jobStatus).build();
+        jobSubmissionTask = jobSubmissionTask.toBuilder().addJobs(job).build();
+        processModel = processModel.toBuilder().addTasks(jobSubmissionTask).build();
         processRepository.updateProcess(processModel, processId);
 
         ProcessModel retrievedProcess = processRepository.getProcess(processId);
         assertEquals(experimentId, retrievedProcess.getExperimentId());
         assertEquals("detail", retrievedProcess.getProcessDetail());
         assertTrue(retrievedProcess.isUseUserCRPref());
-        assertEquals(1, retrievedProcess.getProcessStatusesSize(), "Added process should automatically have 1 status");
+        assertEquals(1, retrievedProcess.getProcessStatusesCount(), "Added process should automatically have 1 status");
         assertEquals(
-                ProcessState.CREATED,
+                ProcessState.PROCESS_STATE_CREATED,
                 retrievedProcess.getProcessStatuses().get(0).getState(),
                 "Added process should automatically have 1 status that is CREATED");
-        assertEquals(2, retrievedProcess.getTasksSize());
-        assertEquals(2, retrievedProcess.getEmailAddressesSize());
+        assertEquals(2, retrievedProcess.getTasksCount());
+        assertEquals(2, retrievedProcess.getEmailAddressesCount());
         assertEquals("notify@example.com", retrievedProcess.getEmailAddresses().get(0));
         assertEquals("notify1@example.com", retrievedProcess.getEmailAddresses().get(1));
 
@@ -139,11 +133,11 @@ public class ProcessRepositoryTest extends TestBase {
                 processId,
                 processRepository.addProcessResourceSchedule(computationalResourceSchedulingModel, processId));
 
-        computationalResourceSchedulingModel.setQueueName("queue");
-        computationalResourceSchedulingModel.setStaticWorkingDir("staticWorkingDir");
-        computationalResourceSchedulingModel.setOverrideAllocationProjectNumber("overrideAllocationProjectNumber");
-        computationalResourceSchedulingModel.setOverrideLoginUserName("overrideLoginUserName");
-        computationalResourceSchedulingModel.setOverrideScratchLocation("overrideScratchLocation");
+        computationalResourceSchedulingModel = computationalResourceSchedulingModel.toBuilder().setQueueName("queue").build();
+        computationalResourceSchedulingModel = computationalResourceSchedulingModel.toBuilder().setStaticWorkingDir("staticWorkingDir").build();
+        computationalResourceSchedulingModel = computationalResourceSchedulingModel.toBuilder().setOverrideAllocationProjectNumber("overrideAllocationProjectNumber").build();
+        computationalResourceSchedulingModel = computationalResourceSchedulingModel.toBuilder().setOverrideLoginUserName("overrideLoginUserName").build();
+        computationalResourceSchedulingModel = computationalResourceSchedulingModel.toBuilder().setOverrideScratchLocation("overrideScratchLocation").build();
         processRepository.updateProcessResourceSchedule(computationalResourceSchedulingModel, processId);
         ComputationalResourceSchedulingModel updatedComputationalResourceSchedulingModel =
                 processRepository.getProcessResourceSchedule(processId);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessStatusRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessStatusRepositoryTest.java
index 17d46f05c7..e3d0c7819d 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessStatusRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProcessStatusRepositoryTest.java
@@ -25,14 +25,14 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.process.ProcessModel;
-import org.apache.airavata.model.status.ProcessState;
-import org.apache.airavata.model.status.ProcessStatus;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.process.proto.ProcessModel;
+import org.apache.airavata.model.status.proto.ProcessState;
+import org.apache.airavata.model.status.proto.ProcessStatus;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -58,26 +58,23 @@ public class ProcessStatusRepositoryTest extends TestBase {
 
     @Test
     public void ProcessStatusRepositoryTest() throws RegistryException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         String gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
 
         String projectId = projectRepository.addProject(project, gatewayId);
 
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
 
@@ -86,33 +83,33 @@ public class ProcessStatusRepositoryTest extends TestBase {
         assertTrue(processId != null);
 
         // addProcess automatically adds the CREATED ProcessStatus
-        assertTrue(processRepository.getProcess(processId).getProcessStatuses().size() == 1);
+        assertTrue(processRepository.getProcess(processId).getProcessStatusesList().size() == 1);
         ProcessStatus processStatus =
                 processRepository.getProcess(processId).getProcessStatuses().get(0);
-        assertEquals(ProcessState.CREATED, processStatus.getState());
+        assertEquals(ProcessState.PROCESS_STATE_CREATED, processStatus.getState());
 
-        processStatus.setState(ProcessState.EXECUTING);
+        processStatus = processStatus.toBuilder().setState(ProcessState.PROCESS_STATE_EXECUTING).build();
         processStatusRepository.updateProcessStatus(processStatus, processId);
 
         ProcessStatus retrievedStatus = processStatusRepository.getProcessStatus(processId);
-        assertEquals(ProcessState.EXECUTING, retrievedStatus.getState());
+        assertEquals(ProcessState.PROCESS_STATE_EXECUTING, retrievedStatus.getState());
 
-        ProcessStatus updatedStatus = new ProcessStatus(ProcessState.MONITORING);
+        ProcessStatus updatedStatus = new ProcessStatus(ProcessState.PROCESS_STATE_MONITORING);
         // Verify that ProcessStatus without id can be added with updateProcessStatus
         String updatedStatusId = processStatusRepository.updateProcessStatus(updatedStatus, processId);
         retrievedStatus = processStatusRepository.getProcessStatus(processId);
-        assertEquals(ProcessState.MONITORING, retrievedStatus.getState());
+        assertEquals(ProcessState.PROCESS_STATE_MONITORING, retrievedStatus.getState());
         assertEquals(updatedStatusId, retrievedStatus.getStatusId());
         assertNull(retrievedStatus.getReason());
 
         // Verify that updating status with same ProcessState as most recent ProcessStatus will update the most recent
         // ProcessStatus
-        ProcessStatus updatedStatusWithReason = new ProcessStatus(ProcessState.MONITORING);
-        updatedStatusWithReason.setReason("test-reason");
+        ProcessStatus updatedStatusWithReason = new ProcessStatus(ProcessState.PROCESS_STATE_MONITORING);
+        updatedStatusWithReason = updatedStatusWithReason.toBuilder().setReason("test-reason").build();
         String updateStatusWithReasonId =
                 processStatusRepository.updateProcessStatus(updatedStatusWithReason, processId);
         retrievedStatus = processStatusRepository.getProcessStatus(processId);
-        assertEquals(ProcessState.MONITORING, retrievedStatus.getState());
+        assertEquals(ProcessState.PROCESS_STATE_MONITORING, retrievedStatus.getState());
         assertEquals(updateStatusWithReasonId, retrievedStatus.getStatusId());
         assertEquals(updatedStatusId, updateStatusWithReasonId);
         assertEquals("test-reason", retrievedStatus.getReason());
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProjectRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProjectRepositoryTest.java
index 6d5d98b93f..62f2017a04 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProjectRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/ProjectRepositoryTest.java
@@ -28,8 +28,8 @@ import java.util.Map;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.Constants;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -50,16 +50,14 @@ public class ProjectRepositoryTest extends TestBase {
 
     @Test
     public void ProjectRepositoryTest() throws RegistryException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId(testGateway);
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId(testGateway).build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         String gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
 
         String projectId = projectRepository.addProject(project, gatewayId);
         assertTrue(projectId != null);
@@ -68,8 +66,8 @@ public class ProjectRepositoryTest extends TestBase {
         // Simulate clients that may or may not set projectId but will pass
         // projectId as an argument to updateProject
         updatedProject.unsetProjectID();
-        updatedProject.setName("updated projectName");
-        updatedProject.setDescription("projectDescription");
+        updatedProject = updatedProject.toBuilder().setName("updated projectName").build();
+        updatedProject = updatedProject.toBuilder().setDescription("projectDescription").build();
         projectRepository.updateProject(updatedProject, projectId);
 
         Project retrievedProject = projectRepository.getProject(projectId);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/QueueStatusRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/QueueStatusRepositoryTest.java
index 12c76922fe..d3f0a91bf7 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/QueueStatusRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/QueueStatusRepositoryTest.java
@@ -26,7 +26,7 @@ import java.util.Arrays;
 import java.util.List;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.status.QueueStatusModel;
+import org.apache.airavata.model.status.proto.QueueStatusModel;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -43,13 +43,12 @@ public class QueueStatusRepositoryTest extends TestBase {
 
     @Test
     public void QueueStatusRepositoryTest() throws RegistryException {
-        QueueStatusModel queueStatusModel = new QueueStatusModel();
-        queueStatusModel.setHostName("host");
-        queueStatusModel.setQueueName("queue");
-        queueStatusModel.setQueueUp(true);
-        queueStatusModel.setRunningJobs(1);
-        queueStatusModel.setQueuedJobs(2);
-        queueStatusModel.setTime(System.currentTimeMillis());
+        QueueStatusModel queueStatusModel = QueueStatusModel.newBuilder().setHostName("host").build();
+        queueStatusModel = queueStatusModel.toBuilder().setQueueName("queue").build();
+        queueStatusModel = queueStatusModel.toBuilder().setQueueUp(true).build();
+        queueStatusModel = queueStatusModel.toBuilder().setRunningJobs(1).build();
+        queueStatusModel = queueStatusModel.toBuilder().setQueuedJobs(2).build();
+        queueStatusModel = queueStatusModel.toBuilder().setTime(System.currentTimeMillis()).build();
 
         boolean returnValue = queueStatusRepository.createQueueStatuses(Arrays.asList(queueStatusModel));
         assertTrue(returnValue);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/TaskErrorRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/TaskErrorRepositoryTest.java
index 81f5de0e60..d46fdd7cb1 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/TaskErrorRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/TaskErrorRepositoryTest.java
@@ -25,15 +25,15 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import java.util.List;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.commons.ErrorModel;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.process.ProcessModel;
-import org.apache.airavata.model.task.TaskModel;
-import org.apache.airavata.model.task.TaskTypes;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.commons.proto.ErrorModel;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.process.proto.ProcessModel;
+import org.apache.airavata.model.task.proto.TaskModel;
+import org.apache.airavata.model.task.proto.TaskTypes;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -61,48 +61,43 @@ public class TaskErrorRepositoryTest extends TestBase {
 
     @Test
     public void TaskErrorRepositoryTest() throws RegistryException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         String gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
 
         String projectId = projectRepository.addProject(project, gatewayId);
 
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
 
         ProcessModel processModel = new ProcessModel(null, experimentId);
         String processId = processRepository.addProcess(processModel, experimentId);
 
-        TaskModel taskModel = new TaskModel();
-        taskModel.setTaskType(TaskTypes.JOB_SUBMISSION);
-        taskModel.setLastUpdateTime(System.currentTimeMillis());
-        taskModel.setParentProcessId(processId);
+        TaskModel taskModel = TaskModel.newBuilder().setTaskType(TaskTypes.JOB_SUBMISSION).build();
+        taskModel = taskModel.toBuilder().setLastUpdateTime(System.currentTimeMillis()).build();
+        taskModel = taskModel.toBuilder().setParentProcessId(processId).build();
 
         String taskId = taskRepository.addTask(taskModel, processId);
         assertTrue(taskId != null);
 
-        ErrorModel errorModel = new ErrorModel();
-        errorModel.setErrorId("error");
+        ErrorModel errorModel = ErrorModel.newBuilder().setErrorId("error").build();
 
         String taskErrorId = taskErrorRepository.addTaskError(errorModel, taskId);
         assertTrue(taskErrorId != null);
         assertTrue(taskRepository.getTask(taskId).getTaskErrors().size() == 1);
 
-        errorModel.setActualErrorMessage("message");
+        errorModel = errorModel.toBuilder().setActualErrorMessage("message").build();
         taskErrorRepository.updateTaskError(errorModel, taskId);
 
         List<ErrorModel> retrievedErrorList = taskErrorRepository.getTaskError(taskId);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/TaskRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/TaskRepositoryTest.java
index 08c5a868f0..94ab5b42c3 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/TaskRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/TaskRepositoryTest.java
@@ -27,16 +27,16 @@ import org.apache.airavata.common.util.AiravataUtils;
 import org.apache.airavata.execution.util.DBConstants;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.process.ProcessModel;
-import org.apache.airavata.model.status.TaskState;
-import org.apache.airavata.model.status.TaskStatus;
-import org.apache.airavata.model.task.TaskModel;
-import org.apache.airavata.model.task.TaskTypes;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.process.proto.ProcessModel;
+import org.apache.airavata.model.status.proto.TaskState;
+import org.apache.airavata.model.status.proto.TaskStatus;
+import org.apache.airavata.model.task.proto.TaskModel;
+import org.apache.airavata.model.task.proto.TaskTypes;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -62,54 +62,50 @@ public class TaskRepositoryTest extends TestBase {
 
     @Test
     public void TaskRepositoryTest() throws RegistryException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         String gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
 
         String projectId = projectRepository.addProject(project, gatewayId);
 
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
 
         ProcessModel processModel = new ProcessModel(null, experimentId);
         String processId = processRepository.addProcess(processModel, experimentId);
 
-        TaskModel taskModel = new TaskModel();
-        taskModel.setTaskType(TaskTypes.JOB_SUBMISSION);
-        taskModel.setLastUpdateTime(System.currentTimeMillis());
-        taskModel.setParentProcessId(processId);
-        taskModel.setSubTaskModel("subtask model".getBytes(StandardCharsets.UTF_8));
+        TaskModel taskModel = TaskModel.newBuilder().setTaskType(TaskTypes.JOB_SUBMISSION).build();
+        taskModel = taskModel.toBuilder().setLastUpdateTime(System.currentTimeMillis()).build();
+        taskModel = taskModel.toBuilder().setParentProcessId(processId).build();
+        taskModel = taskModel.toBuilder().setSubTaskModel("subtask model".getBytes(StandardCharsets.UTF_8)).build();
 
-        TaskStatus taskStatus = new TaskStatus(TaskState.CREATED);
-        taskStatus.setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime());
-        taskModel.addToTaskStatuses(taskStatus);
+        TaskStatus taskStatus = new TaskStatus(TaskState.TASK_STATE_CREATED);
+        taskStatus = taskStatus.toBuilder().setTimeOfStateChange(AiravataUtils.getCurrentTimestamp().getTime()).build();
+        taskModel = taskModel.toBuilder().addTaskStatuses(taskStatus).build();
 
         String taskId = taskRepository.addTask(taskModel, processId);
         assertTrue(taskId != null);
-        assertTrue(processRepository.getProcess(processId).getTasks().size() == 1);
+        assertTrue(processRepository.getProcess(processId).getTasksList().size() == 1);
 
-        taskModel.setTaskType(TaskTypes.MONITORING);
-        taskModel.setLastUpdateTime(System.currentTimeMillis());
+        taskModel = taskModel.toBuilder().setTaskType(TaskTypes.MONITORING).build();
+        taskModel = taskModel.toBuilder().setLastUpdateTime(System.currentTimeMillis()).build();
         taskRepository.updateTask(taskModel, taskId);
         TaskModel retrievedTask = taskRepository.getTask(taskId);
         assertEquals(TaskTypes.MONITORING, retrievedTask.getTaskType());
         assertArrayEquals("subtask model".getBytes(StandardCharsets.UTF_8), retrievedTask.getSubTaskModel());
-        assertEquals(1, retrievedTask.getTaskStatusesSize());
-        assertEquals(TaskState.CREATED, retrievedTask.getTaskStatuses().get(0).getState());
+        assertEquals(1, retrievedTask.getTaskStatusesCount());
+        assertEquals(TaskState.TASK_STATE_CREATED, retrievedTask.getTaskStatuses().get(0).getState());
 
         List<String> taskIdList = taskRepository.getTaskIds(DBConstants.Task.PARENT_PROCESS_ID, processId);
         assertTrue(taskIdList.size() == 1);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/TaskStatusRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/TaskStatusRepositoryTest.java
index 3fad582da1..eeea550dc6 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/TaskStatusRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/TaskStatusRepositoryTest.java
@@ -24,16 +24,16 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.process.ProcessModel;
-import org.apache.airavata.model.status.TaskState;
-import org.apache.airavata.model.status.TaskStatus;
-import org.apache.airavata.model.task.TaskModel;
-import org.apache.airavata.model.task.TaskTypes;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.process.proto.ProcessModel;
+import org.apache.airavata.model.status.proto.TaskState;
+import org.apache.airavata.model.status.proto.TaskStatus;
+import org.apache.airavata.model.task.proto.TaskModel;
+import org.apache.airavata.model.task.proto.TaskTypes;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -61,50 +61,46 @@ public class TaskStatusRepositoryTest extends TestBase {
 
     @Test
     public void TaskStatusRepositoryTest() throws RegistryException {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
-        gateway.setDomain("SEAGRID");
-        gateway.setEmailAddress("abc@d.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
+        gateway = gateway.toBuilder().setDomain("SEAGRID").build();
+        gateway = gateway.toBuilder().setEmailAddress("abc@d.com").build();
         String gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("projectName");
-        project.setOwner("user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("projectName").build();
+        project = project.toBuilder().setOwner("user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
 
         String projectId = projectRepository.addProject(project, gatewayId);
 
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setProjectId(projectId);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experimentModel.setUserName("user");
-        experimentModel.setExperimentName("name");
-        experimentModel.setUserConfigurationData(new UserConfigurationDataModel());
+        ExperimentModel experimentModel = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experimentModel = experimentModel.toBuilder().setGatewayId(gatewayId).build();
+        experimentModel = experimentModel.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experimentModel = experimentModel.toBuilder().setUserName("user").build();
+        experimentModel = experimentModel.toBuilder().setExperimentName("name").build();
+        experimentModel = experimentModel.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
 
         String experimentId = experimentRepository.addExperiment(experimentModel);
 
         ProcessModel processModel = new ProcessModel(null, experimentId);
         String processId = processRepository.addProcess(processModel, experimentId);
 
-        TaskModel taskModel = new TaskModel();
-        taskModel.setTaskType(TaskTypes.JOB_SUBMISSION);
-        taskModel.setLastUpdateTime(System.currentTimeMillis());
-        taskModel.setParentProcessId(processId);
+        TaskModel taskModel = TaskModel.newBuilder().setTaskType(TaskTypes.JOB_SUBMISSION).build();
+        taskModel = taskModel.toBuilder().setLastUpdateTime(System.currentTimeMillis()).build();
+        taskModel = taskModel.toBuilder().setParentProcessId(processId).build();
 
         String taskId = taskRepository.addTask(taskModel, processId);
         assertTrue(taskId != null);
 
-        TaskStatus taskStatus = new TaskStatus(TaskState.EXECUTING);
+        TaskStatus taskStatus = new TaskStatus(TaskState.TASK_STATE_EXECUTING);
         String taskStatusId = taskStatusRepository.addTaskStatus(taskStatus, taskId);
         assertTrue(taskStatusId != null);
-        assertTrue(taskRepository.getTask(taskId).getTaskStatuses().size() == 1);
+        assertTrue(taskRepository.getTask(taskId).getTaskStatusesList().size() == 1);
 
-        taskStatus.setState(TaskState.CREATED);
+        taskStatus = taskStatus.toBuilder().setState(TaskState.TASK_STATE_CREATED).build();
         taskStatusRepository.updateTaskStatus(taskStatus, taskId);
 
         TaskStatus retrievedTaskStatus = taskStatusRepository.getTaskStatus(taskId);
-        assertEquals(TaskState.CREATED, retrievedTaskStatus.getState());
+        assertEquals(TaskState.TASK_STATE_CREATED, retrievedTaskStatus.getState());
 
         experimentRepository.removeExperiment(experimentId);
         processRepository.removeProcess(processId);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/UserRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/UserRepositoryTest.java
index bccf48b1a6..83cdff4f3c 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/UserRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/UserRepositoryTest.java
@@ -28,8 +28,8 @@ import java.util.List;
 import org.apache.airavata.execution.model.UserPK;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.RegistryException;
-import org.apache.airavata.model.user.UserProfile;
-import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.model.user.proto.UserProfile;
+import org.apache.airavata.model.workspace.proto.Gateway;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -54,12 +54,10 @@ public class UserRepositoryTest extends TestBase {
     @BeforeEach
     public void createTestData() throws RegistryException {
 
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gateway");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gateway").build();
         gatewayId = gatewayRepository.addGateway(gateway);
 
-        Gateway gateway2 = new Gateway();
-        gateway2.setGatewayId("gateway2");
+        Gateway gateway2 = Gateway.newBuilder().setGatewayId("gateway2").build();
         gatewayId2 = gatewayRepository.addGateway(gateway2);
     }
 
@@ -73,10 +71,9 @@ public class UserRepositoryTest extends TestBase {
     @Test
     public void test() throws RegistryException {
 
-        UserProfile userProfile = new UserProfile();
-        userProfile.setUserId("username");
-        userProfile.setAiravataInternalUserId("username@" + gatewayId);
-        userProfile.setGatewayId(gatewayId);
+        UserProfile userProfile = UserProfile.newBuilder().setUserId("username").build();
+        userProfile = userProfile.toBuilder().setAiravataInternalUserId("username@" + gatewayId).build();
+        userProfile = userProfile.toBuilder().setGatewayId(gatewayId).build();
 
         userRepository.addUser(userProfile);
         UserProfile retrievedUserProfile = userRepository.get(new UserPK(gatewayId, "username"));
@@ -92,24 +89,21 @@ public class UserRepositoryTest extends TestBase {
 
         // Two users in first gateway, only one in the second gateway
         String username1 = "username1";
-        UserProfile userProfile = new UserProfile();
-        userProfile.setUserId(username1);
-        userProfile.setAiravataInternalUserId(username1 + "@" + gatewayId);
-        userProfile.setGatewayId(gatewayId);
+        UserProfile userProfile = UserProfile.newBuilder().setUserId(username1).build();
+        userProfile = userProfile.toBuilder().setAiravataInternalUserId(username1 + "@" + gatewayId).build();
+        userProfile = userProfile.toBuilder().setGatewayId(gatewayId).build();
         userRepository.addUser(userProfile);
 
         String username2 = "username2";
-        UserProfile userProfile2 = new UserProfile();
-        userProfile2.setUserId(username2);
-        userProfile2.setAiravataInternalUserId(username2 + "@" + gatewayId);
-        userProfile2.setGatewayId(gatewayId);
+        UserProfile userProfile2 = UserProfile.newBuilder().setUserId(username2).build();
+        userProfile2 = userProfile2.toBuilder().setAiravataInternalUserId(username2 + "@" + gatewayId).build();
+        userProfile2 = userProfile2.toBuilder().setGatewayId(gatewayId).build();
         userRepository.addUser(userProfile2);
 
         String username3 = "username3";
-        UserProfile userProfile3 = new UserProfile();
-        userProfile3.setUserId(username3);
-        userProfile3.setAiravataInternalUserId(username3 + "@" + gatewayId2);
-        userProfile3.setGatewayId(gatewayId2);
+        UserProfile userProfile3 = UserProfile.newBuilder().setUserId(username3).build();
+        userProfile3 = userProfile3.toBuilder().setAiravataInternalUserId(username3 + "@" + gatewayId2).build();
+        userProfile3 = userProfile3.toBuilder().setGatewayId(gatewayId2).build();
         userRepository.addUser(userProfile3);
 
         List<String> gateway1Usernames = userRepository.getAllUsernamesInGateway(gatewayId);
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/repository/WorkflowRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/repository/WorkflowRepositoryTest.java
index 9d474bb837..7590aa7175 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/repository/WorkflowRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/repository/WorkflowRepositoryTest.java
@@ -23,7 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.WorkflowCatalogException;
-import org.apache.airavata.model.workflow.*;
+import org.apache.airavata.model.workflow.proto.*;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/service/ExperimentServiceTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/service/ExperimentServiceTest.java
index 73937bc722..34b6a96a38 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/service/ExperimentServiceTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/service/ExperimentServiceTest.java
@@ -27,19 +27,19 @@ import java.util.List;
 import java.util.Map;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
 import org.apache.airavata.messaging.service.EventPublisher;
-import org.apache.airavata.model.application.io.OutputDataObjectType;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentStatistics;
-import org.apache.airavata.model.job.JobModel;
-import org.apache.airavata.model.process.ProcessModel;
-import org.apache.airavata.model.status.ExperimentState;
-import org.apache.airavata.model.status.ExperimentStatus;
-import org.apache.airavata.model.status.JobState;
-import org.apache.airavata.model.status.JobStatus;
-import org.apache.airavata.model.status.ProcessState;
-import org.apache.airavata.model.status.ProcessStatus;
-import org.apache.airavata.model.task.TaskModel;
-import org.apache.airavata.model.task.TaskTypes;
+import org.apache.airavata.model.application.io.proto.OutputDataObjectType;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentStatistics;
+import org.apache.airavata.model.job.proto.JobModel;
+import org.apache.airavata.model.process.proto.ProcessModel;
+import org.apache.airavata.model.status.proto.ExperimentState;
+import org.apache.airavata.model.status.proto.ExperimentStatus;
+import org.apache.airavata.model.status.proto.JobState;
+import org.apache.airavata.model.status.proto.JobStatus;
+import org.apache.airavata.model.status.proto.ProcessState;
+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.sharing.handler.SharingRegistryServerHandler;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -71,11 +71,10 @@ class ExperimentServiceTest {
 
     @Test
     void createExperiment_returnsExperimentId() throws Exception {
-        ExperimentModel experiment = new ExperimentModel();
-        experiment.setExperimentName("test-exp");
-        experiment.setGatewayId("testGateway");
-        experiment.setUserName("testUser");
-        experiment.setProjectId("proj-1");
+        ExperimentModel experiment = ExperimentModel.newBuilder().setExperimentName("test-exp").build();
+        experiment = experiment.toBuilder().setGatewayId("testGateway").build();
+        experiment = experiment.toBuilder().setUserName("testUser").build();
+        experiment = experiment.toBuilder().setProjectId("proj-1").build();
 
         when(registryHandler.createExperiment("testGateway", experiment)).thenReturn("exp-123");
 
@@ -87,9 +86,8 @@ class ExperimentServiceTest {
 
     @Test
     void getExperiment_ownerGetsAccess() throws Exception {
-        ExperimentModel experiment = new ExperimentModel();
-        experiment.setUserName("testUser");
-        experiment.setGatewayId("testGateway");
+        ExperimentModel experiment = ExperimentModel.newBuilder().setUserName("testUser").build();
+        experiment = experiment.toBuilder().setGatewayId("testGateway").build();
 
         when(registryHandler.getExperiment("exp-123")).thenReturn(experiment);
 
@@ -101,12 +99,10 @@ class ExperimentServiceTest {
 
     @Test
     void deleteExperiment_onlyDeletesCreatedExperiments() throws Exception {
-        ExperimentModel experiment = new ExperimentModel();
-        experiment.setUserName("testUser");
-        experiment.setGatewayId("testGateway");
-        ExperimentStatus status = new ExperimentStatus();
-        status.setState(ExperimentState.CREATED);
-        experiment.addToExperimentStatus(status);
+        ExperimentModel experiment = ExperimentModel.newBuilder().setUserName("testUser").build();
+        experiment = experiment.toBuilder().setGatewayId("testGateway").build();
+        ExperimentStatus status = ExperimentStatus.newBuilder().setState(ExperimentState.EXPERIMENT_STATE_CREATED).build();
+        experiment = experiment.toBuilder().addExperimentStatus(status).build();
         when(registryHandler.getExperiment("exp-123")).thenReturn(experiment);
         when(registryHandler.deleteExperiment("exp-123")).thenReturn(true);
         boolean result = experimentService.deleteExperiment(ctx, "exp-123");
@@ -116,21 +112,18 @@ class ExperimentServiceTest {
 
     @Test
     void deleteExperiment_rejectsNonCreatedExperiment() throws Exception {
-        ExperimentModel experiment = new ExperimentModel();
-        experiment.setUserName("testUser");
-        experiment.setGatewayId("testGateway");
-        ExperimentStatus status = new ExperimentStatus();
-        status.setState(ExperimentState.EXECUTING);
-        experiment.addToExperimentStatus(status);
+        ExperimentModel experiment = ExperimentModel.newBuilder().setUserName("testUser").build();
+        experiment = experiment.toBuilder().setGatewayId("testGateway").build();
+        ExperimentStatus status = ExperimentStatus.newBuilder().setState(ExperimentState.EXPERIMENT_STATE_EXECUTING).build();
+        experiment = experiment.toBuilder().addExperimentStatus(status).build();
         when(registryHandler.getExperiment("exp-123")).thenReturn(experiment);
         assertThrows(ServiceException.class, () -> experimentService.deleteExperiment(ctx, "exp-123"));
     }
 
     @Test
     void getExperimentByAdmin_allowsSameGateway() throws Exception {
-        ExperimentModel experiment = new ExperimentModel();
-        experiment.setUserName("otherUser");
-        experiment.setGatewayId("testGateway");
+        ExperimentModel experiment = ExperimentModel.newBuilder().setUserName("otherUser").build();
+        experiment = experiment.toBuilder().setGatewayId("testGateway").build();
         when(registryHandler.getExperiment("exp-123")).thenReturn(experiment);
         ExperimentModel result = experimentService.getExperimentByAdmin(ctx, "exp-123");
         assertNotNull(result);
@@ -138,20 +131,18 @@ class ExperimentServiceTest {
 
     @Test
     void getExperimentByAdmin_rejectsDifferentGateway() throws Exception {
-        ExperimentModel experiment = new ExperimentModel();
-        experiment.setUserName("otherUser");
-        experiment.setGatewayId("otherGateway");
+        ExperimentModel experiment = ExperimentModel.newBuilder().setUserName("otherUser").build();
+        experiment = experiment.toBuilder().setGatewayId("otherGateway").build();
         when(registryHandler.getExperiment("exp-123")).thenReturn(experiment);
         assertThrows(ServiceAuthorizationException.class, () -> experimentService.getExperimentByAdmin(ctx, "exp-123"));
     }
 
     @Test
     void getExperimentStatus_delegatesToRegistry() throws Exception {
-        ExperimentStatus status = new ExperimentStatus();
-        status.setState(ExperimentState.COMPLETED);
+        ExperimentStatus status = ExperimentStatus.newBuilder().setState(ExperimentState.EXPERIMENT_STATE_COMPLETED).build();
         when(registryHandler.getExperimentStatus("exp-123")).thenReturn(status);
         ExperimentStatus result = experimentService.getExperimentStatus(ctx, "exp-123");
-        assertEquals(ExperimentState.COMPLETED, result.getState());
+        assertEquals(ExperimentState.EXPERIMENT_STATE_COMPLETED, result.getState());
     }
 
     @Test
@@ -164,8 +155,7 @@ class ExperimentServiceTest {
 
     @Test
     void getExperimentStatistics_delegatesToRegistry() throws Exception {
-        ExperimentStatistics stats = new ExperimentStatistics();
-        stats.setAllExperimentCount(5);
+        ExperimentStatistics stats = ExperimentStatistics.newBuilder().setAllExperimentCount(5).build();
         when(registryHandler.getExperimentStatistics("testGateway", 1000L, 2000L, null, null, null, null, 10, 0))
                 .thenReturn(stats);
         ExperimentStatistics result =
@@ -175,12 +165,10 @@ class ExperimentServiceTest {
 
     @Test
     void updateExperiment_ownerCanUpdate() throws Exception {
-        ExperimentModel existing = new ExperimentModel();
-        existing.setUserName("testUser");
-        existing.setGatewayId("testGateway");
-        ExperimentModel updated = new ExperimentModel();
-        updated.setExperimentName("new-name");
-        updated.setProjectId("proj-1");
+        ExperimentModel existing = ExperimentModel.newBuilder().setUserName("testUser").build();
+        existing = existing.toBuilder().setGatewayId("testGateway").build();
+        ExperimentModel updated = ExperimentModel.newBuilder().setExperimentName("new-name").build();
+        updated = updated.toBuilder().setProjectId("proj-1").build();
 
         when(registryHandler.getExperiment("exp-123")).thenReturn(existing);
         doNothing().when(registryHandler).updateExperiment("exp-123", updated);
@@ -223,16 +211,15 @@ class ExperimentServiceTest {
         when(sharingHandler.userHasAccess("testGateway", "testUser@testGateway", "exp-123", "testGateway:OWNER"))
                 .thenReturn(true);
 
-        ExperimentModel experiment = new ExperimentModel();
-        experiment.setUserName("testUser");
-        experiment.setGatewayId("testGateway");
-        experiment.setProcesses(new java.util.ArrayList<>());
+        ExperimentModel experiment = ExperimentModel.newBuilder().setUserName("testUser").build();
+        experiment = experiment.toBuilder().setGatewayId("testGateway").build();
+        experiment = experiment.toBuilder().setProcesses(new java.util.ArrayList<>()).build();
         when(registryHandler.getExperiment("exp-123")).thenReturn(experiment);
 
         // No active jobs
         JobModel job = new JobModel();
         JobStatus jobStatus = new JobStatus(JobState.COMPLETE);
-        job.addToJobStatuses(jobStatus);
+        job = job.toBuilder().addJobStatuses(jobStatus).build();
         when(registryHandler.getJobDetails("exp-123")).thenReturn(List.of(job));
 
         assertThrows(
@@ -245,15 +232,14 @@ class ExperimentServiceTest {
         when(sharingHandler.userHasAccess("testGateway", "testUser@testGateway", "exp-123", "testGateway:OWNER"))
                 .thenReturn(true);
 
-        ExperimentModel experiment = new ExperimentModel();
-        experiment.setUserName("testUser");
-        experiment.setGatewayId("testGateway");
+        ExperimentModel experiment = ExperimentModel.newBuilder().setUserName("testUser").build();
+        experiment = experiment.toBuilder().setGatewayId("testGateway").build();
         experiment.setProcesses(new java.util.ArrayList<>()); // no in-progress output fetch processes
         when(registryHandler.getExperiment("exp-123")).thenReturn(experiment);
 
         JobModel job = new JobModel();
         JobStatus jobStatus = new JobStatus(JobState.ACTIVE);
-        job.addToJobStatuses(jobStatus);
+        job = job.toBuilder().addJobStatuses(jobStatus).build();
         when(registryHandler.getJobDetails("exp-123")).thenReturn(List.of(job));
 
         experimentService.fetchIntermediateOutputs(ctx, "exp-123", List.of("output1"));
@@ -278,27 +264,23 @@ class ExperimentServiceTest {
         when(sharingHandler.userHasAccess("testGateway", "testUser@testGateway", "exp-123", "testGateway:OWNER"))
                 .thenReturn(true);
 
-        ExperimentModel experiment = new ExperimentModel();
-        experiment.setUserName("testUser");
-        experiment.setGatewayId("testGateway");
+        ExperimentModel experiment = ExperimentModel.newBuilder().setUserName("testUser").build();
+        experiment = experiment.toBuilder().setGatewayId("testGateway").build();
 
         // Build a process with OUTPUT_FETCHING task and a matching output
-        ProcessModel process = new ProcessModel();
-        process.setLastUpdateTime(1000L);
-        TaskModel task = new TaskModel();
-        task.setTaskType(TaskTypes.OUTPUT_FETCHING);
-        process.addToTasks(task);
-        OutputDataObjectType out = new OutputDataObjectType();
-        out.setName("output1");
-        process.addToProcessOutputs(out);
-        ProcessStatus ps = new ProcessStatus(ProcessState.EXECUTING);
-        process.addToProcessStatuses(ps);
-        experiment.addToProcesses(process);
+        ProcessModel process = ProcessModel.newBuilder().setLastUpdateTime(1000L).build();
+        TaskModel task = TaskModel.newBuilder().setTaskType(TaskTypes.OUTPUT_FETCHING).build();
+        process = process.toBuilder().addTasks(task).build();
+        OutputDataObjectType out = OutputDataObjectType.newBuilder().setName("output1").build();
+        process = process.toBuilder().addProcessOutputs(out).build();
+        ProcessStatus ps = new ProcessStatus(ProcessState.PROCESS_STATE_EXECUTING);
+        process = process.toBuilder().addProcessStatuses(ps).build();
+        experiment = experiment.toBuilder().addProcesses(process).build();
 
         when(registryHandler.getExperiment("exp-123")).thenReturn(experiment);
 
         ProcessStatus result = experimentService.getIntermediateOutputProcessStatus(ctx, "exp-123", List.of("output1"));
 
-        assertEquals(ProcessState.EXECUTING, result.getState());
+        assertEquals(ProcessState.PROCESS_STATE_EXECUTING, result.getState());
     }
 }
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/service/GatewayServiceTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/service/GatewayServiceTest.java
index 0f3a7901a8..9e898fa9f7 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/service/GatewayServiceTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/service/GatewayServiceTest.java
@@ -25,7 +25,7 @@ import static org.mockito.Mockito.*;
 import java.util.List;
 import java.util.Map;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
-import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.model.workspace.proto.Gateway;
 import org.apache.airavata.sharing.handler.SharingRegistryServerHandler;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -54,9 +54,8 @@ class GatewayServiceTest {
 
     @Test
     void addGateway_returnsGatewayId() throws Exception {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gw-1");
-        gateway.setGatewayName("Test Gateway");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gw-1").build();
+        gateway = gateway.toBuilder().setGatewayName("Test Gateway").build();
 
         when(registryHandler.addGateway(gateway)).thenReturn("gw-1");
 
@@ -69,9 +68,8 @@ class GatewayServiceTest {
 
     @Test
     void getGateway_delegatesToRegistry() throws Exception {
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("gw-1");
-        gateway.setGatewayName("Test Gateway");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("gw-1").build();
+        gateway = gateway.toBuilder().setGatewayName("Test Gateway").build();
 
         when(registryHandler.getGateway("gw-1")).thenReturn(gateway);
 
@@ -84,10 +82,8 @@ class GatewayServiceTest {
 
     @Test
     void getAllGateways_delegatesToRegistry() throws Exception {
-        Gateway g1 = new Gateway();
-        g1.setGatewayId("gw-1");
-        Gateway g2 = new Gateway();
-        g2.setGatewayId("gw-2");
+        Gateway g1 = Gateway.newBuilder().setGatewayId("gw-1").build();
+        Gateway g2 = Gateway.newBuilder().setGatewayId("gw-2").build();
 
         when(registryHandler.getAllGateways()).thenReturn(List.of(g1, g2));
 
@@ -99,8 +95,7 @@ class GatewayServiceTest {
 
     @Test
     void updateGateway_delegatesToRegistry() throws Exception {
-        Gateway updatedGateway = new Gateway();
-        updatedGateway.setGatewayId("gw-1");
+        Gateway updatedGateway = Gateway.newBuilder().setGatewayId("gw-1").build();
 
         when(registryHandler.updateGateway("gw-1", updatedGateway)).thenReturn(true);
 
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/service/NotificationServiceTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/service/NotificationServiceTest.java
index 73e29d3285..d27cd48259 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/service/NotificationServiceTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/service/NotificationServiceTest.java
@@ -25,7 +25,7 @@ import static org.mockito.Mockito.*;
 import java.util.List;
 import java.util.Map;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
-import org.apache.airavata.model.workspace.Notification;
+import org.apache.airavata.model.workspace.proto.Notification;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -50,8 +50,7 @@ class NotificationServiceTest {
 
     @Test
     void createNotification_delegatesToRegistry() throws Exception {
-        Notification notification = new Notification();
-        notification.setGatewayId("testGateway");
+        Notification notification = Notification.newBuilder().setGatewayId("testGateway").build();
 
         when(registryHandler.createNotification(notification)).thenReturn("notif-1");
 
@@ -63,9 +62,8 @@ class NotificationServiceTest {
 
     @Test
     void getNotification_delegatesToRegistry() throws Exception {
-        Notification notification = new Notification();
-        notification.setNotificationId("notif-1");
-        notification.setGatewayId("testGateway");
+        Notification notification = Notification.newBuilder().setNotificationId("notif-1").build();
+        notification = notification.toBuilder().setGatewayId("testGateway").build();
 
         when(registryHandler.getNotification("testGateway", "notif-1")).thenReturn(notification);
 
@@ -88,8 +86,7 @@ class NotificationServiceTest {
 
     @Test
     void updateNotification_delegatesToRegistry() throws Exception {
-        Notification notification = new Notification();
-        notification.setNotificationId("notif-1");
+        Notification notification = Notification.newBuilder().setNotificationId("notif-1").build();
 
         when(registryHandler.updateNotification(notification)).thenReturn(true);
 
@@ -101,10 +98,8 @@ class NotificationServiceTest {
 
     @Test
     void getAllNotifications_delegatesToRegistry() throws Exception {
-        Notification n1 = new Notification();
-        n1.setNotificationId("notif-1");
-        Notification n2 = new Notification();
-        n2.setNotificationId("notif-2");
+        Notification n1 = Notification.newBuilder().setNotificationId("notif-1").build();
+        Notification n2 = Notification.newBuilder().setNotificationId("notif-2").build();
 
         when(registryHandler.getAllNotifications("testGateway")).thenReturn(List.of(n1, n2));
 
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/service/ProjectServiceTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/service/ProjectServiceTest.java
index 4f6593879d..ed8bdafbb7 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/service/ProjectServiceTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/service/ProjectServiceTest.java
@@ -25,7 +25,7 @@ import static org.mockito.Mockito.*;
 import java.util.List;
 import java.util.Map;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.apache.airavata.sharing.handler.SharingRegistryServerHandler;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -54,10 +54,9 @@ class ProjectServiceTest {
 
     @Test
     void createProject_returnsProjectId() throws Exception {
-        Project project = new Project();
-        project.setName("test-proj");
-        project.setGatewayId("testGateway");
-        project.setOwner("testUser");
+        Project project = Project.newBuilder().setName("test-proj").build();
+        project = project.toBuilder().setGatewayId("testGateway").build();
+        project = project.toBuilder().setOwner("testUser").build();
 
         when(registryHandler.createProject("testGateway", project)).thenReturn("proj-123");
 
@@ -69,9 +68,8 @@ class ProjectServiceTest {
 
     @Test
     void getProject_ownerGetsAccess() throws Exception {
-        Project project = new Project();
-        project.setOwner("testUser");
-        project.setGatewayId("testGateway");
+        Project project = Project.newBuilder().setOwner("testUser").build();
+        project = project.toBuilder().setGatewayId("testGateway").build();
 
         when(registryHandler.getProject("proj-123")).thenReturn(project);
 
@@ -83,9 +81,8 @@ class ProjectServiceTest {
 
     @Test
     void getProject_nonOwnerRejectedWhenSharingDisabled() throws Exception {
-        Project project = new Project();
-        project.setOwner("otherUser");
-        project.setGatewayId("testGateway");
+        Project project = Project.newBuilder().setOwner("otherUser").build();
+        project = project.toBuilder().setGatewayId("testGateway").build();
 
         when(registryHandler.getProject("proj-123")).thenReturn(project);
 
@@ -98,9 +95,8 @@ class ProjectServiceTest {
 
     @Test
     void deleteProject_rejectsNonOwnerWithoutWriteAccess() throws Exception {
-        Project project = new Project();
-        project.setOwner("otherUser");
-        project.setGatewayId("testGateway");
+        Project project = Project.newBuilder().setOwner("otherUser").build();
+        project = project.toBuilder().setGatewayId("testGateway").build();
 
         when(registryHandler.getProject("proj-123")).thenReturn(project);
 
@@ -110,9 +106,8 @@ class ProjectServiceTest {
 
     @Test
     void deleteProject_ownerCanDelete() throws Exception {
-        Project project = new Project();
-        project.setOwner("testUser");
-        project.setGatewayId("testGateway");
+        Project project = Project.newBuilder().setOwner("testUser").build();
+        project = project.toBuilder().setGatewayId("testGateway").build();
 
         when(registryHandler.getProject("proj-123")).thenReturn(project);
         when(registryHandler.deleteProject("proj-123")).thenReturn(true);
@@ -136,13 +131,11 @@ class ProjectServiceTest {
 
     @Test
     void updateProject_rejectsOwnerChange() throws Exception {
-        Project existing = new Project();
-        existing.setOwner("testUser");
-        existing.setGatewayId("testGateway");
+        Project existing = Project.newBuilder().setOwner("testUser").build();
+        existing = existing.toBuilder().setGatewayId("testGateway").build();
 
-        Project updated = new Project();
-        updated.setOwner("newOwner");
-        updated.setGatewayId("testGateway");
+        Project updated = Project.newBuilder().setOwner("newOwner").build();
+        updated = updated.toBuilder().setGatewayId("testGateway").build();
 
         when(registryHandler.getProject("proj-123")).thenReturn(existing);
 
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/util/replicacatalog/DataProductRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/util/replicacatalog/DataProductRepositoryTest.java
index b48d9e4e08..de7eef9b96 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/util/replicacatalog/DataProductRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/util/replicacatalog/DataProductRepositoryTest.java
@@ -28,11 +28,11 @@ import java.util.List;
 import java.util.Map;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.ReplicaCatalogException;
-import org.apache.airavata.model.data.replica.DataProductModel;
-import org.apache.airavata.model.data.replica.DataProductType;
-import org.apache.airavata.model.data.replica.DataReplicaLocationModel;
-import org.apache.airavata.model.data.replica.ReplicaLocationCategory;
-import org.apache.airavata.model.data.replica.ReplicaPersistentType;
+import org.apache.airavata.model.data.replica.proto.DataProductModel;
+import org.apache.airavata.model.data.replica.proto.DataProductType;
+import org.apache.airavata.model.data.replica.proto.DataReplicaLocationModel;
+import org.apache.airavata.model.data.replica.proto.ReplicaLocationCategory;
+import org.apache.airavata.model.data.replica.proto.ReplicaPersistentType;
 import org.apache.airavata.storage.model.DataProductMetadataEntity;
 import org.apache.airavata.storage.repository.DataProductRepository;
 import org.junit.jupiter.api.Test;
@@ -51,11 +51,10 @@ public class DataProductRepositoryTest extends TestBase {
 
     @Test
     public void dataProductRepositoryTest() throws ReplicaCatalogException {
-        DataProductModel testDataProductModel1 = new DataProductModel();
-        testDataProductModel1.setGatewayId(gatewayId);
-        testDataProductModel1.setOwnerName(userId);
-        testDataProductModel1.setDataProductType(DataProductType.COLLECTION);
-        testDataProductModel1.setProductName(productName);
+        DataProductModel testDataProductModel1 = DataProductModel.newBuilder().setGatewayId(gatewayId).build();
+        testDataProductModel1 = testDataProductModel1.toBuilder().setOwnerName(userId).build();
+        testDataProductModel1 = testDataProductModel1.toBuilder().setDataProductType(DataProductType.COLLECTION).build();
+        testDataProductModel1 = testDataProductModel1.toBuilder().setProductName(productName).build();
 
         String productUri1 = dataProductRepository.registerDataProduct(testDataProductModel1);
         assertTrue(dataProductRepository.isDataProductExists(productUri1));
@@ -63,11 +62,10 @@ public class DataProductRepositoryTest extends TestBase {
         DataProductModel retrievedDataProductModel1 = dataProductRepository.getDataProduct(productUri1);
         assertEquals(retrievedDataProductModel1.getProductUri(), productUri1);
 
-        DataProductModel testDataProductModel2 = new DataProductModel();
-        testDataProductModel2.setGatewayId(gatewayId);
-        testDataProductModel2.setOwnerName(userId);
-        testDataProductModel2.setDataProductType(DataProductType.FILE);
-        testDataProductModel2.setProductName(productName);
+        DataProductModel testDataProductModel2 = DataProductModel.newBuilder().setGatewayId(gatewayId).build();
+        testDataProductModel2 = testDataProductModel2.toBuilder().setOwnerName(userId).build();
+        testDataProductModel2 = testDataProductModel2.toBuilder().setDataProductType(DataProductType.FILE).build();
+        testDataProductModel2 = testDataProductModel2.toBuilder().setProductName(productName).build();
 
         String productUri2 = dataProductRepository.registerDataProduct(testDataProductModel2);
         assertTrue(dataProductRepository.isDataProductExists(productUri2));
@@ -80,8 +78,8 @@ public class DataProductRepositoryTest extends TestBase {
         Map<String, String> dataProductMetadataEntityMap = new HashMap<>();
         dataProductMetadataEntityMap.put(
                 dataProductMetadataEntity.getMetadataKey(), dataProductMetadataEntity.getMetadataValue());
-        testDataProductModel2.setProductMetadata(dataProductMetadataEntityMap);
-        testDataProductModel2.setParentProductUri(productUri1);
+        testDataProductModel2 = testDataProductModel2.toBuilder().setProductMetadata(dataProductMetadataEntityMap).build();
+        testDataProductModel2 = testDataProductModel2.toBuilder().setParentProductUri(productUri1).build();
         assertTrue(dataProductRepository.updateDataProduct(testDataProductModel2));
 
         DataProductModel retrievedDataProductModel2 = dataProductRepository.getDataProduct(productUri2);
@@ -105,21 +103,19 @@ public class DataProductRepositoryTest extends TestBase {
 
     @Test
     public void testDataProductWithReplicaLocation() throws ReplicaCatalogException {
-        DataProductModel testDataProductModel1 = new DataProductModel();
-        testDataProductModel1.setGatewayId(gatewayId);
-        testDataProductModel1.setOwnerName(userId);
-        testDataProductModel1.setDataProductType(DataProductType.FILE);
-        testDataProductModel1.setProductName(productName);
-
-        DataReplicaLocationModel replicaLocationModel1 = new DataReplicaLocationModel();
-        replicaLocationModel1.setFilePath("/path/to/file.dat");
-        replicaLocationModel1.setReplicaDescription("Description of replica");
-        replicaLocationModel1.setReplicaLocationCategory(ReplicaLocationCategory.GATEWAY_DATA_STORE);
-        replicaLocationModel1.setReplicaName("file.dat");
-        replicaLocationModel1.setStorageResourceId("storage_resource_id");
-        replicaLocationModel1.setReplicaPersistentType(ReplicaPersistentType.PERSISTENT);
-
-        testDataProductModel1.addToReplicaLocations(replicaLocationModel1);
+        DataProductModel testDataProductModel1 = DataProductModel.newBuilder().setGatewayId(gatewayId).build();
+        testDataProductModel1 = testDataProductModel1.toBuilder().setOwnerName(userId).build();
+        testDataProductModel1 = testDataProductModel1.toBuilder().setDataProductType(DataProductType.FILE).build();
+        testDataProductModel1 = testDataProductModel1.toBuilder().setProductName(productName).build();
+
+        DataReplicaLocationModel replicaLocationModel1 = DataReplicaLocationModel.newBuilder().setFilePath("/path/to/file.dat").build();
+        replicaLocationModel1 = replicaLocationModel1.toBuilder().setReplicaDescription("Description of replica").build();
+        replicaLocationModel1 = replicaLocationModel1.toBuilder().setReplicaLocationCategory(ReplicaLocationCategory.GATEWAY_DATA_STORE).build();
+        replicaLocationModel1 = replicaLocationModel1.toBuilder().setReplicaName("file.dat").build();
+        replicaLocationModel1 = replicaLocationModel1.toBuilder().setStorageResourceId("storage_resource_id").build();
+        replicaLocationModel1 = replicaLocationModel1.toBuilder().setReplicaPersistentType(ReplicaPersistentType.PERSISTENT).build();
+
+        testDataProductModel1 = testDataProductModel1.toBuilder().addReplicaLocations(replicaLocationModel1).build();
 
         String productUri1 = dataProductRepository.registerDataProduct(testDataProductModel1);
         assertTrue(dataProductRepository.isDataProductExists(productUri1));
diff --git a/airavata-api/src/test/java/org/apache/airavata/execution/util/replicacatalog/DataReplicaLocationRepositoryTest.java b/airavata-api/src/test/java/org/apache/airavata/execution/util/replicacatalog/DataReplicaLocationRepositoryTest.java
index 48e2ff0c25..57ee79792d 100644
--- a/airavata-api/src/test/java/org/apache/airavata/execution/util/replicacatalog/DataReplicaLocationRepositoryTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/execution/util/replicacatalog/DataReplicaLocationRepositoryTest.java
@@ -27,10 +27,10 @@ import java.util.List;
 import java.util.Map;
 import org.apache.airavata.execution.util.common.TestBase;
 import org.apache.airavata.execution.util.cpi.ReplicaCatalogException;
-import org.apache.airavata.model.data.replica.DataProductModel;
-import org.apache.airavata.model.data.replica.DataProductType;
-import org.apache.airavata.model.data.replica.DataReplicaLocationModel;
-import org.apache.airavata.model.data.replica.ReplicaPersistentType;
+import org.apache.airavata.model.data.replica.proto.DataProductModel;
+import org.apache.airavata.model.data.replica.proto.DataProductType;
+import org.apache.airavata.model.data.replica.proto.DataReplicaLocationModel;
+import org.apache.airavata.model.data.replica.proto.ReplicaPersistentType;
 import org.apache.airavata.storage.model.DataReplicaMetadataEntity;
 import org.apache.airavata.storage.repository.DataProductRepository;
 import org.apache.airavata.storage.repository.DataReplicaLocationRepository;
@@ -50,22 +50,19 @@ public class DataReplicaLocationRepositoryTest extends TestBase {
 
     @Test
     public void dataReplicaLocationRepositoryTest() throws ReplicaCatalogException {
-        DataProductModel testDataProductModel = new DataProductModel();
-        testDataProductModel.setGatewayId(gatewayId);
-        testDataProductModel.setOwnerName("testUser");
-        testDataProductModel.setDataProductType(DataProductType.COLLECTION);
-        testDataProductModel.setProductName("productName");
+        DataProductModel testDataProductModel = DataProductModel.newBuilder().setGatewayId(gatewayId).build();
+        testDataProductModel = testDataProductModel.toBuilder().setOwnerName("testUser").build();
+        testDataProductModel = testDataProductModel.toBuilder().setDataProductType(DataProductType.COLLECTION).build();
+        testDataProductModel = testDataProductModel.toBuilder().setProductName("productName").build();
         String productUri = dataProductRepository.registerDataProduct(testDataProductModel);
         assertTrue(dataProductRepository.isDataProductExists(productUri));
 
-        DataReplicaLocationModel testDataReplicaLocationModel1 = new DataReplicaLocationModel();
-        testDataReplicaLocationModel1.setReplicaName("replicaName1");
-        testDataReplicaLocationModel1.setProductUri(productUri);
+        DataReplicaLocationModel testDataReplicaLocationModel1 = DataReplicaLocationModel.newBuilder().setReplicaName("replicaName1").build();
+        testDataReplicaLocationModel1 = testDataReplicaLocationModel1.toBuilder().setProductUri(productUri).build();
         String replicaId1 = dataReplicaLocationRepository.registerReplicaLocation(testDataReplicaLocationModel1);
 
-        DataReplicaLocationModel testDataReplicaLocationModel2 = new DataReplicaLocationModel();
-        testDataReplicaLocationModel2.setReplicaName("replicaName2");
-        testDataReplicaLocationModel2.setProductUri(productUri);
+        DataReplicaLocationModel testDataReplicaLocationModel2 = DataReplicaLocationModel.newBuilder().setReplicaName("replicaName2").build();
+        testDataReplicaLocationModel2 = testDataReplicaLocationModel2.toBuilder().setProductUri(productUri).build();
         String replicaId2 = dataReplicaLocationRepository.registerReplicaLocation(testDataReplicaLocationModel2);
 
         DataReplicaMetadataEntity dataReplicaMetadataEntity1 = new DataReplicaMetadataEntity();
@@ -83,8 +80,8 @@ public class DataReplicaLocationRepositoryTest extends TestBase {
                 dataReplicaMetadataEntity1.getMetadataKey(), dataReplicaMetadataEntity1.getMetadataValue());
         dataReplicaMetadataEntityMap.put(
                 dataReplicaMetadataEntity2.getMetadataKey(), dataReplicaMetadataEntity2.getMetadataValue());
-        testDataReplicaLocationModel1.setReplicaMetadata(dataReplicaMetadataEntityMap);
-        testDataReplicaLocationModel1.setReplicaPersistentType(ReplicaPersistentType.TRANSIENT);
+        testDataReplicaLocationModel1 = testDataReplicaLocationModel1.toBuilder().setReplicaMetadata(dataReplicaMetadataEntityMap).build();
+        testDataReplicaLocationModel1 = testDataReplicaLocationModel1.toBuilder().setReplicaPersistentType(ReplicaPersistentType.TRANSIENT).build();
         assertTrue(dataReplicaLocationRepository.updateReplicaLocation(testDataReplicaLocationModel1));
 
         DataReplicaLocationModel retrievedDataReplicaLocationModel =
diff --git a/airavata-api/src/test/java/org/apache/airavata/integration/ExperimentRepositoryIntegrationTest.java b/airavata-api/src/test/java/org/apache/airavata/integration/ExperimentRepositoryIntegrationTest.java
index 048d7bf4b2..31847bb2f7 100644
--- a/airavata-api/src/test/java/org/apache/airavata/integration/ExperimentRepositoryIntegrationTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/integration/ExperimentRepositoryIntegrationTest.java
@@ -25,13 +25,13 @@ import org.apache.airavata.execution.repository.ExperimentRepository;
 import org.apache.airavata.execution.repository.GatewayRepository;
 import org.apache.airavata.execution.repository.ProjectRepository;
 import org.apache.airavata.execution.util.common.TestBase;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentType;
-import org.apache.airavata.model.experiment.UserConfigurationDataModel;
-import org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel;
-import org.apache.airavata.model.status.ExperimentState;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.scheduling.proto.ComputationalResourceSchedulingModel;
+import org.apache.airavata.model.status.proto.ExperimentState;
+import org.apache.airavata.model.workspace.proto.Gateway;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.junit.jupiter.api.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -72,16 +72,14 @@ public class ExperimentRepositoryIntegrationTest extends TestBase {
         experimentRepository = new ExperimentRepository();
 
         // Seed: gateway and project are prerequisites for experiments
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("integration-test-gateway");
-        gateway.setDomain("INTEGRATION");
-        gateway.setEmailAddress("integration@test.com");
+        Gateway gateway = Gateway.newBuilder().setGatewayId("integration-test-gateway").build();
+        gateway = gateway.toBuilder().setDomain("INTEGRATION").build();
+        gateway = gateway.toBuilder().setEmailAddress("integration@test.com").build();
         gatewayId = gatewayRepository.addGateway(gateway);
 
-        Project project = new Project();
-        project.setName("Integration Test Project");
-        project.setOwner("integration-user");
-        project.setGatewayId(gatewayId);
+        Project project = Project.newBuilder().setName("Integration Test Project").build();
+        project = project.toBuilder().setOwner("integration-user").build();
+        project = project.toBuilder().setGatewayId(gatewayId).build();
         projectId = projectRepository.addProject(project, gatewayId);
 
         logger.info("Test DB initialized. gatewayId={}, projectId={}", gatewayId, projectId);
@@ -90,14 +88,13 @@ public class ExperimentRepositoryIntegrationTest extends TestBase {
     // --- Helper ---
 
     private ExperimentModel buildExperiment(String name) {
-        ExperimentModel experiment = new ExperimentModel();
-        experiment.setProjectId(projectId);
-        experiment.setGatewayId(gatewayId);
-        experiment.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        experiment.setUserName("integration-user");
-        experiment.setExperimentName(name);
-        experiment.setGatewayInstanceId("gw-instance-1");
-        experiment.setUserConfigurationData(new UserConfigurationDataModel());
+        ExperimentModel experiment = ExperimentModel.newBuilder().setProjectId(projectId).build();
+        experiment = experiment.toBuilder().setGatewayId(gatewayId).build();
+        experiment = experiment.toBuilder().setExperimentType(ExperimentType.SINGLE_APPLICATION).build();
+        experiment = experiment.toBuilder().setUserName("integration-user").build();
+        experiment = experiment.toBuilder().setExperimentName(name).build();
+        experiment = experiment.toBuilder().setGatewayInstanceId("gw-instance-1").build();
+        experiment = experiment.toBuilder().setUserConfigurationData(new UserConfigurationDataModel()).build();
         return experiment;
     }
 
@@ -118,9 +115,9 @@ public class ExperimentRepositoryIntegrationTest extends TestBase {
         assertEquals("integration-user", retrieved.getUserName());
         assertEquals("gw-instance-1", retrieved.getGatewayInstanceId());
         assertEquals(ExperimentType.SINGLE_APPLICATION, retrieved.getExperimentType());
-        assertEquals(1, retrieved.getExperimentStatusSize(), "initial status should be set");
+        assertEquals(1, retrieved.getExperimentStatusCount(), "initial status should be set");
         assertEquals(
-                ExperimentState.CREATED,
+                ExperimentState.EXPERIMENT_STATE_CREATED,
                 retrieved.getExperimentStatus().get(0).getState(),
                 "initial state should be CREATED");
 
@@ -138,17 +135,17 @@ public class ExperimentRepositoryIntegrationTest extends TestBase {
 
         assertEquals(
                 0,
-                experimentRepository.getExperiment(experimentId).getEmailAddressesSize(),
+                experimentRepository.getExperiment(experimentId).getEmailAddressesCount(),
                 "freshly created experiment should have no email addresses");
 
-        experiment.setDescription("updated description");
-        experiment.addToEmailAddresses("a@example.com");
-        experiment.addToEmailAddresses("b@example.com");
+        experiment = experiment.toBuilder().setDescription("updated description").build();
+        experiment = experiment.toBuilder().addEmailAddresses("a@example.com").build();
+        experiment = experiment.toBuilder().addEmailAddresses("b@example.com").build();
         experimentRepository.updateExperiment(experiment, experimentId);
 
         ExperimentModel updated = experimentRepository.getExperiment(experimentId);
         assertEquals("updated description", updated.getDescription());
-        assertEquals(2, updated.getEmailAddressesSize());
+        assertEquals(2, updated.getEmailAddressesCount());
         assertEquals("a@example.com", updated.getEmailAddresses().get(0));
         assertEquals("b@example.com", updated.getEmailAddresses().get(1));
 
@@ -162,25 +159,23 @@ public class ExperimentRepositoryIntegrationTest extends TestBase {
         ExperimentModel experiment = buildExperiment("config-test-experiment");
         String experimentId = experimentRepository.addExperiment(experiment);
 
-        ComputationalResourceSchedulingModel scheduling = new ComputationalResourceSchedulingModel();
-        scheduling.setResourceHostId("host-1");
-        scheduling.setTotalCPUCount(8);
-        scheduling.setNodeCount(2);
-        scheduling.setQueueName("batch");
-        scheduling.setWallTimeLimit(60);
+        ComputationalResourceSchedulingModel scheduling = ComputationalResourceSchedulingModel.newBuilder().setResourceHostId("host-1").build();
+        scheduling = scheduling.toBuilder().setTotalCpuCount(8).build();
+        scheduling = scheduling.toBuilder().setNodeCount(2).build();
+        scheduling = scheduling.toBuilder().setQueueName("batch").build();
+        scheduling = scheduling.toBuilder().setWallTimeLimit(60).build();
 
-        UserConfigurationDataModel config = new UserConfigurationDataModel();
-        config.setAiravataAutoSchedule(true);
-        config.setOverrideManualScheduledParams(false);
-        config.setComputationalResourceScheduling(scheduling);
+        UserConfigurationDataModel config = UserConfigurationDataModel.newBuilder().setAiravataAutoSchedule(true).build();
+        config = config.toBuilder().setOverrideManualScheduledParams(false).build();
+        config = config.toBuilder().setComputationalResourceScheduling(scheduling).build();
 
         assertEquals(
                 experimentId,
                 experimentRepository.addUserConfigurationData(config, experimentId),
                 "addUserConfigurationData should return the experimentId");
 
-        config.setInputStorageResourceId("storage-in");
-        config.setOutputStorageResourceId("storage-out");
+        config = config.toBuilder().setInputStorageResourceId("storage-in").build();
+        config = config.toBuilder().setOutputStorageResourceId("storage-out").build();
         experimentRepository.updateUserConfigurationData(config, experimentId);
 
         UserConfigurationDataModel retrieved = experimentRepository.getUserConfigurationData(experimentId);
@@ -190,7 +185,7 @@ public class ExperimentRepositoryIntegrationTest extends TestBase {
         ComputationalResourceSchedulingModel retrievedScheduling = retrieved.getComputationalResourceScheduling();
         assertNotNull(retrievedScheduling);
         assertEquals("host-1", retrievedScheduling.getResourceHostId());
-        assertEquals(8, retrievedScheduling.getTotalCPUCount());
+        assertEquals(8, retrievedScheduling.getTotalCpuCount());
         assertEquals(2, retrievedScheduling.getNodeCount());
         assertEquals("batch", retrievedScheduling.getQueueName());
         assertEquals(60, retrievedScheduling.getWallTimeLimit());
diff --git a/airavata-api/src/test/java/org/apache/airavata/integration/SharingServiceIntegrationTest.java b/airavata-api/src/test/java/org/apache/airavata/integration/SharingServiceIntegrationTest.java
index 09f953ca34..3c05a22504 100644
--- a/airavata-api/src/test/java/org/apache/airavata/integration/SharingServiceIntegrationTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/integration/SharingServiceIntegrationTest.java
@@ -24,7 +24,7 @@ import static org.junit.jupiter.api.Assertions.*;
 import java.util.Arrays;
 import java.util.List;
 import org.apache.airavata.sharing.handler.SharingRegistryServerHandler;
-import org.apache.airavata.sharing.registry.models.*;
+import org.apache.airavata.sharing.model.*;
 import org.apache.airavata.sharing.util.SharingRegistryDBInitConfig;
 import org.junit.jupiter.api.*;
 import org.junit.jupiter.api.parallel.Execution;
@@ -47,12 +47,12 @@ public class SharingServiceIntegrationTest extends AbstractIntegrationTest {
 
     private static SharingRegistryServerHandler handler;
 
-    // Domain
+    // DomainEntity
     private static String domainId;
 
     // Users
     private static String userId1, userId2, userId3, userId7;
-    private static User user3, user7;
+    private static UserEntity user3, user7;
 
     // Groups
     private static String groupId1, groupId2;
@@ -75,7 +75,7 @@ public class SharingServiceIntegrationTest extends AbstractIntegrationTest {
 
         // Create domain
         domainId = "test-domain." + System.currentTimeMillis();
-        Domain domain = new Domain();
+        DomainEntity domain = new DomainEntity();
         domain.setDomainId(domainId);
         domain.setName(domainId);
         domain.setDescription("integration test domain");
@@ -114,7 +114,7 @@ public class SharingServiceIntegrationTest extends AbstractIntegrationTest {
         long ts = System.currentTimeMillis();
         String userName = namePrefix + "." + ts;
         String userId = domainId + ":" + userName;
-        User user = new User();
+        UserEntity user = new UserEntity();
         user.setUserId(userId);
         user.setUserName(userName);
         user.setDomainId(domainId);
@@ -128,14 +128,14 @@ public class SharingServiceIntegrationTest extends AbstractIntegrationTest {
         long ts = System.currentTimeMillis();
         String groupName = namePrefix + "." + ts;
         String groupId = domainId + ":" + groupName;
-        UserGroup group = new UserGroup();
+        UserGroupEntity group = new UserGroupEntity();
         group.setGroupId(groupId);
         group.setDomainId(domainId);
         group.setName(groupName);
         group.setDescription("test group");
         group.setOwnerId(ownerId);
-        group.setGroupType(GroupType.USER_LEVEL_GROUP);
-        group.setGroupCardinality(GroupCardinality.MULTI_USER);
+        group.setGroupType(GroupType.USER_LEVEL_GROUP.name());
+        group.setGroupCardinality(GroupCardinality.MULTI_USER.name());
         group.setCreatedTime(ts);
         group.setUpdatedTime(ts);
         assertNotNull(handler.createGroup(group), "group creation should return id");
@@ -144,7 +144,7 @@ public class SharingServiceIntegrationTest extends AbstractIntegrationTest {
 
     private static String createPermissionType(String name, String description) throws Exception {
         long ts = System.currentTimeMillis();
-        PermissionType pt = new PermissionType();
+        PermissionTypeEntity pt = new PermissionTypeEntity();
         pt.setPermissionTypeId(domainId + ":" + name);
         pt.setDomainId(domainId);
         pt.setName(name);
@@ -158,7 +158,7 @@ public class SharingServiceIntegrationTest extends AbstractIntegrationTest {
 
     private static String createEntityType(String name, String description) throws Exception {
         long ts = System.currentTimeMillis();
-        EntityType et = new EntityType();
+        EntityTypeEntity et = new EntityTypeEntity();
         et.setEntityTypeId(domainId + ":" + name);
         et.setDomainId(domainId);
         et.setName(name);
@@ -179,7 +179,7 @@ public class SharingServiceIntegrationTest extends AbstractIntegrationTest {
             String parentEntityId)
             throws Exception {
         long ts = System.currentTimeMillis();
-        Entity entity = new Entity();
+        EntityEntity entity = new EntityEntity();
         entity.setEntityId(domainId + ":" + entitySuffix);
         entity.setDomainId(domainId);
         entity.setEntityTypeId(entityTypeId);
@@ -201,7 +201,7 @@ public class SharingServiceIntegrationTest extends AbstractIntegrationTest {
 
     @Test
     @Order(1)
-    @DisplayName("Domain is listed after creation")
+    @DisplayName("DomainEntity is listed after creation")
     void domainIsListed() throws Exception {
         assertTrue(handler.getDomains(0, 10).size() > 0, "getDomains should return at least the test domain");
     }
@@ -389,11 +389,11 @@ public class SharingServiceIntegrationTest extends AbstractIntegrationTest {
         assertTrue(handler.userHasAccess(domainId, userId7, entityId2, permissionTypeId1));
 
         // Reparent entityId2 to entityId6
-        Entity entity2 = handler.getEntity(domainId, entityId2);
+        EntityEntity entity2 = handler.getEntity(domainId, entityId2);
         entity2.setParentEntityId(entityId6);
         assertTrue(handler.updateEntity(entity2), "updateEntity should return true");
 
-        Entity entity2Updated = handler.getEntity(domainId, entityId2);
+        EntityEntity entity2Updated = handler.getEntity(domainId, entityId2);
         assertEquals(entityId6, entity2Updated.getParentEntityId(), "parent should be updated to entityId6");
 
         // userId2's access should be removed (was from old parent)
@@ -423,7 +423,7 @@ public class SharingServiceIntegrationTest extends AbstractIntegrationTest {
                 handler.getListOfDirectlySharedUsers(domainId, entityId2, permissionTypeId1),
                 "entityId2 should be directly shared with user7 only");
 
-        List<org.apache.airavata.sharing.registry.models.User> entityId2SharedUsers =
+        List<UserEntity> entityId2SharedUsers =
                 handler.getListOfSharedUsers(domainId, entityId2, permissionTypeId1);
         assertEquals(
                 2,
@@ -452,7 +452,7 @@ public class SharingServiceIntegrationTest extends AbstractIntegrationTest {
     void newUserAddedToInitialUserGroup() throws Exception {
         String initialUserGroupId = createGroup("initial-user-group", userId1);
 
-        Domain domain = handler.getDomain(domainId);
+        DomainEntity domain = handler.getDomain(domainId);
         domain.setInitialUserGroupId(initialUserGroupId);
         assertTrue(handler.updateDomain(domain), "updateDomain should return true");
         assertEquals(
@@ -461,7 +461,7 @@ public class SharingServiceIntegrationTest extends AbstractIntegrationTest {
                 "domain should have initialUserGroupId set");
 
         String userId8 = createUser("test-user-8");
-        List<UserGroup> user8Groups = handler.getAllMemberGroupsForUser(domainId, userId8);
+        List<UserGroupEntity> user8Groups = handler.getAllMemberGroupsForUser(domainId, userId8);
         assertFalse(user8Groups.isEmpty(), "new user should be added to at least one group");
         assertEquals(1, user8Groups.size(), "new user should be in exactly one group");
         assertEquals(initialUserGroupId, user8Groups.get(0).getGroupId(), "new user should be in the initialUserGroup");
diff --git a/airavata-api/src/test/java/org/apache/airavata/security/profile/iam/admin/services/core/tests/SetupNewGateway.java b/airavata-api/src/test/java/org/apache/airavata/security/profile/iam/admin/services/core/tests/SetupNewGateway.java
index 59d6976aad..addad06260 100644
--- a/airavata-api/src/test/java/org/apache/airavata/security/profile/iam/admin/services/core/tests/SetupNewGateway.java
+++ b/airavata-api/src/test/java/org/apache/airavata/security/profile/iam/admin/services/core/tests/SetupNewGateway.java
@@ -21,9 +21,9 @@ package org.apache.airavata.security.profile.iam.admin.services.core.tests;
 
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.airavata.model.credential.store.PasswordCredential;
-import org.apache.airavata.model.user.UserProfile;
-import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.model.credential.store.proto.PasswordCredential;
+import org.apache.airavata.model.user.proto.UserProfile;
+import org.apache.airavata.model.workspace.proto.Gateway;
 import org.apache.airavata.security.profile.iam.admin.services.core.impl.TenantManagementKeycloakImpl;
 import org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException;
 import org.slf4j.Logger;
@@ -41,19 +41,17 @@ public class SetupNewGateway {
     }
 
     public static void setUpGateway() {
-        Gateway testGateway = new Gateway();
-        testGateway.setGatewayId("maven.test.gateway");
-        testGateway.setGatewayName("maven test gateway");
-        testGateway.setIdentityServerUserName("mavenTest");
-        testGateway.setGatewayAdminFirstName("Maven");
-        testGateway.setGatewayAdminLastName("Test");
-        testGateway.setGatewayAdminEmail("some.man@gmail.com");
-        PasswordCredential superAdminCreds = new PasswordCredential();
-        superAdminCreds.setGatewayId(testGateway.getGatewayId());
-        superAdminCreds.setDescription("test credentials for IS admin creation");
-        superAdminCreds.setLoginUserName("airavataAdmin");
-        superAdminCreds.setPassword("Airavata@123");
-        superAdminCreds.setPortalUserName("superAdmin");
+        Gateway testGateway = Gateway.newBuilder().setGatewayId("maven.test.gateway").build();
+        testGateway = testGateway.toBuilder().setGatewayName("maven test gateway").build();
+        testGateway = testGateway.toBuilder().setIdentityServerUserName("mavenTest").build();
+        testGateway = testGateway.toBuilder().setGatewayAdminFirstName("Maven").build();
+        testGateway = testGateway.toBuilder().setGatewayAdminLastName("Test").build();
+        testGateway = testGateway.toBuilder().setGatewayAdminEmail("some.man@gmail.com").build();
+        PasswordCredential superAdminCreds = PasswordCredential.newBuilder().setGatewayId(testGateway.getGatewayId()).build();
+        superAdminCreds = superAdminCreds.toBuilder().setDescription("test credentials for IS admin creation").build();
+        superAdminCreds = superAdminCreds.toBuilder().setLoginUserName("airavataAdmin").build();
+        superAdminCreds = superAdminCreds.toBuilder().setPassword("Airavata@123").build();
+        superAdminCreds = superAdminCreds.toBuilder().setPortalUserName("superAdmin").build();
         TenantManagementKeycloakImpl client = new TenantManagementKeycloakImpl();
         try {
             client.addTenant(superAdminCreds, testGateway);
@@ -69,20 +67,18 @@ public class SetupNewGateway {
     }
 
     public static void UserRegistration() {
-        UserProfile user = new UserProfile();
-        user.setUserId("testuser");
-        user.setFirstName("test-firstname");
-        user.setLastName("test-lastname");
+        UserProfile user = UserProfile.newBuilder().setUserId("testuser").build();
+        user = user.toBuilder().setFirstName("test-firstname").build();
+        user = user.toBuilder().setLastName("test-lastname").build();
         List<String> emails = new ArrayList<>();
         emails.add("some.man@outlook.com");
-        user.setGatewayId("maven.test.gateway");
-        user.setEmails(emails);
-        PasswordCredential tenantAdminCreds = new PasswordCredential();
-        tenantAdminCreds.setGatewayId(user.getGatewayId());
-        tenantAdminCreds.setDescription("test credentials for tenant admin creation");
-        tenantAdminCreds.setLoginUserName("mavenTest");
-        tenantAdminCreds.setPassword("Test@1234");
-        tenantAdminCreds.setPortalUserName("TenantAdmin");
+        user = user.toBuilder().setGatewayId("maven.test.gateway").build();
+        user = user.toBuilder().setEmails(emails).build();
+        PasswordCredential tenantAdminCreds = PasswordCredential.newBuilder().setGatewayId(user.getGatewayId()).build();
+        tenantAdminCreds = tenantAdminCreds.toBuilder().setDescription("test credentials for tenant admin creation").build();
+        tenantAdminCreds = tenantAdminCreds.toBuilder().setLoginUserName("mavenTest").build();
+        tenantAdminCreds = tenantAdminCreds.toBuilder().setPassword("Test@1234").build();
+        tenantAdminCreds = tenantAdminCreds.toBuilder().setPortalUserName("TenantAdmin").build();
 
         TenantManagementKeycloakImpl client = new TenantManagementKeycloakImpl();
         try {
@@ -128,16 +124,15 @@ public class SetupNewGateway {
 
         List<String> emails = new ArrayList<>();
         emails.add("some.man@outlook.com");
-        user.setGatewayId("maven.test.gateway");
-        user.setEmails(emails);
+        user = user.toBuilder().setGatewayId("maven.test.gateway").build();
+        user = user.toBuilder().setEmails(emails).build();
         TenantManagementKeycloakImpl client = new TenantManagementKeycloakImpl();
         try {
-            PasswordCredential tenantAdminCreds = new PasswordCredential();
-            tenantAdminCreds.setGatewayId(user.getGatewayId());
-            tenantAdminCreds.setDescription("test credentials for tenant admin creation");
-            tenantAdminCreds.setLoginUserName("mavenTest");
-            tenantAdminCreds.setPassword("Test@1234");
-            tenantAdminCreds.setPortalUserName("TenantAdmin");
+            PasswordCredential tenantAdminCreds = PasswordCredential.newBuilder().setGatewayId(user.getGatewayId()).build();
+            tenantAdminCreds = tenantAdminCreds.toBuilder().setDescription("test credentials for tenant admin creation").build();
+            tenantAdminCreds = tenantAdminCreds.toBuilder().setLoginUserName("mavenTest").build();
+            tenantAdminCreds = tenantAdminCreds.toBuilder().setPassword("Test@1234").build();
+            tenantAdminCreds = tenantAdminCreds.toBuilder().setPortalUserName("TenantAdmin").build();
             // FIXME: get an access token from tenant admin creds
             String accessToken = "";
             List<UserProfile> list = client.findUser(accessToken, "maven.test.gateway", "some.man@outlook.com", null);
@@ -160,10 +155,9 @@ public class SetupNewGateway {
     }
 
     private static PasswordCredential createTenantAdminCreds(String tenantId, String username, String password) {
-        PasswordCredential tenantAdminCreds = new PasswordCredential();
-        tenantAdminCreds.setGatewayId(tenantId);
-        tenantAdminCreds.setLoginUserName(username);
-        tenantAdminCreds.setPassword(password);
+        PasswordCredential tenantAdminCreds = PasswordCredential.newBuilder().setGatewayId(tenantId).build();
+        tenantAdminCreds = tenantAdminCreds.toBuilder().setLoginUserName(username).build();
+        tenantAdminCreds = tenantAdminCreds.toBuilder().setPassword(password).build();
         return tenantAdminCreds;
     }
 }
diff --git a/airavata-api/src/test/java/org/apache/airavata/security/service/GatewayGroupsInitializerTest.java b/airavata-api/src/test/java/org/apache/airavata/security/service/GatewayGroupsInitializerTest.java
index 801367543a..9aadda3490 100644
--- a/airavata-api/src/test/java/org/apache/airavata/security/service/GatewayGroupsInitializerTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/security/service/GatewayGroupsInitializerTest.java
@@ -26,16 +26,16 @@ import java.util.List;
 import mockit.Expectations;
 import mockit.Mocked;
 import mockit.Verifications;
-import org.apache.airavata.credential.store.cpi.CredentialStoreService;
-import org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups;
-import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
-import org.apache.airavata.model.credential.store.PasswordCredential;
-import org.apache.airavata.registry.api.RegistryService;
-import org.apache.airavata.sharing.registry.models.GroupCardinality;
-import org.apache.airavata.sharing.registry.models.User;
-import org.apache.airavata.sharing.registry.models.UserGroup;
-import org.apache.airavata.sharing.registry.service.cpi.SharingRegistryService;
-import org.apache.thrift.TException;
+import org.apache.airavata.credential.handler.CredentialStoreServerHandler;
+import org.apache.airavata.execution.handler.RegistryServerHandler;
+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.proto.PasswordCredential;
+import org.apache.airavata.sharing.handler.SharingRegistryServerHandler;
+import org.apache.airavata.sharing.model.GroupCardinality;
+import org.apache.airavata.sharing.model.UserEntity;
+import org.apache.airavata.sharing.model.UserGroupEntity;
+
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -47,13 +47,13 @@ public class GatewayGroupsInitializerTest {
     public static final String ADMIN_OWNER_ID = TEST_ADMIN_USERNAME + "@" + GATEWAY_ID;
 
     @Mocked
-    RegistryService.Client mockRegistryClient;
+    RegistryServerHandler mockRegistryClient;
 
     @Mocked
-    SharingRegistryService.Client mockSharingRegistryClient;
+    SharingRegistryServerHandler mockSharingRegistryClient;
 
     @Mocked
-    CredentialStoreService.Client mockCredentialStoreClient;
+    CredentialStoreServerHandler mockCredentialStoreClient;
 
     GatewayGroupsInitializer gatewayGroupsInitializer;
 
@@ -64,24 +64,26 @@ public class GatewayGroupsInitializerTest {
     }
 
     @Test
-    public void testWithoutAdminUser() throws TException {
+    public void testWithoutAdminUser() throws Exception {
         runTest(false);
     }
 
     @Test
-    public void testWithAdminUser() throws TException {
+    public void testWithAdminUser() throws Exception {
         runTest(true);
     }
 
-    private void runTest(boolean doesAdminUserExist) throws TException {
-        GatewayResourceProfile gatewayResourceProfile = new GatewayResourceProfile();
-        gatewayResourceProfile.setGatewayID(GATEWAY_ID);
-        gatewayResourceProfile.setIdentityServerPwdCredToken(IDENTITY_SERVER_PWD_CRED_TOKEN);
+    private void runTest(boolean doesAdminUserExist) throws Exception {
+        GatewayResourceProfile gatewayResourceProfile = GatewayResourceProfile.newBuilder()
+                .setGatewayId(GATEWAY_ID)
+                .setIdentityServerPwdCredToken(IDENTITY_SERVER_PWD_CRED_TOKEN)
+                .build();
 
-        PasswordCredential passwordCredential = new PasswordCredential();
-        passwordCredential.setLoginUserName(TEST_ADMIN_USERNAME);
-        passwordCredential.setGatewayId(GATEWAY_ID);
-        passwordCredential.setToken(IDENTITY_SERVER_PWD_CRED_TOKEN);
+        PasswordCredential passwordCredential = PasswordCredential.newBuilder()
+                .setLoginUserName(TEST_ADMIN_USERNAME)
+                .setGatewayId(GATEWAY_ID)
+                .setToken(IDENTITY_SERVER_PWD_CRED_TOKEN)
+                .build();
 
         new Expectations() {
             {
@@ -99,7 +101,7 @@ public class GatewayGroupsInitializerTest {
 
         new Verifications() {
             {
-                User adminUser;
+                UserEntity adminUser;
 
                 if (!doesAdminUserExist) {
                     mockSharingRegistryClient.createUser(adminUser = withCapture());
@@ -108,18 +110,18 @@ public class GatewayGroupsInitializerTest {
                     assertEquals(adminUser.getDomainId(), GATEWAY_ID);
                 }
 
-                List<UserGroup> groups = new ArrayList<>();
+                List<UserGroupEntity> groups = new ArrayList<>();
                 mockSharingRegistryClient.createGroup(withCapture(groups));
                 assertEquals(3, groups.size());
                 groups.forEach(group -> {
                     assertEquals(GATEWAY_ID, group.getDomainId());
                     assertEquals(ADMIN_OWNER_ID, group.getOwnerId());
-                    assertEquals(GroupCardinality.MULTI_USER, group.getGroupCardinality());
+                    assertEquals(GroupCardinality.MULTI_USER.name(), group.getGroupCardinality());
                 });
                 groups.forEach(group -> assertEquals(GATEWAY_ID, group.getDomainId()));
-                UserGroup gatewayUsersGroup = groups.get(0);
-                UserGroup adminsGroup = groups.get(1);
-                UserGroup readOnlyAdminsGroup = groups.get(2);
+                UserGroupEntity gatewayUsersGroup = groups.get(0);
+                UserGroupEntity adminsGroup = groups.get(1);
+                UserGroupEntity readOnlyAdminsGroup = groups.get(2);
                 assertEquals("Gateway Users", gatewayUsersGroup.getName());
                 assertEquals(gatewayGroups.getDefaultGatewayUsersGroupId(), gatewayUsersGroup.getGroupId());
                 assertEquals("Admin Users", adminsGroup.getName());
diff --git a/airavata-api/src/test/java/org/apache/airavata/security/service/KeyCloakSecurityManagerTest.java b/airavata-api/src/test/java/org/apache/airavata/security/service/KeyCloakSecurityManagerTest.java
index b360faf38e..6c3238d831 100644
--- a/airavata-api/src/test/java/org/apache/airavata/security/service/KeyCloakSecurityManagerTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/security/service/KeyCloakSecurityManagerTest.java
@@ -36,7 +36,7 @@ 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.gatewaygroups.proto.GatewayGroups;
 import org.apache.airavata.model.security.proto.AuthzToken;
 import org.apache.airavata.security.service.authzcache.AuthzCacheIndex;
 import org.apache.airavata.security.service.authzcache.AuthzCacheManager;
@@ -44,8 +44,8 @@ import org.apache.airavata.security.service.authzcache.AuthzCacheManagerFactory;
 import org.apache.airavata.security.service.authzcache.AuthzCachedStatus;
 import org.apache.airavata.security.util.AiravataSecurityException;
 import org.apache.airavata.sharing.handler.SharingRegistryServerHandler;
-import org.apache.airavata.sharing.registry.models.UserGroup;
-import org.apache.thrift.TException;
+import org.apache.airavata.sharing.model.UserGroupEntity;
+
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -88,7 +88,7 @@ public class KeyCloakSecurityManagerTest {
             @Mocked URL anyURL,
             @Mocked HttpURLConnection openidConfigHttpURLConnection,
             @Mocked HttpURLConnection userinfoHttpURLConnection)
-            throws AiravataSecurityException, ApplicationSettingsException, IOException, TException {
+            throws AiravataSecurityException, ApplicationSettingsException, IOException, Exception {
 
         runGatewayUserMethodTest(
                 openidConfigHttpURLConnection, userinfoHttpURLConnection, "getAllGatewaySSHPubKeys", false);
@@ -99,7 +99,7 @@ public class KeyCloakSecurityManagerTest {
             @Mocked URL anyURL,
             @Mocked HttpURLConnection openidConfigHttpURLConnection,
             @Mocked HttpURLConnection userinfoHttpURLConnection)
-            throws AiravataSecurityException, ApplicationSettingsException, IOException, TException {
+            throws AiravataSecurityException, ApplicationSettingsException, IOException, Exception {
 
         runGatewayUserMethodTest(openidConfigHttpURLConnection, userinfoHttpURLConnection, "createProject", true);
     }
@@ -109,7 +109,7 @@ public class KeyCloakSecurityManagerTest {
             @Mocked URL anyURL,
             @Mocked HttpURLConnection openidConfigHttpURLConnection,
             @Mocked HttpURLConnection userinfoHttpURLConnection)
-            throws AiravataSecurityException, ApplicationSettingsException, IOException, TException {
+            throws AiravataSecurityException, ApplicationSettingsException, IOException, Exception {
 
         runGatewayUserMethodTest(openidConfigHttpURLConnection, userinfoHttpURLConnection, "userHasAccess", true);
     }
@@ -119,7 +119,7 @@ public class KeyCloakSecurityManagerTest {
             @Mocked URL anyURL,
             @Mocked HttpURLConnection openidConfigHttpURLConnection,
             @Mocked HttpURLConnection userinfoHttpURLConnection)
-            throws AiravataSecurityException, ApplicationSettingsException, IOException, TException {
+            throws AiravataSecurityException, ApplicationSettingsException, IOException, Exception {
 
         runGatewayUserMethodTest(
                 openidConfigHttpURLConnection, userinfoHttpURLConnection, "getGroupResourceList", true);
@@ -130,7 +130,7 @@ public class KeyCloakSecurityManagerTest {
             @Mocked URL anyURL,
             @Mocked HttpURLConnection openidConfigHttpURLConnection,
             @Mocked HttpURLConnection userinfoHttpURLConnection)
-            throws AiravataSecurityException, ApplicationSettingsException, IOException, TException {
+            throws AiravataSecurityException, ApplicationSettingsException, IOException, Exception {
 
         runGatewayUserMethodTest(
                 openidConfigHttpURLConnection, userinfoHttpURLConnection, "revokeSharingOfResourceFromGroups", true);
@@ -141,7 +141,7 @@ public class KeyCloakSecurityManagerTest {
             @Mocked URL anyURL,
             @Mocked HttpURLConnection openidConfigHttpURLConnection,
             @Mocked HttpURLConnection userinfoHttpURLConnection)
-            throws AiravataSecurityException, ApplicationSettingsException, IOException, TException {
+            throws AiravataSecurityException, ApplicationSettingsException, IOException, Exception {
 
         runGatewayUserMethodTest(
                 openidConfigHttpURLConnection, userinfoHttpURLConnection, "getApplicationDeployment", true);
@@ -152,7 +152,7 @@ public class KeyCloakSecurityManagerTest {
             @Mocked HttpURLConnection userinfoHttpURLConnection,
             String methodName,
             boolean expectedAuthorization)
-            throws IOException, ApplicationSettingsException, AiravataSecurityException, TException {
+            throws IOException, ApplicationSettingsException, AiravataSecurityException, Exception {
         createExpectationsForTokenVerification(openidConfigHttpURLConnection, userinfoHttpURLConnection);
         createExpectationsForAuthzCacheDisabled();
         createExpectationsForGatewayGroupsMembership(false, false);
@@ -165,7 +165,7 @@ public class KeyCloakSecurityManagerTest {
             @Mocked URL anyURL,
             @Mocked HttpURLConnection openidConfigHttpURLConnection,
             @Mocked HttpURLConnection userinfoHttpURLConnection)
-            throws AiravataSecurityException, ApplicationSettingsException, IOException, TException {
+            throws AiravataSecurityException, ApplicationSettingsException, IOException, Exception {
 
         createExpectationsForTokenVerification(openidConfigHttpURLConnection, userinfoHttpURLConnection);
         createExpectationsForAuthzCacheDisabled();
@@ -179,7 +179,7 @@ public class KeyCloakSecurityManagerTest {
             @Mocked URL anyURL,
             @Mocked HttpURLConnection openidConfigHttpURLConnection,
             @Mocked HttpURLConnection userinfoHttpURLConnection)
-            throws AiravataSecurityException, ApplicationSettingsException, IOException, TException {
+            throws AiravataSecurityException, ApplicationSettingsException, IOException, Exception {
 
         createExpectationsForTokenVerification(openidConfigHttpURLConnection, userinfoHttpURLConnection);
         createExpectationsForAuthzCacheDisabled();
@@ -193,7 +193,7 @@ public class KeyCloakSecurityManagerTest {
             @Mocked URL anyURL,
             @Mocked HttpURLConnection openidConfigHttpURLConnection,
             @Mocked HttpURLConnection userinfoHttpURLConnection)
-            throws AiravataSecurityException, ApplicationSettingsException, IOException, TException {
+            throws AiravataSecurityException, ApplicationSettingsException, IOException, Exception {
 
         createExpectationsForTokenVerification(openidConfigHttpURLConnection, userinfoHttpURLConnection);
         createExpectationsForAuthzCacheDisabled();
@@ -204,7 +204,7 @@ public class KeyCloakSecurityManagerTest {
 
     @Test
     public void testAuthorizedMethodFromCache()
-            throws AiravataSecurityException, ApplicationSettingsException, IOException, TException {
+            throws AiravataSecurityException, ApplicationSettingsException, IOException, Exception {
 
         createExpectationsForAuthzCache(true, "someMethod", AuthzCachedStatus.AUTHORIZED);
 
@@ -213,7 +213,7 @@ public class KeyCloakSecurityManagerTest {
 
     @Test
     public void testNotAuthorizedMethodFromCache()
-            throws AiravataSecurityException, ApplicationSettingsException, IOException, TException {
+            throws AiravataSecurityException, ApplicationSettingsException, IOException, Exception {
 
         createExpectationsForAuthzCache(true, "someMethod", AuthzCachedStatus.NOT_AUTHORIZED);
 
@@ -225,7 +225,7 @@ public class KeyCloakSecurityManagerTest {
             @Mocked URL anyURL,
             @Mocked HttpURLConnection openidConfigHttpURLConnection,
             @Mocked HttpURLConnection userinfoHttpURLConnection)
-            throws AiravataSecurityException, ApplicationSettingsException, IOException, TException {
+            throws AiravataSecurityException, ApplicationSettingsException, IOException, Exception {
 
         createExpectationsForTokenVerification(openidConfigHttpURLConnection, userinfoHttpURLConnection);
         createExpectationsForGatewayGroupsMembership(false, true);
@@ -291,29 +291,33 @@ public class KeyCloakSecurityManagerTest {
     }
 
     private void createExpectationsForGatewayGroupsMembership(boolean isInAdminsGroup, boolean isInReadOnlyAdminsGroup)
-            throws TException {
+            throws Exception {
 
         new Expectations() {
             {
                 mockRegistryServiceClient.isGatewayGroupsExists(TEST_GATEWAY);
                 result = true;
                 mockRegistryServiceClient.getGatewayGroups(TEST_GATEWAY);
-                result = new GatewayGroups(
-                        TEST_GATEWAY, "admins-group-id", "read-only-admins-group-id", "default-gateway-users-group-id");
-                List<UserGroup> userGroups = new ArrayList<>();
-                UserGroup dummyGroup1 = new UserGroup();
+                result = GatewayGroups.newBuilder()
+                        .setGatewayId(TEST_GATEWAY)
+                        .setAdminsGroupId("admins-group-id")
+                        .setReadOnlyAdminsGroupId("read-only-admins-group-id")
+                        .setDefaultGatewayUsersGroupId("default-gateway-users-group-id")
+                        .build();
+                List<UserGroupEntity> userGroups = new ArrayList<>();
+                UserGroupEntity dummyGroup1 = new UserGroupEntity();
                 dummyGroup1.setGroupId("dummy1-group-id");
                 userGroups.add(dummyGroup1);
-                UserGroup dummyGroup2 = new UserGroup();
+                UserGroupEntity dummyGroup2 = new UserGroupEntity();
                 dummyGroup2.setGroupId("dummy2-group-id");
                 userGroups.add(dummyGroup2);
                 if (isInAdminsGroup) {
-                    UserGroup adminsGroup = new UserGroup();
+                    UserGroupEntity adminsGroup = new UserGroupEntity();
                     adminsGroup.setGroupId("admins-group-id");
                     userGroups.add(adminsGroup);
                 }
                 if (isInReadOnlyAdminsGroup) {
-                    UserGroup readOnlyAdminsGroup = new UserGroup();
+                    UserGroupEntity readOnlyAdminsGroup = new UserGroupEntity();
                     readOnlyAdminsGroup.setGroupId("read-only-admins-group-id");
                     userGroups.add(readOnlyAdminsGroup);
                 }
diff --git a/airavata-api/src/test/java/org/apache/airavata/security/util/AuthenticatorConfigurationReaderTest.java b/airavata-api/src/test/java/org/apache/airavata/security/util/AuthenticatorConfigurationReaderTest.java
index 6674a5319c..cfd5806d58 100644
--- a/airavata-api/src/test/java/org/apache/airavata/security/util/AuthenticatorConfigurationReaderTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/security/util/AuthenticatorConfigurationReaderTest.java
@@ -56,7 +56,7 @@ public class AuthenticatorConfigurationReaderTest {
             if (authenticator instanceof TestDBAuthenticator1) {
                 assertEquals("dbAuthenticator1", authenticator.getAuthenticatorName());
                 assertEquals(6, authenticator.getPriority());
-                assertTrue(authenticator.isEnabled());
+                assertTrue(authenticator.getEnabled());
                 assertEquals(
                         "jdbc:sql:thin:@//myhost:1521/mysql1", ((TestDBAuthenticator1) authenticator).getDatabaseURL());
                 assertEquals("org.mariadb.jdbc.Driver", ((TestDBAuthenticator1) authenticator).getDatabaseDriver());
@@ -69,12 +69,12 @@ public class AuthenticatorConfigurationReaderTest {
             } else if (authenticator instanceof TestDBAuthenticator2) {
                 assertEquals("dbAuthenticator2", authenticator.getAuthenticatorName());
                 assertEquals(7, authenticator.getPriority());
-                assertTrue(authenticator.isEnabled());
+                assertTrue(authenticator.getEnabled());
                 assertTrue(authenticator.getUserStore() instanceof LDAPUserStore);
             } else if (authenticator instanceof TestDBAuthenticator3) {
                 assertEquals("dbAuthenticator3", authenticator.getAuthenticatorName());
                 assertEquals(8, authenticator.getPriority());
-                assertTrue(authenticator.isEnabled());
+                assertTrue(authenticator.getEnabled());
                 assertEquals(
                         "jdbc:sql:thin:@//myhost:1521/mysql3", ((TestDBAuthenticator3) authenticator).getDatabaseURL());
                 assertEquals("org.mariadb.jdbc.Driver", ((TestDBAuthenticator3) authenticator).getDatabaseDriver());
diff --git a/airavata-api/src/test/java/org/apache/airavata/sharing/handler/CipresTest.java b/airavata-api/src/test/java/org/apache/airavata/sharing/handler/CipresTest.java
index b19315197e..b82947a364 100644
--- a/airavata-api/src/test/java/org/apache/airavata/sharing/handler/CipresTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/sharing/handler/CipresTest.java
@@ -21,56 +21,26 @@ package org.apache.airavata.sharing.handler;
 
 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.sharing.registry.models.*;
-import org.apache.airavata.sharing.registry.service.cpi.SharingRegistryService;
+import org.apache.airavata.sharing.model.*;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
-import org.apache.thrift.TException;
-import org.apache.thrift.protocol.TBinaryProtocol;
-import org.apache.thrift.protocol.TProtocol;
-import org.apache.thrift.transport.TSSLTransportFactory;
-import org.apache.thrift.transport.TSocket;
-import org.apache.thrift.transport.TTransport;
-import org.apache.thrift.transport.TTransportException;
 
 public class CipresTest {
     private static final Logger log = LogManager.getLogger(CipresTest.class);
 
-    public static void main(String[] args) throws InterruptedException, TException, ApplicationSettingsException {
+    public static void main(String[] args) throws InterruptedException, Exception, ApplicationSettingsException {
         System.out.println("Hello World!");
-        // should use the correct host name and port here
-        String serverHost = "wb-airavata.scigap.org";
-        int serverPort = 7878;
 
-        TTransport transport = null;
-        TProtocol protocol;
-        TSSLTransportFactory.TSSLTransportParameters params;
+        SharingRegistryServerHandler sharingServiceClient = new SharingRegistryServerHandler();
 
         try {
-
-            SharingRegistryService.Client sharingServiceClient;
-
-            if (!ServerSettings.isTLSEnabled()) {
-                transport = new TSocket(serverHost, serverPort);
-                transport.open();
-            } else {
-                // TLS enabled client
-                params = new TSSLTransportFactory.TSSLTransportParameters();
-                params.setKeyStore(ServerSettings.getKeyStorePath(), ServerSettings.getKeyStorePassword());
-                transport = TSSLTransportFactory.getClientSocket(serverHost, serverPort, 10000, params);
-            }
-
-            protocol = new TBinaryProtocol(transport);
-            sharingServiceClient = new SharingRegistryService.Client(protocol);
-
             try {
                 sharingServiceClient.deleteDomain("test-domain");
             } catch (SharingRegistryException sre1) {
                 System.out.println("deleteDomain failed" + sre1.getMessage() + "\n");
             }
-            Domain domain = new Domain();
+            DomainEntity domain = new DomainEntity();
             // has to be one word
             domain.setName("test-domain");
             // optional
@@ -79,7 +49,7 @@ public class CipresTest {
             String domainId = sharingServiceClient.createDomain(domain);
             System.out.println("After domain creation...\n");
 
-            User user1 = new User();
+            UserEntity user1 = new UserEntity();
             String userName1 = "test-user-1";
             String userId1 = "test-user-1";
             // required
@@ -88,17 +58,8 @@ public class CipresTest {
             user1.setUserName(userName1);
             // required
             user1.setDomainId(domainId);
-            // required
-            user1.setFirstName("John");
-            // required
-            user1.setLastName("Doe");
-            // required
-            user1.setEmail("john.doe@abc.com");
-            // optional - this should be bytes of the users image icon
-            // byte[] icon = new byte[10];
-            // user1.setIcon(icon);
             sharingServiceClient.createUser(user1);
-            User user2 = new User();
+            UserEntity user2 = new UserEntity();
             String userName2 = "test-user-2";
             String userId2 = "test-user-2";
             // required
@@ -107,17 +68,8 @@ public class CipresTest {
             user2.setUserName(userName2);
             // required
             user2.setDomainId(domainId);
-            // required
-            user2.setFirstName("John");
-            // required
-            user2.setLastName("Doe");
-            // required
-            user2.setEmail("john.doe@abc.com");
-            // optional - this should be bytes of the users image icon
-            // byte[] icon = new byte[20];
-            // user2.setIcon(icon);
             sharingServiceClient.createUser(user2);
-            User user3 = new User();
+            UserEntity user3 = new UserEntity();
             String userName3 = "test-user-3";
             String userId3 = "test-user-3";
             // required
@@ -126,46 +78,33 @@ public class CipresTest {
             user3.setUserName(userName3);
             // required
             user3.setDomainId(domainId);
-            // required
-            user3.setFirstName("John");
-            // required
-            user3.setLastName("Doe");
-            // required
-            user3.setEmail("john.doe@abc.com");
-            // optional - this should be bytes of the users image icon
-            // byte[] icon = new byte[30];
-            // user3.setIcon(icon);
             sharingServiceClient.createUser(user3);
             System.out.println("After user creation...\n");
 
-            UserGroup userGroup1 = new UserGroup();
+            UserGroupEntity userGroup1 = new UserGroupEntity();
             // required
             userGroup1.setGroupId("test-group-1");
             // required
             userGroup1.setDomainId(domainId);
             // required
             userGroup1.setName("test-group-1");
-            // optional
-            // userGroup1.setDescription("test group description");
             // required
             userGroup1.setOwnerId("test-user-1");
             // required
-            userGroup1.setGroupType(GroupType.USER_LEVEL_GROUP);
+            userGroup1.setGroupType(GroupType.USER_LEVEL_GROUP.name());
             sharingServiceClient.createGroup(userGroup1);
             // Similarly create another group "userGroup2" with the owner being "test-user-2".
-            UserGroup userGroup2 = new UserGroup();
+            UserGroupEntity userGroup2 = new UserGroupEntity();
             // required
             userGroup2.setGroupId("test-group-2");
             // required
             userGroup2.setDomainId(domainId);
             // required
             userGroup2.setName("test-group-2");
-            // optional
-            // userGroup2.setDescription("test group description");
             // required
             userGroup2.setOwnerId("test-user-2");
             // required
-            userGroup2.setGroupType(GroupType.USER_LEVEL_GROUP);
+            userGroup2.setGroupType(GroupType.USER_LEVEL_GROUP.name());
             sharingServiceClient.createGroup(userGroup2);
             System.out.println("After group creation...\n");
 
@@ -174,7 +113,7 @@ public class CipresTest {
 
             sharingServiceClient.addChildGroupsToParentGroup(domainId, List.of("test-group-2"), "test-group-1");
 
-            PermissionType permissionType1 = new PermissionType();
+            PermissionTypeEntity permissionType1 = new PermissionTypeEntity();
             // required
             permissionType1.setPermissionTypeId("READ");
             // required
@@ -184,13 +123,13 @@ public class CipresTest {
             // optional
             permissionType1.setDescription("READ description");
             sharingServiceClient.createPermissionType(permissionType1);
-            PermissionType permissionType2 = new PermissionType();
+            PermissionTypeEntity permissionType2 = new PermissionTypeEntity();
             permissionType2.setPermissionTypeId("WRITE");
             permissionType2.setDomainId(domainId);
             permissionType2.setName("WRITE");
             permissionType2.setDescription("WRITE description");
             sharingServiceClient.createPermissionType(permissionType2);
-            PermissionType permissionType3 = new PermissionType();
+            PermissionTypeEntity permissionType3 = new PermissionTypeEntity();
             permissionType3.setPermissionTypeId("CLONE");
             permissionType3.setDomainId(domainId);
             permissionType3.setName("CLONE");
@@ -198,7 +137,7 @@ public class CipresTest {
             sharingServiceClient.createPermissionType(permissionType3);
             System.out.println("After adding groups to parent group...\n");
 
-            EntityType entityType1 = new EntityType();
+            EntityTypeEntity entityType1 = new EntityTypeEntity();
             // required
             entityType1.setEntityTypeId("PROJECT");
             // required
@@ -208,13 +147,13 @@ public class CipresTest {
             // optional
             entityType1.setDescription("PROJECT entity type description");
             sharingServiceClient.createEntityType(entityType1);
-            EntityType entityType2 = new EntityType();
+            EntityTypeEntity entityType2 = new EntityTypeEntity();
             entityType2.setEntityTypeId("EXPERIMENT");
             entityType2.setDomainId(domainId);
             entityType2.setName("EXPERIMENT");
             entityType2.setDescription("EXPERIMENT entity type");
             sharingServiceClient.createEntityType(entityType2);
-            EntityType entityType3 = new EntityType();
+            EntityTypeEntity entityType3 = new EntityTypeEntity();
             entityType3.setEntityTypeId("FILE");
             entityType3.setDomainId(domainId);
             entityType3.setName("FILE");
@@ -222,7 +161,7 @@ public class CipresTest {
             sharingServiceClient.createEntityType(entityType3);
             System.out.println("After project entity creation...\n");
 
-            Entity entity1 = new Entity();
+            EntityEntity entity1 = new EntityEntity();
             // required
             entity1.setEntityId("test-project-1");
             // required
@@ -241,7 +180,7 @@ public class CipresTest {
             entity1.setOriginalEntityCreationTime(System.currentTimeMillis());
             sharingServiceClient.createEntity(entity1);
             System.out.println("After currentTimeMillis()...\n");
-            Entity entity2 = new Entity();
+            EntityEntity entity2 = new EntityEntity();
             entity2.setEntityId("test-experiment-1");
             entity2.setDomainId(domainId);
             entity2.setEntityTypeId("EXPERIMENT");
@@ -253,7 +192,7 @@ public class CipresTest {
             System.out.println("Before sharingServiceClient.createEntity entity2...\n");
             sharingServiceClient.createEntity(entity2);
             System.out.println("After sharingServiceClient.createEntity entity2...\n");
-            Entity entity3 = new Entity();
+            EntityEntity entity3 = new EntityEntity();
             entity3.setEntityId("test-experiment-2");
             entity3.setDomainId(domainId);
             entity3.setEntityTypeId("EXPERIMENT");
@@ -264,7 +203,7 @@ public class CipresTest {
             entity3.setFullText("test experiment 1 3-methyl 1-butanol stampede");
             sharingServiceClient.createEntity(entity3);
             System.out.println("After sharingServiceClient.createEntity entity3...\n");
-            Entity entity4 = new Entity();
+            EntityEntity entity4 = new EntityEntity();
             entity4.setEntityId("test-file-1");
             entity4.setDomainId(domainId);
             entity4.setEntityTypeId("FILE");
@@ -277,33 +216,25 @@ public class CipresTest {
             System.out.println("After sharingServiceClient.createEntity entity4...\n");
             System.out.println("After test entity creation...\n");
 
-            // shared with cascading permissions
-            // System.out.println("Before shareEntityWithUsers WRITE...\n");
-            // sharingServiceClient.shareEntityWithUsers(domainId, "test-project-1", Arrays.asList("test-user-2"),
-            // "WRITE", true);
             System.out.println("Before shareEntityWithGroups READ...\n");
             long time = System.currentTimeMillis();
             sharingServiceClient.shareEntityWithGroups(
                     domainId, "test-experiment-2", List.of("test-group-2"), "READ", true);
             System.out.println("Time for sharing " + (System.currentTimeMillis() - time));
-            // shared with non cascading permissions
             System.out.println("Before shareEntityWithGroups CLONE...\n");
             time = System.currentTimeMillis();
             sharingServiceClient.shareEntityWithGroups(
                     domainId, "test-experiment-2", List.of("test-group-2"), "CLONE", false);
             System.out.println("Time for sharing " + (System.currentTimeMillis() - time));
 
-            // test-project-1 is explicitly shared with test-user-2 with WRITE permission
             System.out.println("Before userHasAccess 1...\n");
             System.out.println(sharingServiceClient.userHasAccess(domainId, "test-user-2", "test-project-1", "WRITE"));
-            // test-user-2 has WRITE permission to test-experiment-1 and test-experiment-2 indirectly
             System.out.println("Before userHasAccess 2...\n");
             System.out.println(
                     sharingServiceClient.userHasAccess(domainId, "test-user-2", "test-experiment-1", "WRITE"));
             System.out.println("Before userHasAccess 3...\n");
             System.out.println(
                     sharingServiceClient.userHasAccess(domainId, "test-user-2", "test-experiment-2", "WRITE"));
-            // test-user-2 does not have READ permission to test-experiment-1 and test-experiment-2
             System.out.println("Before userHasAccess 4...\n");
             System.out.println(
                     sharingServiceClient.userHasAccess(domainId, "test-user-2", "test-experiment-1", "READ"));
@@ -311,34 +242,25 @@ public class CipresTest {
             System.out.println("Before userHasAccess 5...\n");
             System.out.println(
                     sharingServiceClient.userHasAccess(domainId, "test-user-2", "test-experiment-2", "READ"));
-            // test-user-3 does not have READ permission to test-project-1
             System.out.println("Before userHasAccess 6...\n");
             System.out.println(sharingServiceClient.userHasAccess(domainId, "test-user-3", "test-project-1", "READ"));
-            // test-experiment-2 is shared with test-group-2 with READ permission. Therefore test-user-3 has READ
-            // permission
             System.out.println("Before userHasAccess 7...\n");
             System.out.println(
                     sharingServiceClient.userHasAccess(domainId, "test-user-3", "test-experiment-2", "READ"));
-            // test-user-3 does not have WRITE permission to test-experiment-2
             System.out.println("Before userHasAccess 8...\n");
             System.out.println(
                     sharingServiceClient.userHasAccess(domainId, "test-user-3", "test-experiment-2", "WRITE"));
-            // test-user-3 has CLONE permission to test-experiment-2
             System.out.println("Before userHasAccess 9...\n");
             System.out.println(
                     (sharingServiceClient.userHasAccess(domainId, "test-user-3", "test-experiment-2", "CLONE")));
-            // test-user-3 does not have CLONE permission to test-file-1
             System.out.println("Before userHasAccess 10...\n");
             System.out.println((sharingServiceClient.userHasAccess(domainId, "test-user-3", "test-file-1", "CLONE")));
             System.out.println("After cascading permissions...\n");
 
             ArrayList<SearchCriteria> filters = new ArrayList<>();
-            // ArrayList<SearchCriteria> filters = new List<>();
             SearchCriteria searchCriteria = new SearchCriteria();
             searchCriteria.setSearchCondition(SearchCondition.LIKE);
             searchCriteria.setValue("experiment stampede methyl");
-            // searchCriteria.setValue("stampede");
-            // searchCriteria.setSearchField(EntitySearchField.NAME);
             searchCriteria.setSearchField(EntitySearchField.FULL_TEXT);
             filters.add(searchCriteria);
             searchCriteria = new SearchCriteria();
@@ -352,98 +274,42 @@ public class CipresTest {
             System.out.println(sharingServiceClient.searchEntities(domainId, "test-user-2", filters, 0, -1));
             System.out.println("After searchEntities...\n");
 
-            // System.out.println("After searchEntities...\n");
-            User userA = new User();
+            UserEntity userA = new UserEntity();
             String userNameA = "UserA";
             String userIdA = "UserA";
-            // required
             userA.setUserId(userIdA);
-            // required
             userA.setUserName(userNameA);
-            // required
             userA.setDomainId(domainId);
-            // required
-            userA.setFirstName("User");
-            // required
-            userA.setLastName("A");
-            // required
-            userA.setEmail("user.a@example.com");
-            // optional - this should be bytes of the users image icon
-            // byte[] icon = new byte[10];
-            // userA.setIcon(icon);
             sharingServiceClient.createUser(userA);
-            User userB = new User();
+            UserEntity userB = new UserEntity();
             String userNameB = "UserB";
             String userIdB = "UserB";
-            // required
             userB.setUserId(userIdB);
-            // required
             userB.setUserName(userNameB);
-            // required
             userB.setDomainId(domainId);
-            // required
-            userB.setFirstName("User");
-            // required
-            userB.setLastName("B");
-            // required
-            userB.setEmail("user.b@example.com");
-            // optional - this should be bytes of the users image icon
-            // byte[] icon = new byte[10];
-            // userB.setIcon(icon);
             sharingServiceClient.createUser(userB);
-            User userC = new User();
+            UserEntity userC = new UserEntity();
             String userNameC = "UserC";
             String userIdC = "UserC";
-            // required
             userC.setUserId(userIdC);
-            // required
             userC.setUserName(userNameC);
-            // required
             userC.setDomainId(domainId);
-            // required
-            userC.setFirstName("User");
-            // required
-            userC.setLastName("C");
-            // required
-            userC.setEmail("user.c@example.com");
-            // optional - this should be bytes of the users image icon
-            // byte[] icon = new byte[10];
-            // userC.setIcon(icon);
             sharingServiceClient.createUser(userC);
-            User userD = new User();
+            UserEntity userD = new UserEntity();
             String userNameD = "UserD";
             String userIdD = "UserD";
-            // required
             userD.setUserId(userIdD);
-            // required
             userD.setUserName(userNameD);
-            // required
             userD.setDomainId(domainId);
-            // required
-            userD.setFirstName("User");
-            // required
-            userD.setLastName("D");
-            // required
-            userD.setEmail("user.d@example.com");
-            // optional - this should be bytes of the users image icon
-            // byte[] icon = new byte[10];
-            // userD.setIcon(icon);
             sharingServiceClient.createUser(userD);
             System.out.println("After user creation...\n");
 
-            UserGroup Group1 = new UserGroup();
-            // required
+            UserGroupEntity Group1 = new UserGroupEntity();
             Group1.setGroupId("Group1");
-            // required
             Group1.setDomainId(domainId);
-            // required
             Group1.setName("Group1");
-            // optional
-            // userGroup1.setDescription("test group description");
-            // required
             Group1.setOwnerId("UserA");
-            // required
-            Group1.setGroupType(GroupType.USER_LEVEL_GROUP);
+            Group1.setGroupType(GroupType.USER_LEVEL_GROUP.name());
             sharingServiceClient.createGroup(Group1);
             System.out.println("After Group1 creation...\n");
 
@@ -453,71 +319,45 @@ public class CipresTest {
 
             System.out.println("After adding users to Group1 creation...\n");
 
-            EntityType entityTypeFolder = new EntityType();
-            // required
+            EntityTypeEntity entityTypeFolder = new EntityTypeEntity();
             entityTypeFolder.setEntityTypeId("FOLDER");
-            // required
             entityTypeFolder.setDomainId(domainId);
-            // required
             entityTypeFolder.setName("FOLDER");
-            // optional
-            // entityTypeFolder.setDescription("PROJECT entity type description");
             sharingServiceClient.createEntityType(entityTypeFolder);
             System.out.println("After creating FOLDER entity type...\n");
 
-            EntityType entityTypeInputData = new EntityType();
-            // required
+            EntityTypeEntity entityTypeInputData = new EntityTypeEntity();
             entityTypeInputData.setEntityTypeId("INPUTDATA");
-            // required
             entityTypeInputData.setDomainId(domainId);
-            // required
             entityTypeInputData.setName("INPUTDATA");
-            // optional
-            // entityTypeFolder.setDescription("PROJECT entity type description");
             sharingServiceClient.createEntityType(entityTypeInputData);
             System.out.println("After creating INPUTDATA entity type...\n");
 
-            Entity entityB1 = new Entity();
-            // required
+            EntityEntity entityB1 = new EntityEntity();
             entityB1.setEntityId("UserBProject1");
-            // required
             entityB1.setDomainId(domainId);
-            // required
             entityB1.setEntityTypeId("PROJECT");
-            // required
             entityB1.setOwnerId("UserB");
-            // required
             entityB1.setName("UserBProject1");
-            // optional
             entityB1.setDescription("User B's Project 1");
-            // optional
             entityB1.setFullText("test project 1");
-            // optional - If not set this will be default to current system time
             entityB1.setOriginalEntityCreationTime(System.currentTimeMillis());
             sharingServiceClient.createEntity(entityB1);
             System.out.println("After creating UserBProject1 ...\n");
 
-            Entity entityC1 = new Entity();
-            // required
+            EntityEntity entityC1 = new EntityEntity();
             entityC1.setEntityId("UserCProject2");
-            // required
             entityC1.setDomainId(domainId);
-            // required
             entityC1.setEntityTypeId("PROJECT");
-            // required
             entityC1.setOwnerId("UserC");
-            // required
             entityC1.setName("UserCProject2");
-            // optional
             entityC1.setDescription("User C's Project 2");
-            // optional
             entityC1.setFullText("test project 2");
-            // optional - If not set this will be default to current system time
             entityC1.setOriginalEntityCreationTime(System.currentTimeMillis());
             sharingServiceClient.createEntity(entityC1);
             System.out.println("After creating UserCProject2 ...\n");
 
-            Entity entityF1 = new Entity();
+            EntityEntity entityF1 = new EntityEntity();
             entityF1.setEntityId("Folder1");
             entityF1.setDomainId(domainId);
             entityF1.setEntityTypeId("FOLDER");
@@ -529,7 +369,7 @@ public class CipresTest {
             sharingServiceClient.createEntity(entityF1);
             System.out.println("After creating Folder1 ...\n");
 
-            Entity entityD1 = new Entity();
+            EntityEntity entityD1 = new EntityEntity();
             entityD1.setEntityId("Data1");
             entityD1.setDomainId(domainId);
             entityD1.setEntityTypeId("INPUTDATA");
@@ -541,7 +381,7 @@ public class CipresTest {
             sharingServiceClient.createEntity(entityD1);
             System.out.println("After creating Data1 ...\n");
 
-            Entity entityF2 = new Entity();
+            EntityEntity entityF2 = new EntityEntity();
             entityF2.setEntityId("Folder2");
             entityF2.setDomainId(domainId);
             entityF2.setEntityTypeId("FOLDER");
@@ -553,7 +393,7 @@ public class CipresTest {
             sharingServiceClient.createEntity(entityF2);
             System.out.println("After creating Folder2 ...\n");
 
-            Entity entityD2 = new Entity();
+            EntityEntity entityD2 = new EntityEntity();
             entityD2.setEntityId("Data2");
             entityD2.setDomainId(domainId);
             entityD2.setEntityTypeId("INPUTDATA");
@@ -565,16 +405,12 @@ public class CipresTest {
             sharingServiceClient.createEntity(entityD2);
             System.out.println("After creating Data2 ...\n");
 
-            // sharingServiceClient.shareEntityWithGroups(domainId, "test-experiment-2", Arrays.asList("test-group-2"),
-            // "READ", true);
             time = System.currentTimeMillis();
             sharingServiceClient.shareEntityWithGroups(domainId, "Folder1", List.of("Group1"), "READ", true);
             System.out.println("Time for sharing " + (System.currentTimeMillis() - time));
             System.out.println("After READ sharing UserBFolder1 with Group1 ...\n");
-            // sharingServiceClient.shareEntityWithGroups(domainId, "Folder2", Arrays.asList("Group1"), "READ", true);
-            // System.out.println("After READ sharing UserCFolder2 with Group1 ...\n");
 
-            Entity entityD3 = new Entity();
+            EntityEntity entityD3 = new EntityEntity();
             entityD3.setEntityId("Data3");
             entityD3.setDomainId(domainId);
             entityD3.setEntityTypeId("INPUTDATA");
@@ -607,7 +443,6 @@ public class CipresTest {
                     .size());
             System.out.println(sharingServiceClient.searchEntities(domainId, "UserC", sharedfilters, 0, -1));
             searchCriteria = new SearchCriteria();
-            // searchCriteria.setSearchCondition(SearchCondition.EQUAL);
             searchCriteria.setSearchCondition(SearchCondition.NOT);
             searchCriteria.setValue("UserC");
             searchCriteria.setSearchField(EntitySearchField.OWNER_ID);
@@ -632,15 +467,10 @@ public class CipresTest {
             System.out.println("After deleting Group1 ...\n");
 
             System.out.println("End of try clause...\n");
-        } catch (TTransportException ex1) {
-            log.error("TTransportException: {}", ex1.getMessage(), ex1);
         } catch (SharingRegistryException ex2) {
             log.error("SharingRegistryException: {}", ex2.getMessage(), ex2);
-        } catch (TException ex3) {
-            log.error("TException: {}", ex3.getMessage(), ex3);
-        } finally {
-            log.info("Closing transport...");
-            if (transport != null) transport.close();
+        } catch (Exception ex3) {
+            log.error("Exception: {}", ex3.getMessage(), ex3);
         }
     }
 }
diff --git a/airavata-api/src/test/java/org/apache/airavata/sharing/handler/SharingRegistryServerHandlerTest.java b/airavata-api/src/test/java/org/apache/airavata/sharing/handler/SharingRegistryServerHandlerTest.java
index 80461d2906..534117c8d8 100644
--- a/airavata-api/src/test/java/org/apache/airavata/sharing/handler/SharingRegistryServerHandlerTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/sharing/handler/SharingRegistryServerHandlerTest.java
@@ -24,9 +24,9 @@ import java.util.Arrays;
 import java.util.List;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.execution.util.common.SharedMariaDB;
-import org.apache.airavata.sharing.registry.models.*;
+import org.apache.airavata.sharing.model.*;
 import org.apache.airavata.sharing.util.SharingRegistryDBInitConfig;
-import org.apache.thrift.TException;
+
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Tag;
@@ -45,14 +45,14 @@ public class SharingRegistryServerHandlerTest {
     }
 
     @Test
-    public void test() throws TException, ApplicationSettingsException {
+    public void test() throws Exception, ApplicationSettingsException {
         SharingRegistryDBInitConfig sharingRegistryDBInitConfig = new SharingRegistryDBInitConfig();
         sharingRegistryDBInitConfig.setDBInitScriptPrefix("sharing-registry");
         SharingRegistryServerHandler sharingRegistryServerHandler =
                 new SharingRegistryServerHandler(sharingRegistryDBInitConfig);
 
         // Creating domain
-        Domain domain = new Domain();
+        DomainEntity domain = new DomainEntity();
         String domainId = "test-domain." + System.currentTimeMillis();
         domain.setDomainId(domainId);
         domain.setName(domainId);
@@ -64,7 +64,7 @@ public class SharingRegistryServerHandlerTest {
         Assertions.assertTrue(sharingRegistryServerHandler.getDomains(0, 10).size() > 0);
 
         // Creating users
-        User user1 = new User();
+        UserEntity user1 = new UserEntity();
         String userName1 = "test-user-1." + System.currentTimeMillis();
         String userId1 = domainId + ":" + userName1;
         user1.setUserId(userId1);
@@ -75,7 +75,7 @@ public class SharingRegistryServerHandlerTest {
 
         Assertions.assertNotNull(sharingRegistryServerHandler.createUser(user1));
 
-        User user2 = new User();
+        UserEntity user2 = new UserEntity();
         String userName2 = "test-user-2." + System.currentTimeMillis();
         String userId2 = domainId + ":" + userName2;
         user2.setUserId(userId2);
@@ -86,7 +86,7 @@ public class SharingRegistryServerHandlerTest {
 
         Assertions.assertNotNull(sharingRegistryServerHandler.createUser(user2));
 
-        User user3 = new User();
+        UserEntity user3 = new UserEntity();
         String userName3 = "test-user-3." + System.currentTimeMillis();
         String userId3 = domainId + ":" + userName3;
         user3.setUserId(userId3);
@@ -97,7 +97,7 @@ public class SharingRegistryServerHandlerTest {
 
         Assertions.assertNotNull(sharingRegistryServerHandler.createUser(user3));
 
-        User user7 = new User();
+        UserEntity user7 = new UserEntity();
         String userName7 = "test-user-7." + System.currentTimeMillis();
         String userId7 = domainId + ":" + userName7;
         user7.setUserId(userId7);
@@ -112,7 +112,7 @@ public class SharingRegistryServerHandlerTest {
                 sharingRegistryServerHandler.getUsers(domainId, 0, 10).size() > 0);
 
         // Creating user groups
-        UserGroup userGroup1 = new UserGroup();
+        UserGroupEntity userGroup1 = new UserGroupEntity();
         String groupName1 = "test-group-1." + System.currentTimeMillis();
         String groupId1 = domainId + ":" + groupName1;
         userGroup1.setGroupId(groupId1);
@@ -120,8 +120,8 @@ public class SharingRegistryServerHandlerTest {
         userGroup1.setName(groupName1);
         userGroup1.setDescription("test group description");
         userGroup1.setOwnerId(userId1);
-        userGroup1.setGroupType(GroupType.USER_LEVEL_GROUP);
-        userGroup1.setGroupCardinality(GroupCardinality.MULTI_USER);
+        userGroup1.setGroupType(GroupType.USER_LEVEL_GROUP.name());
+        userGroup1.setGroupCardinality(GroupCardinality.MULTI_USER.name());
         userGroup1.setCreatedTime(System.currentTimeMillis());
         userGroup1.setUpdatedTime(System.currentTimeMillis());
 
@@ -132,7 +132,7 @@ public class SharingRegistryServerHandlerTest {
                         .getAllMemberGroupsForUser(domainId, userId1)
                         .size());
 
-        UserGroup userGroup2 = new UserGroup();
+        UserGroupEntity userGroup2 = new UserGroupEntity();
         String groupName2 = "test-group-2." + System.currentTimeMillis();
         String groupId2 = domainId + ":" + groupName2;
         userGroup2.setGroupId(groupId2);
@@ -140,8 +140,8 @@ public class SharingRegistryServerHandlerTest {
         userGroup2.setName(groupName2);
         userGroup2.setDescription("test group description");
         userGroup2.setOwnerId(userId2);
-        userGroup2.setGroupType(GroupType.USER_LEVEL_GROUP);
-        userGroup2.setGroupCardinality(GroupCardinality.MULTI_USER);
+        userGroup2.setGroupType(GroupType.USER_LEVEL_GROUP.name());
+        userGroup2.setGroupCardinality(GroupCardinality.MULTI_USER.name());
         userGroup2.setCreatedTime(System.currentTimeMillis());
         userGroup2.setUpdatedTime(System.currentTimeMillis());
 
@@ -188,7 +188,7 @@ public class SharingRegistryServerHandlerTest {
         Assertions.assertFalse(sharingRegistryServerHandler.hasOwnerAccess(domainId, groupId1, userId2));
 
         // Creating permission types
-        PermissionType permissionType1 = new PermissionType();
+        PermissionTypeEntity permissionType1 = new PermissionTypeEntity();
         String permissionName1 = "READ";
         permissionType1.setPermissionTypeId(domainId + ":" + permissionName1);
         permissionType1.setDomainId(domainId);
@@ -199,7 +199,7 @@ public class SharingRegistryServerHandlerTest {
         String permissionTypeId1 = sharingRegistryServerHandler.createPermissionType(permissionType1);
         Assertions.assertNotNull(permissionTypeId1);
 
-        PermissionType permissionType2 = new PermissionType();
+        PermissionTypeEntity permissionType2 = new PermissionTypeEntity();
         String permissionName2 = "WRITE";
         permissionType2.setPermissionTypeId(domainId + ":" + permissionName2);
         permissionType2.setDomainId(domainId);
@@ -211,7 +211,7 @@ public class SharingRegistryServerHandlerTest {
         Assertions.assertNotNull(permissionTypeId2);
 
         // Creating entity types
-        EntityType entityType1 = new EntityType();
+        EntityTypeEntity entityType1 = new EntityTypeEntity();
         String entityType1Name = "Project";
         entityType1.setEntityTypeId(domainId + ":" + entityType1Name);
         entityType1.setDomainId(domainId);
@@ -222,7 +222,7 @@ public class SharingRegistryServerHandlerTest {
         String entityTypeId1 = sharingRegistryServerHandler.createEntityType(entityType1);
         Assertions.assertNotNull(entityTypeId1);
 
-        EntityType entityType2 = new EntityType();
+        EntityTypeEntity entityType2 = new EntityTypeEntity();
         String entityType2Name = "Experiment";
         entityType2.setEntityTypeId(domainId + ":" + entityType2Name);
         entityType2.setDomainId(domainId);
@@ -233,7 +233,7 @@ public class SharingRegistryServerHandlerTest {
         String entityTypeId2 = sharingRegistryServerHandler.createEntityType(entityType2);
         Assertions.assertNotNull(entityTypeId2);
 
-        EntityType entityType3 = new EntityType();
+        EntityTypeEntity entityType3 = new EntityTypeEntity();
         String entityType3Name = "FileInput";
         entityType3.setEntityTypeId(domainId + ":" + entityType3Name);
         entityType3.setDomainId(domainId);
@@ -244,7 +244,7 @@ public class SharingRegistryServerHandlerTest {
         String entityTypeId3 = sharingRegistryServerHandler.createEntityType(entityType3);
         Assertions.assertNotNull(entityTypeId3);
 
-        EntityType entityType4 = new EntityType();
+        EntityTypeEntity entityType4 = new EntityTypeEntity();
         String entityType4Name = "Application-Deployment";
         entityType4.setEntityTypeId(domainId + ":" + entityType4Name);
         entityType4.setDomainId(domainId);
@@ -256,7 +256,7 @@ public class SharingRegistryServerHandlerTest {
         Assertions.assertNotNull(entityTypeId4);
 
         // Creating Entities
-        Entity entity1 = new Entity();
+        EntityEntity entity1 = new EntityEntity();
         entity1.setEntityId(domainId + ":Entity1");
         entity1.setDomainId(domainId);
         entity1.setEntityTypeId(entityTypeId1);
@@ -270,7 +270,7 @@ public class SharingRegistryServerHandlerTest {
         String entityId1 = sharingRegistryServerHandler.createEntity(entity1);
         Assertions.assertNotNull(entityId1);
 
-        Entity entity2 = new Entity();
+        EntityEntity entity2 = new EntityEntity();
         entity2.setEntityId(domainId + ":Entity2");
         entity2.setDomainId(domainId);
         entity2.setEntityTypeId(entityTypeId2);
@@ -285,7 +285,7 @@ public class SharingRegistryServerHandlerTest {
         String entityId2 = sharingRegistryServerHandler.createEntity(entity2);
         Assertions.assertNotNull(entityId2);
 
-        Entity entity3 = new Entity();
+        EntityEntity entity3 = new EntityEntity();
         entity3.setEntityId(domainId + ":Entity3");
         entity3.setDomainId(domainId);
         entity3.setEntityTypeId(entityTypeId2);
@@ -305,7 +305,7 @@ public class SharingRegistryServerHandlerTest {
         sharingRegistryServerHandler.shareEntityWithGroups(
                 domainId, entityId3, Arrays.asList(groupId2), permissionTypeId1, true);
 
-        Entity entity4 = new Entity();
+        EntityEntity entity4 = new EntityEntity();
         entity4.setEntityId(domainId + ":Entity4");
         entity4.setDomainId(domainId);
         entity4.setEntityTypeId(entityTypeId3);
@@ -329,7 +329,7 @@ public class SharingRegistryServerHandlerTest {
         Assertions.assertFalse(
                 sharingRegistryServerHandler.userHasAccess(domainId, userId3, entityId1, permissionTypeId1));
 
-        Entity entity5 = new Entity();
+        EntityEntity entity5 = new EntityEntity();
         entity5.setEntityId(domainId + ":Entity5");
         entity5.setDomainId(domainId);
         entity5.setEntityTypeId(entityTypeId4);
@@ -392,7 +392,7 @@ public class SharingRegistryServerHandlerTest {
         Assertions.assertFalse(
                 sharingRegistryServerHandler.userHasAccess(domainId, userId3, entityId2, permissionTypeId1));
         // create a different parent entity
-        Entity entity6 = new Entity();
+        EntityEntity entity6 = new EntityEntity();
         entity6.setEntityId(domainId + ":Entity6");
         entity6.setDomainId(domainId);
         entity6.setEntityTypeId(entityTypeId1);
@@ -419,7 +419,7 @@ public class SharingRegistryServerHandlerTest {
         entity2.setParentEntityId(entityId6);
         logger.debug("Updating entity2");
         Assertions.assertTrue(sharingRegistryServerHandler.updateEntity(entity2));
-        Entity entity2Updated = sharingRegistryServerHandler.getEntity(domainId, entityId2);
+        EntityEntity entity2Updated = sharingRegistryServerHandler.getEntity(domainId, entityId2);
         Assertions.assertEquals(entityId6, entity2Updated.getParentEntityId());
         // parent changed so entityId2 should now be shared with entityId6's shared users (userId3)
         Assertions.assertFalse(
@@ -436,7 +436,7 @@ public class SharingRegistryServerHandlerTest {
         Assertions.assertEquals(
                 Arrays.asList(user7),
                 sharingRegistryServerHandler.getListOfDirectlySharedUsers(domainId, entityId2, permissionTypeId1));
-        List<User> entityId2SharedUsers =
+        List<UserEntity> entityId2SharedUsers =
                 sharingRegistryServerHandler.getListOfSharedUsers(domainId, entityId2, permissionTypeId1);
         Assertions.assertEquals(2, entityId2SharedUsers.size());
         Assertions.assertTrue(
@@ -455,7 +455,7 @@ public class SharingRegistryServerHandlerTest {
                         .getGroupId());
 
         // Test that new users are added to initialUserGroupId
-        UserGroup initialUserGroup = new UserGroup();
+        UserGroupEntity initialUserGroup = new UserGroupEntity();
         String initialUserGroupName = "initial user group";
         String initialUserGroupId = domainId + ":" + initialUserGroupName;
         initialUserGroup.setGroupId(initialUserGroupId);
@@ -463,8 +463,8 @@ public class SharingRegistryServerHandlerTest {
         initialUserGroup.setName(initialUserGroupName);
         initialUserGroup.setDescription("initial user group desc");
         initialUserGroup.setOwnerId(userId1);
-        initialUserGroup.setGroupType(GroupType.USER_LEVEL_GROUP);
-        initialUserGroup.setGroupCardinality(GroupCardinality.MULTI_USER);
+        initialUserGroup.setGroupType(GroupType.USER_LEVEL_GROUP.name());
+        initialUserGroup.setGroupCardinality(GroupCardinality.MULTI_USER.name());
         initialUserGroup.setCreatedTime(System.currentTimeMillis());
         initialUserGroup.setUpdatedTime(System.currentTimeMillis());
 
@@ -476,7 +476,7 @@ public class SharingRegistryServerHandlerTest {
                 initialUserGroupId,
                 sharingRegistryServerHandler.getDomain(domain.getDomainId()).getInitialUserGroupId());
 
-        User user8 = new User();
+        UserEntity user8 = new UserEntity();
         String userName8 = "test-user-8." + System.currentTimeMillis();
         String userId8 = domainId + ":" + userName8;
         user8.setUserId(userId8);
@@ -486,7 +486,7 @@ public class SharingRegistryServerHandlerTest {
         user8.setUpdatedTime(System.currentTimeMillis());
 
         Assertions.assertNotNull(sharingRegistryServerHandler.createUser(user8));
-        List<UserGroup> user8Groups =
+        List<UserGroupEntity> user8Groups =
                 sharingRegistryServerHandler.getAllMemberGroupsForUser(domain.getDomainId(), userId8);
         Assertions.assertFalse(user8Groups.isEmpty());
         Assertions.assertEquals(1, user8Groups.size());
diff --git a/airavata-api/src/test/java/org/apache/airavata/sharing/service/ResourceSharingServiceTest.java b/airavata-api/src/test/java/org/apache/airavata/sharing/service/ResourceSharingServiceTest.java
index 8e6109e4e6..db0007912f 100644
--- a/airavata-api/src/test/java/org/apache/airavata/sharing/service/ResourceSharingServiceTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/sharing/service/ResourceSharingServiceTest.java
@@ -27,9 +27,9 @@ import java.util.List;
 import java.util.Map;
 import org.apache.airavata.execution.service.RequestContext;
 import org.apache.airavata.execution.service.ServiceAuthorizationException;
-import org.apache.airavata.model.group.ResourcePermissionType;
+import org.apache.airavata.model.group.proto.ResourcePermissionType;
 import org.apache.airavata.sharing.handler.SharingRegistryServerHandler;
-import org.apache.airavata.sharing.registry.models.User;
+import org.apache.airavata.sharing.model.UserEntity;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -107,9 +107,9 @@ class ResourceSharingServiceTest {
 
     @Test
     void getAllAccessibleUsers_returnsUserIds() throws Exception {
-        User user1 = new User();
+        UserEntity user1 = new UserEntity();
         user1.setUserId("user1@testGateway");
-        User user2 = new User();
+        UserEntity user2 = new UserEntity();
         user2.setUserId("user2@testGateway");
         when(sharingHandler.getListOfSharedUsers("testGateway", "resource-1", "testGateway:READ"))
                 .thenReturn(List.of(user1));
diff --git a/airavata-api/src/test/java/org/apache/airavata/storage/service/DataProductServiceTest.java b/airavata-api/src/test/java/org/apache/airavata/storage/service/DataProductServiceTest.java
index 90fdb59458..b4a0fbf340 100644
--- a/airavata-api/src/test/java/org/apache/airavata/storage/service/DataProductServiceTest.java
+++ b/airavata-api/src/test/java/org/apache/airavata/storage/service/DataProductServiceTest.java
@@ -27,8 +27,8 @@ import java.util.Map;
 import org.apache.airavata.execution.handler.RegistryServerHandler;
 import org.apache.airavata.execution.service.RequestContext;
 import org.apache.airavata.execution.service.ServiceException;
-import org.apache.airavata.model.data.replica.DataProductModel;
-import org.apache.airavata.model.data.replica.DataReplicaLocationModel;
+import org.apache.airavata.model.data.replica.proto.DataProductModel;
+import org.apache.airavata.model.data.replica.proto.DataReplicaLocationModel;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -53,8 +53,7 @@ class DataProductServiceTest {
 
     @Test
     void registerDataProduct_returnsProductId() throws Exception {
-        DataProductModel model = new DataProductModel();
-        model.setProductName("test-product");
+        DataProductModel model = DataProductModel.newBuilder().setProductName("test-product").build();
         when(registryHandler.registerDataProduct(model)).thenReturn("product-123");
 
         String result = dataProductService.registerDataProduct(ctx, model);
@@ -65,8 +64,7 @@ class DataProductServiceTest {
 
     @Test
     void getDataProduct_returnsModel() throws Exception {
-        DataProductModel model = new DataProductModel();
-        model.setProductName("test-product");
+        DataProductModel model = DataProductModel.newBuilder().setProductName("test-product").build();
         when(registryHandler.getDataProduct("uri-123")).thenReturn(model);
 
         DataProductModel result = dataProductService.getDataProduct(ctx, "uri-123");
@@ -77,8 +75,7 @@ class DataProductServiceTest {
 
     @Test
     void registerReplicaLocation_returnsReplicaId() throws Exception {
-        DataReplicaLocationModel replicaModel = new DataReplicaLocationModel();
-        replicaModel.setReplicaName("replica-1");
+        DataReplicaLocationModel replicaModel = DataReplicaLocationModel.newBuilder().setReplicaName("replica-1").build();
         when(registryHandler.registerReplicaLocation(replicaModel)).thenReturn("replica-123");
 
         String result = dataProductService.registerReplicaLocation(ctx, replicaModel);
@@ -89,8 +86,7 @@ class DataProductServiceTest {
 
     @Test
     void getParentDataProduct_returnsParent() throws Exception {
-        DataProductModel parent = new DataProductModel();
-        parent.setProductName("parent-product");
+        DataProductModel parent = DataProductModel.newBuilder().setProductName("parent-product").build();
         when(registryHandler.getParentDataProduct("child-uri")).thenReturn(parent);
 
         DataProductModel result = dataProductService.getParentDataProduct(ctx, "child-uri");
@@ -113,8 +109,7 @@ class DataProductServiceTest {
 
     @Test
     void registerDataProduct_wrapsRegistryException() throws Exception {
-        DataProductModel model = new DataProductModel();
-        model.setProductName("bad-product");
+        DataProductModel model = DataProductModel.newBuilder().setProductName("bad-product").build();
         when(registryHandler.registerDataProduct(model)).thenThrow(new RuntimeException("DB error"));
 
         assertThrows(ServiceException.class, () -> dataProductService.registerDataProduct(ctx, model));