diff --git a/installers/charmed_install.sh b/installers/charmed_install.sh
index 86ac0c2..9fda516 100755
--- a/installers/charmed_install.sh
+++ b/installers/charmed_install.sh
@@ -43,13 +43,13 @@
         mkdir -p ~/.kube
         sudo chown -f -R `whoami` ~/.kube
         KUBEGRP="microk8s"
+        microk8s status --wait-ready
     else
         KUBECTL="kubectl"
         sudo snap install kubectl --classic
         export KUBECONFIG=${KUBECFG}
         KUBEGRP=$(id -g -n)
     fi
-    sleep 10
     sudo snap install juju --classic --channel=2.8/stable
 }
 
@@ -71,6 +71,17 @@
 EOF
             exit 1
         fi
+    else
+        CONTROLLER_PRESENT=$(juju controllers 2>/dev/null| grep ${CONTROLLER_NAME} | wc -l)
+        if [ $CONTROLLER_PRESENT -le 0 ]; then
+            cat << EOF
+Threre is no VCA present with the name "${CONTROLLER_NAME}".  Please specify a VCA
+that exists, or remove the --vca ${CONTROLLER_NAME} option.
+
+Please retry the installation with one of the solutions applied.
+EOF
+            exit 1
+        fi
     fi
 
     if [ -v KUBECFG ]; then
@@ -80,6 +91,7 @@
             --agent-version=2.8.1
     else
         sg ${KUBEGRP} -c "echo ${DEFAULT_IP}-${DEFAULT_IP} | microk8s.enable metallb"
+        sg ${KUBEGRP} -c "microk8s.enable ingress"
         sg ${KUBEGRP} -c "microk8s.enable storage dns"
         TIME_TO_WAIT=30
         start_time="$(date -u +%s)"
@@ -160,7 +172,6 @@
     juju add-cloud -c $CONTROLLER_NAME lxd-cloud $LXD_CLOUD --force
     juju add-credential -c $CONTROLLER_NAME lxd-cloud -f $LXD_CREDENTIALS
     sg lxd -c "lxd waitready"
-    #juju add-model test lxd-cloud || true
     juju controller-config features=[k8s-operators]
 }
 
@@ -177,7 +188,7 @@
             exit 1
         fi
 
-        if [ $(sg ${KUBEGRP} -c "${KUBECTL} get ingress -n osm -o json | jq -r '.items[$INDEX].metadata.name'") == ${SERVICE} ] ; then
+        if [ $(sg ${KUBEGRP} -c "${KUBECTL} get ingresses.networking -n osm -o json | jq -r '.items[$INDEX].metadata.name'") == ${SERVICE} ] ; then
             break
         fi
         sleep 1
@@ -205,7 +216,6 @@
     check_osm_deployed
     echo "OSM with charms deployed"
     if [ ! -v KUBECFG ]; then
-        sg ${KUBEGRP} -c "microk8s.enable ingress"
         API_SERVER=${DEFAULT_IP}
     else
         API_SERVER=$(kubectl config view --minify | grep server | cut -f 2- -d ":" | tr -d " ")
@@ -216,24 +226,37 @@
         API_SERVER="$(echo $hostport | sed -e 's,:.*,,g')"
     fi
 
+    # Expose OSM services
+    # Expose Grafana
+    juju config grafana-k8s juju-external-hostname=grafana.${API_SERVER}.xip.io
+    juju expose grafana-k8s
+    wait_for_port grafana-k8s 0
+
+    # Expose NBI
     juju config nbi-k8s juju-external-hostname=nbi.${API_SERVER}.xip.io
     juju expose nbi-k8s
+    wait_for_port nbi-k8s 1
 
-    wait_for_port nbi-k8s 0
-    sg ${KUBEGRP} -c "${KUBECTL} get ingress -n osm -o json | jq '.items[0].metadata.annotations += {\"nginx.ingress.kubernetes.io/backend-protocol\": \"HTTPS\"}' | ${KUBECTL} --validate=false replace -f -"
-    sg ${KUBEGRP} -c "${KUBECTL} get ingress -n osm -o json | jq '.items[0].metadata.annotations += {\"nginx.ingress.kubernetes.io/proxy-body-size\": \"0\"}' | ${KUBECTL} replace -f -"
-
+    # Expose NG UI
     juju config ng-ui juju-external-hostname=ui.${API_SERVER}.xip.io
     juju expose ng-ui
+    wait_for_port ng-ui 2
 
-    wait_for_port ng-ui 1
-    sg ${KUBEGRP} -c "${KUBECTL} get ingress -n osm -o json | jq '.items[2].metadata.annotations += {\"nginx.ingress.kubernetes.io/proxy-body-size\": \"0\"}' | ${KUBECTL} --validate=false replace -f -"
+    # Expose Prometheus
+    juju config prometheus-k8s juju-external-hostname=prometheus.${API_SERVER}.xip.io
+    juju expose prometheus-k8s
+    wait_for_port prometheus-k8s 3
 
+    # Expose UI
     juju config ui-k8s juju-external-hostname=osm.${API_SERVER}.xip.io
     juju expose ui-k8s
+    wait_for_port ui-k8s 4
 
-    wait_for_port ui-k8s 2
-    sg ${KUBEGRP} -c "${KUBECTL} get ingress -n osm -o json | jq '.items[1].metadata.annotations += {\"nginx.ingress.kubernetes.io/proxy-body-size\": \"0\"}' | ${KUBECTL} --validate=false replace -f -"
+    # Apply annotations
+    sg ${KUBEGRP} -c "${KUBECTL} annotate ingresses.networking nginx.ingress.kubernetes.io/backend-protocol=HTTPS -n osm -l juju-app=nbi-k8s"
+    sg ${KUBEGRP} -c "${KUBECTL} annotate ingresses.networking nginx.ingress.kubernetes.io/proxy-body-size=0 -n osm -l juju-app=nbi-k8s"
+    sg ${KUBEGRP} -c "${KUBECTL} annotate ingresses.networking nginx.ingress.kubernetes.io/proxy-body-size=0 -n osm -l juju-app=ng-ui"
+    sg ${KUBEGRP} -c "${KUBECTL} annotate ingresses.networking nginx.ingress.kubernetes.io/proxy-body-size=0 -n osm -l juju-app=ui-k8s"
 }
 
 function check_osm_deployed() {
