diff --git a/robot-systest/lib/kubectl_lib.robot b/robot-systest/lib/kubectl_lib.robot
deleted file mode 100644
index 508f947..0000000
--- a/robot-systest/lib/kubectl_lib.robot
+++ /dev/null
@@ -1,24 +0,0 @@
-#   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.
-
-*** Variables ***
-${success_return_code}   0
-
-
-*** Keywords ***
-Count Pod Number
-    [Arguments]   ${host}   ${username}   ${password}   ${privatekey}   ${namespace}   ${application_selector}
-
-    Should Not Be Empty   ${namespace}   ${application_selector}
-    ${stdout}=   Execute Remote Command Check Rc Return Output   ${host}   ${username}   ${password}   ${privatekey}   kubectl get pods --namespace ${namespace} --output name --selector=${application_selector} | wc -l
-    log   Pod count is ${stdout} for ${application_selector} in ${namespace} namespace
-    [Return]  ${stdout}
diff --git a/robot-systest/lib/ns_lib.robot b/robot-systest/lib/ns_lib.robot
index a7c6cb9..7c2b794 100644
--- a/robot-systest/lib/ns_lib.robot
+++ b/robot-systest/lib/ns_lib.robot
@@ -321,15 +321,3 @@
     log   ${affinity_group_name}
     Should Be Equal As Integers   ${rc}   ${success_return_code}   msg=${affinity_group_name}   values=False
     [Return]   ${affinity_group_name}
-
-
-Get Vnf Namespace
-    [Documentation]    Return the KDU's namespace
-
-    [Arguments]   ${vnf_id}
-
-    ${rc}  ${stdout}=  Run and Return RC and Output  osm vnf-show ${vnf_id} --literal | yq '.kdur[]."k8s-namespace"' | tr -d \\"
-    Should Be Equal As Integers  ${rc}  ${success_return_code}  msg=${stdout}  values=False
-    Should Not Be Empty   ${stdout}
-    log  namespace: ${stdout}
-    [Return]  ${stdout}
diff --git a/robot-systest/testsuite/k8s_11-simple_helm_k8s_scaling.robot b/robot-systest/testsuite/k8s_11-simple_helm_k8s_scaling.robot
index e23f4cc..78611e5 100644
--- a/robot-systest/testsuite/k8s_11-simple_helm_k8s_scaling.robot
+++ b/robot-systest/testsuite/k8s_11-simple_helm_k8s_scaling.robot
@@ -25,9 +25,8 @@
 Resource   %{ROBOT_DEVOPS_FOLDER}/lib/connectivity_lib.robot
 Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
 Resource   %{ROBOT_DEVOPS_FOLDER}/lib/k8scluster_lib.robot
-Resource   %{ROBOT_DEVOPS_FOLDER}/lib/kubectl_lib.robot
 
-Force Tags   k8s_11   cluster_k8s   daily   regression
+Force Tags   k8s_11   cluster_k8s   regression
 
 Suite Teardown   Run Keyword And Ignore Error   Suite Cleanup
 
@@ -43,6 +42,10 @@
 ${nsd_pkg}   openldap_scale_ns
 ${nsd_name}   openldap_scale_ns
 
+# NS instance name and configuration
+${ns_name}   openldap-scale
+${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
+
 # Username and SSH private key for accessing OSM host
 ${username}   ubuntu
 ${password}   ${EMPTY}
@@ -51,14 +54,8 @@
 ${ns_id}   ${EMPTY}
 ${publickey}   %{HOME}/.ssh/id_rsa.pub
 ${vnf_member_index}   openldap
-${kdu_name}   ldap
+${kdu_name}   native-kdu
 ${scaling_group}   scale-kdu
-${replica_count}   1
-${application_selector}   app=openldap
-
-# NS instance name and configuration
-${ns_name}   openldap-scale
-${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ], additionalParamsForVnf: [ {"member-vnf-index": "${vnf_member_index}", additionalParamsForKdu: [{kdu_name: "${kdu_name}", "additionalParams": {"replicaCount": "${replica_count}"}} ]} ]}
 
 *** Test Cases ***
 Create Simple K8s Scale VNF Descriptor
@@ -71,24 +68,20 @@
     Create K8s Cluster  %{K8S_CREDENTIALS}  ${k8scluster_version}  %{VIM_TARGET}  %{VIM_MGMT_NET}  ${k8scluster_name}
 
 Create Network Service Instance
-    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}   ${publickey}
+    ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}  ${publickey}
     Set Suite Variable   ${ns_id}   ${id}
 
 Get Vnf Id
     Variable Should Exist  ${ns_id}  msg=Network service instance is not available
-    ${id}=  Get Vnf Id  ${ns_id}  ${vnf_member_index}
-    Set Suite Variable  ${vnf_id}  ${id}
-
-Get Vnf Namespace
-    Variable Should Exist  ${vnf_id}  msg=VNF instance is not available
-    ${namespace}=  Get Vnf Namespace  ${vnf_id}
-    Set Suite Variable  ${vnf_namespace}  ${namespace}
+    @{vnfr_list}=  Get Ns Vnfr Ids  ${ns_id}
+    Log List  ${vnfr_list}
+    Set Suite Variable  ${vnf_id}  ${vnfr_list}[0]
 
 Get Scale Count Before Scale Out
     [Documentation]     Get the scale count of the application of network service k8s instance
 
-    Variable Should Exist  ${vnf_namespace}  msg=Network service instance is not available
-    ${kdu_count}=   Count Pod Number   %{OSM_HOSTNAME}   ${username}   ${password}   ${privatekey}   ${vnf_namespace}   ${application_selector}
+    Variable Should Exist  ${ns_id}  msg=Network service instance is not available
+    ${kdu_count}=   Get Vnf Kdu Replica Count   ${vnf_id}   ${kdu_name}
     log   ${kdu_count}
     Set Suite Variable  ${initial_kdu_count}  ${kdu_count}
 
@@ -96,13 +89,12 @@
     [Documentation]     Scale out the application of network service k8s instance.
 
     ${ns_op_id_1}=   Execute Manual VNF Scale  ${ns_name}  ${vnf_member_index}  ${scaling_group}  SCALE_OUT
-    log   ${ns_op_id_1}
 
 Check Scale Count After Scale Out
     [Documentation]     Check whether the scale count is more than one.
 
     Variable Should Exist  ${initial_kdu_count}  msg=Initial KDU count is not available
-    ${kdu_count}=   Count Pod Number   %{OSM_HOSTNAME}   ${username}   ${password}   ${privatekey}   ${vnf_namespace}   ${application_selector}
+    ${kdu_count}=   Get Vnf Kdu Replica Count   ${vnf_id}   ${kdu_name}
     log   ${kdu_count}
     Run Keyword Unless  ${kdu_count} == ${initial_kdu_count} + 2  Fail  msg=There is no new KDU in the model after Scale Out
 
@@ -110,12 +102,11 @@
     [Documentation]     Scale in the application of network service k8s instance.
 
     ${ns_op_id_2}=   Execute Manual VNF Scale  ${ns_name}  ${vnf_member_index}  ${scaling_group}  SCALE_IN
-    log   ${ns_op_id_2}
 
 Check Scale Count After Scale In
     [Documentation]     Check whether the scale count is one less.
 
-    ${kdu_count}=   Count Pod Number   %{OSM_HOSTNAME}   ${username}   ${password}   ${privatekey}   ${vnf_namespace}   ${application_selector}
+    ${kdu_count}=   Get Vnf Kdu Replica Count   ${vnf_id}   ${kdu_name}
     Run Keyword Unless  ${kdu_count} == ${initial_kdu_count}  Fail  msg=There is the same number of KDU in the model after Scale In
 
 Delete NS K8s Instance Test
