diff --git a/robot-systest/lib/k8scluster_lib.robot b/robot-systest/lib/k8scluster_lib.robot
index 3896941..b663d52 100644
--- a/robot-systest/lib/k8scluster_lib.robot
+++ b/robot-systest/lib/k8scluster_lib.robot
@@ -14,7 +14,7 @@
 
 *** Variables ***
 ${success_return_code}   0
-${k8scluster_launch_max_wait_time}   2min
+${k8scluster_launch_max_wait_time}   5min
 ${k8scluster_launch_pol_time}   30sec
 ${k8scluster_delete_max_wait_time}   2min
 ${k8scluster_delete_pol_time}   15sec
diff --git a/robot-systest/lib/ns_lib.robot b/robot-systest/lib/ns_lib.robot
index b1db909..b3c912f 100644
--- a/robot-systest/lib/ns_lib.robot
+++ b/robot-systest/lib/ns_lib.robot
@@ -152,6 +152,31 @@
     [Return]  ${stdout}
 
 
+Execute NS K8s Action
+    [Documentation]     Execute an action over the desired K8s NS.
+    ...                 Parameters are given to this function in key=value format (one argument per key/value pair).
+    ...                 Return the ID of the operation associated to the executed action.
+    ...                 Examples of execution:
+    ...                     \${ns_op_id}=  Execute NS Action  \${ns_name}  \${ns_action}  \${vnf_member_index}
+    ...                     \${ns_op_id}=  Execute NS Action  \${ns_name}  \${ns_action}  \${vnf_member_index}  \${param1}=\${value1}  \${param2}=\${value2}
+
+    [Arguments]  ${ns_name}  ${ns_action}  ${vnf_member_index}  ${kdu_name}  @{action_params}
+
+    ${params}=  Set Variable  ${EMPTY}
+    FOR  ${param}  IN  @{action_params}
+        ${match}  ${param_name}  ${param_value} =  Should Match Regexp  ${param}  (.+)=(.+)  msg=Syntax error in parameters
+        ${params}=  Catenate  SEPARATOR=  ${params}  "${param_name}":"${param_value}",
+    END
+    ${osm_ns_action_command}=  Set Variable  osm ns-action --action_name ${ns_action} --vnf_name ${vnf_member_index} --kdu_name ${kdu_name}
+    ${osm_ns_action_command}=  Run Keyword If  '${params}'!='${EMPTY}'  Catenate  ${osm_ns_action_command}  --params '{${params}}'
+    ...  ELSE  Set Variable  ${osm_ns_action_command}
+    ${osm_ns_action_command}=  Catenate  ${osm_ns_action_command}  ${ns_name}
+    ${rc}  ${stdout}=  Run and Return RC and Output  ${osm_ns_action_command}
+    Should Be Equal As Integers  ${rc}  ${success_return_code}  msg=${stdout}  values=False
+    Wait Until Keyword Succeeds  ${ns_action_max_wait_time}  ${ns_action_pol_time}  Check For NS Operation Completed  ${stdout}
+    [Return]  ${stdout}
+
+
 Execute Manual VNF Scale
     [Documentation]     Execute a manual VNF Scale action.
     ...                 The parameter 'scale_type' must be SCALE_IN or SCALE_OUT.
diff --git a/robot-systest/lib/package_lib.robot b/robot-systest/lib/package_lib.robot
new file mode 100644
index 0000000..7b3cad2
--- /dev/null
+++ b/robot-systest/lib/package_lib.robot
@@ -0,0 +1,55 @@
+# -*- coding: utf-8 -*-
+
+##
+# Copyright 2019 Tech Mahindra Limited
+#
+# All Rights Reserved.
+#
+# 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.
+##
+
+## Change log:
+# 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-sep-2019
+##
+
+*** Settings ***
+Library   String
+
+
+*** Variables ***
+${success_return_code}   0
+${delete_max_wait_time}   1min
+${delete_pol_time}   15sec
+
+
+*** Keywords ***
+Upload Package
+    [Documentation]   Onboards ("creates") a NF Package into OSM.
+    ...               - Parameters:
+    ...                 - pkg: Name (and location) of the NF Package
+
+    [Arguments]   ${pkg}
+
+    # Proceedes with the onboarding with the appropriate arguments
+    ${rc}   ${stdout}=   Run and Return RC and Output   tar -czf ${pkg}.tar.gz -C ${pkg} .
+    ${rc}   ${stdout}=   Run and Return RC and Output   osm upload-package ${pkg}.tar.gz
+    log   ${stdout}
+    Should Be Equal As Integers   ${rc}   ${success_return_code}
+    [Return]  ${stdout}
+
+
+Delete Package
+    [Arguments]   ${pkg}
+
+    # Proceedes with the onboarding with the appropriate arguments
+    ${rc}   ${stdout}=   Run and Return RC and Output   rm ${pkg}.tar.gz
diff --git a/robot-systest/resources/k8s_03-simple_k8s_data.py b/robot-systest/resources/k8s_03-simple_k8s_data.py
index f4f99bf..b544eef 100644
--- a/robot-systest/resources/k8s_03-simple_k8s_data.py
+++ b/robot-systest/resources/k8s_03-simple_k8s_data.py
@@ -18,13 +18,13 @@
 k8scluster_name = 'k8s-test'
 k8scluster_version = 'v1'
 # NS and VNF descriptor package files
-vnfd_pkg = 'hackfest_simple_k8s_vnf'
-nsd_pkg = 'hackfest_simple_k8s_ns'
+vnfd_pkg = 'charm-packages/native_k8s_charm_vnf'
+nsd_pkg = 'charm-packages/native_k8s_charm_ns'
 # NS and VNF descriptor package files
-vnfd_name = 'hackfest-simple-k8s-vnf'
-nsd_name = 'hackfest-simple-k8s-ns'
+vnfd_name = 'native_k8s_charm-vnf'
+nsd_name = 'native_k8s_charm-ns'
 # NS instance name
-ns_name = 'simple-k8s'
+ns_name = 'native-k8s'
 # SSH keys to be used
 publickey = home + '/.ssh/id_rsa.pub'
 privatekey = home + '/.ssh/id_rsa'
diff --git a/robot-systest/testsuite/k8s_03-simple_k8s.robot b/robot-systest/testsuite/k8s_03-simple_k8s.robot
index f0aa94d..081219d 100644
--- a/robot-systest/testsuite/k8s_03-simple_k8s.robot
+++ b/robot-systest/testsuite/k8s_03-simple_k8s.robot
@@ -21,6 +21,7 @@
 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/package_lib.robot
 Resource   %{ROBOT_DEVOPS_FOLDER}/lib/connectivity_lib.robot
 Resource   %{ROBOT_DEVOPS_FOLDER}/lib/ssh_lib.robot
 Resource   %{ROBOT_DEVOPS_FOLDER}/lib/k8scluster_lib.robot
@@ -34,15 +35,20 @@
 ${ns_id}   ${EMPTY}
 ${ns_config}   {vld: [ {name: mgmtnet, vim-network-name: %{VIM_MGMT_NET}} ] }
 ${publickey}   ${EMPTY}
+${vnf_member_index}   native_k8s_charm-vnf
+${action_name}   changecontent
+${kdu_name}   native-kdu
+${application_name}   nginx
+${customtitle}   Day 2 Action
 
 *** Test Cases ***
 Create Simple K8s VNF Descriptor
     [Tags]   simple_k8s   charm   sanity   regression
-    Create VNFD   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+    Upload Package   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
 
 Create Simple K8s Descriptor
     [Tags]   simple_k8s   charm   sanity   regression
-    Create NSD   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+    Upload Package   '%{PACKAGES_FOLDER}/${nsd_pkg}'
 
 Add K8s Cluster To OSM
     [Tags]   simple_k8s   charm   sanity   regression
@@ -53,6 +59,14 @@
     ${id}=   Create Network Service   ${nsd_name}   %{VIM_TARGET}   ${ns_name}   ${ns_config}  ${publickey}
     Set Suite Variable   ${ns_id}   ${id}
 
+Execute Day 2 Operations
+    [Documentation]     Performs one Day 2 operation per VNF that creates a new file.
+    [Tags]   simple_k8s   charm   sanity   regression
+
+    Variable Should Exist  ${ns_id}  msg=Network service instance is not available
+    ${ns_op_id}=  Execute NS K8s Action  ${ns_name}  ${action_name}  ${vnf_member_index}  ${kdu_name}  application-name=${application_name}  customtitle=${customtitle}
+
+
 Delete NS K8s Instance Test
     [Tags]   simple_k8s   charm   sanity   regression   cleanup
     Delete NS   ${ns_name}
@@ -69,6 +83,11 @@
     [Tags]   simple_k8s   charm   sanity   regression   cleanup
     Delete VNFD   ${vnfd_name}
 
+Delete VNF NS Packages
+    [Tags]   simple_k8s   charm   sanity   regression   cleanup
+    Delete Package   '%{PACKAGES_FOLDER}/${vnfd_pkg}'
+    Delete Package   '%{PACKAGES_FOLDER}/${nsd_pkg}'
+
 
 *** Keywords ***
 Test Cleanup
