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

yasith pushed a commit to branch distribution-improvements
in repository https://gitbox.apache.org/repos/asf/airavata.git

commit ff72f08bf6e75bb614baf3c356e32a733eb88c41
Author: yasithdev <[email protected]>
AuthorDate: Sun Jun 29 20:43:24 2025 -0500

    fix api server start bugs
---
 airavata-api/pom.xml                               |  17 +-
 .../airavata/common/utils/ApplicationSettings.java |   8 +-
 .../org/apache/airavata/common/utils/JPAUtils.java |   5 +-
 .../airavata/common/utils/ServerSettings.java      |   5 +-
 .../core/utils/migration/MappingToolRunner.java    |   2 +-
 .../org/apache/airavata/server/ServerMain.java     |  13 +-
 .../src/main/resources/META-INF/persistence.xml    | 337 +++++++++++----------
 airavata-api/src/main/resources/log4j2.xml         |  57 ++--
 airavata-api/src/test/resources/log4j2.xml         |  57 ++--
 dev-tools/deployment-scripts/README.md             |  40 +++
 .../deployment-scripts/distribution_update.sh      |   5 +-
 dev-tools/deployment-scripts/services_up.sh        |   9 +-
 .../src/main/assembly/load-client-bin-assembly.xml |   3 +-
 .../load-client/src/main/resources/bin/setenv.sh   |   2 +
 modules/agent-framework/agent-service/pom.xml      |  77 +++++
 .../src/main/resources/distribution/bin/setenv.sh  |   2 +
 .../main/resources/distribution/conf/log4j2.xml    |  57 ++--
 .../agent-service/src/main/resources/log4j2.xml    |  52 ++++
 .../src/main/resources/distribution/bin/setenv.sh  |   2 +
 .../main/resources/distribution/conf/log4j2.xml    |  57 ++--
 .../src/main/resources/distribution/bin/setenv.sh  |   2 +
 .../main/resources/distribution/conf/log4j2.xml    |  57 ++--
 .../ide-integration/src/main/resources/log4j2.xml  |  61 ++--
 .../src/main/resources/db-migrate.sh               |  15 +-
 .../research-framework/research-service/pom.xml    |  77 +++++
 .../src/main/resources/distribution/bin/setenv.sh  |   2 +
 .../main/resources/distribution/conf/log4j2.xml    |  57 ++--
 .../research-service/src/main/resources/log4j2.xml |  52 ++++
 pom.xml                                            |  14 +-
 .../iam-admin-services-cpi.thrift                  |   2 +-
 30 files changed, 743 insertions(+), 403 deletions(-)

diff --git a/airavata-api/pom.xml b/airavata-api/pom.xml
index f05bcf414b..4cc823d103 100644
--- a/airavata-api/pom.xml
+++ b/airavata-api/pom.xml
@@ -56,6 +56,10 @@ under the License.
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
     </dependency>
+    <dependency>
+      <groupId>jakarta.transaction</groupId>
+      <artifactId>jakarta.transaction-api</artifactId>
+    </dependency>
 
     <!-- Provided APIs -->
     <dependency>
@@ -94,6 +98,10 @@ under the License.
       <groupId>org.apache.derby</groupId>
       <artifactId>derbytools</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.mariadb.jdbc</groupId>
+      <artifactId>mariadb-java-client</artifactId>
+    </dependency>
 
     <!-- CLI & mapping -->
     <dependency>
@@ -114,6 +122,10 @@ under the License.
       <groupId>org.apache.openjpa</groupId>
       <artifactId>openjpa</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.hibernate.validator</groupId>
+      <artifactId>hibernate-validator</artifactId>
+    </dependency>
 
     <!-- JSON, Kafka, XML -->
     <dependency>
@@ -377,9 +389,8 @@ under the License.
         <groupId>org.apache.openjpa</groupId>
         <artifactId>openjpa-maven-plugin</artifactId>
         <configuration>
-          <includes>**/model/*.class</includes>
-          <includes>**/entities/*.class</includes>
-          <excludes>**/entities/XML*.class</excludes>
+          <includes>**/entities/**/*.class</includes>
+          
<excludes>**/entities/**/XML*.class,**/model/**/*.class,**/entities/**/*PK.class</excludes>
           <addDefaultConstructor>true</addDefaultConstructor>
           <enforcePropertyRestrictions>true</enforcePropertyRestrictions>
         </configuration>
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java
 
b/airavata-api/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java
index 658f7059c2..2c68ce0d7c 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/common/utils/ApplicationSettings.java
@@ -383,7 +383,9 @@ public class ApplicationSettings {
     }
 
     public static String getTrustStorePath() throws 
ApplicationSettingsException {
-        return getSetting(TRUST_STORE_PATH);
+      String airavataConfigDir = getSetting(AIRAVATA_CONFIG_DIR);
+      String trustStorePath = getSetting(TRUST_STORE_PATH);
+      return new File(airavataConfigDir, trustStorePath).getAbsolutePath();
     }
 
     public static String getTrustStorePassword() throws 
ApplicationSettingsException {
@@ -395,7 +397,9 @@ public class ApplicationSettings {
     }
 
     public static String getCredentialStoreKeyStorePath() throws 
ApplicationSettingsException {
-        return getSetting("credential.store.keystore.url");
+      String airavataConfigDir = getSetting(AIRAVATA_CONFIG_DIR);
+      String credentialStoreKeyStorePath = 
getSetting("credential.store.keystore.url");
+      return new File(airavataConfigDir, 
credentialStoreKeyStorePath).getAbsolutePath();
     }
 
     public static String getCredentialStoreKeyAlias() throws 
ApplicationSettingsException {
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/common/utils/JPAUtils.java 
b/airavata-api/src/main/java/org/apache/airavata/common/utils/JPAUtils.java
index 2761a1ad75..ec3fcdf9db 100644
--- a/airavata-api/src/main/java/org/apache/airavata/common/utils/JPAUtils.java
+++ b/airavata-api/src/main/java/org/apache/airavata/common/utils/JPAUtils.java
@@ -37,8 +37,8 @@ public class JPAUtils {
 
     static {
         Map<String, String> properties = new HashMap<String, String>();
-        properties.put("openjpa.ConnectionDriverName", 
"org.apache.commons.dbcp.BasicDataSource");
-        properties.put("openjpa.DynamicEnhancementAgent", "true");
+        properties.put("openjpa.ConnectionDriverName", 
"org.apache.commons.dbcp2.BasicDataSource");
+        properties.put("openjpa.DynamicEnhancementAgent", "false");
         properties.put("openjpa.RuntimeUnenhancedClasses", "unsupported");
         properties.put("openjpa.RemoteCommitProvider", "sjvm");
         properties.put("openjpa.Log", "DefaultLevel=INFO, Runtime=INFO, 
Tool=INFO, SQL=INFO");
@@ -48,6 +48,7 @@ public class JPAUtils {
         properties.put("openjpa.jdbc.SynchronizeMappings", "validate");
         properties.put("openjpa.jdbc.QuerySQLCache", "false");
         properties.put("openjpa.DetachState", "all");
+        properties.put("openjpa.MetaDataFactory", 
"jpa(Types=org.apache.airavata.sharing.registry.db.entities.*;org.apache.airavata.registry.core.entities.*;org.apache.airavata.service.profile.commons.*.entities.*)");
         properties.put(
                 "openjpa.ConnectionFactoryProperties",
                 "PrettyPrint=true, PrettyPrintLineLength=72,"
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
 
b/airavata-api/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
index ef0d7adb68..63419cafcb 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/common/utils/ServerSettings.java
@@ -19,6 +19,7 @@
 */
 package org.apache.airavata.common.utils;
 
+import java.io.File;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.HashMap;
@@ -421,7 +422,9 @@ public class ServerSettings extends ApplicationSettings {
     }
 
     public static String getKeyStorePath() throws ApplicationSettingsException 
{
-        return getSetting(Constants.KEYSTORE_PATH);
+        String airavataConfigDir = getSetting(AIRAVATA_CONFIG_DIR);
+        String keystorePath = getSetting(Constants.KEYSTORE_PATH);
+        return new File(airavataConfigDir, keystorePath).getAbsolutePath();
     }
 
     public static String getKeyStorePassword() throws 
ApplicationSettingsException {
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/registry/core/utils/migration/MappingToolRunner.java
 
b/airavata-api/src/main/java/org/apache/airavata/registry/core/utils/migration/MappingToolRunner.java
index 06a5c2ffc4..ed3606ebf1 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/registry/core/utils/migration/MappingToolRunner.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/registry/core/utils/migration/MappingToolRunner.java
@@ -42,7 +42,7 @@ public class MappingToolRunner {
 
         JDBCConfiguration jdbcConfiguration = new JDBCConfigurationImpl();
         
jdbcConfiguration.fromProperties(JPAUtils.createConnectionProperties(jdbcConfig));
-        
jdbcConfiguration.setConnectionDriverName("org.apache.commons.dbcp.BasicDataSource");
+        
jdbcConfiguration.setConnectionDriverName("org.apache.commons.dbcp2.BasicDataSource");
 
         Options options = new Options();
         options.put("sqlFile", outputFile);
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/server/ServerMain.java 
b/airavata-api/src/main/java/org/apache/airavata/server/ServerMain.java
index 095e05aed3..4381715829 100644
--- a/airavata-api/src/main/java/org/apache/airavata/server/ServerMain.java
+++ b/airavata-api/src/main/java/org/apache/airavata/server/ServerMain.java
@@ -188,16 +188,15 @@ public class ServerMain {
     private static void performServerStart(String[] args) {
         setServerStarted();
         logger.info("Airavata server instance starting...");
+        String serverNames = "all";
         for (String string : args) {
             logger.info("Server Arguments: " + string);
+            if (string.startsWith("--servers=")) {
+                serverNames = string.substring("--servers=".length());
+            }
         }
-        String serverNames;
-        try {
-            serverNames = ApplicationSettings.getSetting(SERVERS_KEY);
-            startAllServers(serverNames);
-        } catch (ApplicationSettingsException e1) {
-            logger.error("Error finding servers property");
-        }
+        serverNames = ApplicationSettings.getSetting(SERVERS_KEY, serverNames);
+        startAllServers(serverNames);
         while (!hasStopRequested()) {
             try {
                 Thread.sleep(2000);
diff --git a/airavata-api/src/main/resources/META-INF/persistence.xml 
b/airavata-api/src/main/resources/META-INF/persistence.xml
index af6b9eb949..2cbaab2234 100644
--- a/airavata-api/src/main/resources/META-INF/persistence.xml
+++ b/airavata-api/src/main/resources/META-INF/persistence.xml
@@ -20,167 +20,176 @@
  *
 * -->
 <persistence xmlns="http://java.sun.com/xml/ns/persistence"; version="2.0">
-    <persistence-unit name="profile_service">
-        
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
-        
<class>org.apache.airavata.service.profile.commons.user.entities.UserProfileEntity</class>
-        
<class>org.apache.airavata.service.profile.commons.user.entities.NSFDemographicsEntity</class>
-        
<class>org.apache.airavata.service.profile.commons.user.entities.CustomizedDashboardEntity</class>
-        
<class>org.apache.airavata.service.profile.commons.tenant.entities.GatewayEntity</class>
-        <exclude-unlisted-classes>true</exclude-unlisted-classes>
-
-        <properties>
-            <property name="openjpa.jdbc.MappingDefaults"
-                      value="ForeignKeyDeleteAction=cascade, 
JoinForeignKeyDeleteAction=cascade" />
-        </properties>
-    </persistence-unit>
-    <persistence-unit name="appcatalog_data_new">
-      
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.GridftpDataMovementEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ResourceJobManagerEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ComputeResourceEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ApplicationModuleEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ApplicationDeploymentEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ApplicationInterfaceEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.GatewayGroupsEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.GatewayProfileEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.StorageResourceEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ScpDataMovementEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.SshJobSubmissionEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.GlobusSubmissionEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.GsisshSubmissionEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.GridftpEndpointEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ComputeResourcePreferenceEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.JobSubmissionInterfaceEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.DataMovementInterfaceEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.StorageInterfaceEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.LocalSubmissionEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.GlobusGkEndpointEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.UnicoreDatamovementEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.UnicoreSubmissionEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.GsisshPostjobcommandEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.GsisshPrejobcommandEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.GsisshExportEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.LibraryApendPathEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.LibraryPrependPathEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.AppEnvironmentEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.PrejobCommandEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.PostjobCommandEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.AppModuleMappingEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ApplicationInputEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ApplicationOutputEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.BatchQueueEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ComputeResourceFileSystemEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.CloudJobSubmissionEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.JobManagerCommandEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ParallelismCommandEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.LocalDataMovementEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.StoragePreferenceEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.SSHAccountProvisionerConfiguration</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.BatchQueueResourcePolicyEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ComputeResourcePolicyEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.GroupComputeResourcePrefEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.GroupSSHAccountProvisionerConfig</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.GroupResourceProfileEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ModuleLoadCmdEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.UserResourceProfileEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.UserComputeResourcePreferenceEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.UserStoragePreferenceEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ParserEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ParserInputEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ParserOutputEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ParsingTemplateEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ParsingTemplateInputEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ParserConnectorInputEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ParserConnectorEntity</class>
-      
<class>org.apache.airavata.registry.core.entities.appcatalog.ComputeResourceReservationEntity</class>
-      <exclude-unlisted-classes>true</exclude-unlisted-classes>
-      <properties>
-          <property name="openjpa.jdbc.MappingDefaults"
-                    value="ForeignKeyDeleteAction=cascade, 
JoinForeignKeyDeleteAction=cascade" />
-      </properties>
-    </persistence-unit>
-    <persistence-unit name="replicacatalog_data_new">
-        
<class>org.apache.airavata.registry.core.entities.replicacatalog.ConfigurationEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.replicacatalog.DataProductEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.replicacatalog.DataProductMetadataEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.replicacatalog.DataReplicaLocationEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.replicacatalog.DataReplicaMetadataEntity</class>
-        <exclude-unlisted-classes>true</exclude-unlisted-classes>
-        <properties>
-            <property name="openjpa.jdbc.MappingDefaults"
-                      value="ForeignKeyDeleteAction=cascade, 
JoinForeignKeyDeleteAction=cascade" />
-        </properties>
-    </persistence-unit>
-    <persistence-unit name="workflowcatalog_data_new">
-        
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.AiravataWorkflowEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.AiravataWorkflowErrorEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.AiravataWorkflowStatusEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.ApplicationErrorEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.ApplicationStatusEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.HandlerErrorEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.HandlerInputEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.HandlerOutputEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.HandlerStatusEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.WorkflowApplicationEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.WorkflowConnectionEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.WorkflowDataBlockEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.WorkflowHandlerEntity</class>
-        <exclude-unlisted-classes>true</exclude-unlisted-classes>
-        <properties>
-            <property name="openjpa.jdbc.MappingDefaults"
-                      value="ForeignKeyDeleteAction=cascade, 
JoinForeignKeyDeleteAction=cascade" />
-        </properties>
-    </persistence-unit>
-    <persistence-unit name="experiment_data_new">
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentErrorEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentInputEntity</class>
-        
<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.ExperimentSummaryEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.GatewayEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.GatewayWorkerEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.GatewayUsageReportingCommandEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.JobEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.JobStatusEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.NotificationEntity</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.ProcessResourceScheduleEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.ProcessStatusEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.ProcessWorkflowEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.ProjectEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.ProjectUserEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.QueueStatusEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.TaskEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.TaskErrorEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.TaskStatusEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.UserConfigurationDataEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.ComputationalResourceSchedulingEntity</class>
-        
<class>org.apache.airavata.registry.core.entities.expcatalog.UserEntity</class>
-        <exclude-unlisted-classes>true</exclude-unlisted-classes>
-        <properties>
-            <property name="openjpa.jdbc.MappingDefaults"
-                      value="ForeignKeyDeleteAction=cascade, 
JoinForeignKeyDeleteAction=cascade" />
-        </properties>
-    </persistence-unit>
-    
-    <persistence-unit name="airavata-sharing-registry">
-        
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
-        
<class>org.apache.airavata.sharing.registry.db.entities.DomainEntity</class>
-        
<class>org.apache.airavata.sharing.registry.db.entities.EntityEntity</class>
-        
<class>org.apache.airavata.sharing.registry.db.entities.EntityTypeEntity</class>
-        
<class>org.apache.airavata.sharing.registry.db.entities.GroupMembershipEntity</class>
-        
<class>org.apache.airavata.sharing.registry.db.entities.PermissionTypeEntity</class>
-        
<class>org.apache.airavata.sharing.registry.db.entities.SharingEntity</class>
-        
<class>org.apache.airavata.sharing.registry.db.entities.UserEntity</class>
-        
<class>org.apache.airavata.sharing.registry.db.entities.GroupAdminEntity</class>
-        
<class>org.apache.airavata.sharing.registry.db.entities.UserGroupEntity</class>
-        <properties>
-            <property name="openjpa.jdbc.MappingDefaults"
-                      value="ForeignKeyDeleteAction=cascade, 
JoinForeignKeyDeleteAction=cascade" />
-        </properties>
-    </persistence-unit>
-</persistence>
+  <persistence-unit name="profile_service">
+    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+    
<class>org.apache.airavata.service.profile.commons.user.entities.UserProfileEntity</class>
+    
<class>org.apache.airavata.service.profile.commons.user.entities.NSFDemographicsEntity</class>
+    
<class>org.apache.airavata.service.profile.commons.user.entities.CustomizedDashboardEntity</class>
+    
<class>org.apache.airavata.service.profile.commons.tenant.entities.GatewayEntity</class>
+    <exclude-unlisted-classes>true</exclude-unlisted-classes>
+    <properties>
+      <property name="openjpa.jdbc.MappingDefaults"
+        value="ForeignKeyDeleteAction=cascade, 
JoinForeignKeyDeleteAction=cascade" />
+    </properties>
+  </persistence-unit>
+  <persistence-unit name="appcatalog_data_new">
+    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.GridftpDataMovementEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ResourceJobManagerEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ComputeResourceEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ApplicationModuleEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ApplicationDeploymentEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ApplicationInterfaceEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.GatewayGroupsEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.GatewayProfileEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.StorageResourceEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ScpDataMovementEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.SshJobSubmissionEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.GlobusSubmissionEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.GsisshSubmissionEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.GridftpEndpointEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ComputeResourcePreferenceEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.JobSubmissionInterfaceEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.DataMovementInterfaceEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.StorageInterfaceEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.LocalSubmissionEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.GlobusGkEndpointEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.UnicoreDatamovementEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.UnicoreSubmissionEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.GsisshPostjobcommandEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.GsisshPrejobcommandEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.GsisshExportEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.LibraryApendPathEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.LibraryPrependPathEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.AppEnvironmentEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.PrejobCommandEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.PostjobCommandEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.AppModuleMappingEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ApplicationInputEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ApplicationOutputEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.BatchQueueEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ComputeResourceFileSystemEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.CloudJobSubmissionEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.JobManagerCommandEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ParallelismCommandEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.LocalDataMovementEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.StoragePreferenceEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.SSHAccountProvisionerConfiguration</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.BatchQueueResourcePolicyEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ComputeResourcePolicyEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.GroupComputeResourcePrefEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.GroupSSHAccountProvisionerConfig</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.GroupResourceProfileEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ModuleLoadCmdEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.UserResourceProfileEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.UserComputeResourcePreferenceEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.UserStoragePreferenceEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ParserEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ParserInputEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ParserOutputEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ParsingTemplateEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ParsingTemplateInputEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ParserConnectorInputEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ParserConnectorEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.appcatalog.ComputeResourceReservationEntity</class>
+    <exclude-unlisted-classes>true</exclude-unlisted-classes>
+    <properties>
+      <property name="openjpa.jdbc.MappingDefaults"
+        value="ForeignKeyDeleteAction=cascade, 
JoinForeignKeyDeleteAction=cascade" />
+    </properties>
+  </persistence-unit>
+  <persistence-unit name="replicacatalog_data_new">
+    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+    
<class>org.apache.airavata.registry.core.entities.replicacatalog.ConfigurationEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.replicacatalog.DataProductEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.replicacatalog.DataProductMetadataEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.replicacatalog.DataReplicaLocationEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.replicacatalog.DataReplicaMetadataEntity</class>
+    <exclude-unlisted-classes>true</exclude-unlisted-classes>
+    <properties>
+      <property name="openjpa.jdbc.MappingDefaults"
+        value="ForeignKeyDeleteAction=cascade, 
JoinForeignKeyDeleteAction=cascade" />
+    </properties>
+  </persistence-unit>
+  <persistence-unit name="workflowcatalog_data_new">
+    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+    
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.AiravataWorkflowEntity</class>
+    <class>
+      
org.apache.airavata.registry.core.entities.airavataworkflowcatalog.AiravataWorkflowErrorEntity</class>
+    <class>
+      
org.apache.airavata.registry.core.entities.airavataworkflowcatalog.AiravataWorkflowStatusEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.ApplicationErrorEntity</class>
+    <class>
+      
org.apache.airavata.registry.core.entities.airavataworkflowcatalog.ApplicationStatusEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.HandlerErrorEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.HandlerInputEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.HandlerOutputEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.HandlerStatusEntity</class>
+    <class>
+      
org.apache.airavata.registry.core.entities.airavataworkflowcatalog.WorkflowApplicationEntity</class>
+    <class>
+      
org.apache.airavata.registry.core.entities.airavataworkflowcatalog.WorkflowConnectionEntity</class>
+    <class>
+      
org.apache.airavata.registry.core.entities.airavataworkflowcatalog.WorkflowDataBlockEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.WorkflowHandlerEntity</class>
+    <exclude-unlisted-classes>true</exclude-unlisted-classes>
+    <properties>
+      <property name="openjpa.jdbc.MappingDefaults"
+        value="ForeignKeyDeleteAction=cascade, 
JoinForeignKeyDeleteAction=cascade" />
+    </properties>
+  </persistence-unit>
+  <persistence-unit name="experiment_data_new">
+    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentErrorEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentInputEntity</class>
+    
<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.ExperimentSummaryEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.GatewayEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.GatewayWorkerEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.GatewayUsageReportingCommandEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.JobEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.JobStatusEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.NotificationEntity</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.ProcessResourceScheduleEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.ProcessStatusEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.ProcessWorkflowEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.ProjectEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.ProjectUserEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.QueueStatusEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.TaskEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.TaskErrorEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.TaskStatusEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.UserConfigurationDataEntity</class>
+    <class>
+      
org.apache.airavata.registry.core.entities.expcatalog.ComputationalResourceSchedulingEntity</class>
+    
<class>org.apache.airavata.registry.core.entities.expcatalog.UserEntity</class>
+    <exclude-unlisted-classes>true</exclude-unlisted-classes>
+    <properties>
+      <property name="openjpa.jdbc.MappingDefaults"
+        value="ForeignKeyDeleteAction=cascade, 
JoinForeignKeyDeleteAction=cascade" />
+    </properties>
+  </persistence-unit>
+  <persistence-unit name="airavata-sharing-registry">
+    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+    
<class>org.apache.airavata.sharing.registry.db.entities.DomainEntity</class>
+    
<class>org.apache.airavata.sharing.registry.db.entities.EntityEntity</class>
+    
<class>org.apache.airavata.sharing.registry.db.entities.EntityTypeEntity</class>
+    
<class>org.apache.airavata.sharing.registry.db.entities.GroupMembershipEntity</class>
+    
<class>org.apache.airavata.sharing.registry.db.entities.PermissionTypeEntity</class>
+    
<class>org.apache.airavata.sharing.registry.db.entities.SharingEntity</class>
+    <class>org.apache.airavata.sharing.registry.db.entities.UserEntity</class>
+    
<class>org.apache.airavata.sharing.registry.db.entities.GroupAdminEntity</class>
+    
<class>org.apache.airavata.sharing.registry.db.entities.UserGroupEntity</class>
+    <exclude-unlisted-classes>true</exclude-unlisted-classes>
+    <properties>
+      <property name="openjpa.jdbc.MappingDefaults"
+        value="ForeignKeyDeleteAction=cascade, 
JoinForeignKeyDeleteAction=cascade" />
+    </properties>
+  </persistence-unit>
+</persistence>
\ No newline at end of file
diff --git a/airavata-api/src/main/resources/log4j2.xml 
b/airavata-api/src/main/resources/log4j2.xml
index e38f7ff011..2af1a20101 100644
--- a/airavata-api/src/main/resources/log4j2.xml
+++ b/airavata-api/src/main/resources/log4j2.xml
@@ -21,33 +21,32 @@
 
 -->
 <Configuration status="WARN">
-
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d [%t] %-5p %c{30} %X - %m%n"/>
-        </Console>
-        <RollingFile name="RollingFileAppender" fileName="../logs/airavata.log"
-                     
filePattern="logs/${date:yyyy-MM}/airavata-log-%d{MM-dd-yyyy}-%i.log.gz">
-            <PatternLayout>
-                <Pattern>%d [%t] %-5p %c{30} %X - %m%n</Pattern>
-            </PatternLayout>
-            <Policies>
-                <OnStartupTriggeringPolicy />
-                <TimeBasedTriggeringPolicy />
-                <SizeBasedTriggeringPolicy size="50 MB" />
-            </Policies>
-            <DefaultRolloverStrategy max="20" />
-        </RollingFile>
-    </Appenders>
-    <Loggers>
-        <logger name="ch.qos.logback" level="WARN"/>
-        <logger name="org.apache.helix" level="WARN"/>
-        <logger name="org.apache.zookeeper" level="ERROR"/>
-        <logger name="org.apache.airavata" level="INFO"/>
-        <logger name="org.hibernate" level="ERROR"/>
-        <Root level="INFO">
-            <AppenderRef ref="Console"/>
-            <AppenderRef ref="RollingFileAppender"/>
-        </Root>
-    </Loggers>
+  <Appenders>
+    <Console name="Console" target="SYSTEM_OUT">
+      <PatternLayout pattern="%d [%t] %-5p %c{30} %X - %m%n" />
+    </Console>
+    <RollingFile name="RollingFileAppender" fileName="../logs/airavata-api.log"
+      filePattern="../logs/airavata-api-%d{MM-dd-yyyy}-%i.log.gz">
+      <PatternLayout>
+        <Pattern>%d [%t] %-5p %c{30} %X - %m%n</Pattern>
+      </PatternLayout>
+      <Policies>
+        <OnStartupTriggeringPolicy />
+        <TimeBasedTriggeringPolicy />
+        <SizeBasedTriggeringPolicy size="50 MB" />
+      </Policies>
+      <DefaultRolloverStrategy max="20" />
+    </RollingFile>
+  </Appenders>
+  <Loggers>
+    <logger name="ch.qos.logback" level="WARN" />
+    <logger name="org.apache.helix" level="WARN" />
+    <logger name="org.apache.zookeeper" level="ERROR" />
+    <logger name="org.apache.airavata" level="INFO" />
+    <logger name="org.hibernate" level="ERROR" />
+    <Root level="INFO">
+      <AppenderRef ref="Console" />
+      <AppenderRef ref="RollingFileAppender" />
+    </Root>
+  </Loggers>
 </Configuration>
\ No newline at end of file
diff --git a/airavata-api/src/test/resources/log4j2.xml 
b/airavata-api/src/test/resources/log4j2.xml
index e38f7ff011..2af1a20101 100644
--- a/airavata-api/src/test/resources/log4j2.xml
+++ b/airavata-api/src/test/resources/log4j2.xml
@@ -21,33 +21,32 @@
 
 -->
 <Configuration status="WARN">
-
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d [%t] %-5p %c{30} %X - %m%n"/>
-        </Console>
-        <RollingFile name="RollingFileAppender" fileName="../logs/airavata.log"
-                     
filePattern="logs/${date:yyyy-MM}/airavata-log-%d{MM-dd-yyyy}-%i.log.gz">
-            <PatternLayout>
-                <Pattern>%d [%t] %-5p %c{30} %X - %m%n</Pattern>
-            </PatternLayout>
-            <Policies>
-                <OnStartupTriggeringPolicy />
-                <TimeBasedTriggeringPolicy />
-                <SizeBasedTriggeringPolicy size="50 MB" />
-            </Policies>
-            <DefaultRolloverStrategy max="20" />
-        </RollingFile>
-    </Appenders>
-    <Loggers>
-        <logger name="ch.qos.logback" level="WARN"/>
-        <logger name="org.apache.helix" level="WARN"/>
-        <logger name="org.apache.zookeeper" level="ERROR"/>
-        <logger name="org.apache.airavata" level="INFO"/>
-        <logger name="org.hibernate" level="ERROR"/>
-        <Root level="INFO">
-            <AppenderRef ref="Console"/>
-            <AppenderRef ref="RollingFileAppender"/>
-        </Root>
-    </Loggers>
+  <Appenders>
+    <Console name="Console" target="SYSTEM_OUT">
+      <PatternLayout pattern="%d [%t] %-5p %c{30} %X - %m%n" />
+    </Console>
+    <RollingFile name="RollingFileAppender" fileName="../logs/airavata-api.log"
+      filePattern="../logs/airavata-api-%d{MM-dd-yyyy}-%i.log.gz">
+      <PatternLayout>
+        <Pattern>%d [%t] %-5p %c{30} %X - %m%n</Pattern>
+      </PatternLayout>
+      <Policies>
+        <OnStartupTriggeringPolicy />
+        <TimeBasedTriggeringPolicy />
+        <SizeBasedTriggeringPolicy size="50 MB" />
+      </Policies>
+      <DefaultRolloverStrategy max="20" />
+    </RollingFile>
+  </Appenders>
+  <Loggers>
+    <logger name="ch.qos.logback" level="WARN" />
+    <logger name="org.apache.helix" level="WARN" />
+    <logger name="org.apache.zookeeper" level="ERROR" />
+    <logger name="org.apache.airavata" level="INFO" />
+    <logger name="org.hibernate" level="ERROR" />
+    <Root level="INFO">
+      <AppenderRef ref="Console" />
+      <AppenderRef ref="RollingFileAppender" />
+    </Root>
+  </Loggers>
 </Configuration>
\ No newline at end of file
diff --git a/dev-tools/deployment-scripts/README.md 
b/dev-tools/deployment-scripts/README.md
new file mode 100644
index 0000000000..620a129409
--- /dev/null
+++ b/dev-tools/deployment-scripts/README.md
@@ -0,0 +1,40 @@
+## Purpose of Vault Keys
+
+* `airavata_sym.jks` - symmetric key used to encrypt all secrets in the 
credential store.
+* `airavata.jks` - 
+* `client_truststore.jks` - TLS certificate used to validate incoming https 
connections. generated from certbot fullchain.pem.
+
+## Run on Build Server
+
+```bash
+
+# build from source
+mvn clean install -DskipTests
+
+# define hostname and basepath
[email protected]
+BASEPATH="~/airavata-deployment/airavata-services-v2"
+
+# copy the shell scripts
+scp dev-tools/deployment-scripts/*.sh $HOSTNAME:$BASEPATH/
+
+# copy the vault
+scp dev-tools/deployment-scripts/vault/* $HOSTNAME:$BASEPATH/vault/
+
+scp -r distribution $HOSTNAME:$BASEPATH/
+
+```
+
+## Run on Deployment Server
+```bash
+
+BASEPATH=$HOME/airavata-deployment/airavata-services-v2
+cd $BASEPATH
+
+./services_down.sh
+./distribution_update.sh
+./services_up.sh
+
+multitail apache-airavata-*/logs/*.log
+
+```
\ No newline at end of file
diff --git a/dev-tools/deployment-scripts/distribution_update.sh 
b/dev-tools/deployment-scripts/distribution_update.sh
index 06b9775496..74141eaf1e 100644
--- a/dev-tools/deployment-scripts/distribution_update.sh
+++ b/dev-tools/deployment-scripts/distribution_update.sh
@@ -26,7 +26,10 @@ log "Research Service updated."
 # Update the config files
 # ================================
 cp vault/airavata-server.properties 
./apache-airavata-api-server-0.21-SNAPSHOT/conf/airavata-server.properties
-cp vault/airavata.jks 
./apache-airavata-api-server-0.21-SNAPSHOT/conf/airavata.jks
+cp vault/airavata.jks 
./apache-airavata-api-server-0.21-SNAPSHOT/conf/keystores/airavata.jks
+cp vault/airavata_sym.jks 
./apache-airavata-api-server-0.21-SNAPSHOT/conf/keystores/airavata_sym.jks
+cp vault/client_truststore.jks 
./apache-airavata-api-server-0.21-SNAPSHOT/conf/keystores/client_truststore.jks
+cp vault/email-config.yaml 
./apache-airavata-api-server-0.21-SNAPSHOT/conf/email-config.yaml
 cp vault/log4j2.xml ./apache-airavata-api-server-0.21-SNAPSHOT/conf/log4j2.xml
 log "API Server config files updated."
 
diff --git a/dev-tools/deployment-scripts/services_up.sh 
b/dev-tools/deployment-scripts/services_up.sh
index 8a639ba958..59455d0ed7 100644
--- a/dev-tools/deployment-scripts/services_up.sh
+++ b/dev-tools/deployment-scripts/services_up.sh
@@ -2,6 +2,7 @@
 
 log() {
   echo "$(date '+%Y-%m-%d %H:%M:%S') - $1"
+  sleep 1
 }
 
 # ================================
@@ -14,14 +15,14 @@ log "Orchestrator started."
 log "Controller started."
 ./apache-airavata-api-server-0.21-SNAPSHOT/bin/participant.sh -d start
 log "Participant started."
-./apache-airavata-api-server-0.21-SNAPSHOT/bin/pre-wm.sh -d start
-log "Pre-Workflow Manager started."
-./apache-airavata-api-server-0.21-SNAPSHOT/bin/post-wm.sh -d start
-log "Post-Workflow Manager started."
 ./apache-airavata-api-server-0.21-SNAPSHOT/bin/email-monitor.sh -d start
 log "Email Monitor started."
 ./apache-airavata-api-server-0.21-SNAPSHOT/bin/realtime-monitor.sh -d start
 log "Realtime Monitor started."
+./apache-airavata-api-server-0.21-SNAPSHOT/bin/pre-wm.sh -d start
+log "Pre-Workflow Manager started."
+./apache-airavata-api-server-0.21-SNAPSHOT/bin/post-wm.sh -d start
+log "Post-Workflow Manager started."
 
 # ================================
 # Start the Agent Service
diff --git 
a/dev-tools/load-client/src/main/assembly/load-client-bin-assembly.xml 
b/dev-tools/load-client/src/main/assembly/load-client-bin-assembly.xml
index dcfa4bf2b7..6b2ef1d242 100644
--- a/dev-tools/load-client/src/main/assembly/load-client-bin-assembly.xml
+++ b/dev-tools/load-client/src/main/assembly/load-client-bin-assembly.xml
@@ -34,8 +34,7 @@
       <outputDirectory>bin</outputDirectory>
       <fileMode>777</fileMode>
       <includes>
-        <include>load-client.sh</include>
-        <include>setenv.sh</include>
+        <include>*.sh</include>
       </includes>
     </fileSet>
     <fileSet>
diff --git a/dev-tools/load-client/src/main/resources/bin/setenv.sh 
b/dev-tools/load-client/src/main/resources/bin/setenv.sh
index 59cc88d4d2..0454b967dd 100644
--- a/dev-tools/load-client/src/main/resources/bin/setenv.sh
+++ b/dev-tools/load-client/src/main/resources/bin/setenv.sh
@@ -37,6 +37,8 @@ export AIRAVATA_HOME CLASSPATH
 # Usage: run_service <service_name> <main_class> <java_opts>
 run_service() {
   local SERVICE_NAME="$1" MAIN_CLASS="$2" JAVA_OPTS="$3"
+  # Export SERVICE_NAME as environment variable for log4j2 configuration
+  export SERVICE_NAME
   local CWD="$PWD" PID_PATH_NAME="${AIRAVATA_HOME}/bin/pid-${SERVICE_NAME}"
   local DEFAULT_LOG_FILE="${AIRAVATA_HOME}/logs/${SERVICE_NAME}.log"
   local LOG_FILE="$DEFAULT_LOG_FILE" DAEMON_MODE=false EXTRA_ARGS=""
diff --git a/modules/agent-framework/agent-service/pom.xml 
b/modules/agent-framework/agent-service/pom.xml
index 76a26f3cd4..65820af1f2 100644
--- a/modules/agent-framework/agent-service/pom.xml
+++ b/modules/agent-framework/agent-service/pom.xml
@@ -58,6 +58,16 @@ under the License.
     <dependency>
       <groupId>org.mariadb.jdbc</groupId>
       <artifactId>mariadb-java-client</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-classic</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-core</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.springframework.boot</groupId>
@@ -95,26 +105,84 @@ under the License.
         </exclusion>
       </exclusions>
     </dependency>
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-log4j2</artifactId>
+    </dependency>
     <dependency>
       <groupId>io.grpc</groupId>
       <artifactId>grpc-stub</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-classic</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-core</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>io.grpc</groupId>
       <artifactId>grpc-protobuf</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-classic</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-core</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>com.google.protobuf</groupId>
       <artifactId>protobuf-java</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-classic</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-core</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>net.devh</groupId>
       <artifactId>grpc-server-spring-boot-starter</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-classic</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-core</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.apache.airavata</groupId>
       <artifactId>airavata-api</artifactId>
       <version>${project.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-classic</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-core</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-log4j12</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
   </dependencies>
 
@@ -181,6 +249,15 @@ under the License.
           <release>17</release>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <systemPropertyVariables>
+            
<log4j2.configurationFile>src/main/resources/log4j2.xml</log4j2.configurationFile>
+          </systemPropertyVariables>
+        </configuration>
+      </plugin>
     </plugins>
     <resources>
       <resource>
diff --git 
a/modules/agent-framework/agent-service/src/main/resources/distribution/bin/setenv.sh
 
b/modules/agent-framework/agent-service/src/main/resources/distribution/bin/setenv.sh
index 59cc88d4d2..0454b967dd 100755
--- 
a/modules/agent-framework/agent-service/src/main/resources/distribution/bin/setenv.sh
+++ 
b/modules/agent-framework/agent-service/src/main/resources/distribution/bin/setenv.sh
@@ -37,6 +37,8 @@ export AIRAVATA_HOME CLASSPATH
 # Usage: run_service <service_name> <main_class> <java_opts>
 run_service() {
   local SERVICE_NAME="$1" MAIN_CLASS="$2" JAVA_OPTS="$3"
+  # Export SERVICE_NAME as environment variable for log4j2 configuration
+  export SERVICE_NAME
   local CWD="$PWD" PID_PATH_NAME="${AIRAVATA_HOME}/bin/pid-${SERVICE_NAME}"
   local DEFAULT_LOG_FILE="${AIRAVATA_HOME}/logs/${SERVICE_NAME}.log"
   local LOG_FILE="$DEFAULT_LOG_FILE" DAEMON_MODE=false EXTRA_ARGS=""
diff --git 
a/modules/agent-framework/agent-service/src/main/resources/distribution/conf/log4j2.xml
 
b/modules/agent-framework/agent-service/src/main/resources/distribution/conf/log4j2.xml
index e38f7ff011..5ab1800e7d 100644
--- 
a/modules/agent-framework/agent-service/src/main/resources/distribution/conf/log4j2.xml
+++ 
b/modules/agent-framework/agent-service/src/main/resources/distribution/conf/log4j2.xml
@@ -21,33 +21,32 @@
 
 -->
 <Configuration status="WARN">
-
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d [%t] %-5p %c{30} %X - %m%n"/>
-        </Console>
-        <RollingFile name="RollingFileAppender" fileName="../logs/airavata.log"
-                     
filePattern="logs/${date:yyyy-MM}/airavata-log-%d{MM-dd-yyyy}-%i.log.gz">
-            <PatternLayout>
-                <Pattern>%d [%t] %-5p %c{30} %X - %m%n</Pattern>
-            </PatternLayout>
-            <Policies>
-                <OnStartupTriggeringPolicy />
-                <TimeBasedTriggeringPolicy />
-                <SizeBasedTriggeringPolicy size="50 MB" />
-            </Policies>
-            <DefaultRolloverStrategy max="20" />
-        </RollingFile>
-    </Appenders>
-    <Loggers>
-        <logger name="ch.qos.logback" level="WARN"/>
-        <logger name="org.apache.helix" level="WARN"/>
-        <logger name="org.apache.zookeeper" level="ERROR"/>
-        <logger name="org.apache.airavata" level="INFO"/>
-        <logger name="org.hibernate" level="ERROR"/>
-        <Root level="INFO">
-            <AppenderRef ref="Console"/>
-            <AppenderRef ref="RollingFileAppender"/>
-        </Root>
-    </Loggers>
+  <Appenders>
+    <Console name="Console" target="SYSTEM_OUT">
+      <PatternLayout pattern="%d [%t] %-5p %c{30} %X - %m%n" />
+    </Console>
+    <RollingFile name="RollingFileAppender" 
fileName="../logs/agent-service.log"
+      filePattern="../logs/agent-service-%d{MM-dd-yyyy}-%i.log.gz">
+      <PatternLayout>
+        <Pattern>%d [%t] %-5p %c{30} %X - %m%n</Pattern>
+      </PatternLayout>
+      <Policies>
+        <OnStartupTriggeringPolicy />
+        <TimeBasedTriggeringPolicy />
+        <SizeBasedTriggeringPolicy size="50 MB" />
+      </Policies>
+      <DefaultRolloverStrategy max="20" />
+    </RollingFile>
+  </Appenders>
+  <Loggers>
+    <logger name="ch.qos.logback" level="WARN" />
+    <logger name="org.apache.helix" level="WARN" />
+    <logger name="org.apache.zookeeper" level="ERROR" />
+    <logger name="org.apache.airavata" level="INFO" />
+    <logger name="org.hibernate" level="ERROR" />
+    <Root level="INFO">
+      <AppenderRef ref="Console" />
+      <AppenderRef ref="RollingFileAppender" />
+    </Root>
+  </Loggers>
 </Configuration>
\ No newline at end of file
diff --git 
a/modules/agent-framework/agent-service/src/main/resources/log4j2.xml 
b/modules/agent-framework/agent-service/src/main/resources/log4j2.xml
new file mode 100644
index 0000000000..d2857a4545
--- /dev/null
+++ b/modules/agent-framework/agent-service/src/main/resources/log4j2.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+
+    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.
+
+-->
+<Configuration status="WARN">
+  <Appenders>
+    <Console name="Console" target="SYSTEM_OUT">
+      <PatternLayout pattern="%d [%t] %-5p %c{30} %X - %m%n" />
+    </Console>
+    <RollingFile name="RollingFileAppender" 
fileName="../logs/agent-service.log"
+      filePattern="../logs/agent-service-%d{MM-dd-yyyy}-%i.log.gz">
+      <PatternLayout>
+        <Pattern>%d [%t] %-5p %c{30} %X - %m%n</Pattern>
+      </PatternLayout>
+      <Policies>
+        <OnStartupTriggeringPolicy />
+        <TimeBasedTriggeringPolicy />
+        <SizeBasedTriggeringPolicy size="50 MB" />
+      </Policies>
+      <DefaultRolloverStrategy max="20" />
+    </RollingFile>
+  </Appenders>
+  <Loggers>
+    <logger name="ch.qos.logback" level="WARN" />
+    <logger name="org.apache.helix" level="WARN" />
+    <logger name="org.apache.zookeeper" level="ERROR" />
+    <logger name="org.apache.airavata" level="INFO" />
+    <logger name="org.hibernate" level="ERROR" />
+    <Root level="INFO">
+      <AppenderRef ref="Console" />
+      <AppenderRef ref="RollingFileAppender" />
+    </Root>
+  </Loggers>
+</Configuration> 
\ No newline at end of file
diff --git a/modules/distribution/src/main/resources/distribution/bin/setenv.sh 
b/modules/distribution/src/main/resources/distribution/bin/setenv.sh
index 59cc88d4d2..0454b967dd 100755
--- a/modules/distribution/src/main/resources/distribution/bin/setenv.sh
+++ b/modules/distribution/src/main/resources/distribution/bin/setenv.sh
@@ -37,6 +37,8 @@ export AIRAVATA_HOME CLASSPATH
 # Usage: run_service <service_name> <main_class> <java_opts>
 run_service() {
   local SERVICE_NAME="$1" MAIN_CLASS="$2" JAVA_OPTS="$3"
+  # Export SERVICE_NAME as environment variable for log4j2 configuration
+  export SERVICE_NAME
   local CWD="$PWD" PID_PATH_NAME="${AIRAVATA_HOME}/bin/pid-${SERVICE_NAME}"
   local DEFAULT_LOG_FILE="${AIRAVATA_HOME}/logs/${SERVICE_NAME}.log"
   local LOG_FILE="$DEFAULT_LOG_FILE" DAEMON_MODE=false EXTRA_ARGS=""
diff --git 
a/modules/distribution/src/main/resources/distribution/conf/log4j2.xml 
b/modules/distribution/src/main/resources/distribution/conf/log4j2.xml
index e38f7ff011..2af1a20101 100644
--- a/modules/distribution/src/main/resources/distribution/conf/log4j2.xml
+++ b/modules/distribution/src/main/resources/distribution/conf/log4j2.xml
@@ -21,33 +21,32 @@
 
 -->
 <Configuration status="WARN">
-
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d [%t] %-5p %c{30} %X - %m%n"/>
-        </Console>
-        <RollingFile name="RollingFileAppender" fileName="../logs/airavata.log"
-                     
filePattern="logs/${date:yyyy-MM}/airavata-log-%d{MM-dd-yyyy}-%i.log.gz">
-            <PatternLayout>
-                <Pattern>%d [%t] %-5p %c{30} %X - %m%n</Pattern>
-            </PatternLayout>
-            <Policies>
-                <OnStartupTriggeringPolicy />
-                <TimeBasedTriggeringPolicy />
-                <SizeBasedTriggeringPolicy size="50 MB" />
-            </Policies>
-            <DefaultRolloverStrategy max="20" />
-        </RollingFile>
-    </Appenders>
-    <Loggers>
-        <logger name="ch.qos.logback" level="WARN"/>
-        <logger name="org.apache.helix" level="WARN"/>
-        <logger name="org.apache.zookeeper" level="ERROR"/>
-        <logger name="org.apache.airavata" level="INFO"/>
-        <logger name="org.hibernate" level="ERROR"/>
-        <Root level="INFO">
-            <AppenderRef ref="Console"/>
-            <AppenderRef ref="RollingFileAppender"/>
-        </Root>
-    </Loggers>
+  <Appenders>
+    <Console name="Console" target="SYSTEM_OUT">
+      <PatternLayout pattern="%d [%t] %-5p %c{30} %X - %m%n" />
+    </Console>
+    <RollingFile name="RollingFileAppender" fileName="../logs/airavata-api.log"
+      filePattern="../logs/airavata-api-%d{MM-dd-yyyy}-%i.log.gz">
+      <PatternLayout>
+        <Pattern>%d [%t] %-5p %c{30} %X - %m%n</Pattern>
+      </PatternLayout>
+      <Policies>
+        <OnStartupTriggeringPolicy />
+        <TimeBasedTriggeringPolicy />
+        <SizeBasedTriggeringPolicy size="50 MB" />
+      </Policies>
+      <DefaultRolloverStrategy max="20" />
+    </RollingFile>
+  </Appenders>
+  <Loggers>
+    <logger name="ch.qos.logback" level="WARN" />
+    <logger name="org.apache.helix" level="WARN" />
+    <logger name="org.apache.zookeeper" level="ERROR" />
+    <logger name="org.apache.airavata" level="INFO" />
+    <logger name="org.hibernate" level="ERROR" />
+    <Root level="INFO">
+      <AppenderRef ref="Console" />
+      <AppenderRef ref="RollingFileAppender" />
+    </Root>
+  </Loggers>
 </Configuration>
\ No newline at end of file
diff --git a/modules/file-server/src/main/resources/distribution/bin/setenv.sh 
b/modules/file-server/src/main/resources/distribution/bin/setenv.sh
index 59cc88d4d2..0454b967dd 100644
--- a/modules/file-server/src/main/resources/distribution/bin/setenv.sh
+++ b/modules/file-server/src/main/resources/distribution/bin/setenv.sh
@@ -37,6 +37,8 @@ export AIRAVATA_HOME CLASSPATH
 # Usage: run_service <service_name> <main_class> <java_opts>
 run_service() {
   local SERVICE_NAME="$1" MAIN_CLASS="$2" JAVA_OPTS="$3"
+  # Export SERVICE_NAME as environment variable for log4j2 configuration
+  export SERVICE_NAME
   local CWD="$PWD" PID_PATH_NAME="${AIRAVATA_HOME}/bin/pid-${SERVICE_NAME}"
   local DEFAULT_LOG_FILE="${AIRAVATA_HOME}/logs/${SERVICE_NAME}.log"
   local LOG_FILE="$DEFAULT_LOG_FILE" DAEMON_MODE=false EXTRA_ARGS=""
diff --git 
a/modules/file-server/src/main/resources/distribution/conf/log4j2.xml 
b/modules/file-server/src/main/resources/distribution/conf/log4j2.xml
index e38f7ff011..29b7e7258e 100644
--- a/modules/file-server/src/main/resources/distribution/conf/log4j2.xml
+++ b/modules/file-server/src/main/resources/distribution/conf/log4j2.xml
@@ -21,33 +21,32 @@
 
 -->
 <Configuration status="WARN">
-
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d [%t] %-5p %c{30} %X - %m%n"/>
-        </Console>
-        <RollingFile name="RollingFileAppender" fileName="../logs/airavata.log"
-                     
filePattern="logs/${date:yyyy-MM}/airavata-log-%d{MM-dd-yyyy}-%i.log.gz">
-            <PatternLayout>
-                <Pattern>%d [%t] %-5p %c{30} %X - %m%n</Pattern>
-            </PatternLayout>
-            <Policies>
-                <OnStartupTriggeringPolicy />
-                <TimeBasedTriggeringPolicy />
-                <SizeBasedTriggeringPolicy size="50 MB" />
-            </Policies>
-            <DefaultRolloverStrategy max="20" />
-        </RollingFile>
-    </Appenders>
-    <Loggers>
-        <logger name="ch.qos.logback" level="WARN"/>
-        <logger name="org.apache.helix" level="WARN"/>
-        <logger name="org.apache.zookeeper" level="ERROR"/>
-        <logger name="org.apache.airavata" level="INFO"/>
-        <logger name="org.hibernate" level="ERROR"/>
-        <Root level="INFO">
-            <AppenderRef ref="Console"/>
-            <AppenderRef ref="RollingFileAppender"/>
-        </Root>
-    </Loggers>
+  <Appenders>
+    <Console name="Console" target="SYSTEM_OUT">
+      <PatternLayout pattern="%d [%t] %-5p %c{30} %X - %m%n" />
+    </Console>
+    <RollingFile name="RollingFileAppender" fileName="../logs/file-server.log"
+      filePattern="../logs/file-server-%d{MM-dd-yyyy}-%i.log.gz">
+      <PatternLayout>
+        <Pattern>%d [%t] %-5p %c{30} %X - %m%n</Pattern>
+      </PatternLayout>
+      <Policies>
+        <OnStartupTriggeringPolicy />
+        <TimeBasedTriggeringPolicy />
+        <SizeBasedTriggeringPolicy size="50 MB" />
+      </Policies>
+      <DefaultRolloverStrategy max="20" />
+    </RollingFile>
+  </Appenders>
+  <Loggers>
+    <logger name="ch.qos.logback" level="WARN" />
+    <logger name="org.apache.helix" level="WARN" />
+    <logger name="org.apache.zookeeper" level="ERROR" />
+    <logger name="org.apache.airavata" level="INFO" />
+    <logger name="org.hibernate" level="ERROR" />
+    <Root level="INFO">
+      <AppenderRef ref="Console" />
+      <AppenderRef ref="RollingFileAppender" />
+    </Root>
+  </Loggers>
 </Configuration>
\ No newline at end of file
diff --git a/modules/ide-integration/src/main/resources/log4j2.xml 
b/modules/ide-integration/src/main/resources/log4j2.xml
index a06ff13d8a..f817dc3655 100644
--- a/modules/ide-integration/src/main/resources/log4j2.xml
+++ b/modules/ide-integration/src/main/resources/log4j2.xml
@@ -21,35 +21,34 @@
 
 -->
 <Configuration status="WARN">
-
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d [%t] %-5p %c{30} %X - %m%n"/>
-        </Console>
-        <RollingFile name="RollingFileAppender" fileName="logs/airavata.log"
-                     
filePattern="logs/${date:yyyy-MM}/airavata-log-%d{MM-dd-yyyy}-%i.log.gz">
-            <PatternLayout>
-                <Pattern>%d [%t] %-5p %c{30} %X - %m%n</Pattern>
-            </PatternLayout>
-            <Policies>
-                <OnStartupTriggeringPolicy />
-                <TimeBasedTriggeringPolicy />
-                <SizeBasedTriggeringPolicy size="50 MB" />
-            </Policies>
-            <DefaultRolloverStrategy max="20" />
-        </RollingFile>
-    </Appenders>
-    <Loggers>
-        <logger name="ch.qos.logback" level="WARN"/>
-        <logger name="org.apache.helix" level="WARN"/>
-        <logger name="org.apache.zookeeper" level="ERROR"/>
-        <logger name="org.apache.airavata" level="INFO"/>
-        <logger name="org.hibernate" level="ERROR"/>
-        <logger name="org.apache.openjpa" level="DEBUG"/>
-        <logger name="org.apache.openjpa.enhance" level="DEBUG"/>
-        <Root level="INFO">
-            <AppenderRef ref="Console"/>
-            <AppenderRef ref="RollingFileAppender"/>
-        </Root>
-    </Loggers>
+  <Appenders>
+    <Console name="Console" target="SYSTEM_OUT">
+      <PatternLayout pattern="%d [%t] %-5p %c{30} %X - %m%n" />
+    </Console>
+    <RollingFile name="RollingFileAppender" 
fileName="../logs/ide-integration.log"
+      filePattern="../logs/ide-integration-%d{MM-dd-yyyy}-%i.log.gz">
+      <PatternLayout>
+        <Pattern>%d [%t] %-5p %c{30} %X - %m%n</Pattern>
+      </PatternLayout>
+      <Policies>
+        <OnStartupTriggeringPolicy />
+        <TimeBasedTriggeringPolicy />
+        <SizeBasedTriggeringPolicy size="50 MB" />
+      </Policies>
+      <DefaultRolloverStrategy max="20" />
+    </RollingFile>
+  </Appenders>
+  <Loggers>
+    <logger name="ch.qos.logback" level="WARN" />
+    <logger name="org.apache.helix" level="WARN" />
+    <logger name="org.apache.zookeeper" level="ERROR" />
+    <logger name="org.apache.airavata" level="INFO" />
+    <logger name="org.hibernate" level="ERROR" />
+    <logger name="org.apache.openjpa" level="DEBUG" />
+    <logger name="org.apache.openjpa.enhance" level="DEBUG" />
+    <Root level="INFO">
+      <AppenderRef ref="Console" />
+      <AppenderRef ref="RollingFileAppender" />
+    </Root>
+  </Loggers>
 </Configuration>
\ No newline at end of file
diff --git a/modules/registry-db-migrator/src/main/resources/db-migrate.sh 
b/modules/registry-db-migrator/src/main/resources/db-migrate.sh
index b40ed91cbc..f11644339f 100755
--- a/modules/registry-db-migrator/src/main/resources/db-migrate.sh
+++ b/modules/registry-db-migrator/src/main/resources/db-migrate.sh
@@ -17,19 +17,18 @@
 # specific language governing permissions and limitations
 # under the License.
 
-. `dirname $0`/setenv.sh
+. $(dirname $0)/setenv.sh
 cd $AIRAVATA_HOME/bin
 
 # update classpath
 REG_MIGRATE_CLASSPATH="$AIRAVATA_HOME/lib"
-for f in $AIRAVATA_HOME/lib/*.jar
-do
+for f in $AIRAVATA_HOME/lib/*.jar; do
   REG_MIGRATE_CLASSPATH=$REG_MIGRATE_CLASSPATH:$f
 done
 
 java -server -Xms128M -Xmx128M \
-   $XDEBUG \
-   $TEMP_PROPS \
-   -classpath $REG_MIGRATE_CLASSPATH \
-   -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=5000,suspend=n \
-   org.apache.airavata.registry.tool.DBMigrator $*
+  $XDEBUG \
+  $TEMP_PROPS \
+  -classpath $REG_MIGRATE_CLASSPATH \
+  -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=5000,suspend=n \
+  org.apache.airavata.registry.tool.DBMigrator $*
diff --git a/modules/research-framework/research-service/pom.xml 
b/modules/research-framework/research-service/pom.xml
index 5b1a1833b2..2a4e8d623e 100644
--- a/modules/research-framework/research-service/pom.xml
+++ b/modules/research-framework/research-service/pom.xml
@@ -58,6 +58,16 @@ under the License.
     <dependency>
       <groupId>org.mariadb.jdbc</groupId>
       <artifactId>mariadb-java-client</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-classic</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-core</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.springframework.boot</groupId>
@@ -95,6 +105,10 @@ under the License.
         </exclusion>
       </exclusions>
     </dependency>
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-log4j2</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.springdoc</groupId>
       <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
@@ -102,18 +116,58 @@ under the License.
     <dependency>
       <groupId>io.grpc</groupId>
       <artifactId>grpc-stub</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-classic</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-core</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>io.grpc</groupId>
       <artifactId>grpc-protobuf</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-classic</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-core</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>com.google.protobuf</groupId>
       <artifactId>protobuf-java</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-classic</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-core</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>net.devh</groupId>
       <artifactId>grpc-server-spring-boot-starter</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-classic</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-core</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>javax.validation</groupId>
@@ -128,6 +182,20 @@ under the License.
       <groupId>org.apache.airavata</groupId>
       <artifactId>airavata-api</artifactId>
       <version>${project.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-classic</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>ch.qos.logback</groupId>
+          <artifactId>logback-core</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-log4j12</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
   </dependencies>
 
@@ -198,6 +266,15 @@ under the License.
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <systemPropertyVariables>
+            
<log4j2.configurationFile>src/main/resources/log4j2.xml</log4j2.configurationFile>
+          </systemPropertyVariables>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 </project>
\ No newline at end of file
diff --git 
a/modules/research-framework/research-service/src/main/resources/distribution/bin/setenv.sh
 
b/modules/research-framework/research-service/src/main/resources/distribution/bin/setenv.sh
index 59cc88d4d2..0454b967dd 100755
--- 
a/modules/research-framework/research-service/src/main/resources/distribution/bin/setenv.sh
+++ 
b/modules/research-framework/research-service/src/main/resources/distribution/bin/setenv.sh
@@ -37,6 +37,8 @@ export AIRAVATA_HOME CLASSPATH
 # Usage: run_service <service_name> <main_class> <java_opts>
 run_service() {
   local SERVICE_NAME="$1" MAIN_CLASS="$2" JAVA_OPTS="$3"
+  # Export SERVICE_NAME as environment variable for log4j2 configuration
+  export SERVICE_NAME
   local CWD="$PWD" PID_PATH_NAME="${AIRAVATA_HOME}/bin/pid-${SERVICE_NAME}"
   local DEFAULT_LOG_FILE="${AIRAVATA_HOME}/logs/${SERVICE_NAME}.log"
   local LOG_FILE="$DEFAULT_LOG_FILE" DAEMON_MODE=false EXTRA_ARGS=""
diff --git 
a/modules/research-framework/research-service/src/main/resources/distribution/conf/log4j2.xml
 
b/modules/research-framework/research-service/src/main/resources/distribution/conf/log4j2.xml
index ceb8fec7b8..593b7cba6e 100644
--- 
a/modules/research-framework/research-service/src/main/resources/distribution/conf/log4j2.xml
+++ 
b/modules/research-framework/research-service/src/main/resources/distribution/conf/log4j2.xml
@@ -21,33 +21,32 @@
 
 -->
 <Configuration status="WARN">
-
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT">
-            <PatternLayout pattern="%d [%t] %-5p %c{30} %X - %m%n"/>
-        </Console>
-        <RollingFile name="RollingFileAppender" 
fileName="../logs/research-service.log"
-                     
filePattern="logs/${date:yyyy-MM}/research-service-log-%d{MM-dd-yyyy}-%i.log.gz">
-            <PatternLayout>
-                <Pattern>%d [%t] %-5p %c{30} %X - %m%n</Pattern>
-            </PatternLayout>
-            <Policies>
-                <OnStartupTriggeringPolicy />
-                <TimeBasedTriggeringPolicy />
-                <SizeBasedTriggeringPolicy size="50 MB" />
-            </Policies>
-            <DefaultRolloverStrategy max="20" />
-        </RollingFile>
-    </Appenders>
-    <Loggers>
-        <logger name="ch.qos.logback" level="WARN"/>
-        <logger name="org.apache.helix" level="WARN"/>
-        <logger name="org.apache.zookeeper" level="ERROR"/>
-        <logger name="org.apache.airavata" level="INFO"/>
-        <logger name="org.hibernate" level="ERROR"/>
-        <Root level="INFO">
-            <AppenderRef ref="Console"/>
-            <AppenderRef ref="RollingFileAppender"/>
-        </Root>
-    </Loggers>
+  <Appenders>
+    <Console name="Console" target="SYSTEM_OUT">
+      <PatternLayout pattern="%d [%t] %-5p %c{30} %X - %m%n" />
+    </Console>
+    <RollingFile name="RollingFileAppender" 
fileName="../logs/research-service.log"
+      filePattern="../logs/research-service-%d{MM-dd-yyyy}-%i.log.gz">
+      <PatternLayout>
+        <Pattern>%d [%t] %-5p %c{30} %X - %m%n</Pattern>
+      </PatternLayout>
+      <Policies>
+        <OnStartupTriggeringPolicy />
+        <TimeBasedTriggeringPolicy />
+        <SizeBasedTriggeringPolicy size="50 MB" />
+      </Policies>
+      <DefaultRolloverStrategy max="20" />
+    </RollingFile>
+  </Appenders>
+  <Loggers>
+    <logger name="ch.qos.logback" level="WARN" />
+    <logger name="org.apache.helix" level="WARN" />
+    <logger name="org.apache.zookeeper" level="ERROR" />
+    <logger name="org.apache.airavata" level="INFO" />
+    <logger name="org.hibernate" level="ERROR" />
+    <Root level="INFO">
+      <AppenderRef ref="Console" />
+      <AppenderRef ref="RollingFileAppender" />
+    </Root>
+  </Loggers>
 </Configuration>
\ No newline at end of file
diff --git 
a/modules/research-framework/research-service/src/main/resources/log4j2.xml 
b/modules/research-framework/research-service/src/main/resources/log4j2.xml
new file mode 100644
index 0000000000..52fc013bf0
--- /dev/null
+++ b/modules/research-framework/research-service/src/main/resources/log4j2.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+
+    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.
+
+-->
+<Configuration status="WARN">
+  <Appenders>
+    <Console name="Console" target="SYSTEM_OUT">
+      <PatternLayout pattern="%d [%t] %-5p %c{30} %X - %m%n" />
+    </Console>
+    <RollingFile name="RollingFileAppender" 
fileName="../logs/research-service.log"
+      filePattern="../logs/research-service-%d{MM-dd-yyyy}-%i.log.gz">
+      <PatternLayout>
+        <Pattern>%d [%t] %-5p %c{30} %X - %m%n</Pattern>
+      </PatternLayout>
+      <Policies>
+        <OnStartupTriggeringPolicy />
+        <TimeBasedTriggeringPolicy />
+        <SizeBasedTriggeringPolicy size="50 MB" />
+      </Policies>
+      <DefaultRolloverStrategy max="20" />
+    </RollingFile>
+  </Appenders>
+  <Loggers>
+    <logger name="ch.qos.logback" level="WARN" />
+    <logger name="org.apache.helix" level="WARN" />
+    <logger name="org.apache.zookeeper" level="ERROR" />
+    <logger name="org.apache.airavata" level="INFO" />
+    <logger name="org.hibernate" level="ERROR" />
+    <Root level="INFO">
+      <AppenderRef ref="Console" />
+      <AppenderRef ref="RollingFileAppender" />
+    </Root>
+  </Loggers>
+</Configuration> 
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 651928b756..151479a41c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -163,7 +163,7 @@ under the License.
             <dependency>
                 <groupId>org.apache.commons</groupId>
                 <artifactId>commons-pool2</artifactId>
-                <version>2.7.0</version>
+                <version>2.12.1</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.commons</groupId>
@@ -245,7 +245,7 @@ under the License.
             <dependency>
                 <groupId>org.apache.helix</groupId>
                 <artifactId>helix-core</artifactId>
-                <version>0.9.7</version>
+                <version>1.4.3</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.openjpa</groupId>
@@ -352,6 +352,11 @@ under the License.
                 <artifactId>jakarta.activation-api</artifactId>
                 <version>2.1.3</version>
             </dependency>
+            <dependency>
+              <groupId>jakarta.transaction</groupId>
+              <artifactId>jakarta.transaction-api</artifactId>
+              <version>2.0.1</version>
+            </dependency>
             <dependency>
                 <groupId>javax.xml.bind</groupId>
                 <artifactId>jaxb-api</artifactId>
@@ -362,6 +367,11 @@ under the License.
                 <artifactId>validation-api</artifactId>
                 <version>2.0.1.Final</version>
             </dependency>
+            <dependency>
+                <groupId>org.hibernate.validator</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>6.2.5.Final</version>
+            </dependency>
 
             <!-- Other Libraries -->
             <dependency>
diff --git 
a/thrift-interface-descriptions/service-cpis/profile-service/iam-admin-services/iam-admin-services-cpi.thrift
 
b/thrift-interface-descriptions/service-cpis/profile-service/iam-admin-services/iam-admin-services-cpi.thrift
index 35a7d4a4a1..9bb674eed3 100644
--- 
a/thrift-interface-descriptions/service-cpis/profile-service/iam-admin-services/iam-admin-services-cpi.thrift
+++ 
b/thrift-interface-descriptions/service-cpis/profile-service/iam-admin-services/iam-admin-services-cpi.thrift
@@ -82,7 +82,7 @@ service IamAdminServices extends base_api.BaseAPI {
     list<user_profile_model.UserProfile> getUsers(1: required 
security_model.AuthzToken authzToken,
                                                   2: required i32 offset,
                                                   3: required i32 limit,
-                                                  4: optional string search)
+                                                  4: string search)
                             throws (1: 
iam_admin_services_cpi_errors.IamAdminServicesException Idse,
                                                         2: 
airavata_errors.AuthorizationException ae)
 

Reply via email to