diff --git a/dev-tools/ansible/inventories/scigap/develop/group_vars/all/vars.yml b/dev-tools/ansible/inventories/scigap/develop/group_vars/all/vars.yml
index db9c471..be0741e 100644
--- a/dev-tools/ansible/inventories/scigap/develop/group_vars/all/vars.yml
+++ b/dev-tools/ansible/inventories/scigap/develop/group_vars/all/vars.yml
@@ -144,6 +144,7 @@
 keycloak_db_password: "{{ vault_keycloak_db_password }}"
 keycloak_master_account_username: "admin"
 keycloak_master_account_password: "{{ vault_keycloak_master_account_password }}"
+keycloak_vhost_servername: "iamdev.scigap.org"
 
 # Helix
 helix_version: 0.7.1
diff --git a/dev-tools/ansible/inventories/scigap/develop/host_vars/delta/vars.yml b/dev-tools/ansible/inventories/scigap/develop/host_vars/delta/vars.yml
new file mode 100644
index 0000000..72403e3
--- /dev/null
+++ b/dev-tools/ansible/inventories/scigap/develop/host_vars/delta/vars.yml
@@ -0,0 +1,57 @@
+#
+#
+# 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.
+#
+
+---
+# No symlink, user_data_dir is same as real_user_data_dir
+user_data_dir: "{{ real_user_data_dir }}"
+#airavata_django_git_branch: "simccs"
+vhost_servername: "dev.delta-topology.org"
+vhost_ssl: true
+# sudo certbot --apache certonly -d django.simccs.scigap.org
+ssl_certificate_file: "/etc/letsencrypt/live/dev.delta-topology.org/cert.pem"
+ssl_certificate_chain_file: "/etc/letsencrypt/live/dev.delta-topology.org/fullchain.pem"
+ssl_certificate_key_file: "/etc/letsencrypt/live/dev.delta-topology.org/privkey.pem"
+
+## Keycloak related variables
+tenant_domain: "dev-delta"
+oauth_client_key: "{{ vault_oauth_client_key }}"
+oauth_client_secret: "{{ vault_oauth_client_secret }}"
+
+auth_options:
+  password:
+    name: "Dev DELTA"
+#  external:
+#    - name: "Existing Institute Login"
+#      idp_alias: "cilogon"
+
+gateway_id: "dev-delta"
+experiment_data_dir: "{{ user_data_dir }}/django-dev-delta"
+# gateway_data_store_ssh_public_key: "TODO"
+
+portal_email_host: "smtp.gmail.com"
+portal_email_port: 587
+portal_email_tls: true
+portal_email_username: "pga.airavata@gmail.com"
+portal_email_password: "{{ vault_portal_email_password }}"
+admin_emails: "[('SGRC', 'circ-iu-group@iu.edu')]"
+portal_server_email: "{{ portal_email_username }}"
+portal_title: "Dev DELTA Gateway"
+
+...
diff --git a/dev-tools/ansible/inventories/scigap/develop/host_vars/delta/vault.yml b/dev-tools/ansible/inventories/scigap/develop/host_vars/delta/vault.yml
new file mode 100644
index 0000000..d7b914f
--- /dev/null
+++ b/dev-tools/ansible/inventories/scigap/develop/host_vars/delta/vault.yml
@@ -0,0 +1,15 @@
+$ANSIBLE_VAULT;1.1;AES256
+61323461333234626436643737323133313661383665626165363430616364633834383136326336
+6563313362623566343834396331323738343931663938310a356564333262643139373633363663
+65626535303736366339356363343463363537666231396531313763326236353061306664373763
+6433323463306234620a643336663830303339323566336563646565636562326163306565643039
+30653766336266656234633734393461373864626661336365613835393137313235623734646438
+38613562366430393065616336613635333764396631613839666431313437376435653531343233
+32623763383736666132316537343132613662303865646562313163343036616132383237643439
+35333666366561303738316163636137353935636437653831393862633232643532363435613064
+66633863646239653632393666366432633931323665346164313063373837633030393733626530
+30656231353136616633326635326265626464646661393437616166666265323666613730623038
+34383031636238663832356236353735303630303238353961323538646162633130656430623235
+62623634356339613234613633336132363765633330383465363033363961306266376236636462
+64613561303661333338343832643734663536383834616165336534313961366465646463363531
+3130393161393630636466336666383164353737383266663238
diff --git a/dev-tools/ansible/inventories/scigap/develop/host_vars/interactwel/vars.yml b/dev-tools/ansible/inventories/scigap/develop/host_vars/interactwel/vars.yml
index de2824c..362b1c7 100644
--- a/dev-tools/ansible/inventories/scigap/develop/host_vars/interactwel/vars.yml
+++ b/dev-tools/ansible/inventories/scigap/develop/host_vars/interactwel/vars.yml
@@ -22,6 +22,7 @@
 #airavata_django_git_branch: "simccs"
 #vhost_servername: "django.interactwel.scigap.org"
 vhost_servername: "interactwel.org"
+vhost_server_redirect: "www.interactwel.org"
 vhost_ssl: true
 # sudo certbot --apache certonly -d django.simccs.scigap.org
 ssl_certificate_file: "/etc/letsencrypt/live/interactwel.org/cert.pem"
@@ -33,7 +34,7 @@
   - git+https://github.com/InterACTWEL/interactactwel-django-app.git@{{ interactwel_django_app_branch }}#egg=interactwel-django-app
 
 django_extra_settings:
-  LOGIN_REDIRECT_URL: "/interactwel/"
+  LOGIN_REDIRECT_URL: "/interactwel/#/dashboard"
 
 ## Keycloak related variables
 tenant_domain: "interactwel"
diff --git a/dev-tools/ansible/inventories/scigap/develop/hosts b/dev-tools/ansible/inventories/scigap/develop/hosts
index 5a31dca..9184ea6 100644
--- a/dev-tools/ansible/inventories/scigap/develop/hosts
+++ b/dev-tools/ansible/inventories/scigap/develop/hosts
@@ -37,6 +37,7 @@
 distantr ansible_host=149.165.156.46
 amp ansible_host=149.165.169.129
 geo ansible_host=149.165.156.46
+delta ansible_host=149.165.169.250
 
 [helix]
 149.165.157.37
diff --git a/dev-tools/ansible/inventories/scigap/production/group_vars/all/vars.yml b/dev-tools/ansible/inventories/scigap/production/group_vars/all/vars.yml
index e102856..1ccaecd 100644
--- a/dev-tools/ansible/inventories/scigap/production/group_vars/all/vars.yml
+++ b/dev-tools/ansible/inventories/scigap/production/group_vars/all/vars.yml
@@ -133,6 +133,7 @@
 keycloak_db_password: "{{ vault_keycloak_db_password }}"
 keycloak_master_account_username: "AiravataAdmin"
 keycloak_master_account_password: "{{ vault_keycloak_master_account_password }}"
+keycloak_vhost_servername: "iam.scigap.org"
 
 # Helix
 helix_version: 0.7.1
@@ -179,4 +180,4 @@
 parser_storage_resource_id: "pgadev.scigap.org_7ddf28fd-d503-4ff8-bbc5-3279a7c3b99e"
 parser_broker_publisher_id: "ParserProducer"
 
-usage_reporting_key: "{{ vault_usage_reporting_key }}"
\ No newline at end of file
+usage_reporting_key: "{{ vault_usage_reporting_key }}"
diff --git a/dev-tools/ansible/inventories/scigap/production/host_vars/bcbportal/vars.yml b/dev-tools/ansible/inventories/scigap/production/host_vars/bcbportal/vars.yml
new file mode 100644
index 0000000..89ee503
--- /dev/null
+++ b/dev-tools/ansible/inventories/scigap/production/host_vars/bcbportal/vars.yml
@@ -0,0 +1,50 @@
+#
+#
+# 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.
+#
+
+---
+
+
+vhost_servername: "bcbportal.medicine.iu.edu"
+vhost_ssl: True
+ssl_certificate_file: "/etc/letsencrypt/live/bcbportal.medicine.iu.edu/cert.pem"
+ssl_certificate_chain_file: "/etc/letsencrypt/live/bcbportal.medicine.iu.edu/fullchain.pem"
+ssl_certificate_key_file: "/etc/letsencrypt/live/bcbportal.medicine.iu.edu/privkey.pem"
+
+## Keycloak related variables
+tenant_domain: "bcbportal"
+oauth_client_key: "{{ vault_oauth_client_key }}"
+oauth_client_secret: "{{ vault_oauth_client_secret }}"
+
+auth_options:
+  password:
+    name: "BCB Gateway"
+  external:
+    - name: "Existing Institution Credentials"
+      idp_alias: "cilogon"
+      logo: "images/cilogon-logo-24x24-b.png"
+
+gateway_id: "bcbportal"
+experiment_data_dir: "{{ user_data_dir }}/bcbportal"
+gateway_data_store_ssh_public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1WOyu47oKrRhIBUGI5aJsFk4wxCEgf3DzFdlYrWbGacfEETbE1Cxe8Tdj5TevIflui+HWJq5quHkMiZtHhGZbC4JMDKlzJaBn5vHpEAWtyvCXglkpu+Q+/XGLOwqy4XGa4rdf/CXvuWgc5+XCBb++A/eBswQVPt4C631Xsym7LA1NQXK3XxJApP/2IHnWtJI2d9g5TnzH8Oa99d146KmAKMl73lsCZtC1saBtGRsggJ7dRal7ush3XqiNCMgWPM8QU0ogbOBXDUZKRGAoY+frDaJdA3eQISiRRknpFyZwWcXU0CGnqaBiJdJEGYKLMvP9qBz/juN8jKMBkEJLGU1/"
+
+admin_emails: "[('SGRC', 'sgrc-iu-group@iu.edu')]"
+portal_title: "BCB Gateway"
+
+...
diff --git a/dev-tools/ansible/inventories/scigap/production/host_vars/bcbportal/vault.yml b/dev-tools/ansible/inventories/scigap/production/host_vars/bcbportal/vault.yml
new file mode 100644
index 0000000..10fca2e
--- /dev/null
+++ b/dev-tools/ansible/inventories/scigap/production/host_vars/bcbportal/vault.yml
@@ -0,0 +1,15 @@
+$ANSIBLE_VAULT;1.1;AES256
+37363331613634613338653765396530323736643632373337316566316264396336653438383363
+3239343432316164313766303666663262333661313463320a623932623035623663653036383531
+37393266636235666164303536376539313439333363643365353763613064353539616139313061
+3632646637386336370a373731613138346465666638343737323066393436313534626566303863
+37643931663630313930353763343764353264623964396434653530616435313633633133643135
+34313032363134613964386532333062623532623430396665323935393534333635363131613233
+64386661336566393234646461376434636261373165663034303163303764323965346561633636
+62336464623061643533333834356435306365353432626631386135646265316234323636636465
+33643230653238333838663534663561393565633663383930633239643664373431363764636462
+33313061653034353439616130393438353237353930653534323961333430663834666337643262
+31393966376138313235373838393738346463363530633834373833666664303261343036373834
+65303365346261616664393163303966643432613537383139373965373937323535613461343662
+61653062613335373063326464633630636564326330626332396565386139646164313132633735
+6666666635323639393730303132313931626666623863396464
diff --git a/dev-tools/ansible/inventories/scigap/production/host_vars/dreg/vars.yml b/dev-tools/ansible/inventories/scigap/production/host_vars/dreg/vars.yml
index 5e43373..56a0f48 100644
--- a/dev-tools/ansible/inventories/scigap/production/host_vars/dreg/vars.yml
+++ b/dev-tools/ansible/inventories/scigap/production/host_vars/dreg/vars.yml
@@ -28,6 +28,9 @@
 # Increase max upload size to 1GB
 django_file_upload_max_file_size_mb: 1024
 
+# TODO: while testing dreg-djangoapp, turn off SELinux, but turn it back on
+# once it is installed for real
+httpd_selinux_mode: "permissive"
 # airavata_django_extra_dependencies:
 #   - git+https://github.com/SciGaP/dreg-djangoapp.git@gbrowser#egg=dreg-djangoapp
 
diff --git a/dev-tools/ansible/inventories/scigap/production/host_vars/microbial-genomes/vars.yml b/dev-tools/ansible/inventories/scigap/production/host_vars/microbial-genomes/vars.yml
index 3a3e376..40e2091 100644
--- a/dev-tools/ansible/inventories/scigap/production/host_vars/microbial-genomes/vars.yml
+++ b/dev-tools/ansible/inventories/scigap/production/host_vars/microbial-genomes/vars.yml
@@ -20,6 +20,10 @@
 
 ---
 
+# TODO: remove next line once branch is merged to master
+airavata_django_git_branch: "AIRAVATA-3324-custom-input-editor-autocomplete-input-editor"
+airavata_django_extra_dependencies:
+  - "git+https://github.com/bio-miga/miga-autocomplete.git#egg=miga_djangoapp"
 
 vhost_servername: "clades.microbial-genomes.org"
 vhost_ssl: True
diff --git a/dev-tools/ansible/inventories/scigap/production/host_vars/mines/vars.yml b/dev-tools/ansible/inventories/scigap/production/host_vars/mines/vars.yml
index f318823..62f6f51 100644
--- a/dev-tools/ansible/inventories/scigap/production/host_vars/mines/vars.yml
+++ b/dev-tools/ansible/inventories/scigap/production/host_vars/mines/vars.yml
@@ -45,4 +45,5 @@
 admin_emails: "[('SGRC', 'sgrc-iu-group@iu.edu'),('Matthew Jones','matjones@mymail.mines.edu')]"
 portal_title: "Mines Quantum Simulation Gateway"
 
+django_google_analytics_tracking_id: "UA-166738649-1"
 ...
diff --git a/dev-tools/ansible/inventories/scigap/production/host_vars/physicell/vars.yml b/dev-tools/ansible/inventories/scigap/production/host_vars/physicell/vars.yml
index b71354d..f83b413 100644
--- a/dev-tools/ansible/inventories/scigap/production/host_vars/physicell/vars.yml
+++ b/dev-tools/ansible/inventories/scigap/production/host_vars/physicell/vars.yml
@@ -21,11 +21,11 @@
 ---
 
 
-vhost_servername: "physicell.scigap.org"
+vhost_servername: "gateway.physicell.org"
 vhost_ssl: True
-ssl_certificate_file: "/etc/letsencrypt/live/physicell.scigap.org/cert.pem"
-ssl_certificate_chain_file: "/etc/letsencrypt/live/physicell.scigap.org/fullchain.pem"
-ssl_certificate_key_file: "/etc/letsencrypt/live/physicell.scigap.org/privkey.pem"
+ssl_certificate_file: "/etc/letsencrypt/live/gateway.physicell.org/cert.pem"
+ssl_certificate_chain_file: "/etc/letsencrypt/live/gateway.physicell.org/fullchain.pem"
+ssl_certificate_key_file: "/etc/letsencrypt/live/gateway.physicell.org/privkey.pem"
 
 ## Keycloak related variables
 tenant_domain: "physicell"
diff --git a/dev-tools/ansible/inventories/scigap/production/host_vars/smaltr/vars.yml b/dev-tools/ansible/inventories/scigap/production/host_vars/smaltr/vars.yml
index c6880cf..820ff18 100644
--- a/dev-tools/ansible/inventories/scigap/production/host_vars/smaltr/vars.yml
+++ b/dev-tools/ansible/inventories/scigap/production/host_vars/smaltr/vars.yml
@@ -44,7 +44,7 @@
 experiment_data_dir: "{{ user_data_dir }}/smaltr"
 gateway_data_store_ssh_public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtM2RTAS0ZnwJNjYEWjvt2JArjyoCZQzBJlXYvqeRyYTQPeSTH5nJP1VCkpJ4a7B44gHkcKGORkvNd+PrW7An8otTIGlXfbwn5L20CeKPsk6fWwF99fU4JFvakNANgAfefsQ3OrTgBBvZWkKeK7JztMHbEZw+SJoPZnjlxoKRib/Ymt6Bo/gh833eHth+Rvp2v3k4DPu6cTsOaTCv45JT8E3dBeERASZNdepKanxiQpz/QZg344JxYYQpJP5zKQ7jmfUphDkwFkp7RlAYgkSVC7yiQSgRqcKR38BXEAMqR/0eax/T1IujDKscSJpS/ibXToOl8qoRDwMStAi6Ym2wx"
 
-admin_emails: "[('SGRC', 'sgrc-iu-group@iu.edu'),('Aaron Frank' 'afrankz@umich.edu')]"
+admin_emails: "[('SGRC', 'sgrc-iu-group@iu.edu'),('Aaron Frank', 'afrankz@umich.edu')]"
 portal_title: "SMALTR Gateway"
 
 ...
diff --git a/dev-tools/ansible/inventories/scigap/production/hosts b/dev-tools/ansible/inventories/scigap/production/hosts
index 706cd9c..40c05a2 100644
--- a/dev-tools/ansible/inventories/scigap/production/hosts
+++ b/dev-tools/ansible/inventories/scigap/production/hosts
@@ -62,6 +62,7 @@
 v4i ansible_host=156.56.104.84
 physicell ansible_host=156.56.104.84
 pathogenomics ansible_host=156.56.104.84
+bcbportal ansible_host=156.56.104.84
 
 # dreg jetstream server
 dreg ansible_host=149.165.156.72 ansible_user=centos
diff --git a/dev-tools/ansible/inventories/scigap/staging/group_vars/all/vars.yml b/dev-tools/ansible/inventories/scigap/staging/group_vars/all/vars.yml
index 00f3396..69cdf57 100644
--- a/dev-tools/ansible/inventories/scigap/staging/group_vars/all/vars.yml
+++ b/dev-tools/ansible/inventories/scigap/staging/group_vars/all/vars.yml
@@ -140,6 +140,7 @@
 keycloak_db_password: "{{ vault_keycloak_db_password }}"
 keycloak_master_account_username: "AiravataAdmin"
 keycloak_master_account_password: "{{ vault_keycloak_master_account_password }}"
+keycloak_vhost_servername: "iam.scigap.org"
 
 # Helix
 helix_version: 0.7.1
diff --git a/dev-tools/ansible/keycloak.yml b/dev-tools/ansible/keycloak.yml
index 292a821..8cca98b 100644
--- a/dev-tools/ansible/keycloak.yml
+++ b/dev-tools/ansible/keycloak.yml
@@ -24,6 +24,7 @@
   roles:
     - env_setup
     - java
+    - letsencrypt
     - keycloak
 
-...
\ No newline at end of file
+...
diff --git a/dev-tools/ansible/roles/httpd/defaults/main.yml b/dev-tools/ansible/roles/httpd/defaults/main.yml
index 6c09be4..1317100 100644
--- a/dev-tools/ansible/roles/httpd/defaults/main.yml
+++ b/dev-tools/ansible/roles/httpd/defaults/main.yml
@@ -51,4 +51,11 @@
 
 httpd_default_http_port: 80
 httpd_default_https_port: 443
+
+# httpd_selinux_mode allowed values:
+# - disabled
+# - enforcing
+# - permissive
+# https://docs.ansible.com/ansible/latest/modules/selinux_module.html#parameter-state
+httpd_selinux_mode: "enforcing"
 ...
diff --git a/dev-tools/ansible/roles/httpd/tasks/main.yml b/dev-tools/ansible/roles/httpd/tasks/main.yml
index cb61714..2f7be68 100644
--- a/dev-tools/ansible/roles/httpd/tasks/main.yml
+++ b/dev-tools/ansible/roles/httpd/tasks/main.yml
@@ -1,7 +1,7 @@
 
 # SELinux configuration
 - name: set selinux to enforcing
-  selinux: state=enforcing policy=targeted
+  selinux: state={{ httpd_selinux_mode }} policy=targeted
   become: yes
   when: ansible_os_family == "RedHat"
 
diff --git a/dev-tools/ansible/roles/keycloak/README.md b/dev-tools/ansible/roles/keycloak/README.md
index f6f95d9..42f6bd9 100644
--- a/dev-tools/ansible/roles/keycloak/README.md
+++ b/dev-tools/ansible/roles/keycloak/README.md
@@ -6,9 +6,7 @@
 
 ###Running instructions:
 
-1. Make sure SSL certificates and keystore files are present in roles/keycloak/files directory
-2. Make sure all the variables are configured correctly
-3. Dont use the Database role, rather set up the VM with default version provided by centos, tested with MySql 5.6 & MariaDB 5.5.52), Ansible role for the same is coming soon.
-4. Ensure the host file: `inventories/airavata-iam/hosts` has correct IP address
-4. For Standalone mode deployment : `ansible-playbook -i inventories/airavata-iam airavata-iam-setup.yml -t "standalone"`
-5. For HaCluster mode deployment : `ansible-playbook -i inventories/airavata-iam airavata-iam-setup.yml -t "hacluster"`
\ No newline at end of file
+1. Make sure all the variables are configured correctly
+2. Dont use the Database role, rather set up the VM with default version provided by centos, tested with MySql 5.6 & MariaDB 5.5.52), Ansible role for the same is coming soon.
+3. Ensure the host file: `inventories/airavata-iam/hosts` has correct IP address
+4. For Standalone mode deployment : `ansible-playbook -i inventories/airavata-iam keycloak.yml`
diff --git a/dev-tools/ansible/roles/keycloak/defaults/main.yml b/dev-tools/ansible/roles/keycloak/defaults/main.yml
index a55be33..d94bfe7 100644
--- a/dev-tools/ansible/roles/keycloak/defaults/main.yml
+++ b/dev-tools/ansible/roles/keycloak/defaults/main.yml
@@ -23,13 +23,13 @@
 keycloak_downlaod_url: "https://downloads.jboss.org/keycloak/{{keycloak_version}}/keycloak-{{keycloak_version}}.tar.gz"
 keycloak_install_dir: "keycloak-{{keycloak_version}}"
 keycloak_db_connector_name: "mysql-connector-java-5.1.41"
-keycloak_ssl_keystore_file: "keycloak.jks"
-keycloak_ssl_keystore_file_name: "keycloak.jks"
-keycloak_ssl_keystore_password: "Airavata"
+# keycloak_ssl_keystore_file: "keycloak.jks"
+# keycloak_ssl_keystore_file_name: "keycloak.jks"
+# keycloak_ssl_keystore_password: "Airavata"
 mysql_db_connector_download_url: "https://dev.mysql.com/get/Downloads/Connector-J/{{keycloak_db_connector_name}}.tar.gz"
 keycloak_master_account_username: "username"
 keycloak_master_account_password: "password"
-keycloak_server_port: "443"
+# keycloak_server_port: "443"
 
 keycloak_db_host: "localhost"
 keycloak_db_port: "3306"
@@ -38,4 +38,9 @@
 keycloak_db_username: "username"
 keycloak_db_password: "password"
 keycloak_db_pool_size: "20"
-...
\ No newline at end of file
+
+keycloak_vhost_servername: "changeme.org"
+keycloak_ssl_certificate_file: "/etc/letsencrypt/live/{{ keycloak_vhost_servername }}/cert.pem"
+keycloak_ssl_certificate_chain_file: "/etc/letsencrypt/live/{{ keycloak_vhost_servername }}/fullchain.pem"
+keycloak_ssl_certificate_key_file: "/etc/letsencrypt/live/{{ keycloak_vhost_servername }}/privkey.pem"
+...
diff --git a/dev-tools/ansible/roles/keycloak/files/README.md b/dev-tools/ansible/roles/keycloak/files/README.md
deleted file mode 100644
index 6463636..0000000
--- a/dev-tools/ansible/roles/keycloak/files/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-## Generating Keystore for SSL certificates
-
-**Note:** will only work on Mac and Linux
-
-### Files Needed:
-1. SSL certificate for the domain (ex: .cer or .crt or .pem)
-2. Private key used to acquire that SSL Certificate, i.e. key used to create certificate request (.key).
-
-### Process:
-1. Place both file in airavata/dev-tools/roles/keycloak/files
-2. The first step is to convert them into a single PKCS12 file using the following command, You will be asked for various passwords (the password to access the key (if set) and then the password for the PKCS12 file being created): 
-``` 
-openssl pkcs12 -export -in host.crt -inkey host.key > host.p12
-```
-3. Then import the PKCS12 file into a keystore using the command: 
-``` 
-keytool -importkeystore -srckeystore host.p12 -destkeystore keycloak.jks -srcstoretype pkcs12 
-```
-
-###Sample output:
-```$shell
-$ openssl pkcs12 -export -in host.crt -inkey host.key > host.p12
-Enter pass phrase for host.key:
-Enter Export Password:
-Verifying - Enter Export Password:
-```
-```
-$ keytool -importkeystore -srckeystore host.p12 -destkeystore host.jks
--srcstoretype pkcs12
-Enter destination keystore password:  
-Re-enter new password: 
-Enter source keystore password:  
-Entry for alias 1 successfully imported.
-Import command completed:  1 entries successfully imported, 0 entries failed
-or cancelled
-```
\ No newline at end of file
diff --git a/dev-tools/ansible/roles/keycloak/handlers/main.yml b/dev-tools/ansible/roles/keycloak/handlers/main.yml
new file mode 100644
index 0000000..589bdab
--- /dev/null
+++ b/dev-tools/ansible/roles/keycloak/handlers/main.yml
@@ -0,0 +1,26 @@
+#
+#
+# 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.
+#
+
+---
+
+# Gracefully reload httpd
+- name: restart httpd
+  service: name=httpd state=reloaded enabled=yes
+  become: yes
diff --git a/dev-tools/ansible/roles/keycloak/tasks/main.yml b/dev-tools/ansible/roles/keycloak/tasks/main.yml
index ecab7db..44a5506 100644
--- a/dev-tools/ansible/roles/keycloak/tasks/main.yml
+++ b/dev-tools/ansible/roles/keycloak/tasks/main.yml
@@ -19,6 +19,50 @@
 #
 
 ---
+- name: Install httpd
+  yum: name="httpd" state=latest update_cache=yes
+  become: yes
+
+- name: allow httpd to proxy to Keycloak process
+  seboolean:
+    name: httpd_can_network_connect
+    state: yes
+    persistent: yes
+  become: yes
+
+- name: Enable http/s service on public zone (for certbot verification)
+  firewalld: service={{ item }} permanent=true state=enabled zone=public immediate=True
+  with_items:
+    - http
+    - https
+  become: yes
+
+# TODO: it seems like a virtual host config of some type is needed for the following to work
+- name: copy basic virtual host file so certbot can verify domain
+  template: src="basic-vhost.conf.j2" dest=/etc/httpd/conf.d/basic-vhost.conf backup=yes
+  become: yes
+
+- name: start httpd
+  service: name=httpd state=started enabled=yes
+  become: yes
+
+- name: check if SSL certificate exists
+  stat:
+    path: "{{ keycloak_ssl_certificate_file }}"
+  register: stat_ssl_cert_result
+  become: yes
+
+- name: generate certificate if it doesn't exist
+  command: certbot --apache -d {{ keycloak_vhost_servername }} certonly
+  become: yes
+  when: not stat_ssl_cert_result.stat.exists
+
+- name: Add keycloak virtual host config that proxies to the keycloak server
+  template: src="vhost.conf.j2" dest=/etc/httpd/conf.d/keycloak.conf backup=yes
+  become: yes
+  notify:
+    - restart httpd
+
 # Download keycloak distribution
 - name: Download and unarchive keycloak
   unarchive:  src="{{ keycloak_downlaod_url }}"
@@ -79,19 +123,6 @@
 
 # <---------------------------- Server Configuration -------------------------------->
 
-# Only Executed for haCluster mode (Mysql setup & without SSl configuration)
-- name: copy keycloak configuration file (HaCluster)
-  template: >
-    src=standalone-ha.xml.j2
-    dest="{{ user_home }}/{{ keycloak_install_dir }}/standalone/configuration/standalone-ha.xml"
-    owner="{{ user }}"
-    group="{{ group }}"
-    mode="u=rw,g=r,o=r"
-  become: true
-  become_user: "{{ user }}"
-  tags:
-       - hacluster
-
 # Only Executed for standalone mode (SSL Configuration & MySql)
 - name: copy keycloak configuration file (Standalone)
   template: >
@@ -105,36 +136,10 @@
   tags:
        - standalone
 
-# Copy the SSL certificate files to remote
-
-- name: copy ssl certificate files to remote
-  copy:
-    src: "{{keycloak_ssl_keystore_file}}"
-    dest: "{{ user_home }}/{{ keycloak_install_dir }}/standalone/configuration/{{keycloak_ssl_keystore_file_name}}"
-    owner: "{{ user }}"
-    group: "{{ group }}"
-    mode: 0644
-  become: true
-  become_user: "{{ user }}"
-  tags:
-        - standalone
 # </------------------------------ Server Configuration ends ---------------------------->
 
 # <---------- setup init script for keycloak, starts the server after reboot ----------->
 
-# Init script to start keycloak in HaCluster mode
-- name: copy init script file (HaCluster)
-  template: >
-    src=keycloak-hacluster-init.j2
-    dest="/etc/init.d/keycloak"
-    owner="{{ user }}"
-    group="{{ group }}"
-    mode="u=rwx,g=r,o=r"
-  become: yes
-  become_user: root
-  tags:
-       - hacluster
-
 # Init script to start keycloak in Standalone mode
 - name: copy init script file (Standalone)
   template: >
@@ -170,15 +175,6 @@
        - always
 
 
-# <--------------------------open keycloak Identity server firewall port------------------------------>
-- name: open firewall port {{ keycloak_server_port }}
-  firewalld: port="{{ keycloak_server_port }}/tcp"
-             zone=public permanent=true state=enabled immediate=yes
-  become: yes
-  become_user: root
-  tags:
-        - always
-
 # <--------------------------start keycloak Identity server------------------------------>
 - name: reload Keycloak init script
   command: systemctl daemon-reload
@@ -202,4 +198,4 @@
   become_user: root
   tags:
        - always
-...
\ No newline at end of file
+...
diff --git a/dev-tools/ansible/roles/keycloak/templates/basic-vhost.conf.j2 b/dev-tools/ansible/roles/keycloak/templates/basic-vhost.conf.j2
new file mode 100644
index 0000000..da78c4c
--- /dev/null
+++ b/dev-tools/ansible/roles/keycloak/templates/basic-vhost.conf.j2
@@ -0,0 +1,9 @@
+<VirtualHost *:80>
+    ServerName {{ groups['keycloak'][0] }}
+    DocumentRoot "/var/www/html"
+
+    <Directory /var/www/html>
+        Options -Indexes +FollowSymLinks
+        AllowOverride All
+    </Directory>
+</VirtualHost>
diff --git a/dev-tools/ansible/roles/keycloak/templates/standalone.xml.j2 b/dev-tools/ansible/roles/keycloak/templates/standalone.xml.j2
index cf4aebe..bd75c79 100644
--- a/dev-tools/ansible/roles/keycloak/templates/standalone.xml.j2
+++ b/dev-tools/ansible/roles/keycloak/templates/standalone.xml.j2
@@ -45,13 +45,6 @@
                     <properties path="application-roles.properties" relative-to="jboss.server.config.dir"/>
                 </authorization>
             </security-realm>
-	    <security-realm name="UndertowRealm">
-    		<server-identities>
-        		<ssl>
-            		<keystore path="{{keycloak_ssl_keystore_file_name}}" relative-to="jboss.server.config.dir" keystore-password="{{keycloak_ssl_keystore_password}}" />
-        		</ssl>
-    	    	</server-identities>
-	    </security-realm>
         </security-realms>
         <audit-log>
             <formatters>
@@ -377,8 +370,9 @@
         <subsystem xmlns="urn:jboss:domain:undertow:3.0">
             <buffer-cache name="default"/>
             <server name="default-server">
-                <http-listener name="default" socket-binding="http" redirect-socket="https"/>
-		<https-listener name="https" socket-binding="https" security-realm="UndertowRealm"/>
+                <http-listener name="default" socket-binding="http" redirect-socket="proxy-https" proxy-address-forwarding="true"/>
+                <!-- <http-listener name="default" socket-binding="http" redirect-socket="https"/> -->
+                <!-- <https-listener name="https" socket-binding="https" security-realm="UndertowRealm"/> -->
                 <host name="default-host" alias="localhost">
                     <location name="/" handler="welcome-content"/>
                     <filter-ref name="server-header"/>
@@ -489,7 +483,8 @@
         <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
         <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
         <socket-binding name="http" port="${jboss.http.port:8080}"/>
-        <socket-binding name="https" port="${jboss.https.port:443}"/>
+        <!-- <socket-binding name="https" port="${jboss.https.port:8443}"/> -->
+        <socket-binding name="proxy-https" port="443"/>
         <socket-binding name="txn-recovery-environment" port="4712"/>
         <socket-binding name="txn-status-manager" port="4713"/>
         <outbound-socket-binding name="mail-smtp">
diff --git a/dev-tools/ansible/roles/keycloak/templates/vhost.conf.j2 b/dev-tools/ansible/roles/keycloak/templates/vhost.conf.j2
new file mode 100644
index 0000000..4d7f40d
--- /dev/null
+++ b/dev-tools/ansible/roles/keycloak/templates/vhost.conf.j2
@@ -0,0 +1,52 @@
+#
+#
+# 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.
+#
+
+
+<VirtualHost *:80>
+    ServerName {{ keycloak_vhost_servername }}
+    
+    ## Redirect all http traffic to https
+    RewriteEngine On
+    RewriteCond %{HTTPS} off
+    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
+</VirtualHost>
+
+<VirtualHost *:443>
+    ServerName {{ keycloak_vhost_servername }}
+
+    RequestHeader set X-Forwarded-Proto "https"
+    ProxyPass / "http://localhost:8080/"
+    ProxyPassReverse / "http://localhost:8080/"
+    ProxyPreserveHost On
+    # See https://issues.redhat.com/browse/KEYCLOAK-3067 for more info
+    LimitRequestFieldSize 32768
+
+    ErrorLog /var/log/httpd/keycloak.error.log
+    CustomLog /var/log/httpd/keycloak.requests.log combined
+
+    SSLEngine on
+    # Disable SSLv3 which is vulnerable to the POODLE attack
+    SSLProtocol All -SSLv2 -SSLv3
+    # Created cert with certbot:
+    #   certbot --apache certonly -d iamdev.scigap.org
+    SSLCertificateFile {{ keycloak_ssl_certificate_file }}
+    SSLCertificateChainFile {{ keycloak_ssl_certificate_chain_file }}
+    SSLCertificateKeyFile {{ keycloak_ssl_certificate_key_file }}
+</VirtualHost>
diff --git a/modules/airavata-helix/helix-spectator/src/main/java/org/apache/airavata/helix/impl/task/staging/ArchiveTask.java b/modules/airavata-helix/helix-spectator/src/main/java/org/apache/airavata/helix/impl/task/staging/ArchiveTask.java
index 2448b29..7d4ffa0 100644
--- a/modules/airavata-helix/helix-spectator/src/main/java/org/apache/airavata/helix/impl/task/staging/ArchiveTask.java
+++ b/modules/airavata-helix/helix-spectator/src/main/java/org/apache/airavata/helix/impl/task/staging/ArchiveTask.java
@@ -106,7 +106,7 @@
 
                     String destParent = destFilePath.substring(0, destFilePath.lastIndexOf("/"));
                     final String storageArchiveDir = "ARCHIVE";
-                    String unArchiveTarCommand = "mkdir " + storageArchiveDir + " && tar -xvf " + archiveFileName + " -C "
+                    String unArchiveTarCommand = "mkdir -p " + storageArchiveDir + " && tar -xvf " + archiveFileName + " -C "
                             + storageArchiveDir + " && rm " + archiveFileName + " && chmod 755 -f -R " + storageArchiveDir + "/*";
                     logger.info("Running Un archiving command on storage resource " + unArchiveTarCommand);
 
diff --git a/modules/commons/src/main/java/org/apache/airavata/common/utils/JPAUtils.java b/modules/commons/src/main/java/org/apache/airavata/common/utils/JPAUtils.java
index d027510..6ec2b67 100644
--- a/modules/commons/src/main/java/org/apache/airavata/common/utils/JPAUtils.java
+++ b/modules/commons/src/main/java/org/apache/airavata/common/utils/JPAUtils.java
@@ -3,24 +3,10 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.function.Supplier;
 
-import javax.persistence.Cache;
-import javax.persistence.EntityGraph;
-import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.Persistence;
-import javax.persistence.PersistenceUnitUtil;
-import javax.persistence.Query;
-import javax.persistence.SynchronizationType;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.metamodel.Metamodel;
 
-import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
-import org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl;
-import org.apache.openjpa.jdbc.meta.MappingTool;
-import org.apache.openjpa.lib.util.Options;
-import org.apache.openjpa.persistence.ArgumentException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -29,122 +15,6 @@
  */
 public class JPAUtils {
 
-    private static class EntityManagerFactoryWrapper implements EntityManagerFactory {
-
-        private final EntityManagerFactory factory;
-        private final JDBCConfig jdbcConfig;
-
-        EntityManagerFactoryWrapper(EntityManagerFactory factory, JDBCConfig jdbcConfig) {
-            this.factory = factory;
-            this.jdbcConfig = jdbcConfig;
-        }
-
-        @Override
-        public EntityManager createEntityManager() {
-            return wrapCreateEntityManager(() -> this.factory.createEntityManager());
-        }
-
-        @Override
-        public EntityManager createEntityManager(Map map) {
-            return wrapCreateEntityManager(() -> this.factory.createEntityManager(map));
-        }
-
-        @Override
-        public EntityManager createEntityManager(SynchronizationType synchronizationType) {
-            return wrapCreateEntityManager(() -> this.factory.createEntityManager(synchronizationType));
-        }
-
-        @Override
-        public EntityManager createEntityManager(SynchronizationType synchronizationType, Map map) {
-            return wrapCreateEntityManager(() -> this.factory.createEntityManager(synchronizationType, map));
-        }
-
-        private EntityManager wrapCreateEntityManager(Supplier<EntityManager> entityManagerSupplier) {
-
-            try {
-                return entityManagerSupplier.get();
-            } catch (ArgumentException e) {
-
-                Map<String, String> finalProperties = new HashMap<>(JPAUtils.DEFAULT_ENTITY_MANAGER_FACTORY_PROPERTIES);
-                finalProperties.putAll(JPAUtils.createConnectionProperties(this.jdbcConfig));
-                JDBCConfiguration jdbcConfiguration = new JDBCConfigurationImpl();
-                jdbcConfiguration.fromProperties(finalProperties);
-
-                Options options = new Options();
-                options.put("sqlFile", "migration.sql");
-                // If you want to generate the entire schema instead of just what is
-                // needed to bring the database up to date, use schemaAction=build
-                // options.put("schemaAction", "build");
-                options.put("foreignKeys", "true");
-                options.put("indexes", "true");
-                options.put("primaryKeys", "true");
-                try {
-                    MappingTool.run(jdbcConfiguration, new String[] {}, options, null);
-                } catch (Exception mappingToolEx) {
-                    logger.error("Failed to run MappingTool", mappingToolEx);
-                    throw new RuntimeException(
-                            "Failed to get EntityManager, then failed to run MappingTool to generate migration script",
-                            e);
-                }
-                throw new RuntimeException("Failed to get EntityManager, but successfully executed "
-                        + "MappingTool to generate migration script (to file named "
-                        + "migration.sql) in case the error was caused by the database "
-                        + "schema being out of date with the mappings", e);
-            }
-        }
-
-        @Override
-        public CriteriaBuilder getCriteriaBuilder() {
-            return this.factory.getCriteriaBuilder();
-        }
-
-        @Override
-        public Metamodel getMetamodel() {
-            return this.factory.getMetamodel();
-        }
-
-        @Override
-        public boolean isOpen() {
-            return this.factory.isOpen();
-        }
-
-        @Override
-        public void close() {
-            this.factory.close();
-        }
-
-        @Override
-        public Map<String, Object> getProperties() {
-            return this.factory.getProperties();
-        }
-
-        @Override
-        public Cache getCache() {
-            return this.factory.getCache();
-        }
-
-        @Override
-        public PersistenceUnitUtil getPersistenceUnitUtil() {
-            return this.factory.getPersistenceUnitUtil();
-        }
-
-        @Override
-        public void addNamedQuery(String name, Query query) {
-            this.factory.addNamedQuery(name, query);
-        }
-
-        @Override
-        public <T> T unwrap(Class<T> cls) {
-            return this.factory.unwrap(cls);
-        }
-
-        @Override
-        public <T> void addNamedEntityGraph(String graphName, EntityGraph<T> entityGraph) {
-            this.factory.addNamedEntityGraph(graphName, entityGraph);
-        }
-
-    }
-
     private final static Logger logger = LoggerFactory.getLogger(JPAUtils.class);
     private final static Map<String, String> DEFAULT_ENTITY_MANAGER_FACTORY_PROPERTIES;
     static {
@@ -192,11 +62,10 @@
         Map<String, String> finalProperties = new HashMap<>(DEFAULT_ENTITY_MANAGER_FACTORY_PROPERTIES);
         finalProperties.putAll(createConnectionProperties(jdbcConfig));
         finalProperties.putAll(properties);
-        return new EntityManagerFactoryWrapper(
-                Persistence.createEntityManagerFactory(persistenceUnitName, finalProperties), jdbcConfig);
+        return Persistence.createEntityManagerFactory(persistenceUnitName, finalProperties);
     }
 
-    private static Map<String, String> createConnectionProperties(JDBCConfig jdbcConfig) {
+    public static Map<String, String> createConnectionProperties(JDBCConfig jdbcConfig) {
         String connectionProperties = "DriverClassName=" + jdbcConfig.getDriver() + "," + "Url=" + jdbcConfig.getURL()
                 + "?autoReconnect=true," + "Username=" + jdbcConfig.getUser() + "," + "Password="
                 + jdbcConfig.getPassword() + ",validationQuery=" + jdbcConfig.getValidationQuery();
diff --git a/modules/ide-integration/README.md b/modules/ide-integration/README.md
index 5a5149a..4eead3a 100644
--- a/modules/ide-integration/README.md
+++ b/modules/ide-integration/README.md
@@ -57,6 +57,12 @@
   docker-compose up
   ```
 
+* Apply any database migrations. Go to src/main/resources directory and run
+
+  ```
+  cat ./database_scripts/init/*-migrations.sql | docker exec -i resources_db_1 mysql -p123456
+  ```
+
 * Wait until all the services come up. This will initialize all utilities required to start Airavata server
 
 ### Starting API Server
diff --git a/modules/ide-integration/src/main/resources/META-INF/generate-sql-persistence.xml b/modules/ide-integration/src/main/resources/META-INF/generate-sql-persistence.xml
deleted file mode 100644
index 944413d..0000000
--- a/modules/ide-integration/src/main/resources/META-INF/generate-sql-persistence.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-* -->
-<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
-    <!-- openjpa:sql doesn't work well with multiple persistence-unit's in persistence.xml, so
-    use this single persistence-unit persistence.xml to list any classes for which SQL schema
-    generation is desired -->
-    <persistence-unit name="generate-sql">
-        <class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.HandlerInputEntity</class>
-        <class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.HandlerOutputEntity</class>
-    </persistence-unit>
-</persistence>
diff --git a/modules/ide-integration/src/main/resources/META-INF/persistence.xml b/modules/ide-integration/src/main/resources/META-INF/persistence.xml
deleted file mode 100644
index f9688f4..0000000
--- a/modules/ide-integration/src/main/resources/META-INF/persistence.xml
+++ /dev/null
@@ -1,141 +0,0 @@
-<?xml version="1.0"?>
-<!--*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-* -->
-<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
-    <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>
-    </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>
-    </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>
-    </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.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.UserEntity</class>
-        <exclude-unlisted-classes>true</exclude-unlisted-classes>
-        <properties>
-            <property name="openjpa.DynamicEnhancementAgent" value="false"/>
-        </properties>
-    </persistence-unit>
-</persistence>
diff --git a/modules/ide-integration/src/main/resources/database_scripts/airavataworkflowcatalog-derby.sql b/modules/ide-integration/src/main/resources/database_scripts/airavataworkflowcatalog-derby.sql
deleted file mode 100644
index bce4bd9..0000000
--- a/modules/ide-integration/src/main/resources/database_scripts/airavataworkflowcatalog-derby.sql
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-CREATE TABLE AIRAVATA_WORKFLOW
-(
-        ID VARCHAR (255) NOT NULL,
-        EXPERIMENT_ID varchar(255),
-        DESCRIPTION VARCHAR (255),
-        CREATED_AT timestamp DEFAULT CURRENT_TIMESTAMP,
-        UPDATED_AT timestamp,
-        PRIMARY KEY (ID)
-);
-
-CREATE TABLE AIRAVATA_WORKFLOW_ERROR
-(
-        ID VARCHAR (255) NOT NULL,
-        WORKFLOW_ID VARCHAR (255) NOT NULL,
-        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        ACTUAL_ERROR_MESSAGE CLOB,
-        USER_FRIENDLY_MESSAGE CLOB,
-        TRANSIENT_OR_PERSISTENT SMALLINT,
-        ROOT_CAUSE_ERROR_ID_LIST CLOB,
-        PRIMARY KEY (ID, WORKFLOW_ID),
-        FOREIGN KEY (WORKFLOW_ID) REFERENCES AIRAVATA_WORKFLOW(ID) ON DELETE CASCADE
-);
-
-CREATE TABLE AIRAVATA_WORKFLOW_STATUS
-(
-        ID VARCHAR (255) NOT NULL,
-        WORKFLOW_ID VARCHAR (255) NOT NULL,
-        STATE VARCHAR (255) NOT NULL,
-        DESCRIPTION VARCHAR (255),
-        UPDATED_AT timestamp DEFAULT CURRENT_TIMESTAMP,
-        PRIMARY KEY (ID, WORKFLOW_ID),
-        FOREIGN KEY (WORKFLOW_ID) REFERENCES AIRAVATA_WORKFLOW(ID) ON DELETE CASCADE
-);
-
-CREATE TABLE WORKFLOW_APPLICATION
-(
-        ID VARCHAR (255) NOT NULL,
-        WORKFLOW_ID VARCHAR (255) NOT NULL,
-        EXPERIMENT_ID varchar(255),
-        APPLICATION_INTERFACE_ID VARCHAR (255),
-        COMPUTE_RESOURCE_ID VARCHAR (255),
-        QUEUE_NAME VARCHAR (255),
-        NODE_COUNT INTEGER,
-        CORE_COUNT INTEGER,
-        WALL_TIME_LIMIT INTEGER,
-        PHYSICAL_MEMORY INTEGER,
-        CREATED_AT timestamp DEFAULT CURRENT_TIMESTAMP,
-        UPDATED_AT timestamp,
-        PRIMARY KEY (ID, WORKFLOW_ID),
-        FOREIGN KEY (WORKFLOW_ID) REFERENCES AIRAVATA_WORKFLOW(ID) ON DELETE CASCADE
-);
-
-CREATE TABLE APPLICATION_ERROR
-(
-        ID VARCHAR (255) NOT NULL,
-        WORKFLOW_ID VARCHAR (255) NOT NULL,
-        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        ACTUAL_ERROR_MESSAGE CLOB,
-        USER_FRIENDLY_MESSAGE CLOB,
-        TRANSIENT_OR_PERSISTENT SMALLINT,
-        ROOT_CAUSE_ERROR_ID_LIST CLOB,
-        PRIMARY KEY (ID, WORKFLOW_ID),
-        FOREIGN KEY (WORKFLOW_ID) REFERENCES AIRAVATA_WORKFLOW(ID) ON DELETE CASCADE
-);
-
-CREATE TABLE APPLICATION_STATUS
-(
-        ID VARCHAR (255) NOT NULL,
-        WORKFLOW_ID VARCHAR (255) NOT NULL,
-        STATE VARCHAR (255) NOT NULL,
-        DESCRIPTION VARCHAR (255),
-        UPDATED_AT timestamp DEFAULT CURRENT_TIMESTAMP,
-        PRIMARY KEY (ID, WORKFLOW_ID),
-        FOREIGN KEY (WORKFLOW_ID) REFERENCES AIRAVATA_WORKFLOW(ID) ON DELETE CASCADE
-);
-
-CREATE TABLE WORKFLOW_HANDLER
-(
-        ID VARCHAR (255) NOT NULL,
-        WORKFLOW_ID VARCHAR (255) NOT NULL,
-        TYPE VARCHAR (255),
-        CREATED_AT timestamp DEFAULT CURRENT_TIMESTAMP,
-        UPDATED_AT timestamp,
-        PRIMARY KEY (ID, WORKFLOW_ID),
-        FOREIGN KEY (WORKFLOW_ID) REFERENCES AIRAVATA_WORKFLOW(ID) ON DELETE CASCADE
-);
-
-CREATE TABLE HANDLER_ERROR
-(
-        ERROR_ID VARCHAR (255) NOT NULL,
-        HANDLER_ID VARCHAR (255) NOT NULL,
-        WORKFLOW_ID VARCHAR (255) NOT NULL,
-        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        ACTUAL_ERROR_MESSAGE CLOB,
-        USER_FRIENDLY_MESSAGE CLOB,
-        TRANSIENT_OR_PERSISTENT SMALLINT,
-        ROOT_CAUSE_ERROR_ID_LIST CLOB,
-        PRIMARY KEY (ERROR_ID, HANDLER_ID),
-        FOREIGN KEY (WORKFLOW_ID) REFERENCES AIRAVATA_WORKFLOW(ID) ON DELETE CASCADE,
-        FOREIGN KEY (HANDLER_ID, WORKFLOW_ID) REFERENCES WORKFLOW_HANDLER(ID, WORKFLOW_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE HANDLER_INPUT (
-        HANDLER_ID VARCHAR(255) NOT NULL,
-        NAME VARCHAR(255) NOT NULL,
-        APPLICATION_ARGUMENT VARCHAR(255),
-        DATA_STAGED SMALLINT,
-        INPUT_ORDER INTEGER,
-        IS_READ_ONLY SMALLINT,
-        IS_REQUIRED SMALLINT,
-        METADATA VARCHAR(4096),
-        REQUIRED_TO_ADDED_TO_COMMAND_LINE SMALLINT,
-        STANDARD_INPUT SMALLINT,
-        STORAGE_RESOURCE_ID VARCHAR(255),
-        TYPE VARCHAR(20),
-        USER_FRIENDLY_DESCRIPTION VARCHAR(255),
-        VALUE CLOB,
-        WORKFLOW_ID VARCHAR(255),
-        PRIMARY KEY (HANDLER_ID, NAME),
-        FOREIGN KEY (HANDLER_ID, WORKFLOW_ID) REFERENCES WORKFLOW_HANDLER(ID, WORKFLOW_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE HANDLER_OUTPUT (HANDLER_ID VARCHAR(255) NOT NULL,
-        NAME VARCHAR(255) NOT NULL,
-        APPLICATION_ARGUMENT VARCHAR(255),
-        DATA_MOVEMENT SMALLINT,
-        IS_REQUIRED SMALLINT,
-        LOCATION VARCHAR(255),
-        OUTPUT_STREAMING SMALLINT,
-        REQUIRED_TO_ADDED_TO_COMMAND_LINE SMALLINT,
-        SEARCH_QUERY VARCHAR(255),
-        STORAGE_RESOURCE_ID VARCHAR(255),
-        TYPE VARCHAR(20),
-        VALUE CLOB,
-        WORKFLOW_ID VARCHAR(255),
-        PRIMARY KEY (HANDLER_ID, NAME),
-        FOREIGN KEY (HANDLER_ID, WORKFLOW_ID) REFERENCES WORKFLOW_HANDLER(ID, WORKFLOW_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE HANDLER_STATUS
-(
-        ID VARCHAR (255) NOT NULL,
-        HANDLER_ID VARCHAR (255) NOT NULL,
-        WORKFLOW_ID VARCHAR (255) NOT NULL,
-        STATE VARCHAR (255) NOT NULL,
-        DESCRIPTION VARCHAR (255),
-        UPDATED_AT timestamp DEFAULT CURRENT_TIMESTAMP,
-        PRIMARY KEY (HANDLER_ID, ID),
-        FOREIGN KEY (HANDLER_ID, WORKFLOW_ID) REFERENCES WORKFLOW_HANDLER(ID, WORKFLOW_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE WORKFLOW_DATA_BLOCK
-(
-        ID VARCHAR (255) NOT NULL,
-        WORKFLOW_ID VARCHAR (255) NOT NULL,
-        VALUE VARCHAR (255),
-        DATA_TYPE VARCHAR (255),
-        CREATED_AT timestamp DEFAULT CURRENT_TIMESTAMP,
-        UPDATED_AT timestamp,
-        PRIMARY KEY (ID),
-        FOREIGN KEY (WORKFLOW_ID) REFERENCES AIRAVATA_WORKFLOW(ID) ON DELETE CASCADE
-);
-
-CREATE TABLE WORKFLOW_CONNECTION
-(
-        ID VARCHAR (255) NOT NULL,
-        WORKFLOW_ID VARCHAR (255) NOT NULL,
-        DATA_BLOCK_ID VARCHAR (255),
-        FROM_TYPE VARCHAR (255),
-        FROM_ID VARCHAR (255),
-        FROM_OUTPUT_NAME VARCHAR (255),
-        TO_TYPE VARCHAR (255),
-        TO_ID VARCHAR (255),
-        TO_INPUT_NAME VARCHAR (255),
-        CREATED_AT timestamp DEFAULT CURRENT_TIMESTAMP,
-        UPDATED_AT timestamp,
-        PRIMARY KEY (ID, WORKFLOW_ID),
-        FOREIGN KEY (WORKFLOW_ID) REFERENCES AIRAVATA_WORKFLOW(ID) ON DELETE CASCADE,
-        FOREIGN KEY (DATA_BLOCK_ID) REFERENCES WORKFLOW_DATA_BLOCK(ID) ON DELETE CASCADE
-);
-
-CREATE TABLE CONFIGURATION
-(
-        CONFIG_KEY VARCHAR(255),
-        CONFIG_VAL VARCHAR(255),
-        EXPIRE_DATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        CATEGORY_ID VARCHAR (255),
-        PRIMARY KEY(CONFIG_KEY, CONFIG_VAL, CATEGORY_ID)
-);
-
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL, EXPIRE_DATE, CATEGORY_ID) VALUES('airavata.workflow.version', '0.17', CURRENT_TIMESTAMP ,'SYSTEM');
diff --git a/modules/ide-integration/src/main/resources/database_scripts/appcatalog-derby.sql b/modules/ide-integration/src/main/resources/database_scripts/appcatalog-derby.sql
deleted file mode 100644
index 3cf7ea8..0000000
--- a/modules/ide-integration/src/main/resources/database_scripts/appcatalog-derby.sql
+++ /dev/null
@@ -1,737 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-CREATE TABLE COMPUTE_RESOURCE
-(
-        RESOURCE_ID VARCHAR (255) NOT NULL,
-        HOST_NAME VARCHAR (255) NOT NULL,
-        RESOURCE_DESCRIPTION VARCHAR (255),
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        MAX_MEMORY_NODE INTEGER,
-        CPUS_PER_NODE INTEGER,
-        DEFAULT_NODE_COUNT INTEGER,
-        DEFAULT_CPU_COUNT INTEGER,
-        DEFAULT_WALLTIME INTEGER,
-        ENABLED SMALLINT,
-        GATEWAY_USAGE_REPORTING SMALLINT,
-        GATEWAY_USAGE_MODULE_LOAD_CMD VARCHAR(500),
-        GATEWAY_USAGE_EXECUTABLE VARCHAR(255),
-        PRIMARY KEY (RESOURCE_ID)
-);
-
-CREATE TABLE HOST_ALIAS
-(
-         RESOURCE_ID VARCHAR(255) NOT NULL,
-         ALIAS VARCHAR(255),
-         PRIMARY KEY(RESOURCE_ID,ALIAS),
-         FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE HOST_IPADDRESS
-(
-         RESOURCE_ID VARCHAR(255) NOT NULL,
-         IP_ADDRESS VARCHAR(255),
-         PRIMARY KEY(RESOURCE_ID,IP_ADDRESS),
-         FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE GSISSH_SUBMISSION
-(
-         SUBMISSION_ID VARCHAR(255),
-         RESOURCE_JOB_MANAGER VARCHAR(255),
-         SSH_PORT INTEGER,
-         INSTALLED_PATH VARCHAR(255),
-         MONITOR_MODE VARCHAR(255),
-         PRIMARY KEY(SUBMISSION_ID)
-);
-
-CREATE TABLE GSISSH_EXPORT
-(
-         SUBMISSION_ID VARCHAR(255) NOT NULL,
-         EXPORT VARCHAR(255),
-         PRIMARY KEY(SUBMISSION_ID, EXPORT),
-         FOREIGN KEY (SUBMISSION_ID) REFERENCES GSISSH_SUBMISSION(SUBMISSION_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE GSISSH_PREJOBCOMMAND
-(
-         SUBMISSION_ID VARCHAR(255) NOT NULL,
-         COMMAND VARCHAR(255),
-         PRIMARY KEY(SUBMISSION_ID, COMMAND),
-         FOREIGN KEY (SUBMISSION_ID) REFERENCES GSISSH_SUBMISSION(SUBMISSION_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE GSISSH_POSTJOBCOMMAND
-(
-         SUBMISSION_ID VARCHAR(255) NOT NULL,
-         COMMAND VARCHAR(255),
-         PRIMARY KEY(SUBMISSION_ID, COMMAND),
-         FOREIGN KEY (SUBMISSION_ID) REFERENCES GSISSH_SUBMISSION(SUBMISSION_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE GLOBUS_SUBMISSION
-(
-         SUBMISSION_ID VARCHAR(255),
-         RESOURCE_JOB_MANAGER VARCHAR(255),
-         SECURITY_PROTOCAL VARCHAR(255),
-         PRIMARY KEY(SUBMISSION_ID)
-);
-
-CREATE TABLE UNICORE_SUBMISSION
-(
-         SUBMISSION_ID VARCHAR(255),
-         SECURITY_PROTOCAL VARCHAR(255),
-         UNICORE_ENDPOINT_URL VARCHAR(255),
-         PRIMARY KEY(SUBMISSION_ID)
-);
-
-CREATE TABLE UNICORE_DATAMOVEMENT
-(
-         DATAMOVEMENT_ID VARCHAR(255),
-         SECURITY_PROTOCAL VARCHAR(255),
-         UNICORE_ENDPOINT_URL VARCHAR(255),
-         PRIMARY KEY(DATAMOVEMENT_ID)
-);
-
-
-CREATE TABLE GLOBUS_GK_ENDPOINT
-(
-         SUBMISSION_ID VARCHAR(255) NOT NULL,
-         ENDPOINT VARCHAR(255),
-         PRIMARY KEY(SUBMISSION_ID, ENDPOINT),
-         FOREIGN KEY (SUBMISSION_ID) REFERENCES GLOBUS_SUBMISSION(SUBMISSION_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE RESOURCE_JOB_MANAGER
-(
-        RESOURCE_JOB_MANAGER_ID VARCHAR (255) NOT NULL,
-        PUSH_MONITORING_ENDPOINT VARCHAR (255),
-        JOB_MANAGER_BIN_PATH VARCHAR (255),
-        RESOURCE_JOB_MANAGER_TYPE VARCHAR (255) NOT NULL,
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (RESOURCE_JOB_MANAGER_ID)
-);
-
-
-
-CREATE TABLE SSH_JOB_SUBMISSION
-(
-        RESOURCE_JOB_MANAGER_ID VARCHAR (255) NOT NULL,
-        JOB_SUBMISSION_INTERFACE_ID VARCHAR (255) NOT NULL,
-        ALTERNATIVE_SSH_HOSTNAME VARCHAR (255),
-        SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
-        SSH_PORT INTEGER,
-        MONITOR_MODE VARCHAR (255),
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (JOB_SUBMISSION_INTERFACE_ID),
-        FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID)
-);
-
-CREATE TABLE SCP_DATA_MOVEMENT
-(
-        QUEUE_DESCRIPTION VARCHAR (255),
-        DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
-        SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
-        ALTERNATIVE_SCP_HOSTNAME VARCHAR (255),
-        SSH_PORT INTEGER,
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID)
-);
-
-CREATE TABLE GRIDFTP_DATA_MOVEMENT
-(
-        DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
-        SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID)
-);
-
-CREATE TABLE GRIDFTP_ENDPOINT
-(
-        ENDPOINT VARCHAR (255) NOT NULL,
-        DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
-        PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID,ENDPOINT),
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        FOREIGN KEY (DATA_MOVEMENT_INTERFACE_ID) REFERENCES GRIDFTP_DATA_MOVEMENT(DATA_MOVEMENT_INTERFACE_ID) ON DELETE CASCADE
-);
-
---CREATE TABLE JOB_SUBMISSION_PROTOCOL
---(
---         RESOURCE_ID VARCHAR(255),
---         SUBMISSION_ID VARCHAR(255),
---         JOB_TYPE VARCHAR(255),
---         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
---         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
---         PRIMARY KEY(RESOURCE_ID,SUBMISSION_ID,JOB_TYPE),
---         FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
---);
---
---CREATE TABLE DATA_MOVEMENT_PROTOCOL
---(
---         RESOURCE_ID VARCHAR(255),
---         DATA_MOVE_ID VARCHAR(255),
---         DATA_MOVE_TYPE VARCHAR(255),
---         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
---         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
---         PRIMARY KEY(RESOURCE_ID,DATA_MOVE_ID,DATA_MOVE_TYPE),
---         FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
---);
-
-CREATE TABLE APPLICATION_MODULE
-(
-         MODULE_ID VARCHAR(255),
-         MODULE_NAME VARCHAR(255),
-         MODULE_VERSION VARCHAR(255),
-         MODULE_DESC VARCHAR(500),
-         GATEWAY_ID VARCHAR (255) NOT NULL,
-         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
-         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' NOT NULL,
-         PRIMARY KEY(MODULE_ID)
-);
-
-CREATE TABLE APPLICATION_DEPLOYMENT
-(
-         DEPLOYMENT_ID VARCHAR(255),
-         APP_MODULE_ID VARCHAR(255) NOT NULL,
-         COMPUTE_HOSTID VARCHAR(255) NOT NULL,
-         EXECUTABLE_PATH VARCHAR(255),
-	       PARALLELISM VARCHAR(255),
-         APPLICATION_DESC VARCHAR(255),
-         ENV_MODULE_LOAD_CMD VARCHAR(255),
-         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
-         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' NOT NULL,
-         GATEWAY_ID VARCHAR(255) NOT NULL,
-         DEFAULT_QUEUE_NAME VARCHAR(255),
-         DEFAULT_NODE_COUNT INTEGER,
-         DEFAULT_CPU_COUNT INTEGER,
-         DEFAULT_WALLTIME INTEGER,
-         EDITABLE_BY_USER SMALLINT,
-         PRIMARY KEY(DEPLOYMENT_ID),
-         FOREIGN KEY (COMPUTE_HOSTID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE,
-         FOREIGN KEY (APP_MODULE_ID) REFERENCES APPLICATION_MODULE(MODULE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE MODULE_LOAD_CMD
-(
-        CMD VARCHAR (255) NOT NULL,
-        APP_DEPLOYMENT_ID VARCHAR (255) NOT NULL,
-        COMMAND_ORDER INTEGER,
-        PRIMARY KEY (APP_DEPLOYMENT_ID,CMD),
-        FOREIGN KEY (APP_DEPLOYMENT_ID) REFERENCES APPLICATION_DEPLOYMENT(DEPLOYMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE PREJOB_COMMAND
-(
-         APPDEPLOYMENT_ID VARCHAR(255) NOT NULL,
-         COMMAND VARCHAR(255),
-         COMMAND_ORDER INTEGER,
-         PRIMARY KEY(APPDEPLOYMENT_ID, COMMAND),
-         FOREIGN KEY (APPDEPLOYMENT_ID) REFERENCES APPLICATION_DEPLOYMENT(DEPLOYMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE POSTJOB_COMMAND
-(
-         APPDEPLOYMENT_ID VARCHAR(255) NOT NULL,
-         COMMAND VARCHAR(255),
-         COMMAND_ORDER INTEGER,
-         PRIMARY KEY(APPDEPLOYMENT_ID, COMMAND),
-         FOREIGN KEY (APPDEPLOYMENT_ID) REFERENCES APPLICATION_DEPLOYMENT(DEPLOYMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE LIBRARY_PREPAND_PATH
-(
-         DEPLOYMENT_ID VARCHAR(255) NOT NULL,
-         NAME VARCHAR(255),
-         VALUE VARCHAR(255),
-         PRIMARY KEY(DEPLOYMENT_ID, NAME),
-         FOREIGN KEY (DEPLOYMENT_ID) REFERENCES APPLICATION_DEPLOYMENT(DEPLOYMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE LIBRARY_APEND_PATH
-(
-         DEPLOYMENT_ID VARCHAR(255) NOT NULL,
-         NAME VARCHAR(255),
-         VALUE VARCHAR(255),
-         PRIMARY KEY(DEPLOYMENT_ID, NAME),
-         FOREIGN KEY (DEPLOYMENT_ID) REFERENCES APPLICATION_DEPLOYMENT(DEPLOYMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE APP_ENVIRONMENT
-(
-         DEPLOYMENT_ID VARCHAR(255) NOT NULL,
-         NAME VARCHAR(255),
-         VALUE VARCHAR(255),
-         ENV_ORDER INTEGER,
-         PRIMARY KEY(DEPLOYMENT_ID, NAME),
-         FOREIGN KEY (DEPLOYMENT_ID) REFERENCES APPLICATION_DEPLOYMENT(DEPLOYMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE APPLICATION_INTERFACE
-(
-         INTERFACE_ID VARCHAR(255),
-         APPLICATION_NAME VARCHAR(255),
-         APPLICATION_DESCRIPTION VARCHAR(500),
-         GATEWAY_ID VARCHAR(255) NOT NULL,
-         ARCHIVE_WORKING_DIRECTORY SMALLINT,
-         HAS_OPTIONAL_FILE_INPUTS SMALLINT,
-         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
-         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' NOT NULL,
-         PRIMARY KEY(INTERFACE_ID)
-);
-
-CREATE TABLE APP_MODULE_MAPPING
-(
-         INTERFACE_ID VARCHAR(255) NOT NULL,
-         MODULE_ID VARCHAR(255) NOT NULL,
-         PRIMARY KEY(INTERFACE_ID, MODULE_ID),
-         FOREIGN KEY (INTERFACE_ID) REFERENCES APPLICATION_INTERFACE(INTERFACE_ID) ON DELETE CASCADE,
-         FOREIGN KEY (MODULE_ID) REFERENCES APPLICATION_MODULE(MODULE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE APPLICATION_INPUT
-(
-         INTERFACE_ID VARCHAR(255) NOT NULL,
-         INPUT_KEY VARCHAR(255),
-         INPUT_VALUE VARCHAR(255),
-         DATA_TYPE VARCHAR(255),
-         METADATA VARCHAR(4096),
-         APP_ARGUMENT VARCHAR(255),
-         STANDARD_INPUT SMALLINT,
-         USER_FRIENDLY_DESC VARCHAR(255),
-         INPUT_ORDER INTEGER,
-         IS_REQUIRED SMALLINT,
-         REQUIRED_TO_COMMANDLINE SMALLINT,
-         DATA_STAGED SMALLINT,
-         IS_READ_ONLY SMALLINT,
-         PRIMARY KEY(INTERFACE_ID,INPUT_KEY),
-         FOREIGN KEY (INTERFACE_ID) REFERENCES APPLICATION_INTERFACE(INTERFACE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE APPLICATION_OUTPUT
-(
-         INTERFACE_ID VARCHAR(255) NOT NULL,
-         OUTPUT_KEY VARCHAR(255),
-         OUTPUT_VALUE VARCHAR(255),
-         DATA_TYPE VARCHAR(255),
-         IS_REQUIRED SMALLINT,
-         REQUIRED_TO_COMMANDLINE SMALLINT,
-         DATA_MOVEMENT SMALLINT,
-         DATA_NAME_LOCATION VARCHAR(255),
-         SEARCH_QUERY VARCHAR(255),
-         APP_ARGUMENT VARCHAR(255),
-         OUTPUT_STREAMING SMALLINT,
-         PRIMARY KEY(INTERFACE_ID,OUTPUT_KEY),
-         FOREIGN KEY (INTERFACE_ID) REFERENCES APPLICATION_INTERFACE(INTERFACE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE GATEWAY_PROFILE
-(
-         GATEWAY_ID VARCHAR(255),
-         CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-         CS_TOKEN VARCHAR (255),
-         IDENTITY_SERVER_TENANT VARCHAR (255),
-         IDENTITY_SERVER_PWD_CRED_TOKEN VARCHAR (255),
-         PRIMARY KEY(GATEWAY_ID)
-);
-
-CREATE TABLE COMPUTE_RESOURCE_PREFERENCE
-(
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        RESOURCE_ID VARCHAR(255) NOT NULL,
-        OVERRIDE_BY_AIRAVATA SMALLINT,
-        PREFERED_JOB_SUB_PROTOCOL VARCHAR(255),
-        PREFERED_DATA_MOVE_PROTOCOL VARCHAR(255),
-        PREFERED_BATCH_QUEUE VARCHAR(255),
-        SCRATCH_LOCATION VARCHAR(255),
-        ALLOCATION_PROJECT_NUMBER VARCHAR(255),
-        LOGIN_USERNAME VARCHAR(255),
-        RESOURCE_CS_TOKEN VARCHAR(255),
-        USAGE_REPORTING_GATEWAY_ID VARCHAR(255),
-        QUALITY_OF_SERVICE VARCHAR(255),
-        RESERVATION VARCHAR (255),
-        RESERVATION_START_TIME timestamp,
-        RESERVATION_END_TIME timestamp,
-        SSH_ACCOUNT_PROVISIONER VARCHAR(255),
-        SSH_ACCOUNT_PROVISIONER_ADDITIONAL_INFO VARCHAR(1000),
-        PRIMARY KEY(GATEWAY_ID,RESOURCE_ID),
-        FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE,
-        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY_PROFILE(GATEWAY_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE SSH_ACCOUNT_PROVISIONER_CONFIG
-(
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        RESOURCE_ID VARCHAR(255) NOT NULL,
-        CONFIG_NAME VARCHAR(255) NOT NULL,
-        CONFIG_VALUE VARCHAR(255),
-        PRIMARY KEY (GATEWAY_ID, RESOURCE_ID, CONFIG_NAME),
-        FOREIGN KEY (GATEWAY_ID, RESOURCE_ID) REFERENCES COMPUTE_RESOURCE_PREFERENCE (GATEWAY_ID, RESOURCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE BATCH_QUEUE
-(
-        COMPUTE_RESOURCE_ID VARCHAR(255) NOT NULL,
-        MAX_RUNTIME INTEGER,
-        MAX_JOB_IN_QUEUE INTEGER,
-        QUEUE_DESCRIPTION VARCHAR(255),
-        QUEUE_NAME VARCHAR(255) NOT NULL,
-        MAX_PROCESSORS INTEGER,
-        MAX_NODES INTEGER,
-        MAX_MEMORY INTEGER,
-        CPU_PER_NODE INTEGER,
-        DEFAULT_NODE_COUNT INTEGER,
-        DEFAULT_CPU_COUNT INTEGER,
-        DEFAULT_WALLTIME INTEGER,
-        QUEUE_SPECIFIC_MACROS VARCHAR(255),
-        IS_DEFAULT_QUEUE SMALLINT,
-        PRIMARY KEY (COMPUTE_RESOURCE_ID,QUEUE_NAME),
-        FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE COMPUTE_RESOURCE_FILE_SYSTEM
-(
-        COMPUTE_RESOURCE_ID VARCHAR (255) NOT NULL,
-        PATH VARCHAR (255),
-        FILE_SYSTEM VARCHAR (255) NOT NULL,
-        PRIMARY KEY (COMPUTE_RESOURCE_ID,FILE_SYSTEM),
-        FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
-  );
-
-CREATE TABLE JOB_SUBMISSION_INTERFACE
-(
-        JOB_SUBMISSION_INTERFACE_ID VARCHAR (255) NOT NULL,
-        COMPUTE_RESOURCE_ID VARCHAR (255) NOT NULL,
-        JOB_SUBMISSION_PROTOCOL VARCHAR (255) NOT NULL,
-        PRIORITY_ORDER INTEGER,
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (COMPUTE_RESOURCE_ID,JOB_SUBMISSION_INTERFACE_ID),
-        FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
-);
- 
-CREATE TABLE DATA_MOVEMENT_INTERFACE
-(
-        COMPUTE_RESOURCE_ID VARCHAR (255) NOT NULL,
-        DATA_MOVEMENT_PROTOCOL VARCHAR (255) NOT NULL,
-        DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
-        PRIORITY_ORDER INTEGER,
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (COMPUTE_RESOURCE_ID,DATA_MOVEMENT_INTERFACE_ID),
-        FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE STORAGE_RESOURCE
-(
-        STORAGE_RESOURCE_ID VARCHAR (255) NOT NULL,
-        HOST_NAME VARCHAR (255) NOT NULL,
-        DESCRIPTION VARCHAR (255),
-        ENABLED SMALLINT ,
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (STORAGE_RESOURCE_ID)
-);
-
-CREATE TABLE STORAGE_INTERFACE
-(
-        STORAGE_RESOURCE_ID VARCHAR (255) NOT NULL,
-        DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
-        DATA_MOVEMENT_PROTOCOL VARCHAR (255) NOT NULL,
-        PRIORITY_ORDER INTEGER,
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (STORAGE_RESOURCE_ID,DATA_MOVEMENT_INTERFACE_ID),
-        FOREIGN KEY (STORAGE_RESOURCE_ID) REFERENCES STORAGE_RESOURCE(STORAGE_RESOURCE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE JOB_MANAGER_COMMAND
-(
-        RESOURCE_JOB_MANAGER_ID VARCHAR (255) NOT NULL,
-        COMMAND_TYPE VARCHAR (255) NOT NULL,
-        COMMAND VARCHAR (255),
-        PRIMARY KEY (RESOURCE_JOB_MANAGER_ID,COMMAND_TYPE),
-        FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE PARALLELISM_COMMAND
-(
-        RESOURCE_JOB_MANAGER_ID VARCHAR (255) NOT NULL,
-        COMMAND_TYPE VARCHAR (255) NOT NULL,
-        COMMAND VARCHAR (255),
-        PRIMARY KEY (RESOURCE_JOB_MANAGER_ID,COMMAND_TYPE),
-        FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE LOCAL_SUBMISSION
-(
-        RESOURCE_JOB_MANAGER_ID VARCHAR (255) NOT NULL,
-        JOB_SUBMISSION_INTERFACE_ID VARCHAR (255) NOT NULL,
-        SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (JOB_SUBMISSION_INTERFACE_ID),
-        FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID)
-);
-
-CREATE TABLE LOCAL_DATA_MOVEMENT
-(
-  DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
-  PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID)
-);
-
-CREATE TABLE STORAGE_PREFERENCE
-(
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        STORAGE_RESOURCE_ID VARCHAR(255) NOT NULL,
-        LOGIN_USERNAME VARCHAR(255),
-        FS_ROOT_LOCATION VARCHAR(255),
-        RESOURCE_CS_TOKEN VARCHAR(255),
-        PRIMARY KEY(GATEWAY_ID,STORAGE_RESOURCE_ID),
-        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY_PROFILE(GATEWAY_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE USER_RESOURCE_PROFILE (
-  USER_ID varchar(255) NOT NULL,
-  CREATION_TIME TIMESTAMP DEFAULT NULL,
-  CS_TOKEN varchar(255) DEFAULT NULL,
-  GATEWAY_ID varchar(255) DEFAULT NULL,
-  IDENTITY_SERVER_PWD_CRED_TOKEN varchar(255) DEFAULT NULL,
-  IDENTITY_SERVER_TENANT varchar(255) DEFAULT NULL,
-  UPDATE_TIME TIMESTAMP DEFAULT NULL,
-  PRIMARY KEY (USER_ID,GATEWAY_ID)
-);
-
-CREATE TABLE USER_STORAGE_PREFERENCE (
-  STORAGE_RESOURCE_ID varchar(255) NOT NULL,
-  USER_ID varchar(255) NOT NULL,
-  RESOURCE_CS_TOKEN varchar(255) DEFAULT NULL,
-  FS_ROOT_LOCATION varchar(255) DEFAULT NULL,
-  GATEWAY_ID varchar(255) DEFAULT NULL,
-  LOGIN_USERNAME varchar(255) DEFAULT NULL,
-  PRIMARY KEY (STORAGE_RESOURCE_ID,USER_ID,GATEWAY_ID)
-);
-
-CREATE TABLE USER_COMPUTE_RESOURCE_PREFERENCE (
-  RESOURCE_ID varchar(255) NOT NULL,
-  USER_ID varchar(255) NOT NULL,
-  PREFERED_BATCH_QUEUE varchar(255) DEFAULT NULL,
-  RESOURCE_CS_TOKEN varchar(255) DEFAULT NULL,
-  GATEWAY_ID varchar(255) DEFAULT NULL,
-  LOGIN_USERNAME varchar(255) DEFAULT NULL,
-  ALLOCATION_PROJECT_NUMBER varchar(255) DEFAULT NULL,
-  QUALITY_OF_SERVICE varchar(255) DEFAULT NULL,
-  RESERVATION varchar(255) DEFAULT NULL,
-  RESERVATION_END_TIME TIMESTAMP DEFAULT NULL,
-  RESERVATION_START_TIME TIMESTAMP DEFAULT NULL,
-  SCRATCH_LOCATION varchar(255) DEFAULT NULL,
-  VALIDATED SMALLINT NOT NULL DEFAULT 0,
-  PRIMARY KEY (RESOURCE_ID,USER_ID,GATEWAY_ID)
-);
-
-CREATE TABLE GROUP_RESOURCE_PROFILE (
-  GATEWAY_ID varchar(255) NOT NULL,
-  GROUP_RESOURCE_PROFILE_ID varchar(255) NOT NULL,
-  GROUP_RESOURCE_PROFILE_NAME varchar(255) DEFAULT NULL,
-  CREATION_TIME BIGINT NOT NULL,
-  UPDATE_TIME BIGINT NOT NULL,
-  DEFAULT_CREDENTIAL_STORE_TOKEN varchar(255) DEFAULT NULL,
-  PRIMARY KEY (GROUP_RESOURCE_PROFILE_ID),
-  UNIQUE (GATEWAY_ID, GROUP_RESOURCE_PROFILE_NAME)
-);
-
-CREATE TABLE BATCH_QUEUE_RESOURCE_POLICY (
-  RESOURCE_POLICY_ID varchar(255) NOT NULL,
-  COMPUTE_RESOURCE_ID varchar(255) NOT NULL,
-  GROUP_RESOURCE_PROFILE_ID varchar(255) NOT NULL,
-  QUEUE_NAME varchar(255) NOT NULL,
-  MAX_ALLOWED_NODES INTEGER,
-  MAX_ALLOWED_CORES INTEGER,
-  MAX_ALLOWED_WALLTIME INTEGER,
-  PRIMARY KEY (RESOURCE_POLICY_ID),
-  FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE,
-  FOREIGN KEY (GROUP_RESOURCE_PROFILE_ID) REFERENCES GROUP_RESOURCE_PROFILE(GROUP_RESOURCE_PROFILE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE COMPUTE_RESOURCE_POLICY (
-    RESOURCE_POLICY_ID varchar(255) NOT NULL,
-    COMPUTE_RESOURCE_ID varchar(255) NOT NULL,
-    GROUP_RESOURCE_PROFILE_ID varchar(255) NOT NULL,
-    PRIMARY KEY (RESOURCE_POLICY_ID),
-    FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE,
-    FOREIGN KEY (GROUP_RESOURCE_PROFILE_ID) REFERENCES GROUP_RESOURCE_PROFILE(GROUP_RESOURCE_PROFILE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE COMPUTE_RESOURCE_POLICY_QUEUES (
-    RESOURCE_POLICY_ID varchar(255) NOT NULL,
-    QUEUE_NAME varchar(255) NOT NULL,
-    PRIMARY KEY (RESOURCE_POLICY_ID, QUEUE_NAME),
-    FOREIGN KEY (RESOURCE_POLICY_ID) REFERENCES COMPUTE_RESOURCE_POLICY(RESOURCE_POLICY_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE GROUP_COMPUTE_RESOURCE_PREFERENCE
-(
-        RESOURCE_ID VARCHAR(255) NOT NULL,
-        GROUP_RESOURCE_PROFILE_ID varchar(255) NOT NULL,
-        OVERRIDE_BY_AIRAVATA SMALLINT,
-        PREFERED_JOB_SUB_PROTOCOL VARCHAR(255),
-        PREFERED_DATA_MOVE_PROTOCOL VARCHAR(255),
-        PREFERED_BATCH_QUEUE VARCHAR(255),
-        SCRATCH_LOCATION VARCHAR(255),
-        ALLOCATION_PROJECT_NUMBER VARCHAR(255),
-        LOGIN_USERNAME VARCHAR(255),
-        RESOURCE_CS_TOKEN VARCHAR(255),
-        USAGE_REPORTING_GATEWAY_ID VARCHAR(255),
-        QUALITY_OF_SERVICE VARCHAR(255),
-        RESERVATION VARCHAR (255),
-        RESERVATION_START_TIME timestamp,
-        RESERVATION_END_TIME timestamp,
-        SSH_ACCOUNT_PROVISIONER VARCHAR(255),
-        SSH_ACCOUNT_PROVISIONER_ADDITIONAL_INFO VARCHAR(1000),
-        PRIMARY KEY(RESOURCE_ID,GROUP_RESOURCE_PROFILE_ID),
-        FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE,
-        FOREIGN KEY (GROUP_RESOURCE_PROFILE_ID) REFERENCES GROUP_RESOURCE_PROFILE(GROUP_RESOURCE_PROFILE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE GRP_SSH_ACC_PROV_CONFIG
-(
-        RESOURCE_ID VARCHAR(255) NOT NULL,
-        GROUP_RESOURCE_PROFILE_ID VARCHAR(255) NOT NULL,
-        CONFIG_NAME VARCHAR(255) NOT NULL,
-        CONFIG_VALUE VARCHAR(255),
-        PRIMARY KEY (RESOURCE_ID, CONFIG_NAME, GROUP_RESOURCE_PROFILE_ID),
-        FOREIGN KEY (RESOURCE_ID,GROUP_RESOURCE_PROFILE_ID) REFERENCES GROUP_COMPUTE_RESOURCE_PREFERENCE (RESOURCE_ID,GROUP_RESOURCE_PROFILE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE PARSING_TEMPLATE
-(
-        PARSING_TEMPLATE_ID VARCHAR(255) NOT NULL,
-        APP_INTERFACE_ID VARCHAR(255) NOT NULL,
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        PRIMARY KEY (PARSING_TEMPLATE_ID)
-);
-
-CREATE TABLE PARSER
-(
-        PARSER_ID VARCHAR(255) NOT NULL,
-        IMAGE_NAME VARCHAR(255) NOT NULL,
-        OUTPUT_DIR_PATH VARCHAR(255) NOT NULL,
-        INPUT_DIR_PATH VARCHAR(255) NOT NULL,
-        EXECUTION_COMMAND VARCHAR(255) NOT NULL,
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        PRIMARY KEY (PARSER_ID)
-);
-
-CREATE TABLE PARSER_OUTPUT
-(
-        PARSER_OUTPUT_ID VARCHAR(255) NOT NULL,
-        PARSER_OUTPUT_NAME VARCHAR(255) NOT NULL,
-        PARSER_OUTPUT_REQUIRED SMALLINT NOT NULL,
-        PARSER_ID VARCHAR(255) NOT NULL,
-        OUTPUT_TYPE VARCHAR(255) NOT NULL,
-        PRIMARY KEY (PARSER_OUTPUT_ID),
-        FOREIGN KEY (PARSER_ID) REFERENCES PARSER (PARSER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE PARSER_INPUT
-(
-        PARSER_INPUT_ID VARCHAR(255) NOT NULL,
-        PARSER_INPUT_NAME VARCHAR(255) NOT NULL,
-        PARSER_INPUT_REQUIRED SMALLINT NOT NULL,
-        PARSER_ID VARCHAR(255) NOT NULL,
-        INPUT_TYPE VARCHAR(255) NOT NULL,
-        PRIMARY KEY (PARSER_INPUT_ID),
-        FOREIGN KEY (PARSER_ID) REFERENCES PARSER (PARSER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE PARSING_TEMPLATE_INPUT
-(
-        PARSING_TEMPLATE_INPUT_ID VARCHAR(255) NOT NULL,
-        TARGET_PARSER_INPUT_ID VARCHAR(255) NOT NULL,
-        APPLICATION_OUTPUT_NAME VARCHAR(255),
-        VALUE VARCHAR(255),
-        PARSING_TEMPLATE_ID VARCHAR(255) NOT NULL,
-        PRIMARY KEY (PARSING_TEMPLATE_INPUT_ID),
-        FOREIGN KEY (TARGET_PARSER_INPUT_ID) REFERENCES PARSER_INPUT (PARSER_INPUT_ID) ON DELETE CASCADE,
-        FOREIGN KEY (PARSING_TEMPLATE_ID) REFERENCES PARSING_TEMPLATE (PARSING_TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE PARSER_CONNECTOR
-(
-        PARSER_CONNECTOR_ID VARCHAR(255) NOT NULL,
-        PARENT_PARSER_ID VARCHAR(255) NOT NULL,
-        CHILD_PARSER_ID VARCHAR(255) NOT NULL,
-        PARSING_TEMPLATE_ID VARCHAR(255) NOT NULL,
-        PRIMARY KEY (PARSER_CONNECTOR_ID),
-        FOREIGN KEY (PARENT_PARSER_ID) REFERENCES PARSER (PARSER_ID) ON DELETE CASCADE,
-        FOREIGN KEY (CHILD_PARSER_ID) REFERENCES PARSER (PARSER_ID) ON DELETE CASCADE,
-        FOREIGN KEY (PARSING_TEMPLATE_ID) REFERENCES PARSING_TEMPLATE (PARSING_TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE PARSER_CONNECTOR_INPUT
-(
-        PARSER_CONNECTOR_INPUT_ID VARCHAR(255) NOT NULL,
-        PARSER_INPUT_ID VARCHAR(255) NOT NULL,
-        PARSER_OUTPUT_ID VARCHAR(255),
-        VALUE VARCHAR(255),
-        PARSER_CONNECTOR_ID VARCHAR(255) NOT NULL,
-        PRIMARY KEY (PARSER_CONNECTOR_INPUT_ID),
-        FOREIGN KEY (PARSER_INPUT_ID) REFERENCES PARSER_INPUT (PARSER_INPUT_ID) ON DELETE CASCADE,
-        FOREIGN KEY (PARSER_OUTPUT_ID) REFERENCES PARSER_OUTPUT (PARSER_OUTPUT_ID) ON DELETE CASCADE,
-        FOREIGN KEY (PARSER_CONNECTOR_ID) REFERENCES PARSER_CONNECTOR (PARSER_CONNECTOR_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE GATEWAY_GROUPS
-(
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        ADMINS_GROUP_ID VARCHAR(255),
-        READ_ONLY_ADMINS_GROUP_ID VARCHAR(255),
-        DEFAULT_GATEWAY_USERS_GROUP_ID VARCHAR(255),
-        PRIMARY KEY(GATEWAY_ID)
-);
-
-CREATE TABLE CLOUD_JOB_SUBMISSION (
-  JOB_SUBMISSION_INTERFACE_ID varchar(255) NOT NULL,
-  EXECUTABLE_TYPE VARCHAR(255) DEFAULT NULL,
-  NODE_ID VARCHAR(255) DEFAULT NULL,
-  PROVIDER_NAME VARCHAR(255) DEFAULT NULL,
-  SECURITY_PROTOCOL VARCHAR(255) DEFAULT NULL,
-  USER_ACCOUNT_NAME VARCHAR(255) DEFAULT NULL,
-  PRIMARY KEY (JOB_SUBMISSION_INTERFACE_ID)
-);
-
-CREATE TABLE CONFIGURATION
-(
-  CONFIG_KEY VARCHAR(255),
-  CONFIG_VAL VARCHAR(255),
-  PRIMARY KEY(CONFIG_KEY, CONFIG_VAL)
-);
-
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL) VALUES('app_catalog_version', '0.16');
-
-
-
diff --git a/modules/ide-integration/src/main/resources/database_scripts/appcatalog-mysql.sql b/modules/ide-integration/src/main/resources/database_scripts/appcatalog-mysql.sql
deleted file mode 100644
index c6dfbc5..0000000
--- a/modules/ide-integration/src/main/resources/database_scripts/appcatalog-mysql.sql
+++ /dev/null
@@ -1,725 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-CREATE TABLE COMPUTE_RESOURCE
-(
-          RESOURCE_ID VARCHAR (255) NOT NULL,
-          HOST_NAME VARCHAR (255) NOT NULL,
-          RESOURCE_DESCRIPTION VARCHAR (255),
-          CREATION_TIME TIMESTAMP DEFAULT NOW(),
-          UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-          MAX_MEMORY_NODE INTEGER,
-          CPUS_PER_NODE INTEGER,
-          DEFAULT_NODE_COUNT INTEGER,
-          DEFAULT_CPU_COUNT INTEGER,
-          DEFAULT_WALLTIME INTEGER,
-          ENABLED SMALLINT,
-          GATEWAY_USAGE_REPORTING TINYINT(1),
-          GATEWAY_USAGE_MODULE_LOAD_CMD VARCHAR(500),
-          GATEWAY_USAGE_EXECUTABLE VARCHAR(255),
-          PRIMARY KEY (RESOURCE_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE HOST_ALIAS
-(
-         RESOURCE_ID VARCHAR(255) NOT NULL,
-         ALIAS VARCHAR(255),
-         PRIMARY KEY(RESOURCE_ID,ALIAS),
-         FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE HOST_IPADDRESS
-(
-         RESOURCE_ID VARCHAR(255) NOT NULL,
-         IP_ADDRESS VARCHAR(255),
-         PRIMARY KEY(RESOURCE_ID,IP_ADDRESS),
-         FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE GSISSH_SUBMISSION
-(
-         SUBMISSION_ID VARCHAR(255),
-         RESOURCE_JOB_MANAGER VARCHAR(255),
-         SSH_PORT INTEGER,
-         INSTALLED_PATH VARCHAR(255),
-         MONITOR_MODE VARCHAR(255),
-         PRIMARY KEY(SUBMISSION_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE GSISSH_EXPORT
-(
-         SUBMISSION_ID VARCHAR(255) NOT NULL,
-         EXPORT VARCHAR(255),
-         PRIMARY KEY(SUBMISSION_ID, EXPORT),
-         FOREIGN KEY (SUBMISSION_ID) REFERENCES GSISSH_SUBMISSION(SUBMISSION_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE GSISSH_PREJOBCOMMAND
-(
-         SUBMISSION_ID VARCHAR(255) NOT NULL,
-         COMMAND VARCHAR(255),
-         PRIMARY KEY(SUBMISSION_ID, COMMAND),
-         FOREIGN KEY (SUBMISSION_ID) REFERENCES GSISSH_SUBMISSION(SUBMISSION_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE GSISSH_POSTJOBCOMMAND
-(
-         SUBMISSION_ID VARCHAR(255) NOT NULL,
-         COMMAND VARCHAR(255),
-         PRIMARY KEY(SUBMISSION_ID, COMMAND),
-         FOREIGN KEY (SUBMISSION_ID) REFERENCES GSISSH_SUBMISSION(SUBMISSION_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE GLOBUS_SUBMISSION
-(
-         SUBMISSION_ID VARCHAR(255),
-         RESOURCE_JOB_MANAGER VARCHAR(255),
-         SECURITY_PROTOCAL VARCHAR(255),
-         PRIMARY KEY(SUBMISSION_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE UNICORE_SUBMISSION
-(
-         SUBMISSION_ID VARCHAR(255),
-         SECURITY_PROTOCAL VARCHAR(255),
-         UNICORE_ENDPOINT_URL VARCHAR(255),
-         PRIMARY KEY(SUBMISSION_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE UNICORE_DATAMOVEMENT
-(
-         DATAMOVEMENT_ID VARCHAR(255),
-         SECURITY_PROTOCAL VARCHAR(255),
-         UNICORE_ENDPOINT_URL VARCHAR(255),
-         PRIMARY KEY(DATAMOVEMENT_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE GLOBUS_GK_ENDPOINT
-(
-         SUBMISSION_ID VARCHAR(255) NOT NULL,
-         ENDPOINT VARCHAR(255),
-         PRIMARY KEY(SUBMISSION_ID, ENDPOINT),
-         FOREIGN KEY (SUBMISSION_ID) REFERENCES GLOBUS_SUBMISSION(SUBMISSION_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE RESOURCE_JOB_MANAGER
-(
-        RESOURCE_JOB_MANAGER_ID VARCHAR (255) NOT NULL,
-        PUSH_MONITORING_ENDPOINT VARCHAR (255),
-        JOB_MANAGER_BIN_PATH VARCHAR (255),
-        RESOURCE_JOB_MANAGER_TYPE VARCHAR (255) NOT NULL,
-        CREATION_TIME TIMESTAMP DEFAULT NOW(),
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (RESOURCE_JOB_MANAGER_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE SSH_JOB_SUBMISSION
-(
-        RESOURCE_JOB_MANAGER_ID VARCHAR (255) NOT NULL,
-        JOB_SUBMISSION_INTERFACE_ID VARCHAR (255) NOT NULL,
-        ALTERNATIVE_SSH_HOSTNAME VARCHAR (255),
-        SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
-        SSH_PORT INTEGER,
-        MONITOR_MODE VARCHAR (255),
-        CREATION_TIME TIMESTAMP DEFAULT NOW(),
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ,
-        PRIMARY KEY (JOB_SUBMISSION_INTERFACE_ID),
-        FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE SCP_DATA_MOVEMENT
-(
-        QUEUE_DESCRIPTION VARCHAR (255),
-        DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
-        SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
-        ALTERNATIVE_SCP_HOSTNAME VARCHAR (255),
-        SSH_PORT INTEGER,
-        CREATION_TIME TIMESTAMP DEFAULT NOW(),
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ,
-        PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE GRIDFTP_DATA_MOVEMENT
-(
-        DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
-        SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
-        CREATION_TIME TIMESTAMP DEFAULT NOW(),
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ,
-        PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE GRIDFTP_ENDPOINT
-(
-        ENDPOINT VARCHAR (255) NOT NULL,
-        DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
-        PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID,ENDPOINT),
-        CREATION_TIME TIMESTAMP DEFAULT NOW(),
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ,
-        FOREIGN KEY (DATA_MOVEMENT_INTERFACE_ID) REFERENCES GRIDFTP_DATA_MOVEMENT(DATA_MOVEMENT_INTERFACE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
---CREATE TABLE JOB_SUBMISSION_PROTOCOL
---(
---         RESOURCE_ID VARCHAR(255),
---         SUBMISSION_ID VARCHAR(255),
---         JOB_TYPE VARCHAR(255),
---         PRIMARY KEY(RESOURCE_ID,SUBMISSION_ID,JOB_TYPE),
---         FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
---);
---
---CREATE TABLE DATA_MOVEMENT_PROTOCOL
---(
---         RESOURCE_ID VARCHAR(255),
---         DATA_MOVE_ID VARCHAR(255),
---         DATA_MOVE_TYPE VARCHAR(255),
---         PRIMARY KEY(RESOURCE_ID,DATA_MOVE_ID,DATA_MOVE_TYPE),
---         FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
---);
-
-CREATE TABLE APPLICATION_MODULE
-(
-         MODULE_ID VARCHAR(255),
-         MODULE_NAME VARCHAR(255),
-         MODULE_VERSION VARCHAR(255),
-         MODULE_DESC VARCHAR(500),
-         GATEWAY_ID VARCHAR (255) NOT NULL,
-         CREATION_TIME TIMESTAMP DEFAULT NOW() NOT NULL,
-         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' NOT NULL,
-         PRIMARY KEY(MODULE_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE APPLICATION_DEPLOYMENT
-(
-         DEPLOYMENT_ID VARCHAR(255),
-         APP_MODULE_ID VARCHAR(255) NOT NULL,
-         COMPUTE_HOSTID VARCHAR(255) NOT NULL,
-         EXECUTABLE_PATH VARCHAR(255),
-	       PARALLELISM VARCHAR(255),
-         APPLICATION_DESC VARCHAR(255),
-         ENV_MODULE_LOAD_CMD VARCHAR(255),
-         CREATION_TIME TIMESTAMP DEFAULT NOW() NOT NULL,
-         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' NOT NULL,
-         GATEWAY_ID VARCHAR(255) NOT NULL,
-         DEFAULT_QUEUE_NAME VARCHAR(255),
-         DEFAULT_NODE_COUNT INTEGER,
-         DEFAULT_CPU_COUNT INTEGER,
-         DEFAULT_WALLTIME INTEGER,
-         EDITABLE_BY_USER TINYINT(1),
-         PRIMARY KEY(DEPLOYMENT_ID),
-         FOREIGN KEY (COMPUTE_HOSTID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE,
-         FOREIGN KEY (APP_MODULE_ID) REFERENCES APPLICATION_MODULE(MODULE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE MODULE_LOAD_CMD
-(
-        CMD VARCHAR (255) NOT NULL,
-        APP_DEPLOYMENT_ID VARCHAR (255) NOT NULL,
-        COMMAND_ORDER INTEGER,
-        PRIMARY KEY (APP_DEPLOYMENT_ID,CMD),
-        FOREIGN KEY (APP_DEPLOYMENT_ID) REFERENCES APPLICATION_DEPLOYMENT(DEPLOYMENT_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE PREJOB_COMMAND
-(
-         APPDEPLOYMENT_ID VARCHAR(255) NOT NULL,
-         COMMAND VARCHAR(255),
-         COMMAND_ORDER INTEGER,
-         PRIMARY KEY(APPDEPLOYMENT_ID, COMMAND),
-         FOREIGN KEY (APPDEPLOYMENT_ID) REFERENCES APPLICATION_DEPLOYMENT(DEPLOYMENT_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE POSTJOB_COMMAND
-(
-         APPDEPLOYMENT_ID VARCHAR(255) NOT NULL,
-         COMMAND VARCHAR(255),
-         COMMAND_ORDER INTEGER,
-         PRIMARY KEY(APPDEPLOYMENT_ID, COMMAND),
-         FOREIGN KEY (APPDEPLOYMENT_ID) REFERENCES APPLICATION_DEPLOYMENT(DEPLOYMENT_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE LIBRARY_PREPAND_PATH
-(
-         DEPLOYMENT_ID VARCHAR(255) NOT NULL,
-         NAME VARCHAR(255),
-         VALUE VARCHAR(255),
-         PRIMARY KEY(DEPLOYMENT_ID, NAME),
-         FOREIGN KEY (DEPLOYMENT_ID) REFERENCES APPLICATION_DEPLOYMENT(DEPLOYMENT_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE LIBRARY_APEND_PATH
-(
-         DEPLOYMENT_ID VARCHAR(255) NOT NULL,
-         NAME VARCHAR(255),
-         VALUE VARCHAR(255),
-         PRIMARY KEY(DEPLOYMENT_ID, NAME),
-         FOREIGN KEY (DEPLOYMENT_ID) REFERENCES APPLICATION_DEPLOYMENT(DEPLOYMENT_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE APP_ENVIRONMENT
-(
-         DEPLOYMENT_ID VARCHAR(255) NOT NULL,
-         NAME VARCHAR(255),
-         VALUE VARCHAR(255),
-         ENV_ORDER INTEGER,
-         PRIMARY KEY(DEPLOYMENT_ID, NAME),
-         FOREIGN KEY (DEPLOYMENT_ID) REFERENCES APPLICATION_DEPLOYMENT(DEPLOYMENT_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE APPLICATION_INTERFACE
-(
-         INTERFACE_ID VARCHAR(255),
-         APPLICATION_NAME VARCHAR(255),
-         APPLICATION_DESCRIPTION VARCHAR(500),
-         GATEWAY_ID VARCHAR(255) NOT NULL,
-         ARCHIVE_WORKING_DIRECTORY SMALLINT,
-         HAS_OPTIONAL_FILE_INPUTS TINYINT(1),
-         CREATION_TIME TIMESTAMP DEFAULT NOW() NOT NULL,
-         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' NOT NULL,
-         PRIMARY KEY(INTERFACE_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE APP_MODULE_MAPPING
-(
-         INTERFACE_ID VARCHAR(255) NOT NULL,
-         MODULE_ID VARCHAR(255) NOT NULL,
-         PRIMARY KEY(INTERFACE_ID, MODULE_ID),
-         FOREIGN KEY (INTERFACE_ID) REFERENCES APPLICATION_INTERFACE(INTERFACE_ID) ON DELETE CASCADE,
-         FOREIGN KEY (MODULE_ID) REFERENCES APPLICATION_MODULE(MODULE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE APPLICATION_INPUT
-(
-         INTERFACE_ID VARCHAR(255) NOT NULL,
-         INPUT_KEY VARCHAR(255),
-         INPUT_VALUE VARCHAR(255),
-         DATA_TYPE VARCHAR(255),
-         METADATA VARCHAR(4096),
-         APP_ARGUMENT VARCHAR(255),
-         STANDARD_INPUT SMALLINT,
-         USER_FRIENDLY_DESC VARCHAR(255),
-         INPUT_ORDER INTEGER,
-         IS_REQUIRED SMALLINT,
-         REQUIRED_TO_COMMANDLINE SMALLINT,
-         DATA_STAGED SMALLINT,
-         IS_READ_ONLY SMALLINT,
-         PRIMARY KEY(INTERFACE_ID,INPUT_KEY),
-         FOREIGN KEY (INTERFACE_ID) REFERENCES APPLICATION_INTERFACE(INTERFACE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE APPLICATION_OUTPUT
-(
-         INTERFACE_ID VARCHAR(255) NOT NULL,
-         OUTPUT_KEY VARCHAR(255),
-         OUTPUT_VALUE VARCHAR(255),
-         DATA_TYPE VARCHAR(255),
-         IS_REQUIRED SMALLINT,
-         REQUIRED_TO_COMMANDLINE SMALLINT,
-         DATA_MOVEMENT SMALLINT,
-         DATA_NAME_LOCATION VARCHAR(255),
-         SEARCH_QUERY VARCHAR(255),
-         APP_ARGUMENT VARCHAR(255),
-         OUTPUT_STREAMING SMALLINT,
-         PRIMARY KEY(INTERFACE_ID,OUTPUT_KEY),
-         FOREIGN KEY (INTERFACE_ID) REFERENCES APPLICATION_INTERFACE(INTERFACE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE GATEWAY_PROFILE
-(
-         GATEWAY_ID VARCHAR(255),
-	       CREATION_TIME TIMESTAMP DEFAULT NOW(),
-         UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00' ,
-         CS_TOKEN VARCHAR (255),
-         IDENTITY_SERVER_TENANT VARCHAR (255),
-         IDENTITY_SERVER_PWD_CRED_TOKEN VARCHAR (255),
-         PRIMARY KEY(GATEWAY_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE COMPUTE_RESOURCE_PREFERENCE
-(
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        RESOURCE_ID VARCHAR(255) NOT NULL,
-        OVERRIDE_BY_AIRAVATA SMALLINT,
-        PREFERED_JOB_SUB_PROTOCOL VARCHAR(255),
-        PREFERED_DATA_MOVE_PROTOCOL VARCHAR(255),
-        PREFERED_BATCH_QUEUE VARCHAR(255),
-        SCRATCH_LOCATION VARCHAR(255),
-        ALLOCATION_PROJECT_NUMBER VARCHAR(255),
-        LOGIN_USERNAME VARCHAR(255),
-        RESOURCE_CS_TOKEN VARCHAR(255),
-        USAGE_REPORTING_GATEWAY_ID VARCHAR(255),
-        QUALITY_OF_SERVICE VARCHAR(255),
-        RESERVATION VARCHAR (255),
-        RESERVATION_START_TIME timestamp,
-        RESERVATION_END_TIME timestamp,
-        SSH_ACCOUNT_PROVISIONER VARCHAR(255),
-        SSH_ACCOUNT_PROVISIONER_ADDITIONAL_INFO VARCHAR(1000),
-        PRIMARY KEY(GATEWAY_ID,RESOURCE_ID),
-        FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE,
-        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY_PROFILE(GATEWAY_ID) ON DELETE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE SSH_ACCOUNT_PROVISIONER_CONFIG
-(
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        RESOURCE_ID VARCHAR(255) NOT NULL,
-        CONFIG_NAME VARCHAR(255) NOT NULL,
-        CONFIG_VALUE VARCHAR(255),
-        PRIMARY KEY (GATEWAY_ID, RESOURCE_ID, CONFIG_NAME),
-        FOREIGN KEY (GATEWAY_ID, RESOURCE_ID) REFERENCES COMPUTE_RESOURCE_PREFERENCE (GATEWAY_ID, RESOURCE_ID) ON DELETE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE BATCH_QUEUE
-(
-        COMPUTE_RESOURCE_ID VARCHAR(255) NOT NULL,
-        MAX_RUNTIME INTEGER,
-        MAX_JOB_IN_QUEUE INTEGER,
-        QUEUE_DESCRIPTION VARCHAR(255),
-        QUEUE_NAME VARCHAR(255) NOT NULL,
-        MAX_PROCESSORS INTEGER,
-        MAX_NODES INTEGER,
-        MAX_MEMORY INTEGER,
-        CPU_PER_NODE INTEGER,
-        DEFAULT_NODE_COUNT INTEGER,
-        DEFAULT_CPU_COUNT INTEGER,
-        DEFAULT_WALLTIME INTEGER,
-        QUEUE_SPECIFIC_MACROS VARCHAR(255),
-        IS_DEFAULT_QUEUE TINYINT(1),
-        PRIMARY KEY (COMPUTE_RESOURCE_ID,QUEUE_NAME),
-        FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE COMPUTE_RESOURCE_FILE_SYSTEM
-(
-        COMPUTE_RESOURCE_ID VARCHAR (255) NOT NULL,
-        PATH VARCHAR (255),
-        FILE_SYSTEM VARCHAR (255) NOT NULL,
-        PRIMARY KEY (COMPUTE_RESOURCE_ID,FILE_SYSTEM),
-        FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE JOB_SUBMISSION_INTERFACE
-(
-        JOB_SUBMISSION_INTERFACE_ID VARCHAR (255) NOT NULL,
-        COMPUTE_RESOURCE_ID VARCHAR (255) NOT NULL,
-        JOB_SUBMISSION_PROTOCOL VARCHAR (255) NOT NULL,
-        PRIORITY_ORDER INTEGER,
-        CREATION_TIME TIMESTAMP DEFAULT NOW(),
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (COMPUTE_RESOURCE_ID,JOB_SUBMISSION_INTERFACE_ID),
-        FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
- 
-CREATE TABLE DATA_MOVEMENT_INTERFACE
-(
-        COMPUTE_RESOURCE_ID VARCHAR (255) NOT NULL,
-        DATA_MOVEMENT_PROTOCOL VARCHAR (255) NOT NULL,
-        DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
-        PRIORITY_ORDER INTEGER,
-        CREATION_TIME TIMESTAMP DEFAULT NOW(),
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (COMPUTE_RESOURCE_ID,DATA_MOVEMENT_INTERFACE_ID),
-        FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE STORAGE_RESOURCE
-(
-        STORAGE_RESOURCE_ID VARCHAR (255) NOT NULL,
-        HOST_NAME VARCHAR (255) NOT NULL,
-        DESCRIPTION VARCHAR (255),
-        ENABLED SMALLINT,
-        CREATION_TIME TIMESTAMP DEFAULT NOW(),
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (STORAGE_RESOURCE_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE STORAGE_INTERFACE
-(
-        STORAGE_RESOURCE_ID VARCHAR (255) NOT NULL,
-        DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
-        DATA_MOVEMENT_PROTOCOL VARCHAR (255) NOT NULL,
-        PRIORITY_ORDER INTEGER,
-        CREATION_TIME TIMESTAMP DEFAULT NOW(),
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (STORAGE_RESOURCE_ID,DATA_MOVEMENT_INTERFACE_ID),
-        FOREIGN KEY (STORAGE_RESOURCE_ID) REFERENCES STORAGE_RESOURCE(STORAGE_RESOURCE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE JOB_MANAGER_COMMAND
-(
-        RESOURCE_JOB_MANAGER_ID VARCHAR (255) NOT NULL,
-        COMMAND_TYPE VARCHAR (255) NOT NULL,
-        COMMAND VARCHAR (255),
-        PRIMARY KEY (RESOURCE_JOB_MANAGER_ID,COMMAND_TYPE),
-        FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE PARALLELISM_COMMAND
-(
-        RESOURCE_JOB_MANAGER_ID VARCHAR (255) NOT NULL,
-        COMMAND_TYPE VARCHAR (255) NOT NULL,
-        COMMAND VARCHAR (255),
-        PRIMARY KEY (RESOURCE_JOB_MANAGER_ID,COMMAND_TYPE),
-        FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE LOCAL_SUBMISSION
-(
-        RESOURCE_JOB_MANAGER_ID VARCHAR (255) NOT NULL,
-        JOB_SUBMISSION_INTERFACE_ID VARCHAR (255) NOT NULL,
-        SECURITY_PROTOCOL VARCHAR (255) NOT NULL,
-        CREATION_TIME TIMESTAMP DEFAULT NOW(),
-        UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (JOB_SUBMISSION_INTERFACE_ID),
-        FOREIGN KEY (RESOURCE_JOB_MANAGER_ID) REFERENCES RESOURCE_JOB_MANAGER(RESOURCE_JOB_MANAGER_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE LOCAL_DATA_MOVEMENT
-(
-        DATA_MOVEMENT_INTERFACE_ID VARCHAR (255) NOT NULL,
-        PRIMARY KEY (DATA_MOVEMENT_INTERFACE_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE STORAGE_PREFERENCE
-(
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        STORAGE_RESOURCE_ID VARCHAR(255) NOT NULL,
-        LOGIN_USERNAME VARCHAR(255),
-        FS_ROOT_LOCATION VARCHAR(255),
-        RESOURCE_CS_TOKEN VARCHAR(255),
-        PRIMARY KEY(GATEWAY_ID,STORAGE_RESOURCE_ID),
-        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY_PROFILE(GATEWAY_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE USER_RESOURCE_PROFILE (
-  USER_ID varchar(255) NOT NULL,
-  CREATION_TIME datetime DEFAULT NULL,
-  CS_TOKEN varchar(255) DEFAULT NULL,
-  GATEWAY_ID varchar(255) NOT NULL,
-  IDENTITY_SERVER_PWD_CRED_TOKEN varchar(255) DEFAULT NULL,
-  IDENTITY_SERVER_TENANT varchar(255) DEFAULT NULL,
-  UPDATE_TIME datetime DEFAULT NULL,
-  PRIMARY KEY (USER_ID,GATEWAY_ID)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE USER_STORAGE_PREFERENCE (
-  STORAGE_RESOURCE_ID varchar(255) NOT NULL,
-  USER_ID varchar(255) NOT NULL,
-  RESOURCE_CS_TOKEN varchar(255) DEFAULT NULL,
-  FS_ROOT_LOCATION varchar(255) DEFAULT NULL,
-  GATEWAY_ID varchar(255) NOT NULL,
-  LOGIN_USERNAME varchar(255) DEFAULT NULL,
-  PRIMARY KEY (STORAGE_RESOURCE_ID,USER_ID,GATEWAY_ID)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE USER_COMPUTE_RESOURCE_PREFERENCE (
-  RESOURCE_ID varchar(255) NOT NULL,
-  USER_ID varchar(255) NOT NULL,
-  PREFERED_BATCH_QUEUE varchar(255) DEFAULT NULL,
-  RESOURCE_CS_TOKEN varchar(255) DEFAULT NULL,
-  GATEWAY_ID varchar(255) NOT NULL,
-  LOGIN_USERNAME varchar(255) DEFAULT NULL,
-  ALLOCATION_PROJECT_NUMBER varchar(255) DEFAULT NULL,
-  QUALITY_OF_SERVICE varchar(255) DEFAULT NULL,
-  RESERVATION varchar(255) DEFAULT NULL,
-  RESERVATION_END_TIME datetime DEFAULT NULL,
-  RESERVATION_START_TIME datetime DEFAULT NULL,
-  SCRATCH_LOCATION varchar(255) DEFAULT NULL,
-  VALIDATED TINYINT(1) DEFAULT 0,
-  PRIMARY KEY (RESOURCE_ID,USER_ID,GATEWAY_ID)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE GROUP_RESOURCE_PROFILE (
-  GATEWAY_ID varchar(255) NOT NULL,
-  GROUP_RESOURCE_PROFILE_ID varchar(255) NOT NULL,
-  GROUP_RESOURCE_PROFILE_NAME varchar(255) DEFAULT NULL,
-  CREATION_TIME BIGINT NOT NULL,
-  UPDATE_TIME BIGINT NOT NULL,
-  DEFAULT_CREDENTIAL_STORE_TOKEN varchar(255) DEFAULT NULL,
-  PRIMARY KEY (GROUP_RESOURCE_PROFILE_ID),
-  UNIQUE (GATEWAY_ID, GROUP_RESOURCE_PROFILE_NAME)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE BATCH_QUEUE_RESOURCE_POLICY (
-  RESOURCE_POLICY_ID varchar(255) NOT NULL,
-  COMPUTE_RESOURCE_ID varchar(255) NOT NULL,
-  GROUP_RESOURCE_PROFILE_ID varchar(255) NOT NULL,
-  QUEUE_NAME varchar(255) NOT NULL,
-  MAX_ALLOWED_NODES INTEGER,
-  MAX_ALLOWED_CORES INTEGER,
-  MAX_ALLOWED_WALLTIME INTEGER,
-  PRIMARY KEY (RESOURCE_POLICY_ID),
-  FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE,
-  FOREIGN KEY (GROUP_RESOURCE_PROFILE_ID) REFERENCES GROUP_RESOURCE_PROFILE(GROUP_RESOURCE_PROFILE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE COMPUTE_RESOURCE_POLICY (
-    RESOURCE_POLICY_ID varchar(255) NOT NULL,
-    COMPUTE_RESOURCE_ID varchar(255) NOT NULL,
-    GROUP_RESOURCE_PROFILE_ID varchar(255) NOT NULL,
-    PRIMARY KEY (RESOURCE_POLICY_ID),
-    FOREIGN KEY (COMPUTE_RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE,
-    FOREIGN KEY (GROUP_RESOURCE_PROFILE_ID) REFERENCES GROUP_RESOURCE_PROFILE(GROUP_RESOURCE_PROFILE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE COMPUTE_RESOURCE_POLICY_QUEUES (
-    RESOURCE_POLICY_ID varchar(255) NOT NULL,
-    QUEUE_NAME varchar(255) NOT NULL,
-    PRIMARY KEY (RESOURCE_POLICY_ID, QUEUE_NAME),
-    FOREIGN KEY (RESOURCE_POLICY_ID) REFERENCES COMPUTE_RESOURCE_POLICY(RESOURCE_POLICY_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE GROUP_COMPUTE_RESOURCE_PREFERENCE
-(
-        RESOURCE_ID VARCHAR(255) NOT NULL,
-        GROUP_RESOURCE_PROFILE_ID varchar(255) NOT NULL,
-        OVERRIDE_BY_AIRAVATA SMALLINT,
-        PREFERED_JOB_SUB_PROTOCOL VARCHAR(255),
-        PREFERED_DATA_MOVE_PROTOCOL VARCHAR(255),
-        PREFERED_BATCH_QUEUE VARCHAR(255),
-        SCRATCH_LOCATION VARCHAR(255),
-        ALLOCATION_PROJECT_NUMBER VARCHAR(255),
-        LOGIN_USERNAME VARCHAR(255),
-        RESOURCE_CS_TOKEN VARCHAR(255),
-        USAGE_REPORTING_GATEWAY_ID VARCHAR(255),
-        QUALITY_OF_SERVICE VARCHAR(255),
-        SSH_ACCOUNT_PROVISIONER VARCHAR(255),
-        SSH_ACCOUNT_PROVISIONER_ADDITIONAL_INFO VARCHAR(1000),
-        PRIMARY KEY(RESOURCE_ID,GROUP_RESOURCE_PROFILE_ID),
-        FOREIGN KEY (RESOURCE_ID) REFERENCES COMPUTE_RESOURCE(RESOURCE_ID) ON DELETE CASCADE,
-        FOREIGN KEY (GROUP_RESOURCE_PROFILE_ID) REFERENCES GROUP_RESOURCE_PROFILE(GROUP_RESOURCE_PROFILE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE GRP_SSH_ACC_PROV_CONFIG
-(
-        RESOURCE_ID VARCHAR(255) NOT NULL,
-        GROUP_RESOURCE_PROFILE_ID VARCHAR(255) NOT NULL,
-        CONFIG_NAME VARCHAR(255) NOT NULL,
-        CONFIG_VALUE VARCHAR(255),
-        PRIMARY KEY (RESOURCE_ID, CONFIG_NAME, GROUP_RESOURCE_PROFILE_ID),
-        FOREIGN KEY (RESOURCE_ID,GROUP_RESOURCE_PROFILE_ID) REFERENCES GROUP_COMPUTE_RESOURCE_PREFERENCE (RESOURCE_ID,GROUP_RESOURCE_PROFILE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE PARSING_TEMPLATE
-(
-        PARSING_TEMPLATE_ID VARCHAR(255) NOT NULL,
-        APP_INTERFACE_ID VARCHAR(255) NOT NULL,
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        PRIMARY KEY (PARSING_TEMPLATE_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE PARSER
-(
-        PARSER_ID VARCHAR(255) NOT NULL,
-        IMAGE_NAME VARCHAR(255) NOT NULL,
-        OUTPUT_DIR_PATH VARCHAR(255) NOT NULL,
-        INPUT_DIR_PATH VARCHAR(255) NOT NULL,
-        EXECUTION_COMMAND VARCHAR(255) NOT NULL,
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        PRIMARY KEY (PARSER_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE PARSER_OUTPUT
-(
-        PARSER_OUTPUT_ID VARCHAR(255) NOT NULL,
-        PARSER_OUTPUT_NAME VARCHAR(255) NOT NULL,
-        PARSER_OUTPUT_REQUIRED TINYINT(1) NOT NULL,
-        PARSER_ID VARCHAR(255) NOT NULL,
-        OUTPUT_TYPE VARCHAR(255) NOT NULL,
-        PRIMARY KEY (PARSER_OUTPUT_ID),
-        FOREIGN KEY (PARSER_ID) REFERENCES PARSER (PARSER_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE PARSER_INPUT
-(
-        PARSER_INPUT_ID VARCHAR(255) NOT NULL,
-        PARSER_INPUT_NAME VARCHAR(255) NOT NULL,
-        PARSER_INPUT_REQUIRED TINYINT(1) NOT NULL,
-        PARSER_ID VARCHAR(255) NOT NULL,
-        INPUT_TYPE VARCHAR(255) NOT NULL,
-        PRIMARY KEY (PARSER_INPUT_ID),
-        FOREIGN KEY (PARSER_ID) REFERENCES PARSER (PARSER_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE PARSING_TEMPLATE_INPUT
-(
-        PARSING_TEMPLATE_INPUT_ID VARCHAR(255) NOT NULL,
-        TARGET_PARSER_INPUT_ID VARCHAR(255) NOT NULL,
-        APPLICATION_OUTPUT_NAME VARCHAR(255),
-        VALUE VARCHAR(255),
-        PARSING_TEMPLATE_ID VARCHAR(255) NOT NULL,
-        PRIMARY KEY (PARSING_TEMPLATE_INPUT_ID),
-        FOREIGN KEY (TARGET_PARSER_INPUT_ID) REFERENCES PARSER_INPUT (PARSER_INPUT_ID) ON DELETE CASCADE,
-        FOREIGN KEY (PARSING_TEMPLATE_ID) REFERENCES PARSING_TEMPLATE (PARSING_TEMPLATE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE PARSER_CONNECTOR
-(
-        PARSER_CONNECTOR_ID VARCHAR(255) NOT NULL,
-        PARENT_PARSER_ID VARCHAR(255) NOT NULL,
-        CHILD_PARSER_ID VARCHAR(255) NOT NULL,
-        PARSING_TEMPLATE_ID VARCHAR(255) NOT NULL,
-        PRIMARY KEY (PARSER_CONNECTOR_ID),
-        FOREIGN KEY (PARENT_PARSER_ID) REFERENCES PARSER (PARSER_ID) ON DELETE CASCADE,
-        FOREIGN KEY (CHILD_PARSER_ID) REFERENCES PARSER (PARSER_ID) ON DELETE CASCADE,
-        FOREIGN KEY (PARSING_TEMPLATE_ID) REFERENCES PARSING_TEMPLATE (PARSING_TEMPLATE_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE PARSER_CONNECTOR_INPUT
-(
-        PARSER_CONNECTOR_INPUT_ID VARCHAR(255) NOT NULL,
-        PARSER_INPUT_ID VARCHAR(255) NOT NULL,
-        PARSER_OUTPUT_ID VARCHAR(255),
-        VALUE VARCHAR(255),
-        PARSER_CONNECTOR_ID VARCHAR(255) NOT NULL,
-        PRIMARY KEY (PARSER_CONNECTOR_INPUT_ID),
-        FOREIGN KEY (PARSER_INPUT_ID) REFERENCES PARSER_INPUT (PARSER_INPUT_ID) ON DELETE CASCADE,
-        FOREIGN KEY (PARSER_OUTPUT_ID) REFERENCES PARSER_OUTPUT (PARSER_OUTPUT_ID) ON DELETE CASCADE,
-        FOREIGN KEY (PARSER_CONNECTOR_ID) REFERENCES PARSER_CONNECTOR (PARSER_CONNECTOR_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE GATEWAY_GROUPS
-(
-  GATEWAY_ID VARCHAR(255) NOT NULL,
-  ADMINS_GROUP_ID VARCHAR(255),
-  READ_ONLY_ADMINS_GROUP_ID VARCHAR(255),
-  DEFAULT_GATEWAY_USERS_GROUP_ID VARCHAR(255),
-  PRIMARY KEY(GATEWAY_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE CLOUD_JOB_SUBMISSION (
-  JOB_SUBMISSION_INTERFACE_ID varchar(255) NOT NULL,
-  EXECUTABLE_TYPE VARCHAR(255) DEFAULT NULL,
-  NODE_ID VARCHAR(255) DEFAULT NULL,
-  PROVIDER_NAME VARCHAR(255) DEFAULT NULL,
-  SECURITY_PROTOCOL VARCHAR(255) DEFAULT NULL,
-  USER_ACCOUNT_NAME VARCHAR(255) DEFAULT NULL,
-  PRIMARY KEY (JOB_SUBMISSION_INTERFACE_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE CONFIGURATION
-(
-          CONFIG_KEY VARCHAR(255),
-          CONFIG_VAL VARCHAR(255),
-          PRIMARY KEY(CONFIG_KEY, CONFIG_VAL)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL) VALUES('app_catalog_version', '0.16');
-
diff --git a/modules/ide-integration/src/main/resources/database_scripts/credstore-derby.sql b/modules/ide-integration/src/main/resources/database_scripts/credstore-derby.sql
deleted file mode 100644
index 7ccc001..0000000
--- a/modules/ide-integration/src/main/resources/database_scripts/credstore-derby.sql
+++ /dev/null
@@ -1,27 +0,0 @@
-CREATE TABLE COMMUNITY_USER (
-  GATEWAY_ID           VARCHAR(256) NOT NULL,
-  COMMUNITY_USER_NAME  VARCHAR(256) NOT NULL,
-  TOKEN_ID             VARCHAR(256) NOT NULL,
-  COMMUNITY_USER_EMAIL VARCHAR(256) NOT NULL,
-  PRIMARY KEY (GATEWAY_ID, COMMUNITY_USER_NAME, TOKEN_ID)
-);
-
-CREATE TABLE CREDENTIALS (
-  GATEWAY_ID     VARCHAR(256) NOT NULL,
-  TOKEN_ID       VARCHAR(256) NOT NULL,
-  CREDENTIAL     BLOB         NOT NULL,
-  PORTAL_USER_ID VARCHAR(256) NOT NULL,
-  TIME_PERSISTED TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-  DESCRIPTION VARCHAR(500),
-  CREDENTIAL_OWNER_TYPE VARCHAR(10) DEFAULT 'GATEWAY' NOT NULL,
-  PRIMARY KEY (GATEWAY_ID, TOKEN_ID)
-);
-
-CREATE TABLE CONFIGURATION (
-  CONFIG_KEY VARCHAR(255),
-  CONFIG_VAL VARCHAR(255),
-  PRIMARY KEY (CONFIG_KEY, CONFIG_VAL)
-);
-
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL) VALUES ('credential_store_version', '0.16');
-
diff --git a/modules/ide-integration/src/main/resources/database_scripts/credstore-mysql.sql b/modules/ide-integration/src/main/resources/database_scripts/credstore-mysql.sql
deleted file mode 100644
index a6c9144..0000000
--- a/modules/ide-integration/src/main/resources/database_scripts/credstore-mysql.sql
+++ /dev/null
@@ -1,27 +0,0 @@
-CREATE TABLE COMMUNITY_USER (
-  GATEWAY_ID           VARCHAR(100) NOT NULL,
-  COMMUNITY_USER_NAME  VARCHAR(100) NOT NULL,
-  TOKEN_ID             VARCHAR(100) NOT NULL,
-  COMMUNITY_USER_EMAIL VARCHAR(256) NOT NULL,
-  PRIMARY KEY (GATEWAY_ID, COMMUNITY_USER_NAME, TOKEN_ID)
-);
-
-CREATE TABLE CREDENTIALS (
-  GATEWAY_ID     VARCHAR(100) NOT NULL,
-  TOKEN_ID       VARCHAR(100) NOT NULL,
-  CREDENTIAL     BLOB         NOT NULL,
-  PORTAL_USER_ID VARCHAR(256) NOT NULL,
-  TIME_PERSISTED TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-  DESCRIPTION VARCHAR(500),
-  CREDENTIAL_OWNER_TYPE VARCHAR(10) DEFAULT 'GATEWAY' NOT NULL,
-  PRIMARY KEY (GATEWAY_ID, TOKEN_ID)
-);
-
-CREATE TABLE CONFIGURATION (
-  CONFIG_KEY VARCHAR(255),
-  CONFIG_VAL VARCHAR(255),
-  PRIMARY KEY (CONFIG_KEY, CONFIG_VAL)
-);
-
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL) VALUES ('credential_store_version', '0.16');
-
diff --git a/modules/ide-integration/src/main/resources/database_scripts/dozer_mapping.xml b/modules/ide-integration/src/main/resources/database_scripts/dozer_mapping.xml
deleted file mode 100644
index bf7cb33..0000000
--- a/modules/ide-integration/src/main/resources/database_scripts/dozer_mapping.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<mappings xmlns="http://dozer.sourceforge.net"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://dozer.sourceforge.net
-      http://dozer.sourceforge.net/schema/beanmapping.xsd">
-    <mapping>
-        <class-a>org.apache.airavata.model.appcatalog.storageresource.StorageResourceDescription</class-a>
-        <class-b>org.apache.airavata.registry.core.entities.appcatalog.StorageInterfaceEntity</class-b>
-        <field custom-converter="org.apache.airavata.registry.core.utils.DozerConverter.StorageDateConverter">
-            <a>creationTime</a>
-            <b>creationTime</b>
-        </field>
-        <field custom-converter="org.apache.airavata.registry.core.utils.DozerConverter.StorageDateConverter">
-            <a>updateTime</a>
-            <b>updateTime</b>
-        </field>
-    </mapping>
-    <mapping>
-        <class-a>org.apache.airavata.registry.core.entities.expcatalog.UserConfigurationDataEntity</class-a>
-        <class-b>org.apache.airavata.model.experiment.UserConfigurationDataModel</class-b>
-        <field>
-            <a>this</a>
-            <b>computationalResourceScheduling</b>
-        </field>
-    </mapping>
-</mappings>
\ No newline at end of file
diff --git a/modules/ide-integration/src/main/resources/database_scripts/expcatalog-derby.sql b/modules/ide-integration/src/main/resources/database_scripts/expcatalog-derby.sql
deleted file mode 100644
index 1cab313..0000000
--- a/modules/ide-integration/src/main/resources/database_scripts/expcatalog-derby.sql
+++ /dev/null
@@ -1,403 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-CREATE TABLE GATEWAY
-(
-        GATEWAY_ID VARCHAR(255),
-        GATEWAY_NAME VARCHAR(255),
-	      DOMAIN VARCHAR(255),
-	      EMAIL_ADDRESS VARCHAR(255),
-        GATEWAY_ACRONYM varchar(255),
-        GATEWAY_ADMIN_EMAIL varchar(255),
-        GATEWAY_ADMIN_FIRST_NAME varchar(255),
-        GATEWAY_APPROVAL_STATUS varchar(255),
-        GATEWAY_PUBLIC_ABSTRACT varchar(255),
-        GATEWAY_URL varchar(255),
-        GATEWAY_ADMIN_LAST_NAME varchar(255),
-        IDENTITY_SERVER_PASSWORD_TOKEN varchar(255),
-        IDENTITY_SERVER_USERNAME varchar(255),
-        GATEWAY_REVIEW_PROPOSAL_DESCRIPTION varchar(255),
-        DECLINED_REASON varchar(255),
-        OAUTH_CLIENT_SECRET varchar(255),
-        OAUTH_CLIENT_ID varchar(255),
-        REQUEST_CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        REQUESTER_USERNAME VARCHAR(255),
-        PRIMARY KEY (GATEWAY_ID)
-);
-
-CREATE TABLE NOTIFICATION
-(
-        NOTIFICATION_ID VARCHAR(255) NOT NULL,
-        GATEWAY_ID VARCHAR(255),
-        TITLE VARCHAR(255),
-        PRIORITY VARCHAR(255),
-        NOTIFICATION_MESSAGE VARCHAR(4096) NOT NULL,
-        PUBLISHED_DATE TIMESTAMP,
-        EXPIRATION_DATE TIMESTAMP,
-        CREATION_DATE TIMESTAMP,
-        PRIMARY KEY (NOTIFICATION_ID)
-);
-
-CREATE TABLE USERS
-(
-        AIRAVATA_INTERNAL_USER_ID VARCHAR(255) NOT NULL,
-        USER_NAME VARCHAR(255),
-        PASSWORD VARCHAR(255),
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        PRIMARY KEY (GATEWAY_ID, USER_NAME),
-        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
-        UNIQUE (AIRAVATA_INTERNAL_USER_ID)
-);
-
-CREATE TABLE GATEWAY_WORKER
-(
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        USER_NAME VARCHAR(255),
-        PRIMARY KEY (GATEWAY_ID, USER_NAME),
-        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE PROJECT
-(
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        USER_NAME VARCHAR(255),
-        PROJECT_NAME VARCHAR(255),
-        PROJECT_ID VARCHAR(255),
-        DESCRIPTION VARCHAR(255),
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        PRIMARY KEY (PROJECT_ID),
-        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE PROJECT_USER
-(
-        PROJECT_ID VARCHAR(255) NOT NULL,
-        USER_NAME VARCHAR(255) NOT NULL,
-        PRIMARY KEY (PROJECT_ID,USER_NAME),
-        FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE EXPERIMENT (
-        EXPERIMENT_ID varchar(255),
-        PROJECT_ID varchar(255) NOT NULL,
-        GATEWAY_ID varchar(255),
-        EXPERIMENT_TYPE varchar(255),
-        USER_NAME varchar(255),
-        EXPERIMENT_NAME varchar(255),
-        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        DESCRIPTION varchar(255),
-        EXECUTION_ID varchar(255),
-        GATEWAY_EXECUTION_ID varchar(255),
-        GATEWAY_INSTANCE_ID varchar(255),
-        ENABLE_EMAIL_NOTIFICATION SMALLINT,
-        EMAIL_ADDRESSES CLOB,
-        PRIMARY KEY (EXPERIMENT_ID),
-        FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID) ON DELETE CASCADE
-);
-
-
-CREATE TABLE EXPERIMENT_INPUT
-(
-        EXPERIMENT_ID varchar(255) NOT NULL,
-        INPUT_NAME varchar(255),
-        INPUT_VALUE CLOB,
-        DATA_TYPE varchar(255),
-        APPLICATION_ARGUMENT varchar(255),
-        STANDARD_INPUT SMALLINT,
-        USER_FRIENDLY_DESCRIPTION varchar(255),
-        METADATA varchar(4096),
-        INPUT_ORDER INT,
-        IS_REQUIRED SMALLINT,
-        REQUIRED_TO_ADDED_TO_CMD SMALLINT,
-        DATA_STAGED SMALLINT,
-        STORAGE_RESOURCE_ID varchar(255),
-        IS_READ_ONLY SMALLINT,
-        PRIMARY KEY(EXPERIMENT_ID,INPUT_NAME),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE EXPERIMENT_OUTPUT
-(
-        EXPERIMENT_ID varchar(255) NOT NULL,
-        OUTPUT_NAME varchar(255),
-        OUTPUT_VALUE CLOB,
-        DATA_TYPE varchar(255),
-        APPLICATION_ARGUMENT varchar(255),
-        IS_REQUIRED SMALLINT,
-        REQUIRED_TO_ADDED_TO_CMD SMALLINT,
-        DATA_MOVEMENT SMALLINT,
-        LOCATION varchar(255),
-        SEARCH_QUERY varchar(255),
-        OUTPUT_STREAMING SMALLINT,
-        STORAGE_RESOURCE_ID varchar(255),
-        PRIMARY KEY(EXPERIMENT_ID,OUTPUT_NAME),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-
-CREATE TABLE EXPERIMENT_STATUS (
-        STATUS_ID varchar(255),
-        EXPERIMENT_ID varchar(255) NOT NULL,
-        STATE varchar(255),
-        TIME_OF_STATE_CHANGE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        REASON CLOB,
-        PRIMARY KEY (STATUS_ID, EXPERIMENT_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-
-CREATE TABLE EXPERIMENT_ERROR (
-        ERROR_ID varchar(255),
-        EXPERIMENT_ID varchar(255) NOT NULL,
-        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        ACTUAL_ERROR_MESSAGE CLOB,
-        USER_FRIENDLY_MESSAGE CLOB,
-        TRANSIENT_OR_PERSISTENT SMALLINT,
-        ROOT_CAUSE_ERROR_ID_LIST CLOB,
-        PRIMARY KEY (ERROR_ID, EXPERIMENT_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE USER_CONFIGURATION_DATA (
-        EXPERIMENT_ID varchar(255) NOT NULL,
-        AIRAVATA_AUTO_SCHEDULE SMALLINT,
-        OVERRIDE_MANUAL_SCHEDULED_PARAMS SMALLINT,
-        SHARE_EXPERIMENT_PUBLICALLY SMALLINT,
-        THROTTLE_RESOURCES SMALLINT,
-        USER_DN varchar(255),
-        GENERATE_CERT SMALLINT,
-        RESOURCE_HOST_ID varchar(255),
-        TOTAL_CPU_COUNT INT,
-        NODE_COUNT INT,
-        NUMBER_OF_THREADS INT,
-        QUEUE_NAME varchar(255),
-        WALL_TIME_LIMIT INT,
-        TOTAL_PHYSICAL_MEMORY INT,
-        STATIC_WORKING_DIR varchar(255),
-        OVERRIDE_LOGIN_USER_NAME varchar(255),
-        OVERRIDE_SCRATCH_LOCATION varchar(255),
-        OVERRIDE_ALLOCATION_PROJECT_NUMBER varchar(255),
-        STORAGE_RESOURCE_ID varchar(255),
-        EXPERIMENT_DATA_DIR VARCHAR (512),
-        GROUP_RESOURCE_PROFILE_ID VARCHAR(255) DEFAULT NULL,
-        IS_USE_USER_CR_PREF SMALLINT,
-        PRIMARY KEY (EXPERIMENT_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE VIEW LATEST_EXPERIMENT_STATUS AS
-  select ES1.EXPERIMENT_ID AS EXPERIMENT_ID, ES1.STATE AS STATE, ES1.TIME_OF_STATE_CHANGE AS TIME_OF_STATE_CHANGE
-  from EXPERIMENT_STATUS ES1 LEFT JOIN EXPERIMENT_STATUS ES2 ON (ES1.EXPERIMENT_ID = ES2.EXPERIMENT_ID
-    AND ES1.TIME_OF_STATE_CHANGE < ES2.TIME_OF_STATE_CHANGE)  WHERE ES2.TIME_OF_STATE_CHANGE is NULL;
-
-CREATE VIEW EXPERIMENT_SUMMARY AS
-  select E.EXPERIMENT_ID AS EXPERIMENT_ID, E.PROJECT_ID AS PROJECT_ID, E.GATEWAY_ID AS GATEWAY_ID,
-  E.USER_NAME AS USER_NAME, E.EXECUTION_ID AS EXECUTION_ID, E.EXPERIMENT_NAME AS EXPERIMENT_NAME,
-  E.CREATION_TIME AS CREATION_TIME, E.DESCRIPTION AS DESCRIPTION, ES.STATE AS STATE, UD.RESOURCE_HOST_ID
-  AS RESOURCE_HOST_ID, ES.TIME_OF_STATE_CHANGE AS TIME_OF_STATE_CHANGE
-    from ((EXPERIMENT E left join LATEST_EXPERIMENT_STATUS ES on((E.EXPERIMENT_ID = ES.EXPERIMENT_ID)))
-    left join USER_CONFIGURATION_DATA UD on((E.EXPERIMENT_ID = UD.EXPERIMENT_ID))) where true;
-
-CREATE TABLE PROCESS (
-        PROCESS_ID varchar(255),
-        EXPERIMENT_ID varchar(255) NOT NULL,
-        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        LAST_UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        PROCESS_DETAIL CLOB,
-        APPLICATION_INTERFACE_ID varchar(255),
-        TASK_DAG CLOB,
-        APPLICATION_DEPLOYMENT_ID varchar(255),
-        COMPUTE_RESOURCE_ID varchar(255),
-        GATEWAY_EXECUTION_ID varchar(255),
-        ENABLE_EMAIL_NOTIFICATION SMALLINT,
-        EMAIL_ADDRESSES CLOB,
-        STORAGE_RESOURCE_ID varchar(255),
-        USER_DN varchar(255),
-        GENERATE_CERT SMALLINT,
-        EXPERIMENT_DATA_DIR VARCHAR (512),
-        USERNAME VARCHAR (255),
-        GROUP_RESOURCE_PROFILE_ID VARCHAR (255) DEFAULT NULL,
-        USE_USER_CR_PREF SMALLINT,
-        PRIMARY KEY (PROCESS_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE PROCESS_INPUT
-(
-        PROCESS_ID varchar(255) NOT NULL,
-        INPUT_NAME varchar(255),
-        INPUT_VALUE CLOB,
-        DATA_TYPE varchar(255),
-        APPLICATION_ARGUMENT varchar(255),
-        STANDARD_INPUT SMALLINT,
-        USER_FRIENDLY_DESCRIPTION varchar(255),
-        METADATA varchar(4096),
-        INPUT_ORDER INT,
-        IS_REQUIRED SMALLINT,
-        REQUIRED_TO_ADDED_TO_CMD SMALLINT,
-        DATA_STAGED SMALLINT,
-        STORAGE_RESOURCE_ID varchar(255),
-        IS_READ_ONLY SMALLINT,
-        PRIMARY KEY(PROCESS_ID,INPUT_NAME),
-        FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE PROCESS_OUTPUT
-(
-        PROCESS_ID varchar(255) NOT NULL,
-        OUTPUT_NAME varchar(255),
-        OUTPUT_VALUE CLOB,
-        DATA_TYPE varchar(255),
-        APPLICATION_ARGUMENT varchar(255),
-        IS_REQUIRED SMALLINT,
-        REQUIRED_TO_ADDED_TO_CMD SMALLINT,
-        DATA_MOVEMENT SMALLINT,
-        LOCATION varchar(255),
-        SEARCH_QUERY varchar(255),
-        OUTPUT_STREAMING SMALLINT,
-        STORAGE_RESOURCE_ID varchar(255),
-        PRIMARY KEY(PROCESS_ID,OUTPUT_NAME),
-        FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
-);
-
-
-CREATE TABLE PROCESS_STATUS (
-        STATUS_ID varchar(255),
-        PROCESS_ID varchar(255) NOT NULL,
-        STATE varchar(255),
-        TIME_OF_STATE_CHANGE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        REASON CLOB,
-        PRIMARY KEY (STATUS_ID, PROCESS_ID),
-        FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
-);
-
-
-CREATE TABLE PROCESS_ERROR (
-        ERROR_ID varchar(255),
-        PROCESS_ID varchar(255) NOT NULL,
-        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        ACTUAL_ERROR_MESSAGE CLOB,
-        USER_FRIENDLY_MESSAGE CLOB,
-        TRANSIENT_OR_PERSISTENT SMALLINT,
-        ROOT_CAUSE_ERROR_ID_LIST CLOB,
-        PRIMARY KEY (ERROR_ID, PROCESS_ID),
-        FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE PROCESS_RESOURCE_SCHEDULE (
-        PROCESS_ID varchar(255) NOT NULL,
-        RESOURCE_HOST_ID varchar(255),
-        TOTAL_CPU_COUNT INT,
-        NODE_COUNT INT,
-        NUMBER_OF_THREADS INT,
-        QUEUE_NAME varchar(255),
-        WALL_TIME_LIMIT INT,
-        TOTAL_PHYSICAL_MEMORY INT,
-        STATIC_WORKING_DIR varchar(255),
-        OVERRIDE_ALLOCATION_PROJECT_NUMBER varchar(255),
-        OVERRIDE_LOGIN_USER_NAME varchar(255),
-        OVERRIDE_SCRATCH_LOCATION varchar(255),
-        PRIMARY KEY (PROCESS_ID),
-        FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE TASK (
-        TASK_ID varchar(255),
-        TASK_TYPE varchar(255),
-        PARENT_PROCESS_ID varchar(255) NOT NULL,
-        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        LAST_UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        TASK_DETAIL CLOB,
-        SUB_TASK_MODEL BLOB,
-        PRIMARY KEY (TASK_ID),
-        FOREIGN KEY (PARENT_PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE TASK_STATUS (
-        STATUS_ID varchar(255),
-        TASK_ID varchar(255) NOT NULL,
-        STATE varchar(255),
-        TIME_OF_STATE_CHANGE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        REASON CLOB,
-        PRIMARY KEY (STATUS_ID, TASK_ID),
-        FOREIGN KEY (TASK_ID) REFERENCES TASK(TASK_ID) ON DELETE CASCADE
-);
-
-
-CREATE TABLE TASK_ERROR (
-        ERROR_ID varchar(255),
-        TASK_ID varchar(255) NOT NULL,
-        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        ACTUAL_ERROR_MESSAGE CLOB,
-        USER_FRIENDLY_MESSAGE CLOB,
-        TRANSIENT_OR_PERSISTENT SMALLINT,
-        ROOT_CAUSE_ERROR_ID_LIST CLOB,
-        PRIMARY KEY (ERROR_ID, TASK_ID),
-        FOREIGN KEY (TASK_ID) REFERENCES TASK(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE JOB (
-        JOB_ID varchar(255),
-        TASK_ID varchar(255) NOT NULL,
-        PROCESS_ID varchar(255),
-        JOB_DESCRIPTION CLOB NOT NULL,
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        COMPUTE_RESOURCE_CONSUMED varchar(255),
-        JOB_NAME varchar(255),
-        WORKING_DIR varchar(255),
-        STD_OUT CLOB,
-        STD_ERR CLOB,
-        EXIT_CODE INT,
-        PRIMARY KEY (JOB_ID, TASK_ID),
-        FOREIGN KEY (TASK_ID) REFERENCES TASK(TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE JOB_STATUS (
-        STATUS_ID varchar(255),
-        JOB_ID varchar(255) NOT NULL,
-        TASK_ID varchar(255) NOT NULL,
-        STATE varchar(255),
-        TIME_OF_STATE_CHANGE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        REASON CLOB,
-        PRIMARY KEY (STATUS_ID, JOB_ID, TASK_ID),
-        FOREIGN KEY (JOB_ID, TASK_ID) REFERENCES JOB(JOB_ID, TASK_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE QUEUE_STATUS(
-        HOST_NAME VARCHAR(255) NOT NULL,
-        QUEUE_NAME VARCHAR(255) NOT NULL,
-        CREATED_TIME BIGINT NOT NULL,
-        QUEUE_UP SMALLINT,
-        RUNNING_JOBS INT,
-        QUEUED_JOBS INT,
-        PRIMARY KEY (HOST_NAME, QUEUE_NAME, CREATED_TIME)
-);
-
-CREATE TABLE CONFIGURATION
-(
-        CONFIG_KEY VARCHAR(255),
-        CONFIG_VAL VARCHAR(255),
-        EXPIRE_DATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        CATEGORY_ID VARCHAR (255),
-        PRIMARY KEY(CONFIG_KEY, CONFIG_VAL, CATEGORY_ID)
-);
-
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL, EXPIRE_DATE, CATEGORY_ID) VALUES('registry.version', '0.16', CURRENT_TIMESTAMP ,'SYSTEM');
diff --git a/modules/ide-integration/src/main/resources/database_scripts/expcatalog-mysql.sql b/modules/ide-integration/src/main/resources/database_scripts/expcatalog-mysql.sql
deleted file mode 100644
index 1b26cf0..0000000
--- a/modules/ide-integration/src/main/resources/database_scripts/expcatalog-mysql.sql
+++ /dev/null
@@ -1,405 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-CREATE TABLE GATEWAY
-(
-        GATEWAY_ID VARCHAR(255),
-        GATEWAY_NAME VARCHAR(255),
-	      DOMAIN VARCHAR(255),
-	      EMAIL_ADDRESS VARCHAR(255),
-        GATEWAY_ACRONYM varchar(255),
-        GATEWAY_ADMIN_EMAIL varchar(255),
-        GATEWAY_ADMIN_FIRST_NAME varchar(255),
-        GATEWAY_APPROVAL_STATUS varchar(255),
-        GATEWAY_PUBLIC_ABSTRACT varchar(255),
-        GATEWAY_URL varchar(255),
-        GATEWAY_ADMIN_LAST_NAME varchar(255),
-        IDENTITY_SERVER_PASSWORD_TOKEN varchar(255),
-        IDENTITY_SERVER_USERNAME varchar(255),
-        GATEWAY_REVIEW_PROPOSAL_DESCRIPTION varchar(255),
-        DECLINED_REASON varchar(255),
-        OAUTH_CLIENT_SECRET varchar(255),
-        OAUTH_CLIENT_ID varchar(255),
-        REQUEST_CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        REQUESTER_USERNAME VARCHAR(255),
-        PRIMARY KEY (GATEWAY_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE NOTIFICATION
-(
-        NOTIFICATION_ID VARCHAR(255) NOT NULL,
-        GATEWAY_ID VARCHAR(255),
-        TITLE VARCHAR(255),
-        PRIORITY VARCHAR(255),
-        NOTIFICATION_MESSAGE VARCHAR(4096) NOT NULL,
-        PUBLISHED_DATE TIMESTAMP,
-        EXPIRATION_DATE TIMESTAMP,
-        CREATION_DATE TIMESTAMP,
-        PRIMARY KEY (NOTIFICATION_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE USERS
-(
-        AIRAVATA_INTERNAL_USER_ID VARCHAR(255) NOT NULL,
-        USER_NAME VARCHAR(255),
-        PASSWORD VARCHAR(255),
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        PRIMARY KEY (GATEWAY_ID, USER_NAME),
-        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE,
-        UNIQUE (AIRAVATA_INTERNAL_USER_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE GATEWAY_WORKER
-(
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        USER_NAME VARCHAR(255),
-        PRIMARY KEY (GATEWAY_ID, USER_NAME),
-        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE PROJECT
-(
-        GATEWAY_ID VARCHAR(255) NOT NULL,
-        USER_NAME VARCHAR(255),
-        PROJECT_NAME VARCHAR(255),
-        PROJECT_ID VARCHAR(255),
-        DESCRIPTION VARCHAR(255),
-        CREATION_TIME TIMESTAMP DEFAULT NOW(),
-        PRIMARY KEY (PROJECT_ID),
-        FOREIGN KEY (GATEWAY_ID) REFERENCES GATEWAY(GATEWAY_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE PROJECT_USER
-(
-        PROJECT_ID VARCHAR(255) NOT NULL,
-        USER_NAME VARCHAR(255) NOT NULL,
-        PRIMARY KEY (PROJECT_ID,USER_NAME),
-        FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE EXPERIMENT (
-        EXPERIMENT_ID varchar(255),
-        PROJECT_ID varchar(255) NOT NULL,
-        GATEWAY_ID varchar(255),
-        EXPERIMENT_TYPE varchar(255),
-        USER_NAME varchar(255),
-        EXPERIMENT_NAME varchar(255),
-        CREATION_TIME timestamp DEFAULT NOW(),
-        DESCRIPTION varchar(255),
-        EXECUTION_ID varchar(255),
-        GATEWAY_EXECUTION_ID varchar(255),
-        GATEWAY_INSTANCE_ID varchar(255),
-        ENABLE_EMAIL_NOTIFICATION tinyint(1),
-        EMAIL_ADDRESSES text,
-        PRIMARY KEY (EXPERIMENT_ID),
-        FOREIGN KEY (PROJECT_ID) REFERENCES PROJECT(PROJECT_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-
-CREATE TABLE EXPERIMENT_INPUT
-(
-        EXPERIMENT_ID varchar(255) NOT NULL,
-        INPUT_NAME varchar(255),
-        INPUT_VALUE text,
-        DATA_TYPE varchar(255),
-        APPLICATION_ARGUMENT varchar(255),
-        STANDARD_INPUT tinyint(1),
-        USER_FRIENDLY_DESCRIPTION varchar(255),
-        METADATA varchar(4096),
-        INPUT_ORDER int(11),
-        IS_REQUIRED tinyint(1),
-        REQUIRED_TO_ADDED_TO_CMD tinyint(1),
-        DATA_STAGED tinyint(1),
-        STORAGE_RESOURCE_ID varchar(255),
-        IS_READ_ONLY tinyint(1),
-        PRIMARY KEY(EXPERIMENT_ID,INPUT_NAME),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE EXPERIMENT_OUTPUT
-(
-        EXPERIMENT_ID varchar(255) NOT NULL,
-        OUTPUT_NAME varchar(255),
-        OUTPUT_VALUE text,
-        DATA_TYPE varchar(255),
-        APPLICATION_ARGUMENT varchar(255),
-        IS_REQUIRED tinyint(1),
-        REQUIRED_TO_ADDED_TO_CMD tinyint(1),
-        DATA_MOVEMENT tinyint(1),
-        LOCATION varchar(255),
-        SEARCH_QUERY varchar(255),
-        OUTPUT_STREAMING SMALLINT,
-        STORAGE_RESOURCE_ID varchar(255),
-        PRIMARY KEY(EXPERIMENT_ID,OUTPUT_NAME),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-
-CREATE TABLE EXPERIMENT_STATUS (
-        STATUS_ID varchar(255),
-        EXPERIMENT_ID varchar(255) NOT NULL,
-        STATE varchar(255),
-        TIME_OF_STATE_CHANGE TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
-        REASON LONGTEXT,
-        PRIMARY KEY (STATUS_ID, EXPERIMENT_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-
-CREATE TABLE EXPERIMENT_ERROR (
-        ERROR_ID varchar(255),
-        EXPERIMENT_ID varchar(255) NOT NULL,
-        CREATION_TIME timestamp DEFAULT NOW(),
-        ACTUAL_ERROR_MESSAGE text,
-        USER_FRIENDLY_MESSAGE text,
-        TRANSIENT_OR_PERSISTENT tinyint(1),
-        ROOT_CAUSE_ERROR_ID_LIST text,
-        PRIMARY KEY (ERROR_ID, EXPERIMENT_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE USER_CONFIGURATION_DATA (
-        EXPERIMENT_ID varchar(255) NOT NULL,
-        AIRAVATA_AUTO_SCHEDULE tinyint(1),
-        OVERRIDE_MANUAL_SCHEDULED_PARAMS tinyint(1),
-        SHARE_EXPERIMENT_PUBLICALLY tinyint(1),
-        THROTTLE_RESOURCES tinyint(1),
-        USER_DN varchar(255),
-        GENERATE_CERT tinyint(1),
-        RESOURCE_HOST_ID varchar(255),
-        TOTAL_CPU_COUNT int(11),
-        NODE_COUNT int(11),
-        NUMBER_OF_THREADS int(11),
-        QUEUE_NAME varchar(255),
-        WALL_TIME_LIMIT int(11),
-        TOTAL_PHYSICAL_MEMORY int(11),
-        STATIC_WORKING_DIR varchar(255),
-        OVERRIDE_LOGIN_USER_NAME varchar(255),
-        OVERRIDE_SCRATCH_LOCATION varchar(255),
-        OVERRIDE_ALLOCATION_PROJECT_NUMBER varchar(255),
-        STORAGE_RESOURCE_ID varchar(255),
-        EXPERIMENT_DATA_DIR VARCHAR (512),
-        GROUP_RESOURCE_PROFILE_ID VARCHAR(255) DEFAULT NULL,
-        IS_USE_USER_CR_PREF TINYINT(1),
-        PRIMARY KEY (EXPERIMENT_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-
-CREATE VIEW LATEST_EXPERIMENT_STATUS AS
-  select ES1.EXPERIMENT_ID AS EXPERIMENT_ID, ES1.STATE AS STATE, ES1.TIME_OF_STATE_CHANGE AS TIME_OF_STATE_CHANGE
-  from EXPERIMENT_STATUS ES1 LEFT JOIN EXPERIMENT_STATUS ES2 ON (ES1.EXPERIMENT_ID = ES2.EXPERIMENT_ID
-    AND ES1.TIME_OF_STATE_CHANGE < ES2.TIME_OF_STATE_CHANGE)  WHERE ES2.TIME_OF_STATE_CHANGE is NULL;
-
-CREATE VIEW EXPERIMENT_SUMMARY AS
-  select E.EXPERIMENT_ID AS EXPERIMENT_ID, E.PROJECT_ID AS PROJECT_ID, E.GATEWAY_ID AS GATEWAY_ID,
-  E.USER_NAME AS USER_NAME, E.EXECUTION_ID AS EXECUTION_ID, E.EXPERIMENT_NAME AS EXPERIMENT_NAME,
-  E.CREATION_TIME AS CREATION_TIME, E.DESCRIPTION AS DESCRIPTION, ES.STATE AS STATE, UD.RESOURCE_HOST_ID
-  AS RESOURCE_HOST_ID, ES.TIME_OF_STATE_CHANGE AS TIME_OF_STATE_CHANGE
-    from ((EXPERIMENT E left join LATEST_EXPERIMENT_STATUS ES on((E.EXPERIMENT_ID = ES.EXPERIMENT_ID)))
-    left join USER_CONFIGURATION_DATA UD on((E.EXPERIMENT_ID = UD.EXPERIMENT_ID))) where 1;
-
-
-CREATE TABLE PROCESS (
-        PROCESS_ID varchar(255),
-        EXPERIMENT_ID varchar(255) NOT NULL,
-        CREATION_TIME  TIMESTAMP DEFAULT NOW(),
-        LAST_UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PROCESS_DETAIL text,
-        APPLICATION_INTERFACE_ID varchar(255),
-        TASK_DAG TEXT,
-        APPLICATION_DEPLOYMENT_ID varchar(255),
-        COMPUTE_RESOURCE_ID varchar(255),
-        GATEWAY_EXECUTION_ID varchar(255),
-        ENABLE_EMAIL_NOTIFICATION BOOLEAN,
-        EMAIL_ADDRESSES TEXT,
-        STORAGE_RESOURCE_ID varchar(255),
-        USER_DN varchar(255),
-        GENERATE_CERT SMALLINT,
-        EXPERIMENT_DATA_DIR VARCHAR (512),
-        USERNAME VARCHAR (255),
-        GROUP_RESOURCE_PROFILE_ID VARCHAR (255) DEFAULT NULL,
-        USE_USER_CR_PREF TINYINT(1),
-        PRIMARY KEY (PROCESS_ID),
-        FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE PROCESS_INPUT
-(
-        PROCESS_ID varchar(255) NOT NULL,
-        INPUT_NAME varchar(255),
-        INPUT_VALUE text,
-        DATA_TYPE varchar(255),
-        APPLICATION_ARGUMENT varchar(255),
-        STANDARD_INPUT tinyint(1),
-        USER_FRIENDLY_DESCRIPTION varchar(255),
-        METADATA varchar(4096),
-        INPUT_ORDER int(11),
-        IS_REQUIRED tinyint(1),
-        REQUIRED_TO_ADDED_TO_CMD tinyint(1),
-        DATA_STAGED tinyint(1),
-        STORAGE_RESOURCE_ID varchar(255),
-        IS_READ_ONLY tinyint(1),
-        PRIMARY KEY(PROCESS_ID,INPUT_NAME),
-        FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE PROCESS_OUTPUT
-(
-        PROCESS_ID varchar(255) NOT NULL,
-        OUTPUT_NAME varchar(255),
-        OUTPUT_VALUE LONGTEXT,
-        DATA_TYPE varchar(255),
-        APPLICATION_ARGUMENT varchar(255),
-        IS_REQUIRED tinyint(1),
-        REQUIRED_TO_ADDED_TO_CMD tinyint(1),
-        DATA_MOVEMENT tinyint(1),
-        LOCATION varchar(255),
-        SEARCH_QUERY varchar(255),
-        OUTPUT_STREAMING SMALLINT,
-        STORAGE_RESOURCE_ID varchar(255),
-        PRIMARY KEY(PROCESS_ID,OUTPUT_NAME),
-        FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-
-CREATE TABLE PROCESS_STATUS (
-        STATUS_ID varchar(255),
-        PROCESS_ID varchar(255) NOT NULL,
-        STATE varchar(255),
-        TIME_OF_STATE_CHANGE TIMESTAMP(6) DEFAULT NOW(6) ON UPDATE NOW(6),
-        REASON LONGTEXT,
-        PRIMARY KEY (STATUS_ID, PROCESS_ID),
-        FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-
-CREATE TABLE PROCESS_ERROR (
-        ERROR_ID varchar(255),
-        PROCESS_ID varchar(255) NOT NULL,
-        CREATION_TIME timestamp DEFAULT NOW(),
-        ACTUAL_ERROR_MESSAGE text,
-        USER_FRIENDLY_MESSAGE text,
-        TRANSIENT_OR_PERSISTENT tinyint(1),
-        ROOT_CAUSE_ERROR_ID_LIST text,
-        PRIMARY KEY (ERROR_ID, PROCESS_ID),
-        FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE PROCESS_RESOURCE_SCHEDULE (
-        PROCESS_ID varchar(255) NOT NULL,
-        RESOURCE_HOST_ID varchar(255),
-        TOTAL_CPU_COUNT int(11),
-        NODE_COUNT int(11),
-        NUMBER_OF_THREADS int(11),
-        QUEUE_NAME varchar(255),
-        WALL_TIME_LIMIT int(11),
-        TOTAL_PHYSICAL_MEMORY int(11),
-        STATIC_WORKING_DIR varchar(255),
-        OVERRIDE_ALLOCATION_PROJECT_NUMBER varchar(255),
-        OVERRIDE_LOGIN_USER_NAME varchar(255),
-        OVERRIDE_SCRATCH_LOCATION varchar(255),
-        PRIMARY KEY (PROCESS_ID),
-        FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE TASK (
-        TASK_ID varchar(255),
-        TASK_TYPE varchar(255),
-        PARENT_PROCESS_ID varchar(255) NOT NULL,
-        CREATION_TIME timestamp DEFAULT NOW(),
-        LAST_UPDATE_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        TASK_DETAIL text,
-        SUB_TASK_MODEL BLOB,
-        PRIMARY KEY (TASK_ID),
-        FOREIGN KEY (PARENT_PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE TASK_STATUS (
-        STATUS_ID varchar(255),
-        TASK_ID varchar(255) NOT NULL,
-        STATE varchar(255),
-        TIME_OF_STATE_CHANGE TIMESTAMP(6) DEFAULT NOW(6) ON UPDATE NOW(6),
-        REASON LONGTEXT,
-        PRIMARY KEY (STATUS_ID, TASK_ID),
-        FOREIGN KEY (TASK_ID) REFERENCES TASK(TASK_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-
-CREATE TABLE TASK_ERROR (
-        ERROR_ID varchar(255),
-        TASK_ID varchar(255) NOT NULL,
-        CREATION_TIME timestamp DEFAULT NOW(),
-        ACTUAL_ERROR_MESSAGE text,
-        USER_FRIENDLY_MESSAGE text,
-        TRANSIENT_OR_PERSISTENT tinyint(1),
-        ROOT_CAUSE_ERROR_ID_LIST text,
-        PRIMARY KEY (ERROR_ID, TASK_ID),
-        FOREIGN KEY (TASK_ID) REFERENCES TASK(TASK_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE JOB (
-        JOB_ID varchar(255),
-        TASK_ID varchar(255) NOT NULL,
-        PROCESS_ID varchar(255),
-        JOB_DESCRIPTION LONGTEXT NOT NULL,
-        CREATION_TIME timestamp DEFAULT NOW(),
-        COMPUTE_RESOURCE_CONSUMED varchar(255),
-        JOB_NAME varchar(255),
-        WORKING_DIR varchar(255),
-        STD_OUT LONGTEXT,
-        STD_ERR LONGTEXT,
-        EXIT_CODE INT(11),
-        PRIMARY KEY (JOB_ID, TASK_ID),
-        FOREIGN KEY (TASK_ID) REFERENCES TASK(TASK_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE JOB_STATUS (
-        STATUS_ID varchar(255),
-        JOB_ID varchar(255) NOT NULL,
-        TASK_ID varchar(255) NOT NULL,
-        STATE varchar(255),
-        TIME_OF_STATE_CHANGE TIMESTAMP(6) DEFAULT NOW(6) ON UPDATE NOW(6),
-        REASON LONGTEXT,
-        PRIMARY KEY (STATUS_ID, JOB_ID, TASK_ID),
-        FOREIGN KEY (JOB_ID, TASK_ID) REFERENCES JOB(JOB_ID, TASK_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE QUEUE_STATUS(
-        HOST_NAME VARCHAR(255) NOT NULL,
-        QUEUE_NAME VARCHAR(255) NOT NULL,
-        CREATED_TIME BIGINT(20) NOT NULL,
-        QUEUE_UP     TINYINT(1),
-        RUNNING_JOBS INT(11),
-        QUEUED_JOBS INT(11),
-        PRIMARY KEY (HOST_NAME, QUEUE_NAME, CREATED_TIME)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE CONFIGURATION
-(
-        CONFIG_KEY VARCHAR(255),
-        CONFIG_VAL VARCHAR(255),
-        EXPIRE_DATE TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
-        CATEGORY_ID VARCHAR (255),
-        PRIMARY KEY(CONFIG_KEY, CONFIG_VAL, CATEGORY_ID)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL, EXPIRE_DATE, CATEGORY_ID) VALUES('registry.version', '0.16', NOW() ,'SYSTEM');
diff --git a/modules/ide-integration/src/main/resources/database_scripts/init/02-sharing-registry-migrations.sql b/modules/ide-integration/src/main/resources/database_scripts/init/02-sharing-registry-migrations.sql
index 31ff1d4..9b5733b 100644
--- a/modules/ide-integration/src/main/resources/database_scripts/init/02-sharing-registry-migrations.sql
+++ b/modules/ide-integration/src/main/resources/database_scripts/init/02-sharing-registry-migrations.sql
@@ -1,5 +1,4 @@
 use sharing_catalog;
 
--- FIXME: IF NOT EXISTS syntax only works with MariaDB
-ALTER TABLE DOMAIN ADD COLUMN INITIAL_USER_GROUP_ID varchar(255);
-ALTER TABLE DOMAIN ADD CONSTRAINT `DOMAIN_INITIAL_USER_GROUP_ID_FK` FOREIGN KEY (INITIAL_USER_GROUP_ID, DOMAIN_ID) REFERENCES USER_GROUP(GROUP_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION;
+ALTER TABLE DOMAIN ADD COLUMN IF NOT EXISTS INITIAL_USER_GROUP_ID varchar(255);
+ALTER TABLE DOMAIN ADD CONSTRAINT `DOMAIN_INITIAL_USER_GROUP_ID_FK` FOREIGN KEY IF NOT EXISTS (INITIAL_USER_GROUP_ID, DOMAIN_ID) REFERENCES USER_GROUP(GROUP_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION;
diff --git a/modules/ide-integration/src/main/resources/database_scripts/init/03-appcatalog-migrations.sql b/modules/ide-integration/src/main/resources/database_scripts/init/03-appcatalog-migrations.sql
index b2a1f9a..d77d507 100644
--- a/modules/ide-integration/src/main/resources/database_scripts/init/03-appcatalog-migrations.sql
+++ b/modules/ide-integration/src/main/resources/database_scripts/init/03-appcatalog-migrations.sql
@@ -1,20 +1,19 @@
 use app_catalog;
 
-ALTER TABLE APPLICATION_INPUT ADD COLUMN OVERRIDE_FILENAME VARCHAR(255);
-
+ALTER TABLE APPLICATION_INPUT ADD COLUMN IF NOT EXISTS OVERRIDE_FILENAME VARCHAR(255);
 -- AIRAVATA-3126
 CREATE TABLE IF NOT EXISTS COMPUTE_RESOURCE_RESERVATION -- ComputeResourceReservationEntity
     (RESERVATION_ID VARCHAR(255) NOT NULL, END_TIME TIMESTAMP NOT NULL, RESERVATION_NAME VARCHAR(255) NOT NULL, START_TIME TIMESTAMP NOT NULL, RESOURCE_ID VARCHAR(255) NOT NULL, GROUP_RESOURCE_PROFILE_ID VARCHAR(255) NOT NULL, PRIMARY KEY (RESERVATION_ID)
 )ENGINE=InnoDB DEFAULT CHARSET=latin1;
 CREATE TABLE IF NOT EXISTS COMPUTE_RESOURCE_RESERVATION_QUEUE (RESERVATION_ID VARCHAR(255), QUEUE_NAME VARCHAR(255) NOT NULL
 )ENGINE=InnoDB DEFAULT CHARSET=latin1;
-CREATE INDEX I_CMPTN_Q_RESERVATION_ID ON COMPUTE_RESOURCE_RESERVATION_QUEUE (RESERVATION_ID);
-ALTER TABLE COMPUTE_RESOURCE_RESERVATION ADD CONSTRAINT FK_COMPUTE_RESOURCE_RESERVATION FOREIGN KEY (RESOURCE_ID, GROUP_RESOURCE_PROFILE_ID) REFERENCES GROUP_COMPUTE_RESOURCE_PREFERENCE (RESOURCE_ID, GROUP_RESOURCE_PROFILE_ID) ON DELETE CASCADE;
+CREATE INDEX IF NOT EXISTS I_CMPTN_Q_RESERVATION_ID ON COMPUTE_RESOURCE_RESERVATION_QUEUE (RESERVATION_ID);
+ALTER TABLE COMPUTE_RESOURCE_RESERVATION ADD CONSTRAINT FK_COMPUTE_RESOURCE_RESERVATION FOREIGN KEY IF NOT EXISTS (RESOURCE_ID, GROUP_RESOURCE_PROFILE_ID) REFERENCES GROUP_COMPUTE_RESOURCE_PREFERENCE (RESOURCE_ID, GROUP_RESOURCE_PROFILE_ID) ON DELETE CASCADE;
 
 -- AIRAVATA-3327: Remove deprecated reservation fields
-alter table GROUP_COMPUTE_RESOURCE_PREFERENCE drop column RESERVATION;
-alter table GROUP_COMPUTE_RESOURCE_PREFERENCE drop column RESERVATION_START_TIME;
-alter table GROUP_COMPUTE_RESOURCE_PREFERENCE drop column RESERVATION_END_TIME;
+alter table GROUP_COMPUTE_RESOURCE_PREFERENCE drop column IF EXISTS RESERVATION;
+alter table GROUP_COMPUTE_RESOURCE_PREFERENCE drop column IF EXISTS RESERVATION_START_TIME;
+alter table GROUP_COMPUTE_RESOURCE_PREFERENCE drop column IF EXISTS RESERVATION_END_TIME;
 
 -- AIRAVATA-3343: Add UserStorageQuota entry to StoragePreferences table
 SET @AddUserStorageQuota = (SELECT IF(
diff --git a/modules/ide-integration/src/main/resources/database_scripts/init/04-expcatalog-migrations.sql b/modules/ide-integration/src/main/resources/database_scripts/init/04-expcatalog-migrations.sql
index 067e449..38ba76d 100644
--- a/modules/ide-integration/src/main/resources/database_scripts/init/04-expcatalog-migrations.sql
+++ b/modules/ide-integration/src/main/resources/database_scripts/init/04-expcatalog-migrations.sql
@@ -1,4 +1,4 @@
 use experiment_catalog;
 
-ALTER TABLE EXPERIMENT_INPUT ADD COLUMN OVERRIDE_FILENAME VARCHAR(255);
-ALTER TABLE PROCESS_INPUT ADD COLUMN OVERRIDE_FILENAME VARCHAR(255);
+ALTER TABLE EXPERIMENT_INPUT ADD COLUMN IF NOT EXISTS OVERRIDE_FILENAME VARCHAR(255);
+ALTER TABLE PROCESS_INPUT ADD COLUMN IF NOT EXISTS OVERRIDE_FILENAME VARCHAR(255);
diff --git a/modules/ide-integration/src/main/resources/database_scripts/replicacatalog-derby.sql b/modules/ide-integration/src/main/resources/database_scripts/replicacatalog-derby.sql
deleted file mode 100644
index eb287c7..0000000
--- a/modules/ide-integration/src/main/resources/database_scripts/replicacatalog-derby.sql
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-CREATE TABLE DATA_PRODUCT
-(
-        PRODUCT_URI VARCHAR (255),
-        GATEWAY_ID VARCHAR (255),
-        PRODUCT_NAME VARCHAR (255),
-        PRODUCT_DESCRIPTION VARCHAR (255),
-        OWNER_NAME VARCHAR (255),
-        PARENT_PRODUCT_URI VARCHAR (255),
-        PRODUCT_SIZE INTEGER ,
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        LAST_MODIFIED_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        PRODUCT_TYPE VARCHAR(10),
-        PRIMARY KEY (PRODUCT_URI)
-        -- in Derby can't create self-reference FOREIGN KEY in CREATE TABLE
-        -- statement so this gets added via the following ALTER TABLE statement
-        -- FOREIGN KEY (PARENT_PRODUCT_URI) REFERENCES DATA_PRODUCT (PRODUCT_URI) ON DELETE CASCADE
-);
-
-ALTER TABLE DATA_PRODUCT ADD FOREIGN KEY (PARENT_PRODUCT_URI) REFERENCES DATA_PRODUCT (PRODUCT_URI) ON DELETE CASCADE;
-
-CREATE TABLE DATA_REPLICA_LOCATION
-(
-        REPLICA_ID VARCHAR (255),
-        PRODUCT_URI VARCHAR (255) NOT NULL,
-        REPLICA_NAME VARCHAR (255),
-        REPLICA_DESCRIPTION VARCHAR (255),
-        STORAGE_RESOURCE_ID VARCHAR (255),
-        FILE_PATH VARCHAR (4096),
-        CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-        LAST_MODIFIED_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        VALID_UNTIL_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
-        REPLICA_LOCATION_CATEGORY VARCHAR(26),
-        REPLICA_PERSISTENT_TYPE VARCHAR(10),
-        PRIMARY KEY (REPLICA_ID),
-        FOREIGN KEY (PRODUCT_URI) REFERENCES DATA_PRODUCT(PRODUCT_URI) ON DELETE CASCADE
-);
-
-CREATE TABLE DATA_PRODUCT_METADATA
-(
-        PRODUCT_URI VARCHAR(255) NOT NULL,
-        METADATA_KEY VARCHAR(255),
-        METADATA_VALUE VARCHAR(255),
-        PRIMARY KEY(PRODUCT_URI, METADATA_KEY),
-        FOREIGN KEY (PRODUCT_URI) REFERENCES DATA_PRODUCT(PRODUCT_URI) ON DELETE CASCADE
-);
-
-CREATE TABLE DATA_REPLICA_METADATA
-(
-        REPLICA_ID VARCHAR(255) NOT NULL,
-        METADATA_KEY VARCHAR(255),
-        METADATA_VALUE VARCHAR(255),
-        PRIMARY KEY(REPLICA_ID, METADATA_KEY),
-        FOREIGN KEY (REPLICA_ID) REFERENCES DATA_REPLICA_LOCATION(REPLICA_ID) ON DELETE CASCADE
-);
-
-
-CREATE TABLE CONFIGURATION
-(
-        CONFIG_KEY VARCHAR(255),
-        CONFIG_VAL VARCHAR(255),
-        PRIMARY KEY(CONFIG_KEY, CONFIG_VAL)
-);
-
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL) VALUES('data_catalog_version', '0.16');
diff --git a/modules/ide-integration/src/main/resources/database_scripts/replicacatalog-mysql.sql b/modules/ide-integration/src/main/resources/database_scripts/replicacatalog-mysql.sql
deleted file mode 100644
index a123e65..0000000
--- a/modules/ide-integration/src/main/resources/database_scripts/replicacatalog-mysql.sql
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-CREATE TABLE DATA_PRODUCT
-(
-        PRODUCT_URI VARCHAR (255),
-        GATEWAY_ID VARCHAR (255),
-        PRODUCT_NAME VARCHAR (255),
-        PRODUCT_DESCRIPTION VARCHAR (255),
-        OWNER_NAME VARCHAR (255),
-        PARENT_PRODUCT_URI VARCHAR (255),
-        PRODUCT_SIZE INT,
-        CREATION_TIME TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
-        LAST_MODIFIED_TIME TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        PRODUCT_TYPE VARCHAR(10),
-        PRIMARY KEY (PRODUCT_URI),
-        FOREIGN KEY (PARENT_PRODUCT_URI) REFERENCES DATA_PRODUCT (PRODUCT_URI) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE DATA_REPLICA_LOCATION
-(
-        REPLICA_ID VARCHAR (255),
-        PRODUCT_URI VARCHAR (255) NOT NULL,
-        REPLICA_NAME VARCHAR (255),
-        REPLICA_DESCRIPTION VARCHAR (255),
-        STORAGE_RESOURCE_ID VARCHAR (255),
-        FILE_PATH VARCHAR (255),
-        CREATION_TIME TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
-        LAST_MODIFIED_TIME TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-        VALID_UNTIL_TIME TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
-        REPLICA_LOCATION_CATEGORY VARCHAR(26),
-        REPLICA_PERSISTENT_TYPE VARCHAR(10),
-        PRIMARY KEY (REPLICA_ID),
-        FOREIGN KEY (PRODUCT_URI) REFERENCES DATA_PRODUCT(PRODUCT_URI) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE DATA_PRODUCT_METADATA
-(
-        PRODUCT_URI VARCHAR(255) NOT NULL,
-        METADATA_KEY VARCHAR(255),
-        METADATA_VALUE VARCHAR(255),
-        PRIMARY KEY(PRODUCT_URI, METADATA_KEY),
-        FOREIGN KEY (PRODUCT_URI) REFERENCES DATA_PRODUCT(PRODUCT_URI) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE DATA_REPLICA_METADATA
-(
-        REPLICA_ID VARCHAR(255) NOT NULL,
-        METADATA_KEY VARCHAR(255),
-        METADATA_VALUE VARCHAR(255),
-        PRIMARY KEY(REPLICA_ID, METADATA_KEY),
-        FOREIGN KEY (REPLICA_ID) REFERENCES DATA_REPLICA_LOCATION(REPLICA_ID) ON DELETE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE CONFIGURATION
-(
-        CONFIG_KEY VARCHAR(255),
-        CONFIG_VAL VARCHAR(255),
-        PRIMARY KEY(CONFIG_KEY, CONFIG_VAL)
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL) VALUES('data_catalog_version', '0.16');
diff --git a/modules/ide-integration/src/main/resources/database_scripts/sharing-registry-mysql.sql b/modules/ide-integration/src/main/resources/database_scripts/sharing-registry-mysql.sql
deleted file mode 100644
index 87b55d9..0000000
--- a/modules/ide-integration/src/main/resources/database_scripts/sharing-registry-mysql.sql
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-CREATE TABLE DOMAIN (
-  DOMAIN_ID VARCHAR(255) NOT NULL,
-  NAME VARCHAR(255) NOT NULL,
-  DESCRIPTION VARCHAR(255),
-  CREATED_TIME BIGINT NOT NULL,
-  UPDATED_TIME BIGINT NOT NULL,
-  INITIAL_USER_GROUP_ID VARCHAR(255),
-  PRIMARY KEY (DOMAIN_ID)
-)ENGINE=InnoDB DEFAULT CHARACTER SET=latin1;
-
-CREATE TABLE SHARING_USER (
-  USER_ID VARCHAR(255) NOT NULL,
-  DOMAIN_ID VARCHAR(255) NOT NULL,
-  USER_NAME VARCHAR(255) NOT NULL,
-  FIRST_NAME VARCHAR (255),
-  LAST_NAME VARCHAR (255),
-  EMAIL VARCHAR (255),
-  ICON BLOB,
-  CREATED_TIME BIGINT NOT NULL,
-  UPDATED_TIME BIGINT NOT NULL,
-  PRIMARY KEY (USER_ID, DOMAIN_ID),
-  FOREIGN KEY (DOMAIN_ID) REFERENCES DOMAIN(DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION
-)ENGINE=InnoDB DEFAULT CHARACTER SET=latin1;
-
-CREATE TABLE USER_GROUP (
-  GROUP_ID VARCHAR(255) NOT NULL,
-  DOMAIN_ID VARCHAR(255) NOT NULL,
-  NAME VARCHAR(255) NOT NULL,
-  DESCRIPTION VARCHAR(255),
-  OWNER_ID VARCHAR(255) NOT NULL,
-  GROUP_TYPE VARCHAR(255) NOT NULL,
-  GROUP_CARDINALITY VARCHAR(255) NOT NULL,
-  CREATED_TIME BIGINT NOT NULL,
-  UPDATED_TIME BIGINT NOT NULL,
-  PRIMARY KEY (GROUP_ID, DOMAIN_ID),
-  FOREIGN KEY (OWNER_ID, DOMAIN_ID) REFERENCES SHARING_USER(USER_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION
-)ENGINE=InnoDB DEFAULT CHARACTER SET=latin1;
-
-CREATE TABLE GROUP_ADMIN (
-  ADMIN_ID VARCHAR(255) NOT NULL,
-  GROUP_ID VARCHAR(255) NOT NULL,
-  DOMAIN_ID VARCHAR(255) NOT NULL,
-  PRIMARY KEY (ADMIN_ID, GROUP_ID, DOMAIN_ID),
-  FOREIGN KEY (ADMIN_ID, DOMAIN_ID) REFERENCES SHARING_USER(USER_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION
-)ENGINE=InnoDB DEFAULT CHARACTER SET=latin1;
-
-CREATE TABLE GROUP_MEMBERSHIP (
-  PARENT_ID VARCHAR(255) NOT NULL,
-  CHILD_ID VARCHAR(255) NOT NULL,
-  DOMAIN_ID VARCHAR(255) NOT NULL,
-  CHILD_TYPE VARCHAR(255) NOT NULL,
-  CREATED_TIME BIGINT NOT NULL,
-  UPDATED_TIME BIGINT NOT NULL,
-  PRIMARY KEY (PARENT_ID, CHILD_ID, DOMAIN_ID),
-  FOREIGN KEY (PARENT_ID, DOMAIN_ID) REFERENCES USER_GROUP(GROUP_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION,
-  FOREIGN KEY (CHILD_ID, DOMAIN_ID) REFERENCES USER_GROUP(GROUP_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION
-)ENGINE=InnoDB DEFAULT CHARACTER SET=latin1;
-
-CREATE TABLE ENTITY_TYPE (
-  ENTITY_TYPE_ID VARCHAR(255) NOT NULL,
-  DOMAIN_ID VARCHAR(255) NOT NULL,
-  NAME VARCHAR(255) NOT NULL,
-  DESCRIPTION VARCHAR(255),
-  CREATED_TIME BIGINT NOT NULL,
-  UPDATED_TIME BIGINT NOT NULL,
-  PRIMARY KEY (ENTITY_TYPE_ID, DOMAIN_ID),
-  FOREIGN KEY (DOMAIN_ID) REFERENCES DOMAIN(DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION
-)ENGINE=InnoDB DEFAULT CHARACTER SET=latin1;
-
-CREATE TABLE PERMISSION_TYPE (
-  PERMISSION_TYPE_ID VARCHAR(255) NOT NULL,
-  DOMAIN_ID VARCHAR(255) NOT NULL,
-  NAME VARCHAR(255) NOT NULL,
-  DESCRIPTION VARCHAR(255),
-  CREATED_TIME BIGINT NOT NULL,
-  UPDATED_TIME BIGINT NOT NULL,
-  PRIMARY KEY (PERMISSION_TYPE_ID, DOMAIN_ID),
-  FOREIGN KEY (DOMAIN_ID) REFERENCES DOMAIN(DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION
-)ENGINE=InnoDB DEFAULT CHARACTER SET=latin1;
-
-CREATE TABLE ENTITY (
-  ENTITY_ID VARCHAR(255) NOT NULL,
-  DOMAIN_ID VARCHAR(255) NOT NULL,
-  ENTITY_TYPE_ID VARCHAR(255) NOT NULL,
-  OWNER_ID VARCHAR(255) NOT NULL,
-  PARENT_ENTITY_ID VARCHAR(255),
-  NAME VARCHAR(255) NOT NULL,
-  DESCRIPTION VARCHAR(255),
-  BINARY_DATA BLOB,
-  FULL_TEXT TEXT,
-  SHARED_COUNT BIGINT DEFAULT 0,
-  ORIGINAL_ENTITY_CREATION_TIME BIGINT NOT NULL,
-  CREATED_TIME BIGINT NOT NULL,
-  UPDATED_TIME BIGINT NOT NULL,
-  PRIMARY KEY (ENTITY_ID, DOMAIN_ID),
-  FOREIGN KEY (ENTITY_TYPE_ID, DOMAIN_ID) REFERENCES ENTITY_TYPE(ENTITY_TYPE_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION,
-  FOREIGN KEY (OWNER_ID, DOMAIN_ID) REFERENCES SHARING_USER(USER_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION,
-  FOREIGN KEY (PARENT_ENTITY_ID, DOMAIN_ID) REFERENCES ENTITY(ENTITY_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION
-)ENGINE=InnoDB DEFAULT CHARACTER SET=latin1;
-
-ALTER TABLE ENTITY ADD FULLTEXT FULL_TEXT_INDEX(FULL_TEXT);
-
-CREATE TABLE SHARING (
-  PERMISSION_TYPE_ID VARCHAR(255) NOT NULL,
-  ENTITY_ID VARCHAR(255) NOT NULL,
-  DOMAIN_ID VARCHAR (255) NOT NULL,
-  GROUP_ID VARCHAR(255) NOT NULL,
-  SHARING_TYPE VARCHAR(255) NOT NULL,
-  INHERITED_PARENT_ID VARCHAR(255),
-  CREATED_TIME BIGINT NOT NULL,
-  UPDATED_TIME BIGINT NOT NULL,
-  PRIMARY KEY (PERMISSION_TYPE_ID, ENTITY_ID, GROUP_ID, DOMAIN_ID, INHERITED_PARENT_ID),
-  CONSTRAINT `SHARING_PERMISSION_TYPE_ID_DOMAIN_ID_FK` FOREIGN KEY (PERMISSION_TYPE_ID, DOMAIN_ID) REFERENCES PERMISSION_TYPE(PERMISSION_TYPE_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION,
-  CONSTRAINT `SHARING_ENTITY_ID_DOMAIN_ID_FK` FOREIGN KEY (ENTITY_ID, DOMAIN_ID) REFERENCES ENTITY(ENTITY_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION,
-  CONSTRAINT `SHARING_INHERITED_PARENT_ID_DOMAIN_ID_FK` FOREIGN KEY (INHERITED_PARENT_ID, DOMAIN_ID) REFERENCES ENTITY(ENTITY_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION,
-  CONSTRAINT `SHARING_GROUP_ID_DOMAIN_ID_FK` FOREIGN KEY (GROUP_ID, DOMAIN_ID) REFERENCES USER_GROUP(GROUP_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION
-)ENGINE=InnoDB DEFAULT CHARACTER SET=latin1;
-
-CREATE TABLE CONFIGURATION
-(
-  CONFIG_KEY VARCHAR(255) NOT NULL,
-  CONFIG_VALUE VARCHAR(255) NOT NULL,
-  PRIMARY KEY(CONFIG_KEY, CONFIG_VALUE)
-)ENGINE=InnoDB DEFAULT CHARACTER SET=latin1;
-
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VALUE) VALUES('sharing_reg_version', '0.17');
-
-ALTER TABLE DOMAIN ADD CONSTRAINT `DOMAIN_INITIAL_USER_GROUP_ID_FK` FOREIGN KEY (INITIAL_USER_GROUP_ID, DOMAIN_ID) REFERENCES USER_GROUP(GROUP_ID, DOMAIN_ID) ON DELETE CASCADE ON UPDATE NO ACTION;
diff --git a/modules/ide-integration/src/main/resources/database_scripts/user-profile-catalog-derby.sql b/modules/ide-integration/src/main/resources/database_scripts/user-profile-catalog-derby.sql
deleted file mode 100644
index 9ac9155..0000000
--- a/modules/ide-integration/src/main/resources/database_scripts/user-profile-catalog-derby.sql
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-CREATE TABLE IF NOT EXISTS GATEWAY (
-  AIRAVATA_INTERNAL_GATEWAY_ID varchar(255) NOT NULL,
-  DECLINED_REASON varchar(255) DEFAULT NULL,
-  GATEWAY_DOMAIN varchar(255) DEFAULT NULL,
-  EMAIL_ADDRESS varchar(255) DEFAULT NULL,
-  GATEWAY_ACRONYM varchar(255) DEFAULT NULL,
-  GATEWAY_ADMIN_EMAIL varchar(255) DEFAULT NULL,
-  GATEWAY_ADMIN_FIRST_NAME varchar(255) DEFAULT NULL,
-  GATEWAY_ADMIN_LAST_NAME varchar(255) DEFAULT NULL,
-  GATEWAY_APPROVAL_STATUS varchar(255) DEFAULT NULL,
-  GATEWAY_ID varchar(255) DEFAULT NULL,
-  GATEWAY_NAME varchar(255) DEFAULT NULL,
-  GATEWAY_PUBLIC_ABSTRACT varchar(255) DEFAULT NULL,
-  GATEWAY_URL varchar(255) DEFAULT NULL,
-  IDENTITY_SERVER_PASSWORD_TOKEN varchar(255) DEFAULT NULL,
-  IDENTITY_SERVER_USERNAME varchar(255) DEFAULT NULL,
-  OAUTH_CLIENT_ID varchar(255) DEFAULT NULL,
-  OAUTH_CLIENT_SECRET varchar(255) DEFAULT NULL,
-  REQUEST_CREATION_TIME bigint(20) DEFAULT NULL,
-  REQUESTER_USERNAME varchar(255) DEFAULT NULL,
-  GATEWAY_REVIEW_PROPOSAL_DESCRIPTION varchar(255) DEFAULT NULL,
-  PRIMARY KEY (AIRAVATA_INTERNAL_GATEWAY_ID)
-);
-
-CREATE TABLE USER_PROFILE (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    USER_ID VARCHAR (255) NOT NULL,
-    GATEWAY_ID VARCHAR (255) NOT NULL,
-    USER_MODEL_VERSION VARCHAR (255),
-    FIRST_NAME VARCHAR (255),
-    LAST_NAME VARCHAR (255),
-    MIDDLE_NAME VARCHAR (255),
-    NAME_PREFIX VARCHAR (255),
-    NAME_SUFFIX VARCHAR (255),
-    ORCID_ID VARCHAR (255),
-    COUNTRY VARCHAR (255),
-    HOME_ORGANIZATION VARCHAR (255),
-    ORIGINATION_AFFILIATION VARCHAR (255),
-    CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-    LAST_ACCESS_TIME TIMESTAMP,
-    VALID_UNTIL TIMESTAMP,
-    STATE VARCHAR (255),
-    COMMENTS CLOB,
-    GPG_KEY CLOB,
-    TIME_ZONE VARCHAR (255),
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID)
-);
-
-CREATE TABLE USER_PROFILE_EMAIL (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    EMAIL VARCHAR (255) NOT NULL,
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, EMAIL),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE USER_PROFILE_PHONE (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    PHONE VARCHAR (255) NOT NULL,
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, PHONE ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE USER_PROFILE_NATIONALITY (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    NATIONALITY VARCHAR (255) NOT NULL,
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, NATIONALITY ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE USER_PROFILE_LABELED_URI (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    LABELED_URI VARCHAR (255) NOT NULL,
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, LABELED_URI ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE NSF_DEMOGRAPHIC (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    GENDER VARCHAR (255) NOT NULL,
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE NSF_DEMOGRAPHIC_ETHNICITY (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    ETHNICITY VARCHAR (255) NOT NULL,
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, ETHNICITY ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE NSF_DEMOGRAPHIC_RACE (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    RACE VARCHAR (255) NOT NULL,
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, RACE ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE NSF_DEMOGRAPHIC_DISABILITY (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    DISABILITY VARCHAR (255) NOT NULL,
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, DISABILITY ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE CUSTOMIZED_DASHBOARD (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    ENABLED_EXPERIMENT_ID VARCHAR (255),
-    ENABLED_NAME VARCHAR (255),
-    ENABLED_DESCRIPTION VARCHAR (255),
-    ENABLED_PROJECT VARCHAR (255),
-    ENABLED_OWNER VARCHAR (255),
-    ENABLED_APPLICATION VARCHAR (255),
-    ENABLED_COMPUTE_RESOURCE VARCHAR (255),
-    ENABLED_JOB_NAME VARCHAR (255),
-    ENABLED_JOB_ID VARCHAR (255),
-    ENABLED_JOB_STATUS VARCHAR (255),
-    ENABLED_JOB_CREATION_TIME VARCHAR (255),
-    ENABLED_NOTIFICATIONS_TO VARCHAR (255),
-    ENABLED_WORKING_DIR VARCHAR (255),
-    ENABLED_JOB_DESCRIPTION VARCHAR (255),
-    ENABLED_CREATION_TIME VARCHAR (255),
-    ENABLED_LAST_MODIFIED_TIME VARCHAR (255),
-    ENABLED_WALL_TIME VARCHAR (255),
-    ENABLED_CPU_COUNT VARCHAR (255),
-    ENABLED_NODE_COUNT VARCHAR (255),
-    ENABLED_QUEUE VARCHAR (255),
-    ENABLED_INPUTS VARCHAR (255),
-    ENABLED_OUTPUTS VARCHAR (255),
-    ENABLED_STORAGE_DIR VARCHAR (255),
-    ENABLED_ERRORS VARCHAR (255),
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE CONFIGURATION
-(
-        CONFIG_KEY VARCHAR(255) NOT NULL,
-        CONFIG_VAL VARCHAR(255) NOT NULL,
-        PRIMARY KEY(CONFIG_KEY, CONFIG_VAL)
-);
-
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL) VALUES('user_profile_catalog_version', '0.17');
diff --git a/modules/ide-integration/src/main/resources/database_scripts/user-profile-catalog-mysql.sql b/modules/ide-integration/src/main/resources/database_scripts/user-profile-catalog-mysql.sql
deleted file mode 100644
index bcc37af..0000000
--- a/modules/ide-integration/src/main/resources/database_scripts/user-profile-catalog-mysql.sql
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-CREATE TABLE IF NOT EXISTS GATEWAY (
-  AIRAVATA_INTERNAL_GATEWAY_ID varchar(255) NOT NULL,
-  DECLINED_REASON varchar(255) DEFAULT NULL,
-  GATEWAY_DOMAIN varchar(255) DEFAULT NULL,
-  EMAIL_ADDRESS varchar(255) DEFAULT NULL,
-  GATEWAY_ACRONYM varchar(255) DEFAULT NULL,
-  GATEWAY_ADMIN_EMAIL varchar(255) DEFAULT NULL,
-  GATEWAY_ADMIN_FIRST_NAME varchar(255) DEFAULT NULL,
-  GATEWAY_ADMIN_LAST_NAME varchar(255) DEFAULT NULL,
-  GATEWAY_APPROVAL_STATUS varchar(255) DEFAULT NULL,
-  GATEWAY_ID varchar(255) DEFAULT NULL,
-  GATEWAY_NAME varchar(255) DEFAULT NULL,
-  GATEWAY_PUBLIC_ABSTRACT varchar(255) DEFAULT NULL,
-  GATEWAY_URL varchar(255) DEFAULT NULL,
-  IDENTITY_SERVER_PASSWORD_TOKEN varchar(255) DEFAULT NULL,
-  IDENTITY_SERVER_USERNAME varchar(255) DEFAULT NULL,
-  OAUTH_CLIENT_ID varchar(255) DEFAULT NULL,
-  OAUTH_CLIENT_SECRET varchar(255) DEFAULT NULL,
-  REQUEST_CREATION_TIME bigint(20) DEFAULT NULL,
-  REQUESTER_USERNAME varchar(255) DEFAULT NULL,
-  GATEWAY_REVIEW_PROPOSAL_DESCRIPTION varchar(255) DEFAULT NULL,
-  PRIMARY KEY (AIRAVATA_INTERNAL_GATEWAY_ID)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE IF NOT EXISTS USER_PROFILE (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    USER_ID VARCHAR (255) NOT NULL,
-    GATEWAY_ID VARCHAR (255) NOT NULL,
-    USER_MODEL_VERSION VARCHAR (255),
-    FIRST_NAME VARCHAR (255),
-    LAST_NAME VARCHAR (255),
-    MIDDLE_NAME VARCHAR (255),
-    NAME_PREFIX VARCHAR (255),
-    NAME_SUFFIX VARCHAR (255),
-    ORCID_ID VARCHAR (255),
-    COUNTRY VARCHAR (255),
-    HOME_ORGANIZATION VARCHAR (255),
-    ORIGINATION_AFFILIATION VARCHAR (255),
-    CREATION_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-    LAST_ACCESS_TIME TIMESTAMP,
-    VALID_UNTIL DATETIME,
-    STATE VARCHAR (255),
-    COMMENTS TEXT,
-    GPG_KEY TEXT,
-    TIME_ZONE VARCHAR (255),
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE IF NOT EXISTS USER_PROFILE_EMAIL (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    EMAIL VARCHAR (255) NOT NULL,
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, EMAIL),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE IF NOT EXISTS USER_PROFILE_PHONE (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    PHONE VARCHAR (255) NOT NULL,
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, PHONE ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE IF NOT EXISTS USER_PROFILE_NATIONALITY (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    NATIONALITY VARCHAR (255) NOT NULL,
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, NATIONALITY ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE IF NOT EXISTS USER_PROFILE_LABELED_URI (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    LABELED_URI VARCHAR (255) NOT NULL,
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, LABELED_URI ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE IF NOT EXISTS NSF_DEMOGRAPHIC (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    GENDER VARCHAR (255) NOT NULL,
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE IF NOT EXISTS NSF_DEMOGRAPHIC_ETHNICITY (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    ETHNICITY VARCHAR (255) NOT NULL,
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, ETHNICITY ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE IF NOT EXISTS NSF_DEMOGRAPHIC_RACE (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    RACE VARCHAR (255) NOT NULL,
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, RACE ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE IF NOT EXISTS NSF_DEMOGRAPHIC_DISABILITY (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    DISABILITY VARCHAR (255) NOT NULL,
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID, DISABILITY ),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES NSF_DEMOGRAPHIC(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE IF NOT EXISTS CUSTOMIZED_DASHBOARD (
-    AIRAVATA_INTERNAL_USER_ID VARCHAR (255) NOT NULL,
-    ENABLED_EXPERIMENT_ID VARCHAR (255),
-    ENABLED_NAME VARCHAR (255),
-    ENABLED_DESCRIPTION VARCHAR (255),
-    ENABLED_PROJECT VARCHAR (255),
-    ENABLED_OWNER VARCHAR (255),
-    ENABLED_APPLICATION VARCHAR (255),
-    ENABLED_COMPUTE_RESOURCE VARCHAR (255),
-    ENABLED_JOB_NAME VARCHAR (255),
-    ENABLED_JOB_ID VARCHAR (255),
-    ENABLED_JOB_STATUS VARCHAR (255),
-    ENABLED_JOB_CREATION_TIME VARCHAR (255),
-    ENABLED_NOTIFICATIONS_TO VARCHAR (255),
-    ENABLED_WORKING_DIR VARCHAR (255),
-    ENABLED_JOB_DESCRIPTION VARCHAR (255),
-    ENABLED_CREATION_TIME VARCHAR (255),
-    ENABLED_LAST_MODIFIED_TIME VARCHAR (255),
-    ENABLED_WALL_TIME VARCHAR (255),
-    ENABLED_CPU_COUNT VARCHAR (255),
-    ENABLED_NODE_COUNT VARCHAR (255),
-    ENABLED_QUEUE VARCHAR (255),
-    ENABLED_INPUTS VARCHAR (255),
-    ENABLED_OUTPUTS VARCHAR (255),
-    ENABLED_STORAGE_DIR VARCHAR (255),
-    ENABLED_ERRORS VARCHAR (255),
-    PRIMARY KEY (AIRAVATA_INTERNAL_USER_ID),
-    FOREIGN KEY (AIRAVATA_INTERNAL_USER_ID) REFERENCES USER_PROFILE(AIRAVATA_INTERNAL_USER_ID) ON DELETE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE CONFIGURATION
-(
-        CONFIG_KEY VARCHAR(255) NOT NULL,
-        CONFIG_VAL VARCHAR(255) NOT NULL,
-        PRIMARY KEY(CONFIG_KEY, CONFIG_VAL)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-INSERT INTO CONFIGURATION (CONFIG_KEY, CONFIG_VAL) VALUES('user_profile_catalog_version', '0.17');
diff --git a/modules/ide-integration/src/main/resources/database_scripts/workflowcatalog-derby.sql b/modules/ide-integration/src/main/resources/database_scripts/workflowcatalog-derby.sql
deleted file mode 100644
index beff4ca..0000000
--- a/modules/ide-integration/src/main/resources/database_scripts/workflowcatalog-derby.sql
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-CREATE TABLE WORKFLOW
-(
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        WORKFLOW_NAME VARCHAR (255) NOT NULL,
-        CREATED_USER VARCHAR (255),
-        GATEWAY_ID VARCHAR (255),
-        GRAPH CLOB,
-        IMAGE BLOB,
-        CREATION_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        UPDATE_TIME timestamp DEFAULT '0000-00-00 00:00:00',
-        PRIMARY KEY (TEMPLATE_ID)
-);
-
-CREATE TABLE WORKFLOW_INPUT
-(
-         TEMPLATE_ID VARCHAR(255) NOT NULL,
-         INPUT_KEY VARCHAR(255),
-         INPUT_VALUE CLOB,
-         DATA_TYPE VARCHAR(255),
-         METADATA VARCHAR(255),
-         APP_ARGUMENT VARCHAR(255),
-         STANDARD_INPUT SMALLINT,
-         USER_FRIENDLY_DESC VARCHAR(255),
-         INPUT_ORDER INTEGER,
-         IS_REQUIRED SMALLINT,
-         REQUIRED_TO_COMMANDLINE SMALLINT,
-         DATA_STAGED SMALLINT,
-         PRIMARY KEY(TEMPLATE_ID,INPUT_KEY),
-         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE WORKFLOW_OUTPUT
-(
-         TEMPLATE_ID VARCHAR(255) NOT NULL,
-         OUTPUT_KEY VARCHAR(255),
-         OUTPUT_VALUE VARCHAR(255),
-         DATA_TYPE VARCHAR(255),
-         IS_REQUIRED SMALLINT,
-         REQUIRED_TO_COMMANDLINE SMALLINT,
-         DATA_MOVEMENT SMALLINT,
-         DATA_NAME_LOCATION VARCHAR(255),
-         SEARCH_QUERY VARCHAR(255),
-         APP_ARGUMENT VARCHAR(255),
-         OUTPUT_STREAMING SMALLINT,
-         PRIMARY KEY(TEMPLATE_ID,OUTPUT_KEY),
-         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE COMPONENT_STATUS
-(
-        STATUS_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        STATE VARCHAR(255),
-        REASON VARCHAR(255),
-        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        PRIMARY KEY (STATUS_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE WORKFLOW_STATUS
-(
-        STATUS_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        STATE VARCHAR(255),
-        REASON VARCHAR(255),
-        UPDATE_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        PRIMARY KEY (STATUS_ID, TEMPLATE_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE EDGE
-(
-        EDGE_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        NAME VARCHAR (255),
-        COMPONENT_STATUS_ID VARCHAR(255),
-        DESCRIPTION VARCHAR(500),
-        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        PRIMARY KEY (EDGE_ID, TEMPLATE_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE PORT
-(
-        PORT_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        NAME VARCHAR (255),
-        COMPONENT_STATUS_ID VARCHAR(255),
-        DESCRIPTION VARCHAR(500),
-        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        PRIMARY KEY (PORT_ID, TEMPLATE_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE NODE
-(
-        NODE_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        NAME VARCHAR (255),
-        APPLICATION_ID VARCHAR (255),
-        APPLICATION_NAME VARCHAR (255),
-        COMPONENT_STATUS_ID VARCHAR(255),
-        DESCRIPTION VARCHAR(500),
-        CREATED_TIME timestamp DEFAULT CURRENT_TIMESTAMP,
-        PRIMARY KEY (NODE_ID, TEMPLATE_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
\ No newline at end of file
diff --git a/modules/ide-integration/src/main/resources/database_scripts/workflowcatalog-mysql.sql b/modules/ide-integration/src/main/resources/database_scripts/workflowcatalog-mysql.sql
deleted file mode 100644
index a4d43bb..0000000
--- a/modules/ide-integration/src/main/resources/database_scripts/workflowcatalog-mysql.sql
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-CREATE TABLE WORKFLOW
-(
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        WORKFLOW_NAME VARCHAR (255) NOT NULL,
-        CREATED_USER VARCHAR (255),
-        GATEWAY_ID VARCHAR (255),
-        GRAPH LONGTEXT,
-        IMAGE BLOB,
-        CREATION_TIME timestamp DEFAULT NOW(),
-        UPDATE_TIME TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
-        PRIMARY KEY (TEMPLATE_ID)
-);
-
-CREATE TABLE WORKFLOW_INPUT
-(
-         TEMPLATE_ID VARCHAR(255) NOT NULL,
-         INPUT_KEY VARCHAR(255),
-         INPUT_VALUE VARCHAR(255),
-         DATA_TYPE VARCHAR(255),
-         METADATA VARCHAR(255),
-         APP_ARGUMENT VARCHAR(255),
-         STANDARD_INPUT SMALLINT,
-         USER_FRIENDLY_DESC VARCHAR(255),
-         INPUT_ORDER INTEGER,
-         IS_REQUIRED SMALLINT,
-         REQUIRED_TO_COMMANDLINE SMALLINT,
-         DATA_STAGED SMALLINT,
-         PRIMARY KEY(TEMPLATE_ID,INPUT_KEY),
-         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE WORKFLOW_OUTPUT
-(
-         TEMPLATE_ID VARCHAR(255) NOT NULL,
-         OUTPUT_KEY VARCHAR(255),
-         OUTPUT_VALUE LONGTEXT,
-         DATA_TYPE VARCHAR(255),
-         IS_REQUIRED SMALLINT,
-         REQUIRED_TO_COMMANDLINE SMALLINT,
-         DATA_MOVEMENT SMALLINT,
-         DATA_NAME_LOCATION VARCHAR(255),
-         SEARCH_QUERY VARCHAR(255),
-         APP_ARGUMENT VARCHAR(255),
-         OUTPUT_STREAMING SMALLINT,
-         PRIMARY KEY(TEMPLATE_ID,OUTPUT_KEY),
-         FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE COMPONENT_STATUS
-(
-        STATUS_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        STATE VARCHAR(255),
-        REASON VARCHAR(255),
-        UPDATE_TIME TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
-        PRIMARY KEY (STATUS_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE WORKFLOW_STATUS
-(
-        STATUS_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        STATE VARCHAR(255),
-        REASON VARCHAR(255),
-        UPDATE_TIME TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
-        PRIMARY KEY (STATUS_ID, TEMPLATE_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE EDGE
-(
-        EDGE_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        NAME VARCHAR (255),
-        COMPONENT_STATUS_ID VARCHAR(255),
-        DESCRIPTION VARCHAR(500),
-        CREATED_TIME TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
-        PRIMARY KEY (EDGE_ID, TEMPLATE_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE PORT
-(
-        PORT_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        NAME VARCHAR (255),
-        COMPONENT_STATUS_ID VARCHAR(255),
-        DESCRIPTION VARCHAR(500),
-        CREATED_TIME TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
-        PRIMARY KEY (PORT_ID, TEMPLATE_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
-
-CREATE TABLE NODE
-(
-        NODE_ID VARCHAR (255) NOT NULL,
-        TEMPLATE_ID VARCHAR (255) NOT NULL,
-        NAME VARCHAR (255),
-        APPLICATION_ID VARCHAR (255),
-        APPLICATION_NAME VARCHAR (255),
-        COMPONENT_STATUS_ID VARCHAR(255),
-        DESCRIPTION VARCHAR(500),
-        CREATED_TIME TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
-        PRIMARY KEY (NODE_ID, TEMPLATE_ID),
-        FOREIGN KEY (TEMPLATE_ID) REFERENCES WORKFLOW(TEMPLATE_ID) ON DELETE CASCADE
-);
\ No newline at end of file
diff --git a/modules/ide-integration/src/main/resources/docker-compose.yml b/modules/ide-integration/src/main/resources/docker-compose.yml
index d2cac0a..3798117 100644
--- a/modules/ide-integration/src/main/resources/docker-compose.yml
+++ b/modules/ide-integration/src/main/resources/docker-compose.yml
@@ -14,7 +14,7 @@
       - ./keycloak/standalone.xml:/opt/jboss/keycloak/standalone/configuration/standalone.xml
     command: ["-b", "0.0.0.0", "-Dkeycloak.migration.action=import", "-Dkeycloak.migration.provider=singleFile", "-Dkeycloak.migration.file=/opt/keycloak/Default-export.json", "-Dkeycloak.migration.strategy=OVERWRITE_EXISTING"]
   db:
-    image: mysql:5.7.21
+    image: mariadb:10.4.13
     environment:
       - MYSQL_ROOT_PASSWORD=123456
       - MYSQL_USER=airavata
@@ -51,4 +51,4 @@
     volumes:
       - /tmp:/tmp
     ports:
-      - "22222:22"
\ No newline at end of file
+      - "22222:22"
diff --git a/modules/registry/registry-core/README.md b/modules/registry/registry-core/README.md
index 0a9de7f..d60fe91 100644
--- a/modules/registry/registry-core/README.md
+++ b/modules/registry/registry-core/README.md
@@ -1,13 +1,115 @@
+# Schema migration scripts
 
-# migration.sql
+When you add or update Entity classes, you need to update the SQL schema
+scripts, both the scripts that define the entire schema for brand new databases
+(referred to from here on as the _database script_) and the script to migrate an
+older schema to the new schema (referred to from here on as the _migration
+script_). These instructions show you how to create these scripts.
 
-- copy to appcatalog-derby.sql. if changing a column, make the change to the create table statement directly.
-- copy to appcatalog-mysql.sql, translating as needed
-- copy mysql version to release-migration-scripts/next/DeltaScripts/appCatalog_schema_delta.sql. Add IF NOT EXISTS so it is re-runnable. Name foreign keys.
-- copy same mysql version to ide-integration 0*-migrations.sql
+Before using these steps, be sure to review the **Known Issues** section later
+on. Notably, any removals from the schema will have to be manually managed.
 
-# ide-integration
+1. First, start by adding or updating the Entity class, for example, by adding a
+   new field.
 
-- file is stored in airavata/migration.sql
-- probably want to start with the derby one generated by the unit tests though
-- need to add new Entity classes to ide-integration/.../persistence.xml
+   Additional notes:
+
+   - To have OpenJPA generate FOREIGN KEY schema statements, you need to
+     annotate the foreign key reference with
+     `@org.apache.openjpa.persistence.jdbc.ForeignKey`.
+   - To have OpenJPA generate INDEX schema statements, you need to annotate the
+     indexed columns with `@org.apache.openjpa.persistence.jdbc.Index`.
+
+2. If you added an Entity class, make sure to add an entry for it in
+   `persistence.xml`. You'll need to also add the same entry to
+   `../../ide-integration/src/main/resources/META-INF/persistence.xml`.
+3. Next, you need to update the Derby database script. To do this, run
+   ```
+   mvn clean process-classes exec:exec@generate-schema-derby
+   ```
+   This will generate a database script for each database in `target/`. For
+   example, for appcatalog, it will generate a file called
+   `target/app_catalog-schema.sql`. Copy the contents of the database script
+   that are relevant to the Entity class changes that you made into the
+   corresponding database script in `src/main/resources/`. For example, if you
+   changed an app catalog Entity then you would copy the `CREATE TABLE`, etc.
+   statements related to that Entity from the `target/app_catalog-schema.sql`
+   script to `src/main/resources/appcatalog-derby.sql`, replace any existing
+   `CREATE TABLE`, etc. statements for the table. Note that the generate
+   database script may have several statements related to your Entity class
+   changes throughout it, for example, the `CREATE TABLE` statements tend to
+   come first and the `FOREIGN KEY` statements come later.
+4. Next, you'll update the MariaDB (or MySQL) database script. To do this, run
+
+   ```
+   mvn clean process-classes docker-compose:up@mysql-up \
+      exec:exec@generate-schema-mysql exec:exec@generate-migrations-mysql \
+      docker-compose:down@mysql-down
+   ```
+
+   This will generate a database and a migration script for each database in
+   `target/`. For example, for appcatalog, it will generate a file called
+   `target/app_catalog-schema.sql` (the database script) and a file called
+   `target/app_catalog-migration.sql` (the migration script). Like the previous
+   step, you'll copy the contents of the database script (the one ending in
+   `-schema.sql`) that are relevant to the Entity class changes you made and add
+   them to the corresponding database script in `src/main/resources/`.
+
+   Some additional notes:
+
+   - Make sure to add `DEFAULT CHARSET=latin1` to all MySQL `CREATE TABLE`
+     statements.
+   - It is recommended that you name all constraints and indexes. This makes it
+     easier to change or drop them in the future. The naming convention is to
+     use a prefix of `FK_` or `UNIQ_` or `IDX_` that indicates the type of
+     constraint, then the table name, then the names of the columns or related
+     entity or some short description of the constraint. For example, if you
+     create a FOREIGN KEY on table CHILD of column PARENT_ID you would name it
+     `FK_CHILD_PARENT_ID`.
+
+5. Next, you'll create a MariaDB migration script. The migration script should
+   have been created in the previous step, but if necessary you can run
+
+   ```
+   mvn clean process-classes docker-compose:up@mysql-up exec:exec@generate-migrations-mysql docker-compose:down@mysql-down
+   ```
+
+   Copy the contents of the migration script that are relevant to the Entity
+   classes changes that you made into the respective migration schema scripts in
+   `../release-migration-scripts/next/DeltaScripts/`. All statements should have
+   `IF NOT EXISTS` (if adding) or `IF EXISTS` (if dropping) added so that they
+   can be reapplied and only change the schema when it hasn't already been
+   updated. For example:
+
+   - `CREATE TABLE IF NOT EXISTS ...`
+   - `DROP TABLE IF EXISTS ...`
+   - `ALTER TABLE <table name> ADD COLUMN IF NOT EXISTS <column definition>`
+   - `ALTER TABLE <table name> DROP COLUMN IF EXISTS <column name>`
+   - `ALTER TABLE <table name> ADD CONSTRAINT <foreign key name> FOREIGN KEY IF NOT EXISTS <foreign key definition>`
+   - `ALTER TABLE <table name> DROP FOREIGN KEY IF EXISTS <foreign key name>`
+   - `ALTER TABLE <table name> ADD KEY IF NOT EXISTS <key definition>`
+   - `ALTER TABLE <table name> DROP KEY IF EXISTS <index name>`
+
+   See also the **additional notes** under the previous step.
+
+6. Next, you'll also copy this MariaDB migration script to the corresponding
+   `0*-migrations.sql` file in ide-integration. Here it should also have
+   `IF NOT EXISTS`/`IF EXISTS` added. Essentially you just need to take the
+   lines you added in `release-migration-scripts` and add them to the
+   corresponding `0*-migrations.sql` script.
+
+## Known Issues
+
+- can automatically create schema migrations that add columns/tables, but not
+  ones that remove them. **Creating schema migrations that drop columns/tables
+  will have to be done manually.**
+- schema generation generates a PRIMARY KEY for VIEWs that are mapped to an
+  Entity, for example ExperimentSummary.
+- when unique constraints are added to an entity, the generated migration
+  scripts do not include an ALTER TABLE statement to add it. However, the
+  database script does include the unique constraint so it can be copied from
+  that into an `ALTER TABLE ADD UNIQUE ...` statement in the migation script.
+- when the definition of a column is chaged, the generated migrations do not
+  include an ALTER STATEMENT to update it. However, the database script does
+  reflect the updated column definition so it can be copied from that into an
+  `ALTER TABLE MODIFY COLUMN col_name ...`.
diff --git a/modules/registry/registry-core/pom.xml b/modules/registry/registry-core/pom.xml
index fd28405..35ef082 100644
--- a/modules/registry/registry-core/pom.xml
+++ b/modules/registry/registry-core/pom.xml
@@ -98,7 +98,7 @@
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-classic</artifactId>
             <version>${logback.version}</version>
-            <scope>test</scope>
+            <scope>runtime</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.airavata</groupId>
@@ -120,7 +120,13 @@
             <artifactId>ibatis-sqlmap</artifactId>
             <version>2.3.0</version>
         </dependency>
-
+        <!-- For MariaDB based schema migrations -->
+        <dependency>
+            <groupId>org.mariadb.jdbc</groupId>
+            <artifactId>mariadb-java-client</artifactId>
+            <version>2.0.2</version>
+            <scope>runtime</scope>
+        </dependency>
     </dependencies>
 
     <build>
@@ -138,12 +144,93 @@
                 </configuration>
             </plugin>
             <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>exec-maven-plugin</artifactId>
+                <version>1.6.0</version>
+                <configuration>
+                    <executable>java</executable>
+                    <classpathScope>runtime</classpathScope>
+                    <workingDirectory>${project.build.directory}</workingDirectory>
+                </configuration>
+                <executions>
+                    <execution>
+                        <!-- Run with:
+                            mvn process-classes docker-compose:up@mysql-up exec:exec@generate-migrations-mysql docker-compose:down@mysql-down
+                        -->
+                        <id>generate-migrations-mysql</id>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <arguments>
+                                <argument>-Dairavata.config.dir=${project.basedir}/src/main/resources/migrations-util/mysql</argument>
+                                <argument>-classpath</argument>
+                                <classpath/>
+                                <argument>org.apache.airavata.registry.core.utils.migration.MigrationSchemaGenerator</argument>
+                            </arguments>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <!-- Run with:
+                            mvn process-classes docker-compose:up@mysql-up exec:exec@generate-schema-mysql docker-compose:down@mysql-down
+                        -->
+                        <id>generate-schema-mysql</id>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <arguments>
+                                <argument>-Dairavata.config.dir=${project.basedir}/src/main/resources/migrations-util/mysql</argument>
+                                <argument>-classpath</argument>
+                                <classpath/>
+                                <argument>org.apache.airavata.registry.core.utils.migration.MigrationSchemaGenerator</argument>
+                                <argument>build</argument>
+                            </arguments>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <!-- Run with:
+                            mvn process-classes exec:exec@generate-migrations-derby
+                        -->
+                        <id>generate-migrations-derby</id>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <arguments>
+                                <argument>-Dairavata.config.dir=${project.basedir}/src/main/resources/migrations-util/derby</argument>
+                                <argument>-classpath</argument>
+                                <classpath/>
+                                <argument>org.apache.airavata.registry.core.utils.migration.MigrationSchemaGenerator</argument>
+                            </arguments>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <!-- Run with:
+                            mvn process-classes exec:exec@generate-schema-derby
+                        -->
+                        <id>generate-schema-derby</id>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <arguments>
+                                <argument>-Dairavata.config.dir=${project.basedir}/src/main/resources/migrations-util/derby</argument>
+                                <argument>-classpath</argument>
+                                <classpath/>
+                                <argument>org.apache.airavata.registry.core.utils.migration.MigrationSchemaGenerator</argument>
+                                <argument>build</argument>
+                            </arguments>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
                 <groupId>org.apache.openjpa</groupId>
                 <artifactId>openjpa-maven-plugin</artifactId>
                 <version>${openjpa.version}</version>
                 <configuration>
-                    <includes>**/entities/*.class</includes>
-                    <excludes>**/entities/XML*.class</excludes>
+                    <includes>**/model/*.class</includes>
                     <addDefaultConstructor>true</addDefaultConstructor>
                     <enforcePropertyRestrictions>true</enforcePropertyRestrictions>
                 </configuration>
@@ -155,21 +242,6 @@
                             <goal>enhance</goal>
                         </goals>
                     </execution>
-                    <execution>
-                        <!-- execute with `mvn compile openjpa:sql@generate-sql` or `mvn process-classes` -->
-                        <id>generate-sql</id>
-                        <configuration>
-                            <!-- openjpa:sql doesn't work well with multiple persistence-unit's in persistence.xml, so
-                            use this single persistence-unit persistence.xml to list any classes for which SQL schema
-                            generation is desired -->
-                            <persistenceXmlFile>${basedir}/src/main/resources/META-INF/generate-sql-persistence.xml</persistenceXmlFile>
-                            <sqlAction>build</sqlAction>
-                            <connectionDriverName>org.apache.derby.jdbc.ClientDriver</connectionDriverName>
-                        </configuration>
-                        <goals>
-                            <goal>sql</goal>
-                        </goals>
-                    </execution>
                 </executions>
                 <dependencies>
                     <dependency>
@@ -190,7 +262,33 @@
                     <workingDirectory>${project.build.testOutputDirectory}</workingDirectory>
                 </configuration>
             </plugin>
-        </plugins>
+            <plugin>
+                <groupId>com.dkanejs.maven.plugins</groupId>
+                <artifactId>docker-compose-maven-plugin</artifactId>
+                <version>4.0.0</version>
+                <executions>
+                    <execution>
+                        <id>mysql-up</id>
+                        <goals>
+                            <goal>up</goal>
+                        </goals>
+                        <configuration>
+                            <composeFile>${project.basedir}/src/main/resources/migrations-util/mysql/docker-compose.yml</composeFile>
+                            <detachedMode>true</detachedMode>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>mysql-down</id>
+                        <goals>
+                            <goal>down</goal>
+                        </goals>
+                        <configuration>
+                            <composeFile>${project.basedir}/src/main/resources/migrations-util/mysql/docker-compose.yml</composeFile>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            </plugins>
     </build>
 
 </project>
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/appcatalog/GatewayGroupsEntity.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/appcatalog/GatewayGroupsEntity.java
index 53d2400..ec7f9f7 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/appcatalog/GatewayGroupsEntity.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/entities/appcatalog/GatewayGroupsEntity.java
@@ -44,7 +44,7 @@
     @Column(name = "DEFAULT_GATEWAY_USERS_GROUP_ID")
     private String defaultGatewayUsersGroupId;
 
-    protected GatewayGroupsEntity() {
+    public GatewayGroupsEntity() {
 
     }
 
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/JPAUtil/AppCatalogJPAUtils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/JPAUtil/AppCatalogJPAUtils.java
index 236b095..58dd139 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/JPAUtil/AppCatalogJPAUtils.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/JPAUtil/AppCatalogJPAUtils.java
@@ -30,7 +30,7 @@
 
     // TODO: we can rename this back to appcatalog_data once we completely replace
     // the other appcatalog_data persistence context in airavata-registry-core
-    private static final String PERSISTENCE_UNIT_NAME = "appcatalog_data_new";
+    public static final String PERSISTENCE_UNIT_NAME = "appcatalog_data_new";
     private static final JDBCConfig JDBC_CONFIG = new AppCatalogJDBCConfig();
     private static final EntityManagerFactory factory = JPAUtils.getEntityManagerFactory(PERSISTENCE_UNIT_NAME,
             JDBC_CONFIG);
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/JPAUtil/ExpCatalogJPAUtils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/JPAUtil/ExpCatalogJPAUtils.java
index 6803bfb..bafc872 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/JPAUtil/ExpCatalogJPAUtils.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/JPAUtil/ExpCatalogJPAUtils.java
@@ -27,7 +27,7 @@
 import org.apache.airavata.registry.core.utils.ExpCatalogJDBCConfig;
 
 public class ExpCatalogJPAUtils {
-    private static final String PERSISTENCE_UNIT_NAME = "experiment_data_new";
+    public static final String PERSISTENCE_UNIT_NAME = "experiment_data_new";
     private static final JDBCConfig JDBC_CONFIG = new ExpCatalogJDBCConfig();
     private static final EntityManagerFactory factory = JPAUtils.getEntityManagerFactory(PERSISTENCE_UNIT_NAME, JDBC_CONFIG);
 
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/JPAUtil/RepCatalogJPAUtils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/JPAUtil/RepCatalogJPAUtils.java
index 4e3b4f0..7b1f9cb 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/JPAUtil/RepCatalogJPAUtils.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/JPAUtil/RepCatalogJPAUtils.java
@@ -29,7 +29,7 @@
 public class RepCatalogJPAUtils {
 
     // TODO: we can rename this back to replicacatalog_data once we completely replace the other replicacatalog_data persistence context in airavata-registry-core
-    private static final String PERSISTENCE_UNIT_NAME = "replicacatalog_data_new";
+    public static final String PERSISTENCE_UNIT_NAME = "replicacatalog_data_new";
     private static final JDBCConfig JDBC_CONFIG = new ReplicaCatalogJDBCConfig();
     private static final EntityManagerFactory factory = JPAUtils.getEntityManagerFactory(PERSISTENCE_UNIT_NAME, JDBC_CONFIG);
 
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/migration/MappingToolRunner.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/migration/MappingToolRunner.java
new file mode 100644
index 0000000..97bba99
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/migration/MappingToolRunner.java
@@ -0,0 +1,46 @@
+package org.apache.airavata.registry.core.utils.migration;
+
+import org.apache.airavata.common.utils.JDBCConfig;
+import org.apache.airavata.common.utils.JPAUtils;
+import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
+import org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl;
+import org.apache.openjpa.jdbc.meta.MappingTool;
+import org.apache.openjpa.lib.util.Options;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MappingToolRunner {
+
+    private static Logger logger = LoggerFactory.getLogger(MappingToolRunner.class);
+
+    public static void run(JDBCConfig jdbcConfig, String outputFile, String persistenceUnitName) {
+        run(jdbcConfig, outputFile, persistenceUnitName, MappingTool.ACTION_ADD);
+    }
+
+    // schemaAction is one of MappingTool's supported actions: http://openjpa.apache.org/builds/2.4.3/apache-openjpa/docs/ref_guide_mapping.html#ref_guide_mapping_mappingtool
+    public static void run(JDBCConfig jdbcConfig, String outputFile, String persistenceUnitName, String schemaAction) {
+
+        JDBCConfiguration jdbcConfiguration = new JDBCConfigurationImpl();
+        jdbcConfiguration.fromProperties(JPAUtils.createConnectionProperties(jdbcConfig));
+        jdbcConfiguration.setConnectionDriverName("org.apache.commons.dbcp.BasicDataSource");
+
+        Options options = new Options();
+        options.put("sqlFile", outputFile);
+        // schemaAction "add" brings the schema up to date by adding missing schema elements
+        // schemaAction "build" creates the entire schema as if the database is empty
+        options.put("schemaAction", schemaAction);
+        options.put("foreignKeys", "true");
+        options.put("indexes", "true");
+        options.put("primaryKeys", "true");
+        // Specify persistence-unit name using it's anchor in the persistence.xml file
+        // http://openjpa.apache.org/builds/2.4.3/apache-openjpa/docs/ref_guide_conf_devtools.html
+        options.put("properties", "persistence.xml#" + persistenceUnitName);
+        try {
+            MappingTool.run(jdbcConfiguration, new String[] {}, options, null);
+        } catch (Exception mappingToolEx) {
+            logger.error("Failed to run MappingTool", mappingToolEx);
+            throw new RuntimeException(
+                    "Failed to run MappingTool to generate migration script", mappingToolEx);
+        }
+    }
+}
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/migration/MigrationSchemaGenerator.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/migration/MigrationSchemaGenerator.java
new file mode 100644
index 0000000..be0b524
--- /dev/null
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/utils/migration/MigrationSchemaGenerator.java
@@ -0,0 +1,100 @@
+package org.apache.airavata.registry.core.utils.migration;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+import org.apache.airavata.common.utils.DBInitConfig;
+import org.apache.airavata.common.utils.DBInitializer;
+import org.apache.airavata.common.utils.JDBCConfig;
+import org.apache.airavata.registry.core.utils.AppCatalogDBInitConfig;
+import org.apache.airavata.registry.core.utils.ExpCatalogDBInitConfig;
+import org.apache.airavata.registry.core.utils.ReplicaCatalogDBInitConfig;
+import org.apache.airavata.registry.core.utils.JPAUtil.AppCatalogJPAUtils;
+import org.apache.airavata.registry.core.utils.JPAUtil.ExpCatalogJPAUtils;
+import org.apache.airavata.registry.core.utils.JPAUtil.RepCatalogJPAUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MigrationSchemaGenerator {
+
+    private static final Logger logger = LoggerFactory.getLogger(MigrationSchemaGenerator.class);
+
+    private enum Database {
+        app_catalog(new AppCatalogDBInitConfig().setDbInitScriptPrefix("appcatalog"),
+                AppCatalogJPAUtils.PERSISTENCE_UNIT_NAME),
+        experiment_catalog(new ExpCatalogDBInitConfig().setDbInitScriptPrefix("expcatalog"),
+                ExpCatalogJPAUtils.PERSISTENCE_UNIT_NAME),
+        replica_catalog(new ReplicaCatalogDBInitConfig().setDbInitScriptPrefix("replicacatalog"),
+                RepCatalogJPAUtils.PERSISTENCE_UNIT_NAME);
+
+        private final DBInitConfig dbInitConfig;
+        private final String persistenceUnitName;
+
+        Database(DBInitConfig dbInitConfig, String persistenceUnitName) {
+            this.dbInitConfig = dbInitConfig;
+            this.persistenceUnitName = persistenceUnitName;
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+
+        String schemaAction = args.length > 0 ? args[0] : "add";
+        try {
+            for (Database database : Database.values()) {
+
+                waitForDatabaseServer(database.dbInitConfig.getJDBCConfig(), 30);
+                try {
+                    logger.info("initializing database " + database.name());
+                    DBInitializer.initializeDB(database.dbInitConfig);
+                } catch (Exception e) {
+
+                    logger.error("Failed to initialize database " + database.name(), e);
+                } finally {
+                    String outputFile = "add".equals(schemaAction) ? database.name() + "-migration.sql"
+                            : database.name() + "-schema.sql";
+                    logger.info("creating database script: " + outputFile);
+                    MappingToolRunner.run(database.dbInitConfig.getJDBCConfig(), outputFile,
+                            database.persistenceUnitName, schemaAction);
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Failed to create the databases", e);
+            throw e;
+        }
+    }
+
+    private static void waitForDatabaseServer(JDBCConfig jdbcConfig, int timeoutSeconds) {
+
+        long startTime = System.currentTimeMillis();
+        boolean connected = false;
+        while (!connected) {
+
+            if ((System.currentTimeMillis() - startTime) / 1000 > timeoutSeconds) {
+                throw new RuntimeException(
+                        "Failed to connect to database server after " + timeoutSeconds + " seconds!");
+            }
+            Connection conn = null;
+            try {
+                Class.forName(jdbcConfig.getDriver());
+                conn = DriverManager.getConnection(jdbcConfig.getURL(), jdbcConfig.getUser(), jdbcConfig.getPassword());
+                connected = conn.isValid(10);
+            } catch (Exception e) {
+                logger.debug("Failed to connect to database: " + e.getMessage() + ", waiting 1 second before retrying");
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e1) {
+                    logger.warn("Thread sleep interrupted, ignoring");
+                }
+            } finally {
+                if (conn != null) {
+                    try {
+                        conn.close();
+                    } catch (SQLException e) {
+                        logger.warn("Failed to close connection, ignoring");
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/modules/registry/registry-core/src/main/resources/META-INF/generate-sql-persistence.xml b/modules/registry/registry-core/src/main/resources/META-INF/generate-sql-persistence.xml
deleted file mode 100644
index 944413d..0000000
--- a/modules/registry/registry-core/src/main/resources/META-INF/generate-sql-persistence.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-* -->
-<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
-    <!-- openjpa:sql doesn't work well with multiple persistence-unit's in persistence.xml, so
-    use this single persistence-unit persistence.xml to list any classes for which SQL schema
-    generation is desired -->
-    <persistence-unit name="generate-sql">
-        <class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.HandlerInputEntity</class>
-        <class>org.apache.airavata.registry.core.entities.airavataworkflowcatalog.HandlerOutputEntity</class>
-    </persistence-unit>
-</persistence>
diff --git a/modules/registry/registry-core/src/main/resources/migrations-util/derby/airavata-server.properties b/modules/registry/registry-core/src/main/resources/migrations-util/derby/airavata-server.properties
new file mode 100644
index 0000000..006bd2d
--- /dev/null
+++ b/modules/registry/registry-core/src/main/resources/migrations-util/derby/airavata-server.properties
@@ -0,0 +1,72 @@
+#
+#
+# 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.
+#
+
+###########################################################################
+#
+#  Properties file for creating database migrations
+#
+###########################################################################
+
+###########################################################################
+#  API Server Registry Configuration
+###########################################################################
+
+#for derby [AiravataJPARegistry]
+registry.jdbc.driver=org.apache.derby.jdbc.ClientDriver
+registry.jdbc.url=jdbc:derby:experiment_catalog;create=true;user=airavata;password=airavata
+registry.jdbc.user=airavata
+registry.jdbc.password=airavata
+validationQuery=SELECT 1 from CONFIGURATION
+
+# Properties for default user mode
+default.registry.user=admin
+default.registry.gateway=php_reference_gateway
+default.registry.oauth.client.id=client_id
+default.registry.oauth.client.secret=client_secret
+
+###########################################################################
+#  Application Catalog DB Configuration
+###########################################################################
+#for derby [AiravataJPARegistry]
+appcatalog.jdbc.driver=org.apache.derby.jdbc.ClientDriver
+appcatalog.jdbc.url=jdbc:derby:app_catalog;create=true;user=airavata;password=airavata
+appcatalog.jdbc.user=airavata
+appcatalog.jdbc.password=airavata
+appcatalog.validationQuery=SELECT 1 from CONFIGURATION
+
+##########################################################################
+#  Replica Catalog DB Configuration
+###########################################################################
+#for derby [AiravataJPARegistry]
+replicacatalog.jdbc.driver=org.apache.derby.jdbc.ClientDriver
+replicacatalog.jdbc.url=jdbc:derby:replica_catalog;create=true;user=airavata;password=airavata
+replicacatalog.jdbc.user=airavata
+replicacatalog.jdbc.password=airavata
+replicacatalog.validationQuery=SELECT 1 from CONFIGURATION
+
+###########################################################################
+#  Workflow Catalog DB Configuration
+###########################################################################
+#for derby [AiravataJPARegistry]
+workflowcatalog.jdbc.driver=org.apache.derby.jdbc.ClientDriver
+workflowcatalog.jdbc.url=jdbc:derby:workflow_catalog;create=true;user=airavata;password=airavata
+workflowcatalog.jdbc.user=airavata
+workflowcatalog.jdbc.password=airavata
+workflowcatalog.validationQuery=SELECT 1 from CONFIGURATION
diff --git a/modules/registry/registry-core/src/main/resources/migrations-util/mysql/airavata-server.properties b/modules/registry/registry-core/src/main/resources/migrations-util/mysql/airavata-server.properties
new file mode 100644
index 0000000..4c84198
--- /dev/null
+++ b/modules/registry/registry-core/src/main/resources/migrations-util/mysql/airavata-server.properties
@@ -0,0 +1,63 @@
+
+#
+#
+# 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.
+#
+
+###########################################################################
+#
+#  Properties file for creating database migrations
+#
+###########################################################################
+
+###########################################################################
+#  API Server Registry Configuration
+###########################################################################
+
+#for derby [AiravataJPARegistry]
+registry.jdbc.driver=org.mariadb.jdbc.Driver
+registry.jdbc.url=jdbc:mariadb://localhost:13306/experiment_catalog
+registry.jdbc.user=airavata
+registry.jdbc.password=123456
+validationQuery=SELECT 1 from CONFIGURATION
+
+# Properties for default user mode
+default.registry.user=admin
+default.registry.gateway=php_reference_gateway
+default.registry.oauth.client.id=client_id
+default.registry.oauth.client.secret=client_secret
+
+###########################################################################
+#  Application Catalog DB Configuration
+###########################################################################
+#for derby [AiravataJPARegistry]
+appcatalog.jdbc.driver=org.mariadb.jdbc.Driver
+appcatalog.jdbc.url=jdbc:mariadb://localhost:13306/app_catalog
+appcatalog.jdbc.user=airavata
+appcatalog.jdbc.password=123456
+appcatalog.validationQuery=SELECT 1 from CONFIGURATION
+
+##########################################################################
+#  Replica Catalog DB Configuration
+###########################################################################
+#for derby [AiravataJPARegistry]
+replicacatalog.jdbc.driver=org.mariadb.jdbc.Driver
+replicacatalog.jdbc.url=jdbc:mariadb://localhost:13306/replica_catalog
+replicacatalog.jdbc.user=airavata
+replicacatalog.jdbc.password=123456
+replicacatalog.validationQuery=SELECT 1 from CONFIGURATION
diff --git a/modules/registry/registry-core/src/main/resources/migrations-util/mysql/docker-compose.yml b/modules/registry/registry-core/src/main/resources/migrations-util/mysql/docker-compose.yml
new file mode 100644
index 0000000..c1478ed
--- /dev/null
+++ b/modules/registry/registry-core/src/main/resources/migrations-util/mysql/docker-compose.yml
@@ -0,0 +1,15 @@
+version: '3'
+services:
+  db:
+    image: mariadb:10.4.13
+    environment:
+      - MYSQL_ROOT_PASSWORD=123456
+      - MYSQL_USER=airavata
+      - MYSQL_PASSWORD=123456
+    volumes:
+      - ./docker-entrypoint-initdb.d/:/docker-entrypoint-initdb.d
+    ports:
+        - "13306:3306"
+    command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--sql_mode=']
+# Connect to database with:
+# $ docker run --network mysql_default -it --rm mariadb:10 mysql -h mysql_db_1 -u airavata -p123456
diff --git a/modules/registry/registry-core/src/main/resources/migrations-util/mysql/docker-entrypoint-initdb.d/create_databases.sql b/modules/registry/registry-core/src/main/resources/migrations-util/mysql/docker-entrypoint-initdb.d/create_databases.sql
new file mode 100644
index 0000000..9b9a9bd
--- /dev/null
+++ b/modules/registry/registry-core/src/main/resources/migrations-util/mysql/docker-entrypoint-initdb.d/create_databases.sql
@@ -0,0 +1,27 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+create database app_catalog;
+grant all privileges on app_catalog.* to 'airavata'@'%' with grant option;
+create database experiment_catalog;
+grant all privileges on experiment_catalog.* to 'airavata'@'%' with grant option;
+create database replica_catalog;
+grant all privileges on replica_catalog.* to 'airavata'@'%' with grant option;
diff --git a/modules/registry/registry-core/src/test/java/org/apache/airavata/registry/core/repositories/replicacatalog/DataProductRepositoryTest.java b/modules/registry/registry-core/src/test/java/org/apache/airavata/registry/core/repositories/replicacatalog/DataProductRepositoryTest.java
index 75b182d..2e191c7 100644
--- a/modules/registry/registry-core/src/test/java/org/apache/airavata/registry/core/repositories/replicacatalog/DataProductRepositoryTest.java
+++ b/modules/registry/registry-core/src/test/java/org/apache/airavata/registry/core/repositories/replicacatalog/DataProductRepositoryTest.java
@@ -132,7 +132,8 @@
         assertEquals(1, retrievedDataProductModel1.getReplicaLocationsSize());
         DataReplicaLocationModel retrievedReplicaLocationModel1 = retrievedDataProductModel1.getReplicaLocations().get(0);
         assertEquals(productUri1, retrievedReplicaLocationModel1.getProductUri());
-        assertFalse(retrievedReplicaLocationModel1.isSetValidUntilTime());
+        // validUntilTime has a default value
+        assertEquals(0, retrievedReplicaLocationModel1.getValidUntilTime());
 
         dataProductRepository.removeDataProduct(productUri1);
         assertFalse(dataProductRepository.isDataProductExists(productUri1));
diff --git a/modules/registry/registry-core/src/test/java/org/apache/airavata/registry/core/repositories/replicacatalog/DataReplicaLocationRepositoryTest.java b/modules/registry/registry-core/src/test/java/org/apache/airavata/registry/core/repositories/replicacatalog/DataReplicaLocationRepositoryTest.java
index 2784733..0082473 100644
--- a/modules/registry/registry-core/src/test/java/org/apache/airavata/registry/core/repositories/replicacatalog/DataReplicaLocationRepositoryTest.java
+++ b/modules/registry/registry-core/src/test/java/org/apache/airavata/registry/core/repositories/replicacatalog/DataReplicaLocationRepositoryTest.java
@@ -89,7 +89,8 @@
         DataReplicaLocationModel retrievedDataReplicaLocationModel = dataReplicaLocationRepository.getReplicaLocation(replicaId1);
         assertTrue(retrievedDataReplicaLocationModel.getReplicaMetadata().size() == 2);
         assertEquals(retrievedDataReplicaLocationModel.getReplicaPersistentType(), testDataReplicaLocationModel1.getReplicaPersistentType());
-        assertFalse(retrievedDataReplicaLocationModel.isSetValidUntilTime());
+        // validUntilTime has a default value
+        assertEquals(0, retrievedDataReplicaLocationModel.getValidUntilTime());
 
         testDataProductModel.setReplicaLocations(Arrays.asList(testDataReplicaLocationModel1, testDataReplicaLocationModel2));
         dataProductRepository.updateDataProduct(testDataProductModel);
