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}
+
