diff --git a/installers/full_install_osm.sh b/installers/full_install_osm.sh
index a7f46a2..b1e868a 100755
--- a/installers/full_install_osm.sh
+++ b/installers/full_install_osm.sh
@@ -316,212 +316,36 @@
     [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
 }
 
-function generate_k8s_manifest_files() {
-    [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
-    #Kubernetes resources
-    sudo cp -bR ${OSM_DEVOPS}/installers/docker/osm_pods $OSM_DOCKER_WORK_DIR
-    [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function generate_docker_env_files() {
-    [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
-    echo "Doing a backup of existing env files"
-    sudo cp $OSM_DOCKER_WORK_DIR/keystone-db.env{,~}
-    sudo cp $OSM_DOCKER_WORK_DIR/keystone.env{,~}
-    sudo cp $OSM_DOCKER_WORK_DIR/lcm.env{,~}
-    sudo cp $OSM_DOCKER_WORK_DIR/mon.env{,~}
-    sudo cp $OSM_DOCKER_WORK_DIR/nbi.env{,~}
-    sudo cp $OSM_DOCKER_WORK_DIR/pol.env{,~}
-    sudo cp $OSM_DOCKER_WORK_DIR/ro-db.env{,~}
-    sudo cp $OSM_DOCKER_WORK_DIR/ro.env{,~}
-    if [ -n "${INSTALL_NGSA}" ]; then
-        sudo cp $OSM_DOCKER_WORK_DIR/ngsa.env{,~}
-        sudo cp $OSM_DOCKER_WORK_DIR/webhook-translator.env{,~}
-    fi
-
-    echo "Generating docker env files"
-    # LCM
-    if [ ! -f $OSM_DOCKER_WORK_DIR/lcm.env ]; then
-        echo "OSMLCM_DATABASE_COMMONKEY=${OSM_DATABASE_COMMONKEY}" | sudo tee -a $OSM_DOCKER_WORK_DIR/lcm.env
-    fi
-
-    if ! grep -Fq "OSMLCM_VCA_HOST" $OSM_DOCKER_WORK_DIR/lcm.env; then
-        echo "OSMLCM_VCA_HOST=${OSM_VCA_HOST}" | sudo tee -a $OSM_DOCKER_WORK_DIR/lcm.env
-    else
-        sudo sed -i "s|OSMLCM_VCA_HOST.*|OSMLCM_VCA_HOST=$OSM_VCA_HOST|g" $OSM_DOCKER_WORK_DIR/lcm.env
-    fi
-
-    if ! grep -Fq "OSMLCM_VCA_SECRET" $OSM_DOCKER_WORK_DIR/lcm.env; then
-        echo "OSMLCM_VCA_SECRET=${OSM_VCA_SECRET}" | sudo tee -a $OSM_DOCKER_WORK_DIR/lcm.env
-    else
-        sudo sed -i "s|OSMLCM_VCA_SECRET.*|OSMLCM_VCA_SECRET=$OSM_VCA_SECRET|g" $OSM_DOCKER_WORK_DIR/lcm.env
-    fi
-
-    if ! grep -Fq "OSMLCM_VCA_PUBKEY" $OSM_DOCKER_WORK_DIR/lcm.env; then
-        echo "OSMLCM_VCA_PUBKEY=${OSM_VCA_PUBKEY}" | sudo tee -a $OSM_DOCKER_WORK_DIR/lcm.env
-    else
-        sudo sed -i "s|OSMLCM_VCA_PUBKEY.*|OSMLCM_VCA_PUBKEY=${OSM_VCA_PUBKEY}|g" $OSM_DOCKER_WORK_DIR/lcm.env
-    fi
-
-    if ! grep -Fq "OSMLCM_VCA_CACERT" $OSM_DOCKER_WORK_DIR/lcm.env; then
-        echo "OSMLCM_VCA_CACERT=${OSM_VCA_CACERT}" | sudo tee -a $OSM_DOCKER_WORK_DIR/lcm.env
-    else
-        sudo sed -i "s|OSMLCM_VCA_CACERT.*|OSMLCM_VCA_CACERT=${OSM_VCA_CACERT}|g" $OSM_DOCKER_WORK_DIR/lcm.env
-    fi
-
-    if [ -n "$OSM_VCA_APIPROXY" ]; then
-        if ! grep -Fq "OSMLCM_VCA_APIPROXY" $OSM_DOCKER_WORK_DIR/lcm.env; then
-            echo "OSMLCM_VCA_APIPROXY=${OSM_VCA_APIPROXY}" | sudo tee -a $OSM_DOCKER_WORK_DIR/lcm.env
-        else
-            sudo sed -i "s|OSMLCM_VCA_APIPROXY.*|OSMLCM_VCA_APIPROXY=${OSM_VCA_APIPROXY}|g" $OSM_DOCKER_WORK_DIR/lcm.env
-        fi
-    fi
-
-    if ! grep -Fq "OSMLCM_VCA_ENABLEOSUPGRADE" $OSM_DOCKER_WORK_DIR/lcm.env; then
-        echo "# OSMLCM_VCA_ENABLEOSUPGRADE=false" | sudo tee -a $OSM_DOCKER_WORK_DIR/lcm.env
-    fi
-
-    if ! grep -Fq "OSMLCM_VCA_APTMIRROR" $OSM_DOCKER_WORK_DIR/lcm.env; then
-        echo "# OSMLCM_VCA_APTMIRROR=http://archive.ubuntu.com/ubuntu/" | sudo tee -a $OSM_DOCKER_WORK_DIR/lcm.env
-    fi
-
-    if ! grep -Fq "OSMLCM_VCA_CLOUD" $OSM_DOCKER_WORK_DIR/lcm.env; then
-        echo "OSMLCM_VCA_CLOUD=${OSM_VCA_CLOUDNAME}" | sudo tee -a $OSM_DOCKER_WORK_DIR/lcm.env
-    else
-        sudo sed -i "s|OSMLCM_VCA_CLOUD.*|OSMLCM_VCA_CLOUD=${OSM_VCA_CLOUDNAME}|g" $OSM_DOCKER_WORK_DIR/lcm.env
-    fi
-
-    if ! grep -Fq "OSMLCM_VCA_K8S_CLOUD" $OSM_DOCKER_WORK_DIR/lcm.env; then
-        echo "OSMLCM_VCA_K8S_CLOUD=${OSM_VCA_K8S_CLOUDNAME}" | sudo tee -a $OSM_DOCKER_WORK_DIR/lcm.env
-    else
-        sudo sed -i "s|OSMLCM_VCA_K8S_CLOUD.*|OSMLCM_VCA_K8S_CLOUD=${OSM_VCA_K8S_CLOUDNAME}|g" $OSM_DOCKER_WORK_DIR/lcm.env
-    fi
-    if [ -n "${OSM_BEHIND_PROXY}" ]; then
-        if ! grep -Fq "HTTP_PROXY" $OSM_DOCKER_WORK_DIR/lcm.env; then
-            echo "HTTP_PROXY=${HTTP_PROXY}" | sudo tee -a $OSM_DOCKER_WORK_DIR/lcm.env
-        else
-            sudo sed -i "s|HTTP_PROXY.*|HTTP_PROXY=${HTTP_PROXY}|g" $OSM_DOCKER_WORK_DIR/lcm.env
-        fi
-        if ! grep -Fq "HTTPS_PROXY" $OSM_DOCKER_WORK_DIR/lcm.env; then
-            echo "HTTPS_PROXY=${HTTPS_PROXY}" | sudo tee -a $OSM_DOCKER_WORK_DIR/lcm.env
-        else
-            sudo sed -i "s|HTTPS_PROXY.*|HTTPS_PROXY=${HTTPS_PROXY}|g" $OSM_DOCKER_WORK_DIR/lcm.env
-        fi
-        if ! grep -Fq "NO_PROXY" $OSM_DOCKER_WORK_DIR/lcm.env; then
-            echo "NO_PROXY=${NO_PROXY}" | sudo tee -a $OSM_DOCKER_WORK_DIR/lcm.env
-        else
-            sudo sed -i "s|NO_PROXY.*|NO_PROXY=${NO_PROXY}|g" $OSM_DOCKER_WORK_DIR/lcm.env
-        fi
-    fi
-
-    # RO
-    MYSQL_ROOT_PASSWORD=$(generate_secret)
-    if [ ! -f $OSM_DOCKER_WORK_DIR/ro-db.env ]; then
-        echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" |sudo tee $OSM_DOCKER_WORK_DIR/ro-db.env
-    fi
-    if [ ! -f $OSM_DOCKER_WORK_DIR/ro.env ]; then
-        echo "RO_DB_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" |sudo tee $OSM_DOCKER_WORK_DIR/ro.env
-    fi
-    if ! grep -Fq "OSMRO_DATABASE_COMMONKEY" $OSM_DOCKER_WORK_DIR/ro.env; then
-        echo "OSMRO_DATABASE_COMMONKEY=${OSM_DATABASE_COMMONKEY}" | sudo tee -a $OSM_DOCKER_WORK_DIR/ro.env
-    fi
-
-    # Keystone
-    KEYSTONE_DB_PASSWORD=$(generate_secret)
-    SERVICE_PASSWORD=$(generate_secret)
-    if [ ! -f $OSM_DOCKER_WORK_DIR/keystone-db.env ]; then
-        echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" |sudo tee $OSM_DOCKER_WORK_DIR/keystone-db.env
-    fi
-    if [ ! -f $OSM_DOCKER_WORK_DIR/keystone.env ]; then
-        echo "ROOT_DB_PASSWORD=${MYSQL_ROOT_PASSWORD}" |sudo tee $OSM_DOCKER_WORK_DIR/keystone.env
-        echo "KEYSTONE_DB_PASSWORD=${KEYSTONE_DB_PASSWORD}" |sudo tee -a $OSM_DOCKER_WORK_DIR/keystone.env
-        echo "SERVICE_PASSWORD=${SERVICE_PASSWORD}" |sudo tee -a $OSM_DOCKER_WORK_DIR/keystone.env
-    fi
-
-    # NBI
-    if [ ! -f $OSM_DOCKER_WORK_DIR/nbi.env ]; then
-        echo "OSMNBI_AUTHENTICATION_SERVICE_PASSWORD=${SERVICE_PASSWORD}" |sudo tee $OSM_DOCKER_WORK_DIR/nbi.env
-        echo "OSMNBI_DATABASE_COMMONKEY=${OSM_DATABASE_COMMONKEY}" | sudo tee -a $OSM_DOCKER_WORK_DIR/nbi.env
-    fi
-
-    # MON
-    if [ ! -f $OSM_DOCKER_WORK_DIR/mon.env ]; then
-        echo "OSMMON_KEYSTONE_SERVICE_PASSWORD=${SERVICE_PASSWORD}" | sudo tee -a $OSM_DOCKER_WORK_DIR/mon.env
-        echo "OSMMON_DATABASE_COMMONKEY=${OSM_DATABASE_COMMONKEY}" | sudo tee -a $OSM_DOCKER_WORK_DIR/mon.env
-        echo "OSMMON_SQL_DATABASE_URI=mysql://root:${MYSQL_ROOT_PASSWORD}@mysql:3306/mon" | sudo tee -a $OSM_DOCKER_WORK_DIR/mon.env
-    fi
-
-    if ! grep -Fq "OS_NOTIFIER_URI" $OSM_DOCKER_WORK_DIR/mon.env; then
-        echo "OS_NOTIFIER_URI=http://${OSM_DEFAULT_IP}:8662" |sudo tee -a $OSM_DOCKER_WORK_DIR/mon.env
-    else
-        sudo sed -i "s|OS_NOTIFIER_URI.*|OS_NOTIFIER_URI=http://$OSM_DEFAULT_IP:8662|g" $OSM_DOCKER_WORK_DIR/mon.env
-    fi
-
-    if ! grep -Fq "OSMMON_VCA_HOST" $OSM_DOCKER_WORK_DIR/mon.env; then
-        echo "OSMMON_VCA_HOST=${OSM_VCA_HOST}" | sudo tee -a $OSM_DOCKER_WORK_DIR/mon.env
-    else
-        sudo sed -i "s|OSMMON_VCA_HOST.*|OSMMON_VCA_HOST=$OSM_VCA_HOST|g" $OSM_DOCKER_WORK_DIR/mon.env
-    fi
-
-    if ! grep -Fq "OSMMON_VCA_SECRET" $OSM_DOCKER_WORK_DIR/mon.env; then
-        echo "OSMMON_VCA_SECRET=${OSM_VCA_SECRET}" | sudo tee -a $OSM_DOCKER_WORK_DIR/mon.env
-    else
-        sudo sed -i "s|OSMMON_VCA_SECRET.*|OSMMON_VCA_SECRET=$OSM_VCA_SECRET|g" $OSM_DOCKER_WORK_DIR/mon.env
-    fi
-
-    if ! grep -Fq "OSMMON_VCA_CACERT" $OSM_DOCKER_WORK_DIR/mon.env; then
-        echo "OSMMON_VCA_CACERT=${OSM_VCA_CACERT}" | sudo tee -a $OSM_DOCKER_WORK_DIR/mon.env
-    else
-        sudo sed -i "s|OSMMON_VCA_CACERT.*|OSMMON_VCA_CACERT=${OSM_VCA_CACERT}|g" $OSM_DOCKER_WORK_DIR/mon.env
-    fi
-
-    # POL
-    if [ ! -f $OSM_DOCKER_WORK_DIR/pol.env ]; then
-        echo "OSMPOL_SQL_DATABASE_URI=mysql://root:${MYSQL_ROOT_PASSWORD}@mysql:3306/pol" | sudo tee -a $OSM_DOCKER_WORK_DIR/pol.env
-    fi
-
-    # NG-SA
-    if [ -n "${INSTALL_NGSA}" ] && [ ! -f $OSM_DOCKER_WORK_DIR/ngsa.env ]; then
-        echo "OSMMON_DATABASE_COMMONKEY=${OSM_DATABASE_COMMONKEY}" | sudo tee -a $OSM_DOCKER_WORK_DIR/ngsa.env
-    fi
-
-    # Webhook-translator
-    if [ -n "${INSTALL_NGSA}" ] && [ ! -f $OSM_DOCKER_WORK_DIR/webhook-translator.env ]; then
-        echo "AIRFLOW_HOST=airflow-webserver" | sudo tee -a $OSM_DOCKER_WORK_DIR/webhook-translator.env
-        echo "AIRFLOW_PORT=8080" | sudo tee -a $OSM_DOCKER_WORK_DIR/webhook-translator.env
-        echo "AIRFLOW_USER=admin" | sudo tee -a $OSM_DOCKER_WORK_DIR/webhook-translator.env
-        echo "AIRFLOW_PASS=admin" | sudo tee -a $OSM_DOCKER_WORK_DIR/webhook-translator.env
-    fi
-
-    echo "Finished generation of docker env files"
-    [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-#creates secrets from env files which will be used by containers
-function kube_secrets(){
-    [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
-    kubectl create ns $OSM_NAMESPACE
-    kubectl create secret generic lcm-secret -n $OSM_NAMESPACE --from-env-file=$OSM_DOCKER_WORK_DIR/lcm.env
-    kubectl create secret generic mon-secret -n $OSM_NAMESPACE --from-env-file=$OSM_DOCKER_WORK_DIR/mon.env
-    kubectl create secret generic nbi-secret -n $OSM_NAMESPACE --from-env-file=$OSM_DOCKER_WORK_DIR/nbi.env
-    kubectl create secret generic ro-db-secret -n $OSM_NAMESPACE --from-env-file=$OSM_DOCKER_WORK_DIR/ro-db.env
-    kubectl create secret generic ro-secret -n $OSM_NAMESPACE --from-env-file=$OSM_DOCKER_WORK_DIR/ro.env
-    kubectl create secret generic keystone-secret -n $OSM_NAMESPACE --from-env-file=$OSM_DOCKER_WORK_DIR/keystone.env
-    if [ -n "${INSTALL_NGSA}" ]; then
-        kubectl create secret generic ngsa-secret -n $OSM_NAMESPACE --from-env-file=$OSM_DOCKER_WORK_DIR/ngsa.env
-        kubectl create secret generic webhook-translator-secret -n $OSM_NAMESPACE --from-env-file=$OSM_DOCKER_WORK_DIR/webhook-translator.env
-    else
-        kubectl create secret generic pol-secret -n $OSM_NAMESPACE --from-env-file=$OSM_DOCKER_WORK_DIR/pol.env
-    fi
-    [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
 #deploys osm pods and services
 function deploy_osm_services() {
     [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
-    echo "The following manifests under $OSM_K8S_WORK_DIR will be deployed:"
-    ls $OSM_K8S_WORK_DIR
-    kubectl apply -n $OSM_NAMESPACE -f $OSM_K8S_WORK_DIR
+    # helm is already installed as part of install_kubeadm_cluster.sh
+
+    # Generate helm values to be passed with -f osm-values.yaml
+    sudo mkdir -p ${OSM_HELM_WORK_DIR}
+    sudo bash -c "cat << EOF > ${OSM_HELM_WORK_DIR}/osm-values.yaml
+vca:
+  pubkey: \"${OSM_VCA_PUBKEY}\"
+EOF"
+
+    # Generate helm values to be passed with --set
+    OSM_HELM_OPTS=""
+    # OSM_HELM_OPTS="${OSM_HELM_OPTS} --set nbi.useOsmSecret=false"
+    OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.image.repositoryBase=${DOCKER_REGISTRY_URL}${DOCKER_USER}"
+    OSM_HELM_OPTS="${OSM_HELM_OPTS} --set mysql.dbHostPath=${OSM_NAMESPACE_VOL}"
+    OSM_HELM_OPTS="${OSM_HELM_OPTS} --set mon.config.OS_NOTIFIER_URI=http://${OSM_DEFAULT_IP}:8662"
+    OSM_HELM_OPTS="${OSM_HELM_OPTS} --set vca.host=${OSM_VCA_HOST}"
+    OSM_HELM_OPTS="${OSM_HELM_OPTS} --set vca.secret=${OSM_VCA_SECRET}"
+    OSM_HELM_OPTS="${OSM_HELM_OPTS} --set vca.cacert=${OSM_VCA_CACERT}"
+    [ -n "$OSM_VCA_APIPROXY" ] && OSM_HELM_OPTS="${OSM_HELM_OPTS} --set lcm.config.OSMLCM_VCA_APIPROXY=${OSM_VCA_APIPROXY}"
+    [ ! "$OSM_DOCKER_TAG" == "13" ] && OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.image.tag=${OSM_DOCKER_TAG}"
+    [ -n "${INSTALL_NGSA}" ] || OSM_HELM_OPTS="${OSM_HELM_OPTS} --set global.oldServiceAssurance=true"
+
+    echo "helm -n $OSM_NAMESPACE install $OSM_NAMESPACE $OSM_DEVOPS/installers/helm/osm -f ${OSM_HELM_WORK_DIR}/osm-values.yaml ${OSM_HELM_OPTS}"
+    helm -n $OSM_NAMESPACE install $OSM_NAMESPACE $OSM_DEVOPS/installers/helm/osm -f ${OSM_HELM_WORK_DIR}/osm-values.yaml ${OSM_HELM_OPTS}
+
+    # Override existing values.yaml with the final values.yaml used to install OSM
+    helm -n $OSM_NAMESPACE get values $OSM_NAMESPACE | sudo tee -a ${OSM_HELM_WORK_DIR}/osm-values.yaml
     [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
 }
 
@@ -549,73 +373,6 @@
     [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
 }
 
-function parse_yaml() {
-    [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
-    TAG=$1
-    shift
-    services=$@
-    for module in $services; do
-        if [ "$module" == "pla" ]; then
-            if [ -n "$INSTALL_PLA" ]; then
-                echo "Updating K8s manifest file for ${module} from opensourcemano\/pla:.* to ${DOCKER_REGISTRY_URL}${DOCKER_USER}\/pla:${TAG}"
-                sudo sed -i "s#opensourcemano/pla:.*#${DOCKER_REGISTRY_URL}${DOCKER_USER}/pla:${TAG}#g" ${OSM_DOCKER_WORK_DIR}/osm_pla/pla.yaml
-            fi
-        else
-            image=${module}
-            if [ "$module" == "ng-prometheus" ]; then
-                image="prometheus"
-            elif [ "$module" == "ng-mon" ]; then
-                image="mon"
-            fi
-            echo "Updating K8s manifest file for ${module} from opensourcemano\/${image}:.* to ${DOCKER_REGISTRY_URL}${DOCKER_USER}\/${image}:${TAG}"
-            sudo sed -i "s#opensourcemano/${image}:.*#${DOCKER_REGISTRY_URL}${DOCKER_USER}/${image}:${TAG}#g" ${OSM_K8S_WORK_DIR}/${module}.yaml
-        fi
-    done
-    [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function update_manifest_files() {
-    [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
-    osm_services="nbi lcm ro pol mon ng-mon ng-ui keystone pla prometheus ng-prometheus"
-    list_of_services=""
-    for module in $osm_services; do
-        module_upper="${module^^}"
-        if ! echo $TO_REBUILD | grep -q $module_upper ; then
-            list_of_services="$list_of_services $module"
-        fi
-    done
-    if [ ! "$OSM_DOCKER_TAG" == "13" ]; then
-        parse_yaml $OSM_DOCKER_TAG $list_of_services
-    fi
-    if [ -n "$MODULE_DOCKER_TAG" ]; then
-        parse_yaml $MODULE_DOCKER_TAG $list_of_services_to_rebuild
-    fi
-    # The manifest for prometheus is prometheus.yaml or ng-prometheus.yaml, depending on the installation option
-    # If NG-SA is installed, it will include ng-mon (only mon-dashboarder), ng-prometheus and webhook translator. It won't include pol, mon and prometheus
-    if [ -n "$INSTALL_NGSA" ]; then
-        sudo rm -f ${OSM_K8S_WORK_DIR}/prometheus.yaml
-        sudo rm -f ${OSM_K8S_WORK_DIR}/mon.yaml
-        sudo rm -f ${OSM_K8S_WORK_DIR}/pol.yaml
-    else
-        sudo rm -f ${OSM_K8S_WORK_DIR}/ng-mon.yaml
-        sudo rm -f ${OSM_K8S_WORK_DIR}/ng-prometheus.yaml
-        sudo rm -f ${OSM_K8S_WORK_DIR}/webhook-translator.yaml
-    fi
-    [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
-function namespace_vol() {
-    [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
-    # List of services with a volume mounted in path /var/lib/osm
-    osm_services="mysql"
-    for osm in $osm_services; do
-        if [ -f "$OSM_K8S_WORK_DIR/$osm.yaml" ] ; then
-            sudo sed -i "s#path: /var/lib/osm#path: $OSM_NAMESPACE_VOL#g" $OSM_K8S_WORK_DIR/$osm.yaml
-        fi
-    done
-    [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
-}
-
 function add_local_k8scluster() {
     [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
     /usr/bin/osm --all-projects vim-create \
@@ -799,43 +556,22 @@
     set_vca_variables
     track juju juju_ok
 
-    if [ -z "$OSM_DATABASE_COMMONKEY" ]; then
-        OSM_DATABASE_COMMONKEY=$(generate_secret)
-        [ -z "OSM_DATABASE_COMMONKEY" ] && FATAL "Cannot generate common db secret"
-    fi
-
     # Deploy OSM services
     [ -z "$DOCKER_NOBUILD" ] && pull_docker_images
     [ -z "$DOCKER_NOBUILD" ] && [ -z "$PULL_IMAGES" ] && generate_docker_images
     track docker_images docker_images_ok
 
-    generate_k8s_manifest_files
-    track osm_files manifest_files_ok
-    generate_docker_env_files
-    track osm_files env_files_ok
-
     deploy_charmed_services
     track deploy_osm deploy_charmed_services_ok
-    kube_secrets
-    track deploy_osm kube_secrets_ok
-    update_manifest_files
-    track deploy_osm update_manifest_files_ok
-    namespace_vol
-    track deploy_osm namespace_vol_ok
     deploy_osm_services
     track deploy_osm deploy_osm_services_k8s_ok
-    if [ -n "$INSTALL_PLA" ]; then
-        # optional PLA install
-        deploy_osm_pla_service
-        track deploy_osm deploy_osm_pla_ok
-    fi
     if [ -n "$INSTALL_K8S_MONITOR" ]; then
         # install OSM MONITORING
         install_k8s_monitoring
         track deploy_osm install_k8s_monitoring_ok
     fi
     if [ -n "$INSTALL_NGSA" ]; then
-        # optional PLA install
+        # optional NGSA install
         install_osm_ngsa_service
         track deploy_osm install_osm_ngsa_ok
     fi
