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 bf605ac9804466fe42b44c424d3c75c4c7fe46b0
Author: yasithdev <[email protected]>
AuthorDate: Tue Mar 31 12:25:08 2026 -0400

    fix: replace Thrift types with proto types and service layer in sub-modules
    
    Migrate agent-service from Airavata.Iface (Thrift handler) to direct
    service layer calls (ExperimentService, ProjectService, etc.) with
    RequestContext for auth. Switch all remaining Thrift model imports to
    proto equivalents across agent-service, file-server, grpc, and rest
    modules. Build proto AuthzToken via builder instead of Thrift constructor.
---
 .../service/controllers/ExperimentController.java  |   4 +-
 .../service/handlers/AgentManagementHandler.java   | 230 +++++++++++----------
 .../service/services/AiravataFileService.java      |   8 +-
 .../service/services/AiravataService.java          | 111 ++++++----
 .../file/server/service/ProcessDataManager.java    |   2 +-
 .../server/grpc/AiravataArmeriaConfig.java         |   2 +-
 .../server/grpc/config/GrpcAuthInterceptor.java    |   9 +-
 .../services/ApplicationCatalogGrpcService.java    |  12 +-
 .../grpc/services/CredentialGrpcService.java       |  50 +++--
 .../grpc/services/DataProductGrpcService.java      |   2 +-
 .../grpc/services/ExperimentGrpcService.java       |  18 +-
 .../server/grpc/services/GatewayGrpcService.java   |   2 +-
 .../GatewayResourceProfileGrpcService.java         |   8 +-
 .../services/GroupResourceProfileGrpcService.java  |  10 +-
 .../server/grpc/services/GrpcRequestContext.java   |   2 +-
 .../grpc/services/NotificationGrpcService.java     |   2 +-
 .../server/grpc/services/ParserGrpcService.java    |   4 +-
 .../server/grpc/services/ProjectGrpcService.java   |   4 +-
 .../server/grpc/services/ResourceGrpcService.java  |  16 +-
 .../server/grpc/services/SharingGrpcService.java   |   2 +-
 .../services/UserResourceProfileGrpcService.java   |   8 +-
 .../server/rest/config/SecurityConfig.java         |   9 +-
 22 files changed, 302 insertions(+), 213 deletions(-)

diff --git 
a/airavata-api/agent-service/src/main/java/org/apache/airavata/agent/connection/service/controllers/ExperimentController.java
 
b/airavata-api/agent-service/src/main/java/org/apache/airavata/agent/connection/service/controllers/ExperimentController.java
index d18f064177..c7fa7bb74a 100644
--- 
a/airavata-api/agent-service/src/main/java/org/apache/airavata/agent/connection/service/controllers/ExperimentController.java
+++ 
b/airavata-api/agent-service/src/main/java/org/apache/airavata/agent/connection/service/controllers/ExperimentController.java
@@ -24,8 +24,8 @@ import 
org.apache.airavata.agent.connection.service.handlers.AgentManagementHand
 import org.apache.airavata.agent.connection.service.models.AgentLaunchRequest;
 import org.apache.airavata.agent.connection.service.models.AgentLaunchResponse;
 import 
org.apache.airavata.agent.connection.service.models.AgentTerminateResponse;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.process.ProcessModel;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.process.proto.ProcessModel;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.http.MediaType;
diff --git 
a/airavata-api/agent-service/src/main/java/org/apache/airavata/agent/connection/service/handlers/AgentManagementHandler.java
 
b/airavata-api/agent-service/src/main/java/org/apache/airavata/agent/connection/service/handlers/AgentManagementHandler.java
index cb58e23601..b5b8cb8d69 100644
--- 
a/airavata-api/agent-service/src/main/java/org/apache/airavata/agent/connection/service/handlers/AgentManagementHandler.java
+++ 
b/airavata-api/agent-service/src/main/java/org/apache/airavata/agent/connection/service/handlers/AgentManagementHandler.java
@@ -29,22 +29,22 @@ import 
org.apache.airavata.agent.connection.service.models.AgentLaunchRequest;
 import org.apache.airavata.agent.connection.service.models.AgentLaunchResponse;
 import 
org.apache.airavata.agent.connection.service.models.AgentTerminateResponse;
 import org.apache.airavata.agent.connection.service.services.AiravataService;
-import org.apache.airavata.api.Airavata;
 import org.apache.airavata.common.security.UserContext;
-import 
org.apache.airavata.model.appcatalog.groupresourceprofile.EnvironmentSpecificPreferences;
-import 
org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference;
-import 
org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile;
-import org.apache.airavata.model.appcatalog.groupresourceprofile.ResourceType;
-import org.apache.airavata.model.application.io.InputDataObjectType;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentStatistics;
-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.scheduling.ComputationalResourceSchedulingModel;
-import org.apache.airavata.model.security.AuthzToken;
+import org.apache.airavata.execution.service.RequestContext;
+import org.apache.airavata.execution.service.ServiceException;
+import 
org.apache.airavata.model.appcatalog.groupresourceprofile.proto.EnvironmentSpecificPreferences;
+import 
org.apache.airavata.model.appcatalog.groupresourceprofile.proto.GroupComputeResourcePreference;
+import 
org.apache.airavata.model.appcatalog.groupresourceprofile.proto.GroupResourceProfile;
+import 
org.apache.airavata.model.appcatalog.groupresourceprofile.proto.ResourceType;
+import org.apache.airavata.model.application.io.proto.InputDataObjectType;
+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.experiment.proto.ExperimentType;
+import org.apache.airavata.model.experiment.proto.UserConfigurationDataModel;
+import org.apache.airavata.model.process.proto.ProcessModel;
+import 
org.apache.airavata.model.scheduling.proto.ComputationalResourceSchedulingModel;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
@@ -72,10 +72,8 @@ public class AgentManagementHandler {
 
     public AgentTerminateResponse terminateExperiment(String experimentId) {
         try {
-            Airavata.Iface airavata = airavataService.airavata();
-            ExperimentModel experiment = 
airavata.getExperiment(UserContext.authzToken(), experimentId);
-            airavata.terminateExperiment(
-                    UserContext.authzToken(), experiment.getExperimentId(), 
experiment.getGatewayId());
+            RequestContext ctx = airavataService.requestContext();
+            airavataService.experimentService().terminateExperiment(ctx, 
experimentId);
             return new AgentTerminateResponse(experimentId, true);
         } catch (Exception e) {
             LOGGER.error("Error terminating experiment {}", experimentId, e);
@@ -85,28 +83,37 @@ public class AgentManagementHandler {
 
     public ExperimentModel getExperiment(String experimentId) {
         try {
-            Airavata.Iface airavata = airavataService.airavata();
-            ExperimentModel experiment = 
airavata.getExperiment(UserContext.authzToken(), experimentId);
-            GroupResourceProfile groupResourceProfile = 
airavata.getGroupResourceProfile(
-                    UserContext.authzToken(),
-                    
experiment.getUserConfigurationData().getGroupResourceProfileId());
+            RequestContext ctx = airavataService.requestContext();
+            ExperimentModel experiment = 
airavataService.experimentService().getExperiment(ctx, experimentId);
+            GroupResourceProfile groupResourceProfile = airavataService
+                    .groupResourceProfileService()
+                    .getGroupResourceProfile(
+                            ctx, 
experiment.getUserConfigurationData().getGroupResourceProfileId());
 
             // Always get the Default allocation
             if 
(!"Default".equalsIgnoreCase(groupResourceProfile.getGroupResourceProfileName()))
 {
-                List<GroupResourceProfile> groupResourceList =
-                        
airavata.getGroupResourceList(UserContext.authzToken(), 
experiment.getGatewayId());
+                List<GroupResourceProfile> groupResourceList = airavataService
+                        .groupResourceProfileService()
+                        .getGroupResourceList(ctx, experiment.getGatewayId());
 
-                groupResourceList.stream()
+                final ExperimentModel exp = experiment;
+                java.util.Optional<GroupResourceProfile> defaultProfile = 
groupResourceList.stream()
                         .filter(profile -> 
"Default".equalsIgnoreCase(profile.getGroupResourceProfileName()))
-                        .findFirst()
-                        .ifPresent(profile -> experiment
-                                .getUserConfigurationData()
-                                
.setGroupResourceProfileId(profile.getGroupResourceProfileId()));
+                        .findFirst();
+
+                if (defaultProfile.isPresent()) {
+                    UserConfigurationDataModel updatedConfig = 
experiment.getUserConfigurationData().toBuilder()
+                            
.setGroupResourceProfileId(defaultProfile.get().getGroupResourceProfileId())
+                            .build();
+                    experiment = experiment.toBuilder()
+                            .setUserConfigurationData(updatedConfig)
+                            .build();
+                }
             }
 
             return experiment;
 
-        } catch (TException e) {
+        } catch (ServiceException e) {
             LOGGER.error("Error while extracting the experiment with the id: 
{}", experimentId);
             throw new RuntimeException("Error while extracting the experiment 
with the id: " + experimentId, e);
         }
@@ -123,12 +130,13 @@ public class AgentManagementHandler {
         AgentLaunchRequest sortedLaunchRequest = launchRequests.get(0);
 
         for (AgentLaunchRequest req : launchRequests) {
+            RequestContext ctx = airavataService.requestContext();
             String appInterfaceId = 
clusterApplicationConfig.getApplicationInterfaceId();
             ExperimentStatistics experimentStatistics = airavataService
-                    .airavata()
+                    .experimentService()
                     .getExperimentStatistics(
-                            UserContext.authzToken(),
-                            UserContext.gatewayId(),
+                            ctx,
+                            ctx.getGatewayId(),
                             System.currentTimeMillis() - 60 * 60 * 1000,
                             System.currentTimeMillis(),
                             null,
@@ -164,15 +172,14 @@ public class AgentManagementHandler {
             LOGGER.info("Creating an Airavata Experiment for {} with agent id 
{}", req.getExperimentName(), agentId);
             ExperimentModel experiment = generateExperiment(req, agentId, 
envName);
 
-            String experimentId = airavataService
-                    .airavata()
-                    .createExperiment(UserContext.authzToken(), 
experiment.getGatewayId(), experiment);
+            RequestContext ctx = airavataService.requestContext();
+            String experimentId = 
airavataService.experimentService().createExperiment(ctx, experiment);
             LOGGER.info("Launching the application, Id: {}, Name: {}", 
experimentId, experiment.getExperimentName());
             airavataService
-                    .airavata()
-                    .launchExperiment(UserContext.authzToken(), experimentId, 
experiment.getGatewayId());
+                    .experimentService()
+                    .launchExperiment(ctx, experimentId, 
experiment.getGatewayId());
             return new AgentLaunchResponse(agentId, experimentId, envName);
-        } catch (TException e) {
+        } catch (ServiceException e) {
             LOGGER.error("Error while creating the experiment with the name: 
{}", req.getExperimentName(), e);
             throw new RuntimeException(
                     "Error while creating the experiment with the name: " + 
req.getExperimentName(), e);
@@ -182,7 +189,8 @@ public class AgentManagementHandler {
     public void terminateApplication(String gatewayId, String experimentId) {
         try {
             LOGGER.info("Terminating the application with experiment Id: {}", 
experimentId);
-            
airavataService.airavata().terminateExperiment(UserContext.authzToken(), 
experimentId, gatewayId);
+            RequestContext ctx = airavataService.requestContext();
+            airavataService.experimentService().terminateExperiment(ctx, 
experimentId);
         } catch (Exception e) {
             LOGGER.error("Error while terminating the application with the 
experiment Id: {}", experimentId);
             throw new RuntimeException(
@@ -193,109 +201,119 @@ public class AgentManagementHandler {
     public ProcessModel getEnvProcessModel(String expId) {
         try {
             LOGGER.info("Extracting the process model for experiment id: {}", 
expId);
-            ExperimentModel expModel =
-                    
airavataService.airavata().getDetailedExperimentTree(UserContext.authzToken(), 
expId);
-            if (expModel.getProcesses() != null && 
!expModel.getProcesses().isEmpty()) {
-                return expModel.getProcesses().get(0);
+            RequestContext ctx = airavataService.requestContext();
+            ExperimentModel expModel = 
airavataService.experimentService().getDetailedExperimentTree(ctx, expId);
+            if (expModel.getProcessesList() != null && 
!expModel.getProcessesList().isEmpty()) {
+                return expModel.getProcessesList().get(0);
             } else {
                 LOGGER.error("No process found for experiment id: {}", expId);
                 return null;
             }
-        } catch (TException e) {
+        } catch (ServiceException e) {
             LOGGER.error("Error while extracting the process model for 
experiment id: {}", expId, e);
             throw new RuntimeException(e);
         }
     }
 
     private ExperimentModel generateExperiment(AgentLaunchRequest req, String 
agentId, String envName)
-            throws TException {
-        Airavata.Iface airavataClient = airavataService.airavata();
+            throws ServiceException {
+        RequestContext ctx = airavataService.requestContext();
 
         String experimentName = req.getExperimentName();
         String projectName = req.getProjectName() != null ? 
req.getProjectName() : "Default Project";
         String projectDir = projectName.replace(" ", "_");
-        String projectId = airavataService.getProjectId(airavataClient, 
projectName);
-        AuthzToken authzToken = UserContext.authzToken();
+        String projectId = airavataService.getProjectId(projectName);
         String userName = UserContext.userId();
         String gatewayId = UserContext.gatewayId();
         String appInterfaceId = 
clusterApplicationConfig.getApplicationInterfaceId();
-        ExperimentModel experimentModel = new ExperimentModel();
-        experimentModel.setExperimentName(experimentName);
-        experimentModel.setProjectId(projectId);
-        experimentModel.setUserName(userName);
-        experimentModel.setGatewayId(gatewayId);
-        experimentModel.setExecutionId(appInterfaceId);
+
+        GroupComputeResourcePreference groupCompResourcePref =
+                
airavataService.extractGroupComputeResourcePreference(req.getGroup(), 
req.getRemoteCluster());
 
         ComputationalResourceSchedulingModel 
computationalResourceSchedulingModel =
-                new ComputationalResourceSchedulingModel();
-        GroupComputeResourcePreference groupCompResourcePref = 
airavataService.extractGroupComputeResourcePreference(
-                airavataClient, req.getGroup(), req.getRemoteCluster());
-        computationalResourceSchedulingModel.setQueueName(req.getQueue());
-        computationalResourceSchedulingModel.setNodeCount(req.getNodeCount());
-        
computationalResourceSchedulingModel.setTotalCPUCount(req.getCpuCount());
-        
computationalResourceSchedulingModel.setWallTimeLimit(req.getWallTime());
-        
computationalResourceSchedulingModel.setTotalPhysicalMemory(req.getMemory());
-        
computationalResourceSchedulingModel.setResourceHostId(groupCompResourcePref.getComputeResourceId());
-        // TODO - Support for both HPC & Cloud services --> Need to change the 
ComputationalResourceSchedulingModel
-        
computationalResourceSchedulingModel.setOverrideScratchLocation(groupCompResourcePref.getScratchLocation());
-        
computationalResourceSchedulingModel.setOverrideAllocationProjectNumber(
-                extractSlurmAllocationProject(groupCompResourcePref));
-        
computationalResourceSchedulingModel.setOverrideLoginUserName(groupCompResourcePref.getLoginUserName());
+                ComputationalResourceSchedulingModel.newBuilder()
+                        .setQueueName(req.getQueue())
+                        .setNodeCount(req.getNodeCount())
+                        .setTotalCpuCount(req.getCpuCount())
+                        .setWallTimeLimit(req.getWallTime())
+                        .setTotalPhysicalMemory(req.getMemory())
+                        
.setResourceHostId(groupCompResourcePref.getComputeResourceId())
+                        
.setOverrideScratchLocation(groupCompResourcePref.getScratchLocation())
+                        
.setOverrideAllocationProjectNumber(extractSlurmAllocationProject(groupCompResourcePref))
+                        
.setOverrideLoginUserName(groupCompResourcePref.getLoginUserName())
+                        .build();
 
-        UserConfigurationDataModel userConfigurationDataModel = new 
UserConfigurationDataModel();
-        
userConfigurationDataModel.setComputationalResourceScheduling(computationalResourceSchedulingModel);
-        userConfigurationDataModel.setAiravataAutoSchedule(false);
-        userConfigurationDataModel.setOverrideManualScheduledParams(false);
-        userConfigurationDataModel.setInputStorageResourceId(
-                StringUtils.isNotBlank(req.getInputStorageId())
-                        ? req.getInputStorageId()
-                        : agentProperties.getStorageResourceId());
-        userConfigurationDataModel.setOutputStorageResourceId(
-                StringUtils.isNotBlank(req.getOutputStorageId())
-                        ? req.getInputStorageId()
-                        : agentProperties.getStorageResourceId());
         String experimentDataDir = Paths.get(
                         agentProperties.getStoragePath(), gatewayId, userName, 
projectDir, experimentName)
                 .toString();
-        userConfigurationDataModel.setExperimentDataDir(experimentDataDir);
-        
userConfigurationDataModel.setGroupResourceProfileId(groupCompResourcePref.getGroupResourceProfileId());
 
-        experimentModel.setUserConfigurationData(userConfigurationDataModel);
+        UserConfigurationDataModel userConfigurationDataModel = 
UserConfigurationDataModel.newBuilder()
+                
.setComputationalResourceScheduling(computationalResourceSchedulingModel)
+                .setAiravataAutoSchedule(false)
+                .setOverrideManualScheduledParams(false)
+                .setInputStorageResourceId(
+                        StringUtils.isNotBlank(req.getInputStorageId())
+                                ? req.getInputStorageId()
+                                : agentProperties.getStorageResourceId())
+                .setOutputStorageResourceId(
+                        StringUtils.isNotBlank(req.getOutputStorageId())
+                                ? req.getInputStorageId()
+                                : agentProperties.getStorageResourceId())
+                .setExperimentDataDir(experimentDataDir)
+                
.setGroupResourceProfileId(groupCompResourcePref.getGroupResourceProfileId())
+                .build();
 
-        List<InputDataObjectType> applicationInputs = 
airavataClient.getApplicationInputs(authzToken, appInterfaceId);
+        List<InputDataObjectType> applicationInputs =
+                
airavataService.applicationCatalogService().getApplicationInputs(ctx, 
appInterfaceId);
         List<InputDataObjectType> experimentInputs = applicationInputs.stream()
-                .peek(input -> {
-                    if (input != null && input.getName() != null) {
-                        switch (input.getName()) {
-                            case "agent_id" -> input.setValue(agentId);
-                            case "env_name" -> input.setValue(envName);
-                            case "server_url" -> input.setValue(grpcHost);
-                            case "libraries" ->
-                                input.setValue(req.getLibraries() != null ? 
String.join(",", req.getLibraries()) : "");
-                            case "pip" -> input.setValue(req.getPip() != null 
? String.join(",", req.getPip()) : "");
-                            case "mounts" ->
-                                input.setValue(req.getMounts() != null ? 
String.join(",", req.getMounts()) : "");
-                            default -> {}
-                        }
+                .map(input -> {
+                    if (input != null && !input.getName().isEmpty()) {
+                        return switch (input.getName()) {
+                            case "agent_id" -> 
input.toBuilder().setValue(agentId).build();
+                            case "env_name" -> 
input.toBuilder().setValue(envName).build();
+                            case "server_url" -> 
input.toBuilder().setValue(grpcHost).build();
+                            case "libraries" -> input.toBuilder()
+                                    .setValue(req.getLibraries() != null ? 
String.join(",", req.getLibraries()) : "")
+                                    .build();
+                            case "pip" -> input.toBuilder()
+                                    .setValue(req.getPip() != null ? 
String.join(",", req.getPip()) : "")
+                                    .build();
+                            case "mounts" -> input.toBuilder()
+                                    .setValue(req.getMounts() != null ? 
String.join(",", req.getMounts()) : "")
+                                    .build();
+                            default -> input;
+                        };
                     }
+                    return input;
                 })
                 .collect(Collectors.toList());
 
-        experimentModel.setExperimentInputs(experimentInputs);
-        
experimentModel.setExperimentOutputs(airavataClient.getApplicationOutputs(authzToken,
 appInterfaceId));
-        experimentModel.setExperimentType(ExperimentType.SINGLE_APPLICATION);
-        LOGGER.info("Generated the experiment: {}", 
experimentModel.getExperimentId());
+        List<OutputDataObjectType> applicationOutputs =
+                
airavataService.applicationCatalogService().getApplicationOutputs(ctx, 
appInterfaceId);
 
+        ExperimentModel experimentModel = ExperimentModel.newBuilder()
+                .setExperimentName(experimentName)
+                .setProjectId(projectId)
+                .setUserName(userName)
+                .setGatewayId(gatewayId)
+                .setExecutionId(appInterfaceId)
+                .setUserConfigurationData(userConfigurationDataModel)
+                .addAllExperimentInputs(experimentInputs)
+                .addAllExperimentOutputs(applicationOutputs)
+                .setExperimentType(ExperimentType.SINGLE_APPLICATION)
+                .build();
+
+        LOGGER.info("Generated the experiment: {}", 
experimentModel.getExperimentId());
         return experimentModel;
     }
 
     private String 
extractSlurmAllocationProject(GroupComputeResourcePreference pref) {
-        if (pref.getResourceType() == ResourceType.SLURM && 
pref.isSetSpecificPreferences()) {
+        if (pref.getResourceType() == ResourceType.SLURM && 
pref.hasSpecificPreferences()) {
             EnvironmentSpecificPreferences esp = pref.getSpecificPreferences();
-            if (esp.isSetSlurm()) {
+            if (esp.hasSlurm()) {
                 return esp.getSlurm().getAllocationProjectNumber();
             }
         }
-        return null;
+        return "";
     }
 }
diff --git 
a/airavata-api/agent-service/src/main/java/org/apache/airavata/agent/connection/service/services/AiravataFileService.java
 
b/airavata-api/agent-service/src/main/java/org/apache/airavata/agent/connection/service/services/AiravataFileService.java
index 89992c058c..1f95979357 100644
--- 
a/airavata-api/agent-service/src/main/java/org/apache/airavata/agent/connection/service/services/AiravataFileService.java
+++ 
b/airavata-api/agent-service/src/main/java/org/apache/airavata/agent/connection/service/services/AiravataFileService.java
@@ -31,12 +31,11 @@ import org.apache.airavata.agent.ServerMessage;
 import org.apache.airavata.agent.connection.service.models.DirectoryInfo;
 import 
org.apache.airavata.agent.connection.service.models.ExperimentStorageResponse;
 import org.apache.airavata.agent.connection.service.models.FileInfo;
-import org.apache.airavata.api.Airavata;
 import org.apache.airavata.common.security.UserContext;
+import org.apache.airavata.execution.service.ServiceException;
 import org.apache.airavata.fuse.DirEntry;
 import org.apache.airavata.fuse.ReadDirReq;
 import org.apache.airavata.fuse.ReadDirRes;
-import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.http.HttpEntity;
@@ -63,14 +62,13 @@ public class AiravataFileService {
     }
 
     public void handleReadDirRequest(ReadDirReq request, 
StreamObserver<ServerMessage> responseObserver) {
-        Airavata.Iface airavataClient = airavataService.airavata();
         String fusePath = request.getName();
 
         ReadDirRes.Builder readDirResBuilder = ReadDirRes.newBuilder();
 
         try {
             if ("/".equals(fusePath)) {
-                List<String> experimentIds = 
airavataService.getUserExperimentIDs(airavataClient);
+                List<String> experimentIds = 
airavataService.getUserExperimentIDs();
 
                 // Handle root directory
                 for (String expId : experimentIds) {
@@ -108,7 +106,7 @@ public class AiravataFileService {
                             .build());
                 }
             }
-        } catch (TException | ExecutionException e) {
+        } catch (ServiceException | ExecutionException e) {
             LOGGER.error("Failed to fetch experiments when trying to read the 
directory");
             responseObserver.onError(Status.INTERNAL
                     .withDescription("Failed to fetch experiments  when trying 
to read the directory")
diff --git 
a/airavata-api/agent-service/src/main/java/org/apache/airavata/agent/connection/service/services/AiravataService.java
 
b/airavata-api/agent-service/src/main/java/org/apache/airavata/agent/connection/service/services/AiravataService.java
index 57284a29be..400c4ff767 100644
--- 
a/airavata-api/agent-service/src/main/java/org/apache/airavata/agent/connection/service/services/AiravataService.java
+++ 
b/airavata-api/agent-service/src/main/java/org/apache/airavata/agent/connection/service/services/AiravataService.java
@@ -20,19 +20,28 @@
 package org.apache.airavata.agent.connection.service.services;
 
 import io.micrometer.common.util.StringUtils;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-import org.apache.airavata.api.Airavata;
 import org.apache.airavata.common.security.UserContext;
-import 
org.apache.airavata.model.appcatalog.groupresourceprofile.GroupComputeResourcePreference;
-import 
org.apache.airavata.model.appcatalog.groupresourceprofile.GroupResourceProfile;
-import org.apache.airavata.model.experiment.ExperimentSearchFields;
-import org.apache.airavata.model.experiment.ExperimentSummaryModel;
-import org.apache.airavata.model.workspace.Project;
-import org.apache.thrift.TException;
+import org.apache.airavata.compute.service.ApplicationCatalogService;
+import org.apache.airavata.compute.service.GroupResourceProfileService;
+import org.apache.airavata.execution.service.ExperimentService;
+import org.apache.airavata.execution.service.ProjectService;
+import org.apache.airavata.execution.service.RequestContext;
+import org.apache.airavata.execution.service.ServiceException;
+import 
org.apache.airavata.model.appcatalog.groupresourceprofile.proto.GroupComputeResourcePreference;
+import 
org.apache.airavata.model.appcatalog.groupresourceprofile.proto.GroupResourceProfile;
+import org.apache.airavata.model.application.io.proto.InputDataObjectType;
+import org.apache.airavata.model.application.io.proto.OutputDataObjectType;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentSearchFields;
+import org.apache.airavata.model.experiment.proto.ExperimentStatistics;
+import org.apache.airavata.model.experiment.proto.ExperimentSummaryModel;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -42,29 +51,65 @@ public class AiravataService {
 
     private static final Logger LOGGER = 
LoggerFactory.getLogger(AiravataService.class);
 
-    private final Airavata.Iface airavataHandler;
+    private final ExperimentService experimentService;
+    private final ProjectService projectService;
+    private final GroupResourceProfileService groupResourceProfileService;
+    private final ApplicationCatalogService applicationCatalogService;
 
-    public AiravataService(Airavata.Iface airavataHandler) {
-        this.airavataHandler = airavataHandler;
+    public AiravataService(
+            ExperimentService experimentService,
+            ProjectService projectService,
+            GroupResourceProfileService groupResourceProfileService,
+            ApplicationCatalogService applicationCatalogService) {
+        this.experimentService = experimentService;
+        this.projectService = projectService;
+        this.groupResourceProfileService = groupResourceProfileService;
+        this.applicationCatalogService = applicationCatalogService;
     }
 
-    public Airavata.Iface airavata() {
-        return airavataHandler;
+    public ExperimentService experimentService() {
+        return experimentService;
     }
 
-    public String getProjectId(Airavata.Iface airavataClient, String 
projectName) throws TException {
+    public ProjectService projectService() {
+        return projectService;
+    }
+
+    public GroupResourceProfileService groupResourceProfileService() {
+        return groupResourceProfileService;
+    }
+
+    public ApplicationCatalogService applicationCatalogService() {
+        return applicationCatalogService;
+    }
+
+    public RequestContext requestContext() {
+        var token = UserContext.authzToken();
+        Map<String, String> claims = (token != null) ? token.getClaimsMap() : 
Collections.emptyMap();
+        if (claims == null) {
+            claims = Collections.emptyMap();
+        }
+        return new RequestContext(
+                UserContext.userId(),
+                UserContext.gatewayId(),
+                token != null ? token.getAccessToken() : null,
+                claims);
+    }
+
+    public String getProjectId(String projectName) throws ServiceException {
+        RequestContext ctx = requestContext();
         int limit = 10;
         int offset = 0;
 
         while (true) {
-            List<Project> userProjects = airavataClient.getUserProjects(
-                    UserContext.authzToken(), UserContext.gatewayId(), 
UserContext.userId(), limit, offset);
+            List<Project> userProjects =
+                    projectService.getUserProjects(ctx, ctx.getGatewayId(), 
ctx.getUserId(), limit, offset);
             Optional<Project> defaultProject = userProjects.stream()
                     .filter(project -> projectName.equals(project.getName()))
                     .findFirst();
 
             if (defaultProject.isPresent()) {
-                return defaultProject.get().getProjectID();
+                return defaultProject.get().getProjectId();
             }
             if (userProjects.size() < limit) {
                 break;
@@ -72,41 +117,37 @@ public class AiravataService {
             offset += limit;
         }
 
-        throw new RuntimeException("Could not find project: " + projectName + 
" for the user: " + UserContext.userId());
+        throw new RuntimeException("Could not find project: " + projectName + 
" for the user: " + ctx.getUserId());
     }
 
     public GroupComputeResourcePreference 
extractGroupComputeResourcePreference(
-            Airavata.Iface airavataClient, String group, String remoteCluster) 
throws TException {
+            String group, String remoteCluster) throws ServiceException {
+        RequestContext ctx = requestContext();
         List<GroupResourceProfile> groupResourceList =
-                airavataClient.getGroupResourceList(UserContext.authzToken(), 
UserContext.gatewayId());
+                groupResourceProfileService.getGroupResourceList(ctx, 
ctx.getGatewayId());
         String groupProfileName = StringUtils.isNotBlank(group) ? group : 
"Default";
 
         return groupResourceList.stream()
                 .filter(profile -> 
groupProfileName.equalsIgnoreCase(profile.getGroupResourceProfileName()))
-                .flatMap(profile -> profile.getComputePreferences().stream()
+                .flatMap(profile -> 
profile.getComputePreferencesList().stream()
                         .filter(preference -> 
preference.getComputeResourceId().startsWith(remoteCluster)))
                 .findFirst()
                 .orElseThrow(() -> new RuntimeException("Could not find a 
matching Compute Resource Preference in the "
-                        + groupProfileName + " group resource profile for the 
user: " + UserContext.userId()));
+                        + groupProfileName + " group resource profile for the 
user: " + ctx.getUserId()));
     }
 
-    public List<String> getUserExperimentIDs(Airavata.Iface airavataClient) 
throws TException {
+    public List<String> getUserExperimentIDs() throws ServiceException {
+        RequestContext ctx = requestContext();
         int limit = 100;
-        Map<ExperimentSearchFields, String> filters =
-                Map.of(ExperimentSearchFields.PROJECT_ID, 
getProjectId(airavataClient, "Default Project"));
+        String projectId = getProjectId("Default Project");
+        Map<ExperimentSearchFields, String> filters = 
Map.of(ExperimentSearchFields.PROJECT_ID, projectId);
 
-        return Stream.iterate(0, offset -> offset + limit)
-                .map(offset -> {
+        return Stream.iterate(0, o -> o + limit)
+                .map(o -> {
                     try {
-                        return airavataClient.searchExperiments(
-                                UserContext.authzToken(),
-                                UserContext.gatewayId(),
-                                UserContext.userId(),
-                                filters,
-                                limit,
-                                offset);
-                    } catch (TException e) {
-                        // Handle exception gracefully
+                        return experimentService.searchExperiments(
+                                ctx, ctx.getGatewayId(), ctx.getUserId(), 
filters, limit, o);
+                    } catch (ServiceException e) {
                         throw new RuntimeException(e);
                     }
                 })
diff --git 
a/airavata-api/file-server/src/main/java/org/apache/airavata/file/server/service/ProcessDataManager.java
 
b/airavata-api/file-server/src/main/java/org/apache/airavata/file/server/service/ProcessDataManager.java
index 3b55d3598c..180f8e073d 100644
--- 
a/airavata-api/file-server/src/main/java/org/apache/airavata/file/server/service/ProcessDataManager.java
+++ 
b/airavata-api/file-server/src/main/java/org/apache/airavata/file/server/service/ProcessDataManager.java
@@ -25,7 +25,7 @@ import org.apache.airavata.compute.util.AgentAdaptor;
 import org.apache.airavata.compute.util.AgentUtils;
 import org.apache.airavata.compute.util.SSHJAgentAdaptor;
 import org.apache.airavata.execution.orchestrator.AdaptorSupport;
-import org.apache.airavata.model.appcatalog.groupresourceprofile.ResourceType;
+import 
org.apache.airavata.model.appcatalog.groupresourceprofile.proto.ResourceType;
 import org.apache.airavata.model.credential.store.SSHCredential;
 import org.apache.airavata.model.experiment.ExperimentModel;
 import org.apache.airavata.model.process.ProcessModel;
diff --git 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/AiravataArmeriaConfig.java
 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/AiravataArmeriaConfig.java
index a6bf9b5edf..283087af38 100644
--- 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/AiravataArmeriaConfig.java
+++ 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/AiravataArmeriaConfig.java
@@ -59,7 +59,7 @@ public class AiravataArmeriaConfig {
                     .allowRequestMethods(HttpMethod.GET, HttpMethod.POST,
                                          HttpMethod.PUT, HttpMethod.DELETE, 
HttpMethod.OPTIONS)
                     .allowRequestHeaders("Authorization", "Content-Type", 
"X-Claims")
-                    .build());
+                    .newDecorator());
         };
     }
 }
diff --git 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/config/GrpcAuthInterceptor.java
 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/config/GrpcAuthInterceptor.java
index c73b22ef7e..3155eb7147 100644
--- 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/config/GrpcAuthInterceptor.java
+++ 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/config/GrpcAuthInterceptor.java
@@ -31,7 +31,7 @@ import java.util.HashMap;
 import java.util.Map;
 import org.apache.airavata.common.security.UserContext;
 import org.springframework.stereotype.Component;
-import org.apache.airavata.model.security.AuthzToken;
+import org.apache.airavata.model.security.proto.AuthzToken;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -61,8 +61,6 @@ public class GrpcAuthInterceptor implements ServerInterceptor 
{
             return new ServerCall.Listener<>() {};
         }
 
-        AuthzToken authzToken = new AuthzToken(accessToken);
-
         Map<String, String> claimsMap = new HashMap<>();
         String claimsHeader = headers.get(X_CLAIMS_KEY);
         if (claimsHeader != null && !claimsHeader.isBlank()) {
@@ -73,7 +71,10 @@ public class GrpcAuthInterceptor implements 
ServerInterceptor {
             }
         }
 
-        authzToken.setClaimsMap(claimsMap);
+        AuthzToken authzToken = AuthzToken.newBuilder()
+                .setAccessToken(accessToken)
+                .putAllClaimsMap(claimsMap)
+                .build();
         UserContext.setAuthzToken(authzToken);
 
         ServerCall.Listener<ReqT> delegate = next.startCall(call, headers);
diff --git 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ApplicationCatalogGrpcService.java
 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ApplicationCatalogGrpcService.java
index d7c1279432..3e11b27b14 100644
--- 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ApplicationCatalogGrpcService.java
+++ 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ApplicationCatalogGrpcService.java
@@ -26,11 +26,11 @@ import java.util.Map;
 import org.apache.airavata.api.appcatalog.*;
 import org.apache.airavata.compute.service.ApplicationCatalogService;
 import org.apache.airavata.execution.service.RequestContext;
-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.server.grpc.GrpcStatusMapper;
 import org.springframework.stereotype.Component;
 
@@ -210,7 +210,7 @@ public class ApplicationCatalogGrpcService
             List<ApplicationDeploymentDescription> deployments =
                     
applicationCatalogService.getAccessibleApplicationDeployments(
                             ctx, request.getGatewayId(),
-                            
org.apache.airavata.model.group.ResourcePermissionType.READ);
+                            
org.apache.airavata.model.group.proto.ResourcePermissionType.READ);
             
observer.onNext(GetAccessibleApplicationDeploymentsResponse.newBuilder()
                     .addAllApplicationDeployments(deployments).build());
             observer.onCompleted();
diff --git 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/CredentialGrpcService.java
 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/CredentialGrpcService.java
index 50c3b76901..a44c68be0b 100644
--- 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/CredentialGrpcService.java
+++ 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/CredentialGrpcService.java
@@ -22,12 +22,13 @@ package org.apache.airavata.server.grpc.services;
 import com.google.protobuf.Empty;
 import io.grpc.stub.StreamObserver;
 import java.util.List;
+import java.util.stream.Collectors;
 import org.apache.airavata.api.credential.*;
 import org.apache.airavata.credential.service.CredentialService;
 import org.apache.airavata.credential.service.SSHAccountService;
 import org.apache.airavata.execution.service.RequestContext;
-import org.apache.airavata.model.credential.store.CredentialSummary;
-import org.apache.airavata.model.credential.store.SummaryType;
+import org.apache.airavata.model.credential.store.proto.CredentialSummary;
+import org.apache.airavata.model.credential.store.proto.SummaryType;
 import org.apache.airavata.server.grpc.GrpcStatusMapper;
 import org.springframework.stereotype.Component;
 
@@ -60,8 +61,6 @@ public class CredentialGrpcService extends 
CredentialServiceGrpc.CredentialServi
                                        
StreamObserver<RegisterPwdCredentialResponse> observer) {
         try {
             RequestContext ctx = GrpcRequestContext.current();
-            // TODO: The service layer expects loginUserName, password, 
description separately
-            // but the proto sends a PasswordCredential message. Need mapper.
             var pwdCred = request.getPasswordCredential();
             String token = credentialService.registerPwdCredential(
                     ctx, pwdCred.getLoginUserName(), pwdCred.getPassword(), 
pwdCred.getDescription());
@@ -77,8 +76,8 @@ public class CredentialGrpcService extends 
CredentialServiceGrpc.CredentialServi
                                       StreamObserver<CredentialSummary> 
observer) {
         try {
             RequestContext ctx = GrpcRequestContext.current();
-            CredentialSummary result = 
credentialService.getCredentialSummary(ctx, request.getTokenId());
-            observer.onNext(result);
+            var thriftResult = credentialService.getCredentialSummary(ctx, 
request.getTokenId());
+            observer.onNext(toProto(thriftResult));
             observer.onCompleted();
         } catch (Exception e) {
             observer.onError(GrpcStatusMapper.toStatusException(e));
@@ -90,11 +89,14 @@ public class CredentialGrpcService extends 
CredentialServiceGrpc.CredentialServi
                                           
StreamObserver<GetAllCredentialSummariesResponse> observer) {
         try {
             RequestContext ctx = GrpcRequestContext.current();
-            // TODO: Map proto SummaryType enum to Thrift SummaryType — needs 
mapper
-            SummaryType type = SummaryType.valueOf(request.getType().name());
-            List<CredentialSummary> summaries = 
credentialService.getAllCredentialSummaries(ctx, type);
+            var thriftType = 
org.apache.airavata.model.credential.store.SummaryType.valueOf(
+                    request.getType().name());
+            var thriftSummaries = 
credentialService.getAllCredentialSummaries(ctx, thriftType);
+            List<CredentialSummary> protoSummaries = thriftSummaries.stream()
+                    .map(this::toProto)
+                    .collect(Collectors.toList());
             observer.onNext(GetAllCredentialSummariesResponse.newBuilder()
-                    .addAllCredentialSummaries(summaries).build());
+                    .addAllCredentialSummaries(protoSummaries).build());
             observer.onCompleted();
         } catch (Exception e) {
             observer.onError(GrpcStatusMapper.toStatusException(e));
@@ -147,8 +149,6 @@ public class CredentialGrpcService extends 
CredentialServiceGrpc.CredentialServi
                                     StreamObserver<IsSSHSetupCompleteResponse> 
observer) {
         try {
             RequestContext ctx = GrpcRequestContext.current();
-            // TODO: The service layer expects airavataCredStoreToken but the 
proto
-            // doesn't include it. Passing empty string — revisit when mappers 
are added.
             boolean isComplete = 
sshAccountService.isSSHSetupCompleteForUserComputeResourcePreference(
                     ctx, request.getComputeResourceId(), "");
             observer.onNext(IsSSHSetupCompleteResponse.newBuilder()
@@ -164,8 +164,6 @@ public class CredentialGrpcService extends 
CredentialServiceGrpc.CredentialServi
                                  StreamObserver<SetupSSHAccountResponse> 
observer) {
         try {
             RequestContext ctx = GrpcRequestContext.current();
-            // TODO: The service layer expects airavataCredStoreToken but the 
proto
-            // doesn't include it. Passing empty string — revisit when mappers 
are added.
             sshAccountService.setupUserComputeResourcePreferencesForSSH(
                     ctx, request.getComputeResourceId(), 
request.getUsername(), "");
             
observer.onNext(SetupSSHAccountResponse.newBuilder().setSuccess(true).build());
@@ -174,4 +172,28 @@ public class CredentialGrpcService extends 
CredentialServiceGrpc.CredentialServi
             observer.onError(GrpcStatusMapper.toStatusException(e));
         }
     }
+
+    // Thrift-to-proto conversion for CredentialSummary
+    private CredentialSummary 
toProto(org.apache.airavata.model.credential.store.CredentialSummary thrift) {
+        CredentialSummary.Builder builder = CredentialSummary.newBuilder();
+        if (thrift.getType() != null) {
+            builder.setType(SummaryType.valueOf(thrift.getType().name()));
+        }
+        if (thrift.getGatewayId() != null) {
+            builder.setGatewayId(thrift.getGatewayId());
+        }
+        if (thrift.getUsername() != null) {
+            builder.setUsername(thrift.getUsername());
+        }
+        if (thrift.getPublicKey() != null) {
+            builder.setPublicKey(thrift.getPublicKey());
+        }
+        if (thrift.getToken() != null) {
+            builder.setToken(thrift.getToken());
+        }
+        if (thrift.getDescription() != null) {
+            builder.setDescription(thrift.getDescription());
+        }
+        return builder.build();
+    }
 }
diff --git 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/DataProductGrpcService.java
 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/DataProductGrpcService.java
index 590dc4e6ce..256e84edd0 100644
--- 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/DataProductGrpcService.java
+++ 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/DataProductGrpcService.java
@@ -23,7 +23,7 @@ import io.grpc.stub.StreamObserver;
 import java.util.List;
 import org.apache.airavata.api.dataproduct.*;
 import org.apache.airavata.execution.service.RequestContext;
-import org.apache.airavata.model.data.replica.DataProductModel;
+import org.apache.airavata.model.data.replica.proto.DataProductModel;
 import org.apache.airavata.server.grpc.GrpcStatusMapper;
 import org.apache.airavata.storage.service.DataProductService;
 import org.springframework.stereotype.Component;
diff --git 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ExperimentGrpcService.java
 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ExperimentGrpcService.java
index 7c44562630..e18c9bd0de 100644
--- 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ExperimentGrpcService.java
+++ 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ExperimentGrpcService.java
@@ -27,15 +27,15 @@ import java.util.Map;
 import org.apache.airavata.api.experiment.*;
 import org.apache.airavata.execution.service.ExperimentService;
 import org.apache.airavata.execution.service.RequestContext;
-import org.apache.airavata.model.application.io.OutputDataObjectType;
-import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.ExperimentSearchFields;
-import org.apache.airavata.model.experiment.ExperimentStatistics;
-import org.apache.airavata.model.experiment.ExperimentSummaryModel;
-import org.apache.airavata.model.job.JobModel;
-import org.apache.airavata.model.status.ExperimentStatus;
-import org.apache.airavata.model.status.JobStatus;
-import org.apache.airavata.model.status.ProcessStatus;
+import org.apache.airavata.model.application.io.proto.OutputDataObjectType;
+import org.apache.airavata.model.experiment.proto.ExperimentModel;
+import org.apache.airavata.model.experiment.proto.ExperimentSearchFields;
+import org.apache.airavata.model.experiment.proto.ExperimentStatistics;
+import org.apache.airavata.model.experiment.proto.ExperimentSummaryModel;
+import org.apache.airavata.model.job.proto.JobModel;
+import org.apache.airavata.model.status.proto.ExperimentStatus;
+import org.apache.airavata.model.status.proto.JobStatus;
+import org.apache.airavata.model.status.proto.ProcessStatus;
 import org.apache.airavata.server.grpc.GrpcStatusMapper;
 import org.springframework.stereotype.Component;
 
diff --git 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/GatewayGrpcService.java
 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/GatewayGrpcService.java
index 0842a48526..9ac8d62b84 100644
--- 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/GatewayGrpcService.java
+++ 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/GatewayGrpcService.java
@@ -25,7 +25,7 @@ import java.util.List;
 import org.apache.airavata.api.gateway.*;
 import org.apache.airavata.execution.service.GatewayService;
 import org.apache.airavata.execution.service.RequestContext;
-import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.model.workspace.proto.Gateway;
 import org.apache.airavata.server.grpc.GrpcStatusMapper;
 import org.springframework.stereotype.Component;
 
diff --git 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/GatewayResourceProfileGrpcService.java
 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/GatewayResourceProfileGrpcService.java
index 8067a20e61..d5595dd02a 100644
--- 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/GatewayResourceProfileGrpcService.java
+++ 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/GatewayResourceProfileGrpcService.java
@@ -25,10 +25,10 @@ import java.util.List;
 import org.apache.airavata.api.gatewayprofile.*;
 import org.apache.airavata.compute.service.GatewayResourceProfileService;
 import org.apache.airavata.execution.service.RequestContext;
-import 
org.apache.airavata.model.appcatalog.accountprovisioning.SSHAccountProvisioner;
-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.accountprovisioning.proto.SSHAccountProvisioner;
+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.apache.airavata.server.grpc.GrpcStatusMapper;
 import org.springframework.stereotype.Component;
 
diff --git 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/GroupResourceProfileGrpcService.java
 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/GroupResourceProfileGrpcService.java
index ce19ebcb8f..5159ad915a 100644
--- 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/GroupResourceProfileGrpcService.java
+++ 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/GroupResourceProfileGrpcService.java
@@ -25,11 +25,11 @@ import java.util.List;
 import org.apache.airavata.api.groupprofile.*;
 import org.apache.airavata.compute.service.GroupResourceProfileService;
 import org.apache.airavata.execution.service.RequestContext;
-import org.apache.airavata.model.appcatalog.gatewaygroups.GatewayGroups;
-import 
org.apache.airavata.model.appcatalog.groupresourceprofile.BatchQueueResourcePolicy;
-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.BatchQueueResourcePolicy;
+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.server.grpc.GrpcStatusMapper;
 import org.springframework.stereotype.Component;
 
diff --git 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/GrpcRequestContext.java
 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/GrpcRequestContext.java
index f004490069..c1a6e57b4a 100644
--- 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/GrpcRequestContext.java
+++ 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/GrpcRequestContext.java
@@ -23,7 +23,7 @@ import java.util.Collections;
 import java.util.Map;
 import org.apache.airavata.common.security.UserContext;
 import org.apache.airavata.execution.service.RequestContext;
-import org.apache.airavata.model.security.AuthzToken;
+import org.apache.airavata.model.security.proto.AuthzToken;
 
 /**
  * Utility to create a {@link RequestContext} from the thread-local
diff --git 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/NotificationGrpcService.java
 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/NotificationGrpcService.java
index 120c24f3ae..fececd51e2 100644
--- 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/NotificationGrpcService.java
+++ 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/NotificationGrpcService.java
@@ -25,7 +25,7 @@ import java.util.List;
 import org.apache.airavata.api.notification.*;
 import org.apache.airavata.execution.service.NotificationService;
 import org.apache.airavata.execution.service.RequestContext;
-import org.apache.airavata.model.workspace.Notification;
+import org.apache.airavata.model.workspace.proto.Notification;
 import org.apache.airavata.server.grpc.GrpcStatusMapper;
 import org.springframework.stereotype.Component;
 
diff --git 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ParserGrpcService.java
 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ParserGrpcService.java
index a97579bed7..6aac4b8a43 100644
--- 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ParserGrpcService.java
+++ 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ParserGrpcService.java
@@ -25,8 +25,8 @@ import java.util.List;
 import org.apache.airavata.api.parser.*;
 import org.apache.airavata.compute.service.ParserService;
 import org.apache.airavata.execution.service.RequestContext;
-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.apache.airavata.server.grpc.GrpcStatusMapper;
 import org.springframework.stereotype.Component;
 
diff --git 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ProjectGrpcService.java
 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ProjectGrpcService.java
index 9e960c8434..1c2da3b11d 100644
--- 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ProjectGrpcService.java
+++ 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ProjectGrpcService.java
@@ -27,8 +27,8 @@ import java.util.Map;
 import org.apache.airavata.api.project.*;
 import org.apache.airavata.execution.service.ProjectService;
 import org.apache.airavata.execution.service.RequestContext;
-import org.apache.airavata.model.experiment.ProjectSearchFields;
-import org.apache.airavata.model.workspace.Project;
+import org.apache.airavata.model.experiment.proto.ProjectSearchFields;
+import org.apache.airavata.model.workspace.proto.Project;
 import org.apache.airavata.server.grpc.GrpcStatusMapper;
 import org.springframework.stereotype.Component;
 
diff --git 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ResourceGrpcService.java
 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ResourceGrpcService.java
index ee21473b93..e85a5a200e 100644
--- 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ResourceGrpcService.java
+++ 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/ResourceGrpcService.java
@@ -25,9 +25,17 @@ import java.util.Map;
 import org.apache.airavata.api.resource.*;
 import org.apache.airavata.compute.service.ResourceService;
 import org.apache.airavata.execution.service.RequestContext;
-import org.apache.airavata.model.appcatalog.computeresource.*;
-import 
org.apache.airavata.model.appcatalog.storageresource.StorageResourceDescription;
-import org.apache.airavata.model.data.movement.*;
+import 
org.apache.airavata.model.appcatalog.computeresource.proto.CloudJobSubmission;
+import 
org.apache.airavata.model.appcatalog.computeresource.proto.ComputeResourceDescription;
+import 
org.apache.airavata.model.appcatalog.computeresource.proto.LOCALSubmission;
+import 
org.apache.airavata.model.appcatalog.computeresource.proto.SSHJobSubmission;
+import 
org.apache.airavata.model.appcatalog.computeresource.proto.UnicoreJobSubmission;
+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.GridFTPDataMovement;
+import org.apache.airavata.model.data.movement.proto.LOCALDataMovement;
+import org.apache.airavata.model.data.movement.proto.SCPDataMovement;
+import org.apache.airavata.model.data.movement.proto.UnicoreDataMovement;
 import org.apache.airavata.server.grpc.GrpcStatusMapper;
 import org.springframework.stereotype.Component;
 
@@ -477,7 +485,7 @@ public class ResourceGrpcService extends 
ResourceServiceGrpc.ResourceServiceImpl
             // TODO: The service layer expects a DMType but the proto doesn't 
include it.
             // Passing COMPUTE as default — revisit when mappers are added.
             resourceService.deleteDataMovementInterface(
-                    request.getComputeResourceId(), 
request.getDataMovementId(), DMType.COMPUTE);
+                    request.getComputeResourceId(), 
request.getDataMovementId(), DMType.COMPUTE_RESOURCE);
             observer.onNext(Empty.getDefaultInstance());
             observer.onCompleted();
         } catch (Exception e) {
diff --git 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/SharingGrpcService.java
 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/SharingGrpcService.java
index bedffa7345..7ba648c0d7 100644
--- 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/SharingGrpcService.java
+++ 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/SharingGrpcService.java
@@ -26,7 +26,7 @@ import java.util.List;
 import java.util.Map;
 import org.apache.airavata.api.sharing.*;
 import org.apache.airavata.execution.service.RequestContext;
-import org.apache.airavata.model.group.ResourcePermissionType;
+import org.apache.airavata.model.group.proto.ResourcePermissionType;
 import org.apache.airavata.server.grpc.GrpcStatusMapper;
 import org.apache.airavata.sharing.service.ResourceSharingService;
 import org.springframework.stereotype.Component;
diff --git 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/UserResourceProfileGrpcService.java
 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/UserResourceProfileGrpcService.java
index 8a16e7709d..7e0226087d 100644
--- 
a/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/UserResourceProfileGrpcService.java
+++ 
b/airavata-server/grpc/src/main/java/org/apache/airavata/server/grpc/services/UserResourceProfileGrpcService.java
@@ -25,10 +25,10 @@ import java.util.List;
 import org.apache.airavata.api.userprofile.*;
 import org.apache.airavata.compute.service.UserResourceProfileService;
 import org.apache.airavata.execution.service.RequestContext;
-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.apache.airavata.server.grpc.GrpcStatusMapper;
 import org.springframework.stereotype.Component;
 
diff --git 
a/airavata-server/rest/src/main/java/org/apache/airavata/server/rest/config/SecurityConfig.java
 
b/airavata-server/rest/src/main/java/org/apache/airavata/server/rest/config/SecurityConfig.java
index c31d1b279b..e03d12115d 100644
--- 
a/airavata-server/rest/src/main/java/org/apache/airavata/server/rest/config/SecurityConfig.java
+++ 
b/airavata-server/rest/src/main/java/org/apache/airavata/server/rest/config/SecurityConfig.java
@@ -34,7 +34,7 @@ import java.util.Map;
 import java.util.Set;
 import org.apache.airavata.common.config.Constants;
 import org.apache.airavata.common.security.UserContext;
-import org.apache.airavata.model.security.AuthzToken;
+import org.apache.airavata.model.security.proto.AuthzToken;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.web.servlet.FilterRegistrationBean;
@@ -93,8 +93,6 @@ public class SecurityConfig {
                     return;
                 }
 
-                AuthzToken authzToken = new AuthzToken(accessToken);
-
                 // Parse X-Claims header if present (JSON map of claim 
key-values)
                 String claimsHeader = httpReq.getHeader("X-Claims");
                 Map<String, String> claimsMap = new HashMap<>();
@@ -120,7 +118,10 @@ public class SecurityConfig {
                     }
                 }
 
-                authzToken.setClaimsMap(claimsMap);
+                AuthzToken authzToken = AuthzToken.newBuilder()
+                        .setAccessToken(accessToken)
+                        .putAllClaimsMap(claimsMap)
+                        .build();
                 UserContext.setAuthzToken(authzToken);
 
                 chain.doFilter(request, response);

Reply via email to