diff --git a/bin/dm-add-user-system-role b/bin/dm-add-user-system-role
index 0a8eb23891d42db438c62bdbffe34d49fe208f1a..74e305d4dafe5183a6f9f66421d15e8862d8284d 100755
--- a/bin/dm-add-user-system-role
+++ b/bin/dm-add-user-system-role
@@ -12,6 +12,8 @@ if [ -z $DM_ROOT_DIR ]; then
     source $setupFile > /dev/null
 fi
 
-$DM_ROOT_DIR/src/python/dm/common/db/cli/addUserSystemRoleCli.py $@
+#$DM_ROOT_DIR/src/python/dm/common/db/cli/addUserSystemRoleCli.py $@
+$DM_ROOT_DIR/src/python/dm/ds_web_service/cli/addUserSystemRoleCli.py $@
+
 
 
diff --git a/bin/dm-delete-user-system-role b/bin/dm-delete-user-system-role
new file mode 100755
index 0000000000000000000000000000000000000000..e93b23abd5f3d335fa5b05e1276337f2582e2aaa
--- /dev/null
+++ b/bin/dm-delete-user-system-role
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# Run command
+
+if [ -z $DM_ROOT_DIR ]; then
+    cd `dirname $0` && myDir=`pwd`
+    setupFile=$myDir/../setup.sh
+    if [ ! -f $setupFile ]; then
+        echo "Cannot find setup file: $setupFile"
+        exit 1
+    fi
+    source $setupFile > /dev/null
+fi
+
+#$DM_ROOT_DIR/src/python/dm/common/db/cli/deleteUserSystemRoleCli.py $@
+$DM_ROOT_DIR/src/python/dm/ds_web_service/cli/deleteUserSystemRoleCli.py $@
+
+
+
diff --git a/sbin/create_dm_db.sh b/sbin/create_dm_db.sh
deleted file mode 100755
index 319b532f6294f4e1ba188478b1c842a20fadc454..0000000000000000000000000000000000000000
--- a/sbin/create_dm_db.sh
+++ /dev/null
@@ -1,224 +0,0 @@
-#!/bin/sh
-
-#
-# Script used for creating DM database
-# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
-#
-# Usage:
-#
-# $0 [DM_DB_NAME [DM_DB_SCRIPTS_DIR]]
-#
-
-DM_DB_NAME=dm
-DM_DB_USER=dm
-DM_DB_PASSWORD=dm
-DM_DB_HOST=127.0.0.1
-DM_DB_PORT=11136
-DM_DB_ADMIN_USER=postgres
-DM_DB_ADMIN_HOSTS="127.0.0.1 bluegill1.aps.anl.gov visa%.aps.anl.gov"
-DM_DB_ADMIN_PASSWORD=
-DM_DB_CHARACTER_SET=utf8
-
-
-CURRENT_DIR=`pwd`
-MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
-cd $CURRENT_DIR
-
-if [ -z "${DM_ROOT_DIR}" ]; then
-    DM_ROOT_DIR=$MY_DIR/..
-fi
-DM_INSTALL_DIR=${DM_INSTALL_DIR:=$DM_ROOT_DIR/..}
-DM_SQL_DIR=$DM_ROOT_DIR/db
-DM_ETC_DIR=$DM_INSTALL_DIR/etc
-DM_RUN_DIR=$DM_INSTALL_DIR/var/run
-DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
-if [ ! -f ${DM_ENV_FILE} ]; then
-    echo "Environment file ${DM_ENV_FILE} does not exist." 
-    exit 1
-fi
-. ${DM_ENV_FILE} > /dev/null 
-
-# DM_SUPPORT_DIR should now be defined.
-if [ -z "$DM_SUPPORT_DIR" ]; then
-    echo "Invalid environment file ${DM_ENV_FILE}: DM_SUPPORT_DIR is not defined."
-    exit 1
-fi
-PG_DIR=$DM_SUPPORT_DIR/postgresql/$DM_HOST_ARCH
-PG_CONTROL_SCRIPT=$DM_ROOT_DIR/etc/init.d/dm-postgresql
-PG_DATA_DIR=$PG_DIR/data
-PG_HBA_CONF=$PG_DATA_DIR/pg_hba.conf
-DB_LOCK_FILE=${DM_RUN_DIR}/${DM_DB_NAME}.db.lock
-DB_CREATE_SCRIPT=${DM_ROOT_DIR}/db/create_${DM_DB_NAME}_db.sql
-
-# Use first argument as db name, if provided
-if [ ! -z "$1" ]; then
-    DM_DB_NAME=$1
-fi
-echo "Using DB name: $DM_DB_NAME"
-
-# Look for deployment file in etc directory, and use it to override
-# default entries
-deployConfigFile=$DM_ROOT_DIR/etc/${DM_DB_NAME}.deploy.conf
-if [ -f $deployConfigFile ]; then
-    echo "Using deployment config file: $deployConfigFile"
-    . $deployConfigFile
-else
-    echo "Deployment config file $deployConfigFile not found, using defaults"
-fi
-
-# Second argument overrides directory with db population scripts
-DM_DB_SCRIPTS_DIR=${DM_DB_SCRIPTS_DIR:=$DM_SQL_DIR}
-if [ ! -z "$2" ]; then
-    DM_DB_SCRIPTS_DIR=$2
-fi
-if [ ! -d $DM_DB_SCRIPTS_DIR ]; then
-    echo "DB Scripts directory $DM_DB_SCRIPTS_DIR does not exist."
-    exit 1
-fi
-
-echo "Using DB scripts directory: $DM_DB_SCRIPTS_DIR"
-
-execute() {
-    msg="$@"
-    if [ ! -z "$DM_DB_ADMIN_PASSWORD" ]; then
-        sedCmd="s?$DM_DB_ADMIN_PASSWORD?\\*\\*\\*\\*\\*\\*?g"
-        echo "Executing: $@" | sed -e $sedCmd
-    else
-        echo "Executing: $@"
-    fi
-    eval "$@"
-}
-
-createDb() {
-    if [ -f $DB_LOCK_FILE ]; then
-        echo "Database lock file $DB_LOCK_FILE already exists, will not proceed."
-        return 1
-    fi
-    echo "Creating database $DM_DB_NAME"
-    ${PG_DIR}/bin/createdb -U $DM_DB_USER -h $DM_DB_HOST -p $DM_DB_PORT $DM_DB_NAME || return 1
-    echo "Creating database schema for $DM_DB_NAME"
-    ${PG_DIR}/bin/psql -U $DM_DB_USER -h $DM_DB_HOST -p $DM_DB_PORT -d $DM_DB_NAME -f $DB_CREATE_SCRIPT || return 1
-    touch $DB_LOCK_FILE
-}
-
-createDbUser() {
-    _dbUser=$1
-    shift 1
-    _createFlags=$@
-
-    # create user
-    ${PG_DIR}/bin/createuser -h $DM_DB_HOST -p $DM_DB_PORT $_createFlags $_dbUser || return 1
-}
-
-modifyDbUserPassword() {
-    _dbUser=$1
-    _dbPassword=$2
-    _tmpFile=/tmp/$$.sql
-    echo "alter user $_dbUser with password '$_dbPassword';" > $_tmpFile
-    $PG_DIR/bin/psql -h $DM_DB_HOST -p $DM_DB_PORT -d postgres -f $_tmpFile
-    rm -f $_tmpFile
-}
-
-# Check for failed earlier attempt
-if [ -f $PG_HBA_CONF.orig ]; then
-    echo "File $PG_HBA_CONF.orig exists, refusing to proceed."
-    exit 1
-fi
-
-# Initialize db if needed
-dbAction=restart
-createDbRootUser=false
-if [ ! -f $PG_HBA_CONF ]; then
-    $PG_CONTROL_SCRIPT initdb || exit 1
-    dbAction=start
-    createDbRootUser=true
-fi
-
-# Modify db permissions, restart db.
-echo "Modifying db access permissions"
-mv $PG_HBA_CONF $PG_HBA_CONF.orig
-cat $PG_HBA_CONF.orig | sed 's?host.*all.*all.*127.*?host all all 127.0.0.1/32 trust?g' | sed 's?host.*all.*all.*::1/128.*?host all all ::1/128 trust?g' > $PG_HBA_CONF || exit 1
-echo "Restarting database server"
-$PG_CONTROL_SCRIPT $dbAction
-
-# Create db root user if needed
-sttyOrig=`stty -g`
-if [ $createDbRootUser = "true" ]; then
-    # Read db password if needed 
-    if [ -z "$DM_DB_ADMIN_PASSWORD" ]; then
-        stty -echo
-        read -p "Enter DB password for the $DM_DB_ADMIN_USER (DB root) user: " DM_DB_ADMIN_PASSWORD
-        echo
-        stty $sttyOrig
-    fi
-
-    # Create postgres user 
-    echo "Creating $DM_DB_ADMIN_USER"
-    createDbUser $DM_DB_ADMIN_USER -E -s || exit 1
-    modifyDbUserPassword $DM_DB_ADMIN_USER $DM_DB_ADMIN_PASSWORD || exit 1
-fi
-
-# Read user db password if needed 
-if [ -z "$DM_DB_USER_PASSWORD" ]; then
-    stty -echo
-    read -p "Enter DB password for the $DM_DB_USER user: " DM_DB_USER_PASSWORD
-    echo
-    stty $sttyOrig
-fi
-
-# Create db user
-echo "Creating $DM_DB_USER"
-createDbUser $DM_DB_USER -E -d || exit 1
-modifyDbUserPassword $DM_DB_USER $DM_DB_USER_PASSWORD || exit 1
-
-# Create db password file
-mkdir -p $DM_ETC_DIR
-mkdir -p $DM_RUN_DIR
-passwordFile=$DM_ETC_DIR/$DM_DB_NAME.db.passwd
-echo $DM_DB_USER_PASSWORD > $passwordFile
-chmod 600 $passwordFile
-
-# Create db
-echo "Creating database: $DM_DB_NAME"
-createDb || exit 1
-
-# populate db
-cd $CURRENT_DIR && cd $DM_DB_SCRIPTS_DIR
-DM_DB_TABLES="\
-  experiment_type \
-  user_info \
-  role_type \
-  user_system_role \
-  policy_type \
-  policy_property \
-  allowed_policy_value \
-  users_last_update
-"
-for dbTable in $DM_DB_TABLES; do
-    dbFile=populate_$dbTable.sql
-    if [ -f $dbFile ]; then
-        echo "Populating $dbTable using $dbFile script"
-        execute ${PG_DIR}/bin/psql -U $DM_DB_USER -h $DM_DB_HOST -p $DM_DB_PORT -d $DM_DB_NAME -f $dbFile || exit 1
-    else
-        echo "$dbFile not found, skipping $dbTable update"
-    fi
-done
-
-# cleanup
-echo "Restoring db access permissions"
-if [ $createDbRootUser = "true" ]; then
-    # db was just created, enable password access
-    cat $PG_HBA_CONF.orig | sed 's?host.*all.*all.*127.*?host all all 127.0.0.1/32 md5?g' | sed 's?host.*all.*all.*::1/128.*?host all all ::1/128 md5?g' > $PG_HBA_CONF || exit 1
-    rm -f $PG_HBA_CONF.orig 
-else
-    # no changes needed to original hba file
-    mv $PG_HBA_CONF.orig $PG_HBA_CONF
-fi
-
-echo "Restarting database server"
-$PG_CONTROL_SCRIPT restart
-
-echo "Database $DM_DB_NAME created successfully"
-echo
-
-
diff --git a/sbin/dm_create_db.sh b/sbin/dm_create_db.sh
index a91b8bf6f43fc3ec822060bd2690161765f8169f..52b3b6c0c879c3f5da88d1dd2eca1a6ca4f1d9dd 100755
--- a/sbin/dm_create_db.sh
+++ b/sbin/dm_create_db.sh
@@ -191,12 +191,17 @@ createDb || exit 1
 cd $CURRENT_DIR && cd $DM_DB_SCRIPTS_DIR
 DM_DB_TABLES="\
   experiment_type \
+  experiment_station \
+  allowed_experiment_station_experiment_type \
+  experiment \
+  storage \
+  endpoint \
+  data_folder \
   user_info \
-  role_type \
+  system_role_type \
+  experiment_role_type \
   user_system_role \
-  policy_type \
-  policy_property \
-  allowed_policy_value
+  user_experiment_role 
 "
 for dbTable in $DM_DB_TABLES; do
     dbFile=populate_$dbTable.sql
diff --git a/sbin/dm_deploy_cat_web_service.sh b/sbin/dm_deploy_cat_web_service.sh
index e2ea3ce3f9088f4282f69ab1277cdf729fd4f335..2fe77b2ca6066b51772cb44d9a193732215a3db7 100755
--- a/sbin/dm_deploy_cat_web_service.sh
+++ b/sbin/dm_deploy_cat_web_service.sh
@@ -43,6 +43,10 @@ DM_HOSTNAME=`hostname -f`
 
 DM_CONTEXT_ROOT=${DM_CONTEXT_ROOT:=dm}
 DM_INSTALL_DIR=${DM_INSTALL_DIR:=$DM_ROOT_DIR/..}
+if [ -d $DM_INSTALL_DIR ]; then
+    cd $DM_INSTALL_DIR && DM_INSTALL_DIR=`pwd` || exit 1
+fi
+
 DM_ETC_DIR=${DM_INSTALL_DIR}/etc
 DM_SSL_DIR=${DM_ETC_DIR}/ssl
 DM_LOG_DIR=${DM_INSTALL_DIR}/var/log
@@ -70,7 +74,7 @@ if [ -z "$DM_DS_WEB_SERVICE_HOST" ]; then
     DM_DS_WEB_SERVICE_HOST=$DM_HOSTNAME
 fi
 
-read -p "Enter DM DS Web Service Installation Directory: " DM_DS_INSTALL_DIR
+read -p "Enter DM DS Web Service Installation Directory [$DM_INSTALL_DIR]: " DM_DS_INSTALL_DIR
 if [ -z "$DM_DS_INSTALL_DIR" ]; then
     DM_DS_INSTALL_DIR=$DM_INSTALL_DIR
 fi
diff --git a/sbin/dm_deploy_daq_web_service.sh b/sbin/dm_deploy_daq_web_service.sh
index 4cb9267f1cda9ba8b8b50f1211b925a6e591ed5a..de9da8cdf9b4adee614bd915e00f9c76833e2adb 100755
--- a/sbin/dm_deploy_daq_web_service.sh
+++ b/sbin/dm_deploy_daq_web_service.sh
@@ -43,6 +43,11 @@ DM_HOSTNAME=`hostname -f`
 
 DM_CONTEXT_ROOT=${DM_CONTEXT_ROOT:=dm}
 DM_INSTALL_DIR=${DM_INSTALL_DIR:=$DM_ROOT_DIR/..}
+if [ -d $DM_INSTALL_DIR ]; then
+    cd $DM_INSTALL_DIR && DM_INSTALL_DIR=`pwd` || exit 1
+fi
+
+
 DM_ETC_DIR=${DM_INSTALL_DIR}/etc
 DM_SSL_DIR=${DM_ETC_DIR}/ssl
 DM_LOG_DIR=${DM_INSTALL_DIR}/var/log
@@ -69,7 +74,7 @@ if [ -z "$DM_DS_WEB_SERVICE_HOST" ]; then
     DM_DS_WEB_SERVICE_HOST=$DM_HOSTNAME
 fi
 
-read -p "Enter DM DS Web Service Installation Directory: " DM_DS_INSTALL_DIR
+read -p "Enter DM DS Web Service Installation Directory [$DM_INSTALL_DIR]: " DM_DS_INSTALL_DIR
 if [ -z "$DM_DS_INSTALL_DIR" ]; then
     DM_DS_INSTALL_DIR=$DM_INSTALL_DIR
 fi
diff --git a/sbin/experiment_station.txt b/sbin/experiment_station.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3150965691ae2107a5b5eb7e794fd73bd53a4a3e
--- /dev/null
+++ b/sbin/experiment_station.txt
@@ -0,0 +1,121 @@
+"PUP_AFRL_aug16-files", 2
+"PUP_AFRL_dec16-files", 2
+"abraham_jul15-files", 2
+"bei_apr16-files", 2
+"birkedal_jul16-files", 2
+"black_feb16-files", 2
+"broderick_apr16-files", 2
+"broderick_dec16-files", 2
+"brown_apr16-files", 2
+"brown_aug14-files", 2
+"brown_mar16-files", 2
+"brown_oct12-files", 2
+"cchuang_jul16-files", 2
+"cchuang_oct14-files", 2
+"chuang_nov16-files", 2
+"clausen_jul16-files", 2
+"coratella_feb15-files", 2
+"cp-test-001-files", 2
+"depinoy_apr16-files", 2
+"feng_mar16-files", 2
+"gao_mar15-files", 2
+"gonzalez_feb15-files", 2
+"haas_nov16-files", 2
+"hector_mar16-files", 2
+"hector_mar16_rec-files", 2
+"hemker_oct16-files", 2
+"hufnagel_oct16-files", 2
+"id1-test01-files", 2
+"internal_aug16-files", 2
+"kaoumi_nov16-files", 2
+"kenneth_nov16-files", 2
+"knauf_apr16-files", 2
+"kruzic_feb16-files", 2
+"leyunwang_nov15-files", 2
+"lind_jun16-files", 2
+"maass_jun16-files", 2
+"mam_feb16-files", 2
+"mam_kappes_apr16-files", 2
+"meimei_apr16-files", 2
+"meimei_aug14-files", 2
+"meimei_jul16-files", 2
+"meimei_jun12-files", 2
+"meimei_mar13-files", 2
+"miller_apr10-files", 2
+"mo_apr16-files", 2
+"nx_jun15-files", 2
+"okasinski_jul16-files", 2
+"okasinski_jun14-files", 2
+"okasinski_may14-files", 2
+"okasinski_nov14-files", 2
+"okasinski_oct15-files", 2
+"okuniewski_apr16-files", 2
+"okuniewski_mar16-files", 2
+"okuniewski_oct16-files", 2
+"pantleon_aug16-files", 2
+"paranjape_feb16-files", 2
+"park_apr16-files", 2
+"park_aug15-files", 2
+"park_dec13-files", 2
+"park_jul15-files", 2
+"park_jul16-files", 2
+"park_oct16-files", 2
+"petkov_jun16-files", 2
+"s1id-test01-files", 2
+"sangid_jun16-files", 2
+"sangid_oct16-files", 2
+"schaffer_jun13-files", 2
+"seetha_nov16-files", 2
+"singh_apr16-files", 2
+"spear_dec12-files", 2
+"spear_oct16-files", 2
+"spradlin_apr16-files", 2
+"startup_feb16-files", 2
+"startup_mam_jun16-files", 2
+"startup_oct16-files", 2
+"stebner_feb16-files", 2
+"stebner_jun16-files", 2
+"stebner_nov16-files", 2
+"stubbins_jun16-files", 2
+"sun_jul16-files", 2
+"sun_may14-files", 2
+"sun_nov14-files", 2
+"suter_apr14-files", 2
+"suter_dec16-files", 2
+"suter_jul13-files", 2
+"test-ac-files", 2
+"thapa_mar16-files", 2
+"wwang_feb16-files", 2
+"xlwang_jul16-files", 2
+"xu_nov16-files", 2
+"xuan_apr16-files", 2
+"yiren_feb15-files", 2
+"zeng_july15-files", 2
+"zeng_mar16-files", 2
+
+"faraone201610-files", 5
+"id8i-test04-files", 5
+"id8i-test05-files", 5
+"leheny201610-files", 5
+"nuzzo201610-files", 5
+"pinar201610-files", 5
+
+"Test201611-files", 4
+"Test2016112-files", 4
+"Test2016113-files", 4
+"TwentyFour201611-files", 4
+"id7-2016-7-HONDA-files", 4
+"id7-2016test-files", 4
+"id7-test01-files", 4
+"id7-test02-files", 4
+"id7-test2-files", 4
+
+"id33-test01-files", 6
+"id33-test02-files", 6
+"id33-xrim201610-files", 6
+"s33-test01-files", 6
+
+"LarsonCuCompress-files", 7
+"YubinDec2016-files", 7
+"id34e-test01-files", 7
+
diff --git a/sbin/experiment_station_1id.txt b/sbin/experiment_station_1id.txt
new file mode 100644
index 0000000000000000000000000000000000000000..673c85888d828e2d6691c0122b017e55f208e97a
--- /dev/null
+++ b/sbin/experiment_station_1id.txt
@@ -0,0 +1,95 @@
+"PUP_AFRL_aug16-files", 2
+"PUP_AFRL_dec16-files", 2
+"abraham_jul15-files", 2
+"bei_apr16-files", 2
+"birkedal_jul16-files", 2
+"black_feb16-files", 2
+"broderick_apr16-files", 2
+"broderick_dec16-files", 2
+"brown_apr16-files", 2
+"brown_aug14-files", 2
+"brown_mar16-files", 2
+"brown_oct12-files", 2
+"cchuang_jul16-files", 2
+"cchuang_oct14-files", 2
+"chuang_nov16-files", 2
+"clausen_jul16-files", 2
+"coratella_feb15-files", 2
+"cp-test-001-files", 2
+"depinoy_apr16-files", 2
+"feng_mar16-files", 2
+"gao_mar15-files", 2
+"gonzalez_feb15-files", 2
+"haas_nov16-files", 2
+"hector_mar16-files", 2
+"hector_mar16_rec-files", 2
+"hemker_oct16-files", 2
+"hufnagel_oct16-files", 2
+"id1-test01-files", 2
+"internal_aug16-files", 2
+"kaoumi_nov16-files", 2
+"kenneth_nov16-files", 2
+"knauf_apr16-files", 2
+"kruzic_feb16-files", 2
+"leyunwang_nov15-files", 2
+"lind_jun16-files", 2
+"maass_jun16-files", 2
+"mam_feb16-files", 2
+"mam_kappes_apr16-files", 2
+"meimei_apr16-files", 2
+"meimei_aug14-files", 2
+"meimei_jul16-files", 2
+"meimei_jun12-files", 2
+"meimei_mar13-files", 2
+"miller_apr10-files", 2
+"mo_apr16-files", 2
+"nx_jun15-files", 2
+"okasinski_jul16-files", 2
+"okasinski_jun14-files", 2
+"okasinski_may14-files", 2
+"okasinski_nov14-files", 2
+"okasinski_oct15-files", 2
+"okuniewski_apr16-files", 2
+"okuniewski_mar16-files", 2
+"okuniewski_oct16-files", 2
+"pantleon_aug16-files", 2
+"paranjape_feb16-files", 2
+"park_apr16-files", 2
+"park_aug15-files", 2
+"park_dec13-files", 2
+"park_jul15-files", 2
+"park_jul16-files", 2
+"park_oct16-files", 2
+"petkov_jun16-files", 2
+"s1id-test01-files", 2
+"sangid_jun16-files", 2
+"sangid_oct16-files", 2
+"schaffer_jun13-files", 2
+"seetha_nov16-files", 2
+"singh_apr16-files", 2
+"spear_dec12-files", 2
+"spear_oct16-files", 2
+"spradlin_apr16-files", 2
+"startup_feb16-files", 2
+"startup_mam_jun16-files", 2
+"startup_oct16-files", 2
+"stebner_feb16-files", 2
+"stebner_jun16-files", 2
+"stebner_nov16-files", 2
+"stubbins_jun16-files", 2
+"sun_jul16-files", 2
+"sun_may14-files", 2
+"sun_nov14-files", 2
+"suter_apr14-files", 2
+"suter_dec16-files", 2
+"suter_jul13-files", 2
+"test-ac-files", 2
+"thapa_mar16-files", 2
+"wwang_feb16-files", 2
+"xlwang_jul16-files", 2
+"xu_nov16-files", 2
+"xuan_apr16-files", 2
+"yiren_feb15-files", 2
+"zeng_july15-files", 2
+"zeng_mar16-files", 2
+
diff --git a/sbin/experiment_station_33id.txt b/sbin/experiment_station_33id.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1f82e58eddbf28db1002fdb8d3ef66504f9e0e03
--- /dev/null
+++ b/sbin/experiment_station_33id.txt
@@ -0,0 +1,5 @@
+"id33-test01-files", 6
+"id33-test02-files", 6
+"id33-xrim201610-files", 6
+"s33-test01-files", 6
+
diff --git a/sbin/experiment_station_34ide.txt b/sbin/experiment_station_34ide.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c76ec2d3fb6d1ff835d97d466111e15b89874558
--- /dev/null
+++ b/sbin/experiment_station_34ide.txt
@@ -0,0 +1,4 @@
+"LarsonCuCompress-files", 7
+"YubinDec2016-files", 7
+"id34e-test01-files", 7
+
diff --git a/sbin/experiment_station_7id.txt b/sbin/experiment_station_7id.txt
new file mode 100644
index 0000000000000000000000000000000000000000..bdfa8b468cf43e75e2eb2aa246507b8074fe43a7
--- /dev/null
+++ b/sbin/experiment_station_7id.txt
@@ -0,0 +1,10 @@
+"Test201611-files", 4
+"Test2016112-files", 4
+"Test2016113-files", 4
+"TwentyFour201611-files", 4
+"id7-2016-7-HONDA-files", 4
+"id7-2016test-files", 4
+"id7-test01-files", 4
+"id7-test02-files", 4
+"id7-test2-files", 4
+
diff --git a/sbin/experiment_station_8idi.txt b/sbin/experiment_station_8idi.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fa19d8dd3f36a159090afe4f0e5ab77ea5661036
--- /dev/null
+++ b/sbin/experiment_station_8idi.txt
@@ -0,0 +1,7 @@
+"faraone201610-files", 5
+"id8i-test04-files", 5
+"id8i-test05-files", 5
+"leheny201610-files", 5
+"nuzzo201610-files", 5
+"pinar201610-files", 5
+
diff --git a/sbin/list_dm_releases.sh b/sbin/list_dm_releases.sh
deleted file mode 100755
index 9fd16e2b25284c627f8106ece37e6c35333ffc60..0000000000000000000000000000000000000000
--- a/sbin/list_dm_releases.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-SVN_ROOT=https://subversion.xray.aps.anl.gov/DataManagement
-svn ls $SVN_ROOT/tags
-      
diff --git a/sbin/make_dm_release.sh b/sbin/make_dm_release.sh
deleted file mode 100755
index 15663959638a9742ea01c84c5a186ee2595b6e4c..0000000000000000000000000000000000000000
--- a/sbin/make_dm_release.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-SVN_ROOT=https://subversion.xray.aps.anl.gov/DataManagement
-version=$1
-if [ -z $version ]; then
-    echo "Usage: $0 <version>"
-    exit 1
-fi
-svn copy $SVN_ROOT/trunk $SVN_ROOT/tags/$version -m "Creating tag $version"
-      
diff --git a/sbin/unconfigure_dm_webapp.sh b/sbin/unconfigure_dm_webapp.sh
deleted file mode 100755
index accd877a232c34ce1aec836cbce826049f4216c7..0000000000000000000000000000000000000000
--- a/sbin/unconfigure_dm_webapp.sh
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/bin/sh
-
-#
-# Script used for un-configuring DM webapp
-# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
-#
-# Usage:
-#
-# $0 [DM_DB_NAME]
-#
-
-MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
-if [ -z "${DM_ROOT_DIR}" ]; then
-    DM_ROOT_DIR=$MY_DIR/..
-fi
-DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
-if [ ! -f ${DM_ENV_FILE} ]; then
-    echo "Environment file ${DM_ENV_FILE} does not exist." 
-    exit 2
-fi
-. ${DM_ENV_FILE} > /dev/null
-
-# Use first argument as db name, if provided
-DM_DB_NAME=${DM_DB_NAME:=dm}
-if [ ! -z "$1" ]; then
-    DM_DB_NAME=$1
-fi
-echo "Using DB name: $DM_DB_NAME"
-
-# Look for deployment file in etc directory, and use it to override
-# default entries
-deployConfigFile=$DM_ROOT_DIR/etc/${DM_DB_NAME}.deploy.conf
-if [ -f $deployConfigFile ]; then
-    echo "Using deployment config file: $deployConfigFile"
-    . $deployConfigFile
-else
-    echo "Deployment config file $deployConfigFile not found, using defaults"
-fi
-
-DM_HOST_ARCH=`uname | tr [A-Z] [a-z]`-`uname -m`
-GLASSFISH_DIR=$DM_SUPPORT_DIR/glassfish/$DM_HOST_ARCH
-JAVA_HOME=$DM_SUPPORT_DIR/java/$DM_HOST_ARCH
-
-export AS_JAVA=$JAVA_HOME
-ASADMIN_CMD=$GLASSFISH_DIR/bin/asadmin 
-
-DM_DB_POOL=postgresql_${DM_DB_NAME}_DbPool
-DM_DATA_SOURCE=${DM_DB_NAME}_DataSource
-DM_DOMAIN=domain1
-
-# restart server
-echo "Restarting glassfish"
-$ASADMIN_CMD stop-domain ${DM_DOMAIN}
-$ASADMIN_CMD start-domain ${DM_DOMAIN}
-
-# delete JDBC resource associated with this connection pool
-echo "Deleting JDBC resource $DM_DATA_SOURCE"
-$ASADMIN_CMD delete-jdbc-resource ${DM_DATA_SOURCE}
-
-# delete JDBC connection pool
-echo "Deleting JDBC connection pool $DM_DB_POOL"
-$ASADMIN_CMD delete-jdbc-connection-pool ${DM_DB_POOL}
-
-
diff --git a/sbin/undeploy_dm_webapp.sh b/sbin/undeploy_dm_webapp.sh
deleted file mode 100755
index 4ad3b6d2b2d9e62771beab3adccfa2df62e87525..0000000000000000000000000000000000000000
--- a/sbin/undeploy_dm_webapp.sh
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/sh
-
-#
-# Script used for undeploying DM webapp
-# Deployment configuration can be set in etc/$DM_DB_NAME.deploy.conf file
-#
-# Usage:
-#
-# $0 [DM_DB_NAME]
-#
-
-MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
-if [ -z "${DM_ROOT_DIR}" ]; then
-    DM_ROOT_DIR=$MY_DIR/..
-fi
-DM_ENV_FILE=${DM_ROOT_DIR}/setup.sh
-if [ ! -f ${DM_ENV_FILE} ]; then
-    echo "Environment file ${DM_ENV_FILE} does not exist." 
-    exit 2
-fi
-. ${DM_ENV_FILE} > /dev/null
-
-# Use first argument as db name, if provided
-DM_DB_NAME=${DM_DB_NAME:=dm}
-if [ ! -z "$1" ]; then
-    DM_DB_NAME=$1
-fi
-echo "Using DB name: $DM_DB_NAME"
-
-# Look for deployment file in etc directory, and use it to override
-# default entries
-deployConfigFile=$DM_ROOT_DIR/etc/${DM_DB_NAME}.deploy.conf
-if [ -f $deployConfigFile ]; then
-    echo "Using deployment config file: $deployConfigFile"
-    . $deployConfigFile
-else
-    echo "Deployment config file $deployConfigFile not found, using defaults"
-fi
-
-DM_HOST_ARCH=`uname | tr [A-Z] [a-z]`-`uname -m`
-DM_CONTEXT_ROOT=${DM_CONTEXT_ROOT:=DmWebPortal}
-GLASSFISH_DIR=$DM_SUPPORT_DIR/glassfish/$DM_HOST_ARCH
-DM_DEPLOY_DIR=$GLASSFISH_DIR/glassfish/domains/domain1/autodeploy
-DM_APP_DIR=$GLASSFISH_DIR/glassfish/domains/domain1/applications/$DM_CONTEXT_ROOT
-DM_DIST_DIR=$DM_ROOT_DIR/src/java/DmWebPortal/dist
-DM_WAR_FILE=$DM_CONTEXT_ROOT.war
-JAVA_HOME=$DM_SUPPORT_DIR/java/$DM_HOST_ARCH
-
-export AS_JAVA=$JAVA_HOME
-ASADMIN_CMD=$GLASSFISH_DIR/bin/asadmin
-
-# remove war file from autodeploy directory
-echo "Removing war file $DM_DEPLOY_DIR/$DM_WAR_FILE"
-rm -f $DM_DEPLOY_DIR/${DM_WAR_FILE}*
-
-# remove war file from autodeploy directory
-if [ -d $DM_APP_DIR ]; then
-    echo "Removing application directory $DM_APP_DIR"
-    rm -rf $DM_APP_DIR
-else
-    echo "Application directory $DM_APP_DIR not found"
-fi
-
-# restart server
-echo "Restarting glassfish"
-$ASADMIN_CMD stop-domain ${DM_DOMAIN}
-$ASADMIN_CMD start-domain ${DM_DOMAIN}
-
-
-
-
diff --git a/sbin/upgrade_experiment.sh b/sbin/upgrade_experiment.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b7e2188dc12e6b7178f64f2efcf209b94291e9ba
--- /dev/null
+++ b/sbin/upgrade_experiment.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+TABLE=experiment
+
+CURRENT_DIR=`pwd`
+MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
+cd $CURRENT_DIR
+
+POPULATE_SCRIPT=populate_$TABLE.sql
+EXPERIMENT_STATION_FILE=$MY_DIR/experiment_station.txt
+
+cp $POPULATE_SCRIPT $POPULATE_SCRIPT.new
+experimentList=`cat $POPULATE_SCRIPT | grep INSERT | awk '{print $13}'`
+
+# correct insert statements
+cmd="cat $POPULATE_SCRIPT.new | sed \"s?name,?name, experiment_station_id, ?g\"     > $POPULATE_SCRIPT.new.2 && mv $POPULATE_SCRIPT.new.2 $POPULATE_SCRIPT.new"
+eval $cmd || exit 1
+
+# insert station id for each experiment
+for e in $experimentList; do
+    eName=`echo $e | sed "s?'??g" | sed "s?,??g"`
+    echo "Working on experiment $eName"
+    stationId=`cat $EXPERIMENT_STATION_FILE | grep $eName | head -1 | cut -f2 -d','`
+    if [ -z "$stationId" ]; then
+        stationId=1 # test station id
+    fi
+    echo "Mapped $eName => $stationId"
+    cmd="cat $POPULATE_SCRIPT.new | sed \"s?$e?$e $stationId,?g\" > $POPULATE_SCRIPT.new.2 && mv $POPULATE_SCRIPT.new.2 $POPULATE_SCRIPT.new"
+    eval $cmd || exit 1
+done
+
diff --git a/sbin/upgrade_user_experiment_role.sh b/sbin/upgrade_user_experiment_role.sh
new file mode 100755
index 0000000000000000000000000000000000000000..52f44d5ff7461576eac899a16b68ca89c7e559d3
--- /dev/null
+++ b/sbin/upgrade_user_experiment_role.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+TABLE=user_experiment_role
+
+CURRENT_DIR=`pwd`
+MY_DIR=`dirname $0` && cd $MY_DIR && MY_DIR=`pwd`
+cd $CURRENT_DIR
+
+POPULATE_SCRIPT=populate_$TABLE.sql
+
+cp $POPULATE_SCRIPT $POPULATE_SCRIPT.new
+
+# eliminate old manager role
+cat $POPULATE_SCRIPT.new | grep -v "2)" > $POPULATE_SCRIPT.new.2 && mv $POPULATE_SCRIPT.new.2 $POPULATE_SCRIPT.new || exit 1
+
+# fix old PI role
+cat $POPULATE_SCRIPT.new | sed 's?3)?1)?g' > $POPULATE_SCRIPT.new.2 && mv $POPULATE_SCRIPT.new.2 $POPULATE_SCRIPT.new || exit 1
+
+# fix old user role
+cat $POPULATE_SCRIPT.new | sed 's?4)?2)?g' > $POPULATE_SCRIPT.new.2 && mv $POPULATE_SCRIPT.new.2 $POPULATE_SCRIPT.new || exit 1