diff --git a/juju-charms/.gitignore b/charms/.gitignore
similarity index 100%
rename from juju-charms/.gitignore
rename to charms/.gitignore
diff --git a/juju-charms/Dockerfile b/charms/Dockerfile
similarity index 100%
rename from juju-charms/Dockerfile
rename to charms/Dockerfile
diff --git a/juju-charms/Makefile b/charms/Makefile
similarity index 100%
rename from juju-charms/Makefile
rename to charms/Makefile
diff --git a/juju-charms/README.md b/charms/README.md
similarity index 100%
rename from juju-charms/README.md
rename to charms/README.md
diff --git a/juju-charms/juju-env.sh b/charms/juju-env.sh
similarity index 100%
rename from juju-charms/juju-env.sh
rename to charms/juju-env.sh
diff --git a/juju-charms/layers/ansible-charm/LICENSE b/charms/layers/ansible-charm/LICENSE
similarity index 100%
rename from juju-charms/layers/ansible-charm/LICENSE
rename to charms/layers/ansible-charm/LICENSE
diff --git a/juju-charms/layers/ansible-charm/README.md b/charms/layers/ansible-charm/README.md
similarity index 100%
rename from juju-charms/layers/ansible-charm/README.md
rename to charms/layers/ansible-charm/README.md
diff --git a/juju-charms/layers/ansible-charm/actions.yaml b/charms/layers/ansible-charm/actions.yaml
similarity index 91%
rename from juju-charms/layers/ansible-charm/actions.yaml
rename to charms/layers/ansible-charm/actions.yaml
index 37ef945..8807303 100755
--- a/juju-charms/layers/ansible-charm/actions.yaml
+++ b/charms/layers/ansible-charm/actions.yaml
@@ -1,5 +1,5 @@
 #
-# OSM devops/juju-charms - Ansible charm inside OSM devops
+# OSM devops/charms - Ansible charm inside OSM devops
 #
 # Copyright 2017-2018 Universidad Carlos III de Madrid
 #
diff --git a/juju-charms/layers/ansible-charm/actions/ansible-playbook b/charms/layers/ansible-charm/actions/ansible-playbook
similarity index 94%
rename from juju-charms/layers/ansible-charm/actions/ansible-playbook
rename to charms/layers/ansible-charm/actions/ansible-playbook
index 6133ca5..67f581f 100755
--- a/juju-charms/layers/ansible-charm/actions/ansible-playbook
+++ b/charms/layers/ansible-charm/actions/ansible-playbook
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 #
-# OSM devops/juju-charms - Ansible charm inside OSM devops
+# OSM devops/charms - Ansible charm inside OSM devops
 #
 # Copyright 2017-2018 Universidad Carlos III de Madrid
 #
diff --git a/juju-charms/layers/ansible-charm/icon.svg b/charms/layers/ansible-charm/icon.svg
similarity index 100%
rename from juju-charms/layers/ansible-charm/icon.svg
rename to charms/layers/ansible-charm/icon.svg
diff --git a/juju-charms/layers/ansible-charm/layer.yaml b/charms/layers/ansible-charm/layer.yaml
similarity index 84%
rename from juju-charms/layers/ansible-charm/layer.yaml
rename to charms/layers/ansible-charm/layer.yaml
index 6a0704c..788e67c 100755
--- a/juju-charms/layers/ansible-charm/layer.yaml
+++ b/charms/layers/ansible-charm/layer.yaml
@@ -1,5 +1,5 @@
 #
-# OSM devops/juju-charms - Ansible charm inside OSM devops
+# OSM devops/charms - Ansible charm inside OSM devops
 #
 # Copyright 2017-2018 Universidad Carlos III de Madrid
 #
@@ -16,4 +16,4 @@
 # limitations under the License.
 #
 
-includes: ['layer:ansible-base', 'layer:vnfproxy']  
+includes: ['layer:ansible-base', 'layer:vnfproxy']
diff --git a/juju-charms/layers/ansible-charm/metadata.yaml b/charms/layers/ansible-charm/metadata.yaml
similarity index 93%
rename from juju-charms/layers/ansible-charm/metadata.yaml
rename to charms/layers/ansible-charm/metadata.yaml
index acce785..2837b35 100755
--- a/juju-charms/layers/ansible-charm/metadata.yaml
+++ b/charms/layers/ansible-charm/metadata.yaml
@@ -1,5 +1,5 @@
 #
-# OSM devops/juju-charms - Ansible charm inside OSM devops
+# OSM devops/charms - Ansible charm inside OSM devops
 #
 # Copyright 2017-2018 Universidad Carlos III de Madrid
 #
diff --git a/juju-charms/layers/ansible-charm/playbook/playbook.yaml b/charms/layers/ansible-charm/playbook/playbook.yaml
similarity index 92%
rename from juju-charms/layers/ansible-charm/playbook/playbook.yaml
rename to charms/layers/ansible-charm/playbook/playbook.yaml
index 2c7b54b..67a3493 100755
--- a/juju-charms/layers/ansible-charm/playbook/playbook.yaml
+++ b/charms/layers/ansible-charm/playbook/playbook.yaml
@@ -1,5 +1,5 @@
 #
-# OSM devops/juju-charms - Ansible charm inside OSM devops
+# OSM devops/charms - Ansible charm inside OSM devops
 #
 # Copyright 2017-2018 Universidad Carlos III de Madrid
 #
diff --git a/juju-charms/layers/ansible-charm/reactive/ansible_charm.py b/charms/layers/ansible-charm/reactive/ansible_charm.py
similarity index 97%
rename from juju-charms/layers/ansible-charm/reactive/ansible_charm.py
rename to charms/layers/ansible-charm/reactive/ansible_charm.py
index a129df3..61425f3 100755
--- a/juju-charms/layers/ansible-charm/reactive/ansible_charm.py
+++ b/charms/layers/ansible-charm/reactive/ansible_charm.py
@@ -1,4 +1,4 @@
-# OSM devops/juju-charms - Ansible charm inside OSM devops
+# OSM devops/charms - Ansible charm inside OSM devops
 #
 # Copyright 2017-2018 Universidad Carlos III de Madrid
 # Copyright 2018 Altran
diff --git a/juju-charms/layers/ansible-charm/tests/00-setup b/charms/layers/ansible-charm/tests/00-setup
similarity index 92%
rename from juju-charms/layers/ansible-charm/tests/00-setup
rename to charms/layers/ansible-charm/tests/00-setup
index 5088c72..8c0ff38 100755
--- a/juju-charms/layers/ansible-charm/tests/00-setup
+++ b/charms/layers/ansible-charm/tests/00-setup
@@ -1,6 +1,6 @@
 #!/bin/bash
 #
-# OSM devops/juju-charms - Ansible charm inside OSM devops
+# OSM devops/charms - Ansible charm inside OSM devops
 #
 # Copyright 2017-2018 Universidad Carlos III de Madrid
 #
diff --git a/juju-charms/layers/ansible-charm/tests/10-deploy b/charms/layers/ansible-charm/tests/10-deploy
similarity index 96%
rename from juju-charms/layers/ansible-charm/tests/10-deploy
rename to charms/layers/ansible-charm/tests/10-deploy
index 8f3fb36..35e0918 100755
--- a/juju-charms/layers/ansible-charm/tests/10-deploy
+++ b/charms/layers/ansible-charm/tests/10-deploy
@@ -1,6 +1,6 @@
 #!/usr/bin/python3
 #
-# OSM devops/juju-charms - Ansible charm inside OSM devops
+# OSM devops/charms - Ansible charm inside OSM devops
 #
 # Copyright 2017-2018 Universidad Carlos III de Madrid
 #
@@ -47,6 +47,6 @@
         # - .directory_contents(PATH) - List files and folders in PATH on that unit
         # - .relation(relation, service:rel) - Get relation data from return service
 
-        
+
 if __name__ == '__main__':
     unittest.main()
diff --git a/juju-charms/layers/netutils/LICENSE b/charms/layers/netutils/LICENSE
similarity index 100%
rename from juju-charms/layers/netutils/LICENSE
rename to charms/layers/netutils/LICENSE
diff --git a/juju-charms/layers/netutils/README.md b/charms/layers/netutils/README.md
similarity index 100%
rename from juju-charms/layers/netutils/README.md
rename to charms/layers/netutils/README.md
diff --git a/juju-charms/layers/netutils/actions.yaml b/charms/layers/netutils/actions.yaml
similarity index 100%
rename from juju-charms/layers/netutils/actions.yaml
rename to charms/layers/netutils/actions.yaml
diff --git a/juju-charms/layers/netutils/actions/dig b/charms/layers/netutils/actions/dig
similarity index 100%
rename from juju-charms/layers/netutils/actions/dig
rename to charms/layers/netutils/actions/dig
diff --git a/juju-charms/layers/netutils/actions/iperf b/charms/layers/netutils/actions/iperf
similarity index 100%
rename from juju-charms/layers/netutils/actions/iperf
rename to charms/layers/netutils/actions/iperf
diff --git a/juju-charms/layers/netutils/actions/nmap b/charms/layers/netutils/actions/nmap
similarity index 100%
rename from juju-charms/layers/netutils/actions/nmap
rename to charms/layers/netutils/actions/nmap
diff --git a/juju-charms/layers/netutils/actions/ping b/charms/layers/netutils/actions/ping
similarity index 100%
rename from juju-charms/layers/netutils/actions/ping
rename to charms/layers/netutils/actions/ping
diff --git a/juju-charms/layers/netutils/actions/traceroute b/charms/layers/netutils/actions/traceroute
similarity index 100%
rename from juju-charms/layers/netutils/actions/traceroute
rename to charms/layers/netutils/actions/traceroute
diff --git a/juju-charms/layers/netutils/config.yaml b/charms/layers/netutils/config.yaml
similarity index 100%
rename from juju-charms/layers/netutils/config.yaml
rename to charms/layers/netutils/config.yaml
diff --git a/juju-charms/layers/netutils/icon.svg b/charms/layers/netutils/icon.svg
similarity index 100%
rename from juju-charms/layers/netutils/icon.svg
rename to charms/layers/netutils/icon.svg
diff --git a/juju-charms/layers/netutils/layer.yaml b/charms/layers/netutils/layer.yaml
similarity index 100%
rename from juju-charms/layers/netutils/layer.yaml
rename to charms/layers/netutils/layer.yaml
diff --git a/juju-charms/layers/netutils/metadata.yaml b/charms/layers/netutils/metadata.yaml
similarity index 100%
rename from juju-charms/layers/netutils/metadata.yaml
rename to charms/layers/netutils/metadata.yaml
diff --git a/juju-charms/layers/netutils/reactive/layer_netutils.py b/charms/layers/netutils/reactive/layer_netutils.py
similarity index 100%
rename from juju-charms/layers/netutils/reactive/layer_netutils.py
rename to charms/layers/netutils/reactive/layer_netutils.py
diff --git a/juju-charms/layers/netutils/tests/00-setup b/charms/layers/netutils/tests/00-setup
similarity index 100%
rename from juju-charms/layers/netutils/tests/00-setup
rename to charms/layers/netutils/tests/00-setup
diff --git a/juju-charms/layers/netutils/tests/10-deploy b/charms/layers/netutils/tests/10-deploy
similarity index 100%
rename from juju-charms/layers/netutils/tests/10-deploy
rename to charms/layers/netutils/tests/10-deploy
diff --git a/juju-charms/layers/pingpong/README.md b/charms/layers/pingpong/README.md
similarity index 100%
rename from juju-charms/layers/pingpong/README.md
rename to charms/layers/pingpong/README.md
diff --git a/juju-charms/layers/pingpong/actions.yaml b/charms/layers/pingpong/actions.yaml
similarity index 100%
rename from juju-charms/layers/pingpong/actions.yaml
rename to charms/layers/pingpong/actions.yaml
diff --git a/juju-charms/layers/pingpong/actions/get-rate b/charms/layers/pingpong/actions/get-rate
similarity index 100%
rename from juju-charms/layers/pingpong/actions/get-rate
rename to charms/layers/pingpong/actions/get-rate
diff --git a/juju-charms/layers/pingpong/actions/get-server b/charms/layers/pingpong/actions/get-server
similarity index 100%
rename from juju-charms/layers/pingpong/actions/get-server
rename to charms/layers/pingpong/actions/get-server
diff --git a/juju-charms/layers/pingpong/actions/get-state b/charms/layers/pingpong/actions/get-state
similarity index 100%
rename from juju-charms/layers/pingpong/actions/get-state
rename to charms/layers/pingpong/actions/get-state
diff --git a/juju-charms/layers/pingpong/actions/get-stats b/charms/layers/pingpong/actions/get-stats
similarity index 100%
rename from juju-charms/layers/pingpong/actions/get-stats
rename to charms/layers/pingpong/actions/get-stats
diff --git a/juju-charms/layers/pingpong/actions/set-rate b/charms/layers/pingpong/actions/set-rate
similarity index 100%
rename from juju-charms/layers/pingpong/actions/set-rate
rename to charms/layers/pingpong/actions/set-rate
diff --git a/juju-charms/layers/pingpong/actions/set-server b/charms/layers/pingpong/actions/set-server
similarity index 100%
rename from juju-charms/layers/pingpong/actions/set-server
rename to charms/layers/pingpong/actions/set-server
diff --git a/juju-charms/layers/pingpong/actions/start-traffic b/charms/layers/pingpong/actions/start-traffic
similarity index 100%
rename from juju-charms/layers/pingpong/actions/start-traffic
rename to charms/layers/pingpong/actions/start-traffic
diff --git a/juju-charms/layers/pingpong/actions/stop-traffic b/charms/layers/pingpong/actions/stop-traffic
similarity index 100%
rename from juju-charms/layers/pingpong/actions/stop-traffic
rename to charms/layers/pingpong/actions/stop-traffic
diff --git a/juju-charms/layers/pingpong/config.yaml b/charms/layers/pingpong/config.yaml
similarity index 100%
rename from juju-charms/layers/pingpong/config.yaml
rename to charms/layers/pingpong/config.yaml
diff --git a/juju-charms/layers/pingpong/icon.svg b/charms/layers/pingpong/icon.svg
similarity index 100%
rename from juju-charms/layers/pingpong/icon.svg
rename to charms/layers/pingpong/icon.svg
diff --git a/juju-charms/layers/pingpong/layer.yaml b/charms/layers/pingpong/layer.yaml
similarity index 100%
rename from juju-charms/layers/pingpong/layer.yaml
rename to charms/layers/pingpong/layer.yaml
diff --git a/juju-charms/layers/pingpong/metadata.yaml b/charms/layers/pingpong/metadata.yaml
similarity index 100%
rename from juju-charms/layers/pingpong/metadata.yaml
rename to charms/layers/pingpong/metadata.yaml
diff --git a/juju-charms/layers/pingpong/reactive/pingpong.py b/charms/layers/pingpong/reactive/pingpong.py
similarity index 100%
rename from juju-charms/layers/pingpong/reactive/pingpong.py
rename to charms/layers/pingpong/reactive/pingpong.py
diff --git a/juju-charms/layers/pingpong/tests/00-setup b/charms/layers/pingpong/tests/00-setup
similarity index 100%
rename from juju-charms/layers/pingpong/tests/00-setup
rename to charms/layers/pingpong/tests/00-setup
diff --git a/juju-charms/layers/pingpong/tests/10-deploy b/charms/layers/pingpong/tests/10-deploy
similarity index 100%
rename from juju-charms/layers/pingpong/tests/10-deploy
rename to charms/layers/pingpong/tests/10-deploy
diff --git a/juju-charms/layers/simple/README.md b/charms/layers/simple/README.md
similarity index 100%
rename from juju-charms/layers/simple/README.md
rename to charms/layers/simple/README.md
diff --git a/juju-charms/layers/simple/actions.yaml b/charms/layers/simple/actions.yaml
similarity index 100%
rename from juju-charms/layers/simple/actions.yaml
rename to charms/layers/simple/actions.yaml
diff --git a/juju-charms/layers/simple/actions/touch b/charms/layers/simple/actions/touch
similarity index 100%
rename from juju-charms/layers/simple/actions/touch
rename to charms/layers/simple/actions/touch
diff --git a/juju-charms/layers/simple/config.yaml b/charms/layers/simple/config.yaml
similarity index 100%
rename from juju-charms/layers/simple/config.yaml
rename to charms/layers/simple/config.yaml
diff --git a/juju-charms/layers/simple/icon.svg b/charms/layers/simple/icon.svg
similarity index 100%
rename from juju-charms/layers/simple/icon.svg
rename to charms/layers/simple/icon.svg
diff --git a/juju-charms/layers/simple/layer.yaml b/charms/layers/simple/layer.yaml
similarity index 100%
rename from juju-charms/layers/simple/layer.yaml
rename to charms/layers/simple/layer.yaml
diff --git a/juju-charms/layers/simple/metadata.yaml b/charms/layers/simple/metadata.yaml
similarity index 100%
rename from juju-charms/layers/simple/metadata.yaml
rename to charms/layers/simple/metadata.yaml
diff --git a/juju-charms/layers/simple/metrics.yaml b/charms/layers/simple/metrics.yaml
similarity index 100%
rename from juju-charms/layers/simple/metrics.yaml
rename to charms/layers/simple/metrics.yaml
diff --git a/juju-charms/layers/simple/reactive/simple.py b/charms/layers/simple/reactive/simple.py
similarity index 100%
rename from juju-charms/layers/simple/reactive/simple.py
rename to charms/layers/simple/reactive/simple.py
diff --git a/juju-charms/layers/simple/tests/00-setup b/charms/layers/simple/tests/00-setup
similarity index 100%
rename from juju-charms/layers/simple/tests/00-setup
rename to charms/layers/simple/tests/00-setup
diff --git a/juju-charms/layers/simple/tests/10-deploy b/charms/layers/simple/tests/10-deploy
similarity index 100%
rename from juju-charms/layers/simple/tests/10-deploy
rename to charms/layers/simple/tests/10-deploy
diff --git a/juju-charms/layers/vyos-proxy/Makefile b/charms/layers/vyos-proxy/Makefile
similarity index 100%
rename from juju-charms/layers/vyos-proxy/Makefile
rename to charms/layers/vyos-proxy/Makefile
diff --git a/juju-charms/layers/vyos-proxy/README.md b/charms/layers/vyos-proxy/README.md
similarity index 100%
rename from juju-charms/layers/vyos-proxy/README.md
rename to charms/layers/vyos-proxy/README.md
diff --git a/juju-charms/layers/vyos-proxy/actions.yaml b/charms/layers/vyos-proxy/actions.yaml
similarity index 100%
rename from juju-charms/layers/vyos-proxy/actions.yaml
rename to charms/layers/vyos-proxy/actions.yaml
diff --git a/juju-charms/layers/vyos-proxy/actions/ping b/charms/layers/vyos-proxy/actions/ping
similarity index 100%
rename from juju-charms/layers/vyos-proxy/actions/ping
rename to charms/layers/vyos-proxy/actions/ping
diff --git a/juju-charms/layers/vyos-proxy/config.yaml b/charms/layers/vyos-proxy/config.yaml
similarity index 100%
rename from juju-charms/layers/vyos-proxy/config.yaml
rename to charms/layers/vyos-proxy/config.yaml
diff --git a/juju-charms/layers/vyos-proxy/copyright b/charms/layers/vyos-proxy/copyright
similarity index 100%
rename from juju-charms/layers/vyos-proxy/copyright
rename to charms/layers/vyos-proxy/copyright
diff --git a/juju-charms/layers/vyos-proxy/icon.svg b/charms/layers/vyos-proxy/icon.svg
similarity index 100%
rename from juju-charms/layers/vyos-proxy/icon.svg
rename to charms/layers/vyos-proxy/icon.svg
diff --git a/juju-charms/layers/vyos-proxy/layer.yaml b/charms/layers/vyos-proxy/layer.yaml
similarity index 100%
rename from juju-charms/layers/vyos-proxy/layer.yaml
rename to charms/layers/vyos-proxy/layer.yaml
diff --git a/juju-charms/layers/vyos-proxy/metadata.yaml b/charms/layers/vyos-proxy/metadata.yaml
similarity index 100%
rename from juju-charms/layers/vyos-proxy/metadata.yaml
rename to charms/layers/vyos-proxy/metadata.yaml
diff --git a/juju-charms/layers/vyos-proxy/reactive/__init__.py b/charms/layers/vyos-proxy/reactive/__init__.py
similarity index 100%
rename from juju-charms/layers/vyos-proxy/reactive/__init__.py
rename to charms/layers/vyos-proxy/reactive/__init__.py
diff --git a/juju-charms/layers/vyos-proxy/reactive/vyos_proxy.py b/charms/layers/vyos-proxy/reactive/vyos_proxy.py
similarity index 100%
rename from juju-charms/layers/vyos-proxy/reactive/vyos_proxy.py
rename to charms/layers/vyos-proxy/reactive/vyos_proxy.py
diff --git a/juju-charms/layers/vyos-proxy/requirements.txt b/charms/layers/vyos-proxy/requirements.txt
similarity index 100%
rename from juju-charms/layers/vyos-proxy/requirements.txt
rename to charms/layers/vyos-proxy/requirements.txt
diff --git a/juju-charms/layers/vyos-proxy/revision b/charms/layers/vyos-proxy/revision
similarity index 100%
rename from juju-charms/layers/vyos-proxy/revision
rename to charms/layers/vyos-proxy/revision
diff --git a/juju-charms/layers/vyos-proxy/tox.ini b/charms/layers/vyos-proxy/tox.ini
similarity index 100%
rename from juju-charms/layers/vyos-proxy/tox.ini
rename to charms/layers/vyos-proxy/tox.ini
diff --git a/juju-charms/layers/vyos-proxy/wheelhouse.txt b/charms/layers/vyos-proxy/wheelhouse.txt
similarity index 100%
rename from juju-charms/layers/vyos-proxy/wheelhouse.txt
rename to charms/layers/vyos-proxy/wheelhouse.txt
diff --git a/descriptor-packages/mk/pkg.mk b/descriptor-packages/mk/pkg.mk
index 07c0ed8..4226ebf 100644
--- a/descriptor-packages/mk/pkg.mk
+++ b/descriptor-packages/mk/pkg.mk
@@ -20,7 +20,7 @@
 PKG_BASE_NAME := $(shell basename $(shell pwd))
 PKG_NAME      := $(addsuffix .tar.gz, $(PKG_BASE_NAME))
 
-CHARM_DIR        := $(TOPDIR)/juju-charms
+CHARM_DIR        := $(TOPDIR)/charms
 CHARM_SRC_DIR    := $(CHARM_DIR)/layers
 CHARM_DOCKER_TAG := charm-tools
 CHARM_BUILD_DIR  := $(CHARM_DIR)/builds
@@ -69,14 +69,14 @@
 $(CHARM_BUILD_DIR)/%: $(CHARM_SRC_DIR)/%
 	$(Q)charm build -o $(CHARM_DIR) $<
 endif
- 
+
 clean:
 	$(Q)rm -rf $(BUILD_DIR)
 	$(Q)rm -rf $(CHARM_BUILD_DIR)
 
 test:
-	$(Q)echo -n testing $(shell readlink -f src/*.yaml)  "             " 
+	$(Q)echo -n testing $(shell readlink -f src/*.yaml)  "             "
 	$(Q)$(TEST_PKG) src/*.yaml
 	$(Q)echo OK
-        
+
 .DEFAULT_GOAL := all
diff --git a/descriptor-packages/nsd/simple_multi-charm_multi-vdu-ns/Makefile b/descriptor-packages/nsd/simple_multi-charm_multi-vdu-ns/Makefile
new file mode 100644
index 0000000..9c18082
--- /dev/null
+++ b/descriptor-packages/nsd/simple_multi-charm_multi-vdu-ns/Makefile
@@ -0,0 +1,20 @@
+#
+#   Copyright 2018 Telefonica
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+#
+
+DESCRIPTORS_TOPDIR ?= ../..
+include $(DESCRIPTORS_TOPDIR)/mk/pkg.mk
+
+all: $(BUILD_DIR)/$(PKG_NAME)
diff --git a/descriptor-packages/nsd/simple_multi-charm_multi-vdu-ns/src/icons/osm.png b/descriptor-packages/nsd/simple_multi-charm_multi-vdu-ns/src/icons/osm.png
new file mode 100644
index 0000000..62012d2
--- /dev/null
+++ b/descriptor-packages/nsd/simple_multi-charm_multi-vdu-ns/src/icons/osm.png
Binary files differ
diff --git a/descriptor-packages/nsd/simple_multi-charm_multi-vdu-ns/src/simple_multi-charm_multi-vdu_nsd.yaml b/descriptor-packages/nsd/simple_multi-charm_multi-vdu-ns/src/simple_multi-charm_multi-vdu_nsd.yaml
new file mode 100644
index 0000000..bd21706
--- /dev/null
+++ b/descriptor-packages/nsd/simple_multi-charm_multi-vdu-ns/src/simple_multi-charm_multi-vdu_nsd.yaml
@@ -0,0 +1,38 @@
+nsd:nsd-catalog:
+    nsd:
+    -   id: multicharmvdu-ns
+        name: multicharmvdu-ns
+        short-name: multicharmvdu-ns
+        description: NS with 2 VNFs multicharmvdu-vnf connected by datanet and mgmtnet VLs
+        version: '1.0'
+        logo: osm.png
+        constituent-vnfd:
+        -   vnfd-id-ref: multicharmvdu-vnf
+            member-vnf-index: '1'
+        -   vnfd-id-ref: multicharmvdu-vnf
+            member-vnf-index: '2'
+        vld:
+        -   id: mgmtnet
+            name: mgmtnet
+            short-name: mgmtnet
+            type: ELAN
+            mgmt-network: 'true'
+            vim-network-name: mgmt
+            vnfd-connection-point-ref:
+            -   vnfd-id-ref: multicharmvdu-vnf
+                member-vnf-index-ref: '1'
+                vnfd-connection-point-ref: vnf-mgmt
+            -   vnfd-id-ref: multicharmvdu-vnf
+                member-vnf-index-ref: '2'
+                vnfd-connection-point-ref: vnf-mgmt
+        -   id: datanet
+            name: datanet
+            short-name: datanet
+            type: ELAN
+            vnfd-connection-point-ref:
+            -   vnfd-id-ref: multicharmvdu-vnf
+                member-vnf-index-ref: '1'
+                vnfd-connection-point-ref: vnf-data
+            -   vnfd-id-ref: multicharmvdu-vnf
+                member-vnf-index-ref: '2'
+                vnfd-connection-point-ref: vnf-data
diff --git a/descriptor-packages/vnfd/hackfest_basic_vnf/src/hackfest_basic_vnfd.yaml b/descriptor-packages/vnfd/hackfest_basic_vnf/src/hackfest_basic_vnfd.yaml
index 3c18d79..4051eb3 100644
--- a/descriptor-packages/vnfd/hackfest_basic_vnf/src/hackfest_basic_vnfd.yaml
+++ b/descriptor-packages/vnfd/hackfest_basic_vnf/src/hackfest_basic_vnfd.yaml
@@ -13,6 +13,9 @@
         -   id: hackfest_basic-VM
             name: hackfest_basic-VM
             image: ubuntu1604
+            alternative-images:
+            -   vim-type: aws
+                image: ubuntu/images/hvm-ssd/ubuntu-artful-17.10-amd64-server-20180509
             count: '1'
             vm-flavor:
                 vcpu-count: '1'
diff --git a/descriptor-packages/vnfd/simple_multi-charm_multi-vdu_vnf/Makefile b/descriptor-packages/vnfd/simple_multi-charm_multi-vdu_vnf/Makefile
new file mode 100644
index 0000000..3e88db7
--- /dev/null
+++ b/descriptor-packages/vnfd/simple_multi-charm_multi-vdu_vnf/Makefile
@@ -0,0 +1,21 @@
+#
+#   Copyright 2018 Telefonica
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+#
+DESCRIPTORS_TOPDIR ?= ../..
+
+VNFD_CHARM = simple
+include $(DESCRIPTORS_TOPDIR)/mk/pkg.mk
+
+all: $(BUILD_DIR)/$(PKG_NAME)
diff --git a/descriptor-packages/vnfd/simple_multi-charm_multi-vdu_vnf/src/simple_multi-charm_multi-vdu_vnfd.yaml b/descriptor-packages/vnfd/simple_multi-charm_multi-vdu_vnf/src/simple_multi-charm_multi-vdu_vnfd.yaml
new file mode 100644
index 0000000..6957e18
--- /dev/null
+++ b/descriptor-packages/vnfd/simple_multi-charm_multi-vdu_vnf/src/simple_multi-charm_multi-vdu_vnfd.yaml
@@ -0,0 +1,130 @@
+vnfd:vnfd-catalog:
+    vnfd:
+    -   id: multicharmvdu-vnf
+        name: multicharmvdu-vnf
+        short-name: multicharmvdu-vnf
+        version: '1.0'
+        description: A VNF consisting of 2 VDUs w/charms connected to an internal VL, and one VDU with cloud-init
+        logo: osm.png
+        connection-point:
+        -   id: vnf-mgmt
+            name: vnf-mgmt
+            short-name: vnf-mgmt
+            type: VPORT
+        -   id: vnf-data
+            name: vnf-data
+            short-name: vnf-data
+            type: VPORT
+        mgmt-interface:
+            cp: vnf-mgmt
+        internal-vld:
+        -   id: internal
+            name: internal
+            short-name: internal
+            type: ELAN
+            internal-connection-point:
+            -   id-ref: mgmtVM-internal
+            -   id-ref: dataVM-internal
+        vdu:
+        -   id: mgmtVM
+            name: mgmtVM
+            image: xenial
+            count: '1'
+            vm-flavor:
+                vcpu-count: '1'
+                memory-mb: '1024'
+                storage-gb: '10'
+            interface:
+            -   name: mgmtVM-eth0
+                position: '1'
+                type: EXTERNAL
+                virtual-interface:
+                    type: VIRTIO
+                external-connection-point-ref: vnf-mgmt
+            -   name: mgmtVM-eth1
+                position: '2'
+                type: INTERNAL
+                virtual-interface:
+                    type: VIRTIO
+                internal-connection-point-ref: mgmtVM-internal
+            internal-connection-point:
+            -   id: mgmtVM-internal
+                name: mgmtVM-internal
+                short-name: mgmtVM-internal
+                type: VPORT
+            cloud-init-file: cloud-config.txt
+            vdu-configuration:
+                juju:
+                    charm: simple
+                initial-config-primitive:
+                -   seq: '1'
+                    name: config
+                    parameter:
+                    -   name: ssh-hostname
+                        value: <rw_mgmt_ip>
+                    -   name: ssh-username
+                        value: ubuntu
+                    -   name: ssh-password
+                        value: osm4u
+                -   seq: '2'
+                    name: touch
+                    parameter:
+                    -   name: filename
+                        value: '/home/ubuntu/first-touch-mgmtVM'
+                config-primitive:
+                -   name: touch
+                    parameter:
+                    -   name: filename
+                        data-type: STRING
+                        default-value: '/home/ubuntu/touched'
+
+        -   id: dataVM
+            name: dataVM
+            image: xenial
+            count: '1'
+            vm-flavor:
+                vcpu-count: '1'
+                memory-mb: '1024'
+                storage-gb: '10'
+            interface:
+            -   name: dataVM-eth0
+                position: '1'
+                type: INTERNAL
+                virtual-interface:
+                    type: VIRTIO
+                internal-connection-point-ref: dataVM-internal
+            -   name: dataVM-xe0
+                position: '2'
+                type: EXTERNAL
+                virtual-interface:
+                    type: VIRTIO
+                external-connection-point-ref: vnf-data
+            internal-connection-point:
+            -   id: dataVM-internal
+                name: dataVM-internal
+                short-name: dataVM-internal
+                type: VPORT
+            vdu-configuration:
+                juju:
+                    charm: simple
+                initial-config-primitive:
+                -   seq: '1'
+                    name: config
+                    parameter:
+                    -   name: ssh-hostname
+                        value: <rw_mgmt_ip>
+                    -   name: ssh-username
+                        value: ubuntu
+                    -   name: ssh-password
+                        value: osm4u
+                -   seq: '2'
+                    name: touch
+                    parameter:
+                    -   name: filename
+                        value: '/home/ubuntu/first-touch-dataVM'
+                config-primitive:
+                -   name: touch
+                    parameter:
+                    -   name: filename
+                        data-type: STRING
+                        default-value: '/home/ubuntu/touched'
diff --git a/devops-stages/stage-archive.sh b/devops-stages/stage-archive.sh
index e1b4713..160b1a3 100755
--- a/devops-stages/stage-archive.sh
+++ b/devops-stages/stage-archive.sh
@@ -14,7 +14,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-PKG_DIRECTORIES="jenkins installers systest juju-charms descriptor-packages tools docker"
+PKG_DIRECTORIES="jenkins installers systest charms descriptor-packages tools docker"
 MDG_NAME=devops
 DEB_INSTALL=debian/osm-$MDG_NAME.install
 export DEBEMAIL="mmarchetti@sandvine.com"
@@ -45,7 +45,7 @@
 
 cd $PKG_DIR
 dh_make -y --indep --createorig --a -c apache
-dpkg-buildpackage -uc -us -tc -rfakeroot 
+dpkg-buildpackage -uc -us -tc -rfakeroot
 cd -
 
 rm -rf pool
diff --git a/docker/MON/Dockerfile b/docker/MON/Dockerfile
index ae93274..c276000 100644
--- a/docker/MON/Dockerfile
+++ b/docker/MON/Dockerfile
@@ -30,18 +30,23 @@
  && apt-get --yes install git python python-pip python3 python3-pip libmysqlclient-dev libssl-dev libffi-dev \
  && pip3 install pip==9.0.3
 
+RUN pip3 install  'macaroonbakery>=1.1,<2.0' 'pyRFC3339>=1.0,<2.0' \
+      'pyyaml>=3.0,<4.0' 'theblues>=0.3.8,<1.0' 'websockets>=4.0,<5.0' \
+      'paramiko'   # PyNaCl
+
 ARG REPOSITORY_BASE=http://osm-download.etsi.org/repository/osm/debian
 ARG RELEASE=ReleaseFOUR-daily
 ARG REPOSITORY_KEY=OSM%20ETSI%20Release%20Key.gpg
 ARG REPOSITORY=testing
 
 RUN curl ${REPOSITORY_BASE}/${RELEASE}/${REPOSITORY_KEY} | apt-key add -
-RUN add-apt-repository -y "deb ${REPOSITORY_BASE}/${RELEASE} ${REPOSITORY} MON common" && apt update
+RUN add-apt-repository -y "deb ${REPOSITORY_BASE}/${RELEASE} ${REPOSITORY} MON N2VC common" && apt update
 
 ARG MON_VERSION
 ARG COMMON_VERSION
+ARG N2VC_VERSION
 
-RUN apt-get --yes update  && apt-get -y install python3-osm-common${COMMON_VERSION} python3-osm-mon${MON_VERSION}
+RUN apt-get --yes update  && apt-get -y install python3-osm-common${COMMON_VERSION} python3-osm-mon${MON_VERSION} python3-n2vc${N2VC_VERSION}
 
 COPY scripts/ scripts/
 
diff --git a/docker/mk/Makefile.include b/docker/mk/Makefile.include
index 2be4d29..ced304a 100644
--- a/docker/mk/Makefile.include
+++ b/docker/mk/Makefile.include
@@ -35,7 +35,7 @@
 	$Q$(MKINCLUDE)/get_version.sh -r $(REPOSITORY) -R $(RELEASE) -k $(REPOSITORY_KEY) -u $(REPOSITORY_BASE) -m $* > $@
 
 build: $(MKBUILD) $(DEPS_TARGETS)
-	$Qdocker build -t osm/$(LOWER_MDG):$(TAG) \
+	$Qdocker build -t opensourcemano/$(LOWER_MDG):$(TAG) \
                    --build-arg RELEASE=$(RELEASE) \
                    --build-arg REPOSITORY=$(REPOSITORY) \
                    --build-arg REPOSITORY_KEY=$(REPOSITORY_KEY) \
@@ -57,7 +57,7 @@
 	rm -f $(MKBUILD)/.dep*
 
 tag:
-	docker tag osm/$(CONTAINER_NAME):$(INPUT_TAG) opensourcemano/$(LOWER_MDG):$(TAG)
+	docker tag opensourcemano/$(CONTAINER_NAME):$(INPUT_TAG) opensourcemano/$(LOWER_MDG):$(TAG)
 
 push: tag
 	docker push opensourcemano/$(LOWER_MDG):$(TAG)
diff --git a/installers/docker/docker-compose.yaml b/installers/docker/docker-compose.yaml
index 29b7857..5342b30 100644
--- a/installers/docker/docker-compose.yaml
+++ b/installers/docker/docker-compose.yaml
@@ -69,7 +69,7 @@
 #    ports:
 #      - "3306:3306"
   keystone:
-    image: ${DOCKER_USER:-osm}/keystone:${TAG:-latest}
+    image: ${DOCKER_USER:-opensourcemano}/keystone:${TAG:-latest}
     networks:
       - netOSM
     environment:
@@ -79,7 +79,7 @@
     ports:
       - "${OSM_KEYSTONE_PORTS:-5000:5000}"
   nbi:
-    image: ${DOCKER_USER:-osm}/nbi:${TAG:-latest}
+    image: ${DOCKER_USER:-opensourcemano}/nbi:${TAG:-latest}
     networks:
       - netOSM
     volumes:
@@ -95,7 +95,7 @@
     #  - kafka
     #  - mongo
   lcm:
-    image: ${DOCKER_USER:-osm}/lcm:${TAG:-latest}
+    image: ${DOCKER_USER:-opensourcemano}/lcm:${TAG:-latest}
     networks:
       - netOSM
     volumes:
@@ -121,7 +121,7 @@
 #    ports:
 #      - "3306:3306"
   ro:
-    image: ${DOCKER_USER:-osm}/ro:${TAG:-latest}
+    image: ${DOCKER_USER:-opensourcemano}/ro:${TAG:-latest}
     networks:
       - netOSM
     environment:
@@ -133,7 +133,7 @@
     ports:
       - "${OSM_RO_PORTS:-9090:9090}"
   mon:
-    image: ${DOCKER_USER:-osm}/mon:${TAG:-latest}
+    image: ${DOCKER_USER:-opensourcemano}/mon:${TAG:-latest}
     networks:
       - netOSM
     volumes:
@@ -148,7 +148,7 @@
     #depends_on:
     #  - kafka
   pol:
-    image: ${DOCKER_USER:-osm}/pol:${TAG:-latest}
+    image: ${DOCKER_USER:-opensourcemano}/pol:${TAG:-latest}
     networks:
       - netOSM
     volumes:
@@ -160,7 +160,7 @@
     #  - kafka
     #  - mon
   light-ui:
-    image: ${DOCKER_USER:-osm}/light-ui:${TAG:-latest}
+    image: ${DOCKER_USER:-opensourcemano}/light-ui:${TAG:-latest}
     networks:
       - netOSM
     environment:
diff --git a/installers/full_install_osm.sh b/installers/full_install_osm.sh
index f67ba08..e1f2ff2 100755
--- a/installers/full_install_osm.sh
+++ b/installers/full_install_osm.sh
@@ -167,14 +167,14 @@
         remove_stack osm_metrics
         echo "Now osm docker images and volumes will be deleted"
         newgrp docker << EONG
-        docker image rm ${DOCKERUSER}/ro
-        docker image rm ${DOCKERUSER}/lcm
-        docker image rm ${DOCKERUSER}/light-ui
-        docker image rm ${DOCKERUSER}/keystone
-        docker image rm ${DOCKERUSER}/nbi
-        docker image rm ${DOCKERUSER}/mon
-        docker image rm ${DOCKERUSER}/pm
-        docker image rm ${DOCKERUSER}/kafka-exporter
+        docker image rm ${DOCKER_USER}/ro
+        docker image rm ${DOCKER_USER}/lcm
+        docker image rm ${DOCKER_USER}/light-ui
+        docker image rm ${DOCKER_USER}/keystone
+        docker image rm ${DOCKER_USER}/nbi
+        docker image rm ${DOCKER_USER}/mon
+        docker image rm ${DOCKER_USER}/pm
+        docker image rm ${DOCKER_USER}/kafka-exporter
 EONG
         remove_volumes $OSM_STACK_NAME
         remove_network $OSM_STACK_NAME
@@ -673,7 +673,7 @@
     elif [ -z "$TO_REBUILD" ] || echo $TO_REBUILD | grep -q MON ; then
         git -C ${LWTEMPDIR} clone https://osm.etsi.org/gerrit/osm/MON
         git -C ${LWTEMPDIR}/MON checkout ${COMMIT_ID}
-        sg docker -c "docker build ${LWTEMPDIR}/MON -f ${LWTEMPDIR}/MON/docker/Dockerfile -t osm/mon --no-cache" || FATAL "cannot build MON docker image"
+        sg docker -c "docker build ${LWTEMPDIR}/MON -f ${LWTEMPDIR}/MON/docker/Dockerfile -t ${DOCKER_USER}/mon --no-cache" || FATAL "cannot build MON docker image"
     fi
 
     if [ -n "$PULL_IMAGES" ]; then
@@ -681,7 +681,7 @@
     elif [ -z "$TO_REBUILD" ] || echo $TO_REBUILD | grep -q MON ; then
         git -C ${LWTEMPDIR} clone https://osm.etsi.org/gerrit/osm/POL
         git -C ${LWTEMPDIR}/POL checkout ${COMMIT_ID}
-        sg docker -c "docker build ${LWTEMPDIR}/POL -f ${LWTEMPDIR}/POL/docker/Dockerfile -t osm/pol --no-cache" || FATAL "cannot build PM docker image"
+        sg docker -c "docker build ${LWTEMPDIR}/POL -f ${LWTEMPDIR}/POL/docker/Dockerfile -t ${DOCKER_USER}/pol --no-cache" || FATAL "cannot build PM docker image"
     fi
 
     if [ -n "$PULL_IMAGES" ]; then
@@ -690,8 +690,8 @@
     elif [ -z "$TO_REBUILD" ] || echo $TO_REBUILD | grep -q NBI ; then
         git -C ${LWTEMPDIR} clone https://osm.etsi.org/gerrit/osm/NBI
         git -C ${LWTEMPDIR}/NBI checkout ${COMMIT_ID}
-        sg docker -c "docker build ${LWTEMPDIR}/NBI -f ${LWTEMPDIR}/NBI/Dockerfile.local -t osm/nbi --no-cache" || FATAL "cannot build NBI docker image"
-        sg docker -c "docker build ${LWTEMPDIR}/NBI/keystone -f ${LWTEMPDIR}/NBI/keystone/Dockerfile -t osm/keystone --no-cache" || FATAL "cannot build KEYSTONE docker image"
+        sg docker -c "docker build ${LWTEMPDIR}/NBI -f ${LWTEMPDIR}/NBI/Dockerfile.local -t ${DOCKER_USER}/nbi --no-cache" || FATAL "cannot build NBI docker image"
+        sg docker -c "docker build ${LWTEMPDIR}/NBI/keystone -f ${LWTEMPDIR}/NBI/keystone/Dockerfile -t ${DOCKER_USER}/keystone --no-cache" || FATAL "cannot build KEYSTONE docker image"
     fi
 
     if [ -n "$PULL_IMAGES" ]; then
@@ -700,7 +700,7 @@
         sg docker -c "docker pull mysql:5" || FATAL "cannot get mysql docker image"
         git -C ${LWTEMPDIR} clone https://osm.etsi.org/gerrit/osm/RO
         git -C ${LWTEMPDIR}/RO checkout ${COMMIT_ID}
-        sg docker -c "docker build ${LWTEMPDIR}/RO -f ${LWTEMPDIR}/RO/docker/Dockerfile-local -t osm/ro --no-cache" || FATAL "cannot build RO docker image"
+        sg docker -c "docker build ${LWTEMPDIR}/RO -f ${LWTEMPDIR}/RO/docker/Dockerfile-local -t ${DOCKER_USER}/ro --no-cache" || FATAL "cannot build RO docker image"
     fi
 
     if [ -n "$PULL_IMAGES" ]; then
@@ -708,7 +708,7 @@
     elif [ -z "$TO_REBUILD" ] || echo $TO_REBUILD | grep -q LCM ; then
         git -C ${LWTEMPDIR} clone https://osm.etsi.org/gerrit/osm/LCM
         git -C ${LWTEMPDIR}/LCM checkout ${COMMIT_ID}
-        sg docker -c "docker build ${LWTEMPDIR}/LCM -f ${LWTEMPDIR}/LCM/Dockerfile.local -t osm/lcm --no-cache" || FATAL "cannot build LCM docker image"
+        sg docker -c "docker build ${LWTEMPDIR}/LCM -f ${LWTEMPDIR}/LCM/Dockerfile.local -t ${DOCKER_USER}/lcm --no-cache" || FATAL "cannot build LCM docker image"
     fi
 
     if [ -n "$PULL_IMAGES" ]; then
@@ -716,13 +716,13 @@
     elif [ -z "$TO_REBUILD" ] || echo $TO_REBUILD | grep -q LW-UI ; then
         git -C ${LWTEMPDIR} clone https://osm.etsi.org/gerrit/osm/LW-UI
         git -C ${LWTEMPDIR}/LW-UI checkout ${COMMIT_ID}
-        sg docker -c "docker build ${LWTEMPDIR}/LW-UI -t osm/light-ui -f ${LWTEMPDIR}/LW-UI/docker/Dockerfile --no-cache" || FATAL "cannot build LW-UI docker image"
+        sg docker -c "docker build ${LWTEMPDIR}/LW-UI -f ${LWTEMPDIR}/LW-UI/docker/Dockerfile -t ${DOCKER_USER}/light-ui --no-cache" || FATAL "cannot build LW-UI docker image"
     fi
 
     if [ -n "$PULL_IMAGES" ]; then
         sg docker -c "docker pull ${DOCKER_USER}/osmclient:${OSM_DOCKER_TAG}" || FATAL "cannot pull osmclient docker image"
     elif [ -z "$TO_REBUILD" ] || echo $TO_REBUILD | grep -q LW-osmclient; then
-        sg docker -c "docker build -t osm/osmclient ${BUILD_ARGS[@]} -f $OSM_DEVOPS/docker/osmclient ."
+        sg docker -c "docker build -t ${DOCKER_USER}/osmclient ${BUILD_ARGS[@]} -f $OSM_DEVOPS/docker/osmclient ."
     fi
     echo "Finished generation of docker images"
 }
@@ -881,8 +881,6 @@
     echo "export PROMETHEUS_TAG=${PROMETHEUS_TAG}" | $WORKDIR_SUDO tee --append $OSM_DOCKER_WORK_DIR/osm_ports.sh
     echo "export KEYSTONEDB_TAG=${KEYSTONEDB_TAG}" | $WORKDIR_SUDO tee --append $OSM_DOCKER_WORK_DIR/osm_ports.sh
 
-
-
     pushd $OSM_DOCKER_WORK_DIR
     sg docker -c "source ./osm_ports.sh; docker stack deploy -c $OSM_DOCKER_WORK_DIR/docker-compose.yaml $OSM_STACK_NAME"
     popd
@@ -954,7 +952,7 @@
 }
 
 function install_lightweight() {
-    OSM_DOCKER_WORK_DIR="$OSM_WORK_DIR/stack/$OSM_STACK_NAME"
+    [ "${OSM_STACK_NAME}" == "osm" ] || OSM_DOCKER_WORK_DIR="$OSM_WORK_DIR/stack/$OSM_STACK_NAME"
     [ ! -d "$OSM_DOCKER_WORK_DIR" ] && $WORKDIR_SUDO mkdir -p $OSM_DOCKER_WORK_DIR
 
     [ "$USER" == "root" ] && FATAL "You are running the installer as root. The installer is prepared to be executed as a normal user with sudo privileges."
@@ -1077,11 +1075,23 @@
     echo "TO_REBUILD=$TO_REBUILD"
     echo "INSTALL_NOLXD=$INSTALL_NOLXD"
     echo "INSTALL_NODOCKER=$INSTALL_NODOCKER"
+    echo "INSTALL_NOJUJU=$INSTALL_NOJUJU"
     echo "RELEASE=$RELEASE"
     echo "REPOSITORY=$REPOSITORY"
     echo "REPOSITORY_BASE=$REPOSITORY_BASE"
     echo "REPOSITORY_KEY=$REPOSITORY_KEY"
     echo "NOCONFIGURE=$NOCONFIGURE"
+    echo "OSM_DEVOPS=$OSM_DEVOPS"
+    echo "OSM_VCA_HOST=$OSM_VCA_HOST"
+    echo "OSM_VCA_SECRET=$OSM_VCA_SECRET"
+    echo "NO_HOST_PORTS=$NO_HOST_PORTS"
+    echo "DOCKER_NOBUILD=$DOCKER_NOBUILD"
+    echo "WORKDIR_SUDO=$WORKDIR_SUDO"
+    echo "OSM_WORK_DIR=$OSM_STACK_NAME"
+    echo "OSM_DOCKER_TAG=$OSM_DOCKER_TAG"
+    echo "DOCKER_USER=$DOCKER_USER"
+    echo "OSM_STACK_NAME=$OSM_STACK_NAME"
+    echo "PULL_IMAGES=$PULL_IMAGES"
     echo "SHOWOPTS=$SHOWOPTS"
     echo "Install from specific refspec (-b): $COMMIT_ID"
 }
@@ -1125,6 +1135,7 @@
 INSTALL_NOLXD=""
 INSTALL_NODOCKER=""
 INSTALL_NOJUJU=""
+INSTALL_NOHOSTCLIENT=""
 NOCONFIGURE=""
 RELEASE_DAILY=""
 SESSION_ID=`date +%s`
@@ -1135,24 +1146,27 @@
 NO_HOST_PORTS=""
 DOCKER_NOBUILD=""
 REPOSITORY_KEY="OSM%20ETSI%20Release%20Key.gpg"
-REPOSITORY_BASE="http://osm-download.etsi.org/repository/osm/debian"
+REPOSITORY_BASE="https://osm-download.etsi.org/repository/osm/debian"
 WORKDIR_SUDO=sudo
 OSM_WORK_DIR="/etc/osm"
+OSM_DOCKER_WORK_DIR="/etc/osm/docker"
 OSM_DOCKER_TAG=latest
-DOCKER_USER=osm
+DOCKER_USER=opensourcemano
+PULL_IMAGES="y"
 KAFKA_TAG=2.11-1.0.2
 PROMETHEUS_TAG=v2.4.3
 KEYSTONEDB_TAG=10
 OSM_DATABASE_COMMONKEY=
 ELASTIC_VERSION=6.4.2
 
-while getopts ":hy-:b:r:k:u:R:l:p:D:o:m:H:S:s:w:t:" o; do
+while getopts ":hy-:b:r:k:u:R:l:p:D:o:m:H:S:s:w:t:U:" o; do
     case "${o}" in
         h)
             usage && exit 0
             ;;
         b)
             COMMIT_ID=${OPTARG}
+            PULL_IMAGES=""
             ;;
         r)
             REPOSITORY="${OPTARG}"
@@ -1170,6 +1184,9 @@
             REPOSITORY_BASE="${OPTARG}"
             REPO_ARGS+=(-u "$REPOSITORY_BASE")
             ;;
+        U)
+            DOCKER_USER="${OPTARG}"
+            ;;
         l)
             LXD_REPOSITORY_BASE="${OPTARG}"
             ;;
@@ -1214,7 +1231,7 @@
             ;;
         -)
             [ "${OPTARG}" == "help" ] && usage && exit 0
-            [ "${OPTARG}" == "source" ] && INSTALL_FROM_SOURCE="y" && continue
+            [ "${OPTARG}" == "source" ] && INSTALL_FROM_SOURCE="y" && PULL_IMAGES="" && continue
             [ "${OPTARG}" == "develop" ] && DEVELOP="y" && continue
             [ "${OPTARG}" == "uninstall" ] && UNINSTALL="y" && continue
             [ "${OPTARG}" == "nat" ] && NAT="y" && continue
@@ -1237,7 +1254,7 @@
             [ "${OPTARG}" == "nojuju" ] && INSTALL_NOJUJU="y" && continue
             [ "${OPTARG}" == "nodockerbuild" ] && DOCKER_NOBUILD="y" && continue
             [ "${OPTARG}" == "nohostclient" ] && INSTALL_NOHOSTCLIENT="y" && continue
-            [ "${OPTARG}" == "pullimages" ] && DOCKER_USER="opensourcemano" && PULL_IMAGES=true && continue
+            [ "${OPTARG}" == "pullimages" ] && continue
             echo -e "Invalid option: '--$OPTARG'\n" >&2
             usage && exit 1
             ;;
diff --git a/installers/install_osm.sh b/installers/install_osm.sh
index 899adb1..bc1adfa 100755
--- a/installers/install_osm.sh
+++ b/installers/install_osm.sh
@@ -31,4 +31,4 @@
 add_repo "deb [arch=amd64] $REPOSITORY_BASE/$RELEASE $REPOSITORY devops"
 sudo DEBIAN_FRONTEND=noninteractive apt-get -q update
 sudo DEBIAN_FRONTEND=noninteractive apt-get install osm-devops
-/usr/share/osm-devops/installers/full_install_osm.sh -R $RELEASE -r $REPOSITORY -u $REPOSITORY_BASE -D /usr/share/osm-devops -t releasefive-daily --pullimages "$@"
+/usr/share/osm-devops/installers/full_install_osm.sh -R $RELEASE -r $REPOSITORY -u $REPOSITORY_BASE -D /usr/share/osm-devops -t releasefive-daily "$@"
diff --git a/jenkins/ci-pipelines/ci_stage_3.groovy b/jenkins/ci-pipelines/ci_stage_3.groovy
index 6d0d00e..38b255b 100644
--- a/jenkins/ci-pipelines/ci_stage_3.groovy
+++ b/jenkins/ci-pipelines/ci_stage_3.groovy
@@ -60,7 +60,7 @@
         sh(script: "touch ${tempdir}/env")
         envfile="${tempdir}/env"
     }
-    sh "docker run --network net${stackName} --env-file ${envfile} -v ${tempdir}:/usr/share/osm-devops/systest/reports osm/osmclient:${tagName} make -C /usr/share/osm-devops/systest ${testName}"
+    sh "docker run --network net${stackName} --env-file ${envfile} -v ${tempdir}:/usr/share/osm-devops/systest/reports opensourcemano/osmclient:${tagName} make -C /usr/share/osm-devops/systest ${testName}"
     sh "cp ${tempdir}/* ."
     junit  '*.xml'
 }
@@ -225,6 +225,11 @@
                         release = "-R ${params.RELEASE}"
                     }
              
+                    if ( params.REPOSITORY_BASE )
+                    {
+                        repo_base_url = "-u ${params.REPOSITORY_BASE}"
+                    }
+             
                     sh """
                         export PATH=$PATH:/snap/bin
                         installers/full_install_osm.sh -y -s ${container_name} --test --nolxd --nodocker --nojuju --nohostports --nohostclient \
diff --git a/systest/Makefile b/systest/Makefile
index 75ab556..a5b6303 100644
--- a/systest/Makefile
+++ b/systest/Makefile
@@ -193,7 +193,7 @@
 %.openstack: check_openstack_env
 	$(Q)$(MAKE) $*
 
-%s.vcd: check_vcd_env
+%.vcd: check_vcd_env
 	$(Q)$(MAKE) $*
 
 cirros: check_OSM_HOSTNAME \
diff --git a/systest/lib/vim/vim.py b/systest/lib/vim/vim.py
index f3d1753..0ac9525 100644
--- a/systest/lib/vim/vim.py
+++ b/systest/lib/vim/vim.py
@@ -23,4 +23,7 @@
         try:
             osm.get_api().vim.get(self.vim_name)
         except ClientException:
-            osm.get_api().vim.create(self.vim_name,openstack.get_access())
+            if vmware._os_access['vim-url'] and vmware._os_access['vim-type'] == 'vmware':
+                osm.get_api().vim.create(self.vim_name,vmware.get_access())
+            else:
+                osm.get_api().vim.create(self.vim_name,openstack.get_access())
diff --git a/tools/vmware_ovf_upload.py b/tools/vmware_ovf_upload.py
index 4737415..4f3f0e7 100755
--- a/tools/vmware_ovf_upload.py
+++ b/tools/vmware_ovf_upload.py
@@ -22,19 +22,20 @@
 ##
 
 
-from pyvcloud.vcloudair import VCA
-from pyvcloud import Http
 from xml.etree import ElementTree as XmlElementTree
-from pyvcloud.schema.vcd.v1_5.schemas.vcloud import mediaType
+from pyvcloud.vcd.client import BasicLoginCredentials,Client
+from pyvcloud.vcd.vdc import VDC
+from pyvcloud.vcd.org import Org
 import sys,os
 import logging
 import requests
 import time
 import re
+import hashlib
+from progressbar import Percentage, Bar, ETA, FileTransferSpeed, ProgressBar
 
 
-STANDALONE = 'standalone'
-VCAVERSION = '5.9'
+API_VERSION = '5.6'
 
 class vCloudconfig(object):
     def __init__(self, host=None, user=None, password=None,orgname=None, logger=None):
@@ -42,7 +43,8 @@
         self.user = user
         self.password = password
         self.org = orgname
-        self.logger = logger
+        self.logger = logging.getLogger('vmware_ovf_upload')
+        self.logger.setLevel(10)
 
     def connect(self):
         """ Method connect as normal user to vCloud director.
@@ -52,87 +54,164 @@
         """
 
         try:
-            self.logger.debug("Logging in to a vca {} as {} to datacenter {}.".format(self.org,
-                                                                                      self.user,
-                                                                                      self.org))
-            vca = VCA(host=self.url,
-                      username=self.user,
-                      service_type=STANDALONE,
-                      version=VCAVERSION,
-                      verify=False,
-                      log=False)
-
-            result = vca.login(password=self.password, org=self.org)
-            if not result:
-                raise vimconn.vimconnConnectionException("Can't connect to a vCloud director as: {}".format(self.user))
-            result = vca.login(token=vca.token, org=self.org, org_url=vca.vcloud_session.org_url)
-            if result is True:
-                self.logger.info(
-                    "Successfully logged to a vcloud direct org: {} as user: {}".format(self.org, self.user))
-
+            self.logger.debug("Logging in to a vcd {} as user {}".format(self.org,
+                                                                       self.user))
+            client = Client(self.url, verify_ssl_certs=False)
+            client.set_credentials(BasicLoginCredentials(self.user, self.org, self.password))
         except:
-            raise vimconn.vimconnConnectionException("Can't connect to a vCloud director org: "
+            raise Exception("Can't connect to a vCloud director org: "
                                                      "{} as user: {}".format(self.org, self.user))
 
-        return vca
+        return client
 
-    def upload_ovf(self, catalog_name=None, image_name=None, media_file_name=None,
+    def get_catalog_id_from_path(self, catalog_name=None, path=None, progress=False):
+        """
+        Args
+            catalog - catalog name to be created
+            path: - valid path to OVF file.
+            progress - boolean progress bar show progress bar.
+
+        Return: if image uploaded correct method will provide image catalog UUID.
+        """
+        if not path:
+            raise Exception("Image path can't be None.")
+
+        if not os.path.isfile(path):
+            raise Exception("Can't read file. File not found.")
+
+        if not os.access(path, os.R_OK):
+            raise Exception("Can't read file. Check file permission to read.")
+
+        self.logger.debug("get_catalog_id_from_path() client requesting {} ".format(path))
+
+        dirpath, filename = os.path.split(path)
+        flname, file_extension = os.path.splitext(path)
+        if file_extension != '.ovf':
+            self.logger.debug("Wrong file extension {} connector support only OVF container.".format(file_extension))
+            raise Exception("Wrong container.  vCloud director supports only OVF.")
+
+        self.logger.debug("File name {} Catalog Name {} file path {} ".format(filename,
+                                                                          catalog_name,
+                                                                                 path))
+        try:
+            client = self.connect()
+            if not client:
+                raise Exception("Failed to connect vCD") 
+            org = Org(client, resource=client.get_org())
+            catalogs = org.list_catalogs()
+        except Exception as exp:
+            self.logger.debug("Failed get catalogs() with Exception {} ".format(exp))
+            raise Exception("Failed get catalogs() with Exception {} ".format(exp))
+
+        if len(catalogs) == 0:
+            self.logger.info("Creating a new catalog entry {} in vcloud director".format(catalog_name))
+            result = org.create_catalog(catalog_name, catalog_name)
+            if result is None:
+                raise Exception("Failed to create new catalog {} ".format(catalog_name))
+            result = self.upload_ovf(org=org, catalog_name=catalog_name, image_name=filename.split(".")[0],
+                               media_file_name=path, description='medial_file_name', progress=progress)
+            if not result:
+                raise Exception("Failed to create vApp template for catalog {} ".format(catalog_name))
+            return self.get_catalogid(catalog_name, catalogs)
+        else:
+            for catalog in catalogs:
+                # search for existing catalog if we find same name we return ID
+                if catalog['name'] == catalog_name:
+                    self.logger.debug("Found existing catalog entry for {} "
+                                        "catalog id {}".format(catalog_name,
+                                  self.get_catalogid(catalog_name, catalogs)))
+                    return self.get_catalogid(catalog_name, catalogs)
+
+        # if we didn't find existing catalog we create a new one and upload image.
+        self.logger.debug("Creating new catalog entry {} - {}".format(catalog_name, catalog_name))
+        result = org.create_catalog(catalog_name, catalog_name) 
+        if result is None:
+            raise Exception("Failed to create new catalog {} ".format(catalog_name))
+
+        result = self.upload_ovf(org=org, catalog_name=catalog_name, image_name=filename.split(".")[0],
+                               media_file_name=path, description='medial_file_name', progress=progress)
+        if not result:
+            raise Exception("Failed create vApp template for catalog {} ".format(catalog_name))
+
+    def get_catalogid(self, catalog_name=None, catalogs=None):
+        """  Method check catalog and return catalog ID in UUID format.
+
+        Args
+            catalog_name: catalog name as string
+            catalogs:  list of catalogs.
+
+        Return: catalogs uuid
+        """
+
+        for catalog in catalogs:
+            if catalog['name'] == catalog_name:
+                catalog_id = catalog['id']
+                return catalog_id
+        return None
+
+    def upload_ovf(self, org=None, catalog_name=None, image_name=None, media_file_name=None,
                    description='', progress=False, chunk_bytes=128 * 1024):
         """
         Uploads a OVF file to a vCloud catalog
 
+        org : organization object
         catalog_name: (str): The name of the catalog to upload the media.
         media_file_name: (str): The name of the local media file to upload.
         return: (bool) True if the media file was successfully uploaded, false otherwise.
         """
-        vca = self.connect()   
-
-        # Creating new catalog in vCD
-        task = vca.create_catalog(catalog_name, catalog_name)
-        result = vca.block_until_completed(task)
-        if not result:
-            return False
+        client = self.connect()
+        if not client:
+            raise Exception("Failed to connect vCD!")
 
         os.path.isfile(media_file_name)
         statinfo = os.stat(media_file_name)
 
-
         #  find a catalog entry where we upload OVF.
         #  create vApp Template and check the status if vCD able to read OVF it will respond with appropirate
         #  status change.
         #  if VCD can parse OVF we upload VMDK file
         try:
-            for catalog in vca.get_catalogs():
-                if catalog_name != catalog.name:
+            for catalog in org.list_catalogs():
+                if catalog_name != catalog['name']:
                     continue
-                link = filter(lambda link: link.get_type() == "application/vnd.vmware.vcloud.media+xml" and
-                                           link.get_rel() == 'add', catalog.get_Link())
-                assert len(link) == 1
+                catalog_href = "{}/api/catalog/{}/action/upload".format(self.url, catalog['id'])
                 data = """
                 <UploadVAppTemplateParams name="{}" xmlns="http://www.vmware.com/vcloud/v1.5" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"><Description>{} vApp Template</Description></UploadVAppTemplateParams>
-                """.format(catalog_name, catalog_name)
-                headers = vca.vcloud_session.get_vcloud_headers()
-                headers['Content-Type'] = 'application/vnd.vmware.vcloud.uploadVAppTemplateParams+xml'
-                response = Http.post(link[0].get_href(), headers=headers, data=data, verify=vca.verify, logger=self.logger)
+                """.format(catalog_name, description)
+
+                if client:
+                    headers = {'Accept':'application/*+xml;version=' + API_VERSION,
+                           'x-vcloud-authorization': client._session.headers['x-vcloud-authorization']}
+                    headers['Content-Type'] = 'application/vnd.vmware.vcloud.uploadVAppTemplateParams+xml'
+
+                response = requests.post(url=catalog_href,
+                                          headers=headers,
+                                                data=data,
+                                             verify=False)
+                if response.status_code != 201:
+                    self.logger.debug("Failed to create vApp template")
+                    raise Exception("Failed to create vApp template")   
+
                 if response.status_code == requests.codes.created:
                     catalogItem = XmlElementTree.fromstring(response.content)
                     entity = [child for child in catalogItem if
                               child.get("type") == "application/vnd.vmware.vcloud.vAppTemplate+xml"][0]
                     href = entity.get('href')
                     template = href
-                    response = Http.get(href, headers=vca.vcloud_session.get_vcloud_headers(),
-                                        verify=vca.verify, logger=self.logger)
 
+                    response = requests.get(url=href,
+                                    headers=headers,
+                                       verify=False)
                     if response.status_code == requests.codes.ok:
-                        media = mediaType.parseString(response.content, True)
-                        link = filter(lambda link: link.get_rel() == 'upload:default',
-                                      media.get_Files().get_File()[0].get_Link())[0]
-                        headers = vca.vcloud_session.get_vcloud_headers()
                         headers['Content-Type'] = 'Content-Type text/xml'
-                        response = Http.put(link.get_href(),
-                                            data=open(media_file_name, 'rb'),
-                                            headers=headers,
-                                            verify=vca.verify, logger=self.logger)
+                        result = re.search('rel="upload:default"\shref="(.*?\/descriptor.ovf)"',response.content)
+                        if result:
+                            transfer_href = result.group(1)
+
+                        response = requests.put(url=transfer_href, headers=headers,
+                                        data=open(media_file_name, 'rb'),
+                                                            verify=False)
+
                         if response.status_code != requests.codes.ok:
                             self.logger.debug(
                                 "Failed create vApp template for catalog name {} and image {}".format(catalog_name,
@@ -146,80 +225,72 @@
 
                     # uploading VMDK file
                     # check status of OVF upload and upload remaining files.
-                    response = Http.get(template,
-                                        headers=vca.vcloud_session.get_vcloud_headers(),
-                                        verify=vca.verify,
-                                        logger=self.logger)
+
+                    response = requests.get(url=template,
+                                         headers=headers,
+                                            verify=False)
 
                     if response.status_code == requests.codes.ok:
-                        media = mediaType.parseString(response.content, True)
-                        number_of_files = len(media.get_Files().get_File())
-                        for index in xrange(0, number_of_files):
-                            links_list = filter(lambda link: link.get_rel() == 'upload:default',
-                                                media.get_Files().get_File()[index].get_Link())
-                            for link in links_list:
-                                # we skip ovf since it already uploaded.
-                                if 'ovf' in link.get_href():
-                                    continue
-                                # The OVF file and VMDK must be in a same directory
-                                head, tail = os.path.split(media_file_name)
-                                file_vmdk = head + '/' + link.get_href().split("/")[-1]
-                                if not os.path.isfile(file_vmdk):
+                        result = re.search('rel="upload:default"\s*href="(.*?vmdk)"',response.content)
+                        if result:
+                            link_href = result.group(1)
+                        # we skip ovf since it already uploaded.
+                        if 'ovf' in link_href:
+                            continue
+                        # The OVF file and VMDK must be in a same directory
+                        head, tail = os.path.split(media_file_name)
+                        file_vmdk = head + '/' + link_href.split("/")[-1]
+                        if not os.path.isfile(file_vmdk):
+                            return False
+                        statinfo = os.stat(file_vmdk)
+                        if statinfo.st_size == 0:
+                            return False
+                        hrefvmdk = link_href
+                        if progress:
+                            widgets = ['Uploading file: ', Percentage(), ' ', Bar(), ' ', ETA(), ' ',
+                                           FileTransferSpeed()]
+                            progress_bar = ProgressBar(widgets=widgets, maxval=statinfo.st_size).start()
+
+                        bytes_transferred = 0
+                        f = open(file_vmdk, 'rb')
+                        while bytes_transferred < statinfo.st_size:
+                            my_bytes = f.read(chunk_bytes)
+                            if len(my_bytes) <= chunk_bytes:
+                                headers['Content-Range'] = 'bytes %s-%s/%s' % (
+                                    bytes_transferred, len(my_bytes) - 1, statinfo.st_size)
+                                headers['Content-Length'] = str(len(my_bytes))
+                                response = requests.put(url=hrefvmdk,
+                                                         headers=headers,
+                                                         data=my_bytes,
+                                                         verify=False)
+                                if response.status_code == requests.codes.ok:
+                                    bytes_transferred += len(my_bytes)
+                                    if progress:
+                                        progress_bar.update(bytes_transferred)
+                                else:
+                                    self.logger.debug(
+                                        'file upload failed with error: [%s] %s' % (response.status_code,
+                                                                                        response.content))
+
+                                    f.close()
                                     return False
-                                statinfo = os.stat(file_vmdk)
-                                if statinfo.st_size == 0:
-                                    return False
-                                hrefvmdk = link.get_href()
-
-                                if progress:
-                                    print("Uploading file: {}".format(file_vmdk))
-                                if progress:
-                                    widgets = ['Uploading file: ', Percentage(), ' ', Bar(), ' ', ETA(), ' ',
-                                               FileTransferSpeed()]
-                                    progress_bar = ProgressBar(widgets=widgets, maxval=statinfo.st_size).start()
-
-                                bytes_transferred = 0
-                                f = open(file_vmdk, 'rb')
-                                while bytes_transferred < statinfo.st_size:
-                                    my_bytes = f.read(chunk_bytes)
-                                    if len(my_bytes) <= chunk_bytes:
-                                        headers = vca.vcloud_session.get_vcloud_headers()
-                                        headers['Content-Range'] = 'bytes %s-%s/%s' % (
-                                            bytes_transferred, len(my_bytes) - 1, statinfo.st_size)
-                                        headers['Content-Length'] = str(len(my_bytes))
-                                        response = Http.put(hrefvmdk,
-                                                            headers=headers,
-                                                            data=my_bytes,
-                                                            verify=vca.verify,
-                                                            logger=None)
-
-                                        if response.status_code == requests.codes.ok:
-                                            bytes_transferred += len(my_bytes)
-                                            if progress:
-                                                progress_bar.update(bytes_transferred)
-                                        else:
-                                            self.logger.debug(
-                                                'file upload failed with error: [%s] %s' % (response.status_code,
-                                                                                            response.content))
-
-                                            f.close()
-                                            return False
-                                f.close()
-                                if progress:
-                                    progress_bar.finish()
-                                time.sleep(15)
-                        self.logger.debug("OVF image sucessfully uploaded to the VMware vCloud Director")
-                        return True
-                    else:
-                        self.logger.debug("Failed retrieve vApp template for catalog name {} for OVF {}".
-                                          format(catalog_name, media_file_name))
-                        return False
+                        f.close()
+                        if progress:
+                            progress_bar.finish()
+                            time.sleep(60)
+                    return True
+                else:
+                    self.logger.debug("Failed retrieve vApp template for catalog name {} for OVF {}".
+                                      format(catalog_name, media_file_name))
+                    return False 
         except Exception as exp:
             self.logger.debug("Failed while uploading OVF to catalog {} for OVF file {} with Exception {}"
                 .format(catalog_name,media_file_name, exp))
-            raise Exception("Failed while uploading OVF to catalog {} for OVF file {} with Exception {}" \
-                .format(catalog_name,media_file_name, exp))
-
+            raise Exception(
+                "Failed while uploading OVF to catalog {} for OVF file {} with Exception {}"
+                .format(catalog_name,media_file_name, exp))  
+        self.logger.debug("Failed to retrieve catalog name {} for OVF file {}".format(catalog_name, media_file_name))
+        return False   
 
 if __name__ == "__main__":
 
@@ -255,10 +326,6 @@
     match = re.search("image:\s'(.*?)'\n",rh.read())
     if match: catalog = match.group(1)
 
-
     if file_extension == '.ovf':
-        result = obj.upload_ovf(catalog_name=catalog, image_name='linux',
-                                                media_file_name=ovf_file_path,
-                                               description='', progress=False,
-                                                       chunk_bytes=128 * 1024)
-    
+        obj.get_catalog_id_from_path(catalog_name=catalog, path=ovf_file_path,
+                                                               progress=True)
