diff --git a/robot-systest/testsuite/basic_19-vnf_ip_profile.robot b/robot-systest/testsuite/basic_19-vnf_ip_profile.robot
new file mode 100644
index 0000000..b655ce5
--- /dev/null
+++ b/robot-systest/testsuite/basic_19-vnf_ip_profile.robot
@@ -0,0 +1,116 @@
+#   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-19] NS with a single VNF and two VDU linked by a VLD with ip-profile.
+
+Library   OperatingSystem
+Library   String
+Library   Collections
+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
+
+Force Tags   basic_19   cluster_main   daily   regression
+
+Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
+
+
+*** Variables ***
+# NS and VNF descriptor package folder and ids
+${vnfd_pkg}   ipprofile_2vm_vnf
+${vnfd_name}   ipprofile_2vm-vnf
+${nsd_pkg}   ipprofile_2vm_ns
+${nsd_name}   ipprofile_2vm-ns
+
+# NS instance name and configuration
+${ns_name}   basic_19
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+
+# SSH keys and username to be used 
+${publickey}   %{HOME}/.ssh/id_rsa.pub
+${username}   ubuntu
+
+# VNFs data
+${vnf_member_index_1}   1
+${internal_prefix}   ^192.168.200.*
+
+${success_return_code}   0
+
+
+*** Test Cases ***
+Create VNF Descriptor
+
+    Create VNFD  '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+
+
+Create NS Descriptor
+
+    Create NSD  '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
+
+Instantiate Network Service
+
+    ${id}=  Create Network Service  ${nsd_name}  %{VIM_TARGET}  ${ns_name}  ${ns_config}  ${publickey}
+    Set Suite Variable  ${ns_id}  ${id}
+
+
+Get Vnf Info
+
+    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]
+    ${ip}  Get Vnf Management Ip Address  ${ns_id}  ${vnf_member_index_1}
+    Set Suite Variable  ${vnf_ipmgmt}  ${ip}
+    log  ${vnf_ipmgmt}
+
+
+Check Vnf IPs
+
+    Variable Should Exist  ${vnf_id}  msg=VNF is not available  
+    ${rc}  ${stdout}=  Run and Return RC and Output  osm vnf-show ${vnf_id} --literal | yq '.vdur[0].interfaces[] | select(."vnf-vld-id" == "internal")' | yq '."ip-address"' | tr -d \\"
+    Should Be Equal As Integers  ${rc}  ${success_return_code}  msg=${stdout}  values=False
+    Should Match Regexp  ${stdout}  ${internal_prefix}  msg=${stdout} doesn't match subnet's regexp ${internal_prefix}
+    ${rc}  ${stdout}=  Run and Return RC and Output  osm vnf-show ${vnf_id} --literal | yq '.vdur[1].interfaces[] | select(."vnf-vld-id" == "internal")' | yq '."ip-address"' | tr -d \\"
+    Should Be Equal As Integers  ${rc}  ${success_return_code}  msg=${stdout}  values=False
+    Should Match Regexp  ${stdout}  ${internal_prefix}  msg=${stdout} doesn't match subnet's regexp ${internal_prefix}
+    
+
+Delete NS Instance
+    [Tags]   cleanup
+
+    Delete NS  ${ns_name}
+
+
+Delete NS Descriptor
+    [Tags]   cleanup
+
+    Delete NSD  ${nsd_name}
+
+
+Delete VNF Descriptor
+    [Tags]   cleanup
+
+    Delete VNFD  ${vnfd_name}
+
+
+*** Keywords ***
+Suite Cleanup
+    [Documentation]  Test Suite Cleanup: Deleting descriptors and NS instance
+
+    Run Keyword If Any Tests Failed  Delete NS  ${ns_name}
+    Run Keyword If Any Tests Failed  Delete NSD  ${nsd_name}
+    Run Keyword If Any Tests Failed  Delete VNFD  ${vnfd_name}
