diff --git a/README.md b/README.md
index 1911651..ec737d7 100644
--- a/README.md
+++ b/README.md
@@ -70,11 +70,12 @@
 WITH_BBSIM=yes WITH_RADIUS=y CONFIG_SADIS=y  voltha up
 ```
 
-To start a specific version of VOLTHA, e.g. 2.2, you could use the following command:
+To start a specific version of VOLTHA, e.g. 2.3, you could use the following commands:
 ```bash
-source releases/voltha-2.2 && voltha up
+git checkout tags/3.0.3 -b 3.0.3
+source releases/voltha-2.3 && voltha up
 ```
-Please check the `releases` folder to see the available ones.
+Please check the `releases` folder to see the available ones and pick the correct tag associatet do that release.
 
 | OPTION                                | DEFAULT                                               | DESCRIPTION |
 | ------------------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------ |
@@ -82,9 +83,13 @@
 | `NAME`                                  | TYPE                                                  | Name of the KinD Cluster to be created |
 | `DEPLOY_K8S`                            | yes                                                   | Should the KinD Kubernetes cluster be deployed? |
 | `JUST_K8S`                              | no                                                    | Should just the KinD Kubernetes cluster be depoyed? (i.e. no VOLTHA) |
+| `VOLTHA_NS`                             | `voltha`                                                | K8s namespace into which to deploy voltha PODs |
+| `INFRA_NS`                              | `default`                                               | K8s namespace into which to deploy infrastructure PODs |
+| `BBSIM_NS`                              | `voltha`                                                | K8s namespace into which to deploy BBSIM PODs |
+| `ADAPTER_NS`                            | `voltha`                                                | K8s namespace into which to deploy VOLTHA adapters |
 | `WITH_BBSIM`                            | no                                                    | Should the BBSIM POD be deployed? |
 | `NUM_OF_BBSIM`                          | 1                                                     | number of BBSIM POD to start (minimum = 1, maximum = 10) |
-| `WITH_ONOS`                             | yes                                                   | Should `ONOS` service be deployed? |
+| `WITH_ONOS`                             | yes                                                   | Deploy ONOS (yes/no) or service:port of external ONOS |
 | `WITH_KAFKA`                            | yes                                                   | Deploy private Kafka (yes/no) or k8s servce:port of external Kafka |
 | `WITH_ETCD`                             | yes                                                   | Deploy private etcd (yes/no) or k8s service:port of external etcd |
 | `WITH_RADIUS`                           | no                                                    | Deploy sample RADIUS server (yes/no) or a k8s service:port of external RADIUS |
@@ -131,6 +136,33 @@
 | `VOLTHA_ETCD_PORT`                      | dynamic                                               | (advanced) Override dynamic port selection for port forward for VOLTHA etcd |
 | `VOLTHA_KAFKA_PORT`                     | dynamic                                               | (advanced) Override dynamic port selection for port forward for VOLTHA Kafka API |
 
+### Custom Namespaces
+
+Separate namespaces can be specified for various components
+  - `VOLTHA_NS`  (default: `voltha`)  for cores, ofagent, Etcd (yes), Kafka (yes)
+  - `ADAPTER_NS` (default: `voltha`)  for device adapters
+  - `INFRA_NS`   (default: `default`) for RADIUS, ONOS, Etcd (external), Kafka (external)
+  - `BBSIM_NS`   (default: `voltha`)  for BBSIM instances
+
+As an example `BBSIM_NS=devices` deployes BBSim in the `devices` namespace.
+
+### External Kafka, Etcd and ONOS
+`WITH_ETCD`,  `WITH_KAFKA` and `WITH_ONOS` can have different values depending on the deployment needs:
+
+| VALUE            | DESCRIPTION |
+| ---------------- | --------------- |
+| `yes` or `y`     | installs Etcd and Kafka in the `voltha` namespace |
+| `external`       | installs Etcd and Kafka in the `default` namespace |
+| `<endpoint>`     | connects the deployment to pre-deployed instance of the service |
+
+When specifying the `<endpoint>` of the service the format for each of these is `service-name`[`:port`]. Port is optional and will default to the standard port for the given service. For example, `WITH_KAFA=kafka.infra.svc.cluster.local`
+
+Specifying the endpoint enable to use `./voltha up` incrementally, for example:
+```
+DEPLOY_K8S=n WITH_BBSIM=y WITH_RADIUS=no CONFIG_SADIS=no  WITH_ONOS=onos-openflow.infra.svc.cluster.local  WITH_ETCD=etcd-cluster-client.infra.svc.cluster.local WITH_KAFKA=kafka.infra.svc.cluster.local  INFRA_NS=infra BBSIM_NS=devices ADAPTER_NS=adapters ./voltha up
+```
+starts VOLTHA with external ONOS,KAFKA,ETCD in the `infra` namespace.
+
 ### `CONFIG_SADIS` Values
 
 | VALUE            | DESCRIPTION |
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
new file mode 100644
index 0000000..a4f37dc
--- /dev/null
+++ b/RELEASE_NOTES.md
@@ -0,0 +1,29 @@
+# April 7, 2020
+- Etcd and Kafka can be installed independently of VOLTHA, with `WITH_ETCD` and/or `WITH_KAFKA` set to their endpoints:
+  - `WITH_ETCD=y WITH_KAFKA=y` installs Etcd and Kafka in the `voltha` namespace
+  - `WITH_ETCD=external WITH_KAFKA=external` installs Etcd and Kafka in the `default` namespace
+  - `WITH_ETCD=<etcd-endpoint> WITH_KAFKA=<kafka-endpoint>` connects the deployment to pre-deployed instance of Etcd and Kafka
+- `WITH_ETCD`, `WITH_KAFKA`, and `WITH_ONOS` when used to specify external services (i.e. services that are not nessisarily deployed as part of `kind-voltha`) require the format for each of these is `service-name`[`:port`]. Port is optional and will default to the standard port for the given service.
+- Separate namespaces can be specified for various components
+  - `VOLTHA_NS`  (default: `voltha`)  for cores, ofagent, Etcd (yes), Kafka (yes)
+  - `ADAPTER_NS` (default: `voltha`)  for device adapters
+  - `INFRA_NS`   (default: `default`) for RADIUS, ONOS, Etcd (external), Kafka (external)
+  - `BBSIM_NS`   (default: `voltha`)  for BBSIM instances
+
+
+The changes in this release enable the ability to shorten the development cycle by allowing developers only to cycle (restart) the components required.
+
+For example, if VOLTHA is started with the following command:
+```
+WITH_BBSIM=y WITH_RADIUS=y CONFIG_SADIS=y WITH_ONOS=y WITH_ETCD=external WITH_KAFKA=external INFRA_NS=infra BBSIM_NS=devices ADAPTER_NS=adapters ./voltha up
+```
+And then brought down with the following command:
+```
+DEPLOY_K8S=n WITH_BBSIM=y WITH_RADIUS=no CONFIG_SADIS=no  WITH_ONOS=no WITH_ETCD=no WITH_KAFKA=no INFRA_NS=infra BBSIM_NS=devices ADAPTER_NS=adapters ./voltha down
+```
+Then it can be restarted with the following command and only the VOLTHA core components, adapters, and BBSIM are required to be restarted:
+```
+DEPLOY_K8S=n WITH_BBSIM=y WITH_RADIUS=no CONFIG_SADIS=no  WITH_ONOS=onos-openflow.infra.svc.cluster.local  WITH_ETCD=etcd-cluster-client.infra.svc.cluster.local WITH_KAFKA=kafka.infra.svc.cluster.local  INFRA_NS=infra BBSIM_NS=devices ADAPTER_NS=adapters ./voltha up
+```
+In the above examples namespaces are specified, but this is not required.
+
diff --git a/minimal-values.yaml b/minimal-values.yaml
index fdf4614..226ed8f 100644
--- a/minimal-values.yaml
+++ b/minimal-values.yaml
@@ -70,11 +70,11 @@
 #    tag: master
 # START_OFAGENT_GO - Comment the following block to use the Python implementation
 # of the ofagent
-#  ofagent:
+#  ofagent_go:
 #    repository: voltha/voltha-ofagent-go
 #    tag: master
 # END_OFAGENT_GO
-#  ofagent:
+#  ofagent_py:
 #    repository: voltha/voltha-ofagent-py
 #    tag: 2.1.1
 #  rw_core:
diff --git a/voltha b/voltha
index 2233f89..f4e87d0 100755
--- a/voltha
+++ b/voltha
@@ -71,6 +71,10 @@
 NAME=${NAME:-$TYPE}
 
 ENABLE_ONOS_EXTRANEOUS_RULES=${ENABLE_ONOS_EXTRANEOUS_RULES:-no}
+INFRA_NS=${INFRA_NS:-default}
+VOLTHA_NS=${VOLTHA_NS:-voltha}
+BBSIM_NS=${BBSIM_NS:-voltha}
+ADAPTER_NS=${ADAPTER_NS:-voltha}
 WITH_TIMINGS=${WITH_TIMINGS:-no}
 WITH_BBSIM=${WITH_BBSIM:-no}
 WITH_RADIUS=${WITH_RADIUS:-no}
@@ -87,14 +91,15 @@
 WITH_ETCD=${WITH_ETCD:-yes}
 ONLY_ONE=${ONLY_ONE:-yes}
 CONFIG_SADIS=${CONFIG_SADIS:-no} # yes | no | file | bbsim | URL
-SADIS_SUBSCRIBERS=${SADIS_SUBSCRIBERS:-http://bbsim.voltha.svc:50074/v2/subscribers/%s}
-SADIS_BANDWIDTH_PROFILES=${SADIS_BANDWIDTH_PROFILES:-http://bbsim.voltha.svc:50074/v2/bandwidthprofiles/%s}
+SADIS_SUBSCRIBERS=${SADIS_SUBSCRIBERS:-http://bbsim.$VOLTHA_NS.svc:50074/v2/subscribers/%s}
+SADIS_BANDWIDTH_PROFILES=${SADIS_BANDWIDTH_PROFILES:-http://bbsim.$VOLTHA_NS.svc:50074/v2/bandwidthprofiles/%s}
 SADIS_CFG=${SADIS_CFG:-onos-files/onos-sadis-sample.json}
 INSTALL_ONOS_APPS=${INSTALL_ONOS_APPS:-no}
 JUST_K8S=${JUST_K8S:-no}
 DEPLOY_K8S=${DEPLOY_K8S:-yes}
 INSTALL_KUBECTL=${INSTALL_KUBECTL:-yes}
 INSTALL_HELM=${INSTALL_HELM:-yes}
+HELM_USE_UPGRADE=${HELM_USE_UPGRADE:-no}
 UPDATE_HELM_REPOS=${UPDATE_HELM_REPOS:-yes}
 WAIT_ON_DOWN=${WAIT_ON_DOWN:-yes}
 WAIT_TIMEOUT=${WAIT_TIMEOUT:-30m}
@@ -201,7 +206,6 @@
     WITH_EAPOL \
     WITH_DHCP \
     WITH_IGMP \
-    WITH_ONOS \
     WITH_CHAOS \
     WITH_ADAPTERS \
     WITH_SIM_ADAPTERS \
@@ -212,6 +216,7 @@
     INSTALL_ONOS_APPS \
     INSTALL_KUBECTL \
     INSTALL_HELM \
+    HELM_USE_UPGRADE \
     UPDATE_HELM_REPOS \
     WAIT_ON_DOWN \
     ONLY_ONE \
@@ -252,6 +257,11 @@
     WITH_RADIUS \
     WITH_KAFKA \
     WITH_ETCD \
+    WITH_ONOS \
+    VOLTHA_NS \
+    ADAPTER_NS \
+    INFRA_NS \
+    BBSIM_NS \
     "
 
 # Iterate over yes/no configuration options and validate
@@ -270,25 +280,43 @@
     CONFIG_SADIS="no"
 fi
 
-# Special case for WITH_KAFKA and WITH_ETCD
+# Special case for WITH_ONOS, WITH_RADIUS, WITH_KAFKA, and WITH_ETCD
 if [ $(echo ":y:yes:true:1:" | grep -ic ":$WITH_KAFKA:") -eq 1 ]; then
     WITH_KAFKA="yes"
 fi
 if [ $(echo ":n:no:false:0:" | grep -ic ":$WITH_KAFKA:") -eq 1 ]; then
     WITH_KAFKA="no"
 fi
+if [ $(echo ":external:" | grep -ic ":$WITH_KAFKA:") -eq 1 ]; then
+    WITH_KAFKA="external"
+fi
 if [ $(echo ":y:yes:true:1:" | grep -ic ":$WITH_ETCD:") -eq 1 ]; then
     WITH_ETCD="yes"
 fi
 if [ $(echo ":n:no:false:0:" | grep -ic ":$WITH_ETCD:") -eq 1 ]; then
     WITH_ETCD="no"
 fi
+if [ $(echo ":external:" | grep -ic ":$WITH_ETCD:") -eq 1 ]; then
+    WITH_ETCD="external"
+fi
 if [ $(echo ":y:yes:true:1:" | grep -ic ":$WITH_RADIUS:") -eq 1 ]; then
     WITH_RADIUS="yes"
 fi
 if [ $(echo ":n:no:false:0:" | grep -ic ":$WITH_RADIUS:") -eq 1 ]; then
     WITH_RADIUS="no"
 fi
+if [ $(echo ":y:yes:true:1:" | grep -ic ":$WITH_ONOS:") -eq 1 ]; then
+    WITH_ONOS="yes"
+fi
+if [ $(echo ":n:no:false:0:" | grep -ic ":$WITH_ONOS:") -eq 1 ]; then
+    WITH_ONOS="no"
+fi
+
+if [ $HELM_USE_UPGRADE == "yes" ]; then
+    _HELM_DESC="Upgrade/Install"
+else
+    _HELM_DESC="Install"
+fi
 
 # Check for prerequiste tools
 TOOLS="curl sed jq"
@@ -749,7 +777,7 @@
     fi
     sspin "Remove port-forwards: voltha-api-$NAME$CEOL"
     kill_port_forward voltha-api
-    if [ $WITH_ETCD == "yes" ]; then
+    if [ $WITH_ETCD == "yes" -o $WITH_ETCD == "external" ]; then
         sspin "Remove port-forwards: voltha-etcd-$NAME$CEOL"
         kill_port_forward voltha-etcd-cluster-client
     fi
@@ -769,7 +797,7 @@
         fi
     else
         EXISTS=$(helm list -q)
-        EXPECT="voltha etcd-operator"
+        EXPECT="voltha"
         if [ $WITH_ONOS == yes ]; then
             EXPECT+=" onos"
         fi
@@ -785,6 +813,14 @@
         if [ $WITH_SIM_ADAPTERS == "yes" ]; then
             EXPECT+=" sim"
         fi
+        if [ $WITH_ETCD == "external" ]; then
+            EXPECT+=" etcd-operator etcd-cluster"
+        elif [ $WITH_ETCD == "yes" ]; then
+            EXPECT+=" etcd-operator"
+        fi
+        if [ $WITH_KAFKA == "external" ]; then
+            EXPECT+=" kafka"
+        fi
         bspin "Remove Helm Deployments"
         for i in $EXISTS; do
             for j in $EXPECT; do
@@ -796,21 +832,40 @@
         done
         espin "$VERIFIED Remove Helm Deployments$CEOL"
         if [ "$WAIT_ON_DOWN" == "yes" ]; then
-            PODS="voltha-kafka.* voltha-ofagent.* voltha-rw-core.* voltha-etcd.* etcd-operator.*"
+            PODS="voltha-kafka.* voltha-ofagent.* voltha-rw-core.* voltha-etcd.*"
+            INFRA_PODS=
+            ADAPT_PODS=
+            SIM_PODS=
             if [ $WITH_RADIUS == "yes" ]; then
                 PODS+=" radius.*"
             fi
             if [ $WITH_BBSIM == "yes" ]; then
-                PODS+=" bbsim.*"
+                SIM_PODS+=" bbsim.*"
             fi
             if [ $WITH_OPEN_ADAPTERS -o $WITH_SIM_ADAPTERS ]; then
-                PODS+=" adapter-*"
+                ADAPT_PODS+=" adapter-*"
             fi
-            if [ "$WITH_ONOS" == "yes" ]; then
-              ONOS_PODS="onos-.*"
-              wait_for_pods "default" 0 "not" -1 "Waiting for ONOS PODs to terminate" $ONOS_PODS
-            fi 
-            wait_for_pods "voltha" 0 "not" -1 "Waiting for VOLTHA PODs to terminate" $PODS
+            if [ $WITH_ONOS == "yes" ]; then
+                INFRA_PODS+=" onos-.*"
+            fi
+            if [ $WITH_ETCD == "external" ]; then
+                INFRA_PODS+=" etcd-operator.* etcd-cluster.*"
+            elif [ $WITH_ETCD == "yes" ]; then
+                PODS+=" etcd-operator.*"
+            fi
+            if [ $WITH_KAFKA == "external" ]; then
+                INFRA_PODS+=" kafka.*"
+            fi
+            if [ ! -z "$SIM_PODS" ]; then
+                wait_for_pods "$BBSIM_NS" 0 "not" -1 "Waiting for BBSIM PODs to terminate" $SIM_PODS
+            fi
+            if [ ! -z "$INFRA_PODS" ]; then
+                wait_for_pods "$INFRA_NS" 0 "not" -1 "Waiting for infrastructure PODs to terminate" $INFRA_PODS
+            fi
+            if [ ! -z "$ADAPT_PODS" ]; then
+                wait_for_pods "$ADAPTER_NS" 0 "not" -1 "Waiting for adapter  PODs to terminate" $ADAPT_PODS
+            fi
+            wait_for_pods "$VOLTHA_NS" 0 "not" -1 "Waiting for VOLTHA PODs to terminate" $PODS
         fi
     fi
     exit
@@ -844,7 +899,7 @@
     (set -x; kubectl get --all-namespaces events >> $DATA/all-events.txt 2>&1) >>$LOG 2>&1
     espin - $VERIFIED
     bspin - "Dumping VOLTHA POD details"
-    PODS="$(kubectl -n default get pod -o name | grep onos | sed -e 's/^/default:/g') $(kubectl get -n voltha pod -o name | sed -e 's/^/voltha:/g')"
+    PODS="$(kubectl -n $INFRA_NS get pod -o name | grep onos | sed -e 's/^/$INFRA_NS:/g') $(kubectl get -n $VOLTHA_NS pod -o name | sed -e 's/^/$VOLTHA_NS:/g')"
     SINCE=
     if [ ! -z "$DUMP_FROM" ]; then
         SINCE="--since-time=$DUMP_FROM"
@@ -918,7 +973,14 @@
     local WAIT_START=$(date +%s)
     COUNT=$(expr 300 / 15)
     bspin $INDENT $MESSAGE
-    (set -x; helm install -f $NAME-values.yaml $CHART_ARGS $INTERNAL_EXTRA_HELM_INSTALL_ARGS $EXTRA_HELM_INSTALL_ARGS --set defaults.log_level=$VOLTHA_LOG_LEVEL --namespace $NAMESPACE --name $INAME $CHART_VERSION $EXTRA_HELM_FLAGS $CHART >>$LOG 2>&1) >>$LOG 2>&1
+    if [ $HELM_USE_UPGRADE == "yes" ]; then
+        _HELM_COMMAND="upgrade --install"
+        _HELM_ARGS="$INAME"
+    else
+        _HELM_COMMAND="install"
+        _HELM_ARGS="--name $INAME"
+    fi
+    (set -x; helm $_HELM_COMMAND -f $NAME-values.yaml $CHART_ARGS $INTERNAL_EXTRA_HELM_INSTALL_ARGS $EXTRA_HELM_INSTALL_ARGS --set defaults.log_level=$VOLTHA_LOG_LEVEL --namespace $NAMESPACE $_HELM_ARGS  $CHART_VERSION $EXTRA_HELM_FLAGS $CHART >>$LOG 2>&1) >>$LOG 2>&1
     SUCCESS=$?
     while [ $SUCCESS -ne 0 ]; do
         if [ $(($(date +%s) - $WAIT_START)) -gt $TIMEOUT_SECONDS ]; then
@@ -928,8 +990,10 @@
         sspin $INDENT
         COUNT=$(expr $COUNT - 1)
         if [ $COUNT -eq 0 ]; then
-            (set -x; helm delete --purge $INAME >>$LOG 2>&1) >>$LOG 2>&1
-    (set -x; helm install -f $NAME-values.yaml $CHART_ARGS $INTERNAL_EXTRA_HELM_INSTALL_ARGS $EXTRA_HELM_INSTALL_ARGS --set defaults.log_level=$VOLTHA_LOG_LEVEL --namespace $NAMESPACE --name $INAME $CHART_VERSION $EXTRA_HELM_FLAGS $CHART >>$LOG 2>&1) >>$LOG 2>&1
+            if [ $HELM_USE_UPGRADE == "no" ]; then
+                (set -x; helm delete --purge $INAME >>$LOG 2>&1) >>$LOG 2>&1
+            fi
+            (set -x; helm $_HELM_COMMAND -f $NAME-values.yaml $CHART_ARGS $INTERNAL_EXTRA_HELM_INSTALL_ARGS $EXTRA_HELM_INSTALL_ARGS --set defaults.log_level=$VOLTHA_LOG_LEVEL --namespace $NAMESPACE $_HELM_ARGS $CHART_VERSION $EXTRA_HELM_FLAGS $CHART >>$LOG 2>&1) >>$LOG 2>&1
             SUCCESS=$?
             COUNT=$(expr 300 / 15)
         fi
@@ -1261,20 +1325,24 @@
     exit 0
 fi
 
-if [ $WITH_ETCD != "yes" ]; then
+if [ $WITH_ETCD != "yes" -a $WITH_ETCD != "external" ]; then
     bspin "Skip ETCD Operator Deployment"
     espin $NO_ENTRY
 else
     STIME=$(date +%s)
+    NS=$VOLTHA_NS
+    if [ $WITH_ETCD == "external" ]; then
+        NS=$INFRA_NS
+    fi
     bspin "Verify ETCD Operator $OLD_KEY"
-    if [ $(helm list --deployed --short --namespace voltha "^etcd-operator\$" | wc -l) -ne 1 ]; then
+    if [ $HELM_USE_UPGRADE == "yes" -o $(helm list --deployed --short --namespace $NS "^etcd-operator\$" | wc -l) -ne 1 ]; then
         espin $NOT_VERIFIED
-        helm_install - voltha etcd-operator stable/etcd-operator latest "Install ETCD Operator"
+        helm_install - $NS etcd-operator stable/etcd-operator latest "$_HELM_DESC ETCD Operator"
     else
         espin $VERIFIED
     fi
     EXPECT=$(test "$TYPE" == "minimal" && echo "1" || echo "3")
-    wait_for_pods - "voltha" $EXPECT "includes" -1 "Waiting for ETCD Operator to start" "etcd-operator-.*"
+    wait_for_pods - "$NS" $EXPECT "includes" -1 "Waiting for ETCD Operator to start" "etcd-operator-.*"
     if [ "$WITH_TIMINGS" == "yes" ]; then
         printtime $(expr $(date +%s) - $STIME)
     fi
@@ -1283,26 +1351,26 @@
 STIME=$(date +%s)
 if [ $WITH_ONOS == "yes" ]; then
     bspin "Verify ONOS installed $BIRD"
-    if [ $(helm list --deployed --short --namespace default "^onos\$" | wc -l) -ne 1 ]; then
+    if [ $HELM_USE_UPGRADE == "yes" -o $(helm list --deployed --short --namespace $INFRA_NS "^onos\$" | wc -l) -ne 1 ]; then
         espin $NOT_VERIFIED
-        EXTRA_HELM_FLAGS="$SET_TAG $EXTRA_HELM_FLAGS" helm_install - default onos $ONOS_CHART $ONOS_CHART_VERSION "Install ONOS"
+        EXTRA_HELM_FLAGS="$SET_TAG $EXTRA_HELM_FLAGS" helm_install - $INFRA_NS onos $ONOS_CHART $ONOS_CHART_VERSION "$_HELM_DESC ONOS"
     else
         espin $VERIFIED
     fi
-    wait_for_pods - "default" 1 "includes" -1 "Waiting for ONOS to start" "onos-.*"
+    wait_for_pods - "$INFRA_NS" 1 "includes" -1 "Waiting for ONOS to start" "onos-.*"
 
     if [ $WITH_PORT_FORWARDS == "yes" ]; then
         bspin - "Forward ONOS API port $FORWARD"
         kill_port_forward onos-ui
-        port_forward default onos-ui $ONOS_API_PORT 8181
+        port_forward $INFRA_NS onos-ui $ONOS_API_PORT 8181
         espin - $VERIFIED
         bspin - "Forward ONOS SSH port $FORWARD"
         kill_port_forward onos-ssh
-        port_forward default onos-ssh $ONOS_SSH_PORT 8101
+        port_forward $INFRA_NS onos-ssh $ONOS_SSH_PORT 8101
         espin - $VERIFIED
         _ONOS_API_EP="127.0.0.1:$ONOS_API_PORT"
     else
-        _ONOS_API_EP=$(get_service_ep default onos-ui)
+        _ONOS_API_EP=$(get_service_ep $INFRA_NS onos-ui)
     fi
     bspin - "Verify or download ONOS configuration support files $DOWNLOAD"
     ONOS_FILES="olt-onos-enableExtraneousRules.json onos-aaa.json \
@@ -1340,9 +1408,15 @@
 
     if [ $WITH_KAFKA != "no" ]; then
         check_onos_app_active org.opencord.kafka
-        _HOST=voltha-kafka.voltha.svc.cluster.local
+        _HOST=voltha-kafka.$INFRA_NS.svc.cluster.local
         _PORT=9092
-        if [ $WITH_KAFKA != "yes" ]; then
+        if [ $WITH_KAFKA == "yes" ]; then
+            _HOST=voltha-kafka.$VOLTHA_NS.svc.cluster.local
+            _PORT=9092
+        elif [ $WITH_KAFKA == "external" ]; then
+            _HOST=kafka.$INFRA_NS.svc.cluster.local
+            _PORT=9092
+        else
             _HOST=$(echo $WITH_KAFKA | cut -d: -f1)
             _PORT=$(echo $WITH_KAFKA | cut -s -d: -f2)
             _PORT=${_PORT:-9092}
@@ -1393,7 +1467,7 @@
 {
     "sadis": {
         "integration": {
-            "url": "http://bbsim.voltha.svc.cluster.local:50074/v2/subscribers/%s",
+            "url": "http://bbsim.$BBSIM_NS.svc.cluster.local:50074/v2/subscribers/%s",
             "cache": {
                 "enabled": true,
                 "maxsize": 50,
@@ -1403,7 +1477,7 @@
     },
     "bandwidthprofile": {
         "integration": {
-            "url": "http://bbsim.voltha.svc.cluster.local:50074/v2/bandwidthprofiles/%s",
+            "url": "http://bbsim.$BBSIM_NS.svc.cluster.local:50074/v2/bandwidthprofiles/%s",
             "cache": {
                 "enabled": true,
                 "maxsize": 50,
@@ -1449,6 +1523,58 @@
     printtime $(expr $(date +%s) - $STIME)
 fi
 
+if [ $WITH_ETCD == "external" ]; then
+    STIME=$(date +%s)
+    bspin "Verify external ETCD cluster $OLD_KEY"
+    EXPECT=$(test "$TYPE" == "minimal" && echo "1" || echo "3")
+    if [ $HELM_USE_UPGRADE == "yes" -o $(helm list --deployed --short --namespace $INFRA_NS "^etcd-cluster\$" | wc -l) -ne 1 ]; then
+        espin $NOT_VERIFIED
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+="--set clusterName=etcd-cluster --set autoCompactionRetention=1 --set clusterSize=$EXPECT"
+        helm_install - $INFRA_NS etcd-cluster onf/voltha-etcd-cluster latest "$_HELM_DESC external ETCD cluster"
+    else
+        espin $VERIFIED
+    fi
+    wait_for_pods - "$INFRA_NS" $EXPECT "includes" -1 "Waiting for ETCD cluster to start" "etcd-cluster-.*"
+    if [ "$WITH_TIMINGS" == "yes" ]; then
+        printtime $(expr $(date +%s) - $STIME)
+    fi
+fi
+
+if [ $WITH_KAFKA == "external" ]; then
+    _TMP=$(mktemp -u)
+    _COUNT=$(test $TYPE == "minimal" && echo "1" || echo "3")
+    cat << EOC > $_TMP
+configurationOverrides:
+  "default.replication.factor": $_COUNT
+  "offsets.topic.replication.factor": $_COUNT
+  "log.retention.hours": 4
+  "log.message.timestamp.type": "LogAppendTime"
+persistence:
+  enabled: false
+zookeeper:
+  replicaCount: 1
+  persistence:
+    enabled: false
+replicas: $_COUNT
+EOC
+    STIME=$(date +%s)
+    bspin "Verify external Kafka cluster $OLD_KEY"
+    EXPECT=$(test "$TYPE" == "minimal" && echo "2" || echo "4")
+    if [ $HELM_USE_UPGRADE == "yes" -o $(helm list --deployed --short --namespace $INFRA_NS "^kafka\$" | wc -l) -ne 1 ]; then
+        espin $NOT_VERIFIED
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" -f $_TMP"
+        helm_install - $INFRA_NS kafka incubator/kafka latest "$_HELM_DESC external Kafka cluster"
+    else
+        espin $VERIFIED
+    fi
+    # DKB
+    wait_for_pods - "$INFRA_NS" $EXPECT "includes" -1 "Waiting for Kafka cluster to start" "kafka-.*"
+    if [ "$WITH_TIMINGS" == "yes" ]; then
+        printtime $(expr $(date +%s) - $STIME)
+    fi
+    rm -rf $_TMP
+fi
+
 STIME=$(date +%s)
 EXPECT=1
 if [ "$ONLY_ONE" == "yes" ]; then
@@ -1457,40 +1583,65 @@
 else
     EXPECT=$((EXPECT+2))
 fi
-if [ $WITH_ETCD != "yes" ]; then
-    INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set private_etcd_cluster=false"
-    if [ $WITH_ETCD != "no" ]; then
+case $WITH_ETCD in 
+    no)
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set private_etcd_cluster=false"
+        ;;
+    yes)
+        _HOST="voltha-etcd-cluster-client.$VOLTHA_NS.svc.cluster.local"
+        _PORT=2379
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set services.etcd.service=$_HOST --set services.etcd.port=$_PORT"
+        EXPECT=$((EXPECT+$(test "$TYPE" == "minimal" && echo "1" || echo "3")))
+        ;;
+    external)
+        _HOST="etcd-cluster-client.$INFRA_NS.svc.cluster.local"
+        _PORT=2379
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set private_etcd_cluster=false --set services.etcd.service=$_HOST --set services.etcd.port=$_PORT"
+        ;;
+    *)
         _HOST=$(echo $WITH_ETCD | cut -d: -f1)
         _PORT=$(echo $WITH_ETCD | cut -s -d: -f2)
         _PORT=${_PORT:-2379}
-        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set services.etcd.service=$_HOST --set services.etcd.port=$_PORT"
-    fi
-else
-    if [ $TYPE == "minimal" ]; then
-        EXPECT=$((EXPECT+1))
-    else
-        EXPECT=$((EXPECT+3))
-    fi
-fi
-if [ $WITH_KAFKA != "yes" ]; then
-    INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set private_kafka_cluster=false"
-    if [ $WITH_KAFKA != "no" ]; then
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set private_etcd_cluster=false --set services.etcd.service=$_HOST --set services.etcd.port=$_PORT"
+        ;;
+esac
+case $WITH_KAFKA in
+    no)
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set private_kafka_cluster=false"
+        ;;
+    yes)
+        _HOST=voltha-kafka.$VOLTHA_NS.svc.cluster.local
+        _PORT=9092
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set kafka_broker=$_HOST:$_PORT --set services.kafka.adapter.service=$_HOST --set services.kafka.adapter.port=$_PORT --set services.kafka.cluster.service=$_HOST --set services.kafka.cluster.port=$_PORT"
+        EXPECT=$((EXPECT+$(test "$TYPE" == "minimal" && echo "2" || echo "4")))
+        ;;
+    external)
+        _HOST=kafka.$INFRA_NS.svc.cluster.local
+        _PORT=9092
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set private_kafka_cluster=false --set kafka_broker=$_HOST:$_PORT --set services.kafka.adapter.service=$_HOST --set services.kafka.adapter.port=$_PORT --set services.kafka.cluster.service=$_HOST --set services.kafka.cluster.port=$_PORT"
+        ;;
+    *)
         _HOST=$(echo $WITH_KAFKA | cut -d: -f1)
         _PORT=$(echo $WITH_KAFKA | cut -s -d: -f2)
         _PORT=${_PORT:-9092}
-        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set kafka_broker=$_HOST:$_PORT --set services.kafka.adapter.service=$_HOST --set services.kafka.adapter.port=$_PORT --set services.kafka.cluster.service=$_HOST --set services.kafka.cluster.port=$_PORT"
-    fi
-else
-    if [ $TYPE == "minimal" ]; then
-        EXPECT=$((EXPECT+2))
-    else
-        EXPECT=$((EXPECT+4))
-    fi
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set private_kafka_cluster=false --set kafka_broker=$_HOST:$_PORT --set services.kafka.adapter.service=$_HOST --set services.kafka.adapter.port=$_PORT --set services.kafka.cluster.service=$_HOST --set services.kafka.cluster.port=$_PORT"
+        ;;
+esac
+
+if [ $WITH_ONOS == "yes" ]; then
+    _HOST=onos-openflow.$INFRA_NS.svc.cluster.local
+    _PORT=6653
+    INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set services.controller.service=$_HOST --set services.controller.port=$_PORT"
+elif [ $WITH_ONOS != "no" ]; then
+    _HOST=$(echo $WITH_ONOS | cut -d: -f1)
+    _PORT=$(echo $WITH_ONOS | cut -s -d: -f2)
+    _PORT=${_PORT:-6653}
+    INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set services.controller.service=$_HOST --set services.controller.port=$_PORT"
 fi
 bspin "Verify VOLTHA installed $HIGH_VOLTAGE"
-if [ $(helm list --deployed --short --namespace voltha "^voltha\$" | wc -l) -ne 1 ]; then
+if [ $HELM_USE_UPGRADE == "yes" -o $(helm list --deployed --short --namespace $VOLTHA_NS "^voltha\$" | wc -l) -ne 1 ]; then
     espin $NOT_VERIFIED
-    helm_install - voltha voltha $VOLTHA_CHART $VOLTHA_CHART_VERSION "Install VOLTHA Core"
+    helm_install - $VOLTHA_NS voltha $VOLTHA_CHART $VOLTHA_CHART_VERSION "$_HELM_DESC VOLTHA Core"
 else
     espin $VERIFIED
 fi
@@ -1501,7 +1652,7 @@
     voltha-etcd-cluster-.* \
     voltha-kafka-.* \
     voltha-zookeeper-.*"
-wait_for_pods - "voltha" $EXPECT "includes" -1 "Waiting for VOLTHA Core to start" $VOLTHA
+wait_for_pods - "$VOLTHA_NS" $EXPECT "includes" -1 "Waiting for VOLTHA Core to start" $VOLTHA
 if [ "$WITH_TIMINGS" == "yes" ]; then
     printtime $(expr $(date +%s) - $STIME)
 fi
@@ -1509,28 +1660,40 @@
 if [ "$WITH_ADAPTERS" == "yes" ]; then
     STIME=$(date +%s)
     EXPECT=0
-    if [ $WITH_ETCD != "yes" ]; then
-        if [ $WITH_ETCD != "no" ]; then
-            _HOST=$(echo $WITH_ETCD | cut -d: -f1)
-            _PORT=$(echo $WITH_ETCD | cut -s -d: -f2)
-            _PORT=${_PORT:-2379}
-            INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set services.etcd.service=$_HOST --set services.etcd.port=$_PORT"
-        fi
+    if [ $WITH_ETCD == "yes" ]; then
+        _HOST=voltha-etcd-cluster-client.$VOLTHA_NS.svc.cluster.local
+        _PORT=2379
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set services.etcd.service=$_HOST --set services.etcd.port=$_PORT"
+    elif [ $WITH_ETCD == "external" ]; then
+        _HOST=etcd-cluster-client.$INFRA_NS.svc.cluster.local
+        _PORT=2379
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set services.etcd.service=$_HOST --set services.etcd.port=$_PORT"
+    elif [ $WITH_ETCD != "no" ]; then
+        _HOST=$(echo $WITH_ETCD | cut -d: -f1)
+        _PORT=$(echo $WITH_ETCD | cut -s -d: -f2)
+        _PORT=${_PORT:-2379}
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set services.etcd.service=$_HOST --set services.etcd.port=$_PORT"
     fi
-    if [ $WITH_KAFKA != "yes" ]; then
-        if [ $WITH_KAFKA != "no" ]; then
-            _HOST=$(echo $WITH_KAFKA | cut -d: -f1)
-            _PORT=$(echo $WITH_KAFKA | cut -s -d: -f2)
-            _PORT=${_PORT:-9092}
-            INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set kafka_broker=$_HOST:$_PORT --set services.kafka.adapter.service=$_HOST --set services.kafka.adapter.port=$_PORT --set services.kafka.cluster.service=$_HOST --set services.kafka.cluster.port=$_PORT"
-        fi
+    if [ $WITH_KAFKA == "yes" ]; then
+        _HOST=voltha-kafka.$VOLTHA_NS.svc.cluster.local
+        _PORT=9092
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set kafka_broker=$_HOST:$_PORT --set services.kafka.adapter.service=$_HOST --set services.kafka.adapter.port=$_PORT --set services.kafka.cluster.service=$_HOST --set services.kafka.cluster.port=$_PORT"
+    elif [ $WITH_KAFKA == "external" ]; then
+        _HOST=kafka.$INFRA_NS.svc.cluster.local
+        _PORT=9092
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set kafka_broker=$_HOST:$_PORT --set services.kafka.adapter.service=$_HOST --set services.kafka.adapter.port=$_PORT --set services.kafka.cluster.service=$_HOST --set services.kafka.cluster.port=$_PORT"
+    elif [ $WITH_KAFKA != "no" ]; then
+        _HOST=$(echo $WITH_KAFKA | cut -d: -f1)
+        _PORT=$(echo $WITH_KAFKA | cut -s -d: -f2)
+        _PORT=${_PORT:-9092}
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set kafka_broker=$_HOST:$_PORT --set services.kafka.adapter.service=$_HOST --set services.kafka.adapter.port=$_PORT --set services.kafka.cluster.service=$_HOST --set services.kafka.cluster.port=$_PORT"
     fi
     echo -e "Verify Adapters $PLUG"
     if [ "$WITH_SIM_ADAPTERS" == "yes" ]; then
         bspin - "Verify Simulated Adapters installed"
-        if [ $(helm list --deployed --short --namespace voltha "^sim\$" | wc -l) -ne 1 ]; then
+        if [ $HELM_USE_UPGRADE == "yes" -o $(helm list --deployed --short --namespace $ADAPTER_NS  "^sim\$" | wc -l) -ne 1 ]; then
             espin - $NOT_VERIFIED
-            helm_install - voltha sim $VOLTHA_ADAPTER_SIM_CHART $VOLTHA_ADAPTER_SIM_CHART_VERSION "Install Simulated Adapters"
+            helm_install - $ADAPTER_NS  sim $VOLTHA_ADAPTER_SIM_CHART $VOLTHA_ADAPTER_SIM_CHART_VERSION "$_HELM_DESC Simulated Adapters"
         else
             espin - $VERIFIED
         fi
@@ -1539,16 +1702,16 @@
 
     if [ "$WITH_OPEN_ADAPTERS" == "yes" ]; then
         bspin - "Verify OpenOLT Adapter installed"
-        if [ $(helm list --deployed --short --namespace voltha "^open-olt\$" | wc -l) -ne 1 ]; then
+        if [ $HELM_USE_UPGRADE == "yes" -o $(helm list --deployed --short --namespace $ADAPTER_NS  "^open-olt\$" | wc -l) -ne 1 ]; then
             espin - $NOT_VERIFIED
-            helm_install - voltha open-olt $VOLTHA_ADAPTER_OPEN_OLT_CHART $VOLTHA_ADAPTER_OPEN_OLT_CHART_VERSION "Install OpenOLT Adapter"
+            helm_install - $ADAPTER_NS open-olt $VOLTHA_ADAPTER_OPEN_OLT_CHART $VOLTHA_ADAPTER_OPEN_OLT_CHART_VERSION "$_HELM_DESC OpenOLT Adapter"
         else
             espin - $VERIFIED
         fi
         bspin - "Verify OpenONU Adapter installed"
-        if [ $(helm list --deployed --short --namespace voltha "^open-onu\$" | wc -l) -ne 1 ]; then
+        if [ $HELM_USE_UPGRADE == "yes" -o $(helm list --deployed --short --namespace $ADAPTER_NS  "^open-onu\$" | wc -l) -ne 1 ]; then
             espin - $NOT_VERIFIED
-            helm_install - voltha open-onu $VOLTHA_ADAPTER_OPEN_ONU_CHART $VOLTHA_ADAPTER_OPEN_ONU_CHART_VERSION "Install OpenONU Adapter"
+            helm_install - $ADAPTER_NS  open-onu $VOLTHA_ADAPTER_OPEN_ONU_CHART $VOLTHA_ADAPTER_OPEN_ONU_CHART_VERSION "$_HELM_DESC OpenONU Adapter"
         else
             espin - $VERIFIED
         fi
@@ -1557,7 +1720,7 @@
     INTERNAL_EXTRA_HELM_INSTALL_ARGS=
 
     ADAPTERS="adapter-.*"
-    wait_for_pods - "voltha" $EXPECT "includes" -1 "Waiting for adapters to start" $ADAPTERS
+    wait_for_pods - "$ADAPTER_NS " $EXPECT "includes" -1 "Waiting for adapters to start" $ADAPTERS
     if [ "$WITH_TIMINGS" == "yes" ]; then
         printtime $(expr $(date +%s) - $STIME)
     fi
@@ -1573,17 +1736,17 @@
         else
             instance_num=$instance
         fi
-        if [ $(helm list --deployed --short --namespace voltha "^bbsim${instance_num}\$" | wc -l) -ne 1 ]; then
+        if [ $HELM_USE_UPGRADE == "yes" -o $(helm list --deployed --short --namespace $BBSIM_NS "^bbsim${instance_num}\$" | wc -l) -ne 1 ]; then
             espin - $NOT_VERIFIED
             S_TAG=$((900+$instance))
             INTERNAL_EXTRA_HELM_INSTALL_ARGS="--set olt_id=$instance,s_tag=$S_TAG"
-            helm_install - voltha bbsim${instance_num} $VOLTHA_BBSIM_CHART $VOLTHA_BBSIM_CHART_VERSION "Install BBSIM${instance_num}"
+            helm_install - $BBSIM_NS bbsim${instance_num} $VOLTHA_BBSIM_CHART $VOLTHA_BBSIM_CHART_VERSION "$_HELM_DESC BBSIM${instance_num}"
             INTERNAL_EXTRA_HELM_INSTALL_ARGS=
         else
             espin - $VERIFIED
         fi
     done
-    wait_for_pods - "voltha" $NUM_OF_BBSIM "includes" -1 "Waiting for BBSIM to start" "bbsim*"
+    wait_for_pods - "$BBSIM_NS" $NUM_OF_BBSIM "includes" -1 "Waiting for BBSIM to start" "bbsim*"
     if [ "$WITH_TIMINGS" == "yes" ]; then
         printtime $(expr $(date +%s) - $STIME)
     fi
@@ -1593,13 +1756,13 @@
     STIME=$(date +%s)
     echo -e "Verify RADIUS $LOCK"
     bspin - "Verify RADIUS Installed"
-    if [ $(helm list --deployed --short --namespace voltha "^radius\$" | wc -l) -ne 1 ]; then
+    if [ $HELM_USE_UPGRADE == "yes" -o $(helm list --deployed --short --namespace $INFRA_NS "^radius\$" | wc -l) -ne 1 ]; then
         espin - $NOT_VERIFIED
-        helm_install - voltha radius onf/freeradius latest "Install RADIUS"
+        helm_install - $INFRA_NS radius onf/freeradius latest "$_HELM_DESC RADIUS"
     else
         espin - $VERIFIED
     fi
-    wait_for_pods - "voltha" 1 "includes" -1 "Waiting for RADIUS to start" "radius-.*"
+    wait_for_pods - "$INFRA_NS" 1 "includes" -1 "Waiting for RADIUS to start" "radius-.*"
     if [ "$WITH_TIMINGS" == "yes" ]; then
         printtime $(expr $(date +%s) - $STIME)
     fi
@@ -1609,18 +1772,20 @@
     STIME=$(date +%s)
     bspin - "Forward VOLTHA API port $FORWARD"
     kill_port_forward voltha-api
-    port_forward voltha voltha-api $VOLTHA_API_PORT 55555
+    port_forward $VOLTHA_NS  voltha-api $VOLTHA_API_PORT 55555
     espin - $VERIFIED
-    if [ $WITH_ETCD == "yes" ]; then
+    if [ $WITH_ETCD == "yes" -o $WITH_ETCD == "external" ]; then
+        _NS=$(test $WITH_ETCD == "yes" && echo $VOLTHA_NS || echo $INFRA_NS)
         bspin - "Forward VOLTHA ETCD port $FORWARD"
         kill_port_forward voltha-etcd-cluster-client
-        port_forward voltha voltha-etcd-cluster-client $VOLTHA_ETCD_PORT 2379
+        port_forward $_NS voltha-etcd-cluster-client $VOLTHA_ETCD_PORT 2379
         espin - $VERIFIED
     fi
-    if [ $WITH_KAFKA == "yes" ]; then
+    if [ $WITH_KAFKA == "yes" -o $WITH_KAFKA == "external" ]; then
+        _NS=$(test $WITH_ETCD == "yes" && echo $VOLTHA_NS || echo $INFRA_NS)
         bspin - "Forward VOLTHA Kafka port $FORWARD"
         kill_port_forward voltha-kafka
-        port_forward voltha voltha-kafka $VOLTHA_KAFKA_PORT 9092
+        port_forward $_NS voltha-kafka $VOLTHA_KAFKA_PORT 9092
         espin - $VERIFIED
     fi
     if [ "$WITH_TIMINGS" == "yes" ]; then
@@ -1629,7 +1794,7 @@
 fi
 
 if [ $WITH_ONOS == "yes" -a $WITH_RADIUS != "no" ]; then
-    _HOST=radius.voltha.svc.cluster.local
+    _HOST=radius.$INFRA_NS.svc.cluster.local
     _PORT=1812
     if [ $WITH_RADIUS != "yes" ]; then
         _HOST=$(echo $WITH_RADIUS | cut -d: -f1)
@@ -1645,9 +1810,9 @@
     STIME=$(date +%s)
     echo -e "Verify kube-monkey $LOCK"
     bspin - "Verify kube-monkey Installed"
-    if [ $(helm list --deployed --short --namespace kube-monkey "^monkey\$" | wc -l) -ne 1 ]; then
+    if [ $HELM_USE_UPGRADE == "yes" -o $(helm list --deployed --short --namespace kube-monkey "^monkey\$" | wc -l) -ne 1 ]; then
         espin - $NOT_VERIFIED
-        helm_install - kube-monkey monkey ./kube-monkey/helm/kubemonkey latest "Install Chaos Monkey"
+        helm_install - kube-monkey monkey ./kube-monkey/helm/kubemonkey latest "$_HELM_DESC Chaos Monkey"
     else
         espin - $VERIFIED
     fi
@@ -1669,7 +1834,7 @@
     fi
 else
     KAFKA_FLAG="-k $(get_service_ep voltha voltha-kafka)"
-    SERVER_FLAG="-s $(get_service_ep voltha voltha-api)"
+    SERVER_FLAG="-s $(get_service_ep $VOLTHA_NS  voltha-api)"
     ETCD_FLAG=
     if [ "$MIN_VC_VERSION" == "1.0.15" ]; then
         ETCD_FLAG="-e $(get_service_ep voltha voltha-etcd-client)"
