diff --git a/robot-systest/resources/basic_01-crud_operations_on_vim_targets_data.py b/robot-systest/resources/basic_01-crud_operations_on_vim_targets_data.py
new file mode 100644
index 0000000..c30314e
--- /dev/null
+++ b/robot-systest/resources/basic_01-crud_operations_on_vim_targets_data.py
@@ -0,0 +1,46 @@
+#   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.
+
+import os
+import yaml
+from pathlib import Path
+
+# Prometheus host and port
+prometheus_host = os.environ.get("OSM_HOSTNAME")
+prometheus_port = "9091"
+
+# VIM Configuration
+vim_account_type = "openstack"
+vim_name_prefix = "basic_01_vim_test"
+# Get credentias from Openstack Clouds file
+os_cloud = os.environ.get("OS_CLOUD")
+clouds_file_paths = ["./clouds.yaml", str(Path.home()) + "/.config/openstack/clouds.yaml", "/etc/openstack/clouds.yaml"]
+for path in clouds_file_paths:
+    clouds_file_path = Path(path)
+    if clouds_file_path.exists(): break
+if not clouds_file_path.exists(): raise Exception("Openstack clouds file not found")
+with clouds_file_path.open() as clouds_file:
+    clouds = yaml.safe_load(clouds_file)
+    if not os_cloud in clouds["clouds"]: raise Exception("Openstack cloud '" + os_cloud + "' not found")
+    cloud = clouds["clouds"][os_cloud]
+    if not "username" in cloud["auth"]: raise Exception("Username not found in Openstack cloud '" + os_cloud + "'")
+    vim_user = cloud["auth"]["username"]
+    if not "password" in cloud["auth"]: raise Exception("Password not found in Openstack cloud '" + os_cloud + "'")
+    vim_password = cloud["auth"]["password"]
+    if not "auth_url" in cloud["auth"]: raise Exception("Auth url not found in Openstack cloud '" + os_cloud + "'")
+    vim_auth_url = cloud["auth"]["auth_url"]
+    if not "project_name" in cloud["auth"]: raise Exception("Project name not found in Openstack cloud '" + os_cloud + "'")
+    vim_tenant = cloud["auth"]["project_name"]
+    vim_user_domain_name = cloud["auth"]["user_domain_name"] if "user_domain_name" in cloud["auth"] else "Default"
+    vim_project_domain_name = cloud["auth"]["project_domain_name"] if "project_domain_name" in cloud["auth"] else "Default"
+# Extra config
+vim_config = "'{project_domain_name: " + vim_project_domain_name + ", user_domain_name: " + vim_user_domain_name + ", vim_network_name: " + os.environ.get("VIM_MGMT_NET") + "}'"
diff --git a/robot-systest/resources/basic_05-instantiation_parameters_in_cloud_init_data.py b/robot-systest/resources/basic_05-instantiation_parameters_in_cloud_init_data.py
new file mode 100644
index 0000000..1c3a6d7
--- /dev/null
+++ b/robot-systest/resources/basic_05-instantiation_parameters_in_cloud_init_data.py
@@ -0,0 +1,24 @@
+#   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.
+
+from pathlib import Path
+
+# Get ${HOME} from local machine
+home = str(Path.home())
+# NS and VNF descriptor package files
+vnfd_pkg = 'ubuntu-cloudinit_vnfd.tar.gz'
+nsd_pkg = 'ubuntu-cloudinit_nsd.tar.gz'
+# NS and VNF descriptor names
+vnfd_name = 'ubuntu-cloudinit_vnfd'
+nsd_name = 'ubuntu-cloudinit_nsd'
+# NS instance name
+ns_name = 'basic_05_instantiation_params_cloud_init'
diff --git a/robot-systest/resources/basic_06-vnf_with_charm_data.py b/robot-systest/resources/basic_06-vnf_with_charm_data.py
new file mode 100644
index 0000000..b044815
--- /dev/null
+++ b/robot-systest/resources/basic_06-vnf_with_charm_data.py
@@ -0,0 +1,27 @@
+#   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.
+
+from pathlib import Path
+
+# Get ${HOME} from local machine
+home = str(Path.home())
+# NS and VNF descriptor package files
+vnfd_pkg = 'hackfest_proxycharm_vnf.tar.gz'
+nsd_pkg = 'hackfest_proxycharm_ns.tar.gz'
+# NS and VNF descriptor names
+vnfd_name = 'hackfest_proxycharm-vnf'
+nsd_name = 'hackfest_proxycharm-ns'
+# NS instance name
+ns_name = 'basic_06_charm_test'
+# SSH keys to be used
+publickey = home + '/.ssh/id_rsa.pub'
+privatekey = home + '/.ssh/id_rsa'
diff --git a/robot-systest/resources/basic_07-secure_key_management_data.py b/robot-systest/resources/basic_07-secure_key_management_data.py
new file mode 100644
index 0000000..c94be1d
--- /dev/null
+++ b/robot-systest/resources/basic_07-secure_key_management_data.py
@@ -0,0 +1,24 @@
+#   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.
+
+from pathlib import Path
+
+# Get ${HOME} from local machine
+home = str(Path.home())
+# NS and VNF descriptor package files
+vnfd_pkg = 'simple_nopasswd_vnf.tar.gz'
+nsd_pkg = 'simple_nopasswd_ns.tar.gz'
+# NS and VNF descriptor names
+vnfd_name = 'simple-nopasswd-vnf'
+nsd_name = 'simple-nopasswd-ns'
+# NS instance name
+ns_name = 'basic_07_secure_key_management'
diff --git a/robot-systest/resources/basic_09-manual_vdu_scaling_data.py b/robot-systest/resources/basic_09-manual_vdu_scaling_data.py
new file mode 100644
index 0000000..2c64916
--- /dev/null
+++ b/robot-systest/resources/basic_09-manual_vdu_scaling_data.py
@@ -0,0 +1,27 @@
+#   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.
+
+from pathlib import Path
+
+# Get ${HOME} from local machine
+home = str(Path.home())
+# NS and VNF descriptor package files
+vnfd_pkg = 'hackfest_basic_metrics_vnf.tar.gz'
+nsd_pkg = 'hackfest_basic_metrics_ns.tar.gz'
+# NS and VNF descriptor names
+vnfd_name = 'hackfest_basic_metrics-vnf'
+nsd_name = 'hackfest_basic-ns-metrics'
+# NS instance name
+ns_name = 'basic_09_manual_scaling_test'
+# SSH keys to be used
+publickey = home + '/.ssh/id_rsa.pub'
+privatekey = home + '/.ssh/id_rsa'
diff --git a/robot-systest/testsuite/basic_01-crud_operations_on_vim_targets.robot b/robot-systest/testsuite/basic_01-crud_operations_on_vim_targets.robot
new file mode 100644
index 0000000..1e4b121
--- /dev/null
+++ b/robot-systest/testsuite/basic_01-crud_operations_on_vim_targets.robot
@@ -0,0 +1,67 @@
+#   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.
+
+*** Settings ***
+Documentation     [BASIC-01] CRUD operations on VIM targets.
+...               All tests will be performed over an Openstack VIM, and the credentials will be loaded from clouds.yaml file.
+
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vim_lib.robot
+
+Variables   %{ROBOT_DEVOPS_FOLDER}/resources/basic_01-crud_operations_on_vim_targets_data.py
+
+
+*** Test Cases ***
+Create VIM Target Basic
+    [Documentation]     Create a VIM Target only with the mandatory parameters.
+    ...                 Checks the status of the VIM in Prometheus after it creation.
+    [Tags]  vim
+
+    ${rand}=  Generate Random String  8  [NUMBERS]
+    ${vim_name}=  Catenate  SEPARATOR=_  ${vim_name_prefix}  ${rand}
+    Set Suite Variable  ${vim_name}
+    ${created_vim_account_id}=  Create VIM Target  ${vim_name}  ${vim_user}  ${vim_password}  ${vim_auth_url}  ${vim_tenant}  ${vim_account_type}
+    Set Suite Variable  ${created_vim_account_id}
+    Check for VIM Target Status  ${vim_name}  ${prometheus_host}  ${prometheus_port}
+
+
+Delete VIM Target By Name
+    [Documentation]     Delete the VIM Target created in previous test-case by its name.
+    ...                 Checks whether the VIM Target was created or not before perform the deletion.
+    [Tags]  vim  cleanup
+
+    ${vim_account_id}=  Get VIM Target ID  ${vim_name}
+    Should Be Equal As Strings  ${vim_account_id}  ${created_vim_account_id}
+    Delete VIM Target  ${vim_name}
+
+
+Create VIM Target With Extra Config
+    [Documentation]     Create a VIM Target using the extra parameter 'config'.
+    ...                 Checks the status of the VIM in Prometheus after it creation.
+    [Tags]  vim
+
+    ${rand}=  Generate Random String  8  [NUMBERS]
+    ${vim_name}=  Catenate  SEPARATOR=_  ${vim_name_prefix}  ${rand}
+    Set Suite Variable  ${vim_name}
+    ${created_vim_account_id}=  Create VIM Target  ${vim_name}  ${vim_user}  ${vim_password}  ${vim_auth_url}  ${vim_tenant}  ${vim_account_type}  config=${vim_config}
+    Set Suite Variable  ${created_vim_account_id}
+    Check for VIM Target Status  ${vim_name}  ${prometheus_host}  ${prometheus_port}
+
+
+Delete VIM Target By ID
+    [Documentation]     Delete the VIM Target created in previous test-case by its ID.
+    ...                 Checks whether the VIM Target was created or not before perform the deletion.
+    [Tags]  vim  cleanup
+
+    ${vim_account_id}=  Get VIM Target ID  ${vim_name}
+    Should Be Equal As Strings  ${vim_account_id}  ${created_vim_account_id}
+    Delete VIM Target  ${vim_account_id}
+
diff --git a/robot-systest/testsuite/basic_05-instantiation_parameters_in_cloud_init.robot b/robot-systest/testsuite/basic_05-instantiation_parameters_in_cloud_init.robot
new file mode 100644
index 0000000..5a1f834
--- /dev/null
+++ b/robot-systest/testsuite/basic_05-instantiation_parameters_in_cloud_init.robot
@@ -0,0 +1,101 @@
+#   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.
+
+*** Settings ***
+Documentation     [BASIC-05] Instantiation parameters in cloud-init.
+
+Library   OperatingSystem
+Library   SSHLibrary
+
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+
+Variables   %{ROBOT_DEVOPS_FOLDER}/resources/basic_05-instantiation_parameters_in_cloud_init_data.py
+
+Suite Teardown   Run Keyword And Ignore Error   Test Cleanup
+
+
+*** Variables ***
+${username}   ubuntu
+${new_password}   newpassword
+${vnf_member_index}   1
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ], additionalParamsForVnf: [ { member-vnf-index: "${vnf_member_index}", additionalParams: { password: "${new_password}" } } ] }
+
+
+*** Test Cases ***
+Create Cloudinit VNF Descriptor
+    [Tags]  instantiation_params
+
+    Create VNFD  '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
+
+Create Cloudinit NS Descriptor
+    [Tags]  instantiation_params
+
+    Create NSD  '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
+
+Instantiate Cloudinit Network Service Using Instantiation Parameters
+    [Documentation]     Instantiates the NS using the instantiation parameter 'additionalParamsForVnf' to change the password of the default user.
+    [Tags]  instantiation_params
+
+    ${id}=  Create Network Service  ${nsd_name}  %{VIM_TARGET}  ${ns_name}  ${ns_config}  ${EMPTY}
+    Set Suite Variable  ${ns_id}  ${id}
+
+
+Get Management Ip Addresses
+    [Tags]  instantiation_params
+
+    ${ip_addr}  Get Vnf Management Ip Address  ${ns_id}  ${vnf_member_index}
+    log  ${ip_addr}
+    Set Suite Variable  ${vnf_ip_addr}  ${ip_addr}
+
+
+Test SSH Access With The New Password
+    [Documentation]     Test SSH access with the new password configured via cloud-init.
+    [Tags]  instantiation_params
+
+    Variable Should Exist  ${vnf_ip_addr}  msg=IP address of the management VNF is not available
+    Sleep  30s  Waiting ssh daemon to be up
+    Test SSH Connection  ${vnf_ip_addr}  ${username}  ${new_password}  ${EMPTY}
+
+
+Delete NS Instance
+    [Tags]  instantiation_params  cleanup
+
+    Delete NS  ${ns_name}
+
+
+Delete NS Descriptor
+    [Tags]  instantiation_params  cleanup
+
+    Delete NSD  ${nsd_name}
+
+
+Delete VNF Descriptor
+    [Tags]  instantiation_params  cleanup
+
+    Delete VNFD  ${vnfd_name}
+
+
+*** Keywords ***
+Test Cleanup
+    [Documentation]  Test Suite Cleanup: Deleting descriptors and NS instance
+
+    Run Keyword If Test Failed  Delete NS  ${ns_name}
+
+    Run Keyword If Test Failed  Delete NSD  ${nsd_name}
+
+    Run Keyword If Test Failed  Delete VNFD  ${vnfd_name}
+
diff --git a/robot-systest/testsuite/basic_06-vnf_with_charm.robot b/robot-systest/testsuite/basic_06-vnf_with_charm.robot
new file mode 100644
index 0000000..b42ba27
--- /dev/null
+++ b/robot-systest/testsuite/basic_06-vnf_with_charm.robot
@@ -0,0 +1,135 @@
+#   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.
+
+*** Settings ***
+Documentation     [BASIC-06] VNF with Charm.
+
+Library   OperatingSystem
+Library   SSHLibrary
+
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+
+Variables   %{ROBOT_DEVOPS_FOLDER}/resources/basic_06-vnf_with_charm_data.py
+
+Suite Teardown   Run Keyword And Ignore Error   Test Cleanup
+
+
+*** Variables ***
+${username}   ubuntu
+${password}   ${EMPTY}
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${action_name}   touch
+${vnf_member_index_1}   1
+${vnf_member_index_2}   2
+${day_1_file_name}   /home/ubuntu/first-touch
+${day_2_file_name_1}   /home/ubuntu/mytouch1
+${day_2_file_name_2}   /home/ubuntu/mytouch2
+
+
+*** Test Cases ***
+Create Charm VNF Descriptor
+    [Tags]  charm
+
+    Create VNFD  '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
+
+Create Charm NS Descriptor
+    [Tags]  charm
+
+    Create NSD  '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
+
+Instantiate Charm Network Service
+    [Tags]  charm
+
+    ${id}=  Create Network Service  ${nsd_name}  %{VIM_TARGET}  ${ns_name}  ${ns_config}  ${publickey}
+    Set Suite Variable  ${ns_id}  ${id}
+
+
+Get Management Ip Addresses
+    [Tags]  charm
+
+    ${ip_addr_1}  Get Vnf Management Ip Address  ${ns_id}  ${vnf_member_index_1}
+    log  ${ip_addr_1}
+    Set Suite Variable  ${vnf_1_ip_addr}  ${ip_addr_1}
+    ${ip_addr_2}  Get Vnf Management Ip Address  ${ns_id}  ${vnf_member_index_2}
+    log  ${ip_addr_2}
+    Set Suite Variable  ${vnf_2_ip_addr}  ${ip_addr_2}
+
+
+Test SSH Access
+    [Tags]  charm
+
+    Variable Should Exist  ${vnf_1_ip_addr}  msg=IP address of the management VNF '${vnf_member_index_1}' is not available
+    Variable Should Exist  ${vnf_2_ip_addr}  msg=IP address of the management VNF '${vnf_member_index_2}' is not available
+    Sleep  30s  Waiting ssh daemon to be up
+    Test SSH Connection  ${vnf_1_ip_addr}  ${username}  ${password}  ${privatekey}
+    Test SSH Connection  ${vnf_2_ip_addr}  ${username}  ${password}  ${privatekey}
+
+
+Check Remote Files Created Via Day 1 Operations
+    [Documentation]     The Charm VNF has a Day 1 operation that creates a file named ${day_1_file_name}.
+    ...                 This test checks whether that files have been created or not.
+    [Tags]  charm
+
+    Check If remote File Exists  ${vnf_1_ip_addr}  ${username}  ${password}  ${privatekey}  ${day_1_file_name}
+    Check If remote File Exists  ${vnf_2_ip_addr}  ${username}  ${password}  ${privatekey}  ${day_1_file_name}
+
+
+Execute Day 2 Operations
+    [Documentation]     Performs one Day 2 operation per VNF that creates a new file.
+    [Tags]  charm
+
+    Variable Should Exist  ${ns_id}  msg=Network service instance is not available
+    ${ns_op_id_1}=  Execute NS Action  ${ns_name}  ${action_name}  ${vnf_member_index_1}  filename=${day_2_file_name_1}
+    ${ns_op_id_2}=  Execute NS Action  ${ns_name}  ${action_name}  ${vnf_member_index_2}  filename=${day_2_file_name_2}
+
+
+Check Remote Files Created Via Day 2 Operations
+    [Documentation]     Check whether the files created in the previous test via Day 2 operations exist or not.
+    [Tags]  charm
+
+    Check If remote File Exists  ${vnf_1_ip_addr}  ${username}  ${password}  ${privatekey}  ${day_2_file_name_1}
+    Check If remote File Exists  ${vnf_2_ip_addr}  ${username}  ${password}  ${privatekey}  ${day_2_file_name_2}
+
+
+Delete NS Instance
+    [Tags]  charm  cleanup
+
+    Delete NS  ${ns_name}
+
+
+Delete NS Descriptor
+    [Tags]  charm  cleanup
+
+    Delete NSD  ${nsd_name}
+
+
+Delete VNF Descriptor
+    [Tags]  charm  cleanup
+
+    Delete VNFD  ${vnfd_name}
+
+
+*** Keywords ***
+Test Cleanup
+    [Documentation]  Test Suite Cleanup: Deleting descriptors and NS instance
+
+    Run Keyword If Test Failed  Delete NS  ${ns_name}
+
+    Run Keyword If Test Failed  Delete NSD  ${nsd_name}
+
+    Run Keyword If Test Failed  Delete VNFD  ${vnfd_name}
+
diff --git a/robot-systest/testsuite/basic_07-secure_key_management.robot b/robot-systest/testsuite/basic_07-secure_key_management.robot
new file mode 100644
index 0000000..98e6edf
--- /dev/null
+++ b/robot-systest/testsuite/basic_07-secure_key_management.robot
@@ -0,0 +1,125 @@
+#   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.
+
+*** Settings ***
+Documentation     [BASIC-07] Secure key management.
+
+Library   OperatingSystem
+Library   SSHLibrary
+
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+
+Variables   %{ROBOT_DEVOPS_FOLDER}/resources/basic_07-secure_key_management_data.py
+
+Suite Teardown   Run Keyword And Ignore Error   Test Cleanup
+
+
+*** Variables ***
+${username}   ubuntu
+${password}   osm4u
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${action_name}   touch
+${vnf_member_index}   1
+${day_1_file_name}   /home/ubuntu/first-touch
+${day_2_file_name}   /home/ubuntu/mytouch1
+
+
+*** Test Cases ***
+Create Nopasswd Charm VNF Descriptor
+    [Tags]  nopasswd
+
+    Create VNFD  '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
+
+Create Nopasswd Charm NS Descriptor
+    [Tags]  nopasswd
+
+    Create NSD  '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
+
+Instantiate Nopasswd Charm Network Service
+    [Tags]  nopasswd
+
+    ${id}=  Create Network Service  ${nsd_name}  %{VIM_TARGET}  ${ns_name}  ${ns_config}  ${EMPTY}
+    Set Suite Variable  ${ns_id}  ${id}
+
+
+Get Management Ip Addresses
+    [Tags]  nopasswd
+
+    ${ip_addr}  Get Vnf Management Ip Address  ${ns_id}  ${vnf_member_index}
+    log  ${ip_addr}
+    Set Suite Variable  ${vnf_ip_addr}  ${ip_addr}
+
+
+Test SSH Access
+    [Tags]  nopasswd
+
+    Variable Should Exist  ${vnf_ip_addr}  msg=IP address of the management VNF is not available
+    Sleep  30s  Waiting ssh daemon to be up
+    Test SSH Connection  ${vnf_ip_addr}  ${username}  ${password}  ${EMPTY}
+
+
+Check Remote Files Created Via Day 1 Operations
+    [Documentation]     The Nopasswd VNF has a Day 1 operation that creates a file named ${day_1_file_name} and performs it without password.
+    ...                 This test checks whether that files have been created or not.
+    [Tags]  nopasswd
+
+    Check If remote File Exists  ${vnf_ip_addr}  ${username}  ${password}  ${EMPTY}  ${day_1_file_name}
+
+
+Execute Day 2 Operations
+    [Documentation]     Performs one Day 2 operation that creates a new file, this action is executed without password too.
+    [Tags]  nopasswd
+
+    Variable Should Exist  ${ns_id}  msg=Network service instance is not available
+    ${ns_op_id}=  Execute NS Action  ${ns_name}  ${action_name}  ${vnf_member_index}  filename=${day_2_file_name}
+
+
+Check Remote Files Created Via Day 2 Operations
+    [Documentation]     Check whether the file created in the previous test via Day 2 operation exists or not.
+    [Tags]  nopasswd
+
+    Check If remote File Exists  ${vnf_ip_addr}  ${username}  ${password}  ${EMPTY}  ${day_2_file_name}
+
+
+Delete NS Instance
+    [Tags]  nopasswd  cleanup
+
+    Delete NS  ${ns_name}
+
+
+Delete NS Descriptor
+    [Tags]  nopasswd  cleanup
+
+    Delete NSD  ${nsd_name}
+
+
+Delete VNF Descriptor
+    [Tags]  nopasswd  cleanup
+
+    Delete VNFD  ${vnfd_name}
+
+
+*** Keywords ***
+Test Cleanup
+    [Documentation]  Test Suite Cleanup: Deleting descriptors and NS instance
+
+    Run Keyword If Test Failed  Delete NS  ${ns_name}
+
+    Run Keyword If Test Failed  Delete NSD  ${nsd_name}
+
+    Run Keyword If Test Failed  Delete VNFD  ${vnfd_name}
+
diff --git a/robot-systest/testsuite/basic_09-manual_vdu_scaling.robot b/robot-systest/testsuite/basic_09-manual_vdu_scaling.robot
new file mode 100644
index 0000000..a2e9d11
--- /dev/null
+++ b/robot-systest/testsuite/basic_09-manual_vdu_scaling.robot
@@ -0,0 +1,138 @@
+#   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.
+
+*** Settings ***
+Documentation     [BASIC-09] Manual VNF/VDU Scaling.
+
+Library   OperatingSystem
+Library   String
+Library   Collections
+
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/vnfd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/nsd_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ns_lib.robot
+Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
+
+Variables   %{ROBOT_DEVOPS_FOLDER}/resources/basic_09-manual_vdu_scaling_data.py
+
+Suite Teardown   Run Keyword And Ignore Error   Test Cleanup
+
+
+*** Variables ***
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+${scaling_group}   vdu_autoscale
+${vnf_member_index}  1
+
+
+*** Test Cases ***
+Create Scaling VNF Descriptor
+    [Tags]  manual_scaling
+
+    Create VNFD  '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
+
+Create Scaling NS Descriptor
+    [Tags]  manual_scaling
+
+    Create NSD  '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
+
+Instantiate Scaling Network Service
+    [Tags]  manual_scaling
+
+    ${id}=  Create Network Service  ${nsd_name}  %{VIM_TARGET}  ${ns_name}  ${ns_config}  ${publickey}
+    Set Suite Variable  ${ns_id}  ${id}
+
+
+Get Vnf Id
+    [Tags]  manual_scaling
+
+    Variable Should Exist  ${ns_id}  msg=Network service instance is not available
+    @{vnfr_list}=  Get Ns Vnfr Ids  ${ns_id}
+    Log List  ${vnfr_list}
+    Set Suite Variable  ${vnf_id}  ${vnfr_list}[0]
+
+
+Get Vdus Before Scale Out
+    [Documentation]     Get the number of VDU records before the manual scaling.
+    [Tags]  manual_scaling
+
+    @{vdur_list}=  Get Vnf Vdur Names  ${vnf_id}
+    Log List  ${vdur_list}
+    ${vdurs}=  Get Length  ${vdur_list}
+    Set Suite Variable  ${initial_vdur_count}  ${vdurs}
+
+
+Perform Manual Vdu Scale Out
+    [Tags]  manual_scaling
+
+    Variable Should Exist  ${ns_id}  msg=Network service instance is not available
+    ${ns_op_id}=  Execute Manual VNF Scale  ${ns_name}  ${vnf_member_index}  ${scaling_group}  SCALE_OUT
+
+
+Check Vdus After Scale Out
+    [Documentation]     Check whether there is one more VDU after scaling or not.
+    [Tags]  manual_scaling
+
+    Variable Should Exist  ${ns_id}  msg=Network service instance is not available
+    @{vdur_list}=  Get Vnf Vdur Names  ${vnf_id}
+    Log List  ${vdur_list}
+    ${vdurs}=  Get Length  ${vdur_list}
+    Run Keyword Unless  ${vdurs} == ${initial_vdur_count} + 1  Fail  msg=There is no new VDU records in the VNF after Scale Out
+
+
+Perform Manual Vdu Scale In
+    [Tags]  manual_scaling
+
+    Variable Should Exist  ${ns_id}  msg=Network service instance is not available
+    ${ns_op_id}=  Execute Manual VNF Scale  ${ns_name}  ${vnf_member_index}  ${scaling_group}  SCALE_IN
+
+
+Check Vdus After Scaling In
+    [Documentation]     Check whether there is one less VDU after scaling or not.
+    [Tags]  manual_scaling
+
+    Variable Should Exist  ${ns_id}  msg=Network service instance is not available
+    @{vdur_list}=  Get Vnf Vdur Names  ${vnf_id}
+    Log List  ${vdur_list}
+    ${vdurs}=  Get Length  ${vdur_list}
+    Run Keyword Unless  ${vdurs} == ${initial_vdur_count}  Fail  msg=There is the same number of VDU records in the VNF after Scale In
+
+
+Delete NS Instance
+    [Tags]  manual_scaling  cleanup
+
+    Delete NS  ${ns_name}
+
+
+Delete NS Descriptor
+    [Tags]  manual_scaling  cleanup
+
+    Delete NSD  ${nsd_name}
+
+
+Delete VNF Descriptor
+    [Tags]  manual_scaling  cleanup
+
+    Delete VNFD  ${vnfd_name}
+
+
+*** Keywords ***
+Test Cleanup
+    [Documentation]  Test Suite Cleanup: Deleting descriptors and NS instance
+
+    Run Keyword If Test Failed  Delete NS  ${ns_name}
+
+    Run Keyword If Test Failed  Delete NSD  ${nsd_name}
+
+    Run Keyword If Test Failed  Delete VNFD  ${vnfd_name}
+
