move all bash to ash shell scripts

this gerrit would be the first step
to not to use any GPL-3.0 and plus license

Issue-ID: POLICY-2847
Change-Id: I09a571f14ef8c6983f9051068c2bad5acc173787
Signed-off-by: Taka Cho <takamune.cho@att.com>
diff --git a/policy-management/src/main/server-gen/bin/add-secured-participant b/policy-management/src/main/server-gen/bin/add-secured-participant
index d6843fe..4a77670 100644
--- a/policy-management/src/main/server-gen/bin/add-secured-participant
+++ b/policy-management/src/main/server-gen/bin/add-secured-participant
@@ -1,17 +1,17 @@
-#! /bin/bash
+#!/usr/bin/env ash
 
 ###
 # ============LICENSE_START=======================================================
 # policy-management
 # ================================================================================
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+# Copyright (C) 2017-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # 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.
@@ -21,91 +21,91 @@
 ###
 
 function usage() {
-	echo -n "Usage: $(basename $0) "
-	echo -n "[(-d|--debug)] "
-	echo -n "(-h|--host) <bus-host> "
-	echo -n "[(-p|--port) <bus-port>] "
-	echo -n "(-k|--key) <api-key> "
-	echo -n "(-s|--secret) <api-secret> "
-	echo -n "(-P|--producer-key) <producer-key> "
-	echo -n "(-C|--consumer-key) <consumer-key> "
-	echo "(-t|--topic) <topic> "
+    echo -n "Usage: $(basename $0) "
+    echo -n "[(-d|--debug)] "
+    echo -n "(-h|--host) <bus-host> "
+    echo -n "[(-p|--port) <bus-port>] "
+    echo -n "(-k|--key) <api-key> "
+    echo -n "(-s|--secret) <api-secret> "
+    echo -n "(-P|--producer-key) <producer-key> "
+    echo -n "(-C|--consumer-key) <consumer-key> "
+    echo "(-t|--topic) <topic> "
 }
 
 BUS_PORT=3904
 
 # command line options parsing
-until [[ -z "$1" ]]; do
-	case $1 in
-		-d|--debug) 	set -x
-				;;
-		-h|--host) 		shift
-					BUS_HOST=$1
-					;;						
-		-p|--port) 		shift
-					BUS_PORT=$1
-					;;
-		-k|--key) 		shift
-					API_KEY=$1
-					;;	
-		-s|--secret) 		shift
-					API_SECRET=$1
-					;;	
-		-t|--topic) 		shift
-					TOPIC=$1
-					;;							
-		-P|--producer-key) 	shift
-					URL_CONTEXT="producers"
-					PRODUCER_KEY=$1
-					KEY=$1
-					;;	
-		-C|--consumer-key) 	shift
-					URL_CONTEXT="consumers"
-					CONSUMER_KEY=$1
-					KEY=$1
-					;;																
-		*)			usage
-					exit 1
-					;;
-	esac
-	shift
+until [ -z "$1" ]; do
+    case $1 in
+        -d|--debug)     set -x
+             ;;
+        -h|--host)      shift
+             BUS_HOST=$1
+             ;;
+        -p|--port)      shift
+             BUS_PORT=$1
+             ;;
+        -k|--key)       shift
+             API_KEY=$1
+             ;;
+        -s|--secret)    shift
+             API_SECRET=$1
+             ;;
+        -t|--topic)     shift
+             TOPIC=$1
+             ;;
+        -P|--producer-key)     shift
+             URL_CONTEXT="producers"
+             PRODUCER_KEY=$1
+             KEY=$1
+             ;;
+        -C|--consumer-key)     shift
+             URL_CONTEXT="consumers"
+             CONSUMER_KEY=$1
+             KEY=$1
+             ;;
+        *)   usage
+             exit 1
+             ;;
+    esac
+    shift
 done
 
-if [[ -z ${BUS_HOST} ]]; then
-	echo "An UEB/DMAAP server must be provided."
-	echo
-	usage
-	exit 1
+if [ -z "${BUS_HOST}" ]; then
+    echo "An UEB/DMAAP server must be provided."
+    echo
+    usage
+    exit 1
 fi
 
-if [[ -z ${API_KEY} ]]; then
-	echo "The API Key must be provided."
-	usage
-	exit 2
+if [ -z "${API_KEY}" ]; then
+    echo "The API Key must be provided."
+    usage
+    exit 2
 fi
 
-if [[ -z ${API_SECRET} ]]; then
-	echo "The API Secret must be provided."
-	usage
-	exit 3
+if [ -z "${API_SECRET}" ]; then
+    echo "The API Secret must be provided."
+    usage
+    exit 3
 fi
 
-if [[ -z ${TOPIC} ]]; then
-	echo "The Topic Name must be provided."
-	usage
-	exit 3
+if [ -z "${TOPIC}" ]; then
+    echo "The Topic Name must be provided."
+    usage
+    exit 3
 fi
 
-if [[ -z ${PRODUCER_KEY} && -z ${CONSUMER_KEY} ]]; then
-	echo "Either the Producer or Consumer options must be provided."
-	usage
-	exit 4
+if [ -z "${PRODUCER_KEY}" ] && [ -z "${CONSUMER_KEY}" ]; then
+    echo "Either the Producer or Consumer options must be provided."
+    usage
+    exit 4
 fi
 
-if [[ -n ${PRODUCER_KEY} && -n ${CONSUMER_KEY} ]]; then
-	echo "Only and only one of the Producer or Consumer options must be provided."
-	usage
-	exit 5
+if [ -n "${PRODUCER_KEY}" ] && [ -n "${CONSUMER_KEY}" ]; then
+    echo "Only and only one of the Producer or Consumer options must be provided."
+    usage
+    exit 5
 fi
 
 
@@ -114,9 +114,9 @@
 
 unset http_proxy
 curl --silent -X PUT \
-	--header "Accept:" \
-	--header "X-CambriaDate: ${DATE}" \
-	--header "X-CambriaAuth: ${API_KEY}:${DATE_HASH}" \
-	--header "Content-Type: application/json" \
-	--data "{}" \
-	http://${BUS_HOST}:${BUS_PORT}/topics/${TOPIC}/${URL_CONTEXT}/${KEY}
+    --header "Accept:" \
+    --header "X-CambriaDate: ${DATE}" \
+    --header "X-CambriaAuth: ${API_KEY}:${DATE_HASH}" \
+    --header "Content-Type: application/json" \
+    --data "{}" \
+    http://${BUS_HOST}:${BUS_PORT}/topics/${TOPIC}/${URL_CONTEXT}/${KEY}
diff --git a/policy-management/src/main/server-gen/bin/create-api-key b/policy-management/src/main/server-gen/bin/create-api-key
index ea0ec7a..d5af491 100644
--- a/policy-management/src/main/server-gen/bin/create-api-key
+++ b/policy-management/src/main/server-gen/bin/create-api-key
@@ -1,17 +1,17 @@
-#! /bin/bash
+#!/usr/bin/env ash
 
 ###
 # ============LICENSE_START=======================================================
 # policy-management
 # ================================================================================
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+# Copyright (C) 2017-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # 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.
@@ -21,56 +21,56 @@
 ###
 
 function usage() {
-	echo -n "Usage: $(basename $0) "
-	echo -n "[(-d|--debug)] "
-	echo -n "(-h|--host) <bus-host> "
-	echo -n "[(-p|--port) <bus-port>] "
-	echo    "(-e|--email) <email>"
+    echo -n "Usage: $(basename $0) "
+    echo -n "[(-d|--debug)] "
+    echo -n "(-h|--host) <bus-host> "
+    echo -n "[(-p|--port) <bus-port>] "
+    echo    "(-e|--email) <email>"
 }
 
 BUS_PORT=3904
 
 # command line options parsing
-until [[ -z "$1" ]]; do
-	case $1 in
-		-d|--debug) 	set -x
-						;;
-		-h|--host) 		shift
-						BUS_HOST=$1
-						;;						
-		-p|--port) 		shift
-						BUS_PORT=$1
-						;;
-		-e|--email) 	shift
-						EMAIL=$1
-						;;						
-		*)				usage
-						exit 1
-						;;
-	esac
-	shift
+until [ -z "$1" ]; do
+    case $1 in
+        -d|--debug)    set -x
+            ;;
+        -h|--host)     shift
+            BUS_HOST=$1
+            ;;
+        -p|--port)     shift
+            BUS_PORT=$1
+            ;;
+        -e|--email)    shift
+            EMAIL=$1
+            ;;
+        *)             usage
+            exit 1
+            ;;
+    esac
+    shift
 done
 
-if [[ -z ${BUS_HOST} ]]; then
-	echo "An UEB/DMAAP server must be provided."
-	echo
-	usage
-	exit 1
+if [ -z "${BUS_HOST}" ]; then
+    echo "An UEB/DMAAP server must be provided."
+    echo
+    usage
+    exit 1
 fi
 
-if [[ -z ${EMAIL} ]]; then
-	echo "An email address must be provided."
-	usage
-	exit 2
+if [ -z "${EMAIL}" ]; then
+    echo "An email address must be provided."
+    usage
+    exit 2
 fi
 
-REQUEST_API_KEY_BODY=$(< <(cat <<EOF
+REQUEST_API_KEY_BODY=$(cat <<EOF
 {
   "email": "${EMAIL}",
   "description": "Generated by PDP-D $(hostname -f)"
 }
 EOF
-))
+)
 
 unset http_proxy
 curl -s -X POST --data "${REQUEST_API_KEY_BODY}" --header "Content-Type: application/json" http://${BUS_HOST}:${BUS_PORT}/v1/apiKeys/create
diff --git a/policy-management/src/main/server-gen/bin/create-secured-topic b/policy-management/src/main/server-gen/bin/create-secured-topic
index b0d4d6f..6e05814 100644
--- a/policy-management/src/main/server-gen/bin/create-secured-topic
+++ b/policy-management/src/main/server-gen/bin/create-secured-topic
@@ -1,17 +1,17 @@
-#! /bin/bash
+#!/usr/bin/env ash
 
 ###
 # ============LICENSE_START=======================================================
 # policy-management
 # ================================================================================
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+# Copyright (C) 2017-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # 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.
@@ -21,16 +21,16 @@
 ###
 
 function usage() {
-	echo -n "Usage: $(basename $0) "
-	echo -n "[(-d|--debug)] "
-	echo -n "(-h|--host) <bus-host> "
-	echo -n "[(-p|--port) <bus-port>] "
-	echo -n "(-k|--key) <api-key> "
-	echo -n "(-s|--secret) <api-secret> "
-	echo -n "[(-P|--partition) <partition-count>] "
-	echo -n "[(-R|--replication) <replication-count>] "
-	echo "(-t|--topic) <topic> "
-	echo ""
+    echo -n "Usage: $(basename $0) "
+    echo -n "[(-d|--debug)] "
+    echo -n "(-h|--host) <bus-host> "
+    echo -n "[(-p|--port) <bus-port>] "
+    echo -n "(-k|--key) <api-key> "
+    echo -n "(-s|--secret) <api-secret> "
+    echo -n "[(-P|--partition) <partition-count>] "
+    echo -n "[(-R|--replication) <replication-count>] "
+    echo "(-t|--topic) <topic> "
+    echo ""
 }
 
 BUS_PORT=3904
@@ -38,81 +38,81 @@
 REPLICATION_COUNT=1
 
 # command line options parsing
-until [[ -z "$1" ]]; do
-	case $1 in
-		-d|--debug) 	set -x
-				;;
-		-h|--host) 		shift
-					BUS_HOST=$1
-					;;						
-		-p|--port) 		shift
-					BUS_PORT=$1
-					;;
-		-k|--key) 		shift
-					API_KEY=$1
-					;;	
-		-s|--secret) 		shift
-					API_SECRET=$1
-					;;	
-		-t|--topic) 		shift
-					TOPIC=$1
-					;;							
-		-P|--partition-count) 	shift
-					PARTITION_COUNT=$1
-					;;
-		-R|--replication-count) shift
-					REPLICATION_COUNT=$1
-					;;																	
-		*)			usage
-					exit 1
-					;;
-	esac
-	shift
+until [ -z "$1" ]; do
+    case $1 in
+        -d|--debug)     set -x
+                ;;
+        -h|--host)      shift
+                BUS_HOST=$1
+                ;;
+        -p|--port)      shift
+                BUS_PORT=$1
+                ;;
+        -k|--key)       shift
+                API_KEY=$1
+                ;;
+        -s|--secret)    shift
+                API_SECRET=$1
+                ;;
+        -t|--topic)     shift
+                TOPIC=$1
+                ;;
+        -P|--partition-count)     shift
+                PARTITION_COUNT=$1
+                ;;
+        -R|--replication-count) shift
+                REPLICATION_COUNT=$1
+                ;;
+        *)      usage
+                exit 1
+                ;;
+    esac
+    shift
 done
 
-if [[ -z ${BUS_HOST} ]]; then
-	echo "An UEB/DMAAP server must be provided."
-	echo
-	usage
-	exit 1
+if [ -z "${BUS_HOST}" ]; then
+    echo "An UEB/DMAAP server must be provided."
+    echo
+    usage
+    exit 1
 fi
 
-if [[ -z ${API_KEY} ]]; then
-	echo "The API Key must be provided."
-	usage
-	exit 2
+if [ -z "${API_KEY}" ]; then
+    echo "The API Key must be provided."
+    usage
+    exit 2
 fi
 
-if [[ -z ${API_SECRET} ]]; then
-	echo "The API Secret must be provided."
-	usage
-	exit 3
+if [ -z "${API_SECRET}" ]; then
+    echo "The API Secret must be provided."
+    usage
+    exit 3
 fi
 
-if [[ -z ${TOPIC} ]]; then
-	echo "The Topic Name must be provided."
-	usage
-	exit 3
+if [ -z "${TOPIC}" ]; then
+    echo "The Topic Name must be provided."
+    usage
+    exit 3
 fi
 
-if [[ -z ${PARTITION_COUNT} ]]; then
-	echo "The Partition Count must be provided."
-	usage
-	exit 4
+if [ -z "${PARTITION_COUNT}" ]; then
+    echo "The Partition Count must be provided."
+    usage
+    exit 4
 fi
 
-if [[ -z ${REPLICATION_COUNT} ]]; then
-	echo "The Replication Count must be provided."
-	usage
-	exit 5
+if [ -z "${REPLICATION_COUNT}" ]; then
+    echo "The Replication Count must be provided."
+    usage
+    exit 5
 fi
 
 REQUEST_API_KEY_BODY=$(< <(cat <<EOF
 {
-	"topicName": "${TOPIC}",
-	"topicDescription": "Generated by PDP-D $(hostname -f)",
-	"partitionCount": ${PARTITION_COUNT},
-	"replicationCount": ${REPLICATION_COUNT}
+    "topicName": "${TOPIC}",
+    "topicDescription": "Generated by PDP-D $(hostname -f)",
+    "partitionCount": ${PARTITION_COUNT},
+    "replicationCount": ${REPLICATION_COUNT}
 }
 EOF
 ))
@@ -122,9 +122,9 @@
 
 unset http_proxy
 curl --silent -X POST \
-	--header "Accept:" \
-	--header "X-CambriaDate: ${DATE}" \
-	--header "X-CambriaAuth: ${API_KEY}:${DATE_HASH}" \
-	--header "Content-Type: application/json" \
-	--data "${REQUEST_API_KEY_BODY}" \
-	http://${BUS_HOST}:${BUS_PORT}/topics/create
+    --header "Accept:" \
+    --header "X-CambriaDate: ${DATE}" \
+    --header "X-CambriaAuth: ${API_KEY}:${DATE_HASH}" \
+    --header "Content-Type: application/json" \
+    --data "${REQUEST_API_KEY_BODY}" \
+    http://${BUS_HOST}:${BUS_PORT}/topics/create
diff --git a/policy-management/src/main/server-gen/bin/db-migrator b/policy-management/src/main/server-gen/bin/db-migrator
index f502946..db82fc3 100644
--- a/policy-management/src/main/server-gen/bin/db-migrator
+++ b/policy-management/src/main/server-gen/bin/db-migrator
@@ -1,4 +1,4 @@
-#!/bin/bash 
+#!/usr/bin/env ash
 
 # ============LICENSE_START=======================================================
 # ONAP
@@ -20,44 +20,43 @@
 
 # #####################################################################
 #
-# Upgrade/Downgrade SQL File Name Format:  
+# Upgrade/Downgrade SQL File Name Format:
 #
-# 	<VERSION>-<pdp|feature-name>[-description](.upgrade|.downgrade).sql
+#     <VERSION>-<pdp|feature-name>[-description](.upgrade|.downgrade).sql
 #
 # This tool operates on a migration working directory at
-# 
-#	$POLICY_HOME/etc/db/migration
 #
-# Upgrade/Downgrade files for each schema (aka database) names to be maintained 
+#    $POLICY_HOME/etc/db/migration
+#
+# Upgrade/Downgrade files for each schema (aka database) names to be maintained
 # by this tool are located at
 #
-#	$POLICY_HOME/etc/db/migration/<schema-name>/sql
+#    $POLICY_HOME/etc/db/migration/<schema-name>/sql
 #
 # The nature of the migration directories is dynamic.
 # Other tooling aware of when migrations are needed are in charge to populate
-# the migrations directory accordingly.   
+# the migrations directory accordingly.
 #
 # One of these tools is the 'features' when a feature with DB requirements
 # is 'enabled', the upgrade scripts will be made present in the migration directory.
 # When a features is 'disabled' downgrade scripts will be made available in the
 # migration directory.
 #
-# The 'policy' tool via its operations 'status' or 'start' will signal the 
+# The 'policy' tool via its operations 'status' or 'start' will signal the
 # need to perform upgrade or downgrade for a given schema.
 #
 # At any given time the following invariant must be preserved in any given
 # $POLICY_HOME/etc/db/migration/<schema-name>/sql directory
 #
-# 	There is only upgrade scripts, or only downgrade scripts, or none.
+#     There is only upgrade scripts, or only downgrade scripts, or none.
 #
 # #####################################################################
 
 source ${POLICY_HOME}/etc/profile.d/env.sh
 
 METADATA_DB=migration
-METADATA_TABLE="${METADATA_DB}".metadata_versions
-MIGRATION_DIR="${POLICY_HOME}"/etc/db/migration
-
+METADATA_TABLE=${METADATA_DB}.metadata_versions
+MIGRATION_DIR=${POLICY_HOME}/etc/db/migration
 ZERO_VERSION="0"
 UPGRADE_SQL_SUFFIX=".upgrade.sql"
 DOWNGRADE_SQL_SUFFIX=".downgrade.sql"
@@ -69,33 +68,33 @@
 #####################################################
 
 function usage() {
-	echo
-	echo -e "syntax: $(basename "$0") "
-	echo -e "\t -s <schema-name> "
-	echo -e "\t [-b <migration-dir>] "
-	echo -e "\t [-f <from-version>]"
-	echo -e "\t [-t <target-version>]"
-	echo -e "\t -o <operations> "
-	echo 
-	echo -e "\t where <operations>=upgrade|downgrade|auto|version|erase|report"
-	echo
-	echo
-	echo -e "Configuration Options:"
-	echo -e "\t -s|--schema|--database:  schema to operate on ('ALL' to apply on all)"		
-	echo -e "\t -b|--basedir: overrides base DB migration directory"
-	echo -e "\t -f|--from: overrides current release version for operations"
-	echo -e "\t -t|--target: overrides target release to upgrade/downgrade"
-	echo
-	echo -e "Operations:"
-	echo -e "\t upgrade: upgrade operation"
-	echo -e "\t downgrade: performs a downgrade operation"
-	echo -e "\t auto: autonomous operation, determines upgrade or downgrade"
-	echo -e "\t version: returns current version, and in conjunction if '-f' sets the current version"
-	echo -e "\t erase: erase all data related <schema> (use with care)"
-	echo -e "\t report: migration detailed report on an schema"
-	echo -e "\t ok: is the migration status valid"
-	echo
-	echo
+    echo
+    echo -e "syntax: $(basename "$0") "
+    echo -e "\t -s <schema-name> "
+    echo -e "\t [-b <migration-dir>] "
+    echo -e "\t [-f <from-version>]"
+    echo -e "\t [-t <target-version>]"
+    echo -e "\t -o <operations> "
+    echo
+    echo -e "\t where <operations>=upgrade|downgrade|auto|version|erase|report"
+    echo
+    echo
+    echo -e "Configuration Options:"
+    echo -e "\t -s|--schema|--database:  schema to operate on ('ALL' to apply on all)"
+    echo -e "\t -b|--basedir: overrides base DB migration directory"
+    echo -e "\t -f|--from: overrides current release version for operations"
+    echo -e "\t -t|--target: overrides target release to upgrade/downgrade"
+    echo
+    echo -e "Operations:"
+    echo -e "\t upgrade: upgrade operation"
+    echo -e "\t downgrade: performs a downgrade operation"
+    echo -e "\t auto: autonomous operation, determines upgrade or downgrade"
+    echo -e "\t version: returns current version, and in conjunction if '-f' sets the current version"
+    echo -e "\t erase: erase all data related <schema> (use with care)"
+    echo -e "\t report: migration detailed report on an schema"
+    echo -e "\t ok: is the migration status valid"
+    echo
+    echo
 }
 
 #####################################################
@@ -104,24 +103,24 @@
 
 function ensure_metadata
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} --"
-		set -x
-	fi
-	
-	local sql rc
-	
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- ensure_metadata --"
+        set -x
+    fi
+
+    local sql rc
+
     sql="CREATE DATABASE IF NOT EXISTS ${METADATA_DB};"
-	${MYSQL} --execute "${sql}"
-	rc=$?
-	if [[ ${rc} != 0 ]]; then
-		return ${rc}
-	fi
-    
+    ${MYSQL} --execute "${sql}"
+    rc=$?
+    if [ ${rc} -ne 0 ]; then
+        return ${rc}
+    fi
+
     sql="CREATE TABLE IF NOT EXISTS ${METADATA_TABLE} "
-    sql+="(name VARCHAR(60) NOT NULL, version VARCHAR(20), PRIMARY KEY(name));"
-	${MYSQL} --execute "${sql}"
-	return $?
+    sql=${sql}"(name VARCHAR(60) NOT NULL, version VARCHAR(20), PRIMARY KEY(name));"
+    ${MYSQL} --execute "${sql}"
+    return $?
 }
 
 
@@ -131,26 +130,26 @@
 
 function ensure_metadata_schema
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} --"
-		set -x
-	fi
-	
-	local sql rc
-	
-	sql="CREATE TABLE IF NOT EXISTS ${METADATA_HISTORY} "
-	sql+="(script VARCHAR(80) NOT NULL, operation VARCHAR(10), success VARCHAR(1), "
-	sql+="atTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, "
-	sql+="PRIMARY KEY(script));"
-	${MYSQL} --execute "${sql}"
-	rc=$?
-	if [[ ${rc} != 0 ]]; then
-		return ${rc}
-	fi
-	
-	sql="CREATE DATABASE IF NOT EXISTS ${SCHEMA_DB};"
-	${MYSQL} --execute "${sql}"
-	return $?
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- ensure_metadata_schema --"
+        set -x
+    fi
+
+    local sql rc
+
+    sql="CREATE TABLE IF NOT EXISTS ${METADATA_HISTORY} "
+    sql=${sql}"(script VARCHAR(80) NOT NULL, operation VARCHAR(10), success VARCHAR(1), "
+    sql=${sql}"atTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, "
+    sql=${sql}"PRIMARY KEY(script));"
+    ${MYSQL} --execute "${sql}"
+    rc=$?
+    if [ ${rc} -ne 0 ]; then
+        return ${rc}
+    fi
+
+    sql="CREATE DATABASE IF NOT EXISTS ${SCHEMA_DB};"
+    ${MYSQL} --execute "${sql}"
+    return $?
 }
 
 
@@ -160,25 +159,25 @@
 
 function target_release
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} --"
-		set -x
-	fi
-	
-	local sql sqlName upgradeSqls downgradeSqls
-	
-	TARGET_UPGRADE_RELEASE=${ZERO_VERSION}
-	TARGET_DOWNGRADE_RELEASE=${ZERO_VERSION}
-	
-	upgradeSqls=$(ls -v -r "${UPGRADE_DIR}"/*"${UPGRADE_SQL_SUFFIX}" 2> /dev/null)
-	for sql in ${upgradeSqls}; do
-		sqlName=$(basename "${sql}")
-		TARGET_UPGRADE_RELEASE="${sqlName%-*}"
-		break
-	done
-	
-	# default unless overriden
-	TARGET_DOWNGRADE_RELEASE="${ZERO_VERSION}"
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- target_release --"
+        set -x
+    fi
+
+    local sql sqlName upgradeSqls downgradeSqls
+
+    TARGET_UPGRADE_RELEASE=${ZERO_VERSION}
+    TARGET_DOWNGRADE_RELEASE=${ZERO_VERSION}
+
+    upgradeSqls=$(ls -v -r "${UPGRADE_DIR}"/*"${UPGRADE_SQL_SUFFIX}" 2> /dev/null)
+    for sql in ${upgradeSqls}; do
+        sqlName=$(basename "${sql}")
+        TARGET_UPGRADE_RELEASE="${sqlName%-*}"
+        break
+    done
+
+    # default unless overriden
+    TARGET_DOWNGRADE_RELEASE="${ZERO_VERSION}"
 }
 
 #####################################################
@@ -187,19 +186,19 @@
 
 function is_upgrade
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} --"
-		set -x
-	fi
-	
-	local upgradeSqls
-	
-	upgradeSqls=$(ls "${UPGRADE_DIR}"/*"${UPGRADE_SQL_SUFFIX}" 2> /dev/null)
-	if [[ -z ${upgradeSqls} ]]; then
-		return 1
-	else
-		return 0
-	fi
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- is_upgrade --"
+        set -x
+    fi
+
+    local upgradeSqls
+
+    upgradeSqls=$(ls "${UPGRADE_DIR}"/*"${UPGRADE_SQL_SUFFIX}" 2> /dev/null)
+    if [ -z ${upgradeSqls} ]; then
+        return 1
+    else
+        return 0
+    fi
 }
 
 
@@ -209,43 +208,19 @@
 
 function is_downgrade
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} --"
-		set -x
-	fi
-	
-	local downgradeSqls
-	
-	downgradeSqls=$(ls "${DOWNGRADE_DIR}"/*"${DOWNGRADE_SQL_SUFFIX}" 2> /dev/null)
-	if [[ -z ${downgradeSqls} ]]; then
-		return 1
-	else
-		return 0
-	fi
-}
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- is_downgrade --"
+        set -x
+    fi
 
+    local downgradeSqls
 
-#####################################################
-# current_release
-#####################################################
-
-function current_release
-{
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} --"
-		set -x
-	fi
-	
-	local rc
-	local query="SELECT version FROM ${METADATA_TABLE} WHERE name='${SCHEMA}'"
-	
-	CURRENT_RELEASE=$(${MYSQL} --skip-column-names --silent --execute "${query}")	
-	if [[ -z ${CURRENT_RELEASE} ]]; then
-		set_current_release "${ZERO_VERSION}"
-		return $?
-	fi
-	
-	return 0
+    downgradeSqls=$(ls "${DOWNGRADE_DIR}"/*"${DOWNGRADE_SQL_SUFFIX}" 2> /dev/null)
+    if [ -z ${downgradeSqls} ]; then
+        return 1
+    else
+        return 0
+    fi
 }
 
 
@@ -255,21 +230,44 @@
 
 function set_current_release
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	CURRENT_RELEASE="${1}"
-	
-	local sql="INSERT INTO ${METADATA_TABLE} (name, version) "
-	sql+="VALUES('${SCHEMA}', '${CURRENT_RELEASE}') "
-	sql+="ON DUPLICATE KEY UPDATE version='${CURRENT_RELEASE}';"
-					
-	${MYSQL} --execute "${sql}"
-	return $?
+        if [ "${DEBUG}" = "y" ]; then
+                echo "-- set_current_release --"
+                set -x
+        fi
+
+        CURRENT_RELEASE="${1}"
+
+        local sql
+        sql="INSERT INTO ${METADATA_TABLE} (name, version) "
+        sql=${sql}"VALUES('${SCHEMA}', '${CURRENT_RELEASE}') "
+        sql=${sql}"ON DUPLICATE KEY UPDATE version='${CURRENT_RELEASE}';"
+
+        ${MYSQL} --execute "${sql}"
+        return $?
 }
 
+#####################################################
+# current_release
+#####################################################
+
+function current_release
+{
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- current_release --"
+        set -x
+    fi
+
+    local rc
+    local query="SELECT version FROM ${METADATA_TABLE} WHERE name='${SCHEMA}'"
+
+    CURRENT_RELEASE=$(${MYSQL} --skip-column-names --silent --execute "${query}")
+    if [ -z "${CURRENT_RELEASE}" ]; then
+        set_current_release "${ZERO_VERSION}"
+        return $?
+    fi
+
+    return 0
+}
 
 #####################################################
 # execute sql script history
@@ -277,18 +275,18 @@
 
 function track_script
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	local script="${1}" operation="${2}" success="${3}"	
-	local sql="INSERT INTO ${METADATA_HISTORY}(script,operation,success,atTime) "
-	sql+="VALUES ('${script}','${operation}','${success}',now()) "
-	sql+="ON DUPLICATE KEY UPDATE operation=values(operation), success=values(success), atTime=values(atTime);"
-				
-	${MYSQL} --execute "${sql}"
-	return $?
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- track_script $* --"
+        set -x
+    fi
+
+    local script="${1}" operation="${2}" success="${3}"
+    local sql="INSERT INTO ${METADATA_HISTORY}(script,operation,success,atTime) "
+    sql=${sql}"VALUES ('${script}','${operation}','${success}',now()) "
+    sql=${sql}"ON DUPLICATE KEY UPDATE operation=values(operation), success=values(success), atTime=values(atTime);"
+
+    ${MYSQL} --execute "${sql}"
+    return $?
 }
 
 
@@ -298,27 +296,27 @@
 
 function run_script
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	local operation="${1}" script="${2}" scriptPath="${3}"
-	
-	echo
-	echo "> ${operation} ${script}"
-	
-	${MYSQL} --verbose < "${scriptPath}"
-	local rc=$?
-	if [[ ${rc} != 0 ]]; then
-		success="0"
-	else
-		success="1"
-	fi
-	
-	track_script "${script}" "${operation}" "${success}"
-	
-	return ${rc}
+    if [ "${DEBUG}" == "y" ]]; then
+        echo "-- run_script $* --"
+        set -x
+    fi
+
+    local operation="${1}" script="${2}" scriptPath="${3}"
+
+    echo
+    echo "> ${operation} ${script}"
+
+    ${MYSQL} --verbose < "${scriptPath}"
+    local rc=$?
+    if [ ${rc} -ne 0 ]; then
+        success="0"
+    else
+        success="1"
+    fi
+
+    track_script "${script}" "${operation}" "${success}"
+
+    return ${rc}
 }
 
 #####################################################
@@ -327,38 +325,38 @@
 
 function upgrade
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} --"
-		set -x
-	fi
-	
-	local sqlName sqlFile schemaVersion upgradeSqls rc
-	
-	${MYSQL} --execute "USE ${SCHEMA_DB}"
-	
-	echo "upgrade: ${CURRENT_RELEASE} -> ${TARGET_UPGRADE_RELEASE}"
-	
-	if [[ ${CURRENT_RELEASE} < ${TARGET_UPGRADE_RELEASE} ]]; then 
-		upgradeSqls=$(ls -v "${UPGRADE_DIR}"/*"${UPGRADE_SQL_SUFFIX}" 2> /dev/null)
-	    for sqlFile in ${upgradeSqls}; do
-	    	sqlName=$(basename "${sqlFile}")
-			schemaVersion="${sqlName%-*}"
-	    	if [ "${schemaVersion}" -gt "${CURRENT_RELEASE}" ] && \
-	    		[ "${schemaVersion}" -le "${TARGET_UPGRADE_RELEASE}" ]; then
-	    		run_script "upgrade" "${sqlName}" "${sqlFile}"
-	    		rc=$?
-				if [[ ${rc} != 0 ]]; then
-	        		echo "${SCHEMA}: upgrade aborted at ${schemaVersion} by script ${sqlName}"
-	        		set_current_release "${schemaVersion}"
-	        		return ${rc}
-	        	fi
-	    	fi
-	    done
-   	
-    	set_current_release "${TARGET_UPGRADE_RELEASE}"
-	fi
-	
-	return 0
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- upgrade --"
+        set -x
+    fi
+
+    local sqlName sqlFile schemaVersion upgradeSqls rc
+
+    ${MYSQL} --execute "USE ${SCHEMA_DB}"
+
+    echo "upgrade: ${CURRENT_RELEASE} -> ${TARGET_UPGRADE_RELEASE}"
+
+    if [ ${CURRENT_RELEASE} \< ${TARGET_UPGRADE_RELEASE} ]; then
+        upgradeSqls=$(ls -v "${UPGRADE_DIR}"/*"${UPGRADE_SQL_SUFFIX}" 2> /dev/null)
+        for sqlFile in ${upgradeSqls}; do
+            sqlName=$(basename "${sqlFile}")
+            schemaVersion="${sqlName%-*}"
+            if [ "${schemaVersion}" -gt "${CURRENT_RELEASE}" ] && \
+                [ ! "${schemaVersion}" -le "${TARGET_UPGRADE_RELEASE}" ]; then
+                run_script "upgrade" "${sqlName}" "${sqlFile}"
+                rc=$?
+                if [ ${rc} -ne 0 ]; then
+                    echo "${SCHEMA}: upgrade aborted at ${schemaVersion} by script ${sqlName}"
+                    set_current_release "${schemaVersion}"
+                    return ${rc}
+                fi
+            fi
+        done
+
+        set_current_release "${TARGET_UPGRADE_RELEASE}"
+    fi
+
+    return 0
 }
 
 #####################################################
@@ -367,38 +365,38 @@
 
 function downgrade
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} --"
-		set -x
-	fi
-	
-	local sqlName sqlFile schemaVersion downgradeSqls rc
-	
-	${MYSQL} --execute "USE ${SCHEMA_DB}"
-	
-	echo "downgrade: ${CURRENT_RELEASE} -> ${TARGET_DOWNGRADE_RELEASE}"
-	
-	if [[ ${CURRENT_RELEASE} > ${TARGET_DOWNGRADE_RELEASE} ]]; then 
-		downgradeSqls=$(ls -v -r "${DOWNGRADE_DIR}"/*"${DOWNGRADE_SQL_SUFFIX}" 2> /dev/null)
-		for sqlFile in ${downgradeSqls}; do
-	    	sqlName=$(basename "${sqlFile}")
-			schemaVersion="${sqlName%-*}"
-	    	if [ "${schemaVersion}" -le "${CURRENT_RELEASE}" ] && \
-	    		[ "${schemaVersion}" -gt "${TARGET_DOWNGRADE_RELEASE}" ]; then
-	        	run_script "downgrade" "${sqlName}" "${sqlFile}"
-	        	rc=$?
-				if [[ ${rc} != 0 ]]; then
-	        		echo "${SCHEMA}: downgrade aborted at ${schemaVersion} by script ${sqlName}"
-	        		set_current_release "${schemaVersion}"
-	        		return ${rc}
-	        	fi
-	    	fi
-	    done
-    	
-    	set_current_release "${TARGET_DOWNGRADE_RELEASE}"
-	fi
-	
-	return 0
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- downgrade --"
+        set -x
+    fi
+
+    local sqlName sqlFile schemaVersion downgradeSqls rc
+
+    ${MYSQL} --execute "USE ${SCHEMA_DB}"
+
+    echo "downgrade: ${CURRENT_RELEASE} -> ${TARGET_DOWNGRADE_RELEASE}"
+
+    if [ ${CURRENT_RELEASE} \> ${TARGET_DOWNGRADE_RELEASE} ]; then
+        downgradeSqls=$(ls -v -r "${DOWNGRADE_DIR}"/*"${DOWNGRADE_SQL_SUFFIX}" 2> /dev/null)
+        for sqlFile in ${downgradeSqls}; do
+            sqlName=$(basename "${sqlFile}")
+            schemaVersion="${sqlName%-*}"
+            if [ "${schemaVersion}" -le "${CURRENT_RELEASE}" ] && \
+                [ "${schemaVersion}" -gt "${TARGET_DOWNGRADE_RELEASE}" ]; then
+                run_script "downgrade" "${sqlName}" "${sqlFile}"
+                rc=$?
+                if [ ${rc} -ne 0 ]; then
+                    echo "${SCHEMA}: downgrade aborted at ${schemaVersion} by script ${sqlName}"
+                    set_current_release "${schemaVersion}"
+                    return ${rc}
+                fi
+            fi
+        done
+
+        set_current_release "${TARGET_DOWNGRADE_RELEASE}"
+    fi
+
+    return 0
 }
 
 #####################################################
@@ -407,19 +405,19 @@
 
 function erase
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} --"
-		set -x
-	fi
-	
-	local updateMetadata="UPDATE ${METADATA_TABLE} SET version='${ZERO_VERSION}';"
-	${MYSQL} --execute "${updateMetadata}"
-	
-	local deleteHistory="DELETE FROM ${METADATA_HISTORY};"
-	${MYSQL} --execute "${deleteHistory}"
-	
-	local dropDB="DROP DATABASE IF EXISTS ${SCHEMA_DB}";
-	${MYSQL} --execute "${dropDB}"
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- erase --"
+        set -x
+    fi
+
+    local updateMetadata="UPDATE ${METADATA_TABLE} SET version='${ZERO_VERSION}';"
+    ${MYSQL} --execute "${updateMetadata}"
+
+    local deleteHistory="DELETE FROM ${METADATA_HISTORY};"
+    ${MYSQL} --execute "${deleteHistory}"
+
+    local dropDB="DROP DATABASE IF EXISTS ${SCHEMA_DB}";
+    ${MYSQL} --execute "${dropDB}"
 }
 
 #####################################################
@@ -428,202 +426,201 @@
 
 function report
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} --"
-		set -x
-	fi
-	
-	local versionSql="SELECT * FROM ${METADATA_TABLE} WHERE name='${SCHEMA}';"
-	${MYSQL} --execute "${versionSql}"
-	
-	local historySql="SELECT * FROM ${METADATA_HISTORY} ORDER BY atTime ASC;"
-	${MYSQL} --execute "${historySql}"
-	
-	okay
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- report --"
+        set -x
+    fi
+
+    local versionSql="SELECT * FROM ${METADATA_TABLE} WHERE name='${SCHEMA}';"
+    ${MYSQL} --execute "${versionSql}"
+
+    local historySql="SELECT * FROM ${METADATA_HISTORY} ORDER BY atTime ASC;"
+    ${MYSQL} --execute "${historySql}"
+
+    okay
 }
 
 function okay
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} --"
-		set -x
-	fi
-	
-	local rc=0
-	if is_upgrade; then
-		if [[ ${CURRENT_RELEASE} == "${TARGET_UPGRADE_RELEASE}" ]]; then
-			echo "${SCHEMA}: OK @ ${CURRENT_RELEASE}"
-		else
-			echo "${SCHEMA}: upgrade available: ${CURRENT_RELEASE} -> ${TARGET_UPGRADE_RELEASE}"
-			rc=1
-		fi
-	else
-		if [[ ${CURRENT_RELEASE} == "${TARGET_DOWNGRADE_RELEASE}" ]]; then
-			echo "${SCHEMA}: OK @ ${CURRENT_RELEASE}"
-		else
-			echo "${SCHEMA}: downgrade available: ${CURRENT_RELEASE} -> ${TARGET_DOWNGRADE_RELEASE}"
-			rc=1
-		fi
-	fi
-	
-	return ${rc}
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- okay --"
+        set -x
+    fi
+
+    local rc=0
+    if is_upgrade; then
+        if [ "${CURRENT_RELEASE}" = "${TARGET_UPGRADE_RELEASE}" ]; then
+            echo "${SCHEMA}: OK @ ${CURRENT_RELEASE}"
+        else
+            echo "${SCHEMA}: upgrade available: ${CURRENT_RELEASE} -> ${TARGET_UPGRADE_RELEASE}"
+            rc=1
+        fi
+    else
+        if [ "${CURRENT_RELEASE}" = "${TARGET_DOWNGRADE_RELEASE}" ]; then
+            echo "${SCHEMA}: OK @ ${CURRENT_RELEASE}"
+        else
+            echo "${SCHEMA}: downgrade available: ${CURRENT_RELEASE} -> ${TARGET_DOWNGRADE_RELEASE}"
+            rc=1
+        fi
+    fi
+
+    return ${rc}
 }
 
 #####################################################
 # MAIN
 #####################################################
 
-if [[ ${DEBUG} == y ]]; then
-	echo "-- $0 $* --"
-	set -x
+if [ "${DEBUG}" = "y" ]; then
+    echo "-- $0 $* --"
+    set -x
 fi
-
-until [[ -z "$1" ]]; do
-	case $1 in
-		-s|--schema|--database)	shift
-								SCHEMA=$1
-								;;
-		-b|--basedir)   shift
-						MIGRATION_DIR=$1		
-						;;
-		-t|--target)    shift
-						INPUT_TARGET_RELEASE=$1		
-						;;
-		-f|--from)      shift
-						INPUT_CURRENT_RELEASE=$1		
-						;;
-		-o|--operation) shift
-						OPERATION=$1		
-						;;
-		*)				usage
-						exit 1
-						;;
-	esac
-	shift
+until [ -z "$1" ]; do
+    case $1 in
+        -s|--schema|--database)    shift
+             SCHEMA=$1
+             ;;
+        -b|--basedir)   shift
+             MIGRATION_DIR=$1
+             ;;
+        -t|--target)    shift
+             INPUT_TARGET_RELEASE=$1
+             ;;
+        -f|--from)      shift
+             INPUT_CURRENT_RELEASE=$1
+             ;;
+        -o|--operation) shift
+             OPERATION=$1
+             ;;
+        *)              usage
+             exit 1
+             ;;
+    esac
+    shift
 done
 
 case ${OPERATION} in
-	upgrade)	;;
-	downgrade)	;;
-	auto)	;;
-	version)	;;
-	erase)		;;
-	report)		;;
-	ok)			;;
-	*)			echo "error: invalid operation provided"
-				usage
-				exit 1
-				;;
+    upgrade)    ;;
+    downgrade)  ;;
+    auto)       ;;
+    version)    ;;
+    erase)      ;;
+    report)     ;;
+    ok)         ;;
+    *)          echo "error: invalid operation provided"
+                usage
+                exit 1
+                ;;
 esac
 
-if [[ -z ${SCHEMA} ]]; then
-	echo "error: a database name must be provided"
-	usage
-	exit 2
+if [ -z "${SCHEMA}" ]; then
+    echo "error: a database name must be provided"
+    usage
+    exit 2
 fi
 
 source "${POLICY_HOME}"/etc/profile.d/env.sh
 
-if [[ -z ${SQL_HOST} ]] || [[ -z ${SQL_USER} ]] || [[ -z ${SQL_PASSWORD} ]]; then
-	echo "error: no database has been set up" 
-	exit 4
+if [ -z "${SQL_HOST}" ] || [ -z "${SQL_USER}" ] || [ -z "${SQL_PASSWORD}" ]; then
+    echo "error: no database has been set up"
+    exit 4
 fi
 
 MYSQL="mysql -u${SQL_USER} -p${SQL_PASSWORD} -h ${SQL_HOST}";
 if ! ${MYSQL} -h"${SQL_HOST}" --execute "show databases;" > /dev/null 2>&1; then
-	echo "error: No DB connectivity to ${SQL_HOST} for ${SQL_USER}"
-	exit 5
+    echo "error: No DB connectivity to ${SQL_HOST} for ${SQL_USER}"
+    exit 5
 fi
 
-if [[ ${SCHEMA} == ALL ]]; then
-	SCHEMA="*"
+if [ "${SCHEMA}" = "ALL" ]; then
+    SCHEMA="*"
 fi
 
 SCHEMA_S=$(ls -d "${MIGRATION_DIR}"/${SCHEMA}/ 2> /dev/null)
-if [[ -z ${SCHEMA_S} ]]; then
-	echo "error: no databases available"
-	exit 0
+if [ -z "${SCHEMA_S}" ]; then
+    echo "error: no databases available"
+    exit 0
 fi
 
 if ! ensure_metadata; then
-	echo "error: migration metadata not accessible"
-	exit 7
+    echo "error: migration metadata not accessible"
+    exit 7
 fi
 
 rc=0
 for dbPath in ${SCHEMA_S}; do
-	SCHEMA=$(basename "${dbPath}")
-	SCHEMA_DB="\`${SCHEMA}\`"
-	UPGRADE_DIR="${MIGRATION_DIR}"/"${SCHEMA}"/sql
-	DOWNGRADE_DIR=${UPGRADE_DIR}
-	METADATA_HISTORY="${METADATA_DB}.\`${SCHEMA}_history\`"
-	TARGET_RELEASE=${INPUT_TARGET_RELEASE}
-	CURRENT_RELEASE=${INPUT_CURRENT_RELEASE}
-	
-	if is_upgrade && is_downgrade; then
-		echo "${SCHEMA}: failure: invalid configuration: ${UPGRADE_SQL_SUFFIX} and "\
-			"${DOWNGRADE_SQL_SUFFIX} exist under ${DOWNGRADE_DIR}"
-		rc=1
-		continue
-	fi
-	
-	if [[ ${operation} == auto ]]; then
-		if is_upgrade; then
-			operation=upgrade
-		else
-			operation=downgrade
-		fi
-	fi
-	
-	if ! ensure_metadata_schema; then
-		echo "${SCHEMA}: failure: metadata not accessible for this schema"
-		continue
-	fi	
-	
-	if [[ -z ${TARGET_RELEASE} ]]; then
-		target_release
-	else
-		# user asked to override
-		TARGET_UPGRADE_RELEASE="${TARGET_RELEASE}"
-		TARGET_DOWNGRADE_RELEASE="${TARGET_RELEASE}"
-	fi
-	
-	if [[ -z ${CURRENT_RELEASE} ]]; then
-		if ! current_release; then
-			echo "${SCHEMA}: failure: cannot obtain current release"
-			continue
-		fi
-	else
-		if ! set_current_release "${CURRENT_RELEASE}"; then
-			echo "${SCHEMA}: failure: cannot set current release"
-			continue
-		fi
-	fi
-	
-	case ${OPERATION} in
-		upgrade) 	if upgrade; then
-						echo "${SCHEMA}: OK: upgrade (${CURRENT_RELEASE})"
-					else
-						rc=1
-						echo "${SCHEMA}: failure: upgrade to release ${TARGET_UPGRADE_RELEASE} (${CURRENT_RELEASE})"
-					fi			
-					;;
-		downgrade)  if downgrade; then
-						echo "${SCHEMA}: OK: downgrade (${CURRENT_RELEASE})"
-					else
-						rc=1
-						echo "${SCHEMA}: failure: downgrade to release ${TARGET_DOWNGRADE_RELEASE} (${CURRENT_RELEASE})"
-					fi					
-					;;
-		version) 	echo "${SCHEMA}: ${CURRENT_RELEASE}"
-					;;
-		erase) 		erase 
-					;;
-		report) 	report
-					;;
-		ok) 		okay
-					;;
-	esac
+    SCHEMA=$(basename "${dbPath}")
+    SCHEMA_DB="\`${SCHEMA}\`"
+    UPGRADE_DIR="${MIGRATION_DIR}"/"${SCHEMA}"/sql
+    DOWNGRADE_DIR=${UPGRADE_DIR}
+    METADATA_HISTORY="${METADATA_DB}.\`${SCHEMA}_history\`"
+    TARGET_RELEASE=${INPUT_TARGET_RELEASE}
+    CURRENT_RELEASE=${INPUT_CURRENT_RELEASE}
+
+    if is_upgrade && is_downgrade; then
+        echo "${SCHEMA}: failure: invalid configuration: ${UPGRADE_SQL_SUFFIX} and "\
+            "${DOWNGRADE_SQL_SUFFIX} exist under ${DOWNGRADE_DIR}"
+        rc=1
+        continue
+    fi
+
+    if [ "${operation}" = "auto" ]; then
+        if is_upgrade; then
+            operation=upgrade
+        else
+            operation=downgrade
+        fi
+    fi
+
+    if ! ensure_metadata_schema; then
+        echo "${SCHEMA}: failure: metadata not accessible for this schema"
+        continue
+    fi
+
+    if [ -z "${TARGET_RELEASE}" ]; then
+        target_release
+    else
+        # user asked to override
+        TARGET_UPGRADE_RELEASE="${TARGET_RELEASE}"
+        TARGET_DOWNGRADE_RELEASE="${TARGET_RELEASE}"
+    fi
+
+    if [ -z "${CURRENT_RELEASE}" ]; then
+        if ! current_release; then
+            echo "${SCHEMA}: failure: cannot obtain current release"
+            continue
+        fi
+    else
+        if ! set_current_release "${CURRENT_RELEASE}"; then
+            echo "${SCHEMA}: failure: cannot set current release"
+            continue
+        fi
+    fi
+
+    case ${OPERATION} in
+        upgrade)     if upgrade; then
+                         echo "${SCHEMA}: OK: upgrade (${CURRENT_RELEASE})"
+                     else
+                         rc=1
+                         echo "${SCHEMA}: failure: upgrade to release ${TARGET_UPGRADE_RELEASE} (${CURRENT_RELEASE})"
+                     fi
+                     ;;
+        downgrade)   if downgrade; then
+                         echo "${SCHEMA}: OK: downgrade (${CURRENT_RELEASE})"
+                     else
+                        rc=1
+                        echo "${SCHEMA}: failure: downgrade to release ${TARGET_DOWNGRADE_RELEASE} (${CURRENT_RELEASE})"
+                     fi
+                     ;;
+        version)     echo "${SCHEMA}: ${CURRENT_RELEASE}"
+                     ;;
+        erase)       erase
+                     ;;
+        report)      report
+                     ;;
+        ok)          okay
+                     ;;
+        esac
 
 done
-exit ${rc}
+exit $rc
diff --git a/policy-management/src/main/server-gen/bin/deploy-artifact b/policy-management/src/main/server-gen/bin/deploy-artifact
index b25aaf9..2ba42fb 100644
--- a/policy-management/src/main/server-gen/bin/deploy-artifact
+++ b/policy-management/src/main/server-gen/bin/deploy-artifact
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/usr/bin/env ash
 
 # ============LICENSE_START=======================================================
 # ONAP
@@ -56,34 +56,35 @@
 
 function init
 {
-    if [[ ${DEBUG} == y ]]; then
-        echo "-- ${FUNCNAME[0]} $* --"
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- init $* --"
         set -x
     fi
 
     local artifact="${1}"
-    if [[ ! -f ${artifact} ]]; then
+    if [ ! -f "${artifact}" ]; then
         echo "${artifact}: artifact does not exist"
         return 1
     fi
 
-    if [[ ${artifact} != *.jar ]]; then
+    if [ "${artifact}" = "${artifact%.jar}" ]; then
         return 0
     fi
 
     local dir=$(mktemp -d)
     local jar="${artifact##*/}"
 
+    CURRENT_DIR=$PWD
     WORKING_DIR=$(realpath "${dir}")
 
     cp -p "${artifact}" "${WORKING_DIR}/${jar}"
-    pushd "${dir}"
+    cd "${WORKING_DIR}"
 
     local rc=0
 
     # determine name of 'pom' file within JAR
     local pom=$(jar tf "${jar}" META-INF | grep '/pom\.xml$' | head -1)
-    if [[ -n ${pom} ]] ; then
+    if [ -n "${pom}" ] ; then
         jar xf "${jar}" "${pom}"
         WORKING_POM=$(realpath "${pom}")
     else
@@ -91,7 +92,7 @@
     fi
 
     local pomProperties=$(jar tf "${jar}" META-INF | grep '/pom\.properties$' | head -1)
-    if [[ -n ${pomProperties} ]]; then
+    if [ -n "${pomProperties}" ]; then
         jar xf "${jar}" "${pomProperties}"
         WORKING_POM_PROPERTIES=$(realpath ${pomProperties})
         sed -i 's/\r$//' "${WORKING_POM_PROPERTIES}"
@@ -99,7 +100,7 @@
         echo "${artifact}: sourcing in ${WORKING_POM_PROPERTIES}"
     else
         echo "${artifact}: pom.properties not found"
-        if [[ -n ${WORKING_POM} ]]; then
+        if [ -n "${WORKING_POM}" ]; then
             if ! getPomAttributes "${WORKING_POM}" artifactId groupId version ; then
                 echo "${WORKING_POM}: cannot extract maven coordinates"
                 rc=1
@@ -109,14 +110,13 @@
             rc=1
         fi
     fi
-
-    if [[ -z ${version} ]] || [[ -z ${groupId} ]] || [[ -z ${artifactId} ]]; then
+    if [ -z "${version}" ] || [ -z "${groupId}" ] || [ -z "${artifactId}" ]; then
         echo "${artifact}: some coordinates cannot be extracted"
         rc=1
     fi
 
     echo "${artifact}: coordinates ${groupId}:${artifactId}:${version}"
-    popd
+    cd ${CURRENT_DIR}
 
     return ${rc}
 }
@@ -129,12 +129,12 @@
 
 function cleanup
 {
-    if [[ ${DEBUG} == y ]]; then
-        echo "-- ${FUNCNAME[0]} $* --"
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- cleanup $* --"
         set -x
     fi
 
-    if [[ -n ${WORKING_DIR} ]]; then
+    if [ -n "${WORKING_DIR}" ]; then
         rm -rf "${WORKING_DIR}"
     fi
 }
@@ -149,18 +149,18 @@
 
 function getPomAttributes
 {
-    if [[ ${DEBUG} == y ]]; then
-        echo "-- ${FUNCNAME[0]} $* --"
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- getPomAttributes $* --"
         set -x
     fi
 
     local file="$1"
-    if [[ ! -f "${file}" ]]; then
+    if [ ! -f "${file}" ]; then
         echo "${file}: file does not exist"
         return 1
     fi
 
-    local tab=$'\t' rval=0 attr value
+    local rval=0 attr value
     shift
 
     for attr in "$@" ; do
@@ -177,10 +177,10 @@
             -e '/<packaging>/,/<\/packaging>/d' \
             -e '/<modelVersion>/,/<\/modelVersion>/d' \
             -e '/<properties>/,/<\/properties>/d' \
-            -e "/^[ ${tab}]*<${attr}>\([^<]*\)<\/${attr}>.*/{s//\1/p;}" \
+            -e "/^[ \t]*<${attr}>\([^<]*\)<\/${attr}>.*/{s//\1/p;}" \
             <"${file}")
 
-        if [[ "${value}" == "" ]]; then
+        if [ -z "${value}" ]; then
             # need to check parent for parameter
             value=$(sed -n \
                 -e '/<dependencies>/,/<\/dependencies>/d' \
@@ -190,10 +190,10 @@
                 -e '/<packaging>/,/<\/packaging>/d' \
                 -e '/<modelVersion>/,/<\/modelVersion>/d' \
                 -e '/<properties>/,/<\/properties>/d' \
-                -e "/^[ ${tab}]*<${attr}>\([^<]*\)<\/${attr}>.*/{s//\1/p;}" \
+                -e "/^[ \t]*<${attr}>\([^<]*\)<\/${attr}>.*/{s//\1/p;}" \
                 <"${file}")
 
-            if [[ "${value}" == "" ]] ; then
+            if [ -z "${value}" ] ; then
                 echo "${file}: Can't determine ${attr}"
                 rval=1
             fi
@@ -201,7 +201,7 @@
 
         # the following sets an environment variable with the name referred
         # to by ${attr}
-        read "${attr}" <<<"${value}"
+        export ${attr}="${value}"
     done
     return ${rval}
 }
@@ -213,16 +213,17 @@
 # extracting the attributes such as proxy host, port, username and password.
 # These proxy attributes are set into the global variable for maven proxy
 # settings to be used as build arguments with maven commands.
+# The http proxy format is: http_proxy="http://username:password@proxy.thing.com:8080"
 ##############################################################################
 
 function setMavenProxyArgs
 {
-    if [[ ${DEBUG} == y ]]; then
-        echo "-- ${FUNCNAME[0]} $* --"
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- setMavenProxyArgs $* --"
         set -x
     fi
 
-    if [[ -z ${http_proxy} ]]; then
+    if [ -z "${http_proxy}" ]; then
         return 0
     fi
 
@@ -232,11 +233,11 @@
     local port="${proxy#*:}"
     MVN_PROXY_SETTINGS="-DproxyHost=${host} -DproxyPort=${port}"
 
-    if [[ "$proxy_creds" == *"@"* ]]; then
+    if echo "$proxy_creds" | egrep -s '@'; then
         local creds="${proxy_creds%%@*}"
         local username="${creds%:*}"
         local password="${creds#*:}"
-        MVN_PROXY_SETTINGS+=" -DproxyUsername=${username} -DproxyPassword=${password}"
+        MVN_PROXY_SETTINGS=${MVN_PROXY_SETTINGS}" -DproxyUsername=${username} -DproxyPassword=${password}"
     fi
 }
 
@@ -249,19 +250,19 @@
 
 function deployJar
 {
-    if [[ ${DEBUG} == y ]]; then
-        echo "-- ${FUNCNAME[0]} $* --"
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- deployJar $* --"
         set -x
     fi
 
     local file="${1}"
 
-    if [[ ! -f ${file} ]]; then
+    if [ ! -f "${file}" ]; then
         return 1
     fi
 
     local repoId repoUrl
-    if [[ "${version}" =~ SNAPSHOT ]] ; then
+    if echo "$version" | egrep -s 'SNAPSHOT'; then
         repoId=${SNAPSHOT_REPOSITORY_ID}
         repoUrl=${SNAPSHOT_REPOSITORY_URL}
     else
@@ -269,7 +270,7 @@
         repoUrl=${RELEASE_REPOSITORY_URL}
     fi
 
-    if [[ -z ${repoUrl} ]] || [[ -z ${repoId} ]]; then
+    if [ -z "${repoUrl}" ] || [ -z "${repoId}" ]; then
         echo "{file}: no repository id/url to deploy jar"
         return 1
     fi
@@ -298,14 +299,14 @@
 
 function deployPom
 {
-    if [[ ${DEBUG} == y ]]; then
-        echo "-- ${FUNCNAME[0]} $* --"
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- deployPom $* --"
         set -x
     fi
 
     local file="${1}"
 
-    if [[ ! -f ${file} ]]; then
+    if [ ! -f "${file}" ]; then
         return 1
     fi
 
@@ -315,7 +316,7 @@
     fi
 
     local repoId repoUrl
-    if [[ "${version}" =~ SNAPSHOT ]] ; then
+    if echo "$version" | egrep -s 'SNAPSHOT'; then
         repoId=${SNAPSHOT_REPOSITORY_ID}
         repoUrl=${SNAPSHOT_REPOSITORY_URL}
     else
@@ -348,18 +349,18 @@
 
 function deployArtifact
 {
-    if [[ ${DEBUG} == y ]]; then
-        echo "-- ${FUNCNAME[0]} $* --"
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- deployArtifact $* --"
         set -x
     fi
 
     local file="${1}"
-    if [[ -z "${file}" ]]; then
+    if [ -z "${file}" ]; then
         echo "${file}: artifact file not provided"
         return 1
     fi
 
-    if [[ ! -f "${file}" ]]; then
+    if [ ! -f "${file}" ]; then
         echo "${file}: artifact file does not exist"
         return 1
     fi
@@ -387,19 +388,19 @@
 
 function installJar
 {
-    if [[ ${DEBUG} == y ]]; then
-        echo "-- ${FUNCNAME[0]} $* --"
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- installJar $* --"
         set -x
     fi
 
     local file="${1}"
 
-    if [[ ! -f ${file} ]]; then
+    if [ ! -f "${file}" ]; then
         return 1
     fi
 
     mvn ${CUSTOM_SETTINGS} ${MVN_PROXY_SETTINGS} \
-    org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install-file -Dfile="${file}"
+    org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install-file -Dfile=${file}
 
     return $?
 }
@@ -412,14 +413,14 @@
 
 function installPom
 {
-    if [[ ${DEBUG} == y ]]; then
-        echo "-- ${FUNCNAME[0]} $* --"
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- installPom $* --"
         set -x
     fi
 
     local file="${1}"
 
-    if [[ ! -f ${file} ]]; then
+    if [ ! -f "${file}" ]; then
         return 1
     fi
 
@@ -440,22 +441,21 @@
 
 function installArtifact
 {
-    if [[ ${DEBUG} == y ]]; then
-        echo "-- ${FUNCNAME[0]} $* --"
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- installArtifact $* --"
         set -x
     fi
 
     local file="${1}"
-    if [[ -z "${file}" ]]; then
+    if [ -z "${file}" ]; then
         echo "${file}: artifact file not provided"
         return 1
     fi
 
-    if [[ ! -f "${file}" ]]; then
+    if [ ! -f "${file}" ]; then
         echo "${file}: artifact file does not exist"
         return 1
     fi
-
     case "${file}" in
         *pom.xml|*.pom)
             installPom "${file}"
@@ -480,18 +480,18 @@
 
 function installDependencies
 {
-    if [[ ${DEBUG} == y ]]; then
-        echo "-- ${FUNCNAME[0]} $* --"
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- installDependencies $* --"
         set -x
     fi
 
     local file="${1}"
 
-    if [[ ! -f ${file} ]]; then
+    if [ ! -f "${file}" ]; then
         return 1
     fi
 
-    if [[ -z ${DEPENDENCY_REPO_URL} ]]; then
+    if [ -z "${DEPENDENCY_REPO_URL}" ]; then
         echo "${file}: no repo url to install dependencies"
         return 1
     fi
@@ -513,7 +513,7 @@
 # MAIN
 ##############################################################################
 
-if [[ ${DEBUG} == y ]]; then
+if [ "${DEBUG}" = "y" ]; then
     echo "-- $0 $* --"
     set -x
 fi
@@ -534,7 +534,7 @@
 
 # process input
 
-until [[ -z "$1" ]]; do
+until [ -z "$1" ]; do
     case $1 in
         -a|--artifact)     shift
                            ARTIFACT_FILE=$1
@@ -555,13 +555,13 @@
     shift
 done
 
-if [[ -z ${ARTIFACT_FILE} ]]; then
+if [ -z "${ARTIFACT_FILE}" ]; then
     echo "No artifact file provided: $*"
     usage
     exit 1
 fi
 
-if [[ -n ${SETTINGS_FILE} ]]; then
+if [ -n "${SETTINGS_FILE}" ]; then
     CUSTOM_SETTINGS="--settings=${SETTINGS_FILE}"
 fi
 
@@ -576,7 +576,7 @@
 
 init "${ARTIFACT_FILE}"
 retval=$?
-if [[ ${retval} != 0 ]]; then
+if [ ${retval} -ne 0 ]; then
     cleanup
     exit ${retval}
 fi
@@ -586,14 +586,14 @@
 # SNAPSHOT_REPOSITORY_URL and RELEASE_REPOSITORY_URL
 # are pre-existing environmental variables (base.conf)
 
-if [[ -n ${SNAPSHOT_REPOSITORY_URL} ]] || [[ -n ${RELEASE_REPOSITORY_URL} ]]; then
+if [ -n "${SNAPSHOT_REPOSITORY_URL}" ] || [ -n "${RELEASE_REPOSITORY_URL}" ]; then
     deployArtifact "${ARTIFACT_FILE}"
     retval=$(( retval + ${?} ))
 fi
 
 # deploy in file repository
 
-if [[ -n ${FILE_REPO_INSTALL} ]]; then
+if [ -n "${FILE_REPO_INSTALL}" ]; then
     FILE_REPO_ID="file-repository"
     FILE_REPO_URL="file:${HOME}/.m2/file-repository"
 
@@ -609,21 +609,21 @@
 
 # install in local repository
 
-if [[ -n ${LOCAL_INSTALL} ]]; then
+if [ -n "${LOCAL_INSTALL}" ]; then
     installArtifact "${ARTIFACT_FILE}"
     retval=$(( retval + ${?} ))
 fi
 
 # install dependencies in local and/or file repositories
 
-if [[ -n ${INSTALL_DEPS} ]]; then
-    if [[ -n ${FILE_REPO_INSTALL} ]]; then
+if [ -n "${INSTALL_DEPS}" ]; then
+    if [ -n "${FILE_REPO_INSTALL}" ]; then
         DEPENDENCY_REPO_URL="${FILE_REPO_URL}"
         installDependencies "${ARTIFACT_FILE}"
         retval=$(( retval + ${?} ))
     fi
 
-    if [[ -n ${LOCAL_INSTALL} ]]; then
+    if [ -n "${LOCAL_INSTALL}" ]; then
         DEPENDENCY_REPO_URL="file:${HOME}/.m2/repository"
         installDependencies "${ARTIFACT_FILE}"
         retval=$(( retval + ${?} ))
diff --git a/policy-management/src/main/server-gen/bin/features b/policy-management/src/main/server-gen/bin/features
index 2646c04..fc1f239 100644
--- a/policy-management/src/main/server-gen/bin/features
+++ b/policy-management/src/main/server-gen/bin/features
@@ -1,17 +1,17 @@
-#!/usr/bin/env bash
+#!/usr/bin/env ash
 
 ###
 # ============LICENSE_START=======================================================
 # ONAP POLICY
 # ================================================================================
-# Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (C) 2017-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # 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.
@@ -115,10 +115,10 @@
 #     in the pdp-d migration directory ($POLICY_HOME/etc/db/migration).
 #  6. cd to the feature 'install' directory an executes (if exists) the 'disable' script to allow for specific
 #     customizations for this feature.
-# 
+#
 # Notes for DB enabled features:
-# 	A. Upgrade/Downgrade SQL File Name Format:  
-# 			<VERSION>-<pdp|feature-name>[-description](.upgrade|.downgrade).sql
+#     A. Upgrade/Downgrade SQL File Name Format:
+#             <VERSION>-<pdp|feature-name>[-description](.upgrade|.downgrade).sql
 #   B. See related tooling: db-migrator, deploy-artifact, and policy
 #
 # Example:
@@ -145,11 +145,11 @@
 #                    L─ feature-healthcheck-1.1.0-SNAPSHOT.jar
 # #############################################################
 
-if [[ ${DEBUG} == y ]]; then
-	echo "-- MAIN --"
-	set -x
+if [ "${DEBUG}" = "y" ]; then
+    echo "-- MAIN --"
+    set -x
 fi
-	
+    
 # The directories at play
 
 LIB=${POLICY_HOME}/lib
@@ -158,21 +158,21 @@
 DB=${POLICY_HOME}/etc/db/migration
 FEATURES=${POLICY_HOME}/features
 
-if [[ ! ( -d "${LIB}" && -x "${LIB}" ) ]]; then
-	echo "error: no ${LIB} directory"
-	exit 1
+if [ ! -d "${LIB}" ]; then
+    echo "error: no ${LIB} directory"
+    exit 1
 fi
 
-if [[ ! ( -d "${CONFIG}" && -x "${CONFIG}" ) ]]; then
-	echo "error: no ${CONFIG} directory"
-	exit 2
+if [ ! -d "${CONFIG}" ]; then
+    echo "error: no ${CONFIG} directory"
+    exit 2
 fi
 
 # ensure that the directory exists
 mkdir -p "${FEATURES}" 2> /dev/null
 
-if [[ ! -d "${DB}" ]]; then
-	mkdir -p "${DB}"
+if [ ! -d "${DB}" ]; then
+    mkdir -p "${DB}"
 fi
 
 # relative per Feature Directory Paths
@@ -197,25 +197,25 @@
 
 # update field lengths, if needed
 for jar in ${featureJars} ; do
-	# get file name without 'jar' suffix
-	tmp="${jar%\.jar}"
+    # get file name without 'jar' suffix
+    tmp="${jar%\.jar}"
 
-	# remove feature prefix
-	tmp="${tmp#feature-}"
-		
-	# get feature name by removing the version portion
-	name="${tmp%%-[0-9]*}"
+    # remove feature prefix
+    tmp="${tmp#feature-}"
+        
+    # get feature name by removing the version portion
+    name="${tmp%%-[0-9]*}"
 
-	# extract version portion of name
-	version="${tmp#${name}-}"
+    # extract version portion of name
+    version="${tmp#${name}-}"
 
-	# grow the size of the name/version field, if needed
-	if (( "${#name}" > nameLength )) ; then
-		nameLength="${#name}"
-	fi
-	if (( "${#version}" > versionLength )) ; then
-		versionLength="${#version}"
-	fi
+    # grow the size of the name/version field, if needed
+    if [ ${#name} -gt $nameLength ] ; then
+        nameLength=${#name}
+    fi
+    if [ ${#version} -gt $versionLength ] ; then
+        versionLength=${#version}
+    fi
 done
 
 # ##########################################################
@@ -238,121 +238,121 @@
 		EOF
 }
 
+
 # ##########################################################
 # status: dump out status information
 # ##########################################################
 function status
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} --"
-		set -x
-	fi
-	
-	local tmp name version status
-	local format="%-${nameLength}s %-${versionLength}s %s\n"
-	
-	printf "${format}" "name" "version" "status"
-	printf "${format}" "----" "-------" "------"
-	
-	for jar in ${featureJars} ; do
-		# get file name without 'jar' suffix
-		tmp="${jar%\.jar}"
-		
-		# remove feature prefix
-		tmp="${tmp#feature-}"
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- status --"
+        set -x
+    fi
+    
+    local tmp name version status
+    local format="%-${nameLength}s %-${versionLength}s %s\n"
+    
+    printf "${format}" "name" "version" "status"
+    printf "${format}" "----" "-------" "------"
+    
+    for jar in ${featureJars} ; do
+        # get file name without 'jar' suffix
+        tmp="${jar%\.jar}"
+        
+        # remove feature prefix
+        tmp="${tmp#feature-}"
 
-		# get feature name by removing the version portion
-		name="${tmp%%-[0-9]*}"
+        # get feature name by removing the version portion
+        name="${tmp%%-[0-9]*}"
 
-		# extract version portion of name
-		version="${tmp#${name}-}"
+        # extract version portion of name
+        version="${tmp#${name}-}"
 
-		# determine status
-		status=disabled
-		if [[ -e "${LIB}/${jar}" ]] ; then
-			status=enabled
-		fi
-		printf "${format}" "${name}" "${version}" "${status}"
-	done
-	echo
+        # determine status
+        status=disabled
+        if [ -e "${LIB}/${jar}" ] ; then
+            status=enabled
+        fi
+        printf "${format}" "${name}" "${version}" "${status}"
+    done
+    echo
 }
 
 # ##########################################################
-# enableDepAnalysis (featureName):  
+# enableDepAnalysis (featureName):
 #                   reports on potential dependency conflicts
 #   featureName: name of the feature
 # ##########################################################
 function enableDepAnalysis ()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	local featureName="$1"
-	local featureDepJars featureDepJarPath depJarName multiVersionJars
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
-	
-	featureDepJars=$(ls "${FEATURES}"/"${featureName}"/"${FEATURE_DEPS}"/*.jar 2> /dev/null)
-	for featureDepJarPath in ${featureDepJars}; do
-		depJarName=$(basename "${featureDepJarPath}")
-		
-		# it could be a base jar
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- enableDepAnalysis $* --"
+        set -x
+    fi
+    
+    local featureName="$1"
+    local featureDepJars featureDepJarPath depJarName multiVersionJars
+    
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+    fi
+    
+    featureDepJars=$(ls "${FEATURES}"/"${featureName}"/"${FEATURE_DEPS}"/*.jar 2> /dev/null)
+    for featureDepJarPath in ${featureDepJars}; do
+        depJarName=$(basename "${featureDepJarPath}")
+        
+        # it could be a base jar
 
-		if [[ -f "${LIB}"/"${depJarName}" ]]; then
-			echo "warning: dependency ${depJarName} already in use"
-			continue
-		fi
-		
-		# it could be a link from another feature
+        if [ -f "${LIB}"/"${depJarName}" ]; then
+            echo "warning: dependency ${depJarName} already in use"
+            continue
+        fi
+        
+        # it could be a link from another feature
 
-		if [[ -L "${LIB}"/"${depJarName}" ]]; then
-			continue
-		fi
-		
-		# unadvisable if multiple versions exist but the base or
-		# installed one wins.
+        if [ -L "${LIB}"/"${depJarName}" ]; then
+            continue
+        fi
+        
+        # unadvisable if multiple versions exist but the base or
+        # installed one wins.
 
-		multiVersionJars=$(ls "${LIB}"/"${depJarName%%-[0-9]*.jar}"-*.jar 2> /dev/null)
-		if [[ -n "${multiVersionJars}" ]]; then
-			echo "warning: other version of library ${depJarName} present: ${multiVersionJars}"
-			continue
-		fi
-	done
+        multiVersionJars=$(ls "${LIB}"/"${depJarName%%-[0-9]*.jar}"-*.jar 2> /dev/null)
+        if [ -n "${multiVersionJars}" ]; then
+            echo "warning: other version of library ${depJarName} present: ${multiVersionJars}"
+            continue
+        fi
+    done
 }
 
 # ##########################################################
-# enableConfigAnalysis (featureName):  
+# enableConfigAnalysis (featureName):
 #                   reports on potential dependency conflicts
 #   featureName: name of the feature
 # ##########################################################
 function enableConfigAnalysis ()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	local featureName="$1"
-	local featureConfigs configPath configFileName
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
-	
-	featureConfigs=$(ls "${FEATURES}"/"${featureName}"/"${FEATURE_CONFIG}"/ 2> /dev/null)
-	for configPath in ${featureConfigs}; do
-		configFileName=$(basename "${configPath}")
-		if [[ -e "${CONFIG}"/"${configFileName}" ]]; then
-			echo "error: a config file of the same name is already in the base installation: ${configFileName}"
-			return 2
-		fi
-	done
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- enableConfigAnalysis $* --"
+        set -x
+    fi
+    
+    local featureName="$1"
+    local featureConfigs configPath configFileName
+    
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
+    
+    featureConfigs=$(ls "${FEATURES}"/"${featureName}"/"${FEATURE_CONFIG}"/ 2> /dev/null)
+    for configPath in ${featureConfigs}; do
+        configFileName=$(basename "${configPath}")
+        if [ -e "${CONFIG}"/"${configFileName}" ]; then
+            echo "error: a config file of the same name is already in the base installation: ${configFileName}"
+            return 2
+        fi
+    done
 }
 
 # ##########################################################
@@ -362,232 +362,230 @@
 # ##########################################################
 function enableBinAnalysis ()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- enableBinAnalysis $* --"
+        set -x
+    fi
 
-	local featureName="$1"
-	local featureBins binPath binFileName
+    local featureName="$1"
+    local featureBins binPath binFileName
 
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
 
-	featureBins=$(ls "${FEATURES}"/"${featureName}"/"${FEATURE_BIN}"/ 2> /dev/null)
-	for binPath in ${featureBins}; do
-		binFileName=$(basename "${binPath}")
-		if [[ -e "${CONFIG}"/"${binFileName}" ]]; then
-			echo "error: a bin file of the same name is already in the base installation: ${binFileName}"
-			return 2
-		fi
-	done
+    featureBins=$(ls "${FEATURES}"/"${featureName}"/"${FEATURE_BIN}"/ 2> /dev/null)
+    for binPath in ${featureBins}; do
+        binFileName=$(basename "${binPath}")
+        if [ -e "${CONFIG}"/"${binFileName}" ]; then
+            echo "error: a bin file of the same name is already in the base installation: ${binFileName}"
+            return 2
+        fi
+    done
 }
 
 # ##########################################################
-# enableDbAnalysis (featureName):  
+# enableDbAnalysis (featureName):
 #                   reports on potential db access problems
 #   featureName: name of the feature
 # ##########################################################
 function enableDbAnalysis()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	local featureName="$1"
-	local featureSqls
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
-	
-	featureSqls=$(ls "${FEATURES}"/"${featureName}"/"${FEATURE_DB}"/*/${FEATURE_SQL}/*${UPGRADE_SQL_SUFFIX} 2> /dev/null)
-	if [[ -z ${featureSqls} ]]; then
-		return 0
-	fi
-	
-	source "${POLICY_HOME}"/etc/profile.d/env.sh
-	if [[ -z ${SQL_HOST} ]] || [[ -z ${SQL_USER} ]] || [[ -z ${SQL_PASSWORD} ]]; then
-		echo "warning: DB server is not configured"
-	fi
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- enableDbAnalysis $* --"
+        set -x
+    fi
+    
+    local featureName="$1"
+    local featureSqls
+    
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
+    
+    featureSqls=$(ls "${FEATURES}"/"${featureName}"/"${FEATURE_DB}"/*/${FEATURE_SQL}/*${UPGRADE_SQL_SUFFIX} 2> /dev/null)
+    if [ -z "${featureSqls}" ]; then
+        return 0
+    fi
+    
+    source "${POLICY_HOME}"/etc/profile.d/env.sh
+    if [ -z "${SQL_HOST}" ] || [ -z "${SQL_USER}" ] || [ -z "${SQL_PASSWORD}" ]; then
+        echo "warning: DB server is not configured"
+    fi
 
-	return 0
+    return 0
 }
 
 # ##########################################################
-# enableFeatureDeps(featureName):  
+# enableFeatureDeps(featureName):
 #                               enables feature dependencies
 #   featureName: name of the feature
 # ##########################################################
 function enableFeatureDeps()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	local featureName="$1"
-	local featureDeps featureDepPath depJarName
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
-	
-	featureDeps=$(ls "${FEATURES}"/"${featureName}"/"${FEATURE_DEPS}"/*.jar 2> /dev/null)
-	for featureDepPath in ${featureDeps}; do
-		depJarName=$(basename "${featureDepPath}")
-		if [[ ! -f "${LIB}"/"${depJarName}" ]]; then
-			ln -s -f "${featureDepPath}" "${LIB}/"
-		fi
-	done
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- enableFeatureDeps $* --"
+        set -x
+    fi
+    
+    local featureName="$1"
+    local featureDeps featureDepPath depJarName
+    
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
+    
+    featureDeps=$(ls "${FEATURES}"/"${featureName}"/"${FEATURE_DEPS}"/*.jar 2> /dev/null)
+    for featureDepPath in ${featureDeps}; do
+        depJarName=$(basename "${featureDepPath}")
+        if [ ! -f "${LIB}"/"${depJarName}" ]; then
+            ln -s -f "${featureDepPath}" "${LIB}/"
+        fi
+    done
 }
 
 # ##########################################################
-# enableFeatureConfig(featureName):  
+# enableFeatureConfig(featureName):
 #                               enables feature configuration
 #   featureName: name of the feature
 # ##########################################################
 function enableFeatureConfig()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	local featureName="$1"
-	local featureConfigs featureConfigPath
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
-	
-	featureConfigs=$(find "${FEATURES}"/"${featureName}"/"${FEATURE_CONFIG}"/ -type f -maxdepth 1 2> /dev/null)
-	for featureConfigPath in ${featureConfigs}; do
-		ln -s -f "${featureConfigPath}" "${CONFIG}/"
-	done
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- enableFeatureConfig $* --"
+        set -x
+    fi
+    
+    local featureName="$1"
+    local featureConfigs featureConfigPath
+    
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
+    
+    featureConfigs=$(find "${FEATURES}"/"${featureName}"/"${FEATURE_CONFIG}"/ -type f -maxdepth 1 2> /dev/null)
+    for featureConfigPath in ${featureConfigs}; do
+        ln -s -f "${featureConfigPath}" "${CONFIG}/"
+    done
 }
 
 # ##########################################################
-# enableFeatureBin(featureName):
-#                               enables feature binaries
+# enableFeatureBin(featureName): enables feature binaries
 #   featureName: name of the feature
 # ##########################################################
 function enableFeatureBin()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- enableFeatureBin $* --"
+        set -x
+    fi
 
-	local featureName="$1"
-	local featureBins featureBinPath
+    local featureName="$1"
+    local featureBins featureBinPath
 
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
 
-	featureBins=$(find "${FEATURES}"/"${featureName}"/"${FEATURE_BIN}"/ -type f -maxdepth 1 2> /dev/null)
-	for featureBinPath in ${featureBins}; do
-		chmod u+x "${featureBinPath}"
-		ln -s -f "${featureBinPath}" "${BIN}/"
-	done
+    featureBins=$(find "${FEATURES}"/"${featureName}"/"${FEATURE_BIN}"/ -type f -maxdepth 1 2> /dev/null)
+    for featureBinPath in ${featureBins}; do
+        chmod u+x "${featureBinPath}"
+        ln -s -f "${featureBinPath}" "${BIN}/"
+    done
 }
 
 # ##########################################################
-# enableFeatureDbSchema(featureName):  
+# enableFeatureDbSchema(featureName):
 #        enables feature DB Schema configuration
 #   featureName: name of the feature
 # ##########################################################
 function enableFeatureDbSchema()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	local featureName="$1"
-	local featureDbPath="$2"
-	local schemaName="$3"
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
-	
-	if [[ -z ${featureDbPath} ]]; then
-		echo "warning: ${featureName} contains no DB path"
-		return 2
-	fi
-	
-	if [[ -z ${schemaName} ]]; then
-		echo "warning: feature ${featureName} contains no schema name"
-		return 3
-	fi
-	
-	rc=0
-	sqlUpgradeScripts=$(ls "${featureDbPath%/}"/${FEATURE_SQL}/*${UPGRADE_SQL_SUFFIX} 2> /dev/null)
-	for sqlUpgradeScript in ${sqlUpgradeScripts}; do
-		if [[ ! -d "${DB}"/"${schemaName}"/${FEATURE_SQL} ]]; then
-			mkdir -p "${DB}"/"${schemaName}"/${FEATURE_SQL} 2> /dev/null
-		fi		
-		ln -s -f "${sqlUpgradeScript}" "${DB}"/"${schemaName}"/${FEATURE_SQL}/
-	done
-	
-	sqlDowngradeScripts=$(ls "${featureDbPath%/}"/${FEATURE_SQL}/*${DOWNGRADE_SQL_SUFFIX} 2> /dev/null)
-	for sqlDowngradeScript in ${sqlDowngradeScripts}; do
-		if [[ -d "${DB}"/"${schemaName}"/${FEATURE_SQL} ]]; then
-			sqlName=$(basename "${sqlDowngradeScript}")
-			rm -f "${DB}"/"${schemaName}"/"${FEATURE_SQL}"/"${sqlName}" 2> /dev/null
-		else
-			echo "warning: feature ${featureName} only contains downgrade scripts"
-			rc=4
-			break
-		fi
-	done
-	
-	if [[ -n ${sqlUpgradeScripts} || -n ${sqlDowngradeScripts} ]]; then
-		DEBUG=${DEBUG} db-migrator -s "${schemaName}" -o ok
-	fi
-	
-	return ${rc}
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- enableFeatureDbSchema $* --"
+        set -x
+    fi
+    
+    local featureName="$1"
+    local featureDbPath="$2"
+    local schemaName="$3"
+
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
+    
+    if [ -z "${featureDbPath}" ]; then
+        echo "warning: ${featureName} contains no DB path"
+        return 2
+    fi
+    
+    if [ -z "${schemaName}" ]; then
+        echo "warning: feature ${featureName} contains no schema name"
+        return 3
+    fi
+    
+    rc=0
+    sqlUpgradeScripts=$(ls "${featureDbPath%/}"/${FEATURE_SQL}/*${UPGRADE_SQL_SUFFIX} 2> /dev/null)
+    for sqlUpgradeScript in ${sqlUpgradeScripts}; do
+        if [ ! -d "${DB}"/"${schemaName}"/${FEATURE_SQL} ]; then
+            mkdir -p "${DB}"/"${schemaName}"/${FEATURE_SQL} 2> /dev/null
+        fi        
+        ln -s -f "${sqlUpgradeScript}" "${DB}"/"${schemaName}"/${FEATURE_SQL}/
+    done
+    
+    sqlDowngradeScripts=$(ls "${featureDbPath%/}"/${FEATURE_SQL}/*${DOWNGRADE_SQL_SUFFIX} 2> /dev/null)
+    for sqlDowngradeScript in ${sqlDowngradeScripts}; do
+        if [ -d "${DB}"/"${schemaName}"/${FEATURE_SQL} ]; then
+            sqlName=$(basename "${sqlDowngradeScript}")
+            rm -f "${DB}"/"${schemaName}"/"${FEATURE_SQL}"/"${sqlName}" 2> /dev/null
+        else
+            echo "warning: feature ${featureName} only contains downgrade scripts"
+            rc=4
+            break
+        fi
+    done
+    
+    if [ -n "${sqlUpgradeScripts}" ] || [ -n "${sqlDowngradeScripts}" ]; then
+        DEBUG=${DEBUG} db-migrator -s "${schemaName}" -o ok
+    fi
+    
+    return ${rc}
 }
 
 # ##########################################################
-# enableFeatureDb(featureName):  
+# enableFeatureDb(featureName):
 #       enables DB feature configuration
 #   featureName: name of the feature
 # ##########################################################
 function enableFeatureDb()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	local featureName="$1"
-	local featureDbs featureDbPath schemaName sqls
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
-	
-	featureDbs=$(ls -d "${FEATURES}"/"${featureName}"/"${FEATURE_DB}"/*/ 2> /dev/null)
-	for featureDbPath in ${featureDbs}; do
-		sqls=$(ls "${featureDbPath%/}"/"${FEATURE_SQL}"/*.sql 2> /dev/null)
-		if [[ -z ${sqls} ]]; then
-			continue
-		fi
-		schemaName=$(basename "${featureDbPath%/}")
-		enableFeatureDbSchema "${featureName}" "${featureDbPath%/}" "${schemaName}"
-	done
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- enableFeatureDb $* --"
+        set -x
+    fi
+    
+    local featureName="$1" 
+    local featureDbs featureDbPath schemaName sqls 
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
+    
+    featureDbs=$(ls -d "${FEATURES}"/"${featureName}"/"${FEATURE_DB}"/*/ 2> /dev/null)
+    for featureDbPath in ${featureDbs}; do
+        sqls=$(ls "${featureDbPath%/}"/"${FEATURE_SQL}"/*.sql 2> /dev/null)
+        if [ -z "${sqls}" ]; then
+            continue
+        fi
+        schemaName=$(basename "${featureDbPath%/}")
+        enableFeatureDbSchema "${featureName}" "${featureDbPath%/}" "${schemaName}"
+    done
 }
 
 # ##########################################################
@@ -597,61 +595,59 @@
 # ##########################################################
 function enableFeatureArtifacts()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- enableFeatureArtifacts $* --"
+        set -x
+    fi
 
-	local featureName="$1"
-	local artifacts
+    local featureName="$1"
+    local artifacts
 
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
 
-	artifacts=$(ls "${FEATURES}"/"${featureName}"/"${FEATURE_ARTIFACTS}"/* 2> /dev/null)
-	for artifactPath in ${artifacts}; do
-	    deploy-artifact -l -a "${artifactPath}"
-	done
+    artifacts=$(ls "${FEATURES}"/"${featureName}"/"${FEATURE_ARTIFACTS}"/* 2> /dev/null)
+    for artifactPath in ${artifacts}; do
+        deploy-artifact -l -a "${artifactPath}"
+    done
 }
 
 # ##########################################################
-# customize(featureName): 
-#	executes customized script for an operation.
+# customize(featureName):
+#    executes customized script for an operation.
 #
 # featureName - feature name
-# operation - operation, ie. 
+# operation - operation, ie.
 #  'enable', 'disable', 'install', or 'uninstall'
 # ##########################################################
 function customOpScript()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	local featureName="$1"
-	local operation="$2"
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
-	
-	if [[ -z ${operation} ]]; then
-		echo "warning: ${featureName} : a custom operation script must be provided"
-		return 1
-	fi
-	
-	local customScript="${FEATURES}"/"${featureName}"/"${FEATURE_INSTALL}"/"${operation}"
-	if [[ -f ${customScript} ]]; then
-		(
-			cd "${FEATURES}"/"${featureName}"/"${FEATURE_INSTALL}"
-			chmod u+x "${customScript}"
-			./"$(basename "${customScript}")"
-		)
-	fi
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- customOpScript $* --"
+        set -x
+    fi
+    
+    local featureName="$1"
+    local operation="$2"
+    
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
+    
+    if [ -z "${operation}" ]; then
+        echo "warning: ${featureName} : a custom operation script must be provided"
+        return 1
+    fi
+    
+    local customScript="${FEATURES}"/"${featureName}"/"${FEATURE_INSTALL}"/"${operation}"
+    if [ -f "${customScript}" ]; then
+            cd "${FEATURES}"/"${featureName}"/"${FEATURE_INSTALL}"
+            chmod u+x "${customScript}"
+            ./"$(basename "${customScript}")"
+    fi
 }
 
 # ##########################################################
@@ -661,157 +657,158 @@
 # ##########################################################
 function enableFeature()
 {
-	if [[ $DEBUG == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	local featureName="$1"
-	local featureJar="$2"
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
-	
-	if [[ -z ${featureJar} ]]; then
-		echo "warning: no feature jar"
-		return 2
-	fi
-	
-	if ! enableDepAnalysis  "${featureName}"; then
-		return "$?"
-	fi
-	
-	if ! enableConfigAnalysis  "${featureName}"; then
-		return "$?"
-	fi
-	
-	if ! enableBinAnalysis  "${featureName}"; then
-		return "$?"
-	fi
+    if [ "$DEBUG" = "y" ]; then
+        echo "-- enableFeature $* --"
+        set -x
+    fi
+    
+    local featureName="$1"
+    local featureJar="$2"
+    
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
+    
+    if [ -z "${featureJar}" ]; then
+        echo "warning: no feature jar"
+        return 2
+    fi
+    
+    if ! enableDepAnalysis  "${featureName}"; then
+        return "$?"
+    fi
+    
+    if ! enableConfigAnalysis  "${featureName}"; then
+        return "$?"
+    fi
+    
+    if ! enableBinAnalysis  "${featureName}"; then
+        return "$?"
+    fi
 
-	if ! enableDbAnalysis "${featureName}"; then
-		return "$?"
-	fi
-	
-	# enable feature itself
+    if ! enableDbAnalysis "${featureName}"; then
+        return "$?"
+    fi
+    
+    # enable feature itself
 
-	ln -s -f "${featureJar}" "${LIB}/"
-		
-	# enable dependent libraries if any
-	
-	enableFeatureDeps "${featureName}"
-	
-	# enable configuration
+    ln -s -f "${featureJar}" "${LIB}/"
+        
+    # enable dependent libraries if any
+    
+    enableFeatureDeps "${featureName}"
+    
+    # enable configuration
 
-	enableFeatureConfig "${featureName}" 
-	
-	# enable binaries
+    enableFeatureConfig "${featureName}"
 
-	enableFeatureBin "${featureName}"
+    # enable binaries
 
-	# enable db
+    enableFeatureBin "${featureName}"
 
-	enableFeatureDb "${featureName}"
+    # enable db
 
-	# enable feature artifacts
+    enableFeatureDb "${featureName}"
 
-	enableFeatureArtifacts "${featureName}"
+    # enable feature artifacts
 
-	# run custom enable if any
+    enableFeatureArtifacts "${featureName}"
 
-	customOpScript "${featureName}" "enable"
+    # run custom enable if any
+
+    customOpScript "${featureName}" "enable"
 }
 
 # ##########################################################
-# disableFeatureDeps(featureName):  
-#			disables feature dependencies
+# disableFeatureDeps(featureName):
+#            disables feature dependencies
 # ##########################################################
 function disableFeatureDeps()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	local featureName="$1"
-	local xDepsEnabledMap featureBaseDirs aFeatureDir aFeatureName
-	local featureDeps aFeatureDep 
-	local depJarPath depJarName depJarRealPath
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
-	
-	declare -A xDepsEnabledMap
-	
-	featureBaseDirs=$(ls -d "${FEATURES}"/*/ 2> /dev/null)
-	for aFeatureDir in ${featureBaseDirs}; do 
-		aFeatureName=$(basename "${aFeatureDir}")
-		if [[ "${aFeatureName}" == "${featureName}" ]]; then
-			continue
-		fi
-		
-		depJarPaths=$(ls "${aFeatureDir}"/"${FEATURE_DEPS}"/*.jar 2> /dev/null)
-		for depJarPath in ${depJarPaths}; do
-			if [[ "$?" == 0 ]] ; then
-				depJarName=$(basename "${depJarPath}")
-				xDepsEnabledMap[${depJarName}]="${depJarPath}"
-			fi
-		done
-	done
-	
-	if [[ ${DEBUG} == y ]]; then
-		echo "${!xDepsEnabledMap[@]}"
-		echo "${xDepsEnabledMap[@]}"
-	fi
-	
-	featureDeps=$(ls "${FEATURES}"/"${featureName}"/"${FEATURE_DEPS}"/*.jar 2> /dev/null)
-	for aFeatureDep in ${featureDeps}; do
-		depJarName=$(basename "${aFeatureDep}")
-		if [[ -L "${LIB}"/"${depJarName}" ]]; then
-			depJarRealPath=$(readlink -f "${LIB}"/"${depJarName}")
-			if [[ "${depJarRealPath}" == "${aFeatureDep}" ]]; then
-				rm -f "${LIB}"/"${depJarName}"
-				
-				# case there were multiple features using this library
-				# re-enable link fron an enabled feature
-		
-				if [[ -n ${xDepsEnabledMap[${depJarName}]} ]]; then
-					ln -s -f "${xDepsEnabledMap[${depJarName}]}" "${LIB}/"
-				fi
-			fi
-		fi		
-	done
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- disableFeatureDeps $* --"
+        set -x
+    fi
+    
+    local featureName="$1"
+    local aDepsEnabledMap xDepsEnabledMap featureBaseDirs aFeatureDir aFeatureName
+    local featureDeps aFeatureDep
+    local depJarPath depJarName depJarRealPath
+
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
+    
+    featureBaseDirs=$(ls -d "${FEATURES}"/*/ 2> /dev/null)
+    for aFeatureDir in ${featureBaseDirs}; do
+        aFeatureName=$(basename "${aFeatureDir}")
+        if [ "${aFeatureName}" = "${featureName}" ]; then
+            continue
+        fi
+        
+        depJarPaths=$(ls "${aFeatureDir}"/"${FEATURE_DEPS}"/*.jar 2> /dev/null)
+        for depJarPath in ${depJarPaths}; do
+            if [ "$?" = "0" ] ; then
+                depJarName=$(basename "${depJarPath}")
+                xDepsEnabledMap="${xDepsEnabledMap} ${depJarPath}"
+            fi
+        done
+    done
+
+    if [ "${DEBUG}" = "y" ]; then
+        echo "${xDepsEnabledMap}"
+    fi
+    
+    featureDeps=$(ls "${FEATURES}"/"${featureName}"/"${FEATURE_DEPS}"/*.jar 2> /dev/null)
+    for aFeatureDep in ${featureDeps}; do
+        depJarName=$(basename "${aFeatureDep}")
+        #
+        # check if defJarName is a sym-link
+        #  
+        if [ -L "${LIB}"/"${depJarName}" ]; then
+            depJarRealPath=$(readlink -f "${LIB}"/"${depJarName}")
+            if [ "${depJarRealPath}" = "${aFeatureDep}" ]; then
+                rm -f "${LIB}"/"${depJarName}"
+                
+                # case there were multiple features using this library
+                # re-enable link fron an enabled feature
+                for aDepsEnabledMap in ${xDepsEnabledMap}; do
+                   if [ $(basename "${aDepsEnabledMap}") = ${depJarName} ]; then
+                      ln -s -f "${aDepsEnabledMap}" "${LIB}/"
+                   fi
+                done                 
+            fi
+        fi        
+    done
 }
 
 # ##########################################################
-# disableFeatureConfig(featureName):  
+# disableFeatureConfig(featureName):
 #                               disables feature configuration
 #   featureName: name of the feature
 # ##########################################################
 function disableFeatureConfig()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	local featureName="$1"
-	local featureConfigs featureConfigPath
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
-	
-	featureConfigs=$(find "${FEATURES}"/"${featureName}"/"${FEATURE_CONFIG}"/ -type f -maxdepth 1 2> /dev/null)
-	for featureConfigPath in ${featureConfigs}; do
-		configFileName=$(basename "${featureConfigPath}")
-		rm -f "${CONFIG}"/"${configFileName}" 2> /dev/null
-	done
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- disableFeatureConfig $* --"
+        set -x
+    fi
+    
+    local featureName="$1"
+    local featureConfigs featureConfigPath
+    
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
+    
+    featureConfigs=$(find "${FEATURES}"/"${featureName}"/"${FEATURE_CONFIG}"/ -type f -maxdepth 1 2> /dev/null)
+    for featureConfigPath in ${featureConfigs}; do
+        configFileName=$(basename "${featureConfigPath}")
+        rm -f "${CONFIG}"/"${configFileName}" 2> /dev/null
+    done
 }
 
 # ##########################################################
@@ -821,116 +818,115 @@
 # ##########################################################
 function disableFeatureBin()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- disableFeatureBin $* --"
+        set -x
+    fi
 
-	local featureName="$1"
-	local featureBins featureBinPath
+    local featureName="$1"
+    local featureBins featureBinPath
 
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
 
-	featureBins=$(find "${FEATURES}"/"${featureName}"/"${FEATURE_BIN}"/ -type f -maxdepth 1 2> /dev/null)
-	for featureBinPath in ${featureBins}; do
-		binFileName=$(basename "${featureBinPath}")
-		rm -f "${BIN}"/"${binFileName}" 2> /dev/null
-	done
+    featureBins=$(find "${FEATURES}"/"${featureName}"/"${FEATURE_BIN}"/ -type f -maxdepth 1 2> /dev/null)
+    for featureBinPath in ${featureBins}; do
+        binFileName=$(basename "${featureBinPath}")
+        rm -f "${BIN}"/"${binFileName}" 2> /dev/null
+    done
 }
 
 # ##########################################################
-# disableFeatureDbSchema(featureName, featureDbPath, schemaName):  
-# 				disables feature db configuration for a schema
+# disableFeatureDbSchema(featureName, featureDbPath, schemaName):
+#                 disables feature db configuration for a schema
 #   featureName: name of the feature
 # ##########################################################
 function disableFeatureDbSchema()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	local featureName="$1" featureDbPath="$2" schemaName="$3"
-	local upgradeFeatureSqls downgradeFeatureSqls featureSql sqlDir sqlName schemaDir schemaName
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
-	
-	if [[ -z ${featureDbPath} ]]; then
-		echo "warning: ${featureName} contains no DB path"
-		return 2
-	fi
-	
-	if [[ -z ${schemaName} ]]; then
-		echo "warning: feature ${featureName} contains no schema name"
-		return 3
-	fi
-	
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
-	
-	upgradeFeatureSqls=$(find "${FEATURES}"/"${featureName}"/"${FEATURE_DB}"/"${schemaName}"/"${FEATURE_SQL}"/*"${UPGRADE_SQL_SUFFIX}" -type f -maxdepth 1 2> /dev/null)
-	for featureSql in ${upgradeFeatureSqls}; do
-		sqlName=$(basename "${featureSql}")
-		sqlDir=$(dirname "${featureSql}")
-		schemaDir=$(dirname "${sqlDir}")
-		schemaName=$(basename "${schemaDir}")
-		rm -f "${DB}"/"${schemaName}"/"${FEATURE_SQL}"/"${sqlName}" 2> /dev/null
-	done
-	
-	downgradeFeatureSqls=$(find "${FEATURES}"/"${featureName}"/"${FEATURE_DB}"/"${schemaName}"/"${FEATURE_SQL}"/*"${DOWNGRADE_SQL_SUFFIX}" -type f -maxdepth 1 2> /dev/null)
-	for featureSql in ${downgradeFeatureSqls}; do
-		sqlName=$(basename "${featureSql}")
-		sqlDir=$(dirname "${featureSql}")
-		schemaDir=$(dirname "${sqlDir}")
-		schemaName=$(basename "${schemaDir}")
-		if [[ ! -d "${DB}"/"${schemaName}"/${FEATURE_SQL} ]]; then
-			mkdir -p "${DB}"/"${schemaName}"/${FEATURE_SQL} 2> /dev/null
-		fi		
-		ln -s -f "${featureSql}" "${DB}"/"${schemaName}"/${FEATURE_SQL}/
-	done
-	
-	if [[ -n ${sqlUpgradeScripts} || -n ${sqlDowngradeScripts} ]]; then
-		DEBUG=${DEBUG} db-migrator -s "${schemaName}" -o ok
-	fi
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- disableFeatureDbSchema $* --"
+        set -x
+    fi
+    
+    local featureName="$1" featureDbPath="$2" schemaName="$3"
+    local upgradeFeatureSqls downgradeFeatureSqls featureSql sqlDir sqlName schemaDir schemaName
+    
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
+    
+    if [ -z "${featureDbPath}" ]; then
+        echo "warning: ${featureName} contains no DB path"
+        return 2
+    fi
+    
+    if [ -z "${schemaName}" ]; then
+        echo "warning: feature ${featureName} contains no schema name"
+        return 3
+    fi
+    
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
+    
+    upgradeFeatureSqls=$(find "${FEATURES}"/"${featureName}"/"${FEATURE_DB}"/"${schemaName}"/"${FEATURE_SQL}"/*"${UPGRADE_SQL_SUFFIX}" -type f -maxdepth 1 2> /dev/null)
+    for featureSql in ${upgradeFeatureSqls}; do
+        sqlName=$(basename "${featureSql}")
+        sqlDir=$(dirname "${featureSql}")
+        schemaDir=$(dirname "${sqlDir}")
+        schemaName=$(basename "${schemaDir}")
+        rm -f "${DB}"/"${schemaName}"/"${FEATURE_SQL}"/"${sqlName}" 2> /dev/null
+    done
+    
+    downgradeFeatureSqls=$(find "${FEATURES}"/"${featureName}"/"${FEATURE_DB}"/"${schemaName}"/"${FEATURE_SQL}"/*"${DOWNGRADE_SQL_SUFFIX}" -type f -maxdepth 1 2> /dev/null)
+    for featureSql in ${downgradeFeatureSqls}; do
+        sqlName=$(basename "${featureSql}")
+        sqlDir=$(dirname "${featureSql}")
+        schemaDir=$(dirname "${sqlDir}")
+        schemaName=$(basename "${schemaDir}")
+        if [ ! -d "${DB}"/"${schemaName}"/${FEATURE_SQL} ]; then
+            mkdir -p "${DB}"/"${schemaName}"/${FEATURE_SQL} 2> /dev/null
+        fi        
+        ln -s -f "${featureSql}" "${DB}"/"${schemaName}"/${FEATURE_SQL}/
+    done
+    
+    if [ -n "${sqlUpgradeScripts}" ] || [ -n "${sqlDowngradeScripts}" ]; then
+        DEBUG=${DEBUG} db-migrator -s "${schemaName}" -o ok
+    fi
 }
 
 # ##########################################################
-# disableFeatureDb(featureName):  
-# 				disables feature db configuration
+# disableFeatureDb(featureName):
+#                 disables feature db configuration
 #   featureName: name of the feature
 # ##########################################################
 function disableFeatureDb()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- disableFeatureDb $* --"
+        set -x
+    fi
 
-	local featureName="$1"
-	local featureDbPath featureDbs schemaName
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
-	
-	featureDbs=$(ls -d "${FEATURES}"/"${featureName}"/"${FEATURE_DB}"/*/ 2> /dev/null)
-	for featureDbPath in ${featureDbs}; do
-		if [[ -z "$(ls "${featureDbPath%/}"/"${FEATURE_SQL}"/*${UPGRADE_SQL_SUFFIX} 2> /dev/null)" ]]; then
-			continue
-		fi
-		schemaName=$(basename "${featureDbPath%/}")
-		disableFeatureDbSchema "${featureName}" "${featureDbPath%/}" "${schemaName}"
-	done
+    local featureName="$1"
+    local featureDbPath featureDbs schemaName
+    
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
+    
+    featureDbs=$(ls -d "${FEATURES}"/"${featureName}"/"${FEATURE_DB}"/*/ 2> /dev/null)
+    for featureDbPath in ${featureDbs}; do
+        if [ -z "$(ls "${featureDbPath%/}"/"${FEATURE_SQL}"/*${UPGRADE_SQL_SUFFIX} 2> /dev/null)" ]; then
+            continue
+        fi
+        schemaName=$(basename "${featureDbPath%/}")
+        disableFeatureDbSchema "${featureName}" "${featureDbPath%/}" "${schemaName}"
+    done
 }
 
 # ##########################################################
@@ -939,44 +935,44 @@
 # ##########################################################
 function disableFeature()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	local featureName="$1"
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return
-	fi
-	
-	# disable feature itself
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- disableFeature $* --"
+        set -x
+    fi
+    
+    local featureName="$1"
+    
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return
+    fi
+    
+    # disable feature itself
 
-	(
-	cd "${LIB}"
-	rm -f feature-"${featureName}"-[0-9]*.jar 2> /dev/null
-	)
-		
-	# disable dependencies if any
+    (
+    cd "${LIB}"
+    rm -f feature-"${featureName}"-[0-9]*.jar 2> /dev/null
+    )
+        
+    # disable dependencies if any
 
-	disableFeatureDeps "${featureName}"
-	
-	# disable configuration if any
+    disableFeatureDeps "${featureName}"
+    
+    # disable configuration if any
 
-	disableFeatureConfig "${featureName}"
-	
-	# disable binaries if any
+    disableFeatureConfig "${featureName}"
+    
+    # disable binaries if any
 
-	disableFeatureBin "${featureName}"
+    disableFeatureBin "${featureName}"
 
-	# disable DB SQL scripts if any
+    # disable DB SQL scripts if any
 
-	disableFeatureDb "${featureName}"
+    disableFeatureDb "${featureName}"
 
-	# run custom disable if any
+    # run custom disable if any
 
-	customOpScript "${featureName}" "disable"
+    customOpScript "${featureName}" "disable"
 }
 
 ############################################################
@@ -985,40 +981,40 @@
 # This was copied from 'policy-drools/docker-install.sh'
 # in the 'docker' repository, and modified where needed.
 ############################################################
-function configureFeature() 
+function configureFeature()
 {
-	if [[ $DEBUG == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
+    if [ "$DEBUG" = "y" ]; then
+        echo "-- configureFeature $* --"
+        set -x
+    fi
 
-	local envConfig=$1 featureRoot=$2 
-	local sedLine="sed -i" 
-	local sedFiles="" nonBinaryFiles sedFile name value
-		
-	while read line || [ -n "${line}" ]; do
-		if [[ -n ${line} ]] && [[ ${line:0:1} != \# ]]; then
-			name="${line%%=*}"
-			value="${line#*=}"
-			value=$(echo "${value}" | sed -e 's/[\/&]/\\&/g')
-			if [[ -z ${name} ]] || [[ -z ${value} ]]; then
-				echo "warning: ${line} missing name or value"
-			fi
-			sedLine+=" -e 's/\${{${name}}}/${value}/g' "
-		fi
-	done < "${envConfig}"
-	
-	nonBinaryFiles=$(find "${featureRoot}" -type f -exec grep -Iq . {} \; -print 2> /dev/null)
-	for sedFile in ${nonBinaryFiles}; do
-		if fgrep -l '${{' ${sedFile} > /dev/null 2>&1; then
-			sedFiles+="${sedFile} "
-		fi
-	done
+    local envConfig=$1 featureRoot=$2
+    local sedLine="sed -i"
+    local sedFiles="" nonBinaryFiles sedFile name value
+        
+    while read line || [ -n "${line}" ]; do
+        if [ -n "${line}" ] && [ "${line:0:1}" != \# ]; then
+            name="${line%%=*}"
+            value="${line#*=}"
+            value=$(echo "${value}" | sed -e 's/[\/&]/\\&/g')
+            if [ -z "${name}" ] || [ -z "${value}" ]; then
+                echo "warning: ${line} missing name or value"
+            fi
+            sedLine+=" -e 's/\${{${name}}}/${value}/g' "
+        fi
+    done < "${envConfig}"
+    
+    nonBinaryFiles=$(find "${featureRoot}" -type f -exec grep -Iq . {} \; -print 2> /dev/null)
+    for sedFile in ${nonBinaryFiles}; do
+        if fgrep -l '${{' ${sedFile} > /dev/null 2>&1; then
+            sedFiles+="${sedFile} "
+        fi
+    done
 
-	if [[ -n ${sedFiles} ]]; then
-		sedLine+=${sedFiles}
-		eval "${sedLine}"
-	fi
+    if [ -n "${sedFiles}" ]; then
+        sedLine+=${sedFiles}
+        eval "${sedLine}"
+    fi
 }
 
 ############################################################
@@ -1029,121 +1025,100 @@
 ############################################################
 function installFeatures
 {
-	if [[ $DEBUG == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
+    if [ "$DEBUG" = "y" ]; then
+        echo "-- installFeatures $* --"
+        set -x
+    fi
 
-	local name featureConf feature dir conf
-	
-	if [[ -d "${FEATURES}" && -x "${FEATURES}" ]]; then
-		SOURCE_DIR=$PWD
-		for feature in "$@" ; do
-			dir=
-			if [[ "${feature}" == feature-*.zip ||
-						"${feature}" == */feature-*.zip ]] ; then
-				# the ZIP file is specified -- find the name
-				name="${feature##*/}"
-				name="${name#feature-}"
-				name="${name%%-[0-9]*\.zip}"
+    local name featureConf feature conf
+    if [ -d "${FEATURES}" ]; then
+        SOURCE_DIR=$PWD
+        for feature in "$@" ; do
+            name="${feature}"
+            feature=$(ls -v feature-"${name}"-[0-9]*.zip 2>/dev/null|tail -1)
+            if [ ! -f "${feature}" ] ; then
+                # include the file name in the error message, unless we don't
+                # have one -- in this case, use the feature name
+                echo "error: feature file ${feature:-for ${name}} not found"
+                continue
+            fi
+            if [ -d "${FEATURES}/${name}" ] ; then
+                echo "error: feature ${name} has already been installed"
+                continue
+            fi
 
-				# if the ZIP file has a directory name component,
-				# set 'dir' accordingly
-				if [[ "${feature}" =~ / ]] ; then
-					dir="${feature%/*}"
-				fi
-			else
-				# Doesn't match the ZIP file name convention -- interpret
-				# this as a feature name, and try to locate a matching ZIP
-				# file. If there is more than one, choose the one with the
-				# highest version number.
-				name="${feature}"
-				feature=$(ls -v feature-"${name}"-[0-9]*.zip 2>/dev/null|tail -1)
-			fi
-			if [[ ! -f "${feature}" ]] ; then
-				# include the file name in the error message, unless we don't
-				# have one -- in this case, use the feature name
-				echo "error: feature file ${feature:-for ${name}} not found"
-				continue
-			fi
-			if [[ -d "${FEATURES}/${name}" ]] ; then
-				echo "error: feature ${name} has already been installed"
-				continue
-			fi
+            # extract contents of ZIP file in to feature directory
+            mkdir -p "${FEATURES}/${name}" > /dev/null 2>&1
+            (cd "${FEATURES}/${name}"; jar xf "${SOURCE_DIR}"/"${feature}")
 
-			# extract contents of ZIP file in to feature directory
-			mkdir -p "${FEATURES}/${name}" > /dev/null 2>&1
-			(cd "${FEATURES}/${name}"; jar xf "${SOURCE_DIR}"/"${feature}")
-
-			# if there is a configuration file available,
-			# use it to configure the feature
-			featureConf="${dir:+$dir/}feature-${name}.conf"
-			if [[ -r "${featureConf}" ]]; then
-				configureFeature "${featureConf}" "${FEATURES}"/"${name}"
-				cp "${featureConf}" "${POLICY_HOME}"/etc/profile.d
-				echo "feature ${name} has been installed (configuration present)"
-			else
-				echo "feature ${name} has been installed (no configuration present)"
-			fi
-					
-			customOpScript "${name}" "install"
-		done
-		
-		# check the current directory and the 'config' directory for a
-		# 'base.conf' file -- use the first one that is found
-		for conf in base.conf ${POLICY_HOME}/config/base.conf ${POLICY_HOME}/etc/profile.d/base.conf; do
-			if [[ -f "${conf}" ]] ; then
-				echo "applying base configuration '${conf}' to features"
-				configureFeature "${conf}" "${FEATURES}"
-				break
-			fi
-		done
-	else
-		echo "error: aborting -- ${FEATURES} is not accessible"
-		exit 1
-	fi
+            # if there is a configuration file available,
+            # use it to configure the feature
+            featureConf="${dir:+$dir/}feature-${name}.conf"
+            if [ -r "${featureConf}" ]; then
+                configureFeature "${featureConf}" "${FEATURES}"/"${name}"
+                cp "${featureConf}" "${POLICY_HOME}"/etc/profile.d
+                echo "feature ${name} has been installed (configuration present)"
+            else
+                echo "feature ${name} has been installed (no configuration present)"
+            fi
+                    
+            customOpScript "${name}" "install"
+        done
+        
+        # check the current directory and the 'config' directory for a
+        # 'base.conf' file -- use the first one that is found
+        for conf in base.conf ${POLICY_HOME}/config/base.conf ${POLICY_HOME}/etc/profile.d/base.conf; do
+            if [ -f "${conf}" ] ; then
+                echo "applying base configuration '${conf}' to features"
+                configureFeature "${conf}" "${FEATURES}"
+                break
+            fi
+        done
+    else
+        echo "error: aborting -- ${FEATURES} is not accessible"
+        exit 1
+    fi
 }
 
 # ##########################################################
-# uninstallFeatureDb(featureName):  
-# 				uninstalls the feature db configuration
+# uninstallFeatureDb(featureName):
+#                 uninstalls the feature db configuration
 #   featureName: name of the feature
 # ##########################################################
 function uninstallFeatureDb()
 {
-	if [[ ${DEBUG} == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- uninstallFeatureDb $* --"
+        set -x
+    fi
 
-	local featureName="$1"
-	local featureSqls sqlDir sqlName schemaDir schemaName schemaNames leftSqls
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return 1
-	fi
-	
-	featureSqls=$(find "${FEATURES}"/"${featureName}"/"${FEATURE_DB}"/*/${FEATURE_SQL}/*.sql -type f -maxdepth 1 2> /dev/null)
-	for featureSql in ${featureSqls}; do
-		sqlName=$(basename "${featureSql}")
-		sqlDir=$(dirname "${featureSql}")
-		schemaDir=$(dirname "${sqlDir}")
-		schemaName=$(basename "${schemaDir}")
-		schemaNames+=${schemaName} 
-		rm -f "${DB}"/"${schemaName}"/"${FEATURE_SQL}"/"${sqlName}" 2> /dev/null
-	done
-	
-	for schemaName in ${schemaNames};
-	do
-		leftSqls=$(ls "${DB}"/"${schemaName}"/"${FEATURE_SQL}"/*.sql 2> /dev/null)
-		if [[ -z ${leftSqls} ]]; then
-			if ! DEBUG=${DEBUG} db-migrator -s "${schemaName}" -o ok; then
-				echo -n "warning: ${featureName}: ${schemaName}: database data is leftover. "
-				echo -n "Consider cleaning left over data with 'db-migrator'."
-			fi
-		fi		
-	done
+    local featureName="$1"
+    local featureSqls sqlDir sqlName schemaDir schemaName schemaNames leftSqls
+    
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return 1
+    fi
+    
+    featureSqls=$(find "${FEATURES}"/"${featureName}"/"${FEATURE_DB}"/*/${FEATURE_SQL}/*.sql -type f -maxdepth 1 2> /dev/null)
+    for featureSql in ${featureSqls}; do
+        sqlName=$(basename "${featureSql}")
+        sqlDir=$(dirname "${featureSql}")
+        schemaDir=$(dirname "${sqlDir}")
+        schemaName=$(basename "${schemaDir}")
+        schemaNames="${schemaNames} ${schemaName}"
+        rm -f "${DB}"/"${schemaName}"/"${FEATURE_SQL}"/"${sqlName}" 2> /dev/null
+    done
+    for schemaName in ${schemaNames};
+    do
+        leftSqls=$(ls "${DB}"/"${schemaName}"/"${FEATURE_SQL}"/*.sql 2> /dev/null)
+        if [ -n "${leftSqls}" ]; then
+            if ! DEBUG=${DEBUG} db-migrator -s "${schemaName}" -o ok; then
+                echo -n "warning: ${featureName}: ${schemaName}: database data is leftover. "
+                echo -n "Consider cleaning left over data with 'db-migrator'."
+            fi
+        fi        
+    done
 }
 
 ############################################################
@@ -1151,25 +1126,24 @@
 ############################################################
 function uninstallFeature
 {
-	if [[ $DEBUG == y ]]; then
-		echo "-- ${FUNCNAME[0]} $* --"
-		set -x
-	fi
-	
-	local featureName="$1"
-	
-	if [[ -z ${featureName} ]]; then
-		echo "warning: no feature name"
-		return
-	fi
-	
-	disableFeature "${featureName}"
-	uninstallFeatureDb "${featureName}"
-	customOpScript "${featureName}" "uninstall"
-	
-	if [[ -n ${FEATURES} && -n ${featureName} ]]; then
-		rm -rf "${FEATURES:-???}/${featureName}"
-	fi
+    if [ "$DEBUG" = "y" ]; then
+        echo "-- uninstallFeature $* --"
+        set -x
+    fi
+    
+    local featureName="$1"
+    
+    if [ -z "${featureName}" ]; then
+        echo "warning: no feature name"
+        return
+    fi
+    disableFeature "${featureName}"
+    uninstallFeatureDb "${featureName}"
+    customOpScript "${featureName}" "uninstall"
+    
+    if [ -n "${FEATURES}" ] && [ -n "${featureName}" ]; then
+        rm -rf "${FEATURES:-???}/${featureName}"
+    fi
 }
 
 ############################################################
@@ -1177,120 +1151,129 @@
 ############################################################
 function uninstallFeatures
 {
-	if [[ $DEBUG == y ]]; then
-		echo "-- ${FUNCNAME[0]} --"
-		set -x
-	fi
-	
-	local name
-	local allFeatures=$'\n'$(cd ${FEATURES};ls)$'\n'
-	for name in "$@" ; do
-		# the following check takes care of potentially troublesome names
-		# like '.', '..', and names containing '/'
-		if [[ "${allFeatures}" =~ $'\n'${name}$'\n' ]] ; then
-			uninstallFeature "${name}"
-		else
-			echo "feature ${name} not found"
-		fi
-	done
+    if [ "${DEBUG}" = "y" ]; then
+        echo "-- uninstallFeatures --"
+        set -x
+    fi
+    
+    local name
+    local allFeatures=$(cd ${FEATURES};ls)
+    local aFeature
+    local flag
+    for name in "$@" ; do
+        flag=false
+        # the following check takes care of potentially troublesome names
+        # like '.', '..', and names containing '/'
+        for aFeature in ${allFeatures};
+        do
+            if [ "${aFeature}" = "${name}" ] ; then
+                uninstallFeature "${name}"
+                echo "feature ${name} uninstalled"
+                flag=true
+            fi
+        done
+        if ! $flag; then
+            echo "error: feature ${name} not found"
+        fi
+    done
 }
 
 case "$1" in
-	status)
-	{
-		# dump out status information
-		status
-	};;
+    status)
+    {
+        # dump out status information
+        status
+    };;
 
-	enable)
-	{
-		if [[ -f "${POLICY_HOME}"/PID ]]; then
-			echo "error: enable: not allowed when policy is running .."
-			echo
-			status
-			exit 10
-		fi
-		
-		# enable the specified options
-		shift
-		match=
-		for name in "$@" ; do
-			# look for matches - 'file' has the full path name
-			file=$(ls "${FEATURES}"/"${name}"/"${FEATURE_LIB}"/feature-"${name}"-[0-9]*.jar 2> /dev/null)
-			if [[ "$?" != 0 ]] ; then
-				# no matching file
-				echo "${name}:  no such option"
-			else
-				# make sure there is only one feature jar
-				countFeatureJars=$(echo "${file}" | wc -w)
-				if [[ ${countFeatureJars} != 1 ]]; then
-					echo "warning: skipping ${name},  ${countFeatureJars} feature libraries found"
-					continue
-				fi			
-				
-				# found a match (handle multiple matches, just in case)
-				match=true
-				
-				enableFeature "${name}" "${file}"
-			fi
-		done
-		if [[ "${match}" ]] ; then
-			echo
-			status
-		fi
-	};;
+    enable)
+    {
+        if [ -f "${POLICY_HOME}"/PID ]; then
+            echo "error: enable: not allowed when policy is running .."
+            echo
+            status
+            exit 10
+        fi
+        
+        # enable the specified options
+        shift
+        match=
+        for name in "$@" ; do
+            # look for matches - 'file' has the full path name
+            file=$(ls "${FEATURES}"/"${name}"/"${FEATURE_LIB}"/feature-"${name}"-[0-9]*.jar 2> /dev/null)
+            if [ "$?" != "0" ] ; then
+                # no matching file
+                echo "enable feature: ${name} failed"
+            else
+                # make sure there is only one feature jar
+                countFeatureJars=$(echo "${file}" | wc -w)
+                if [ ${countFeatureJars} -ne 1 ]; then
+                    echo "warning: skipping ${name},  ${countFeatureJars} feature libraries found"
+                    continue
+                fi            
+                
+                # found a match (handle multiple matches, just in case)
+                match=true
+                
+                enableFeature "${name}" "${file}"
+            fi
+        done
+        if [ "${match}" ] ; then
+            echo
+            status
+        fi
+    };;
 
-	disable)
-	{
-		if [[ -f "${POLICY_HOME}"/PID ]]; then
-			echo "error: disable: not allowed when policy is running .."
-			echo
-			status
-			exit 11
-		fi
-		
-		# disable the specified options
-		shift
-		match=
-		for name in "$@" ; do
-			# look for matches -- 'file' has the last segment of the path name
-			file=$(ls "${FEATURES}"/"${name}"/"${FEATURE_LIB}"/feature-"${name}"-[0-9]*.jar 2> /dev/null)
-			if [[ "$?" != 0 ]] ; then
-				echo "${name}:  no such option"
-			else
-				# found a match (handle multiple matches, just in case)
-				match=true
-				
-				disableFeature "${name}"
-			fi
-		done
-		if [[ "${match}" ]] ; then
-			echo
-			status
-		fi
-	};;
+    disable)
+    {
+        if [ -f "${POLICY_HOME}"/PID ]; then
+            echo "error: disable: not allowed when policy is running .."
+            echo
+            status
+            exit 11
+        fi
+        
+        # disable the specified options
+        shift
+        match=
+        for name in "$@" ; do
+            # look for matches -- 'file' has the last segment of the path name
+            file=$(ls "${FEATURES}"/"${name}"/"${FEATURE_LIB}"/feature-"${name}"-[0-9]*.jar 2> /dev/null)
+            if [ "$?" != "0" ] ; then
+                echo "${name}:  no such option"
+            else
+                # found a match (handle multiple matches, just in case)
+                match=true
+                
+                disableFeature "${name}"
+            fi
+        done
+        if [ "${match}" ] ; then
+            echo
+            status
+        fi
+    };;
 
-	install)
-	{
-		shift
-		installFeatures "$@"
-	};;
+    install)
+    {
+        shift
+        installFeatures "$@"
+    };;
 
-	uninstall)
-	{
-		if [[ -f "${POLICY_HOME}"/PID ]]; then
-			echo "error: uninstall: not allowed when policy is running .."
-			echo
-			status
-			exit 12
-		fi
-		shift
-		uninstallFeatures "$@"
-	};;
+    uninstall)
+    {
+        if [ -f "${POLICY_HOME}"/PID ]; then
+            echo "error: uninstall: not allowed when policy is running .."
+            echo
+            status
+            exit 12
+        fi
+        shift
+        uninstallFeatures "$@"
+    };;
 
-	*)
-	{
-		usage
-	};;
+    *)
+    {
+        usage
+    };;
 esac
 exit
diff --git a/policy-management/src/main/server-gen/bin/pdpd-configuration b/policy-management/src/main/server-gen/bin/pdpd-configuration
index fc822e1..a704a57 100644
--- a/policy-management/src/main/server-gen/bin/pdpd-configuration
+++ b/policy-management/src/main/server-gen/bin/pdpd-configuration
@@ -1,4 +1,4 @@
-#! /bin/bash
+#!/usr/bin/env ash
 
 # ============LICENSE_START=======================================================
 # ONAP
@@ -8,9 +8,9 @@
 # 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.
@@ -21,112 +21,111 @@
 source ${POLICY_HOME}/etc/profile.d/env.sh
 
 function usage() {
-	echo -n "Usage: $(basename $0) "
-	echo -n "[(-d|--debug)] "
-	echo -n "(-h|--host) <bus-host> "
-	echo -n "[(-p|--port) <bus-port>] "
-	echo -n "[(-k|--key) <api-key>] "
-	echo -n "[(-s|--secret) <api-secret>] "
-	echo -n "[(-r|--request-id) <request-id>] "
-	echo -n "(-c|--controller-name) <controller-name> "
-	echo -n "(-o|--operation) <create|update|lock|unlock> "
-	echo -n "[(-g|--group-id) <group-id> "
-	echo -n "(-a|--artifact-id) <artifact-id> "
-	echo -n "(-v|--version) <version>] "
-	echo -n "[(-t|--topic) <topic>] "
-	echo ""
+    echo -n "Usage: $(basename $0) "
+    echo -n "[(-d|--debug)] "
+    echo -n "(-h|--host) <bus-host> "
+    echo -n "[(-p|--port) <bus-port>] "
+    echo -n "[(-k|--key) <api-key>] "
+    echo -n "[(-s|--secret) <api-secret>] "
+    echo -n "[(-r|--request-id) <request-id>] "
+    echo -n "(-c|--controller-name) <controller-name> "
+    echo -n "(-o|--operation) <create|update|lock|unlock> "
+    echo -n "[(-g|--group-id) <group-id> "
+    echo -n "(-a|--artifact-id) <artifact-id> "
+    echo -n "(-v|--version) <version>] "
+    echo -n "[(-t|--topic) <topic>] "
+    echo ""
 }
 
 BUS_PORT=3904
-ENTITY=controller
 REQUEST_ID="7f5474ca-16a9-42ac-abc0-d86f62296fbc"
 TOPIC="PDPD-CONFIGURATION"
 
 # command line options parsing
-until [[ -z "$1" ]]; do
-	case $1 in
-		-d|--debug) 	set -x
-				;;
-		-h|--host) 		shift
-					BUS_HOST=$1
-					;;						
-		-p|--port) 		shift
-					BUS_PORT=$1
-					;;
-		-r|--request-id) 		shift
-					REQUEST_ID=$1
-					;;
-		-k|--key) 		shift
-					API_KEY=$1
-					;;	
-		-s|--secret) 		shift
-					API_SECRET=$1
-					;;	
-		-c|--controller-name) 		shift
-					CONTROLLER_NAME=$1
-					;;
-		-o|--operation) 		shift
-					OPERATION=$1
-					;;							
-		-g|--group-id) 	shift
-					GROUP_ID=$1
-					;;
-		-a|--artifact-id) shift
-					ARTIFACT_ID=$1
-					;;
-		-v|--version) shift
-					VERSION=$1
-					;;		
-		-t|--topic) shift
-					TOPIC=$1
-					;;															
-		*)			usage
-					exit 1
-					;;
-	esac
-	shift
+until [ -z "$1" ]; do
+    case $1 in
+        -d|--debug)     set -x
+                ;;
+        -h|--host)         shift
+                    BUS_HOST=$1
+                    ;;                        
+        -p|--port)         shift
+                    BUS_PORT=$1
+                    ;;
+        -r|--request-id)         shift
+                    REQUEST_ID=$1
+                    ;;
+        -k|--key)         shift
+                    API_KEY=$1
+                    ;;    
+        -s|--secret)         shift
+                    API_SECRET=$1
+                    ;;    
+        -c|--controller-name)         shift
+                    CONTROLLER_NAME=$1
+                    ;;
+        -o|--operation)         shift
+                    OPERATION=$1
+                    ;;                            
+        -g|--group-id)     shift
+                    GROUP_ID=$1
+                    ;;
+        -a|--artifact-id) shift
+                    ARTIFACT_ID=$1
+                    ;;
+        -v|--version) shift
+                    VERSION=$1
+                    ;;        
+        -t|--topic) shift
+                    TOPIC=$1
+                    ;;                                                            
+        *)            usage
+                    exit 1
+                    ;;
+    esac
+    shift
 done
 
-if [[ -z ${BUS_HOST} ]]; then
-	echo "An UEB/DMAAP server must be provided."
-	echo
-	usage
-	exit 1
+if [ -z "${BUS_HOST}" ]; then
+    echo "An UEB/DMAAP server must be provided."
+    echo
+    usage
+    exit 1
 fi
 
-if [[ -z ${CONTROLLER_NAME} ]]; then
-	echo "The controller-name must be provided."
-	usage
-	exit 2
+if [ -z "${CONTROLLER_NAME}" ]; then
+    echo "The controller-name must be provided."
+    usage
+    exit 2
 fi
 
-if [[ -z ${OPERATION} ]]; then
-	echo "The operation  must be provided: create|update|lock|unlock"
-	usage
-	exit 3
+if [ -z "${OPERATION}" ]; then
+    echo "The operation  must be provided: create|update|lock|unlock"
+    usage
+    exit 3
 fi
 
-if [[ ${OPERATION} == "create" ]] || [[ ${OPERATION} == "update" ]]; then
-	if [[ -z ${GROUP_ID} ]]; then
-		echo "The maven group id must be provided when operation is create|update"
-		usage
-		exit 4
-	fi
-	
-	if [[ -z ${ARTIFACT_ID} ]]; then
-		echo "The maven artifact id must be provided when operation is create|update"
-		usage
-		exit 5
-	fi
-	
-	if [[ -z ${VERSION} ]]; then
-		echo "The maven version must be provided when operation is create|update"
-		usage
-		exit 6
-	fi
+if [ "${OPERATION}" = "create" ] || [ "${OPERATION}" = "update" ]; then
+    if [ -z "${GROUP_ID}" ]; then
+        echo "The maven group id must be provided when operation is create|update"
+        usage
+        exit 4
+    fi
+    
+    if [ -z "${ARTIFACT_ID}" ]; then
+        echo "The maven artifact id must be provided when operation is create|update"
+        usage
+        exit 5
+    fi
+    
+    if [ -z "${VERSION}" ]; then
+        echo "The maven version must be provided when operation is create|update"
+        usage
+        exit 6
+    fi
 fi
 
-UPDATE_BODY=$(< <(cat <<EOF
+UPDATE_BODY=$(cat <<EOF
 {
       "requestID": "${REQUEST_ID}",
       "entity": "controller",
@@ -140,11 +139,10 @@
             "operation": "${OPERATION}"
       }]
 }
-
 EOF
-))
+)
 
-LOCK_BODY=$(< <(cat <<EOF
+LOCK_BODY=$(cat <<EOF
 {
       "requestID": "${REQUEST_ID}",
       "entity": "controller",
@@ -155,46 +153,46 @@
 }
 
 EOF
-))
+)
 
 unset http_proxy
 
-if [[ ${OPERATION} == "lock" ]] || [[ ${OPERATION} == "unlock" ]]; then
-	if [[ -n ${API_KEY} ]]; then
-		DATE=$(date)
-		DATE_HASH=$(echo -n "${DATE}" | openssl sha1 -hmac "${API_SECRET}" -binary | openssl base64)
-		curl --silent -X POST \
-			--header "Accept:" \
-			--header "X-CambriaDate: ${DATE}" \
-			--header "X-CambriaAuth: ${API_KEY}:${DATE_HASH}" \
-			--header "Content-Type: application/json" \
-			--data "${LOCK_BODY}" \
-			http://${BUS_HOST}:${BUS_PORT}/events/${TOPIC}
-	else
-		curl --silent -X POST \
-			--header "Accept:" \
-			--header "Content-Type: application/json" \
-			--data "${LOCK_BODY}" \
-			http://${BUS_HOST}:${BUS_PORT}/events/${TOPIC}
-	fi
+if [ "${OPERATION}" = "lock" ] || [ "${OPERATION}" = "unlock" ]; then
+    if [ -n "${API_KEY}" ]; then
+        DATE=$(date)
+        DATE_HASH=$(echo -n "${DATE}" | openssl sha1 -hmac "${API_SECRET}" -binary | openssl base64)
+        curl --silent -X POST \
+            --header "Accept:" \
+            --header "X-CambriaDate: ${DATE}" \
+            --header "X-CambriaAuth: ${API_KEY}:${DATE_HASH}" \
+            --header "Content-Type: application/json" \
+            --data "${LOCK_BODY}" \
+            http://${BUS_HOST}:${BUS_PORT}/events/${TOPIC}
+    else
+        curl --silent -X POST \
+            --header "Accept:" \
+            --header "Content-Type: application/json" \
+            --data "${LOCK_BODY}" \
+            http://${BUS_HOST}:${BUS_PORT}/events/${TOPIC}
+    fi
 fi
 
-if [[ ${OPERATION} == "create" ]] || [[ ${OPERATION} == "update" ]]; then
-	if [[ -n ${API_KEY} ]]; then
-		DATE=$(date)
-		DATE_HASH=$(echo -n "${DATE}" | openssl sha1 -hmac "${API_SECRET}" -binary | openssl base64)
-		curl --silent -X POST \
-			--header "Accept:" \
-			--header "X-CambriaDate: ${DATE}" \
-			--header "X-CambriaAuth: ${API_KEY}:${DATE_HASH}" \
-			--header "Content-Type: application/json" \
-			--data "${UPDATE_BODY}" \
-			http://${BUS_HOST}:${BUS_PORT}/events/${TOPIC}
-	else
-		curl --silent -X POST \
-			--header "Accept:" \
-			--header "Content-Type: application/json" \
-			--data "${UPDATE_BODY}" \
-			http://${BUS_HOST}:${BUS_PORT}/events/${TOPIC}
-	fi
+if [ "${OPERATION}" = "create" ] || [ "${OPERATION}" = "update" ]; then
+    if [ -n "${API_KEY}" ]; then
+        DATE=$(date)
+        DATE_HASH=$(echo -n "${DATE}" | openssl sha1 -hmac "${API_SECRET}" -binary | openssl base64)
+        curl --silent -X POST \
+            --header "Accept:" \
+            --header "X-CambriaDate: ${DATE}" \
+            --header "X-CambriaAuth: ${API_KEY}:${DATE_HASH}" \
+            --header "Content-Type: application/json" \
+            --data "${UPDATE_BODY}" \
+            http://${BUS_HOST}:${BUS_PORT}/events/${TOPIC}
+    else
+        curl --silent -X POST \
+            --header "Accept:" \
+            --header "Content-Type: application/json" \
+            --data "${UPDATE_BODY}" \
+            http://${BUS_HOST}:${BUS_PORT}/events/${TOPIC}
+    fi
 fi
diff --git a/policy-management/src/main/server-gen/bin/policy-management-controller b/policy-management/src/main/server-gen/bin/policy-management-controller
index 1d9633b..3d6fb19 100644
--- a/policy-management/src/main/server-gen/bin/policy-management-controller
+++ b/policy-management/src/main/server-gen/bin/policy-management-controller
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env ash
 
 # ============LICENSE_START=======================================================
 # ONAP POLICY
@@ -25,13 +25,13 @@
 CLASS=org.onap.policy.drools.system.Main
 
 function start() {
-    if [[ $DEBUG == y ]]; then
-        echo "-- ${FUNCNAME[0]} --"
+    if [ "$DEBUG" = "y" ]; then
+        echo "-- start --"
         set -x
     fi
 
     um_start
-    if [[ ${RETVAL} != 0 ]]; then
+    if [ $RETVAL -ne 0 ]; then
         update_monitor off
     else
         update_monitor on
@@ -39,8 +39,8 @@
 }
 
 function preRunning() {
-    if [[ $DEBUG == y ]]; then
-        echo "-- ${FUNCNAME[0]} --"
+    if [ "$DEBUG" = "y" ]; then
+        echo "-- preRunning --"
         set -x
     fi
 
@@ -51,25 +51,24 @@
     source ${POLICY_HOME}/etc/profile.d/env.sh
 
     ${POLICY_HOME}/bin/configure-maven
-    JVM_OPTS=(${JVM_OPTIONS})
 
     # If 'system.properties' exists, convert it into "-D" JVM arguments.
     # Note that the following also handles property values with spaces.
-    IFS=$'\n'
-    systemProperties=($(
-        if [[ -f $_DIR/config/system.properties ]]; then
+
+    systemProperties=$(
+        if [ -f "$_DIR/config/system.properties" ]; then
             sed -n -e 's/^[ \t]*\([^ \t#]*\)[ \t]*=[ \t]*\(.*\)$/-D\1=\2/p' \
                 $_DIR/config/system.properties
         fi
-    ))
+    )
 
     cd $_DIR
 
 }
 
 function exec_start() {
-    if [[ $DEBUG == y ]]; then
-        echo "-- ${FUNCNAME[0]} --"
+    if [ "$DEBUG" = "y" ]; then
+        echo "-- exec_start --"
         set -x
     fi
 
@@ -80,13 +79,18 @@
     fi
 
     preRunning
-    exec $JAVA_HOME/bin/java "${JVM_OPTS[@]}" -cp $_DIR/config:$_DIR/lib:$CP "${systemProperties[@]}" "$@" $CLASS
+    exec $JAVA_HOME/bin/java ${JVM_OPTIONS} -cp $_DIR/config:$_DIR/lib:$CP ${systemProperties} "$@" $CLASS
+}
+
+# adding timestamp for stdout and stderr
+function timestamp () {
+    exec awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; fflush(); }'
 }
 
 # unmonitored start, does not change monitor status (immutable)
 function um_start() {
-    if [[ $DEBUG == y ]]; then
-        echo "-- ${FUNCNAME[0]} --"
+    if [ "$DEBUG" = "y" ]; then
+        echo "-- um_start --"
         set -x
     fi
 
@@ -104,15 +108,8 @@
     if [ -e $_LOGS/$PNAME.err ]; then mv $_LOGS/$PNAME.err $_LOGS/$PNAME.err.1; fi
 
     (
-        if [[ "${cfg}" != "" ]]; then
-            # need to make sure that we don't pass the lock file descriptor
-            # to subprocesses
-            exec {cfg}>&-
-        fi
-        nohup $JAVA_HOME/bin/java "${JVM_OPTS[@]}" -cp $_DIR/config:$_DIR/lib:$CP "${systemProperties[@]}" "$@" $CLASS > >(while read line; do echo "$(date): ${line}"; done >$_LOGS/$PNAME.out) 2> >(while read line; do echo "$(date): ${line}"; done >$_LOGS/$PNAME.err) &
-
-        _PID=$!
-        echo $_PID >$_PIDFILE
+        exec 200>&-
+        ( ( nohup $JAVA_HOME/bin/java ${JVM_OPTIONS} -cp $_DIR/config:$_DIR/lib:$CP ${systemProperties} "$@" $CLASS ) | timestamp > $_LOGS/$PNAME.out ) 2>&1 | timestamp > $_LOGS/$PNAME.err &
     )
     sleep 5
     status
@@ -127,8 +124,8 @@
 }
 
 function stop() {
-    if [[ $DEBUG == y ]]; then
-        echo "-- ${FUNCNAME[0]} --"
+    if [ "$DEBUG" = "y" ]; then
+        echo "-- stop --"
         set -x
     fi
 
@@ -138,8 +135,8 @@
 
 # unmonitored stop, does not change monitor status (immutable)
 function um_stop() {
-    if [[ $DEBUG == y ]]; then
-        echo "-- ${FUNCNAME[0]} --"
+    if [ "$DEBUG" = "y" ]; then
+        echo "-- um_stop --"
         set -x
     fi
 
@@ -148,7 +145,7 @@
         echo $_STATUS
         remove_pid_file
     else
-        if [[ -n ${TELEMETRY_PASSWORD} ]]; then
+        if [ -n "${TELEMETRY_PASSWORD}" ]; then
             http_proxy= timeout 10 curl -k --silent --user ${TELEMETRY_USER}:${TELEMETRY_PASSWORD} -X DELETE https://localhost:${TELEMETRY_PORT}/policy/pdp/engine -o /dev/null
         else
             http_proxy= timeout 10 curl -k --silent -X DELETE https://localhost:${TELEMETRY_PORT}/policy/pdp/engine -o /dev/null
@@ -174,15 +171,15 @@
 }
 
 function status() {
-    if [[ $DEBUG == y ]]; then
-        echo "-- ${FUNCNAME[0]} --"
+    if [ "$DEBUG" = "y" ]; then
+        echo "-- status --"
         set -x
     fi
 
     if [ -f "${_PIDFILE}" ]; then
         _PID=$(cat "${_PIDFILE}")
         check_status_of_pid "$_PID"
-    elif [[ ${POLICY_DOCKER} == true ]] && _PID=$(pidof -s java); then
+    elif [ ${POLICY_DOCKER} ] && _PID=$(pidof -s java); then
         echo "${_PID}" > ${_PIDFILE}
         check_status_of_pid "$_PID"
     else
@@ -190,7 +187,7 @@
         _RUNNING=0
     fi
 
-    if [[ $_RUNNING == 1 ]]; then
+    if [ "$_RUNNING" = "1" ]; then
         RETVAL=0
     else
         RETVAL=1
@@ -198,8 +195,8 @@
 }
 
 function check_status_of_pid() {
-    if [[ $DEBUG == y ]]; then
-        echo "-- ${FUNCNAME[0]} --"
+    if [ "$DEBUG" = "y" ]; then
+        echo "-- check_status_of_pid --"
         set -x
     fi
 
@@ -213,8 +210,8 @@
 }
 
 function remove_pid_file() {
-    if [[ $DEBUG == y ]]; then
-        echo "-- ${FUNCNAME[0]} --"
+    if [ "$DEBUG" = "y" ]; then
+        echo "-- remove_pid_file --"
         set -x
     fi
 
@@ -224,13 +221,13 @@
 }
 
 function update_monitor() {
-    if [[ $DEBUG == y ]]; then
-        echo "-- ${FUNCNAME[0]} --"
+    if [ "$DEBUG" = "y" ]; then
+        echo "-- update_monitor --"
         set -x
     fi
 
     STATUS=$1
-    if [[ -f ${POLICY_HOME}/etc/monitor/monitor.cfg ]]; then
+    if [ -f "${POLICY_HOME}"/etc/monitor/monitor.cfg ]; then
         /bin/sed -i.bak \
             -e "s/^${CONTROLLER}=.*/${CONTROLLER}=${STATUS}/g" \
             ${POLICY_HOME}/etc/monitor/monitor.cfg
@@ -239,7 +236,7 @@
 
 # main
 
-if [[ ${DEBUG} == y ]]; then
+if [ "${DEBUG}" = "y" ]; then
     echo "-- $0 $* --"
     set -x
 fi
@@ -247,7 +244,7 @@
 _DIR=${POLICY_HOME}
 _LOGS=${POLICY_LOGS}
 
-if [[ -z ${POLICY_LOGS} ]]; then
+if [ -z "${POLICY_LOGS}" ]; then
     _LOGS="${POLICY_HOME}"/logs
 fi
 
@@ -263,9 +260,9 @@
     echo "$_STATUS"
     ;;
 start)
-    if flock ${cfg}; then
+    if flock 200; then
         start
-    fi {cfg}>>${POLICY_HOME}/etc/monitor/monitor.cfg.lock
+    fi 200>>${POLICY_HOME}/etc/monitor/monitor.cfg.lock
     ;;
 umstart)
     um_start
@@ -274,19 +271,19 @@
     exec_start
     ;;
 stop)
-    if flock ${cfg}; then
+    if flock 200; then
         stop
-    fi {cfg}>>${POLICY_HOME}/etc/monitor/monitor.cfg.lock
+    fi 200>>${POLICY_HOME}/etc/monitor/monitor.cfg.lock
     ;;
 umstop)
     um_stop
     ;;
 restart)
-    if flock ${cfg}; then
-        stop
-        sleep 2
-        start
-    fi {cfg}>>${POLICY_HOME}/etc/monitor/monitor.cfg.lock
+    if flock 200; then 
+       stop
+       sleep 2
+       start
+    fi 200>>${POLICY_HOME}/etc/monitor/monitor.cfg.lock
     ;;
 *)
     echo "error: invalid option $@"
diff --git a/policy-management/src/main/server-gen/bin/rest-add-controller b/policy-management/src/main/server-gen/bin/rest-add-controller
index 1c7dfbc..3bd02be 100644
--- a/policy-management/src/main/server-gen/bin/rest-add-controller
+++ b/policy-management/src/main/server-gen/bin/rest-add-controller
@@ -1,4 +1,4 @@
-#! /bin/bash
+#!/usr/bin/env ash
 
 # ============LICENSE_START=======================================================
 # ONAP
@@ -8,7 +8,7 @@
 # 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
@@ -22,14 +22,14 @@
 
 json=$1-controller.rest.json
 
-if [ -f ${json} ]; then
-	if [[ -n ${TELEMETRY_PASSWORD} ]]; then
-	curl -k --silent --user ${TELEMETRY_USER}:${TELEMETRY_PASSWORD} -X POST --data @${json} --header "Content-Type: application/json" \
-			https://localhost:${TELEMETRY_PORT}/policy/pdp/engine/controllers
-	else
-		curl -k --silent -X POST --data @${json} --header "Content-Type: application/json" \
-			https://localhost:${TELEMETRY_PORT}/policy/pdp/engine/controllers
-	fi
+if [ -f "${json}" ]; then
+    if [ -n "${TELEMETRY_PASSWORD}" ]; then
+    curl -k --silent --user ${TELEMETRY_USER}:${TELEMETRY_PASSWORD} -X POST --data @${json} --header "Content-Type: application/json" \
+            https://localhost:${TELEMETRY_PORT}/policy/pdp/engine/controllers
+    else
+        curl -k --silent -X POST --data @${json} --header "Content-Type: application/json" \
+            https://localhost:${TELEMETRY_PORT}/policy/pdp/engine/controllers
+    fi
 else
-	echo "Usage: rest-add-controller.sh closed-loop-sample|reporter|sepc|vsegw|.. (or any other config file ending with *-controller.rest.json)"	
+    echo "Usage: rest-add-controller.sh closed-loop-sample|reporter|sepc|vsegw|.. (or any other config file ending with *-controller.rest.json)"
 fi
diff --git a/policy-management/src/main/server-gen/bin/rest-delete-controller b/policy-management/src/main/server-gen/bin/rest-delete-controller
index c274119..8a8b9f6 100644
--- a/policy-management/src/main/server-gen/bin/rest-delete-controller
+++ b/policy-management/src/main/server-gen/bin/rest-delete-controller
@@ -1,4 +1,4 @@
-#! /bin/bash
+#!/usr/bin/env ash
 
 # ============LICENSE_START=======================================================
 # ONAP
@@ -20,8 +20,8 @@
 
 source $POLICY_HOME/etc/profile.d/env.sh
 
-if [[ -n $1 ]]; then
-    if [[ -n ${TELEMETRY_PASSWORD} ]]; then
+if [ -n "$1" ]; then
+    if [ -n "${TELEMETRY_PASSWORD}" ]; then
         curl -k --silent --user ${TELEMETRY_USER}:${TELEMETRY_PASSWORD} -X DELETE --header "Content-Type: application/json" \
             https://localhost:${TELEMETRY_PORT}/policy/pdp/engine/controllers/${1}
     else
diff --git a/policy-management/src/main/server-gen/bin/telemetry b/policy-management/src/main/server-gen/bin/telemetry
index 9d4b857..cead3d3 100644
--- a/policy-management/src/main/server-gen/bin/telemetry
+++ b/policy-management/src/main/server-gen/bin/telemetry
@@ -1,4 +1,4 @@
-#! /bin/bash
+#!/usr/bin/env ash 
 
 # ============LICENSE_START=======================================================
 # ONAP
@@ -33,7 +33,7 @@
     exit 2
 fi
 
-if [[ ! -r ${TELEMETRY_SPEC} ]]; then
+if [ ! -r "${TELEMETRY_SPEC}" ]; then
     echo "generating new spec .."
     if ! http --verify=no -a "${TELEMETRY_USER}:${TELEMETRY_PASSWORD}" https://localhost:9696/swagger.json >${TELEMETRY_SPEC} 2>/dev/null; then
         echo "error: cannot generate telemetry spec"