You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2016/08/31 19:14:11 UTC

[03/10] airavata git commit: adding process model classes

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorPK.java
new file mode 100644
index 0000000..e7cc6ee
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorPK.java
@@ -0,0 +1,75 @@
+/*
+ *
+ * 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.registry.core.entities.expcatalog;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class ProcessErrorPK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(ProcessErrorPK.class);
+    private String errorId;
+    private String processId;
+
+    @Column(name = "ERROR_ID")
+    @Id
+    public String getErrorId() {
+        return errorId;
+    }
+
+    public void setErrorId(String errorId) {
+        this.errorId = errorId;
+    }
+
+    @Column(name = "PROCESS_ID")
+    @Id
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ProcessErrorPK that = (ProcessErrorPK) o;
+
+        if (getErrorId() != null ? !getErrorId().equals(that.getErrorId()) : that.getErrorId() != null) return false;
+        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getErrorId() != null ? getErrorId().hashCode() : 0;
+        result = 31 * result + (getProcessId() != null ? getProcessId().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
new file mode 100644
index 0000000..a63ff37
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
@@ -0,0 +1,174 @@
+/*
+ *
+ * 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.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "PROCESS_INPUT")
+@IdClass(ProcessInputPK.class)
+public class ProcessInputEntity {
+    private String processId;
+    public String name;
+    public String value;
+    public String type;
+    public String applicationArgument;
+    public boolean standardInput;
+    public String userFriendlyDescription;
+    public String metaData;
+    public int inputOrder;
+    public boolean isRequired;
+    public boolean requiredToAddedToCommandLine;
+    public boolean dataStaged;
+    public String storageResourceId;
+
+    private ProcessEntity process;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProceesId() {
+        return processId;
+    }
+
+    public void setProceseId(String processId) {
+        this.processId = processId;
+    }
+
+    @Id
+    @Column(name = "INPUT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Column(name = "INPUT_VALUE")
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @Column(name = "INPUT_TYPE")
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Column(name = "APPLICATION_ARGUMENT")
+    public String getApplicationArgument() {
+        return applicationArgument;
+    }
+
+    public void setApplicationArgument(String applicationArgument) {
+        this.applicationArgument = applicationArgument;
+    }
+
+    @Column(name = "STANDARD_INPUT")
+    public boolean isStandardInput() {
+        return standardInput;
+    }
+
+    public void setStandardInput(boolean standardInput) {
+        this.standardInput = standardInput;
+    }
+
+    @Column(name = "USER_FRIENDLY_DESCRIPTION")
+    public String getUserFriendlyDescription() {
+        return userFriendlyDescription;
+    }
+
+    public void setUserFriendlyDescription(String userFriendlyDescription) {
+        this.userFriendlyDescription = userFriendlyDescription;
+    }
+
+    @Lob
+    @Column(name = "METADATA")
+    public String getMetaData() {
+        return metaData;
+    }
+
+    public void setMetaData(String metaData) {
+        this.metaData = metaData;
+    }
+
+    @Column(name = "INPUT_ORDER")
+    public int getInputOrder() {
+        return inputOrder;
+    }
+
+    public void setInputOrder(int inputOrder) {
+        this.inputOrder = inputOrder;
+    }
+
+    @Column(name = "REQUIRED")
+    public boolean isRequired() {
+        return isRequired;
+    }
+
+    public void setRequired(boolean isRequired) {
+        this.isRequired = isRequired;
+    }
+
+    @Column(name = "REQUIRED_TO_ADDED_TO_COMMANDLINE")
+    public boolean isRequiredToAddedToCommandLine() {
+        return requiredToAddedToCommandLine;
+    }
+
+    public void setRequiredToAddedToCommandLine(boolean requiredToAddedToCommandLine) {
+        this.requiredToAddedToCommandLine = requiredToAddedToCommandLine;
+    }
+
+    @Column(name = "DATA_STAGED")
+    public boolean isDataStaged() {
+        return dataStaged;
+    }
+
+    public void setDataStaged(boolean dataStaged) {
+        this.dataStaged = dataStaged;
+    }
+
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
+    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
+    public ProcessEntity getProcess() {
+        return process;
+    }
+
+    public void setProcess(ProcessEntity process) {
+        this.process = process;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputPK.java
new file mode 100644
index 0000000..188b35f
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputPK.java
@@ -0,0 +1,74 @@
+/*
+ *
+ * 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.registry.core.entities.expcatalog;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class ProcessInputPK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(ProcessInputPK.class);
+    private String processId;
+    private String name;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Id
+    @Column(name = "INPUT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ProcessInputPK that = (ProcessInputPK) o;
+
+        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
+        if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getProcessId() != null ? getProcessId().hashCode() : 0;
+        result = 31 * result + (getName() != null ? getName().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java
new file mode 100644
index 0000000..06181bc
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java
@@ -0,0 +1,165 @@
+/*
+ *
+ * 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.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "PROCESS_OUTPUT")
+@IdClass(ProcessOutputPK.class)
+public class ProcessOutputEntity {
+    private String processId;
+    public String name;
+    public String value;
+    public String type;
+    public String applicationArgument;
+    public boolean isRequired;
+    public boolean requiredToAddedToCommandLine;
+    public boolean dataMovement;
+    public String location;
+    public String searchQuery;
+    public boolean outputStreaming;
+    public String storageResourceId;
+
+    private ProcessEntity process;
+
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Id
+    @Column(name = "OUTPUT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Column(name = "OUTPUT_VALUE")
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @Column(name = "OUTPUT_TYPE")
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Column(name = "APPLICATION_ARGUMENT")
+    public String getApplicationArgument() {
+        return applicationArgument;
+    }
+
+    public void setApplicationArgument(String applicationArgument) {
+        this.applicationArgument = applicationArgument;
+    }
+
+    @Column(name = "REQUIRED")
+    public boolean isRequired() {
+        return isRequired;
+    }
+
+    public void setRequired(boolean isRequired) {
+        this.isRequired = isRequired;
+    }
+
+
+    @Column(name = "REQUIRED_TO_ADDED_TO_COMMANDLINE")
+    public boolean isRequiredToAddedToCommandLine() {
+        return requiredToAddedToCommandLine;
+    }
+
+    public void setRequiredToAddedToCommandLine(boolean requiredToAddedToCommandLine) {
+        this.requiredToAddedToCommandLine = requiredToAddedToCommandLine;
+    }
+
+    @Column(name = "DATA_MOVEMENT")
+    public boolean isDataMovement() {
+        return dataMovement;
+    }
+
+    public void setDataMovement(boolean dataMovement) {
+        this.dataMovement = dataMovement;
+    }
+
+    @Column(name = "LOCATION")
+    public String getLocation() {
+        return location;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    @Column(name = "SEARCH_QUERY")
+    public String getSearchQuery() {
+        return searchQuery;
+    }
+
+    public void setSearchQuery(String searchQuery) {
+        this.searchQuery = searchQuery;
+    }
+
+    @Column(name = "OUTPUT_STREAMING")
+    public boolean isOutputStreaming() {
+        return outputStreaming;
+    }
+
+    public void setOutputStreaming(boolean outputStreaming) {
+        this.outputStreaming = outputStreaming;
+    }
+
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
+    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
+    public ProcessEntity getProcess() {
+        return process;
+    }
+
+    public void setProcess(ProcessEntity process) {
+        this.process = process;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputPK.java
new file mode 100644
index 0000000..bde7c50
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputPK.java
@@ -0,0 +1,70 @@
+/*
+ *
+ * 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.registry.core.entities.expcatalog;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class ProcessOutputPK implements Serializable {
+    private String processId;
+    private String name;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Id
+    @Column(name = "OUTPUT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ProcessOutputPK that = (ProcessOutputPK) o;
+
+        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
+        if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getProcessId() != null ? getProcessId().hashCode() : 0;
+        result = 31 * result + (getName() != null ? getName().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java
new file mode 100644
index 0000000..11f167d
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java
@@ -0,0 +1,170 @@
+/*
+ *
+ * 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.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "PROCESS_RESOURCE_SCHEDULING")
+public class ProcessResourceSchedulingEntity {
+    private String processId;
+    private String resourceHostId;
+    private int totalCPUCount;
+    private int nodeCount;
+    private int numberOfThreads;
+    private String queueName;
+    private int wallTimeLimit;
+    private int totalPhysicalMemory;
+    private String chessisNumber;
+    private String staticWorkingDir;
+    private String overrideLoginUserName;
+    private String overrideScratchLocation;
+    private String overrideAllocationProjectNumber;
+    private ProcessEntity process;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Column(name = "RESOURCE_HOST_ID")
+    public String getResourceHostId() {
+        return resourceHostId;
+    }
+
+    public void setResourceHostId(String resourceHostId) {
+        this.resourceHostId = resourceHostId;
+    }
+
+    @Column(name = "CPU_COUNT")
+    public int getTotalCPUCount() {
+        return totalCPUCount;
+    }
+
+    public void setTotalCPUCount(int totalCPUCount) {
+        this.totalCPUCount = totalCPUCount;
+    }
+
+    @Column(name = "NODE_COUNT")
+    public int getNodeCount() {
+        return nodeCount;
+    }
+
+    public void setNodeCount(int nodeCount) {
+        this.nodeCount = nodeCount;
+    }
+
+    @Column(name = "NUMBER_OF_THREADS")
+    public int getNumberOfThreads() {
+        return numberOfThreads;
+    }
+
+    public void setNumberOfThreads(int numberOfThreads) {
+        this.numberOfThreads = numberOfThreads;
+    }
+
+    @Column(name = "QUEUE_NAME")
+    public String getQueueName() {
+        return queueName;
+    }
+
+    public void setQueueName(String queueName) {
+        this.queueName = queueName;
+    }
+
+    @Column(name = "WALL_TIME_LIMIT")
+    public int getWallTimeLimit() {
+        return wallTimeLimit;
+    }
+
+    public void setWallTimeLimit(int wallTimeLimit) {
+        this.wallTimeLimit = wallTimeLimit;
+    }
+
+    @Column(name = "TOTAL_PHYSICAL_MEMORY")
+    public int getTotalPhysicalMemory() {
+        return totalPhysicalMemory;
+    }
+
+    public void setTotalPhysicalMemory(int totalPhysicalMemory) {
+        this.totalPhysicalMemory = totalPhysicalMemory;
+    }
+
+    @Column(name = "CHESSIS_NUMBER")
+    public String getChessisNumber() {
+        return chessisNumber;
+    }
+
+    public void setChessisNumber(String chessisNumber) {
+        this.chessisNumber = chessisNumber;
+    }
+
+    @Column(name = "STATIC_WORKING_DIRECTORY")
+    public String getStaticWorkingDir() {
+        return staticWorkingDir;
+    }
+
+    public void setStaticWorkingDir(String staticWorkingDir) {
+        this.staticWorkingDir = staticWorkingDir;
+    }
+
+    @Column(name = "OVERRIDE_LOGIN_USERNAME")
+    public String getOverrideLoginUserName() {
+        return overrideLoginUserName;
+    }
+
+    public void setOverrideLoginUserName(String overrideLoginUserName) {
+        this.overrideLoginUserName = overrideLoginUserName;
+    }
+
+    @Column(name = "OVERRIDE_SCRATCH_LOCATION")
+    public String getOverrideScratchLocation() {
+        return overrideScratchLocation;
+    }
+
+    public void setOverrideScratchLocation(String overrideScratchLocation) {
+        this.overrideScratchLocation = overrideScratchLocation;
+    }
+
+    @Column(name = "OVERRIDE_ALLOCATION_PROJECT_NUMBER")
+    public String getOverrideAllocationProjectNumber() {
+        return overrideAllocationProjectNumber;
+    }
+
+    public void setOverrideAllocationProjectNumber(String overrideAllocationProjectNumber) {
+        this.overrideAllocationProjectNumber = overrideAllocationProjectNumber;
+    }
+
+    @OneToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL)
+    @PrimaryKeyJoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
+    public ProcessEntity getProcess() {
+        return process;
+    }
+
+    public void setProcess(ProcessEntity process) {
+        this.process = process;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java
new file mode 100644
index 0000000..ea816b5
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java
@@ -0,0 +1,83 @@
+/*
+ *
+ * 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.registry.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "PROCESS_STATUS")
+@IdClass(ProcessStatusPK.class)
+public class ProcessStatusEntity {
+    private String processId;
+    private String state;
+    private long timeOfStateChange;
+    private String reason;
+
+    private ProcessEntity process;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Id
+    @Column(name = "STATE")
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    @Column(name = "TIME_OF_STATE_CHANGE")
+    public long getTimeOfStateChange() {
+        return timeOfStateChange;
+    }
+
+    public void setTimeOfStateChange(long timeOfStateChange) {
+        this.timeOfStateChange = timeOfStateChange;
+    }
+
+    @Column(name = "REASON")
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
+    public ProcessEntity getProcess() {
+        return process;
+    }
+
+    public void setProcess(ProcessEntity process) {
+        this.process = process;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusPK.java
new file mode 100644
index 0000000..dba568a
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusPK.java
@@ -0,0 +1,74 @@
+/*
+ *
+ * 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.registry.core.entities.expcatalog;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class ProcessStatusPK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(ProcessStatusPK.class);
+    private String state;
+    private String processId;
+
+    @Id
+    @Column(name = "STATUS_ID")
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ProcessStatusPK that = (ProcessStatusPK) o;
+
+        if (getState() != null ? !getState().equals(that.getState()) : that.getState() != null) return false;
+        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getState() != null ? getState().hashCode() : 0;
+        result = 31 * result + (getProcessId() != null ? getProcessId().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
index b20650d..5a52dff 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
@@ -49,8 +49,11 @@ public class ExperimentRepository extends AbstractRepository<ExperimentModel, Ex
         Mapper mapper = ObjectMapperSingleton.getInstance();
         ExperimentEntity entity = mapper.map(experiment, ExperimentEntity.class);
 
-        if(entity.getUserConfigurationData() != null)
+        if(entity.getUserConfigurationData() != null) {
             entity.getUserConfigurationData().setExperimentId(experimentId);
+            if (entity.getUserConfigurationData().getComputeResourceSchedulingEntity() != null)
+                entity.getUserConfigurationData().getComputeResourceSchedulingEntity().setExperimentId(experimentId);
+        }
         if(entity.getExperimentInputs() != null)
             entity.getExperimentInputs().forEach(expIn->expIn.setExperimentId(experimentId));
         if(entity.getExperimentOutputs() != null)
@@ -60,6 +63,23 @@ public class ExperimentRepository extends AbstractRepository<ExperimentModel, Ex
         if(entity.getExperimentStatuses() != null)
             entity.getExperimentStatuses().forEach(expStatus->expStatus.setExperimentId(experimentId));
 
+        if(entity.getProcesses() != null){
+            entity.getProcesses().forEach(process->{
+                process.setExperimentId(experimentId);
+                String processId = process.getProcessId();
+                if(process.getProcessResourceSchedule() != null)
+                    process.getProcessResourceSchedule().setProcessId(processId);
+                if(process.getProcessInputs() != null)
+                    process.getProcessInputs().forEach(proInput->proInput.setProceseId(processId));
+                if(process.getProcessOutputs() != null)
+                    process.getProcessOutputs().forEach(proOutput->proOutput.setProcessId(processId));
+                if(process.getProcessError() != null)
+                    process.getProcessError().forEach(processErr->processErr.setProcessId(processId));
+                if(process.getProcessStatus() != null)
+                    process.getProcessStatus().forEach(processStat->processStat.setProcessId(processId));
+            });
+        }
+
         ExperimentEntity persistedCopy = JPAUtils.execute(entityManager -> entityManager.merge(entity));
         return mapper.map(persistedCopy, ExperimentModel.class);
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml b/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
index f7d72f3..8367f97 100644
--- a/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
+++ b/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
@@ -34,6 +34,12 @@
         <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentOutputEntity</class>
         <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentStatusEntity</class>
         <class>org.apache.airavata.registry.core.entities.expcatalog.UserConfigurationEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessErrorEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessInputEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessOutputEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessResourceSchedulingEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessStatusEntity</class>
         <exclude-unlisted-classes>true</exclude-unlisted-classes>
     </persistence-unit>
 </persistence>

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/experiment_catalog.sql b/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
index 4d401a3..8c11027 100644
--- a/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
+++ b/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
@@ -116,4 +116,112 @@ CREATE TABLE IF NOT EXISTS EXPERIMENT_STATUS(
     REASON VARCHAR (255),
     PRIMARY KEY (EXPERIMENT_ID, STATE),
     FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS(
+    PROCESS_ID VARCHAR (255),
+    EXPERIMENT_ID VARCHAR (255),
+    CREATION_TIME BIGINT,
+    LAST_UPDATE_TIME BIGINT,
+    PROCESS_DETAIL VARCHAR (255),
+    APPLICATION_INTERFACE_ID VARCHAR (255),
+    APPLICATION_DEPLOYMENT_ID VARCHAR (255),
+    COMPUTE_RESOURCE_ID VARCHAR (255),
+    TASK_DAG VARCHAR (255),
+    GATEWAY_EXECUTION_ID VARCHAR (255),
+    ENABLE_EMAIL_NOTIFICATION TINYINT(1),
+    STORAGE_RESOURCE_ID VARCHAR (255),
+    USER_DN VARCHAR (255),
+    GENERATE_CERT VARCHAR (255),
+    EXPERIMENT_DATA_DIR VARCHAR (255),
+    USER_NAME VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID),
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_EMAIL (
+    PROCESS_ID VARCHAR (255),
+    EMAIL VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID, EMAIL),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_RESOURCE_SCHEDULING(
+    PROCESS_ID VARCHAR (255),
+    RESOURCE_HOST_ID VARCHAR (255),
+    CPU_COUNT INT,
+    NODE_COUNT INT,
+    NUMBER_OF_THREADS INT,
+    QUEUE_NAME VARCHAR (255),
+    WALL_TIME_LIMIT INT,
+    TOTAL_PHYSICAL_MEMORY INT,
+    CHESSIS_NUMBER VARCHAR (255),
+    STATIC_WORKING_DIRECTORY VARCHAR (255),
+    OVERRIDE_LOGIN_USERNAME VARCHAR (255),
+    OVERRIDE_SCRATCH_LOCATION VARCHAR (255),
+    OVERRIDE_ALLOCATION_PROJECT_NUMBER VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_INPUT(
+    PROCESS_ID VARCHAR (255),
+    INPUT_NAME VARCHAR (255),
+    INPUT_VALUE VARCHAR (255),
+    INPUT_TYPE VARCHAR (255),
+    APPLICATION_ARGUMENT VARCHAR (255),
+    STANDARD_INPUT TINYINT(1),
+    USER_FRIENDLY_DESCRIPTION VARCHAR (255),
+    METADATA VARCHAR (4096),
+    INPUT_ORDER INT,
+    REQUIRED TINYINT(1),
+    REQUIRED_TO_ADDED_TO_COMMANDLINE TINYINT(1),
+    DATA_STAGED TINYINT(1),
+    STORAGE_RESOURCE_ID VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID,INPUT_NAME),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_OUTPUT(
+    PROCESS_ID VARCHAR (255),
+    OUTPUT_NAME VARCHAR (255),
+    OUTPUT_VALUE VARCHAR (255),
+    OUTPUT_TYPE VARCHAR (255),
+    APPLICATION_ARGUMENT VARCHAR (255),
+    REQUIRED TINYINT(1),
+    REQUIRED_TO_ADDED_TO_COMMANDLINE TINYINT(1),
+    DATA_MOVEMENT TINYINT(1),
+    LOCATION VARCHAR (255),
+    SEARCH_QUERY VARCHAR (255),
+    OUTPUT_STREAMING TINYINT(1),
+    STORAGE_RESOURCE_ID VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID,OUTPUT_NAME),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_ERROR(
+    ERROR_ID VARCHAR (255),
+    PROCESS_ID VARCHAR (255),
+    CREATION_TIME BIGINT,
+    ACTUAL_ERROR_MESSAGE VARCHAR (255),
+    USER_FRIENDLY_MESSAGE VARCHAR (255),
+    TRANSIENT_OR_PERSISTENT TINYINT,
+    PRIMARY KEY (ERROR_ID, PROCESS_ID),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_ERROR_ROOT_CAUSE_ERROR_ID(
+    ERROR_ID VARCHAR (255),
+    ROOT_CAUSE_ERROR_ID VARCHAR (255),
+    PRIMARY KEY (ERROR_ID, ROOT_CAUSE_ERROR_ID),
+    FOREIGN KEY(ERROR_ID) REFERENCES PROCESS_ERROR(ERROR_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_STATUS(
+    PROCESS_ID VARCHAR (255),
+    STATE VARCHAR (255),
+    TIME_OF_STATE_CHANGE BIGINT,
+    REASON VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID, STATE),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
 );
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index 3066886..f66b283 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -293,8 +293,8 @@ public class ExperimentRegistry {
 
             processResource.save();
 
-            if(process.getResourceSchedule() != null) {
-                addProcessResourceSchedule(process.getResourceSchedule(), process.getProcessId());
+            if(process.getProcessResourceSchedule() != null) {
+                addProcessResourceSchedule(process.getProcessResourceSchedule(), process.getProcessId());
             }
             if(process.getProcessInputs() !=  null && process.getProcessInputs().size() > 0) {
                 addProcessInputs(process.getProcessInputs(), process.getProcessId());
@@ -305,10 +305,12 @@ public class ExperimentRegistry {
 
             ProcessStatus processStatus = new ProcessStatus();
             processStatus.setState(ProcessState.CREATED);
-            addProcessStatus(processStatus, process.getProcessId());
+            List<ProcessStatus> processStatuses = new ArrayList<>();
+            processStatuses.add(processStatus);
+            addProcessStatus(processStatuses.get(0), process.getProcessId());
 
             if(process.getProcessError() != null) {
-                addProcessError(process.getProcessError(), process.getProcessId());
+                addProcessError(process.getProcessError().get(0), process.getProcessId());
             }
         } catch (Exception e) {
             logger.error(expId, "Error while adding process...", e);
@@ -391,27 +393,27 @@ public class ExperimentRegistry {
 
     public String addProcessStatus(ProcessStatus processStatus, String processID) throws RegistryException {
         try {
-            ProcessResource processResource = new ProcessResource();
-            processResource.setProcessId(processID);
-            ProcessStatusResource status = processResource.getProcessStatus();
-            ProcessState newState = processStatus.getState();
-            if (status == null) {
-                status = (ProcessStatusResource) processResource.create(ResourceType.PROCESS_STATUS);
-                status.setStatusId(getStatusID("PROCESS_STATE"));
-            }else {
-                String state = status.getState();
-                if (newState != null && !state.equals(newState.toString())){
+                ProcessResource processResource = new ProcessResource();
+                processResource.setProcessId(processID);
+                ProcessStatusResource status = processResource.getProcessStatus();
+                ProcessState newState = processStatus.getState();
+                if (status == null) {
+                    status = (ProcessStatusResource) processResource.create(ResourceType.PROCESS_STATUS);
                     status.setStatusId(getStatusID("PROCESS_STATE"));
+                }else {
+                    String state = status.getState();
+                    if (newState != null && !state.equals(newState.toString())){
+                        status.setStatusId(getStatusID("PROCESS_STATE"));
+                    }
                 }
-            }
-            status.setProcessId(processID);
-            status.setTimeOfStateChange(AiravataUtils.getTime(processStatus.getTimeOfStateChange()));
-            if (newState != null){
-                status.setState(newState.toString());
-            }
-            status.setReason(processStatus.getReason());
-            status.save();
-            logger.debug(processID, "Added process {} status to {}.", processID, processStatus.toString());
+                status.setProcessId(processID);
+                status.setTimeOfStateChange(AiravataUtils.getTime(processStatus.getTimeOfStateChange()));
+                if (newState != null){
+                    status.setState(newState.toString());
+                }
+                status.setReason(processStatus.getReason());
+                status.save();
+                logger.debug(processID, "Added process {} status to {}.", processID, processStatus.toString());
         } catch (Exception e) {
             logger.error(processID, "Error while adding process status...", e);
             throw new RegistryException(e);
@@ -752,8 +754,8 @@ public class ExperimentRegistry {
 
             processResource.save();
 
-            if(process.getResourceSchedule() != null) {
-                updateProcessResourceSchedule(process.getResourceSchedule(), process.getProcessId());
+            if(process.getProcessResourceSchedule() != null) {
+                updateProcessResourceSchedule(process.getProcessResourceSchedule(), process.getProcessId());
             }
             if(process.getProcessInputs() !=  null && process.getProcessInputs().size() > 0) {
                 updateProcessInputs(process.getProcessInputs(), process.getProcessId());
@@ -762,10 +764,10 @@ public class ExperimentRegistry {
                 updateProcessOutputs(process.getProcessOutputs(), process.getProcessId());
             }
             if(process.getProcessStatus() != null) {
-                updateProcessStatus(process.getProcessStatus(), process.getProcessId());
+                updateProcessStatus(process.getProcessStatus().get(0), process.getProcessId());
             }
             if(process.getProcessError() != null) {
-                updateProcessError(process.getProcessError(), process.getProcessId());
+                updateProcessError(process.getProcessError().get(0), process.getProcessId());
             }
             if(process.getTasks() != null && process.getTasks().size() > 0){
                 for(TaskModel task : process.getTasks()){
@@ -864,8 +866,8 @@ public class ExperimentRegistry {
         return addProcessStatus(processStatus, processID);
     }
 
-    public String updateProcessError(ErrorModel processError, String processID) throws RegistryException {
-        return addProcessError(processError, processID);
+    public String updateProcessError(ErrorModel processErrors, String processID) throws RegistryException {
+        return addProcessError(processErrors, processID);
     }
 
     public String updateTask(TaskModel task, String taskID) throws RegistryException {

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
index 3e04fcd..533e719 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
@@ -384,16 +384,20 @@ public class ThriftDataModelConversion {
 
             ErrorModel errorModel = getErrorModel(processResource.getProcessError());
             if (errorModel != null){
-                processModel.setProcessError(errorModel);
+                List<ErrorModel> errorModels = new ArrayList<>();
+                errorModels.add(errorModel);
+                processModel.setProcessError(errorModels);
             }
             ProcessStatus processStatus = getProcessStatus(processResource.getProcessStatus());
             if (processStatus != null){
-                processModel.setProcessStatus(processStatus);
+                List<ProcessStatus> statuses = new ArrayList<>();
+                statuses.add(processStatus);
+                processModel.setProcessStatus(statuses);
             }
 
             ComputationalResourceSchedulingModel schedule = getProcessResourceSchedule(processResource.getProcessResourceSchedule());
             if (schedule != null){
-                processModel.setResourceSchedule(schedule);
+                processModel.setProcessResourceSchedule(schedule);
             }
             processModel.setTasks(getTaskModelList(processResource.getTaskList()));
             processModel.setStorageResourceId(processResource.getStorageResourceId());

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift b/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
index b780203..0a72923 100644
--- a/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
+++ b/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
@@ -44,17 +44,17 @@ struct ProcessModel {
     2: required string experimentId,
     3: optional i64 creationTime,
     4: optional i64 lastUpdateTime,
-    5: optional status_models.ProcessStatus processStatus,
+    5: optional list<status_models.ProcessStatus> processStatus,
     6: optional string processDetail,
     7: optional string applicationInterfaceId,
     8: optional string applicationDeploymentId,
     9: optional string computeResourceId,
     10: optional list<application_io_models.InputDataObjectType> processInputs,
     11: optional list<application_io_models.OutputDataObjectType> processOutputs,
-    12: optional scheduling_model.ComputationalResourceSchedulingModel resourceSchedule,
+    12: optional scheduling_model.ComputationalResourceSchedulingModel processResourceSchedule,
     13: optional list<task_model.TaskModel> tasks,
     14: optional string taskDag,
-    15: optional airavata_commons.ErrorModel processError,
+    15: optional list<airavata_commons.ErrorModel> processError,
     16: optional string gatewayExecutionId,
     17: optional bool enableEmailNotification,
     18: optional list<string> emailAddresses,