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

yasithdev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata.git


The following commit(s) were added to refs/heads/master by this push:
     new 1c96d1c2f9 refactor(api): remove dead schema, fix two persistence 
defects, drop legacy fields (#682)
1c96d1c2f9 is described below

commit 1c96d1c2f9be68b2947cc7ee2d847bd6303ddc83
Author: Yasith Jayawardana <[email protected]>
AuthorDate: Sat Jun 13 16:16:21 2026 -0400

    refactor(api): remove dead schema, fix two persistence defects, drop legacy 
fields (#682)
    
    Removes schema no code reads (process_workflow table+proto, 
resource.status/StatusEnum, orphan agent_deployment_info table, unused 
BatchQueueRepository, duplicate app_module_mapping entity mapping, dead 
credentials.CREDENTIAL_OWNER_TYPE column, and the grid-cert-legacy 
user_dn/generate_cert fields on ProcessModel/UserConfigurationDataModel with 
proto numbers reserved and Python stubs regenerated). Fixes two defects: 
parsing_template silently dropped its parser_connections DAG on save, [...]
---
 .../compute/model/AgentDeploymentInfoEntity.java   | 79 --------------------
 .../airavata/compute/model/QueueStatusEntity.java  |  6 +-
 .../repository/AgentDeploymentInfoRepository.java  | 27 -------
 .../compute/repository/BatchQueueRepository.java   | 45 -----------
 .../credential/model/CredentialEntity.java         | 11 ---
 .../infrastructure/ExecutionDataAccessImpl.java    | 14 ----
 .../orchestration/mapper/ExecutionMapper.java      | 18 -----
 .../orchestration/model/ProcessEntity.java         | 37 ---------
 .../orchestration/model/ProcessWorkflowEntity.java | 87 ----------------------
 .../orchestration/model/ProcessWorkflowPK.java     | 70 -----------------
 .../model/UserConfigurationDataEntity.java         | 21 ------
 .../repository/ProcessWorkflowRepository.java      | 84 ---------------------
 .../service/RegistryServerHandler.java             | 10 ---
 .../orchestration/util/ExperimentModelUtil.java    |  2 -
 .../airavata/research/mapper/ResearchMapper.java   | 51 +++++++++++++
 .../research/model/AppModuleMappingEntity.java     | 84 ---------------------
 .../research/model/AppModuleMappingPK.java         | 72 ------------------
 .../research/model/ParsingTemplateEntity.java      | 13 ++++
 .../airavata/research/model/ResourceEntity.java    | 12 ---
 .../research/model/ResourceStarEntity.java         |  8 +-
 .../apache/airavata/research/model/StatusEnum.java | 27 -------
 .../apache/airavata/research/model/TagEntity.java  |  5 +-
 .../repository/ApplicationInterfaceRepository.java | 16 ----
 .../service/ExperimentRegistryService.java         | 21 ------
 .../research/service/ResearchResourceService.java  | 16 +++-
 .../airavata/interfaces/ApplicationInterface.java  |  7 --
 .../org/apache/airavata/interfaces/Constants.java  |  1 -
 .../airavata/interfaces/ExecutionDataAccess.java   |  6 --
 .../airavata/interfaces/ExpCatChildDataType.java   |  3 +-
 .../airavata/interfaces/ExperimentRegistry.java    |  5 --
 .../airavata/model/experiment/experiment.proto     |  5 +-
 .../apache/airavata/model/process/process.proto    | 11 +--
 .../src/test/resources/META-INF/persistence.xml    |  3 -
 .../db/migration/airavata/V1__Baseline_schema.sql  | 31 ++------
 .../airavata/model/experiment/experiment_pb2.py    | 32 ++++----
 .../airavata/model/experiment/experiment_pb2.pyi   |  8 +-
 .../apache/airavata/model/process/process_pb2.py   |  8 +-
 .../apache/airavata/model/process/process_pb2.pyi  | 22 +-----
 airavata-python-sdk/airavata_sdk/helpers/models.py |  2 -
 .../airavata_sdk/helpers/research_resources.py     |  2 -
 .../db/migration/airavata/V1__Baseline_schema.sql  | 31 ++------
 conf/db/seed.sql                                   |  2 +-
 42 files changed, 127 insertions(+), 888 deletions(-)

diff --git 
a/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/model/AgentDeploymentInfoEntity.java
 
b/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/model/AgentDeploymentInfoEntity.java
deleted file mode 100644
index 66702b9a31..0000000000
--- 
a/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/model/AgentDeploymentInfoEntity.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-package org.apache.airavata.compute.model;
-
-import jakarta.persistence.Column;
-import jakarta.persistence.Entity;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.Id;
-import jakarta.persistence.Table;
-import org.hibernate.annotations.GenericGenerator;
-
-@Entity
-@Table(name = "AGENT_DEPLOYMENT_INFO")
-public class AgentDeploymentInfoEntity {
-
-    @Id
-    @Column(name = "AGENT_DEPLOYMENT_INFO_ID")
-    @GeneratedValue(generator = "uuid")
-    @GenericGenerator(name = "uuid", strategy = "uuid2")
-    private String id;
-
-    @Column(unique = true, name = "USER_FRINEDLY_NAME")
-    private String userFriendlyName;
-
-    @Column(name = "COMPUTE_RESOURCE_ID")
-    private String computeResourceId;
-
-    @Column(name = "AGENT_APPLICATION_ID")
-    private String agentApplicationId;
-
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-
-    public String getUserFriendlyName() {
-        return userFriendlyName;
-    }
-
-    public void setUserFriendlyName(String userFriendlyName) {
-        this.userFriendlyName = userFriendlyName;
-    }
-
-    public String getComputeResourceId() {
-        return computeResourceId;
-    }
-
-    public void setComputeResourceId(String computeResourceId) {
-        this.computeResourceId = computeResourceId;
-    }
-
-    public String getAgentApplicationId() {
-        return agentApplicationId;
-    }
-
-    public void setAgentApplicationId(String agentApplicationId) {
-        this.agentApplicationId = agentApplicationId;
-    }
-}
diff --git 
a/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/model/QueueStatusEntity.java
 
b/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/model/QueueStatusEntity.java
index 74cb036606..9bcf88f291 100644
--- 
a/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/model/QueueStatusEntity.java
+++ 
b/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/model/QueueStatusEntity.java
@@ -48,7 +48,7 @@ public class QueueStatusEntity implements Serializable {
     private boolean queueUp;
 
     @Column(name = "RUNNING_JOBS")
-    private boolean runningJobs;
+    private int runningJobs;
 
     @Column(name = "QUEUED_JOBS")
     private int queuedJobs;
@@ -87,11 +87,11 @@ public class QueueStatusEntity implements Serializable {
         this.queueUp = queueUp;
     }
 
-    public boolean isRunningJobs() {
+    public int getRunningJobs() {
         return runningJobs;
     }
 
-    public void setRunningJobs(boolean runningJobs) {
+    public void setRunningJobs(int runningJobs) {
         this.runningJobs = runningJobs;
     }
 
diff --git 
a/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/repository/AgentDeploymentInfoRepository.java
 
b/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/repository/AgentDeploymentInfoRepository.java
deleted file mode 100644
index d2f2d3ef1f..0000000000
--- 
a/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/repository/AgentDeploymentInfoRepository.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-package org.apache.airavata.compute.repository;
-
-import org.apache.airavata.compute.model.AgentDeploymentInfoEntity;
-import org.springframework.data.repository.CrudRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface AgentDeploymentInfoRepository extends 
CrudRepository<AgentDeploymentInfoEntity, String> {}
diff --git 
a/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/repository/BatchQueueRepository.java
 
b/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/repository/BatchQueueRepository.java
deleted file mode 100644
index 73d7cd60d5..0000000000
--- 
a/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/repository/BatchQueueRepository.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-package org.apache.airavata.compute.repository;
-
-import org.apache.airavata.compute.mapper.ComputeMapper;
-import org.apache.airavata.compute.model.BatchQueueEntity;
-import org.apache.airavata.compute.model.BatchQueuePK;
-import org.apache.airavata.db.AbstractRepository;
-import org.apache.airavata.model.appcatalog.computeresource.proto.BatchQueue;
-import org.springframework.stereotype.Component;
-
-@Component
-public class BatchQueueRepository extends AbstractRepository<BatchQueue, 
BatchQueueEntity, BatchQueuePK> {
-
-    public BatchQueueRepository() {
-        super(BatchQueue.class, BatchQueueEntity.class);
-    }
-
-    @Override
-    protected BatchQueue toModel(BatchQueueEntity entity) {
-        return ComputeMapper.INSTANCE.batchQueueToModel(entity);
-    }
-
-    @Override
-    protected BatchQueueEntity toEntity(BatchQueue model) {
-        return ComputeMapper.INSTANCE.batchQueueToEntity(model);
-    }
-}
diff --git 
a/airavata-api/credential-service/src/main/java/org/apache/airavata/credential/model/CredentialEntity.java
 
b/airavata-api/credential-service/src/main/java/org/apache/airavata/credential/model/CredentialEntity.java
index f4c94cd246..57d7cebaa9 100644
--- 
a/airavata-api/credential-service/src/main/java/org/apache/airavata/credential/model/CredentialEntity.java
+++ 
b/airavata-api/credential-service/src/main/java/org/apache/airavata/credential/model/CredentialEntity.java
@@ -48,9 +48,6 @@ public class CredentialEntity {
     @Column(name = "DESCRIPTION", length = 500)
     private String description;
 
-    @Column(name = "CREDENTIAL_OWNER_TYPE", length = 50)
-    private String credentialOwnerType;
-
     public String getGatewayId() {
         return gatewayId;
     }
@@ -98,12 +95,4 @@ public class CredentialEntity {
     public void setDescription(String description) {
         this.description = description;
     }
-
-    public String getCredentialOwnerType() {
-        return credentialOwnerType;
-    }
-
-    public void setCredentialOwnerType(String credentialOwnerType) {
-        this.credentialOwnerType = credentialOwnerType;
-    }
 }
diff --git 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/infrastructure/ExecutionDataAccessImpl.java
 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/infrastructure/ExecutionDataAccessImpl.java
index 3b60e33e3a..40cea1dbc7 100644
--- 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/infrastructure/ExecutionDataAccessImpl.java
+++ 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/infrastructure/ExecutionDataAccessImpl.java
@@ -29,7 +29,6 @@ import org.apache.airavata.model.commons.proto.ErrorModel;
 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.process.proto.ProcessWorkflow;
 import 
org.apache.airavata.model.scheduling.proto.ComputationalResourceSchedulingModel;
 import org.apache.airavata.model.status.proto.JobStatus;
 import org.apache.airavata.model.status.proto.ProcessState;
@@ -53,7 +52,6 @@ public class ExecutionDataAccessImpl implements 
ExecutionDataAccess {
     private final ExecIoParamRepository execIoParamRepository = new 
ExecIoParamRepository();
     private final ExecStatusRepository execStatusRepository = new 
ExecStatusRepository();
     private final ExecErrorRepository execErrorRepository = new 
ExecErrorRepository();
-    private final ProcessWorkflowRepository processWorkflowRepository = new 
ProcessWorkflowRepository();
     private final JobRepository jobRepository = new JobRepository();
     private final TaskRepository taskRepository = new TaskRepository();
     // --- Process ---
@@ -141,18 +139,6 @@ public class ExecutionDataAccessImpl implements 
ExecutionDataAccess {
         return execIoParamRepository.getProcessOutputs(processId);
     }
 
-    // --- Process Workflow ---
-
-    @Override
-    public void addProcessWorkflow(ProcessWorkflow processWorkflow, String 
processId) throws RegistryException {
-        processWorkflowRepository.addProcessWorkflow(processWorkflow, 
processId);
-    }
-
-    @Override
-    public List<ProcessWorkflow> getProcessWorkflows(String processId) throws 
RegistryException {
-        return processWorkflowRepository.getProcessWorkflows(processId);
-    }
-
     // --- Task ---
 
     @Override
diff --git 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/mapper/ExecutionMapper.java
 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/mapper/ExecutionMapper.java
index ce69a51619..1a49127519 100644
--- 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/mapper/ExecutionMapper.java
+++ 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/mapper/ExecutionMapper.java
@@ -27,7 +27,6 @@ import org.apache.airavata.model.commons.proto.ErrorModel;
 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.process.proto.ProcessWorkflow;
 import 
org.apache.airavata.model.scheduling.proto.ComputationalResourceSchedulingModel;
 import org.apache.airavata.model.status.proto.JobState;
 import org.apache.airavata.model.status.proto.JobStatus;
@@ -101,9 +100,6 @@ public interface ExecutionMapper extends 
CommonMapperConversions {
         if (entity.getTasks() != null) {
             entity.getTasks().forEach(t -> b.addTasks(taskToModel(t)));
         }
-        if (entity.getProcessWorkflows() != null) {
-            entity.getProcessWorkflows().forEach(w -> 
b.addProcessWorkflows(processWorkflowToModel(w)));
-        }
         return b.build();
     }
 
@@ -132,11 +128,6 @@ public interface ExecutionMapper extends 
CommonMapperConversions {
             entity.setTasks(new java.util.ArrayList<>());
             model.getTasksList().forEach(t -> 
entity.getTasks().add(taskToEntity(t)));
         }
-        if (!model.getProcessWorkflowsList().isEmpty()) {
-            entity.setProcessWorkflows(new java.util.ArrayList<>());
-            model.getProcessWorkflowsList()
-                    .forEach(w -> 
entity.getProcessWorkflows().add(processWorkflowToEntity(w)));
-        }
         return entity;
     }
 
@@ -410,11 +401,6 @@ public interface ExecutionMapper extends 
CommonMapperConversions {
         return e;
     }
 
-    // --- ProcessWorkflow ---
-    ProcessWorkflow processWorkflowToModel(ProcessWorkflowEntity entity);
-
-    ProcessWorkflowEntity processWorkflowToEntity(ProcessWorkflow model);
-
     // --- UserConfigurationData ---
 
     /**
@@ -443,8 +429,6 @@ public interface ExecutionMapper extends 
CommonMapperConversions {
                 
.setOverrideManualScheduledParams(entity.isOverrideManualScheduledParams())
                 .setShareExperimentPublicly(entity.isShareExperimentPublicly())
                 .setThrottleResources(entity.isThrottleResources())
-                .setUserDn(entity.getUserDN())
-                .setGenerateCert(entity.isGenerateCert())
                 .setExperimentDataDir(entity.getExperimentDataDir())
                 .setGroupResourceProfileId(entity.getGroupResourceProfileId())
                 .setUseUserCrPref(entity.isUseUserCRPref())
@@ -464,8 +448,6 @@ public interface ExecutionMapper extends 
CommonMapperConversions {
         
entity.setOverrideManualScheduledParams(model.getOverrideManualScheduledParams());
         entity.setShareExperimentPublicly(model.getShareExperimentPublicly());
         entity.setThrottleResources(model.getThrottleResources());
-        entity.setUserDN(model.getUserDn());
-        entity.setGenerateCert(model.getGenerateCert());
         entity.setExperimentDataDir(model.getExperimentDataDir());
         entity.setGroupResourceProfileId(model.getGroupResourceProfileId());
         entity.setUseUserCRPref(model.getUseUserCrPref());
diff --git 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/model/ProcessEntity.java
 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/model/ProcessEntity.java
index e46a93875d..64a34b7ffe 100644
--- 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/model/ProcessEntity.java
+++ 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/model/ProcessEntity.java
@@ -23,7 +23,6 @@ import jakarta.persistence.*;
 import jakarta.persistence.JoinColumn;
 import java.io.Serializable;
 import java.sql.Timestamp;
-import java.util.Collection;
 import java.util.List;
 import org.apache.airavata.compute.model.ProcessResourceScheduleEntity;
 
@@ -81,12 +80,6 @@ public class ProcessEntity implements Serializable {
     @Column(name = "OUTPUT_STORAGE_RESOURCE_ID")
     private String outputStorageResourceId;
 
-    @Column(name = "USER_DN")
-    private String userDn;
-
-    @Column(name = "GENERATE_CERT")
-    private boolean generateCert;
-
     @Column(name = "EXPERIMENT_DATA_DIR", length = 512)
     private String experimentDataDir;
 
@@ -159,13 +152,6 @@ public class ProcessEntity implements Serializable {
             fetch = FetchType.EAGER)
     private List<TaskEntity> tasks;
 
-    @OneToMany(
-            targetEntity = ProcessWorkflowEntity.class,
-            cascade = CascadeType.ALL,
-            mappedBy = "process",
-            fetch = FetchType.EAGER)
-    private Collection<ProcessWorkflowEntity> processWorkflows;
-
     public ProcessEntity() {}
 
     public String getProcessId() {
@@ -280,21 +266,6 @@ public class ProcessEntity implements Serializable {
         this.outputStorageResourceId = outputStorageResourceId;
     }
 
-    public String getUserDn() {
-        return userDn;
-    }
-
-    public void setUserDn(String userDn) {
-        this.userDn = userDn;
-    }
-
-    public boolean isGenerateCert() {
-        return generateCert;
-    }
-
-    public void setGenerateCert(boolean generateCert) {
-        this.generateCert = generateCert;
-    }
 
     public String getExperimentDataDir() {
         return experimentDataDir;
@@ -368,14 +339,6 @@ public class ProcessEntity implements Serializable {
         this.processResourceSchedule = processResourceSchedule;
     }
 
-    public Collection<ProcessWorkflowEntity> getProcessWorkflows() {
-        return processWorkflows;
-    }
-
-    public void setProcessWorkflows(Collection<ProcessWorkflowEntity> 
processWorkflows) {
-        this.processWorkflows = processWorkflows;
-    }
-
     public List<TaskEntity> getTasks() {
         return tasks;
     }
diff --git 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/model/ProcessWorkflowEntity.java
 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/model/ProcessWorkflowEntity.java
deleted file mode 100644
index a9102383c9..0000000000
--- 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/model/ProcessWorkflowEntity.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-package org.apache.airavata.orchestration.model;
-
-import jakarta.persistence.*;
-import java.sql.Timestamp;
-
-@Entity
-@Table(name = "PROCESS_WORKFLOW")
-@IdClass(ProcessWorkflowPK.class)
-public class ProcessWorkflowEntity {
-
-    @Id
-    @Column(name = "PROCESS_ID")
-    private String processId;
-
-    @Id
-    @Column(name = "WORKFLOW_ID")
-    private String workflowId;
-
-    @Column(name = "CREATION_TIME")
-    private Timestamp creationTime;
-
-    @Column(name = "TYPE")
-    private String type;
-
-    @ManyToOne(targetEntity = ProcessEntity.class, fetch = FetchType.LAZY)
-    @JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID", 
insertable = false, updatable = false)
-    private ProcessEntity process;
-
-    public String getProcessId() {
-        return processId;
-    }
-
-    public void setProcessId(String processId) {
-        this.processId = processId;
-    }
-
-    public String getWorkflowId() {
-        return workflowId;
-    }
-
-    public void setWorkflowId(String workflowId) {
-        this.workflowId = workflowId;
-    }
-
-    public Timestamp getCreationTime() {
-        return creationTime;
-    }
-
-    public void setCreationTime(Timestamp creationTime) {
-        this.creationTime = creationTime;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public ProcessEntity getProcess() {
-        return process;
-    }
-
-    public void setProcess(ProcessEntity process) {
-        this.process = process;
-    }
-}
diff --git 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/model/ProcessWorkflowPK.java
 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/model/ProcessWorkflowPK.java
deleted file mode 100644
index 1c85fc5c5c..0000000000
--- 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/model/ProcessWorkflowPK.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-package org.apache.airavata.orchestration.model;
-
-import jakarta.persistence.Column;
-import jakarta.persistence.Id;
-import java.io.Serializable;
-
-public class ProcessWorkflowPK implements Serializable {
-
-    private String processId;
-    private String workflowId;
-
-    @Id
-    @Column(name = "PROCESS_ID")
-    public String getProcessId() {
-        return processId;
-    }
-
-    public void setProcessId(String processId) {
-        this.processId = processId;
-    }
-
-    @Id
-    @Column(name = "WORKFLOW_ID")
-    public String getWorkflowId() {
-        return workflowId;
-    }
-
-    public void setWorkflowId(String workflowId) {
-        this.workflowId = workflowId;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ProcessWorkflowPK that = (ProcessWorkflowPK) o;
-
-        return (getProcessId() != null ? 
getProcessId().equals(that.getProcessId()) : that.getProcessId() == null)
-                && (getWorkflowId() != null
-                        ? getWorkflowId().equals(that.getWorkflowId())
-                        : that.getWorkflowId() == null);
-    }
-
-    @Override
-    public int hashCode() {
-        int result = getProcessId() != null ? getProcessId().hashCode() : 0;
-        result = 31 * result + (getWorkflowId() != null ? 
getWorkflowId().hashCode() : 0);
-        return result;
-    }
-}
diff --git 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/model/UserConfigurationDataEntity.java
 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/model/UserConfigurationDataEntity.java
index 9d3d6e5e76..8a42c9bfa7 100644
--- 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/model/UserConfigurationDataEntity.java
+++ 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/model/UserConfigurationDataEntity.java
@@ -48,12 +48,6 @@ public class UserConfigurationDataEntity implements 
Serializable {
     @Column(name = "THROTTLE_RESOURCES")
     private boolean throttleResources;
 
-    @Column(name = "USER_DN")
-    private String userDN;
-
-    @Column(name = "GENERATE_CERT")
-    private boolean generateCert;
-
     @Column(name = "RESOURCE_HOST_ID")
     private String resourceHostId;
 
@@ -151,21 +145,6 @@ public class UserConfigurationDataEntity implements 
Serializable {
         this.throttleResources = throttleResources;
     }
 
-    public String getUserDN() {
-        return userDN;
-    }
-
-    public void setUserDN(String userDN) {
-        this.userDN = userDN;
-    }
-
-    public boolean isGenerateCert() {
-        return generateCert;
-    }
-
-    public void setGenerateCert(boolean generateCert) {
-        this.generateCert = generateCert;
-    }
 
     public String getResourceHostId() {
         return resourceHostId;
diff --git 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/repository/ProcessWorkflowRepository.java
 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/repository/ProcessWorkflowRepository.java
deleted file mode 100644
index f0411adcca..0000000000
--- 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/repository/ProcessWorkflowRepository.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-package org.apache.airavata.orchestration.repository;
-
-import java.util.Collections;
-import java.util.List;
-import org.apache.airavata.db.AbstractRepository;
-import org.apache.airavata.interfaces.RegistryException;
-import org.apache.airavata.model.process.proto.ProcessModel;
-import org.apache.airavata.model.process.proto.ProcessWorkflow;
-import org.apache.airavata.orchestration.mapper.ExecutionMapper;
-import org.apache.airavata.orchestration.model.ProcessWorkflowEntity;
-import org.apache.airavata.orchestration.model.ProcessWorkflowPK;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-@Component
-public class ProcessWorkflowRepository
-        extends AbstractRepository<ProcessWorkflow, ProcessWorkflowEntity, 
ProcessWorkflowPK> {
-
-    private static final Logger logger = 
LoggerFactory.getLogger(ProcessInputRepository.class);
-
-    public ProcessWorkflowRepository() {
-        super(ProcessWorkflow.class, ProcessWorkflowEntity.class);
-    }
-
-    @Override
-    protected ProcessWorkflow toModel(ProcessWorkflowEntity entity) {
-        return ExecutionMapper.INSTANCE.processWorkflowToModel(entity);
-    }
-
-    @Override
-    protected ProcessWorkflowEntity toEntity(ProcessWorkflow model) {
-        return ExecutionMapper.INSTANCE.processWorkflowToEntity(model);
-    }
-
-    protected void saveProcessWorkflow(List<ProcessWorkflow> processWorkflows, 
String processId)
-            throws RegistryException {
-
-        for (ProcessWorkflow processWorkflow : processWorkflows) {
-            ProcessWorkflowEntity processWorkflowEntity =
-                    
ExecutionMapper.INSTANCE.processWorkflowToEntity(processWorkflow);
-
-            if (processWorkflowEntity.getProcessId() == null) {
-                logger.debug("Setting the ProcessWorkflowEntity's ProcessId");
-                processWorkflowEntity.setProcessId(processId);
-            }
-            execute(entityManager -> 
entityManager.merge(processWorkflowEntity));
-        }
-    }
-
-    public String addProcessWorkflow(ProcessWorkflow processWorkflow, String 
processId) throws RegistryException {
-        saveProcessWorkflow(Collections.singletonList(processWorkflow), 
processId);
-        return processId;
-    }
-
-    public void addProcessWorkflows(List<ProcessWorkflow> processWorkflows, 
String processId) throws RegistryException {
-        saveProcessWorkflow(processWorkflows, processId);
-    }
-
-    public List<ProcessWorkflow> getProcessWorkflows(String processId) throws 
RegistryException {
-        ProcessRepository processRepository = new ProcessRepository();
-        ProcessModel processModel = processRepository.getProcess(processId);
-        return processModel.getProcessWorkflowsList();
-    }
-}
diff --git 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/service/RegistryServerHandler.java
 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/service/RegistryServerHandler.java
index e5f37b306a..75946ee247 100644
--- 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/service/RegistryServerHandler.java
+++ 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/service/RegistryServerHandler.java
@@ -57,7 +57,6 @@ import 
org.apache.airavata.model.data.replica.proto.DataReplicaLocationModel;
 import org.apache.airavata.model.experiment.proto.*;
 import org.apache.airavata.model.job.proto.JobModel;
 import org.apache.airavata.model.process.proto.ProcessModel;
-import org.apache.airavata.model.process.proto.ProcessWorkflow;
 import 
org.apache.airavata.model.scheduling.proto.ComputationalResourceSchedulingModel;
 import org.apache.airavata.model.status.proto.*;
 import org.apache.airavata.model.task.proto.TaskModel;
@@ -195,11 +194,6 @@ public class RegistryServerHandler implements 
RegistryHandler {
         experimentRegistryHandler.updateProcessStatus(processStatus, 
processId);
     }
 
-    @Override
-    public void addProcessWorkflow(ProcessWorkflow processWorkflow) throws 
Exception {
-        experimentRegistryHandler.addProcessWorkflow(processWorkflow);
-    }
-
     @Override
     public String addTask(TaskModel taskModel, String processId) throws 
Exception {
         return experimentRegistryHandler.addTask(taskModel, processId);
@@ -324,10 +318,6 @@ public class RegistryServerHandler implements 
RegistryHandler {
         return experimentRegistryHandler.getProcessOutputs(processId);
     }
 
-    public List<ProcessWorkflow> getProcessWorkflows(String processId) throws 
Exception {
-        return experimentRegistryHandler.getProcessWorkflows(processId);
-    }
-
     public List<JobModel> getJobDetails(String airavataExperimentId) throws 
Exception {
         return experimentRegistryHandler.getJobDetails(airavataExperimentId);
     }
diff --git 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/util/ExperimentModelUtil.java
 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/util/ExperimentModelUtil.java
index 4abe6d51b8..8ae77ab4dd 100644
--- 
a/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/util/ExperimentModelUtil.java
+++ 
b/airavata-api/orchestration-service/src/main/java/org/apache/airavata/orchestration/util/ExperimentModelUtil.java
@@ -95,8 +95,6 @@ public class ExperimentModelUtil {
             
builder.setInputStorageResourceId(configData.getInputStorageResourceId());
             
builder.setOutputStorageResourceId(configData.getOutputStorageResourceId());
             builder.setExperimentDataDir(configData.getExperimentDataDir());
-            builder.setGenerateCert(configData.getGenerateCert());
-            builder.setUserDn(configData.getUserDn());
             ComputationalResourceSchedulingModel scheduling = 
configData.getComputationalResourceScheduling();
             if (configData.hasComputationalResourceScheduling()) {
                 builder.setProcessResourceSchedule(scheduling);
diff --git 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/mapper/ResearchMapper.java
 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/mapper/ResearchMapper.java
index ee63c039bf..4ddfe45ec9 100644
--- 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/mapper/ResearchMapper.java
+++ 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/mapper/ResearchMapper.java
@@ -31,6 +31,8 @@ import 
org.apache.airavata.model.appcatalog.appdeployment.proto.SetEnvPaths;
 import 
org.apache.airavata.model.appcatalog.appinterface.proto.ApplicationInterfaceDescription;
 import org.apache.airavata.model.appcatalog.parser.proto.IOType;
 import org.apache.airavata.model.appcatalog.parser.proto.Parser;
+import org.apache.airavata.model.appcatalog.parser.proto.ParserConnector;
+import org.apache.airavata.model.appcatalog.parser.proto.ParserConnectorInput;
 import org.apache.airavata.model.appcatalog.parser.proto.ParserInput;
 import org.apache.airavata.model.appcatalog.parser.proto.ParserOutput;
 import org.apache.airavata.model.appcatalog.parser.proto.ParsingTemplate;
@@ -677,6 +679,32 @@ public interface ResearchMapper extends 
CommonMapperConversions {
                 b.addInitialInputs(ib.build());
             }
         }
+        if (entity.getParserConnections() != null) {
+            for (Map<String, Object> c : entity.getParserConnections()) {
+                ParserConnector.Builder cb = ParserConnector.newBuilder();
+                if (c.get("id") != null) cb.setId((String) c.get("id"));
+                if (c.get("parentParserId") != null) 
cb.setParentParserId((String) c.get("parentParserId"));
+                if (c.get("childParserId") != null) 
cb.setChildParserId((String) c.get("childParserId"));
+                if (c.get("parsingTemplateId") != null) 
cb.setParsingTemplateId((String) c.get("parsingTemplateId"));
+                Object inputs = c.get("connectorInputs");
+                if (inputs instanceof List) {
+                    for (Object o : (List<?>) inputs) {
+                        if (!(o instanceof Map)) continue;
+                        @SuppressWarnings("unchecked")
+                        Map<String, Object> im = (Map<String, Object>) o;
+                        ParserConnectorInput.Builder cib = 
ParserConnectorInput.newBuilder();
+                        if (im.get("id") != null) cib.setId((String) 
im.get("id"));
+                        if (im.get("inputId") != null) cib.setInputId((String) 
im.get("inputId"));
+                        if (im.get("parentOutputId") != null) 
cib.setParentOutputId((String) im.get("parentOutputId"));
+                        if (im.get("value") != null) cib.setValue((String) 
im.get("value"));
+                        if (im.get("parserConnectorId") != null)
+                            cib.setParserConnectorId((String) 
im.get("parserConnectorId"));
+                        cb.addConnectorInputs(cib.build());
+                    }
+                }
+                b.addParserConnections(cb.build());
+            }
+        }
         return b.build();
     }
 
@@ -699,6 +727,29 @@ public interface ResearchMapper extends 
CommonMapperConversions {
             }
             entity.setInitialInputs(inputs);
         }
+        if (!model.getParserConnectionsList().isEmpty()) {
+            List<Map<String, Object>> connections = new ArrayList<>();
+            for (ParserConnector pc : model.getParserConnectionsList()) {
+                Map<String, Object> c = new LinkedHashMap<>();
+                c.put("id", pc.getId());
+                c.put("parentParserId", pc.getParentParserId());
+                c.put("childParserId", pc.getChildParserId());
+                c.put("parsingTemplateId", pc.getParsingTemplateId());
+                List<Map<String, Object>> connectorInputs = new ArrayList<>();
+                for (ParserConnectorInput pci : pc.getConnectorInputsList()) {
+                    Map<String, Object> im = new LinkedHashMap<>();
+                    im.put("id", pci.getId());
+                    im.put("inputId", pci.getInputId());
+                    im.put("parentOutputId", pci.getParentOutputId());
+                    im.put("value", pci.getValue());
+                    im.put("parserConnectorId", pci.getParserConnectorId());
+                    connectorInputs.add(im);
+                }
+                c.put("connectorInputs", connectorInputs);
+                connections.add(c);
+            }
+            entity.setParserConnections(connections);
+        }
         return entity;
     }
 }
diff --git 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/AppModuleMappingEntity.java
 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/AppModuleMappingEntity.java
deleted file mode 100644
index 2b22c06d95..0000000000
--- 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/AppModuleMappingEntity.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-package org.apache.airavata.research.model;
-
-import jakarta.persistence.*;
-import java.io.Serializable;
-
-/**
- * The persistent class for the app_module_mapping database table.
- *
- */
-@Entity
-@Table(name = "APP_MODULE_MAPPING")
-@IdClass(AppModuleMappingPK.class)
-public class AppModuleMappingEntity implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    @Id
-    @Column(name = "INTERFACE_ID")
-    private String interfaceId;
-
-    @Id
-    @Column(name = "MODULE_ID")
-    private String moduleId;
-
-    @ManyToOne(targetEntity = ApplicationInterfaceEntity.class)
-    @JoinColumn(name = "INTERFACE_ID", insertable = false, updatable = false)
-    private ApplicationInterfaceEntity applicationInterface;
-
-    @ManyToOne(targetEntity = ApplicationModuleEntity.class)
-    @JoinColumn(name = "MODULE_ID", insertable = false, updatable = false)
-    private ApplicationModuleEntity applicationModule;
-
-    public AppModuleMappingEntity() {}
-
-    public String getInterfaceId() {
-        return interfaceId;
-    }
-
-    public void setInterfaceId(String interfaceId) {
-        this.interfaceId = interfaceId;
-    }
-
-    public String getModuleId() {
-        return moduleId;
-    }
-
-    public void setModuleId(String moduleId) {
-        this.moduleId = moduleId;
-    }
-
-    public ApplicationInterfaceEntity getApplicationInterface() {
-        return applicationInterface;
-    }
-
-    public void setApplicationInterface(ApplicationInterfaceEntity 
applicationInterface) {
-        this.applicationInterface = applicationInterface;
-    }
-
-    public ApplicationModuleEntity getApplicationModule() {
-        return applicationModule;
-    }
-
-    public void setApplicationModule(ApplicationModuleEntity 
applicationModule) {
-        this.applicationModule = applicationModule;
-    }
-}
diff --git 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/AppModuleMappingPK.java
 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/AppModuleMappingPK.java
deleted file mode 100644
index b4cac775e6..0000000000
--- 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/AppModuleMappingPK.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-package org.apache.airavata.research.model;
-
-import java.io.Serializable;
-
-/**
- * The primary key class for the app_module_mapping database table.
- *
- */
-public class AppModuleMappingPK implements Serializable {
-    // default serial version id, required for serializable classes.
-    private static final long serialVersionUID = 1L;
-
-    private String interfaceId;
-    private String moduleId;
-
-    public AppModuleMappingPK() {}
-
-    public String getInterfaceId() {
-        return interfaceId;
-    }
-
-    public void setInterfaceId(String interfaceId) {
-        this.interfaceId = interfaceId;
-    }
-
-    public String getModuleId() {
-        return moduleId;
-    }
-
-    public void setModuleId(String moduleId) {
-        this.moduleId = moduleId;
-    }
-
-    public boolean equals(Object other) {
-        if (this == other) {
-            return true;
-        }
-        if (!(other instanceof AppModuleMappingPK)) {
-            return false;
-        }
-        AppModuleMappingPK castOther = (AppModuleMappingPK) other;
-        return this.interfaceId.equals(castOther.interfaceId) && 
this.moduleId.equals(castOther.moduleId);
-    }
-
-    public int hashCode() {
-        final int prime = 31;
-        int hash = 17;
-        hash = hash * prime + this.interfaceId.hashCode();
-        hash = hash * prime + this.moduleId.hashCode();
-
-        return hash;
-    }
-}
diff --git 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/ParsingTemplateEntity.java
 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/ParsingTemplateEntity.java
index f72df3ccfd..fd58ada880 100644
--- 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/ParsingTemplateEntity.java
+++ 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/ParsingTemplateEntity.java
@@ -45,6 +45,11 @@ public class ParsingTemplateEntity implements Serializable {
     @Convert(converter = JsonListConverter.class)
     private List<Map<String, Object>> initialInputs;
 
+    @Lob
+    @Column(name = "PARSER_CONNECTIONS_JSON")
+    @Convert(converter = JsonListConverter.class)
+    private List<Map<String, Object>> parserConnections;
+
     public String getId() {
         return id;
     }
@@ -69,6 +74,14 @@ public class ParsingTemplateEntity implements Serializable {
         this.initialInputs = initialInputs;
     }
 
+    public List<Map<String, Object>> getParserConnections() {
+        return parserConnections;
+    }
+
+    public void setParserConnections(List<Map<String, Object>> 
parserConnections) {
+        this.parserConnections = parserConnections;
+    }
+
     public String getGatewayId() {
         return gatewayId;
     }
diff --git 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/ResourceEntity.java
 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/ResourceEntity.java
index 90d5906d92..f54551f62c 100644
--- 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/ResourceEntity.java
+++ 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/ResourceEntity.java
@@ -77,10 +77,6 @@ public abstract class ResourceEntity {
             inverseJoinColumns = @JoinColumn(name = "tag_id"))
     private Set<TagEntity> tags = new HashSet<>();
 
-    @Column(nullable = false)
-    @Enumerated(EnumType.STRING)
-    private StatusEnum status;
-
     @Column(nullable = false)
     @Enumerated(EnumType.STRING)
     private StateEnum state;
@@ -147,14 +143,6 @@ public abstract class ResourceEntity {
         this.tags = tags;
     }
 
-    public StatusEnum getStatus() {
-        return status;
-    }
-
-    public void setStatus(StatusEnum status) {
-        this.status = status;
-    }
-
     public StateEnum getState() {
         return state;
     }
diff --git 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/ResourceStarEntity.java
 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/ResourceStarEntity.java
index 1e1dd9d861..d2f17528b4 100644
--- 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/ResourceStarEntity.java
+++ 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/ResourceStarEntity.java
@@ -27,10 +27,16 @@ import jakarta.persistence.Id;
 import jakarta.persistence.JoinColumn;
 import jakarta.persistence.ManyToOne;
 import jakarta.persistence.Table;
+import jakarta.persistence.UniqueConstraint;
 import org.hibernate.annotations.UuidGenerator;
 
 @Entity
-@Table(name = "RESOURCE_STAR")
+@Table(
+        name = "RESOURCE_STAR",
+        uniqueConstraints =
+                @UniqueConstraint(
+                        name = "UK_resource_star_user_resource",
+                        columnNames = {"user_id", "resource_id"}))
 public class ResourceStarEntity {
 
     @Id
diff --git 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/StatusEnum.java
 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/StatusEnum.java
deleted file mode 100644
index 7c36298f5a..0000000000
--- 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/StatusEnum.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-package org.apache.airavata.research.model;
-
-public enum StatusEnum {
-    NONE,
-    PENDING,
-    VERIFIED,
-    REJECTED,
-}
diff --git 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/TagEntity.java
 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/TagEntity.java
index 8a3697c594..d9843780ed 100644
--- 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/TagEntity.java
+++ 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/model/TagEntity.java
@@ -24,10 +24,13 @@ import jakarta.persistence.Entity;
 import jakarta.persistence.GeneratedValue;
 import jakarta.persistence.Id;
 import jakarta.persistence.Table;
+import jakarta.persistence.UniqueConstraint;
 import org.hibernate.annotations.UuidGenerator;
 
 @Entity
-@Table(name = "TAG")
+@Table(
+        name = "TAG",
+        uniqueConstraints = @UniqueConstraint(name = "UK_tag_value", 
columnNames = "value"))
 public class TagEntity {
 
     @Id
diff --git 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/repository/ApplicationInterfaceRepository.java
 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/repository/ApplicationInterfaceRepository.java
index ca1c314d91..0eebb3dad8 100644
--- 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/repository/ApplicationInterfaceRepository.java
+++ 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/repository/ApplicationInterfaceRepository.java
@@ -31,7 +31,6 @@ import 
org.apache.airavata.model.appcatalog.appinterface.proto.ApplicationInterf
 import org.apache.airavata.model.application.io.proto.InputDataObjectType;
 import org.apache.airavata.model.application.io.proto.OutputDataObjectType;
 import org.apache.airavata.research.mapper.ResearchMapper;
-import org.apache.airavata.research.model.AppModuleMappingEntity;
 import org.apache.airavata.research.model.ApplicationInterfaceEntity;
 import org.apache.airavata.research.model.ApplicationModuleEntity;
 import org.apache.airavata.util.AiravataUtils;
@@ -161,21 +160,6 @@ public class ApplicationInterfaceRepository
         return 
saveApplicationInterfaceDescriptorData(applicationInterfaceDescription, 
gatewayId);
     }
 
-    @Override
-    public void addApplicationModuleMapping(String moduleId, String 
interfaceId) throws AppCatalogException {
-        ApplicationModule applicationModule = getApplicationModule(moduleId);
-        ApplicationInterfaceDescription applicationInterfaceDescription = 
getApplicationInterface(interfaceId);
-        ApplicationModuleEntity applicationModuleEntity = 
ResearchMapper.INSTANCE.appModuleToEntity(applicationModule);
-        ApplicationInterfaceEntity applicationInterfaceEntity =
-                
ResearchMapper.INSTANCE.appInterfaceToEntity(applicationInterfaceDescription);
-        AppModuleMappingEntity appModuleMappingEntity = new 
AppModuleMappingEntity();
-        appModuleMappingEntity.setModuleId(moduleId);
-        appModuleMappingEntity.setInterfaceId(interfaceId);
-        appModuleMappingEntity.setApplicationModule(applicationModuleEntity);
-        
appModuleMappingEntity.setApplicationInterface(applicationInterfaceEntity);
-        execute(entityManager -> entityManager.merge(appModuleMappingEntity));
-    }
-
     @Override
     public void updateApplicationModule(String moduleId, ApplicationModule 
updatedApplicationModule)
             throws AppCatalogException {
diff --git 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/service/ExperimentRegistryService.java
 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/service/ExperimentRegistryService.java
index aeb0e0addc..f1d57e4fd4 100644
--- 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/service/ExperimentRegistryService.java
+++ 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/service/ExperimentRegistryService.java
@@ -38,7 +38,6 @@ import org.apache.airavata.model.commons.proto.ErrorModel;
 import org.apache.airavata.model.experiment.proto.*;
 import org.apache.airavata.model.job.proto.JobModel;
 import org.apache.airavata.model.process.proto.ProcessModel;
-import org.apache.airavata.model.process.proto.ProcessWorkflow;
 import 
org.apache.airavata.model.scheduling.proto.ComputationalResourceSchedulingModel;
 import org.apache.airavata.model.status.proto.*;
 import org.apache.airavata.model.task.proto.TaskModel;
@@ -293,17 +292,6 @@ public class ExperimentRegistryService implements 
ExperimentRegistry {
         }
     }
 
-    @Override
-    public void addProcessWorkflow(ProcessWorkflow processWorkflow) throws 
Exception {
-        try {
-            executionDataAccess.addProcessWorkflow(processWorkflow, 
processWorkflow.getProcessId());
-        } catch (Exception e) {
-            logger.error("Error while adding process workflows for process id 
" + processWorkflow.getProcessId(), e);
-            throw new RegistryException("Error while adding process workflows 
for process id "
-                    + processWorkflow.getProcessId() + ". More info : " + 
e.getMessage());
-        }
-    }
-
     @Override
     public String addTask(TaskModel taskModel, String processId) throws 
Exception {
         try {
@@ -658,15 +646,6 @@ public class ExperimentRegistryService implements 
ExperimentRegistry {
         }
     }
 
-    public List<ProcessWorkflow> getProcessWorkflows(String processId) throws 
Exception {
-        try {
-            return executionDataAccess.getProcessWorkflows(processId);
-        } catch (Exception e) {
-            logger.error("Error while retrieving process workflows for process 
id " + processId, e);
-            throw new RegistryException("Error while retrieving process 
workflows for process id " + processId
-                    + ". More info : " + e.getMessage());
-        }
-    }
 
     public List<JobModel> getJobDetails(String airavataExperimentId) throws 
Exception {
         try {
diff --git 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/service/ResearchResourceService.java
 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/service/ResearchResourceService.java
index a4bfcfd8f3..406af85112 100644
--- 
a/airavata-api/research-service/src/main/java/org/apache/airavata/research/service/ResearchResourceService.java
+++ 
b/airavata-api/research-service/src/main/java/org/apache/airavata/research/service/ResearchResourceService.java
@@ -33,7 +33,6 @@ import org.apache.airavata.research.model.ResourceEntity;
 import org.apache.airavata.research.model.ResourceStarEntity;
 import org.apache.airavata.research.model.ResourceTypeEnum;
 import org.apache.airavata.research.model.StateEnum;
-import org.apache.airavata.research.model.StatusEnum;
 import org.apache.airavata.research.model.TagEntity;
 import org.apache.airavata.research.repository.ResearchProjectRepository;
 import org.apache.airavata.research.repository.ResourceRepository;
@@ -41,6 +40,7 @@ import 
org.apache.airavata.research.repository.ResourceStarRepository;
 import org.apache.airavata.research.repository.TagRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.dao.DataIntegrityViolationException;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
@@ -88,7 +88,12 @@ public class ResearchResourceService {
             String tagValue = t.getValue();
             TagEntity fetchedTag = tagRepository.findByValue(tagValue);
             if (fetchedTag == null) {
-                fetchedTag = tagRepository.save(t);
+                try {
+                    fetchedTag = tagRepository.save(t);
+                } catch (DataIntegrityViolationException e) {
+                    // a concurrent request created the same tag value; reuse 
the existing row
+                    fetchedTag = tagRepository.findByValue(tagValue);
+                }
             }
             tags.add(fetchedTag);
         }
@@ -135,7 +140,6 @@ public class ResearchResourceService {
         }
         resource.setTags(tagsSet);
         resource.setPrivacy(privacy);
-        resource.setStatus(StatusEnum.NONE);
         resource.setHeaderImage(headerImage);
     }
 
@@ -201,7 +205,11 @@ public class ResearchResourceService {
             ResourceStarEntity resourceStar = new ResourceStarEntity();
             resourceStar.setUserId(userId);
             resourceStar.setResource(resource);
-            resourceStarRepository.save(resourceStar);
+            try {
+                resourceStarRepository.save(resourceStar);
+            } catch (DataIntegrityViolationException e) {
+                // a concurrent request already starred this resource for the 
user; idempotent
+            }
         } else {
             ResourceStarEntity resourceStar = resourceStars.get(0);
             resourceStarRepository.delete(resourceStar);
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/interfaces/ApplicationInterface.java
 
b/airavata-api/src/main/java/org/apache/airavata/interfaces/ApplicationInterface.java
index ad6992343e..febd0f3ca6 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/interfaces/ApplicationInterface.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/interfaces/ApplicationInterface.java
@@ -42,13 +42,6 @@ public interface ApplicationInterface {
     String addApplicationInterface(ApplicationInterfaceDescription 
applicationInterfaceDescription, String gatewayId)
             throws AppCatalogException;
 
-    /**
-     * This method will add an application module mapping
-     * @param moduleId unique module Id
-     * @param interfaceId unique interface id
-     */
-    void addApplicationModuleMapping(String moduleId, String interfaceId) 
throws AppCatalogException;
-
     /**
      * This method will update application module
      * @param moduleId unique module Id
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/interfaces/Constants.java 
b/airavata-api/src/main/java/org/apache/airavata/interfaces/Constants.java
index 7fcb18d0e5..152235d44d 100644
--- a/airavata-api/src/main/java/org/apache/airavata/interfaces/Constants.java
+++ b/airavata-api/src/main/java/org/apache/airavata/interfaces/Constants.java
@@ -69,7 +69,6 @@ public class Constants {
             public static final String PROCESS_INPUTS = "processInputs";
             public static final String PROCESS_OUTPUTS = "processOutputs";
             public static final String PROCESS_RESOURCE_SCHEDULE = 
"processResourceSchedule";
-            public static final String PROCESS_WORKFLOW = "processWorkflow";
         }
 
         public final class TaskConstants {
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/interfaces/ExecutionDataAccess.java
 
b/airavata-api/src/main/java/org/apache/airavata/interfaces/ExecutionDataAccess.java
index ad505da3b2..cb45501414 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/interfaces/ExecutionDataAccess.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/interfaces/ExecutionDataAccess.java
@@ -26,7 +26,6 @@ import org.apache.airavata.model.commons.proto.ErrorModel;
 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.process.proto.ProcessWorkflow;
 import 
org.apache.airavata.model.scheduling.proto.ComputationalResourceSchedulingModel;
 import org.apache.airavata.model.status.proto.JobStatus;
 import org.apache.airavata.model.status.proto.ProcessState;
@@ -76,11 +75,6 @@ public interface ExecutionDataAccess {
 
     List<OutputDataObjectType> getProcessOutputs(String processId) throws 
RegistryException;
 
-    // --- Process Workflow ---
-    void addProcessWorkflow(ProcessWorkflow processWorkflow, String processId) 
throws RegistryException;
-
-    List<ProcessWorkflow> getProcessWorkflows(String processId) throws 
RegistryException;
-
     // --- Task ---
     String addTask(TaskModel task, String processId) throws RegistryException;
 
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/interfaces/ExpCatChildDataType.java
 
b/airavata-api/src/main/java/org/apache/airavata/interfaces/ExpCatChildDataType.java
index fba61ca439..b016eabb74 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/interfaces/ExpCatChildDataType.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/interfaces/ExpCatChildDataType.java
@@ -35,6 +35,5 @@ public enum ExpCatChildDataType {
     TASK_STATUS,
     TASK_ERROR,
     JOB,
-    JOB_STATUS,
-    PROCESS_WORKFLOW
+    JOB_STATUS
 }
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/interfaces/ExperimentRegistry.java
 
b/airavata-api/src/main/java/org/apache/airavata/interfaces/ExperimentRegistry.java
index c5c3d01887..61cf11b2ec 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/interfaces/ExperimentRegistry.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/interfaces/ExperimentRegistry.java
@@ -26,7 +26,6 @@ import org.apache.airavata.model.commons.proto.ErrorModel;
 import org.apache.airavata.model.experiment.proto.*;
 import org.apache.airavata.model.job.proto.JobModel;
 import org.apache.airavata.model.process.proto.ProcessModel;
-import org.apache.airavata.model.process.proto.ProcessWorkflow;
 import 
org.apache.airavata.model.scheduling.proto.ComputationalResourceSchedulingModel;
 import org.apache.airavata.model.status.proto.ExperimentStatus;
 import org.apache.airavata.model.status.proto.JobStatus;
@@ -116,12 +115,8 @@ public interface ExperimentRegistry {
 
     void updateProcessStatus(ProcessStatus processStatus, String processId) 
throws Exception;
 
-    void addProcessWorkflow(ProcessWorkflow processWorkflow) throws Exception;
-
     List<OutputDataObjectType> getProcessOutputs(String processId) throws 
Exception;
 
-    List<ProcessWorkflow> getProcessWorkflows(String processId) throws 
Exception;
-
     // --- Task operations ---
     String addTask(TaskModel taskModel, String processId) throws Exception;
 
diff --git 
a/airavata-api/src/main/proto/org/apache/airavata/model/experiment/experiment.proto
 
b/airavata-api/src/main/proto/org/apache/airavata/model/experiment/experiment.proto
index 1cd94a4080..c950dd3db3 100644
--- 
a/airavata-api/src/main/proto/org/apache/airavata/model/experiment/experiment.proto
+++ 
b/airavata-api/src/main/proto/org/apache/airavata/model/experiment/experiment.proto
@@ -61,8 +61,6 @@ enum ProjectSearchFields {
 // share_experiment_publicly: Whether to share the experiment publicly.
 // computational_resource_scheduling: Computational resource scheduling model.
 // throttle_resources: Whether to throttle resources.
-// user_dn: User DN for certificate generation.
-// generate_cert: Whether to generate a certificate.
 // input_storage_resource_id: Input storage resource id.
 // output_storage_resource_id: Output storage resource id.
 // experiment_data_dir: Experiment data directory.
@@ -75,8 +73,7 @@ message UserConfigurationDataModel {
   bool share_experiment_publicly = 3;
   org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel 
computational_resource_scheduling = 4;
   bool throttle_resources = 5;
-  string user_dn = 6;
-  bool generate_cert = 7;
+  reserved 6, 7;  // removed: user_dn, generate_cert (grid-cert legacy)
   string input_storage_resource_id = 8;
   string output_storage_resource_id = 9;
   string experiment_data_dir = 10;
diff --git 
a/airavata-api/src/main/proto/org/apache/airavata/model/process/process.proto 
b/airavata-api/src/main/proto/org/apache/airavata/model/process/process.proto
index 35d0760b38..a978795bc3 100644
--- 
a/airavata-api/src/main/proto/org/apache/airavata/model/process/process.proto
+++ 
b/airavata-api/src/main/proto/org/apache/airavata/model/process/process.proto
@@ -28,13 +28,6 @@ import 
"org/apache/airavata/model/scheduling/scheduling.proto";
 import "org/apache/airavata/model/status/status.proto";
 import "org/apache/airavata/model/task/task.proto";
 
-message ProcessWorkflow {
-  string process_id = 1;
-  string workflow_id = 2;
-  int64 creation_time = 3;
-  string type = 4;
-}
-
 // ProcessModel: A structure holding the process details. The information is
 // derived based on user provided configuration data or system inferred
 // information from scheduling and QoS parameters.
@@ -63,11 +56,9 @@ message ProcessModel {
   repeated string email_addresses = 18;
   string input_storage_resource_id = 19;
   string output_storage_resource_id = 20;
-  string user_dn = 21;
-  bool generate_cert = 22;
   string experiment_data_dir = 23;
   string user_name = 24;
   bool use_user_cr_pref = 25;
   string group_resource_profile_id = 26;
-  repeated ProcessWorkflow process_workflows = 27;
+  reserved 21, 22, 27;  // removed: user_dn, generate_cert (grid-cert legacy); 
process_workflows (dead table)
 }
diff --git a/airavata-api/src/test/resources/META-INF/persistence.xml 
b/airavata-api/src/test/resources/META-INF/persistence.xml
index 673efcd507..c7e536d590 100644
--- a/airavata-api/src/test/resources/META-INF/persistence.xml
+++ b/airavata-api/src/test/resources/META-INF/persistence.xml
@@ -31,7 +31,6 @@
     <class>org.apache.airavata.agent.model.PlanEntity</class>
 
     <!-- compute-service -->
-    <class>org.apache.airavata.compute.model.AgentDeploymentInfoEntity</class>
     
<class>org.apache.airavata.compute.model.AWSGroupComputeResourcePrefEntity</class>
     <class>org.apache.airavata.compute.model.BatchQueueEntity</class>
     
<class>org.apache.airavata.compute.model.BatchQueueResourcePolicyEntity</class>
@@ -71,7 +70,6 @@
     <class>org.apache.airavata.orchestration.model.ExecStatusEntity</class>
     <class>org.apache.airavata.orchestration.model.JobEntity</class>
     <class>org.apache.airavata.orchestration.model.ProcessEntity</class>
-    
<class>org.apache.airavata.orchestration.model.ProcessWorkflowEntity</class>
     <class>org.apache.airavata.orchestration.model.TaskEntity</class>
     
<class>org.apache.airavata.orchestration.model.UserConfigurationDataEntity</class>
 
@@ -80,7 +78,6 @@
     
<class>org.apache.airavata.research.model.ApplicationDeploymentEntity</class>
     
<class>org.apache.airavata.research.model.ApplicationInterfaceEntity</class>
     <class>org.apache.airavata.research.model.ApplicationModuleEntity</class>
-    <class>org.apache.airavata.research.model.AppModuleMappingEntity</class>
     <class>org.apache.airavata.research.model.DataProductEntity</class>
     <class>org.apache.airavata.research.model.DataReplicaLocationEntity</class>
     <class>org.apache.airavata.research.model.DatasetResourceEntity</class>
diff --git 
a/airavata-api/src/test/resources/db/migration/airavata/V1__Baseline_schema.sql 
b/airavata-api/src/test/resources/db/migration/airavata/V1__Baseline_schema.sql
index 355f9ae69d..fe7d6f0341 100644
--- 
a/airavata-api/src/test/resources/db/migration/airavata/V1__Baseline_schema.sql
+++ 
b/airavata-api/src/test/resources/db/migration/airavata/V1__Baseline_schema.sql
@@ -28,14 +28,6 @@
 
 SET FOREIGN_KEY_CHECKS=0;
 
-CREATE TABLE `agent_deployment_info` (
-  `AGENT_DEPLOYMENT_INFO_ID` varchar(255) NOT NULL,
-  `AGENT_APPLICATION_ID` varchar(255) DEFAULT NULL,
-  `COMPUTE_RESOURCE_ID` varchar(255) DEFAULT NULL,
-  `USER_FRINEDLY_NAME` varchar(255) DEFAULT NULL,
-  PRIMARY KEY (`AGENT_DEPLOYMENT_INFO_ID`),
-  UNIQUE KEY `UKf9p10tqcpwt5y0tcjrhq7p8qr` (`USER_FRINEDLY_NAME`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
 CREATE TABLE `app_io_param` (
   `PARAM_ID` varchar(255) NOT NULL,
   `APPLICATION_ARGUMENT` varchar(255) DEFAULT NULL,
@@ -256,7 +248,6 @@ CREATE TABLE `credentials` (
   `GATEWAY_ID` varchar(256) NOT NULL,
   `TOKEN_ID` varchar(256) NOT NULL,
   `CREDENTIAL` mediumblob NOT NULL,
-  `CREDENTIAL_OWNER_TYPE` varchar(50) DEFAULT NULL,
   `DESCRIPTION` varchar(500) DEFAULT NULL,
   `PORTAL_USER_ID` varchar(256) NOT NULL,
   `TIME_PERSISTED` datetime(6) DEFAULT NULL,
@@ -582,6 +573,7 @@ CREATE TABLE `parsing_template` (
   `APP_INTERFACE_ID` varchar(255) DEFAULT NULL,
   `GATEWAY_ID` varchar(255) DEFAULT NULL,
   `INITIAL_INPUTS_JSON` tinytext DEFAULT NULL,
+  `PARSER_CONNECTIONS_JSON` tinytext DEFAULT NULL,
   PRIMARY KEY (`PARSING_TEMPLATE_ID`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
 CREATE TABLE `permission_type` (
@@ -611,7 +603,6 @@ CREATE TABLE `process` (
   `EXPERIMENT_DATA_DIR` varchar(512) DEFAULT NULL,
   `EXPERIMENT_ID` varchar(255) DEFAULT NULL,
   `GATEWAY_EXECUTION_ID` varchar(255) DEFAULT NULL,
-  `GENERATE_CERT` bit(1) DEFAULT NULL,
   `GROUP_RESOURCE_PROFILE_ID` varchar(255) DEFAULT NULL,
   `INPUT_STORAGE_RESOURCE_ID` varchar(255) DEFAULT NULL,
   `LAST_UPDATE_TIME` datetime(6) DEFAULT NULL,
@@ -619,7 +610,6 @@ CREATE TABLE `process` (
   `PROCESS_DETAIL` tinytext DEFAULT NULL,
   `TASK_DAG` tinytext DEFAULT NULL,
   `USE_USER_CR_PREF` bit(1) DEFAULT NULL,
-  `USER_DN` varchar(255) DEFAULT NULL,
   `USERNAME` varchar(255) DEFAULT NULL,
   PRIMARY KEY (`PROCESS_ID`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
@@ -638,16 +628,6 @@ CREATE TABLE `process_resource_schedule` (
   `WALL_TIME_LIMIT` int(11) DEFAULT NULL,
   PRIMARY KEY (`PROCESS_ID`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
-CREATE TABLE `process_workflow` (
-  `processId` varchar(255) NOT NULL,
-  `workflowId` varchar(255) NOT NULL,
-  `CREATION_TIME` datetime(6) DEFAULT NULL,
-  `TYPE` varchar(255) DEFAULT NULL,
-  `PROCESS_ID` varchar(255) DEFAULT NULL,
-  PRIMARY KEY (`processId`,`workflowId`),
-  KEY `FK3t3hw37ici9l1289hpcn4frcn` (`PROCESS_ID`),
-  CONSTRAINT `FK3t3hw37ici9l1289hpcn4frcn` FOREIGN KEY (`PROCESS_ID`) 
REFERENCES `process` (`PROCESS_ID`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
 CREATE TABLE `project` (
   `PROJECT_ID` varchar(255) NOT NULL,
   `CREATION_TIME` datetime(6) DEFAULT NULL,
@@ -671,7 +651,7 @@ CREATE TABLE `queue_status` (
   `CREATED_TIME` decimal(38,0) NOT NULL,
   `QUEUE_UP` bit(1) DEFAULT NULL,
   `QUEUED_JOBS` int(11) DEFAULT NULL,
-  `RUNNING_JOBS` bit(1) DEFAULT NULL,
+  `RUNNING_JOBS` int(11) DEFAULT NULL,
   PRIMARY KEY (`HOST_NAME`,`QUEUE_NAME`,`CREATED_TIME`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
 CREATE TABLE `repository_resource` (
@@ -726,7 +706,6 @@ CREATE TABLE `resource` (
   `name` varchar(255) NOT NULL,
   `privacy` enum('PRIVATE','PUBLIC') NOT NULL,
   `state` enum('ACTIVE','DELETED') NOT NULL,
-  `status` enum('NONE','PENDING','REJECTED','VERIFIED') NOT NULL,
   `updatedAt` datetime(6) NOT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
@@ -750,6 +729,7 @@ CREATE TABLE `resource_star` (
   `user_id` varchar(255) NOT NULL,
   `resource_id` varchar(48) NOT NULL,
   PRIMARY KEY (`id`),
+  UNIQUE KEY `UK_resource_star_user_resource` (`user_id`,`resource_id`),
   KEY `FKe8g40jht9trlg7x979t2v0qm1` (`resource_id`),
   CONSTRAINT `FKe8g40jht9trlg7x979t2v0qm1` FOREIGN KEY (`resource_id`) 
REFERENCES `resource` (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
@@ -826,7 +806,8 @@ CREATE TABLE `storage_resource` (
 CREATE TABLE `tag` (
   `id` varchar(48) NOT NULL,
   `value` varchar(255) NOT NULL,
-  PRIMARY KEY (`id`)
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `UK_tag_value` (`value`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
 CREATE TABLE `task` (
   `TASK_ID` varchar(255) NOT NULL,
@@ -862,7 +843,6 @@ CREATE TABLE `user_configuration_data` (
   `EXPERIMENT_ID` varchar(255) NOT NULL,
   `AIRAVATA_AUTO_SCHEDULE` bit(1) DEFAULT NULL,
   `EXPERIMENT_DATA_DIR` varchar(512) DEFAULT NULL,
-  `GENERATE_CERT` bit(1) DEFAULT NULL,
   `GROUP_RESOURCE_PROFILE_ID` varchar(255) DEFAULT NULL,
   `INPUT_STORAGE_RESOURCE_ID` varchar(255) DEFAULT NULL,
   `NODE_COUNT` int(11) DEFAULT NULL,
@@ -880,7 +860,6 @@ CREATE TABLE `user_configuration_data` (
   `TOTAL_CPU_COUNT` int(11) DEFAULT NULL,
   `TOTAL_PHYSICAL_MEMORY` int(11) DEFAULT NULL,
   `IS_USE_USER_CR_PREF` bit(1) DEFAULT NULL,
-  `USER_DN` varchar(255) DEFAULT NULL,
   `WALL_TIME_LIMIT` int(11) DEFAULT NULL,
   PRIMARY KEY (`EXPERIMENT_ID`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
diff --git 
a/airavata-python-sdk/airavata_sdk/generated/org/apache/airavata/model/experiment/experiment_pb2.py
 
b/airavata-python-sdk/airavata_sdk/generated/org/apache/airavata/model/experiment/experiment_pb2.py
index f26832e498..3123ca9de6 100644
--- 
a/airavata-python-sdk/airavata_sdk/generated/org/apache/airavata/model/experiment/experiment_pb2.py
+++ 
b/airavata-python-sdk/airavata_sdk/generated/org/apache/airavata/model/experiment/experiment_pb2.py
@@ -30,7 +30,7 @@ from org.apache.airavata.model.process import process_pb2 as 
org_dot_apache_dot_
 from org.apache.airavata.model.workflow import workflow_pb2 as 
org_dot_apache_dot_airavata_dot_model_dot_workflow_dot_workflow__pb2
 
 
-DESCRIPTOR = 
_descriptor_pool.Default().AddSerializedFile(b'\n5org/apache/airavata/model/experiment/experiment.proto\x12$org.apache.airavata.model.experiment\x1a/org/apache/airavata/model/commons/commons.proto\x1a=org/apache/airavata/model/application/io/application_io.proto\x1a\x35org/apache/airavata/model/scheduling/scheduling.proto\x1a-org/apache/airavata/model/status/status.proto\x1a/org/apache/airavata/model/process/process.proto\x1a\x31org/apache/airavata/model/workflow/workflow.pr
 [...]
+DESCRIPTOR = 
_descriptor_pool.Default().AddSerializedFile(b'\n5org/apache/airavata/model/experiment/experiment.proto\x12$org.apache.airavata.model.experiment\x1a/org/apache/airavata/model/commons/commons.proto\x1a=org/apache/airavata/model/application/io/application_io.proto\x1a\x35org/apache/airavata/model/scheduling/scheduling.proto\x1a-org/apache/airavata/model/status/status.proto\x1a/org/apache/airavata/model/process/process.proto\x1a\x31org/apache/airavata/model/workflow/workflow.pr
 [...]
 
 _globals = globals()
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -38,20 +38,20 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 
'org.apache.airavata.model.e
 if not _descriptor._USE_C_DESCRIPTORS:
   _globals['DESCRIPTOR']._loaded_options = None
   _globals['DESCRIPTOR']._serialized_options = 
b'\n*org.apache.airavata.model.experiment.protoP\001'
-  _globals['_EXPERIMENTTYPE']._serialized_start=3117
-  _globals['_EXPERIMENTTYPE']._serialized_end=3200
-  _globals['_EXPERIMENTSEARCHFIELDS']._serialized_start=3203
-  _globals['_EXPERIMENTSEARCHFIELDS']._serialized_end=3410
-  _globals['_PROJECTSEARCHFIELDS']._serialized_start=3412
-  _globals['_PROJECTSEARCHFIELDS']._serialized_end=3511
-  _globals['_EXPERIMENTCLEANUPSTRATEGY']._serialized_start=3513
-  _globals['_EXPERIMENTCLEANUPSTRATEGY']._serialized_end=3640
+  _globals['_EXPERIMENTTYPE']._serialized_start=3089
+  _globals['_EXPERIMENTTYPE']._serialized_end=3172
+  _globals['_EXPERIMENTSEARCHFIELDS']._serialized_start=3175
+  _globals['_EXPERIMENTSEARCHFIELDS']._serialized_end=3382
+  _globals['_PROJECTSEARCHFIELDS']._serialized_start=3384
+  _globals['_PROJECTSEARCHFIELDS']._serialized_end=3483
+  _globals['_EXPERIMENTCLEANUPSTRATEGY']._serialized_start=3485
+  _globals['_EXPERIMENTCLEANUPSTRATEGY']._serialized_end=3612
   _globals['_USERCONFIGURATIONDATAMODEL']._serialized_start=410
-  _globals['_USERCONFIGURATIONDATAMODEL']._serialized_end=1026
-  _globals['_EXPERIMENTMODEL']._serialized_start=1029
-  _globals['_EXPERIMENTMODEL']._serialized_end=2072
-  _globals['_EXPERIMENTSUMMARYMODEL']._serialized_start=2075
-  _globals['_EXPERIMENTSUMMARYMODEL']._serialized_end=2342
-  _globals['_EXPERIMENTSTATISTICS']._serialized_start=2345
-  _globals['_EXPERIMENTSTATISTICS']._serialized_end=3115
+  _globals['_USERCONFIGURATIONDATAMODEL']._serialized_end=998
+  _globals['_EXPERIMENTMODEL']._serialized_start=1001
+  _globals['_EXPERIMENTMODEL']._serialized_end=2044
+  _globals['_EXPERIMENTSUMMARYMODEL']._serialized_start=2047
+  _globals['_EXPERIMENTSUMMARYMODEL']._serialized_end=2314
+  _globals['_EXPERIMENTSTATISTICS']._serialized_start=2317
+  _globals['_EXPERIMENTSTATISTICS']._serialized_end=3087
 # @@protoc_insertion_point(module_scope)
diff --git 
a/airavata-python-sdk/airavata_sdk/generated/org/apache/airavata/model/experiment/experiment_pb2.pyi
 
b/airavata-python-sdk/airavata_sdk/generated/org/apache/airavata/model/experiment/experiment_pb2.pyi
index 0fcfea52fa..b1c0c20a00 100644
--- 
a/airavata-python-sdk/airavata_sdk/generated/org/apache/airavata/model/experiment/experiment_pb2.pyi
+++ 
b/airavata-python-sdk/airavata_sdk/generated/org/apache/airavata/model/experiment/experiment_pb2.pyi
@@ -68,14 +68,12 @@ ONLY_COMPLETED: ExperimentCleanupStrategy
 ONLY_FAILED: ExperimentCleanupStrategy
 
 class UserConfigurationDataModel(_message.Message):
-    __slots__ = ("airavata_auto_schedule", "override_manual_scheduled_params", 
"share_experiment_publicly", "computational_resource_scheduling", 
"throttle_resources", "user_dn", "generate_cert", "input_storage_resource_id", 
"output_storage_resource_id", "experiment_data_dir", "use_user_cr_pref", 
"group_resource_profile_id", "auto_scheduled_comp_resource_scheduling_list")
+    __slots__ = ("airavata_auto_schedule", "override_manual_scheduled_params", 
"share_experiment_publicly", "computational_resource_scheduling", 
"throttle_resources", "input_storage_resource_id", 
"output_storage_resource_id", "experiment_data_dir", "use_user_cr_pref", 
"group_resource_profile_id", "auto_scheduled_comp_resource_scheduling_list")
     AIRAVATA_AUTO_SCHEDULE_FIELD_NUMBER: _ClassVar[int]
     OVERRIDE_MANUAL_SCHEDULED_PARAMS_FIELD_NUMBER: _ClassVar[int]
     SHARE_EXPERIMENT_PUBLICLY_FIELD_NUMBER: _ClassVar[int]
     COMPUTATIONAL_RESOURCE_SCHEDULING_FIELD_NUMBER: _ClassVar[int]
     THROTTLE_RESOURCES_FIELD_NUMBER: _ClassVar[int]
-    USER_DN_FIELD_NUMBER: _ClassVar[int]
-    GENERATE_CERT_FIELD_NUMBER: _ClassVar[int]
     INPUT_STORAGE_RESOURCE_ID_FIELD_NUMBER: _ClassVar[int]
     OUTPUT_STORAGE_RESOURCE_ID_FIELD_NUMBER: _ClassVar[int]
     EXPERIMENT_DATA_DIR_FIELD_NUMBER: _ClassVar[int]
@@ -87,15 +85,13 @@ class UserConfigurationDataModel(_message.Message):
     share_experiment_publicly: bool
     computational_resource_scheduling: 
_scheduling_pb2.ComputationalResourceSchedulingModel
     throttle_resources: bool
-    user_dn: str
-    generate_cert: bool
     input_storage_resource_id: str
     output_storage_resource_id: str
     experiment_data_dir: str
     use_user_cr_pref: bool
     group_resource_profile_id: str
     auto_scheduled_comp_resource_scheduling_list: 
_containers.RepeatedCompositeFieldContainer[_scheduling_pb2.ComputationalResourceSchedulingModel]
-    def __init__(self, airavata_auto_schedule: bool = ..., 
override_manual_scheduled_params: bool = ..., share_experiment_publicly: bool = 
..., computational_resource_scheduling: 
_Optional[_Union[_scheduling_pb2.ComputationalResourceSchedulingModel, 
_Mapping]] = ..., throttle_resources: bool = ..., user_dn: _Optional[str] = 
..., generate_cert: bool = ..., input_storage_resource_id: _Optional[str] = 
..., output_storage_resource_id: _Optional[str] = ..., experiment_data_dir: 
_Optional[str] [...]
+    def __init__(self, airavata_auto_schedule: bool = ..., 
override_manual_scheduled_params: bool = ..., share_experiment_publicly: bool = 
..., computational_resource_scheduling: 
_Optional[_Union[_scheduling_pb2.ComputationalResourceSchedulingModel, 
_Mapping]] = ..., throttle_resources: bool = ..., input_storage_resource_id: 
_Optional[str] = ..., output_storage_resource_id: _Optional[str] = ..., 
experiment_data_dir: _Optional[str] = ..., use_user_cr_pref: bool = ..., 
group_resource_profi [...]
 
 class ExperimentModel(_message.Message):
     __slots__ = ("experiment_id", "project_id", "gateway_id", 
"experiment_type", "user_name", "experiment_name", "creation_time", 
"description", "execution_id", "gateway_execution_id", "gateway_instance_id", 
"enable_email_notification", "email_addresses", "user_configuration_data", 
"experiment_inputs", "experiment_outputs", "experiment_status", "errors", 
"processes", "workflow", "clean_up_strategy")
diff --git 
a/airavata-python-sdk/airavata_sdk/generated/org/apache/airavata/model/process/process_pb2.py
 
b/airavata-python-sdk/airavata_sdk/generated/org/apache/airavata/model/process/process_pb2.py
index 2433555c19..b24129ae9b 100644
--- 
a/airavata-python-sdk/airavata_sdk/generated/org/apache/airavata/model/process/process_pb2.py
+++ 
b/airavata-python-sdk/airavata_sdk/generated/org/apache/airavata/model/process/process_pb2.py
@@ -29,7 +29,7 @@ from org.apache.airavata.model.status import status_pb2 as 
org_dot_apache_dot_ai
 from org.apache.airavata.model.task import task_pb2 as 
org_dot_apache_dot_airavata_dot_model_dot_task_dot_task__pb2
 
 
-DESCRIPTOR = 
_descriptor_pool.Default().AddSerializedFile(b'\n/org/apache/airavata/model/process/process.proto\x12!org.apache.airavata.model.process\x1a/org/apache/airavata/model/commons/commons.proto\x1a=org/apache/airavata/model/application/io/application_io.proto\x1a\x35org/apache/airavata/model/scheduling/scheduling.proto\x1a-org/apache/airavata/model/status/status.proto\x1a)org/apache/airavata/model/task/task.proto\"_\n\x0fProcessWorkflow\x12\x12\n\nprocess_id\x18\x01
 \x01(\t\x12\x1 [...]
+DESCRIPTOR = 
_descriptor_pool.Default().AddSerializedFile(b'\n/org/apache/airavata/model/process/process.proto\x12!org.apache.airavata.model.process\x1a/org/apache/airavata/model/commons/commons.proto\x1a=org/apache/airavata/model/application/io/application_io.proto\x1a\x35org/apache/airavata/model/scheduling/scheduling.proto\x1a-org/apache/airavata/model/status/status.proto\x1a)org/apache/airavata/model/task/task.proto\"\x81\x08\n\x0cProcessModel\x12\x12\n\nprocess_id\x18\x01
 \x01(\t\x1 [...]
 
 _globals = globals()
 _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -37,8 +37,6 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 
'org.apache.airavata.model.p
 if not _descriptor._USE_C_DESCRIPTORS:
   _globals['DESCRIPTOR']._loaded_options = None
   _globals['DESCRIPTOR']._serialized_options = 
b'\n\'org.apache.airavata.model.process.protoP\001'
-  _globals['_PROCESSWORKFLOW']._serialized_start=343
-  _globals['_PROCESSWORKFLOW']._serialized_end=438
-  _globals['_PROCESSMODEL']._serialized_start=441
-  _globals['_PROCESSMODEL']._serialized_end=1567
+  _globals['_PROCESSMODEL']._serialized_start=344
+  _globals['_PROCESSMODEL']._serialized_end=1369
 # @@protoc_insertion_point(module_scope)
diff --git 
a/airavata-python-sdk/airavata_sdk/generated/org/apache/airavata/model/process/process_pb2.pyi
 
b/airavata-python-sdk/airavata_sdk/generated/org/apache/airavata/model/process/process_pb2.pyi
index 5adf2a6e7a..518a14b844 100644
--- 
a/airavata-python-sdk/airavata_sdk/generated/org/apache/airavata/model/process/process_pb2.pyi
+++ 
b/airavata-python-sdk/airavata_sdk/generated/org/apache/airavata/model/process/process_pb2.pyi
@@ -11,20 +11,8 @@ from typing import ClassVar as _ClassVar, Optional as 
_Optional, Union as _Union
 
 DESCRIPTOR: _descriptor.FileDescriptor
 
-class ProcessWorkflow(_message.Message):
-    __slots__ = ("process_id", "workflow_id", "creation_time", "type")
-    PROCESS_ID_FIELD_NUMBER: _ClassVar[int]
-    WORKFLOW_ID_FIELD_NUMBER: _ClassVar[int]
-    CREATION_TIME_FIELD_NUMBER: _ClassVar[int]
-    TYPE_FIELD_NUMBER: _ClassVar[int]
-    process_id: str
-    workflow_id: str
-    creation_time: int
-    type: str
-    def __init__(self, process_id: _Optional[str] = ..., workflow_id: 
_Optional[str] = ..., creation_time: _Optional[int] = ..., type: _Optional[str] 
= ...) -> None: ...
-
 class ProcessModel(_message.Message):
-    __slots__ = ("process_id", "experiment_id", "creation_time", 
"last_update_time", "process_statuses", "process_detail", 
"application_interface_id", "application_deployment_id", "compute_resource_id", 
"process_inputs", "process_outputs", "process_resource_schedule", "tasks", 
"task_dag", "process_errors", "gateway_execution_id", 
"enable_email_notification", "email_addresses", "input_storage_resource_id", 
"output_storage_resource_id", "user_dn", "generate_cert", 
"experiment_data_dir", "u [...]
+    __slots__ = ("process_id", "experiment_id", "creation_time", 
"last_update_time", "process_statuses", "process_detail", 
"application_interface_id", "application_deployment_id", "compute_resource_id", 
"process_inputs", "process_outputs", "process_resource_schedule", "tasks", 
"task_dag", "process_errors", "gateway_execution_id", 
"enable_email_notification", "email_addresses", "input_storage_resource_id", 
"output_storage_resource_id", "experiment_data_dir", "user_name", 
"use_user_cr_pref [...]
     PROCESS_ID_FIELD_NUMBER: _ClassVar[int]
     EXPERIMENT_ID_FIELD_NUMBER: _ClassVar[int]
     CREATION_TIME_FIELD_NUMBER: _ClassVar[int]
@@ -45,13 +33,10 @@ class ProcessModel(_message.Message):
     EMAIL_ADDRESSES_FIELD_NUMBER: _ClassVar[int]
     INPUT_STORAGE_RESOURCE_ID_FIELD_NUMBER: _ClassVar[int]
     OUTPUT_STORAGE_RESOURCE_ID_FIELD_NUMBER: _ClassVar[int]
-    USER_DN_FIELD_NUMBER: _ClassVar[int]
-    GENERATE_CERT_FIELD_NUMBER: _ClassVar[int]
     EXPERIMENT_DATA_DIR_FIELD_NUMBER: _ClassVar[int]
     USER_NAME_FIELD_NUMBER: _ClassVar[int]
     USE_USER_CR_PREF_FIELD_NUMBER: _ClassVar[int]
     GROUP_RESOURCE_PROFILE_ID_FIELD_NUMBER: _ClassVar[int]
-    PROCESS_WORKFLOWS_FIELD_NUMBER: _ClassVar[int]
     process_id: str
     experiment_id: str
     creation_time: int
@@ -72,11 +57,8 @@ class ProcessModel(_message.Message):
     email_addresses: _containers.RepeatedScalarFieldContainer[str]
     input_storage_resource_id: str
     output_storage_resource_id: str
-    user_dn: str
-    generate_cert: bool
     experiment_data_dir: str
     user_name: str
     use_user_cr_pref: bool
     group_resource_profile_id: str
-    process_workflows: 
_containers.RepeatedCompositeFieldContainer[ProcessWorkflow]
-    def __init__(self, process_id: _Optional[str] = ..., experiment_id: 
_Optional[str] = ..., creation_time: _Optional[int] = ..., last_update_time: 
_Optional[int] = ..., process_statuses: 
_Optional[_Iterable[_Union[_status_pb2.ProcessStatus, _Mapping]]] = ..., 
process_detail: _Optional[str] = ..., application_interface_id: _Optional[str] 
= ..., application_deployment_id: _Optional[str] = ..., compute_resource_id: 
_Optional[str] = ..., process_inputs: _Optional[_Iterable[_Union[_applicat [...]
+    def __init__(self, process_id: _Optional[str] = ..., experiment_id: 
_Optional[str] = ..., creation_time: _Optional[int] = ..., last_update_time: 
_Optional[int] = ..., process_statuses: 
_Optional[_Iterable[_Union[_status_pb2.ProcessStatus, _Mapping]]] = ..., 
process_detail: _Optional[str] = ..., application_interface_id: _Optional[str] 
= ..., application_deployment_id: _Optional[str] = ..., compute_resource_id: 
_Optional[str] = ..., process_inputs: _Optional[_Iterable[_Union[_applicat [...]
diff --git a/airavata-python-sdk/airavata_sdk/helpers/models.py 
b/airavata-python-sdk/airavata_sdk/helpers/models.py
index 1d9ec71964..9e5844a667 100644
--- a/airavata-python-sdk/airavata_sdk/helpers/models.py
+++ b/airavata-python-sdk/airavata_sdk/helpers/models.py
@@ -90,8 +90,6 @@ class UserConfigurationDataCreate(_Base):
     computational_resource_scheduling: Optional[
         ComputationalResourceSchedulingCreate] = None
     throttle_resources: Optional[bool] = None
-    user_dn: Optional[str] = None
-    generate_cert: Optional[bool] = None
     input_storage_resource_id: Optional[str] = None
     output_storage_resource_id: Optional[str] = None
     experiment_data_dir: Optional[str] = None
diff --git a/airavata-python-sdk/airavata_sdk/helpers/research_resources.py 
b/airavata-python-sdk/airavata_sdk/helpers/research_resources.py
index 939a7a7c94..4d016ebf76 100644
--- a/airavata-python-sdk/airavata_sdk/helpers/research_resources.py
+++ b/airavata-python-sdk/airavata_sdk/helpers/research_resources.py
@@ -504,8 +504,6 @@ def _build_user_configuration_data(data: dict):
         share_experiment_publicly=bool(
             data.get("share_experiment_publicly", False)),
         throttle_resources=bool(data.get("throttle_resources", False)),
-        user_dn=data.get("user_dn") or "",
-        generate_cert=bool(data.get("generate_cert", False)),
         input_storage_resource_id=data.get("input_storage_resource_id") or "",
         output_storage_resource_id=data.get("output_storage_resource_id") or 
"",
         experiment_data_dir=data.get("experiment_data_dir") or "",
diff --git 
a/airavata-server/src/main/resources/db/migration/airavata/V1__Baseline_schema.sql
 
b/airavata-server/src/main/resources/db/migration/airavata/V1__Baseline_schema.sql
index 355f9ae69d..fe7d6f0341 100644
--- 
a/airavata-server/src/main/resources/db/migration/airavata/V1__Baseline_schema.sql
+++ 
b/airavata-server/src/main/resources/db/migration/airavata/V1__Baseline_schema.sql
@@ -28,14 +28,6 @@
 
 SET FOREIGN_KEY_CHECKS=0;
 
-CREATE TABLE `agent_deployment_info` (
-  `AGENT_DEPLOYMENT_INFO_ID` varchar(255) NOT NULL,
-  `AGENT_APPLICATION_ID` varchar(255) DEFAULT NULL,
-  `COMPUTE_RESOURCE_ID` varchar(255) DEFAULT NULL,
-  `USER_FRINEDLY_NAME` varchar(255) DEFAULT NULL,
-  PRIMARY KEY (`AGENT_DEPLOYMENT_INFO_ID`),
-  UNIQUE KEY `UKf9p10tqcpwt5y0tcjrhq7p8qr` (`USER_FRINEDLY_NAME`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
 CREATE TABLE `app_io_param` (
   `PARAM_ID` varchar(255) NOT NULL,
   `APPLICATION_ARGUMENT` varchar(255) DEFAULT NULL,
@@ -256,7 +248,6 @@ CREATE TABLE `credentials` (
   `GATEWAY_ID` varchar(256) NOT NULL,
   `TOKEN_ID` varchar(256) NOT NULL,
   `CREDENTIAL` mediumblob NOT NULL,
-  `CREDENTIAL_OWNER_TYPE` varchar(50) DEFAULT NULL,
   `DESCRIPTION` varchar(500) DEFAULT NULL,
   `PORTAL_USER_ID` varchar(256) NOT NULL,
   `TIME_PERSISTED` datetime(6) DEFAULT NULL,
@@ -582,6 +573,7 @@ CREATE TABLE `parsing_template` (
   `APP_INTERFACE_ID` varchar(255) DEFAULT NULL,
   `GATEWAY_ID` varchar(255) DEFAULT NULL,
   `INITIAL_INPUTS_JSON` tinytext DEFAULT NULL,
+  `PARSER_CONNECTIONS_JSON` tinytext DEFAULT NULL,
   PRIMARY KEY (`PARSING_TEMPLATE_ID`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
 CREATE TABLE `permission_type` (
@@ -611,7 +603,6 @@ CREATE TABLE `process` (
   `EXPERIMENT_DATA_DIR` varchar(512) DEFAULT NULL,
   `EXPERIMENT_ID` varchar(255) DEFAULT NULL,
   `GATEWAY_EXECUTION_ID` varchar(255) DEFAULT NULL,
-  `GENERATE_CERT` bit(1) DEFAULT NULL,
   `GROUP_RESOURCE_PROFILE_ID` varchar(255) DEFAULT NULL,
   `INPUT_STORAGE_RESOURCE_ID` varchar(255) DEFAULT NULL,
   `LAST_UPDATE_TIME` datetime(6) DEFAULT NULL,
@@ -619,7 +610,6 @@ CREATE TABLE `process` (
   `PROCESS_DETAIL` tinytext DEFAULT NULL,
   `TASK_DAG` tinytext DEFAULT NULL,
   `USE_USER_CR_PREF` bit(1) DEFAULT NULL,
-  `USER_DN` varchar(255) DEFAULT NULL,
   `USERNAME` varchar(255) DEFAULT NULL,
   PRIMARY KEY (`PROCESS_ID`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
@@ -638,16 +628,6 @@ CREATE TABLE `process_resource_schedule` (
   `WALL_TIME_LIMIT` int(11) DEFAULT NULL,
   PRIMARY KEY (`PROCESS_ID`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
-CREATE TABLE `process_workflow` (
-  `processId` varchar(255) NOT NULL,
-  `workflowId` varchar(255) NOT NULL,
-  `CREATION_TIME` datetime(6) DEFAULT NULL,
-  `TYPE` varchar(255) DEFAULT NULL,
-  `PROCESS_ID` varchar(255) DEFAULT NULL,
-  PRIMARY KEY (`processId`,`workflowId`),
-  KEY `FK3t3hw37ici9l1289hpcn4frcn` (`PROCESS_ID`),
-  CONSTRAINT `FK3t3hw37ici9l1289hpcn4frcn` FOREIGN KEY (`PROCESS_ID`) 
REFERENCES `process` (`PROCESS_ID`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
 CREATE TABLE `project` (
   `PROJECT_ID` varchar(255) NOT NULL,
   `CREATION_TIME` datetime(6) DEFAULT NULL,
@@ -671,7 +651,7 @@ CREATE TABLE `queue_status` (
   `CREATED_TIME` decimal(38,0) NOT NULL,
   `QUEUE_UP` bit(1) DEFAULT NULL,
   `QUEUED_JOBS` int(11) DEFAULT NULL,
-  `RUNNING_JOBS` bit(1) DEFAULT NULL,
+  `RUNNING_JOBS` int(11) DEFAULT NULL,
   PRIMARY KEY (`HOST_NAME`,`QUEUE_NAME`,`CREATED_TIME`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
 CREATE TABLE `repository_resource` (
@@ -726,7 +706,6 @@ CREATE TABLE `resource` (
   `name` varchar(255) NOT NULL,
   `privacy` enum('PRIVATE','PUBLIC') NOT NULL,
   `state` enum('ACTIVE','DELETED') NOT NULL,
-  `status` enum('NONE','PENDING','REJECTED','VERIFIED') NOT NULL,
   `updatedAt` datetime(6) NOT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
@@ -750,6 +729,7 @@ CREATE TABLE `resource_star` (
   `user_id` varchar(255) NOT NULL,
   `resource_id` varchar(48) NOT NULL,
   PRIMARY KEY (`id`),
+  UNIQUE KEY `UK_resource_star_user_resource` (`user_id`,`resource_id`),
   KEY `FKe8g40jht9trlg7x979t2v0qm1` (`resource_id`),
   CONSTRAINT `FKe8g40jht9trlg7x979t2v0qm1` FOREIGN KEY (`resource_id`) 
REFERENCES `resource` (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
@@ -826,7 +806,8 @@ CREATE TABLE `storage_resource` (
 CREATE TABLE `tag` (
   `id` varchar(48) NOT NULL,
   `value` varchar(255) NOT NULL,
-  PRIMARY KEY (`id`)
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `UK_tag_value` (`value`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
 CREATE TABLE `task` (
   `TASK_ID` varchar(255) NOT NULL,
@@ -862,7 +843,6 @@ CREATE TABLE `user_configuration_data` (
   `EXPERIMENT_ID` varchar(255) NOT NULL,
   `AIRAVATA_AUTO_SCHEDULE` bit(1) DEFAULT NULL,
   `EXPERIMENT_DATA_DIR` varchar(512) DEFAULT NULL,
-  `GENERATE_CERT` bit(1) DEFAULT NULL,
   `GROUP_RESOURCE_PROFILE_ID` varchar(255) DEFAULT NULL,
   `INPUT_STORAGE_RESOURCE_ID` varchar(255) DEFAULT NULL,
   `NODE_COUNT` int(11) DEFAULT NULL,
@@ -880,7 +860,6 @@ CREATE TABLE `user_configuration_data` (
   `TOTAL_CPU_COUNT` int(11) DEFAULT NULL,
   `TOTAL_PHYSICAL_MEMORY` int(11) DEFAULT NULL,
   `IS_USE_USER_CR_PREF` bit(1) DEFAULT NULL,
-  `USER_DN` varchar(255) DEFAULT NULL,
   `WALL_TIME_LIMIT` int(11) DEFAULT NULL,
   PRIMARY KEY (`EXPERIMENT_ID`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci;
diff --git a/conf/db/seed.sql b/conf/db/seed.sql
index 69c031385f..709e6b4324 100644
--- a/conf/db/seed.sql
+++ b/conf/db/seed.sql
@@ -94,7 +94,7 @@ SET @OLD_AUTOCOMMIT=@@AUTOCOMMIT, @@AUTOCOMMIT=0;
 COMMIT;
 SET AUTOCOMMIT=@OLD_AUTOCOMMIT;
 SET @OLD_AUTOCOMMIT=@@AUTOCOMMIT, @@AUTOCOMMIT=0;
-INSERT INTO `credentials` (`GATEWAY_ID`, `TOKEN_ID`, `CREDENTIAL`, 
`CREDENTIAL_OWNER_TYPE`, `DESCRIPTION`, `PORTAL_USER_ID`, `TIME_PERSISTED`) 
VALUES 
('default','24bc9035-9bf9-4f4e-ad0b-0ca18651c475',0x9E84F4E3E50D7B5F1D5F1942EC1729C57A7F9F96544EAAA7190EC3BD9FE7D10EF9ED3C2E4025CA58A3DD5116E4610D23F049E0343801A98C3B7F605702AA2F8730FCB5B5FD2F071581E56B4113CFEFC0BE76EE01588AEF931F39F4FDD2450C5B888794F2E5F5EDB3DB6EAD558F5A681DEE76C43716B5530C4CAAF7030FE38767DC64F0C26A5D628E675AC23BE0C8D10727
 [...]
+INSERT INTO `credentials` (`GATEWAY_ID`, `TOKEN_ID`, `CREDENTIAL`, 
`DESCRIPTION`, `PORTAL_USER_ID`, `TIME_PERSISTED`) VALUES 
('default','24bc9035-9bf9-4f4e-ad0b-0ca18651c475',0x9E84F4E3E50D7B5F1D5F1942EC1729C57A7F9F96544EAAA7190EC3BD9FE7D10EF9ED3C2E4025CA58A3DD5116E4610D23F049E0343801A98C3B7F605702AA2F8730FCB5B5FD2F071581E56B4113CFEFC0BE76EE01588AEF931F39F4FDD2450C5B888794F2E5F5EDB3DB6EAD558F5A681DEE76C43716B5530C4CAAF7030FE38767DC64F0C26A5D628E675AC23BE0C8D10727E05416F8F40ED4EE807CD827C
 [...]
 COMMIT;
 SET AUTOCOMMIT=@OLD_AUTOCOMMIT;
 SET @OLD_AUTOCOMMIT=@@AUTOCOMMIT, @@AUTOCOMMIT=0;

Reply via email to