Deliver centralized role management feature

Repair multiple defects also.
Revise deployment to use docker-compose.
Remove all zip archives.

Issue: PORTAL-21, PORTAL-25, PORTAL-28, PORTAL-52, PORTAL-69,
    PORTAL-74, PORTAL-76, PORTAL-80, PORTAL-82
Change-Id: Ie72fec7d35ba78beb162bba6ed27b2caee340c61
Signed-off-by: Christopher Lott (cl778h) <clott@research.att.com>
diff --git a/deliveries/.env b/deliveries/.env
new file mode 100644
index 0000000..fa30768
--- /dev/null
+++ b/deliveries/.env
@@ -0,0 +1,17 @@
+# Environment settings
+# used by docker-compose AND by other shell scripts
+
+# Host directory with config files
+PROJECT_DIR=/PROJECT/OpenSource/UbuntuEP
+
+# Directory within containers
+WEBAPPS_DIR=/opt/apache-tomcat-8.0.37/webapps
+
+# Following are ALSO used in demo/boot/portal_vm_init.sh
+EP_IMG_NAME=portal-apps
+DB_IMG_NAME=portal-db
+WMS_IMG_NAME=portal-wms
+# Tag all images with this
+PORTAL_TAG=1.1.0
+
+NEXUS_REPO=nexus3.onap.org:10003
diff --git a/deliveries/.gitignore b/deliveries/.gitignore
index f12ac3a..796b96d 100644
--- a/deliveries/.gitignore
+++ b/deliveries/.gitignore
@@ -1 +1 @@
-/PROJECT
+/build
diff --git a/deliveries/Apps_Users_OnBoarding_Script.sql b/deliveries/Apps_Users_OnBoarding_Script.sql
index ff3d3e9..2d1adfb 100644
--- a/deliveries/Apps_Users_OnBoarding_Script.sql
+++ b/deliveries/Apps_Users_OnBoarding_Script.sql
@@ -345,14 +345,14 @@
 ) b 
 );
 -- end new
-INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (6,'NEWS','http://about.att.com/innovationblog/next_att_labs','What\s Next at AT&T Labs? AI Set to Revolutionize the Network',NULL,NULL,10);
-INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (7,'NEWS','http://about.att.com/innovationblog/ecomp_code','Code, Community and Commitment – the 3 Cs of Open Source',NULL,NULL,20);
+INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (6,'NEWS','http://about.att.com/innovationblog/next_att_labs','What\'s Next at AT&T Labs? AI Set to Revolutionize the Network',NULL,NULL,10);
+INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (7,'NEWS','http://about.att.com/innovationblog/ecomp_code','Code, Community and Commitment - the 3 Cs of Open Source',NULL,NULL,20);
 INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (8,'NEWS','http://about.att.com/story/orange_testing_att_open_source_ecomp_platform.html','Orange Testing AT&Ts Open Source ECOMP Platform for Building Software-Defined Network Capabilities',NULL,NULL,30);
 INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (9,'NEWS', 'http://about.att.com/innovationblog/linux_foundation','Opening up ECOMP: Our Network Operating System for SDN',NULL,NULL,40);
 INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (10,'EVENTS',NULL,'OpenECOMP Launches into Open Source',NULL,'2017-02-14',1);
 INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (11,'IMPORTANTRESOURCES','http://about.att.com/content/dam/snrdocs/ecomp.pdf','ECOMP White Paper',NULL,NULL,1);
 INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (12,'IMPORTANTRESOURCES','https://wiki.onap.org/','ONAP Wiki',NULL,NULL,2);
-INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (13,'IMPORTANTRESOURCES','https://wiki.onap.org/display/DW/Portal','ONAP Wiki, Portal',NULL,NULL,3);
+INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (13,'IMPORTANTRESOURCES','https://wiki.onap.org/display/DW/Portal','ONAP Wiki for Portal',NULL,NULL,3);
 INSERT INTO `fn_common_widget_data` (`id`,`CATEGORY`,`HREF`,`TITLE`,`content`,`event_date`,`SORT_ORDER`) VALUES (14,'IMPORTANTRESOURCES','https://wiki.onap.org/display/DW/Development+Guides','ONAP User Guide',NULL,NULL,4);
 
 
diff --git a/deliveries/Dockerfile.mariadb b/deliveries/Dockerfile.mariadb
index 004e7af..5b0abd5 100644
--- a/deliveries/Dockerfile.mariadb
+++ b/deliveries/Dockerfile.mariadb
@@ -1,34 +1,28 @@
 FROM mariadb:latest
 
-#Author
-MAINTAINER Manoop talasila@research.att.com 
-
-ARG SCRIPT_DIR=${SCRIPT_DIR}
-ARG SCRIPT_COMMON_DIR=${SCRIPT_COMMON_DIR}
+ARG PORTAL_SCRIPT_DIR=${PORTAL_SCRIPT_DIR}
 ARG SDK_SCRIPT_DIR=${SDK_SCRIPT_DIR}
-ARG SDK_COMMON_SCRIPT_DIR=${SDK_COMMON_SCRIPT_DIR}
-ARG DBC_COMMON_SCRIPT_DIR=${DBC_COMMON_SCRIPT_DIR}
 ARG DBC_SCRIPT_DIR=${DBC_SCRIPT_DIR}
 
 # constant
 #Add config file
-ADD my.cnf /etc/mysql/my.cnf
+COPY my.cnf /etc/mysql/my.cnf
 #ADD cluster.cnf /etc/mysql/conf.d
 
 # Scripts are executed in alphabetical order
 
-# Portal DDL and DML
-ADD ${SCRIPT_COMMON_DIR}/EcompPortalDDLMySql_1707_Common.sql docker-entrypoint-initdb.d
-ADD ${SCRIPT_DIR}/EcompPortalDDLMySql_1707_OS.sql            docker-entrypoint-initdb.d
-ADD ${SCRIPT_COMMON_DIR}/EcompPortalDMLMySql_1707_Common.sql docker-entrypoint-initdb.d
-ADD ${SCRIPT_DIR}/EcompPortalDMLMySql_1707_OS.sql            docker-entrypoint-initdb.d
-ADD Apps_Users_OnBoarding_Script.sql                         docker-entrypoint-initdb.d/EcompPortalDMLMySql_1707_z_apps_users.sql
+# Portal DDL and DML at 1710
+COPY ${PORTAL_SCRIPT_DIR}/EcompPortalDDLMySql_1710_Common.sql /docker-entrypoint-initdb.d/
+COPY ${PORTAL_SCRIPT_DIR}/EcompPortalDDLMySql_1710_OS.sql     /docker-entrypoint-initdb.d/
+COPY ${PORTAL_SCRIPT_DIR}/EcompPortalDMLMySql_1710_Common.sql /docker-entrypoint-initdb.d/
+COPY ${PORTAL_SCRIPT_DIR}/EcompPortalDMLMySql_1710_OS.sql     /docker-entrypoint-initdb.d/
+COPY Apps_Users_OnBoarding_Script.sql                         /docker-entrypoint-initdb.d/EcompPortalDMLMySql_1710_z_apps_users.sql
 
-# SDK App DDL and DML
-ADD ${SDK_COMMON_SCRIPT_DIR}/EcompSdkDDLMySql_1707_Common.sql docker-entrypoint-initdb.d
-ADD ${SDK_SCRIPT_DIR}/EcompSdkDDLMySql_1707_OS.sql            docker-entrypoint-initdb.d
-ADD ${SDK_COMMON_SCRIPT_DIR}/EcompSdkDMLMySql_1707_Common.sql docker-entrypoint-initdb.d
-ADD ${SDK_SCRIPT_DIR}/EcompSdkDMLMySql_1707_OS.sql            docker-entrypoint-initdb.d
+# SDK App DDL and DML unchanged since 1707
+COPY ${SDK_SCRIPT_DIR}/EcompSdkDDLMySql_1707_Common.sql       /docker-entrypoint-initdb.d/
+COPY ${SDK_SCRIPT_DIR}/EcompSdkDDLMySql_1707_OS.sql           /docker-entrypoint-initdb.d/
+COPY ${SDK_SCRIPT_DIR}/EcompSdkDMLMySql_1707_Common.sql       /docker-entrypoint-initdb.d/
+COPY ${SDK_SCRIPT_DIR}/EcompSdkDMLMySql_1707_OS.sql           /docker-entrypoint-initdb.d/
 
-# DBC App combined DDL/DML, built by os_build_febe.sh
-ADD ${DBC_SCRIPT_DIR}/dbca-complete-mysql-1707-os.sql docker-entrypoint-initdb.d
+# DBC App combined DDL/DML, built by script
+COPY ${DBC_SCRIPT_DIR}/dbca-complete-mysql-1707-os.sql  /docker-entrypoint-initdb.d/
diff --git a/deliveries/Dockerfile.portalapps b/deliveries/Dockerfile.portalapps
index 3e295e8..c9fab4d 100644
--- a/deliveries/Dockerfile.portalapps
+++ b/deliveries/Dockerfile.portalapps
@@ -1,7 +1,10 @@
 # Dockerfile for image with ONAP applications:
 # Portal app, Portal-SDK app, Portal-DBC app.
 
-FROM openjdk:8-jdk
+# Yields an image 823 MB
+FROM frolvlad/alpine-oraclejdk8:slim
+# Yields an image 1.4 GB
+# FROM openjdk:8-jdk
 
 # Arguments are supplied by build.sh script
 # the defaults below only support testing
@@ -12,21 +15,28 @@
 ARG HTTP_PROXY
 ARG HTTPS_PROXY
 
-# This is just a variable, never passed in
-ARG TOMCATHOME=/opt/apache-tomcat-8.0.37
+# Just variables, never passed in
+ARG TOMCAT=apache-tomcat-8.0.37
+ARG TOMCATTAR=${TOMCAT}.tar.gz
+ARG TOMCATHOME=/opt/${TOMCAT}
 
 ENV http_proxy $HTTP_PROXY
 ENV https_proxy $HTTPS_PROXY
 RUN if [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy  \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \
     if [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi
 
-# Install Tomcat; curl is already part of this image
+# Install the wait script
+COPY wait-for.sh /
+
+# Install Tomcat.  This image already has curl.
 WORKDIR /tmp
-RUN curl -s -O https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.37/bin/apache-tomcat-8.0.37.tar.gz
-RUN tar -xzf apache-tomcat-8.0.37.tar.gz
+RUN wget -q http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.37/bin/apache-tomcat-8.0.37.tar.gz
+RUN tar -xzf ${TOMCATTAR}
+RUN rm ${TOMCATTAR}
 # Remove manager and sample apps
-RUN rm -fr apache-tomcat-8.0.37/webapps/[a-z]*
-RUN mv apache-tomcat-8.0.37 /opt
+RUN rm -fr ${TOMCAT}/webapps/[a-z]*
+RUN mkdir -p /opt
+RUN mv ${TOMCAT} /opt
 
 WORKDIR ${TOMCATHOME}/webapps
 RUN mkdir ECOMPPORTAL && mkdir ECOMPSDKAPP && mkdir ECOMPDBCAPP
@@ -46,9 +56,12 @@
 
 VOLUME ${TOMCATHOME}/logs
 
+# Switch back to root
+WORKDIR /
+
 # Define commonly used ENV variables
 ENV PATH $PATH:$JAVA_HOME/bin:${TOMCATHOME}/bin
-COPY configure-and-run.sh /
+COPY start-apps-cmd.sh /
 
 # Define default command.
-CMD ["/configure-and-run.sh"]
+CMD /start-apps-cmd.sh
diff --git a/deliveries/Dockerfile.widgetms b/deliveries/Dockerfile.widgetms
new file mode 100644
index 0000000..16bf60b
--- /dev/null
+++ b/deliveries/Dockerfile.widgetms
@@ -0,0 +1,18 @@
+# Large image
+# FROM openjdk:8-jdk
+# Very small image
+FROM frolvlad/alpine-oraclejdk8:slim
+
+# Arguments are supplied by build script;
+# the defaults below only support testing
+ARG WMS_JAR=build/widget-ms.jar
+# Launch script
+COPY start-wms-cmd.sh /
+# Wait script, which depends on nc
+COPY wait-for.sh /
+# Onejar
+COPY ${WMS_JAR} /app.jar
+RUN sh -c 'touch /app.jar'
+VOLUME /tmp
+ENV JAVA_OPTS=""
+CMD /start-wms-cmd.sh
diff --git a/deliveries/README.md b/deliveries/README.md
index bc9bc3f..99832c8 100644
--- a/deliveries/README.md
+++ b/deliveries/README.md
@@ -1 +1,6 @@
- "moved insert statement to fn_common_widget_data table from EcompPortalDMLMySql_1707_OS.sql to Apps_Users_OnBoarding_Script.sql, the Onboard script in deliveries folder".  
+This directory has configuration files for building docker images,
+and management files for starting and stopping docker containers.
+
+The Apps_Users_OnBoarding_Script.sql file has data for ONAP demo deployments:
+it adds users and applications so the Portal app has meaningful content on
+startup.  These were moved from script EcompPortalDMLMySql_1707_OS.sql.
diff --git a/deliveries/build_portalapps_dockers.sh b/deliveries/build_portalapps_dockers.sh
index a45e55c..ead31e8 100755
--- a/deliveries/build_portalapps_dockers.sh
+++ b/deliveries/build_portalapps_dockers.sh
@@ -8,16 +8,9 @@
 # Stop on error; show output
 set -e -x
 
-# For debugging only bcox the FE build takes a long time
-SKIPFE=N
-if [ $# -gt 0 -a "$1" == "skipfe" ] ; then
-    echo "Skipping Portal-FE build step"
-    SKIPFE=Y
-fi
-
-# Establish environment variables
-echo "Set variables"
-source $(dirname $0)/os_settings.sh
+# This reuses the docker-compose file
+echo "Set image tag name variables"
+source $(dirname $0)/.env
 
 # Work standalone AND in the ONAP Jenkins.
 # Pick up Jenkins settings for this script.
@@ -25,70 +18,91 @@
 if [ -n "$MVN" ]; then
     export MVN="${MVN} -B -gs ${GLOBAL_SETTINGS_FILE} -s ${SETTINGS_FILE}"
 else
-    MVN=mvn
+    # Force refresh of snapshots
+    MVN="mvn -B -U"
 fi
 
 # This expects to start in the deliveries folder; make sure
-DOCKERFILE=Dockerfile.portalapps
-if [ ! -f $DOCKERFILE ] ; then
-    echo "Failed to find expected file; must start in deliveries folder"
+PORTAL_DOCKERFILE=Dockerfile.portalapps
+if [ ! -f $PORTAL_DOCKERFILE ] ; then
+    echo "Failed to find file ${PORTAL_DOCKERFILE}; must start in deliveries folder; exiting"
     exit 1
 fi
 
-# Establish directories and variables
+# Store directory names as variables
+# This is the Docker Project area.
 DELIV="$(pwd)"
-# Relative path of temp directory
-BUILD="build"
-# Absolute path of temp directory
-OUT=$DELIV/$BUILD
-if [ $SKIPFE == "Y" ]; then
-    echo "Skipping clean/recreate of $OUT"
-else
-    rm -fr $OUT
-    mkdir $OUT
-fi
-# parent directory
+# parent directory, for finding source projects
 cd ..
 BASE="$(pwd)"
-
-# Copy DDL/DML to required directories (old scripts use long path /PROJECT/...)
 cd $DELIV
-rm -fr PROJECT
-# copy over DB scripts for the dockerfiles
-# forgive the ugly trick with the .. at end.
-mkdir -p ${SCRIPT_COMMON_DIR}     && cp -r $BASE/ecomp-portal-DB-common ${SCRIPT_COMMON_DIR}/..
-mkdir -p ${SCRIPT_DIR}            && cp -r $BASE/ecomp-portal-DB-os ${SCRIPT_DIR}/..
-mkdir -p ${SDK_COMMON_SCRIPT_DIR} && cp -r $BASE/sdk/ecomp-sdk/epsdk-app-common/db-scripts ${SDK_COMMON_SCRIPT_DIR}/..
-mkdir -p ${SDK_SCRIPT_DIR}        && cp -r $BASE/sdk/ecomp-sdk/epsdk-app-os/db-scripts ${SDK_SCRIPT_DIR}/..
-# Build complete database script for DBC
-DBCA_OPEN_SD=$BASE/dmaapbc/dcae_dmaapbc_webapp/dbca-os/db-scripts
-DBCA_COMM_SD=$BASE/dmaapbc/dcae_dmaapbc_webapp/dbca-common/db-scripts
-# Old scripts expect this path
-mkdir -p $DBC_SCRIPT_DIR
-cat $DBCA_OPEN_SD/dbca-create-mysql-1707-os.sql $DBCA_COMM_SD/dbca-ddl-mysql-1707-common.sql $DBCA_OPEN_SD/dbca-dml-mysql-1707-os.sql > $DBC_SCRIPT_DIR/dbca-complete-mysql-1707-os.sql
 
-cd $BASE/ecomp-portal-BE-common
+# Relative path of temp directory
+BUILD_REL="build"
+# Absolute path of temp directory
+BUILD_ABS=$DELIV/$BUILD_REL
+rm -fr $BUILD_REL
+mkdir $BUILD_REL
+
+# Copy DDL/DML to required directories
+
+# RELATIVE PATHS to local directories with database scripts
+# bcos Docker looks within this build area only
+SCR_BASE=$BUILD_REL/scripts
+PORTAL_SCRIPT_DIR=$SCR_BASE/ecomp-portal-DB-os
+SDK_SCRIPT_DIR=$SCR_BASE/epsdk-app-os
+DBC_SCRIPT_DIR=$SCR_BASE/dbca-os
+mkdir -p ${PORTAL_SCRIPT_DIR} ${SDK_SCRIPT_DIR} ${DBC_SCRIPT_DIR}
+
+# copy over DB scripts for the dockerfiles
+# Portal
+cp $BASE/ecomp-portal-DB-common/*.sql ${PORTAL_SCRIPT_DIR}
+cp $BASE/ecomp-portal-DB-os/*.sql ${PORTAL_SCRIPT_DIR}
+# SDK app
+cp $BASE/sdk/ecomp-sdk/epsdk-app-common/db-scripts/*.sql ${SDK_SCRIPT_DIR}
+cp $BASE/sdk/ecomp-sdk/epsdk-app-os/db-scripts/*.sql ${SDK_SCRIPT_DIR}
+# DBC app
+cp $BASE/dmaapbc/dcae_dmaapbc_webapp/dbca-common/db-scripts/*.sql ${DBC_SCRIPT_DIR}
+cp $BASE/dmaapbc/dcae_dmaapbc_webapp/dbca-os/db-scripts/*.sql ${DBC_SCRIPT_DIR}
+# Assemble a script with "use" at the top.
+cat $DBC_SCRIPT_DIR/dbca-create-mysql-1707-os.sql $DBC_SCRIPT_DIR/dbca-ddl-mysql-1707-common.sql $DBC_SCRIPT_DIR/dbca-dml-mysql-1707-os.sql > $DBC_SCRIPT_DIR/dbca-complete-mysql-1707-os.sql
+
+# build database docker
+DB_DOCKER_CMD="
+  docker build -t ${DB_IMG_NAME}:${PORTAL_TAG} ${PROXY_ARGS}
+    --build-arg PORTAL_SCRIPT_DIR=${PORTAL_SCRIPT_DIR}
+    --build-arg SDK_SCRIPT_DIR=${SDK_SCRIPT_DIR}
+    --build-arg DBC_SCRIPT_DIR=${DBC_SCRIPT_DIR}
+    -f Dockerfile.mariadb .
+"
+echo "Build mariadb docker image"
+$DB_DOCKER_CMD
+
+echo "Build all jar and war files in Portal"
+cd $BASE
 ${MVN} clean install
 
+echo "Copy Portal app BE"
 cd $BASE/ecomp-portal-BE-os
-${MVN} clean package
-cp target/ecompportal-be-os.war $OUT
+cp target/ecompportal-be-os.war $BUILD_ABS
 
+echo "Copy Portal app FE"
 cd $BASE/ecomp-portal-FE-os/
-if [ $SKIPFE == "Y" ]; then
-    echo "Skipping MVN in $(pwd)"
-else
-    ${MVN} clean package
-    cp -r dist/public $OUT
-fi
+cp -r dist/public $BUILD_ABS
 
+echo "Copy Portal widget-ms"
+cd $BASE/ecomp-portal-widget-ms
+cp widget-ms/target/widget-ms.jar $BUILD_ABS
+
+echo "Build and copy Portal-SDK app"
 cd $BASE/sdk/ecomp-sdk/epsdk-app-os
 ${MVN} clean package
-cp target/epsdk-app-os.war $OUT
+cp target/epsdk-app-os.war $BUILD_ABS
 
+echo "Build and copy Portal-DBC app"
 cd $BASE/dmaapbc/dcae_dmaapbc_webapp
 ${MVN} clean package
-cp dbca-os/target/dmaap-bc-app-os.war $OUT
+cp dbca-os/target/dmaap-bc-app-os.war $BUILD_ABS
 
 PROXY_ARGS=""
 if [ $HTTP_PROXY ]; then
@@ -98,19 +112,26 @@
     PROXY_ARGS+=" --build-arg HTTPS_PROXY=${HTTPS_PROXY}"
 fi
 
-# build portal docker
+echo "Build portal docker image"
 cd $DELIV
 PORTAL_DOCKER_CMD="
-	docker build -t ${EP_IMG_NAME} ${PROXY_ARGS}
-	--build-arg FE_DIR=$BUILD/public
-	--build-arg PORTAL_WAR=$BUILD/ecompportal-be-os.war
-	--build-arg SDK_WAR=$BUILD/epsdk-app-os.war
-	--build-arg DBC_WAR=$BUILD/dmaap-bc-app-os.war
-	-f $DOCKERFILE .
+  docker build -t ${EP_IMG_NAME}:${PORTAL_TAG} ${PROXY_ARGS}
+    --build-arg FE_DIR=$BUILD_REL/public
+    --build-arg PORTAL_WAR=$BUILD_REL/ecompportal-be-os.war
+    --build-arg SDK_WAR=$BUILD_REL/epsdk-app-os.war
+    --build-arg DBC_WAR=$BUILD_REL/dmaap-bc-app-os.war
+    -f $PORTAL_DOCKERFILE .
 "
-echo "Invoking portal docker build"
 $PORTAL_DOCKER_CMD
 
-# Build widget-ms docker
-cd $BASE/ecomp-portal-widget-ms
-${MVN} package docker:build
+echo "Bbuild widget-ms docker image"
+WMS_DOCKER_CMD="
+  docker build -t ${WMS_IMG_NAME}:${PORTAL_TAG} ${PROXY_ARGS}
+    --build-arg WMS_JAR=$BUILD_REL/widget-ms.jar
+    -f Dockerfile.widgetms .
+"
+$WMS_DOCKER_CMD
+
+# For ease of debugging, leave the build dir
+# echo "Cleaning up"
+# rm -fr $BUILD_REL
diff --git a/deliveries/createMaria.sh b/deliveries/createMaria.sh
deleted file mode 100755
index 84e6bb3..0000000
--- a/deliveries/createMaria.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-# Stop on errors; show output
-set -e -x
-
-source $(dirname $0)/os_settings.sh
-
-echo ${SCRIPT_DIR}
-
-docker build -t ${DB_IMG_NAME} --build-arg SCRIPT_DIR="${SCRIPT_DIR}" --build-arg SDK_SCRIPT_DIR="${SDK_SCRIPT_DIR}" --build-arg DBC_SCRIPT_DIR="${DBC_SCRIPT_DIR}" --build-arg SCRIPT_COMMON_DIR="${SCRIPT_COMMON_DIR}" --build-arg SDK_COMMON_SCRIPT_DIR="${SDK_COMMON_SCRIPT_DIR}" --build-arg DBC_COMMON_SCRIPT_DIR="${DBC_COMMON_SCRIPT_DIR}" -f ./Dockerfile.mariadb .
diff --git a/deliveries/dbstart.sh b/deliveries/dbstart.sh
deleted file mode 100755
index c76cb39..0000000
--- a/deliveries/dbstart.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-# Establish environment variables
-source $(dirname $0)/os_settings.sh
-
-#docker create --name ${DB_VOL_NAME} -v /var/lib/mysql mariadb;
-
-echo "Running docker image ${DB_IMG_NAME} as name ${DB_CONT_NAME} with volume ${DB_VOL_NAME}"
-docker run -d --volumes-from ${DB_VOL_NAME} -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Aa123456 --net=host --name ${DB_CONT_NAME} ${DB_IMG_NAME};
diff --git a/deliveries/dbstop.sh b/deliveries/dbstop.sh
deleted file mode 100755
index 9c5b73a..0000000
--- a/deliveries/dbstop.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-# Establish environment variables
-source $(dirname $0)/os_settings.sh
-
-echo "Stopping docker container named ${DB_CONT_NAME}"
-docker stop ${DB_CONT_NAME}
-echo "Removing docker container named ${DB_CONT_NAME}"
-docker rm ${DB_CONT_NAME}
diff --git a/deliveries/docker-compose.yml b/deliveries/docker-compose.yml
new file mode 100644
index 0000000..1ea2bb6
--- /dev/null
+++ b/deliveries/docker-compose.yml
@@ -0,0 +1,83 @@
+# docker-compose for ONAP portal containers: database, microservice, portal apps.
+# Only exposes the portal apps on host network, not the database or WMS.
+# Works in multiple environments; does not pull from a Nexus repository.
+# Relies on .env file in current directory.
+
+version: '2.0'
+
+services:
+
+  # Config files may use hostname "portal-db"
+  portal-db:
+    image: ${DB_IMG_NAME}:${PORTAL_TAG}
+    environment:
+      MYSQL_ROOT_PASSWORD: 'Aa123456'
+    expose:
+      - 3306
+    volumes:
+      # Just specify a path and let the Engine create a volume
+      - /var/lib/mysql
+    logging:
+      driver: json-file
+
+  # An environment variable here CAN override the database URL;
+  # instead the value in the config file uses hostname from above 
+  portal-wms:
+    image: ${WMS_IMG_NAME}:${PORTAL_TAG}
+    expose:
+      - 8082
+    links:
+      - portal-db
+    depends_on:
+      - portal-db
+    volumes:
+      - ${PROJECT_DIR}/etc/ECOMPWIDGETMS/application.properties:/application.properties
+    command:
+      - /wait-for.sh
+      - -t
+      - "60"
+      - portal-db:3306
+      - --
+      - /start-wms-cmd.sh
+    logging:
+      driver: json-file
+
+  # Environment variables here CANNOT override the database URL because
+  # two apps use identical configuration keys with different values
+  portal-apps:
+    image: ${EP_IMG_NAME}:${PORTAL_TAG}
+    expose:
+      - 8989
+    ports:
+      - 8989:8080
+      - 8010:8009
+      - 8006:8005
+    links:
+      - portal-db
+      - portal-wms
+    depends_on:
+      - portal-db
+      - portal-wms
+    volumes:
+      - ${PROJECT_DIR}/etc/ECOMPPORTALAPP/system.properties:${WEBAPPS_DIR}/ECOMPPORTAL/WEB-INF/conf/system.properties
+      - ${PROJECT_DIR}/etc/ECOMPPORTALAPP/fusion.properties:${WEBAPPS_DIR}/ECOMPPORTAL/WEB-INF/fusion/conf/fusion.properties
+      - ${PROJECT_DIR}/etc/ECOMPPORTALAPP/portal.properties:${WEBAPPS_DIR}/ECOMPPORTAL/WEB-INF/classes/portal.properties
+      - ${PROJECT_DIR}/etc/ECOMPPORTALAPP/openid-connect.properties:${WEBAPPS_DIR}/ECOMPPORTAL/WEB-INF/classes/openid-connect.properties
+      - ${PROJECT_DIR}/etc/ECOMPPORTALAPP/logback.xml:${WEBAPPS_DIR}/ECOMPPORTAL/WEB-INF/classes/logback.xml
+      - ${PROJECT_DIR}/etc/ECOMPSDKAPP/fusion.properties:${WEBAPPS_DIR}/ECOMPSDKAPP/WEB-INF/fusion/conf/fusion.properties
+      - ${PROJECT_DIR}/etc/ECOMPSDKAPP/system.properties:${WEBAPPS_DIR}/ECOMPSDKAPP/WEB-INF/conf/system.properties
+      - ${PROJECT_DIR}/etc/ECOMPSDKAPP/portal.properties:${WEBAPPS_DIR}/ECOMPSDKAPP/WEB-INF/classes/portal.properties
+      - ${PROJECT_DIR}/etc/ECOMPDBCAPP/system.properties:${WEBAPPS_DIR}/ECOMPDBCAPP/WEB-INF/conf/system.properties
+      - ${PROJECT_DIR}/etc/ECOMPDBCAPP/portal.properties:${WEBAPPS_DIR}/ECOMPDBCAPP/WEB-INF/classes/portal.properties
+      - ${PROJECT_DIR}/etc/ECOMPDBCAPP/dbcapp.properties:${WEBAPPS_DIR}/ECOMPDBCAPP/WEB-INF/dbcapp/dbcapp.properties
+      - ${PROJECT_DIR}/etc/ECOMPDBCAPP/fusion.properties:${WEBAPPS_DIR}/ECOMPDBCAPP/WEB-INF/fusion/conf/fusion.properties
+      - ${PROJECT_DIR}/portal-apps-logs:/opt/apache-tomcat-8.0.37/logs 
+    command:
+      - /wait-for.sh
+      - -t
+      - "60"
+      - portal-db:3306
+      - --
+      - /start-apps-cmd.sh
+    logging:
+      driver: json-file
diff --git a/deliveries/etc.zip b/deliveries/etc.zip
deleted file mode 100644
index 67a65b2..0000000
--- a/deliveries/etc.zip
+++ /dev/null
Binary files differ
diff --git a/deliveries/new_start.sh b/deliveries/new_start.sh
deleted file mode 100755
index cffcda9..0000000
--- a/deliveries/new_start.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-
-# Establish environment variables
-source $(dirname $0)/os_settings.sh
-
-BASEDIR=/PROJECT/OpenSource/UbuntuEP
-PORTALDIR=/opt/apache-tomcat-8.0.37/webapps/ECOMPPORTAL
-SDKAPPDIR=/opt/apache-tomcat-8.0.37/webapps/ECOMPSDKAPP
-DBCAPPDIR=/opt/apache-tomcat-8.0.37/webapps/ECOMPDBCAPP
-PORTALPROPDIR=ECOMPPORTALAPP
-SDKAPPPROPDIR=ECOMPSDKAPP
-DBCAPPPROPDIR=ECOMPDBCAPP
-#docker rm ep_1610
-echo "Running docker image ${EP_IMG_NAME} as name ${EP_CONT_NAME}"
-docker run -d --name ${EP_CONT_NAME}  \
--p 8989:8080 -p 8010:8009 -p 8006:8005 \
--v ${BASEDIR}/etc/${PORTALPROPDIR}/system.properties:${PORTALDIR}/WEB-INF/conf/system.properties \
--v ${BASEDIR}/etc/${PORTALPROPDIR}/fusion.properties:${PORTALDIR}/WEB-INF/fusion/conf/fusion.properties \
--v ${BASEDIR}/etc/${PORTALPROPDIR}/portal.properties:${PORTALDIR}/WEB-INF/classes/portal.properties \
--v ${BASEDIR}/etc/${PORTALPROPDIR}/openid-connect.properties:${PORTALDIR}/WEB-INF/classes/openid-connect.properties \
--v ${BASEDIR}/etc/${SDKAPPPROPDIR}/fusion.properties:${SDKAPPDIR}/WEB-INF/fusion/conf/fusion.properties \
--v ${BASEDIR}/etc/${SDKAPPPROPDIR}/system.properties:${SDKAPPDIR}/WEB-INF/conf/system.properties \
--v ${BASEDIR}/etc/${SDKAPPPROPDIR}/portal.properties:${SDKAPPDIR}/WEB-INF/classes/portal.properties \
--v ${BASEDIR}/etc/${DBCAPPPROPDIR}/system.properties:${DBCAPPDIR}/WEB-INF/conf/system.properties \
--v ${BASEDIR}/etc/${DBCAPPPROPDIR}/portal.properties:${DBCAPPDIR}/WEB-INF/classes/portal.properties \
--v ${BASEDIR}/etc/${DBCAPPPROPDIR}/dbcapp.properties:${DBCAPPDIR}/WEB-INF/dbcapp/dbcapp.properties \
--v ${BASEDIR}/etc/${DBCAPPPROPDIR}/fusion.properties:${DBCAPPDIR}/WEB-INF/fusion/conf/fusion.properties \
--v ${BASEDIR}/log:/opt/apache-tomcat-8.0.37/logs  \
-${EP_IMG_NAME}
diff --git a/deliveries/new_stop.sh b/deliveries/new_stop.sh
deleted file mode 100755
index 9193e28..0000000
--- a/deliveries/new_stop.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-# Establish environment variables
-source $(dirname $0)/os_settings.sh
-
-echo "Stopping docker container named ${EP_CONT_NAME}"
-docker stop ${EP_CONT_NAME}
-echo "Removing docker container named ${EP_CONT_NAME}"
-docker  rm ${EP_CONT_NAME}
diff --git a/deliveries/os_Dockerfile b/deliveries/os_Dockerfile
deleted file mode 100644
index 130244d..0000000
--- a/deliveries/os_Dockerfile
+++ /dev/null
@@ -1,84 +0,0 @@
-# Pull base image.
-#FROM ubuntu-openjdk-8-jdk
-
-FROM ubuntu:14.04
-
-ARG HTTP_PROXY=${HTTP_PROXY}
-ARG HTTPS_PROXY=${HTTPS_PROXY}
-
-ENV http_proxy $HTTP_PROXY
-ENV https_proxy $HTTPS_PROXY
-
-RUN if [ ! -z ${HTTP_PROXY} ]; then echo "Acquire::http::proxy  \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf; fi && \
-    if [ ! -z ${HTTPS_PROXY} ]; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf; fi
-
-# Install the python script required for "add-apt-repository"
-RUN apt-get update && apt-get install -y software-properties-common
-
-# Sets language to UTF8 : this works in pretty much all cases
-ENV LANG en_US.UTF-8
-RUN locale-gen $LANG
-
-# Setup the openjdk 8 repo
-RUN add-apt-repository ppa:openjdk-r/ppa
-
-# Install java8
-RUN apt-get update && apt-get install -y --force-yes openjdk-8-jdk
-
-# Setup JAVA_HOME, this is useful for docker commandline
-ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
-RUN export JAVA_HOME
-
-# Show java version (for debugging)
-# RUN java -version
-
-RUN apt-get update
-RUN apt-get install -y curl
-# Install Tomcat
-RUN cd /tmp && curl -O https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.37/bin/apache-tomcat-8.0.37.tar.gz
-RUN tar -xzf /tmp/apache-tomcat-8.0.37.tar.gz
-RUN mv apache-tomcat-8.0.37 /opt
-
-# Define working directory.
-WORKDIR /opt/apache-tomcat-8.0.37/bin 
-
-# Define commonly used ENV variables
-ENV PATH $PATH:$JAVA_HOME/bin:/opt/apache-tomcat-8.0.37/bin
-
-VOLUME /opt/apache-tomcat-8.0.37/logs
-
-ARG VERSION=${VERSION:-1.1.0}
-#LABEL Version=${VERSION}
-ARG SDK_DIR=${SDK_DIR}
-ARG FE_DIR=${FE_DIR}
-ARG PORTAL_SDK_DIR=${PORTAL_SDK_DIR}
-ARG PORTAL_DBC_DIR=${PORTAL_DBC_DIR}
-# Set up variables:
-ENV TOMCATHOME /opt/apache-tomcat-8.0.37
-ENV PORTALHOME /PROJECT/APPS/ECOMPPORTAL/ECOMPPORTALAPP
-ENV PORTALSDKHOME /PROJECT/APPS/ECOMPPORTAL/ECOMPSDKAPP
-ENV PORTALDBCHOME /PROJECT/APPS/ECOMPPORTAL/ECOMPDBCAPP
-# Install Common Software,Git,Apache
-RUN mkdir -p $PORTALHOME &&  mkdir -p $PORTALSDKHOME &&  mkdir -p $PORTALDBCHOME
-
-COPY ${SDK_DIR} ${PORTALHOME}/ 
-# step 33 
-COPY ${PORTAL_SDK_DIR} ${PORTALSDKHOME}/
-COPY ${PORTAL_DBC_DIR} ${PORTALDBCHOME}/
-
-RUN ln -s ${PORTALHOME} ${TOMCATHOME}/webapps/ECOMPPORTAL &&  ln -s ${PORTALSDKHOME} ${TOMCATHOME}/webapps/ECOMPSDKAPP &&  ln -s ${PORTALDBCHOME} ${TOMCATHOME}/webapps/ECOMPDBCAPP
-
-
-# Define working directory.
-WORKDIR ${TOMCATHOME}/bin 
-VOLUME ${TOMCATHOME}/logs
-# Define commonly used ENV variables
-ENV PATH $PATH:$JAVA_HOME/bin:${TOMCATHOME}/bin
-COPY configure-and-run.sh /PROJECT/OpenSource/UbuntuEP/ 
-
-#RUN cp -r ${FE_DIR}/dist/public  ${PORTALHOME}/public
-
-COPY ${FE_DIR}/dist/public ${PORTALHOME}/public
-# Define default command.
-#CMD ["bash"]
-CMD ["/PROJECT/OpenSource/UbuntuEP/configure-and-run.sh"]
diff --git a/deliveries/os_build_febe.sh b/deliveries/os_build_febe.sh
deleted file mode 100755
index d9a59bf..0000000
--- a/deliveries/os_build_febe.sh
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/bash
-# Builds docker with three webapps: portal app, portal-sdk app, dbc app
-# Stop on error; show output
-set -e -x
-
-source $(dirname $0)/os_settings.sh
-
-# Work standalone and in Jenkins.
-# Pick up Jenkins settings for this script.
-# Use -B for batch operation to skip download progress output
-if [ -n "$MVN" ]; then
-    export MVN="${MVN} -gs ${GLOBAL_SETTINGS_FILE} -s ${SETTINGS_FILE} -B"
-else
-    MVN=mvn
-fi
-
-CURRENTDIR="$(pwd)"
-
-# install ecomp portal
-rm -rf $CURRENTDIR/$WORKINGDIR
-mkdir $CURRENTDIR/$WORKINGDIR 
-cd $CURRENTDIR/$WORKINGDIR
-SOURCEDIR=$CURRENTDIR/$WORKINGDIR/Source
-mkdir $SOURCEDIR
-cd $SOURCEDIR
-PROJECTDIR=$SOURCEDIR/ecomp-portal-core 
-mkdir $PROJECTDIR
-
-#create project dir
-#copy FE and BE
-cd $CURRENTDIR
-cd ..
-
-cp -r ecomp-portal-FE-common $PROJECTDIR/ecomp-portal-FE-common
-cp -r ecomp-portal-FE-os     $PROJECTDIR/ecomp-portal-FE-os
-cp -r ecomp-portal-BE-common $PROJECTDIR/ecomp-portal-BE-common
-cp -r ecomp-portal-BE-os     $PROJECTDIR/ecomp-portal-BE-os
-cp -r ecomp-portal-DB-common $PROJECTDIR/ecomp-portal-DB-common
-cp -r ecomp-portal-DB-os     $PROJECTDIR/ecomp-portal-DB-os
-cp -r sdk/ecomp-sdk          $PROJECTDIR/ecomp-sdk
-
-cd $PROJECTDIR/ecomp-portal-BE-common
-${MVN} install
-
-cd $PROJECTDIR/ecomp-portal-BE-os
-${MVN} install
-
-cd $PROJECTDIR/ecomp-portal-FE-os/
-${MVN} install
-
-cd $PROJECTDIR/ecomp-sdk/epsdk-app-os
-${MVN} install
-
-# now install DBC app
-cd $SOURCEDIR
-DBCDIR=$SOURCEDIR/ST_DBPA 
-mkdir $DBCDIR
-#copy DBC project
-cd $CURRENTDIR
-cd ..
-cp -r dmaapbc/dcae_dmaapbc_webapp $DBCDIR/dcae_dmaapbc_webapp
-cd $DBCDIR/dcae_dmaapbc_webapp
-${MVN} install
-cd dbca-os/target
-mv dmaap-bc-app-os ep-dbc-app
-
-# Build complete database script in the "OS" script area
-cd ../db-scripts
-cat dbca-create-mysql-1707-os.sql ../../dbca-common/db-scripts/dbca-ddl-mysql-1707-common.sql dbca-dml-mysql-1707-os.sql > dbca-complete-mysql-1707-os.sql
-
-# install into docker
-cd $CURRENTDIR
-
-PROXY_ARGS=""
-if [ $HTTP_PROXY ]; then
-    PROXY_ARGS+="--build-arg HTTP_PROXY=${HTTP_PROXY}"
-fi
-if [ $HTTPS_PROXY ]; then
-    PROXY_ARGS+=" --build-arg HTTPS_PROXY=${HTTPS_PROXY}"
-fi
-
-EXEC_CMD="docker build -t ${IMGNAME} ${PROXY_ARGS} --build-arg VERSION=${VERSION} --build-arg PORTAL_SDK_DIR=${PORTAL_SDK_DIR}  --build-arg SDK_DIR=${SDK_DIR} --build-arg FE_DIR=${FE_DIR}  --build-arg PORTAL_DBC_DIR=${PORTAL_DBC_DIR} -f ./os_Dockerfile ."
-echo $EXEC_CMD
-$EXEC_CMD
diff --git a/deliveries/os_docker_base.sh b/deliveries/os_docker_base.sh
new file mode 100755
index 0000000..2bdfea6
--- /dev/null
+++ b/deliveries/os_docker_base.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+# Builds and pushes versions of Portal images
+# Invoked by scripts that set VERSION and LATEST
+
+# be verbose
+set -x 
+
+if [ -z "$VERSION" ]; then
+    echo "VERSION not set"
+    exit 1
+fi
+if [ -z "$LATEST" ]; then
+    echo "LATEST not set"
+    exit 1
+fi
+
+# Establish environment variables
+source $(dirname $0)/.env
+
+# Build the containers
+./build_portalapps_dockers.sh
+
+APPS_VERSION="${NEXUS_REPO}/openecomp/${EP_IMG_NAME}:${VERSION}"
+DB_VERSION="${NEXUS_REPO}/openecomp/${DB_IMG_NAME}:${VERSION}"
+WMS_VERSION="${NEXUS_REPO}/openecomp/${WMS_IMG_NAME}:${VERSION}"
+
+APPS_LATEST="${NEXUS_REPO}/openecomp/${EP_IMG_NAME}:${LATEST}"
+DB_LATEST="${NEXUS_REPO}/openecomp/${DB_IMG_NAME}:${LATEST}"
+WMS_LATEST="${NEXUS_REPO}/openecomp/${WMS_IMG_NAME}:${LATEST}"
+
+# tag versions
+docker tag ${EP_IMG_NAME}:${PORTAL_TAG} ${APPS_VERSION}
+docker tag ${EP_IMG_NAME}:${PORTAL_TAG} ${APPS_LATEST}
+
+docker tag ${DB_IMG_NAME}:${PORTAL_TAG} ${DB_VERSION}
+docker tag ${DB_IMG_NAME}:${PORTAL_TAG} ${DB_LATEST}
+
+docker tag ${WMS_IMG_NAME}:${PORTAL_TAG} ${WMS_VERSION}
+docker tag ${WMS_IMG_NAME}:${PORTAL_TAG} ${WMS_LATEST}
+
+# push
+docker push ${APPS_VERSION}
+docker push ${APPS_LATEST}
+
+docker push ${DB_VERSION}
+docker push ${DB_LATEST}
+
+docker push ${WMS_VERSION}
+docker push ${WMS_LATEST}
diff --git a/deliveries/os_docker_push.sh b/deliveries/os_docker_push.sh
index 2ec6de4..eb663b8 100755
--- a/deliveries/os_docker_push.sh
+++ b/deliveries/os_docker_push.sh
@@ -1,40 +1,11 @@
 #!/bin/bash
+# Builds and pushes SNAPSHOT versions of Portal images
 
-# Establish environment variables
-source $(dirname $0)/os_settings.sh
-
-./run.sh
-
-REPO="nexus3.onap.org:10003"
+# be verbose
+set -x
 
 TIMESTAMP=$(date +%C%y%m%dT%H%M%S)
-VERSION="1.1.0-SNAPSHOT-${TIMESTAMP}"
-LATEST="latest"
+export VERSION="1.1.0-SNAPSHOT-${TIMESTAMP}"
+export LATEST="latest"
 
-APPS_VERSION="${REPO}/openecomp/${EP_TAG_NAME}:${VERSION}"
-DB_VERSION="${REPO}/openecomp/${DB_TAG_NAME}:${VERSION}"
-WMS_VERSION="${REPO}/openecomp/${WMS_TAG_NAME}:${VERSION}"
-
-APPS_LATEST="${REPO}/openecomp/${EP_TAG_NAME}:${LATEST}"
-DB_LATEST="${REPO}/openecomp/${DB_TAG_NAME}:${LATEST}"
-WMS_LATEST="${REPO}/openecomp/${WMS_TAG_NAME}:${LATEST}"
-
-# tag versions
-docker tag ${EP_IMG_NAME} ${APPS_VERSION}
-docker tag ${EP_IMG_NAME} ${APPS_LATEST}
-
-docker tag ${DB_IMG_NAME} ${DB_VERSION}
-docker tag ${DB_IMG_NAME} ${DB_LATEST}
-
-docker tag ${WMS_IMG_NAME} ${WMS_VERSION}
-docker tag ${WMS_IMG_NAME} ${WMS_LATEST}
-
-# push
-docker push ${APPS_VERSION}
-docker push ${APPS_LATEST}
-
-docker push ${DB_VERSION}
-docker push ${DB_LATEST}
-
-docker push ${WMS_VERSION}
-docker push ${WMS_LATEST}
+exec ./os_docker_base.sh
diff --git a/deliveries/os_docker_release.sh b/deliveries/os_docker_release.sh
index 2bd2e20..4282553 100755
--- a/deliveries/os_docker_release.sh
+++ b/deliveries/os_docker_release.sh
@@ -1,40 +1,11 @@
 #!/bin/bash
+# Builds and pushes STAGING versions of Portal images
 
-# Establish environment variables
-source $(dirname $0)/os_settings.sh
-
-./run.sh
-
-REPO="nexus3.onap.org:10003"
+# be verbose
+set -x
 
 TIMESTAMP=$(date +%C%y%m%dT%H%M%S)
-VERSION="1.1.0-STAGING-${TIMESTAMP}"
-LATEST="1.1-STAGING-latest"
+export VERSION="1.1.0-STAGING-${TIMESTAMP}"
+export LATEST="1.1-STAGING-latest"
 
-APPS_VERSION="${REPO}/openecomp/${EP_TAG_NAME}:${VERSION}"
-DB_VERSION="${REPO}/openecomp/${DB_TAG_NAME}:${VERSION}"
-WMS_VERSION="${REPO}/openecomp/${WMS_TAG_NAME}:${VERSION}"
-
-APPS_LATEST="${REPO}/openecomp/${EP_TAG_NAME}:${LATEST}"
-DB_LATEST="${REPO}/openecomp/${DB_TAG_NAME}:${LATEST}"
-WMS_LATEST="${REPO}/openecomp/${WMS_TAG_NAME}:${LATEST}"
-
-# tag version
-docker tag ${EP_IMG_NAME} ${APPS_VERSION}
-docker tag ${EP_IMG_NAME} ${APPS_LATEST}
-
-docker tag ${DB_IMG_NAME} ${DB_VERSION}
-docker tag ${DB_IMG_NAME} ${DB_LATEST}
-
-docker tag ${WMS_IMG_NAME} ${WMS_VERSION}
-docker tag ${WMS_IMG_NAME} ${WMS_LATEST}
-
-# push
-docker push ${APPS_VERSION}
-docker push ${APPS_LATEST}
-
-docker push ${DB_VERSION}
-docker push ${DB_LATEST}
-
-docker push ${WMS_VERSION}
-docker push ${WMS_LATEST}
+exec ./os_docker_base.sh
diff --git a/deliveries/os_settings.sh b/deliveries/os_settings.sh
deleted file mode 100755
index 19a1e0e..0000000
--- a/deliveries/os_settings.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-# Establish constants for the management shell scripts.
-# These variables are ALSO used in demo/boot/portal_vm_init.sh
-
-EP_TAG_NAME=portalapps
-EP_IMG_NAME=portalapps:latest
-EP_CONT_NAME=onap_portal
-
-DB_TAG_NAME=portaldb
-DB_IMG_NAME=portaldb:latest
-DB_CONT_NAME=onap_portal_db
-DB_VOL_NAME=data_vol_portal
-
-WMS_TAG_NAME=portalwms
-WMS_IMG_NAME=widget-ms
-WMS_CONT_NAME=onap_portal_widget_ms
-
-VERSION=1.1.0
-ETCDIR=etc
-WORKINGDIR=PROJECT
-SDK_DIR=PROJECT/Source/ecomp-portal-core/ecomp-portal-BE-os/target/ecompportal-be-os
-FE_DIR=PROJECT/Source/ecomp-portal-core/ecomp-portal-FE-os
-SCRIPT_COMMON_DIR="PROJECT/Source/ecomp-portal-core/ecomp-portal-DB-common/"
-SCRIPT_DIR="PROJECT/Source/ecomp-portal-core/ecomp-portal-DB-os/"
-SDK_COMMON_SCRIPT_DIR=PROJECT/Source/ecomp-portal-core/ecomp-sdk/epsdk-app-common/db-scripts
-SDK_SCRIPT_DIR=PROJECT/Source/ecomp-portal-core/ecomp-sdk/epsdk-app-os/db-scripts
-DBC_COMMON_SCRIPT_DIR=PROJECT/Source/ST_DBPA/dcae_dmaapbc_webapp/dbca-common/db-scripts
-DBC_SCRIPT_DIR=PROJECT/Source/ST_DBPA/dcae_dmaapbc_webapp/dbca-os/db-scripts
-PORTAL_SDK_DIR=PROJECT/Source/ecomp-portal-core/ecomp-sdk/epsdk-app-os/target/epsdk-app-os
-PORTAL_DBC_DIR=PROJECT/Source/ST_DBPA/dcae_dmaapbc_webapp/dbca-os/target/ep-dbc-app
diff --git a/deliveries/portal_vm_init.sh b/deliveries/portal_vm_init.sh
index 5f34aae..5f4716e 100755
--- a/deliveries/portal_vm_init.sh
+++ b/deliveries/portal_vm_init.sh
@@ -1,71 +1,42 @@
 #!/bin/bash
 # Starts docker containers for ONAP Portal
+# This version for Amsterdam/R1 of Portal, uses docker-compose.
+# Temporarily maintained in portal/deliveries area;
+# replicated from the ONAP demo/boot area due to release concerns.
 
 # be verbose
 set -x
 
-# Refresh source area with start scripts
-cd /opt/portal
-git pull
-cd /opt
-
 # Establish environment variables
 NEXUS_USERNAME=$(cat /opt/config/nexus_username.txt)
 NEXUS_PASSWD=$(cat /opt/config/nexus_password.txt)
 NEXUS_DOCKER_REPO=$(cat /opt/config/nexus_docker_repo.txt)
 DOCKER_IMAGE_VERSION=$(cat /opt/config/docker_version.txt)
 
-# Get container, image and tag names used below
-source portal/deliveries/os_settings.sh
+# Refresh configuration and scripts
+cd /opt/portal
+git pull
+cd deliveries
 
-# Unpack property files
-unzip -o portal/deliveries/etc.zip -d /PROJECT/OpenSource/UbuntuEP/
+# Get image names used below from docker-compose environment file
+source .env
+
+# Copy property files
+ETC=/PROJECT/OpenSource/UbuntuEP/etc
+mkdir -p $ETC
+cp -r properties_rackspace/* $ETC
 
 # Refresh images
 docker login -u $NEXUS_USERNAME -p $NEXUS_PASSWD $NEXUS_DOCKER_REPO
-docker pull $NEXUS_DOCKER_REPO/openecomp/${DB_TAG_NAME}:$DOCKER_IMAGE_VERSION
-docker pull $NEXUS_DOCKER_REPO/openecomp/${EP_TAG_NAME}:$DOCKER_IMAGE_VERSION
-docker pull $NEXUS_DOCKER_REPO/openecomp/${WMS_TAG_NAME}:$DOCKER_IMAGE_VERSION
+docker pull $NEXUS_DOCKER_REPO/openecomp/${DB_IMG_NAME}:$DOCKER_IMAGE_VERSION
+docker pull $NEXUS_DOCKER_REPO/openecomp/${EP_IMG_NAME}:$DOCKER_IMAGE_VERSION
+docker pull $NEXUS_DOCKER_REPO/openecomp/${WMS_IMG_NAME}:$DOCKER_IMAGE_VERSION
 
-# Remove lingering containers; order matters.
-docker rm -f $DB_CONT_NAME
-docker rm -f $DB_VOL_NAME
-docker rm -f $EP_CONT_NAME
-docker rm -f $WMS_CONT_NAME
+# Tag them as expected by docker-compose file
+docker tag $NEXUS_DOCKER_REPO/openecomp/${DB_IMG_NAME}:$DOCKER_IMAGE_VERSION $DB_IMG_NAME:$PORTAL_TAG
+docker tag $NEXUS_DOCKER_REPO/openecomp/${EP_IMG_NAME}:$DOCKER_IMAGE_VERSION $EP_IMG_NAME:$PORTAL_TAG
+docker tag $NEXUS_DOCKER_REPO/openecomp/${WMS_IMG_NAME}:$DOCKER_IMAGE_VERSION $WMS_IMG_NAME:$PORTAL_TAG
 
-docker create --name $DB_VOL_NAME -v /var/lib/mysql mariadb
-docker tag $NEXUS_DOCKER_REPO/openecomp/${DB_TAG_NAME}:$DOCKER_IMAGE_VERSION $DB_IMG_NAME
-docker tag $NEXUS_DOCKER_REPO/openecomp/${EP_TAG_NAME}:$DOCKER_IMAGE_VERSION $EP_IMG_NAME
-# WMS image has no version in the registry
-docker tag $NEXUS_DOCKER_REPO/openecomp/${WMS_TAG_NAME}:$DOCKER_IMAGE_VERSION ${WMS_IMG_NAME}:latest
-
-# Recreate the named containers
-cd portal/deliveries
-echo "Starting database"
-./dbstart.sh
-echo "Delaying for database"
-sleep 10
-echo "Starting apps"
-./new_start.sh
-echo "Starting widget-ms"
-./widget_ms_start.sh
-
-sleep 180
-
-if [ ! -e /opt/config/boot.txt ]
-then
-	if [ -e /opt/config/public_ip.txt ]
-	then
-		IP_ADDRESS=$(cat /opt/config/public_ip.txt)
-	else
-		IP_ADDRESS=$(ifconfig eth0 | grep "inet addr" | tr -s ' ' | cut -d' ' -f3 | cut -d':' -f2)
-	fi
-	# Wait until MySQL is running...
-	while [[ $(netstat -vulntp |grep -i mysql | awk '{print $4}') != ":::3306" ]]
-	do
-		sleep 1
-	done
-	# no longer necessary; done at docker build time
-	# mysql -u root -p'Aa123456' -h $IP_ADDRESS < /opt/portal/deliveries/Apps_Users_OnBoarding_Script.sql
-	echo "yes" > /opt/config/boot.txt
-fi
+# compose is not in /usr/bin
+/opt/docker/docker-compose down
+/opt/docker/docker-compose up -d
diff --git a/deliveries/properties_rackspace/ECOMPDBCAPP/dbcapp.properties b/deliveries/properties_rackspace/ECOMPDBCAPP/dbcapp.properties
new file mode 100644
index 0000000..1c13384
--- /dev/null
+++ b/deliveries/properties_rackspace/ECOMPDBCAPP/dbcapp.properties
@@ -0,0 +1,8 @@
+# Properties for the Data Bus Controller webapp
+dmaap.rest.url.list = http://10.0.4.102:18080/webapi 
+# webapp's mechid is sent to DCAE for authorization
+dmaap.mechid.name = m06672@dbcapp.dmaap.dcae.att.com
+# encrypted with CipherUtil
+dmaap.mechid.password = /F1vRhga1Ijw7yRFFj6R5A==
+# Valid access methods are "dao" and "rest"
+profile.access.method = dao
diff --git a/deliveries/properties_rackspace/ECOMPDBCAPP/fusion.properties b/deliveries/properties_rackspace/ECOMPDBCAPP/fusion.properties
new file mode 100644
index 0000000..4d4e17e
--- /dev/null
+++ b/deliveries/properties_rackspace/ECOMPDBCAPP/fusion.properties
@@ -0,0 +1,33 @@
+# login settings
+login_method_backdoor       = backdoor
+login_method_attribute_name = login_method
+login_method_csp            = csp
+login_method_web_junction   = web_junction
+
+#login message
+login.error.hrid.empty = Login failed, please contact system administrator. 
+login.error.hrid.not-found = User not found, please contact system administrator.
+login.error.user.inactive = Account is disabled, please contact system administrator.
+
+authentication_mechanism = DBAUTH
+
+# User Session settings
+user_attribute_name      = user
+roles_attribute_name          = roles
+role_functions_attribute_name = role_functions
+
+# POST settings
+post_initial_context_factory = com.sun.jndi.ldap.LdapCtxFactory
+post_provider_url            = todo_ldap
+post_security_principal      = ou=people,o=org,c=us
+post_max_result_size         = 499
+
+# menu settings
+menu_query_name                      = menuData
+application_menu_set_name            = APP
+application_menu_attribute_name      = applicationMenuData
+business_direct_menu_set_name        = BD
+business_direct_menu_attribute_name  = businessDirectMenuData
+
+# Role settings
+sys_admin_role_id = 1
diff --git a/deliveries/properties_rackspace/ECOMPDBCAPP/portal.properties b/deliveries/properties_rackspace/ECOMPDBCAPP/portal.properties
new file mode 100644
index 0000000..6dbbee8
--- /dev/null
+++ b/deliveries/properties_rackspace/ECOMPDBCAPP/portal.properties
@@ -0,0 +1,25 @@
+# Properties read by ECOMP Framework library, ecompFW.jar
+
+portal.api.impl.class = org.openecomp.portalapp.service.OnBoardingApiServiceImpl
+portal.api.prefix = /api
+max.idle.time = 5
+user.attribute.name = user_attribute
+
+# Legacy property TODO 
+ecomp_redirect_url = http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/login.htm
+
+# URL of the ECOMP Portal REST API
+ecomp_rest_url = http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/auxapi
+
+#Use REST API instead of UEB to fetch the functional menu data
+use_rest_for_functional_menu=true
+
+# Don't fetch functional menu via UEB in 1610.
+ueb_listeners_enable = false
+
+# Application key is used by session management
+ueb_app_key = MtRwsF16RdpHZ7eM
+
+# The inbox name property should not be required when the REST API is used,
+# but in 1610 FuncMenuController logs ALARM if it cannot find this key.
+ecomp_portal_inbox_name = ECOMP-PORTAL-INBOX-TEST
diff --git a/deliveries/properties_rackspace/ECOMPDBCAPP/system.properties b/deliveries/properties_rackspace/ECOMPDBCAPP/system.properties
new file mode 100644
index 0000000..019268b
--- /dev/null
+++ b/deliveries/properties_rackspace/ECOMPDBCAPP/system.properties
@@ -0,0 +1,63 @@
+#Local
+app_display_name = DMaaP Bus Ctlr
+
+db.driver = com.mysql.jdbc.Driver
+db.connectionURL = jdbc:mysql://portal-db:3306/dbca_os
+db.userName = root
+db.password = Aa123456
+db.encrypt_flag = false
+db.hib.dialect = org.hibernate.dialect.MySQLDialect
+db.min_pool_size = 5
+db.max_pool_size = 10
+hb.dialect = org.hibernate.dialect.MySQLDialect
+hb.show_sql = false
+hb.db_reconnect = true
+hb.idle_connection_test_period = 3600
+
+# Directory with the Quantum.lic file
+files_path = /opt/app/tomcat/webapps/dmaap-bc-app/WEB-INF/dbcapp
+
+application_user_id           = 30000
+post_default_role_id          = 16
+clustered                     = true
+
+#Enable Fusion Mobile capabilities for the application
+mobile_enable                            = false
+
+# Cache config file is needed on the classpath
+cache_config_file_path        = /WEB-INF/classes/cache.ccf
+cache_switch                  = 199
+cache_load_on_startup         = false
+
+user_name                                        = fullName
+decryption_key                           = AGLDdG4D04BKm2IxIWEr8o==
+
+#element map files
+element_map_file_path = /tmp
+element_map_icon_path = app/fusionapp/icons/
+
+# Quartz is not used by the DBC application
+# log_cron =
+# mylogins_feed_cron =
+# sessiontimeout_feed_cron =
+# my_login_feed_output_dir =
+
+# ECOMP Portal Shared Context REST API URL is not used by the DBC application
+# ecomp_shared_context_rest_url = 
+
+contact_us_link = https://todo_contact_us_link
+
+# An Unique 128-bit value defined to identify a specific version
+# of an application deployed on a specific virtual machine.
+# This value must be generated and updated by the application 
+# which is using the ECOMP SDK at the time of its deployment.
+# Online Unique UUID generator - https://www.uuidgenerator.net/
+# ID generated for DBC to supply to EELF
+# A bogus value is cached in SCM: 12345678-.. 
+instance_uuid = 12345678-90ab-cdef-1234-567890abcdef
+
+#  R Cloud feature
+guard_notebook_url=https://todo_rcloud_link
+
+# Application base URL is a proper prefix of the on-boarded URL.
+app_base_url = http://portal.api.simpledemo.openecomp.org:8989/ECOMPDBCAPP/
diff --git a/deliveries/properties_rackspace/ECOMPPORTALAPP/fusion.properties b/deliveries/properties_rackspace/ECOMPPORTALAPP/fusion.properties
new file mode 100644
index 0000000..c92a573
--- /dev/null
+++ b/deliveries/properties_rackspace/ECOMPPORTALAPP/fusion.properties
@@ -0,0 +1,46 @@
+# domain settings
+#domain_class_location = 
+
+# validator settings
+#default_error_message = Default error message
+
+login_url_no_ret_val = http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/login.htm
+
+user_attribute_name      = user
+
+# User Session settings
+roles_attribute_name          = roles
+role_functions_attribute_name = role_functions
+
+# menu settings
+menu_query_name                      = menuData
+application_menu_set_name            = APP
+application_menu_attribute_name      = applicationMenuData
+business_direct_menu_set_name        = BD
+business_direct_menu_attribute_name  = businessDirectMenuData
+
+# ECOMP settings
+ecomp_app_id = 1
+# Role settings
+sys_admin_role_id = 1
+account_admin_role_id = 999
+restricted_app_role_id = 900
+
+# Home Page index html
+home_page          					= /index.html
+
+authentication_mechanism =DBAUTH
+
+login.error.hrid.empty = Login failed, please contact system administrator. 
+login.error.hrid.not-found = User not found, please contact system administrator.
+login.error.user.inactive = Account is disabled, please contact system administrator.
+
+#
+# Number of seconds to poll health (database operational, etc.)
+#
+health_poll_interval_seconds = 5
+#
+# If a component is down a log entry will be written that triggers an alert.  This parameter specifies how often this alert should be triggered  
+# if the component remains down.   For example a value of 30, would translate to 30 * 60 seconds = 1800 seconds, or every 30 minutes
+#
+health_fail_alert_every_x_intervals =  30
diff --git a/deliveries/properties_rackspace/ECOMPPORTALAPP/logback.xml b/deliveries/properties_rackspace/ECOMPPORTALAPP/logback.xml
new file mode 100644
index 0000000..0c0d764
--- /dev/null
+++ b/deliveries/properties_rackspace/ECOMPPORTALAPP/logback.xml
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ================================================================================
+  eCOMP Portal
+  ================================================================================
+  Copyright (C) 2017 AT&T Intellectual Property
+  ================================================================================
+  Licensed 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.
+  ================================================================================
+  -->
+
+<!DOCTYPE xml>
+<configuration scan="true" scanPeriod="3 seconds" debug="true">
+	<!-- Log-back files for the ECOMP Portal "ecompportal" are created in directory 
+		${catalina.base}/logs/ecompportal; e.g., apache-tomcat-8.0.35/logs/ecompportal/application.log -->
+	<!--<jmxConfigurator /> -->
+
+	<!-- specify the component name -->
+	<property name="componentName" value="ecompportal"></property>
+
+	<!-- specify the base path of the log directory -->
+	<property name="logDirPrefix" value="${catalina.base}/logs"></property>
+
+	<!-- The directories where logs are written -->
+	<property name="logDirectory" value="${logDirPrefix}/${componentName}" />
+	<!-- Can easily relocate debug logs by modifying this path. -->
+	<property name="debugLogDirectory" value="${logDirPrefix}/${componentName}" />
+
+	<!-- log file names -->
+	<property name="generalLogName" value="application" />
+	<property name="errorLogName" value="error" />
+	<property name="metricsLogName" value="metrics" />
+	<property name="auditLogName" value="audit" />
+	<property name="debugLogName" value="debug" />
+	<!-- These loggers are not used in code (yet). <property name="securityLogName" 
+		value="security" /> <property name="policyLogName" value="policy" /> <property 
+		name="performanceLogName" value="performance" /> <property name="serverLogName" 
+		value="server" /> -->
+
+	<!-- ServerFQDN=Server,  -->
+	<property name="auditLoggerPattern"
+		value="%X{AuditLogBeginTimestamp}|%X{AuditLogEndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />
+	
+	<property name="metricsLoggerPattern"
+		value="%X{MetricsLogBeginTimestamp}|%X{MetricsLogEndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{TargetVisualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />
+	
+	<property name="errorLoggerPattern"
+		value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{ClassName}|%X{AlertSeverity}|%X{ErrorCode}|%X{ErrorDescription}| %msg%n" />
+	
+	<property name="defaultLoggerPattern"
+		value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%X{ClassName}| %msg%n" />
+	
+	<!-- use %class so library logging calls yield their class name -->
+  	<property name="applicationLoggerPattern"
+		value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%class{36}| %msg%n" />
+	
+	<!-- 	
+	<property name="defaultPattern"
+		value="%date{ISO8601}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Timer}| %msg%n" />
+	<property name="debugLoggerPattern"
+		value="%date{ISO8601}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Timer}| %msg%n" />
+	 -->
+	<!-- <property name="debugLoggerPattern" value="%date{ISO8601}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{ServiceName}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ServerFQDN}|%X{RemoteHost}|%X{Timer}|[%caller{3}]|%msg%n" 
+		/> -->
+	<!-- Example evaluator filter applied against console appender -->
+	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<pattern>${applicationLoggerPattern}</pattern>
+		</encoder>
+	</appender>
+
+	<!-- ============================================================================ -->
+	<!-- EELF Appenders -->
+	<!-- ============================================================================ -->
+
+	<!-- The EELFAppender is used to record events to the general application 
+		log -->
+
+
+	<appender name="EELF"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${logDirectory}/${generalLogName}.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<!-- daily rollover -->
+			<fileNamePattern>${logDirectory}/${generalLogName}.log.%d{yyyy-MM-dd}.zip
+			</fileNamePattern>
+			<maxHistory>30</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>${applicationLoggerPattern}</pattern>
+		</encoder>
+		<filter class="org.openecomp.portalapp.portal.utils.CustomLoggingFilter" />
+	</appender>
+
+	<appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
+		<queueSize>256</queueSize>
+		<!-- Class name is part of caller data -->
+    	<includeCallerData>true</includeCallerData>
+		<appender-ref ref="EELF" />
+	</appender>
+
+	<!-- EELF Security Appender. This appender is used to record security events 
+		to the security log file. Security events are separate from other loggers 
+		in EELF so that security log records can be captured and managed in a secure 
+		way separate from the other logs. This appender is set to never discard any 
+		events. -->
+	<!-- <appender name="EELFSecurity" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
+		<file>${logDirectory}/${securityLogName}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
+		<fileNamePattern>${logDirectory}/${securityLogName}.%i.log.zip </fileNamePattern> 
+		<minIndex>1</minIndex> <maxIndex>9</maxIndex> </rollingPolicy> <triggeringPolicy 
+		class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>5MB</maxFileSize> 
+		</triggeringPolicy> <encoder> <pattern>${defaultPattern}</pattern> </encoder> 
+		</appender> <appender name="asyncEELFSecurity" class="ch.qos.logback.classic.AsyncAppender"> 
+		<queueSize>256</queueSize> <discardingThreshold>0</discardingThreshold> <appender-ref 
+		ref="EELFSecurity" /> </appender> -->
+
+	<!-- EELF Performance Appender. This appender is used to record performance 
+		records. -->
+	<!-- <appender name="EELFPerformance" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
+		<file>${logDirectory}/${performanceLogName}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
+		<fileNamePattern>${logDirectory}/${performanceLogName}.%i.log.zip </fileNamePattern> 
+		<minIndex>1</minIndex> <maxIndex>9</maxIndex> </rollingPolicy> <triggeringPolicy 
+		class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>5MB</maxFileSize> 
+		</triggeringPolicy> <encoder> <outputPatternAsHeader>true</outputPatternAsHeader> 
+		<pattern>${defaultPattern}</pattern> </encoder> </appender> <appender name="asyncEELFPerformance" 
+		class="ch.qos.logback.classic.AsyncAppender"> <queueSize>256</queueSize> 
+		<appender-ref ref="EELFPerformance" /> </appender> -->
+
+	<!-- EELF Server Appender. This appender is used to record Server related 
+		logging events. The Server logger and appender are specializations of the 
+		EELF application root logger and appender. This can be used to segregate 
+		Server events from other components, or it can be eliminated to record these 
+		events as part of the application root log. -->
+	<!-- <appender name="EELFServer" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
+		<file>${logDirectory}/${serverLogName}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
+		<fileNamePattern>${logDirectory}/${serverLogName}.%i.log.zip </fileNamePattern> 
+		<minIndex>1</minIndex> <maxIndex>9</maxIndex> </rollingPolicy> <triggeringPolicy 
+		class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>5MB</maxFileSize> 
+		</triggeringPolicy> <encoder> <pattern>${defaultPattern}</pattern> </encoder> 
+		</appender> <appender name="asyncEELFServer" class="ch.qos.logback.classic.AsyncAppender"> 
+		<queueSize>256</queueSize> <appender-ref ref="EELFServer" /> </appender> -->
+
+	<!-- EELF Policy Appender. This appender is used to record Policy engine 
+		related logging events. The Policy logger and appender are specializations 
+		of the EELF application root logger and appender. This can be used to segregate 
+		Policy engine events from other components, or it can be eliminated to record 
+		these events as part of the application root log. -->
+	<!-- <appender name="EELFPolicy" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
+		<file>${logDirectory}/${policyLogName}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
+		<fileNamePattern>${logDirectory}/${policyLogName}.%i.log.zip </fileNamePattern> 
+		<minIndex>1</minIndex> <maxIndex>9</maxIndex> </rollingPolicy> <triggeringPolicy 
+		class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>5MB</maxFileSize> 
+		</triggeringPolicy> <encoder> <pattern>${defaultPattern}</pattern> </encoder> 
+		</appender> <appender name="asyncEELFPolicy" class="ch.qos.logback.classic.AsyncAppender"> 
+		<queueSize>256</queueSize> <appender-ref ref="EELFPolicy" /> </appender> -->
+
+	<!-- EELF Audit Appender. This appender is used to record audit engine related 
+		logging events. The audit logger and appender are specializations of the 
+		EELF application root logger and appender. This can be used to segregate 
+		Policy engine events from other components, or it can be eliminated to record 
+		these events as part of the application root log. -->
+
+	<appender name="EELFAudit"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${logDirectory}/${auditLogName}.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<!-- daily roll over -->
+			<fileNamePattern>${logDirectory}/${auditLogName}.log.%d{yyyy-MM-dd}.zip
+			</fileNamePattern>
+			<maxHistory>30</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>${auditLoggerPattern}</pattern>
+		</encoder>
+	</appender>
+	<appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
+		<queueSize>256</queueSize>
+		<appender-ref ref="EELFAudit" />
+	</appender>
+
+	<appender name="EELFMetrics"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${logDirectory}/${metricsLogName}.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<!-- daily roll over -->
+			<fileNamePattern>${logDirectory}/${metricsLogName}.log.%d{yyyy-MM-dd}.zip
+			</fileNamePattern>
+			<maxHistory>30</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>${metricsLoggerPattern}</pattern>
+		</encoder>
+	</appender>
+
+
+	<appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
+		<queueSize>256</queueSize>
+		<appender-ref ref="EELFMetrics" />
+	</appender>
+
+	<appender name="EELFError"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${logDirectory}/${errorLogName}.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<!-- daily roll over -->
+			<fileNamePattern>${logDirectory}/${errorLogName}.log.%d{yyyy-MM-dd}.zip
+			</fileNamePattern>
+			<maxHistory>30</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>${errorLoggerPattern}</pattern>
+		</encoder>
+	</appender>
+
+	<appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender">
+		<queueSize>256</queueSize>
+		<appender-ref ref="EELFError" />
+	</appender>
+
+	<appender name="EELFDebug"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${debugLogDirectory}/${debugLogName}.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<!-- daily roll over -->
+			<fileNamePattern>${logDirectory}/${debugLogName}.log.%d{yyyy-MM-dd}.zip
+			</fileNamePattern>
+			<maxHistory>30</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>${defaultLoggerPattern}</pattern>
+		</encoder>
+	</appender>
+
+	<appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
+		<queueSize>256</queueSize>
+		<appender-ref ref="EELFDebug" />
+		<includeCallerData>true</includeCallerData>
+	</appender>
+
+
+	<!-- ============================================================================ -->
+	<!-- EELF loggers -->
+	<!-- ============================================================================ -->
+	<logger name="com.att.eelf" level="info" additivity="false">
+		<appender-ref ref="asyncEELF" />
+	</logger>
+
+	<!-- <logger name="com.att.eelf.security" level="info" additivity="false"> 
+		<appender-ref ref="asyncEELFSecurity" /> </logger> <logger name="com.att.eelf.perf" 
+		level="info" additivity="false"> <appender-ref ref="asyncEELFPerformance" 
+		/> </logger> <logger name="com.att.eelf.server" level="info" additivity="false"> 
+		<appender-ref ref="asyncEELFServer" /> </logger> <logger name="com.att.eelf.policy" 
+		level="info" additivity="false"> <appender-ref ref="asyncEELFPolicy" /> </logger> -->
+
+	<logger name="com.att.eelf.audit" level="info" additivity="false">
+		<appender-ref ref="asyncEELFAudit" />
+	</logger>
+
+	<logger name="com.att.eelf.metrics" level="info" additivity="false">
+		<appender-ref ref="asyncEELFMetrics" />
+	</logger>
+
+	<logger name="com.att.eelf.error" level="info" additivity="false">
+		<appender-ref ref="asyncEELFError" />
+	</logger>
+
+	<logger name="com.att.eelf.debug" level="debug" additivity="false">
+		<appender-ref ref="asyncEELFDebug" />
+	</logger>
+
+	<root level="INFO">
+		<appender-ref ref="asyncEELF" />
+	</root>
+
+</configuration>
diff --git a/deliveries/properties_rackspace/ECOMPPORTALAPP/openid-connect.properties b/deliveries/properties_rackspace/ECOMPPORTALAPP/openid-connect.properties
new file mode 100644
index 0000000..33c919b
--- /dev/null
+++ b/deliveries/properties_rackspace/ECOMPPORTALAPP/openid-connect.properties
@@ -0,0 +1,3 @@
+authentication_server_url = http://portal.api.simpledemo.openecomp.org:8383/openid-connect-server-webapp/
+ecomp_openid_connect_client = http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/openid_connect_login
+ecomp_redirect_uri = http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/welcome.htm
diff --git a/deliveries/properties_rackspace/ECOMPPORTALAPP/portal.properties b/deliveries/properties_rackspace/ECOMPPORTALAPP/portal.properties
new file mode 100644
index 0000000..f7fba31
--- /dev/null
+++ b/deliveries/properties_rackspace/ECOMPPORTALAPP/portal.properties
@@ -0,0 +1,23 @@
+portal.api.impl.class = org.openecomp.portalsdk.core.onboarding.client.OnBoardingApiServiceImpl
+portal.api.prefix = /api
+max.idle.time = 5
+user.attribute.name = user_attribute
+
+# for single sign on
+ecomp_redirect_url = http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/login.htm
+
+# URL of the ECOMP Portal REST API
+ecomp_rest_url = http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/auxapi
+
+ueb_listeners_enable = true
+
+ueb_app_key = 7GkVcrO6sIDb3ngW 
+ueb_app_secret = uCYgKjWKK5IxPGNNZzYSSWo9
+ueb_app_mailbox_name = ECOMP-PORTAL-INBOX
+
+ueb_url_list = ueb.api.simpledemo.openecomp.org
+ecomp_portal_inbox_name = ECOMP-PORTAL-INBOX
+
+# Consumer group name for UEB topic.
+# Use the special tag to generate a unique one for each sdk-app server.
+ueb_app_consumer_group_name = {UUID}
diff --git a/deliveries/properties_rackspace/ECOMPPORTALAPP/system.properties b/deliveries/properties_rackspace/ECOMPPORTALAPP/system.properties
new file mode 100644
index 0000000..1084295
--- /dev/null
+++ b/deliveries/properties_rackspace/ECOMPPORTALAPP/system.properties
@@ -0,0 +1,97 @@
+#mysql
+db.driver = com.mysql.jdbc.Driver
+db.connectionURL = jdbc:mysql://portal-db:3306/portal
+db.userName =root
+db.password =Aa123456
+db.hib.dialect = org.hibernate.dialect.MySQLDialect
+db.min_pool_size = 5
+db.max_pool_size = 10
+hb.dialect = org.hibernate.dialect.MySQLDialect
+hb.show_sql = false
+hb.db_reconnect = true
+hb.idle_connection_test_period = 3600
+
+app_display_name = Portal
+files_path = /tmp
+context_root = ECOMPPORTAL
+# menu settings
+menu_query_name                      = menuData
+menu_properties_file_location        = /WEB-INF/fusion/menu/
+application_menu_set_name            = APP
+application_menu_attribute_name      = applicationMenuData
+application_menu_properties_name     = menu.properties
+business_direct_menu_set_name        = BD
+business_direct_menu_properties_name = bd.menu.properties
+business_direct_menu_attribute_name  = businessDirectMenuData
+
+application_user_id           = 30000
+post_default_role_id          = 1
+
+#Enable Fusion Mobile capabilities for the application
+mobile_enable			  	  = false
+
+cache_config_file_path        = /WEB-INF/conf/cache.ccf
+cache_switch                  = 1
+cache_load_on_startup         = false
+
+user_name					  = fullName
+decryption_key				  = AGLDdG4D04BKm2IxIWEr8o==
+
+
+#Cron Schedules
+cron_site_name                = one
+log_cron                      = 0 * * * * ? *
+sessiontimeout_feed_cron	  = 0 0/5 * * * ? *
+
+#Front end URL
+frontend_url                  = http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/applicationsHome 
+
+#cookie domain
+cookie_domain = openecomp.org
+
+# An Unqiue 128-bit value defined to indentify a specific version of
+# ECOMP Portal deployed on a specific virtual machine.
+# This value must be generated and updated at the time of 
+# the deployment.
+# Online Unique UUID generator - https://www.uuidgenerator.net/
+instance_uuid 				= 90bc9497-10e6-49fe-916b-dcdfaa972383
+
+elastic_search_url 			= http://
+contact_us_link				= http://
+user_guide_link             = http://
+
+# Contact Us page properties
+ush_ticket_url				= http://
+feedback_email_address		= portal@lists.openecomp.org
+portal_info_url				= https://
+
+#Online user bar refresh interval, in seconds
+online_user_update_rate                  = 30
+
+#Online user bar refresh total duration, in seconds
+online_user_update_duration       = 300
+
+#authenticate user server
+authenticate_user_server=http://portal.api.simpledemo.openecomp.org:8383/openid-connect-server-webapp/allUsers
+
+#window width threshold to collapse left/right menu when page onload
+window_width_threshold_left_menu = 1400
+window_width_threshold_right_menu = 1350
+
+# User notification refresh interval and duration, in seconds
+notification_update_rate = 90
+notification_update_duration = 900
+
+#Microservices Related Properties for Portal
+microservices.widget.protocol = http
+microservices.widget.hostname = portal-wms
+microservices.widget.username = widget_user
+microservices.widget.password = KpuqIB08YHg+btG+pjX+sA==
+#This property won't be needed after consul is functional on VMs -
+microservices.widget.local.port = 8082
+microservices.m-learn.local.port = 8083
+#HALO API enable flag
+external_access_enable = false
+
+#delete auditlog from number of days ago
+auditlog_del_day_from = 365
diff --git a/deliveries/properties_rackspace/ECOMPSDKAPP/fusion.properties b/deliveries/properties_rackspace/ECOMPSDKAPP/fusion.properties
new file mode 100644
index 0000000..8ce8cc9
--- /dev/null
+++ b/deliveries/properties_rackspace/ECOMPSDKAPP/fusion.properties
@@ -0,0 +1,35 @@
+# login settings
+login_method_backdoor       = backdoor
+login_method_attribute_name = login_method
+
+# These properties will be removed after SingleSignOnController is cleaned
+authentication_mechanism = BOTH
+login_method_csp            = csp
+login_method_web_junction   = web_junction
+
+#login message
+login.error.hrid.empty = Login failed, please contact system administrator. 
+login.error.hrid.not-found = User not found, please contact system administrator.
+login.error.user.inactive = Account is disabled, please contact system administrator.
+
+# User Session settings
+user_attribute_name           = user
+roles_attribute_name          = roles
+role_function_list = role_function_list
+role_functions_attribute_name = role_functions
+
+# Import-user LDAP settings
+post_initial_context_factory = com.sun.jndi.ldap.LdapCtxFactory
+post_provider_url            = ldap://ldap.mycompany.com:389
+post_security_principal      = ou=people,o=mycompany,c=us
+post_max_result_size         = 499
+
+# menu settings
+menu_query_name                      = menuData
+application_menu_set_name            = APP
+application_menu_attribute_name      = applicationMenuData
+business_direct_menu_set_name        = BD
+business_direct_menu_attribute_name  = businessDirectMenuData
+
+# Role settings
+sys_admin_role_id = 1
diff --git a/deliveries/properties_rackspace/ECOMPSDKAPP/portal.properties b/deliveries/properties_rackspace/ECOMPSDKAPP/portal.properties
new file mode 100644
index 0000000..b569e4f
--- /dev/null
+++ b/deliveries/properties_rackspace/ECOMPSDKAPP/portal.properties
@@ -0,0 +1,44 @@
+# Properties read by ECOMP Framework library, ecompFW.jar
+
+##########################################################################
+# The following properties should NOT be changed by partner applications.
+##########################################################################
+
+portal.api.prefix = /api
+max.idle.time = 5
+user.attribute.name = user_attribute
+
+#Use REST API instead of UEB to fetch the functional menu data
+use_rest_for_functional_menu=true
+
+##########################################################################
+# The following properties MUST be changed by partner applications.
+##########################################################################
+
+# Name of java class that implements the OnBoardingApiService interface.
+portal.api.impl.class = org.openecomp.portalapp.service.OnBoardingApiServiceImpl
+
+# CSP Global Log On for single sign on
+ecomp_redirect_url = http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/login.htm
+
+# URL of the ECOMP Portal REST API
+
+ecomp_rest_url = http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/auxapi
+
+# Applications do not need to run a UEB listener in 1610.  
+ueb_listeners_enable = false
+
+# UEB Configuration
+ueb_url_list = ueb.api.simpledemo.openecomp.org
+# ECOMP Portal listens on this UEB topic
+ecomp_portal_inbox_name = ECOMP-PORTAL-INBOX
+# Replace these 3 default values with the ones for your specific App,
+# as shown on the on-boarding page on the ECOMP Portal web application.
+ueb_app_key = jQd4a9zVNi4ePyBp
+ueb_app_secret = P0HpqEBhKJvxjRYdw2sCTUll
+ueb_app_mailbox_name = ECOMP-PORTAL-OUTBOX-APP1
+# Consumer group name for UEB topic.
+# Use the special tag '{UUID}' to generate a unique one for each sdk-app server.
+ueb_app_consumer_group_name = {UUID}
+
+decryption_key				  = AGLDdG4D04BKm2IxIWEr8o==
diff --git a/deliveries/properties_rackspace/ECOMPSDKAPP/system.properties b/deliveries/properties_rackspace/ECOMPSDKAPP/system.properties
new file mode 100644
index 0000000..105502f
--- /dev/null
+++ b/deliveries/properties_rackspace/ECOMPSDKAPP/system.properties
@@ -0,0 +1,65 @@
+# Properties read by ECOMP Core library, ecompSDK-core.jar
+
+##########################################################################
+# The following properties should NOT be changed by partner applications.
+##########################################################################
+
+application_user_id           = 30000
+post_default_role_id          = 16
+clustered                     = true
+
+#Enable Fusion Mobile capabilities for the application
+mobile_enable			  	  = false
+
+# Cache config file is needed on the classpath
+cache_config_file_path        = /WEB-INF/classes/cache.ccf
+cache_switch                  = 199
+cache_load_on_startup         = false
+
+user_name					  = fullName
+decryption_key				  = AGLDdG4D04BKm2IxIWEr8o==
+
+##########################################################################
+# The following properties MAY require changes by partner applications.
+##########################################################################
+
+#Mysql
+db.driver = com.mysql.jdbc.Driver
+db.connectionURL = jdbc:mysql://portal-db:3306/ecomp_sdk
+db.userName = root
+db.password = Aa123456
+db.min_pool_size = 5
+db.max_pool_size = 10
+hb.dialect = org.hibernate.dialect.MySQLDialect
+# SQL statements are logged to stdout
+hb.show_sql = true
+hb.idle_connection_test_period = 3600
+
+app_display_name = Demo App
+files_path = /tmp
+
+#element map files
+element_map_file_path = /tmp
+element_map_icon_path = app/fusionapp/icons/
+
+#Cron Schedules
+log_cron                      = 0 0/1 * * * ?;
+mylogins_feed_cron            = 0 0/60 * * * ?;
+#sessiontimeout_feed_cron	  = 0 * * * * ? *
+my_login_feed_output_dir      = /tmp/MyLogins
+
+# Link shown in Help menu
+contact_us_link = https://todo_contact_us_link.com
+
+# An Unique 128-bit value defined to identify a specific version
+# of an application deployed on a specific virtual machine.
+# This value must be generated and updated by the application 
+# which is using the ECOMP SDK at the time of its deployment.
+# Online Unique UUID generator - https://www.uuidgenerator.net/
+instance_uuid=8da691c9-987d-43ed-a358-00ac2f35685d
+
+# R Cloud feature - configure this property to enable notebook feature - for more details on RCloud please visit https://rcloud.social/index.html
+guard_notebook_url=
+
+#authenticate user server
+authenticate_user_server=http://portal.openecomp.org:8383/openid-connect-server-webapp/allUsers
diff --git a/deliveries/properties_rackspace/ECOMPWIDGETMS/application.properties b/deliveries/properties_rackspace/ECOMPWIDGETMS/application.properties
new file mode 100644
index 0000000..7c95923
--- /dev/null
+++ b/deliveries/properties_rackspace/ECOMPWIDGETMS/application.properties
@@ -0,0 +1,35 @@
+## General App Properties
+server.contextPath=/widget
+server.port=8082
+spring.http.multipart.max-file-size=128MB
+spring.http.multipart.max-request-size=128MB
+microservice.widget.location=/tmp
+
+## App DB Properties
+spring.datasource.url=jdbc:mysql://portal-db:3306/portal
+spring.datasource.username=root
+spring.datasource.password=Aa123456
+spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
+spring.database.driver.classname=org.mariadb.jdbc.Driver
+spring.jpa.show-sql=false
+spring.jpa.properties.hibernate.format_sql=false
+
+## Basic Authentication Properties
+security.user.name=widget_user
+security.user.password=ENC(IjywcRnI9+nuVEh9+OFFiRWAjBT1n718)
+
+initialization.default.widgets=true
+initialization.widgetData.url=http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/commonWidgets
+
+## Account Basic Authentication Properties
+account.user.name=portal
+account.user.password=6APqvG4AU2rfLgCvMdySwQ==
+
+## Certificate Properties
+#server.ssl.key-store=classpath:widget-keystore.p12
+#server.ssl.key-store-password=ENC(DiIYnAMab4u7rEW2yKhF9zBL00uU55q8)
+#server.ssl.keyStoreType=PKCS12
+#server.ssl.keyAlias=widget-microservice
+
+## Jasypt Properties
+jasypt.encryptor.password=EncryptionKey
diff --git a/deliveries/run.sh b/deliveries/run.sh
deleted file mode 100755
index bd2a5dd..0000000
--- a/deliveries/run.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-# Stop on errors; show output
-set -e -x
-# 1610 builder
-# ./os_build_febe.sh
-# 1707 builder
-./build_portalapps_dockers.sh
-./createMaria.sh
-docker images
diff --git a/deliveries/configure-and-run.sh b/deliveries/start-apps-cmd.sh
similarity index 94%
rename from deliveries/configure-and-run.sh
rename to deliveries/start-apps-cmd.sh
index 5c2b2f4..bbe2a7c 100755
--- a/deliveries/configure-and-run.sh
+++ b/deliveries/start-apps-cmd.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 
 LOGFILE=/opt/apache-tomcat-8.0.37/logs/catalina.out
 echo "`date`:<--------------------    Starting     -------------------->" >> $LOGFILE
diff --git a/deliveries/start-wms-cmd.sh b/deliveries/start-wms-cmd.sh
new file mode 100755
index 0000000..dc8336e
--- /dev/null
+++ b/deliveries/start-wms-cmd.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar
diff --git a/deliveries/wait-for.sh b/deliveries/wait-for.sh
new file mode 100755
index 0000000..be9a443
--- /dev/null
+++ b/deliveries/wait-for.sh
@@ -0,0 +1,82 @@
+#!/bin/sh
+# https://github.com/Eficode/wait-for.git
+# MIT License
+
+TIMEOUT=15
+QUIET=0
+
+echoerr() {
+  if [ "$QUIET" -ne 1 ]; then printf "%s\n" "$*" 1>&2; fi
+}
+
+usage() {
+  exitcode="$1"
+  cat << USAGE >&2
+Usage:
+  $cmdname host:port [-t timeout] [-- command args]
+  -q | --quiet                        Do not output any status messages
+  -t TIMEOUT | --timeout=timeout      Timeout in seconds, zero for no timeout
+  -- COMMAND ARGS                     Execute command with args after the test finishes
+USAGE
+  exit "$exitcode"
+}
+
+wait_for() {
+  command="$*"
+  for i in `seq $TIMEOUT` ; do
+    nc -z "$HOST" "$PORT" > /dev/null 2>&1
+    result=$?
+    if [ $result -eq 0 ] ; then
+      if [ "$QUIET" -ne 1 ]; then echo "Operation succeeded on try $i"; fi
+      if [ -n "$command" ] ; then
+        exec $command
+      fi
+      exit 0
+    fi
+    sleep 1
+  done
+  echo "Operation timed out" >&2
+  exit 1
+}
+
+while [ $# -gt 0 ]
+do
+  case "$1" in
+    *:* )
+    HOST=$(printf "%s\n" "$1"| cut -d : -f 1)
+    PORT=$(printf "%s\n" "$1"| cut -d : -f 2)
+    shift 1
+    ;;
+    -q | --quiet)
+    QUIET=1
+    shift 1
+    ;;
+    -t)
+    TIMEOUT="$2"
+    if [ "$TIMEOUT" = "" ]; then break; fi
+    shift 2
+    ;;
+    --timeout=*)
+    TIMEOUT="${1#*=}"
+    shift 1
+    ;;
+    --)
+    shift
+    break
+    ;;
+    --help)
+    usage 0
+    ;;
+    *)
+    echoerr "Unknown argument: $1"
+    usage 1
+    ;;
+  esac
+done
+
+if [ "$HOST" = "" -o "$PORT" = "" ]; then
+  echoerr "Error: you need to provide a host and port to test."
+  usage 2
+fi
+
+wait_for "$@"
diff --git a/deliveries/widget_ms_start.sh b/deliveries/widget_ms_start.sh
deleted file mode 100755
index b5fbdc2..0000000
--- a/deliveries/widget_ms_start.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-# Establish environment variables
-source $(dirname $0)/os_settings.sh
-
-BASEDIR=/PROJECT/OpenSource/UbuntuEP
-WIDGETMSAPPPROPDIR=ECOMPWIDGETMS
-
-echo "Running docker image ${WMS_IMG_NAME} as container ${WMS_CONT_NAME}"
-docker run -d --name ${WMS_CONT_NAME} -p 8082:8082 -v ${BASEDIR}/etc/${WIDGETMSAPPPROPDIR}/application.properties:/application.properties ${WMS_IMG_NAME}
diff --git a/deliveries/widget_ms_stop.sh b/deliveries/widget_ms_stop.sh
deleted file mode 100755
index dd5c964..0000000
--- a/deliveries/widget_ms_stop.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-# Establish environment variables
-source $(dirname $0)/os_settings.sh
-
-echo "Stopping docker container ${WMS_CONT_NAME}"
-docker stop ${WMS_CONT_NAME}
-echo "Removing docker image ${WMS_CONT_NAME}"
-docker rm ${WMS_CONT_NAME}