diff --git a/robot-systest/lib/cli/ns_lib.robot b/robot-systest/lib/cli/ns_lib.robot
index e3e3a02..18f6430 100644
--- a/robot-systest/lib/cli/ns_lib.robot
+++ b/robot-systest/lib/cli/ns_lib.robot
@@ -35,59 +35,59 @@
 Get NS List
     [Documentation]  Get ns instance list
 
-    ${rc}   ${stdout}=      Run and Return RC and Output	    osm ns-list
+    ${rc}   ${stdout}=      Run and Return RC and Output    osm ns-list
     log     ${stdout}
-    Should Be Equal As Integers 	${rc}	${success_return_code}
+    Should Be Equal As Integers    ${rc}    ${success_return_code}
 
 
 Launch Network Services and Return
     [Arguments]  ${vim_name}
-	
-	Should Not Be Empty    ${nsd_ids}    There are no NS descriptors to launch the NS
+
+    Should Not Be Empty    ${nsd_ids}    There are no NS descriptors to launch the NS
     :FOR    ${nsd}    IN    @{nsd_ids}
     \    ${ns_name}=    GENERATE NAME
     \    Append To List     ${ns_ids}       ${ns_name}
     \    Create Network Service    ${nsd}   ${vim_name}    ${ns_name}
     \    Delete NS   ${ns_name}
 
-	
+
 Create Network Service
     [Documentation]  Create ns at osm
     [Arguments]  ${nsd}   ${vim_name}    ${ns_name}
 
-    ${ns_config}=   Get Environment Variable    NS_CONFIG    ${EMPTY}
-	Run Keyword If   ${ns_config}!='${EMPTY}'   Create Network Service With Config    ${nsd}    ${vim_name}    ${ns_name}    ${ns_config}
-	...    ELSE    Create Network Service Without Config    ${nsd}   ${vim_name}    ${ns_name}
-	
+    ${ns_config}=   Get Environment Variable    NS_CONFIG    ''
+    Run Keyword If   ${ns_config}!=''   Create Network Service With Config    ${nsd}    ${vim_name}    ${ns_name}    ${ns_config}
+    ...    ELSE    Create Network Service Without Config    ${nsd}   ${vim_name}    ${ns_name}
+
     WAIT UNTIL KEYWORD SUCCEEDS     ${ns_launch_max_wait_time}   ${ns_launch_pol_time}   Check For NS Instance To Configured   ${ns_name}
     Check For NS Instance For Failure    ${ns_name}
-	
+
 
 Create Network Service Without Config
     [Documentation]  Create ns at osm
     [Arguments]  ${nsd}   ${vim_name}    ${ns_name}
 
-    ${rc}   ${stdout}=      Run and Return RC and Output	    osm ns-create --ns_name ${ns_name} --nsd_name ${nsd} --vim_account ${vim_name}
+    ${rc}   ${stdout}=      Run and Return RC and Output    osm ns-create --ns_name ${ns_name} --nsd_name ${nsd} --vim_account ${vim_name}
     log     ${stdout}
-    Should Be Equal As Integers 	${rc}	${success_return_code}
+    Should Be Equal As Integers    ${rc}    ${success_return_code}
 
 
 Create Network Service With Config
     [Documentation]  Create ns at osm
     [Arguments]  ${nsd}   ${vim_name}    ${ns_name}    ${ns_config}
 
-    ${rc}   ${stdout}=      Run and Return RC and Output	    osm ns-create --ns_name ${ns_name} --nsd_name ${nsd} --vim_account ${vim_name} --config ${ns_config}
+    ${rc}   ${stdout}=      Run and Return RC and Output    osm ns-create --ns_name ${ns_name} --nsd_name ${nsd} --vim_account ${vim_name} --config ${ns_config}
     log     ${stdout}
-    Should Be Equal As Integers 	${rc}	${success_return_code}
+    Should Be Equal As Integers    ${rc}    ${success_return_code}
 
-	
+
 Delete NS
     [Documentation]  Delete ns
     [Arguments]  ${ns}
 
-    ${rc}   ${stdout}=      Run and Return RC and Output	    osm ns-delete ${ns}
+    ${rc}   ${stdout}=      Run and Return RC and Output    osm ns-delete ${ns}
     log     ${stdout}
-    Should Be Equal As Integers 	${rc}	${success_return_code}
+    Should Be Equal As Integers    ${rc}    ${success_return_code}
 
     WAIT UNTIL KEYWORD SUCCEEDS  ${ns_delete_max_wait_time}   ${ns_delete_pol_time}   Check For NS Instance To Be Delete   ${ns}
 
@@ -95,27 +95,27 @@
 Check For NS Instance To Configured
     [Arguments]  ${ns_name}
 
-    ${rc}   ${stdout}=      Run and Return RC and Output	    osm ns-list --filter name="${ns_name}"
+    ${rc}   ${stdout}=      Run and Return RC and Output    osm ns-list --filter name="${ns_name}"
     log     ${stdout}
-    Should Be Equal As Integers 	${rc}	${success_return_code}
+    Should Be Equal As Integers    ${rc}    ${success_return_code}
     Should Contain Any      ${stdout}   configured    failed
 
 
 Check For NS Instance For Failure
     [Arguments]  ${ns_name}
 
-    ${rc}   ${stdout}=      Run and Return RC and Output	    osm ns-list --filter name="${ns_name}"
+    ${rc}   ${stdout}=      Run and Return RC and Output    osm ns-list --filter name="${ns_name}"
     log     ${stdout}
-    Should Be Equal As Integers 	${rc}	${success_return_code}
+    Should Be Equal As Integers    ${rc}    ${success_return_code}
     Should Not Contain      ${stdout}   failed
 
 
 Check For NS Instance To Be Delete
     [Arguments]  ${ns}
 
-    ${rc}   ${stdout}=      Run and Return RC and Output	    osm ns-list
+    ${rc}   ${stdout}=      Run and Return RC and Output    osm ns-list
     log     ${stdout}
-    Should Be Equal As Integers 	${rc}	${success_return_code}
+    Should Be Equal As Integers    ${rc}    ${success_return_code}
     Should Not Contain      ${stdout}   ${ns}
 
 
@@ -123,7 +123,7 @@
     [Documentation]  Forcely Delete ns
     [Arguments]  ${ns}
 
-    ${rc}   ${stdout}=      Run and Return RC and Output	    osm ns-delete ${ns}
+    ${rc}   ${stdout}=      Run and Return RC and Output    osm ns-delete ${ns}
     log     ${stdout}
-    Should Be Equal As Integers 	${rc}	${success_return_code}
+    Should Be Equal As Integers    ${rc}    ${success_return_code}
     WAIT UNTIL KEYWORD SUCCEEDS    ${ns_delete_max_wait_time}   ${ns_delete_pol_time}   Check For NS Instance To Be Delete   ${ns}
diff --git a/robot-systest/lib/cli/sdnc_account_lib.robot b/robot-systest/lib/cli/sdnc_account_lib.robot
index 3085c1c..71680b8 100644
--- a/robot-systest/lib/cli/sdnc_account_lib.robot
+++ b/robot-systest/lib/cli/sdnc_account_lib.robot
@@ -27,14 +27,14 @@
 ${ip}      "1.1.1.1"
 ${type}     "onos"
 ${port}     "5858"
-${dpid}   ""
+${dpid}   "a7:2f:aa:be:C3:c1:fe:C9"
 
 
 *** Keywords ***
 Create SDNC Account
     [Documentation]  create new sdnc account
 
-     ${rc}    ${stdout}=      Run and Return RC and Output	 osm sdnc-create --name ${name} --type ${type} --ip-address ${ip} --user ${user} --password ${password} --port ${port} --switch_dpid ${dpid}     return_rc=True
+     ${rc}    ${stdout}=      Run and Return RC and Output	 osm sdnc-create --name ${name} --type ${type} --ip_address ${ip} --user ${user} --password ${password} --port ${port} --switch_dpid ${dpid}
     log  ${rc}
     log  ${stdout}
     Should Be Equal As Integers    ${rc}    ${success_return_code}
@@ -50,7 +50,7 @@
 Show SDNC Account
     [Documentation]  Get sdnc account details
 
-    ${rc}    ${stdout}=      Run and Return RC and Output	 osm sdnc-show ${name}     return_rc=True
+    ${rc}    ${stdout}=      Run and Return RC and Output	 osm sdnc-show ${name}
     log  ${rc}
     log  ${stdout}
     Should Be Equal As Integers    ${rc}    ${success_return_code}
@@ -59,7 +59,7 @@
 Delete SDNC Account
     [Documentation]  Get sdnc account details
 
-    ${rc}    ${stdout}=      Run and Return RC and Output	 osm sdnc-delete ${name}     return_rc=True
+    ${rc}    ${stdout}=      Run and Return RC and Output	 osm sdnc-delete ${name}
     log  ${rc}
     log  ${stdout}
     Should Be Equal As Integers    ${rc}    ${success_return_code}
\ No newline at end of file
diff --git a/robot-systest/lib/cli/vim_account_lib.robot b/robot-systest/lib/cli/vim_account_lib.robot
index 699d199..76e6ff1 100644
--- a/robot-systest/lib/cli/vim_account_lib.robot
+++ b/robot-systest/lib/cli/vim_account_lib.robot
@@ -22,13 +22,19 @@
 # 1. Feature 7829: Jayant Madavi, Mrityunjay Yadav : MY00514913@techmahindra.com : 06-sep-2019
 ##
 
+*** Settings ***
+Library     OperatingSystem
+Library     String
+Library     Collections
+Library     ../custom_lib.py
+
 
 *** Variables ***
 ${success_return_code}    0
 ${name}     "helloworld-os"
 ${user}     "robottest"
 ${password}     "fred"
-${authurl}      "https://169.254.169.245/"
+${authurl}      "https://127.0.0.1/"
 ${type}     "openstack"
 ${desc}     "a test vim"
 ${tenant}   "robottest2"
@@ -63,16 +69,18 @@
 VIM Setup To Launch Network Services
     [Documentation]  Setup a VIM to launch network services
 
+    set global variable    @{vim}
     ${vmware_url}=  Get Environment Variable    VCD_AUTH_URL   ${EMPTY}
     ${openstack_url}=   Get Environment Variable    OS_AUTH_URL   ${EMPTY}
     ${vmware_vim}=    Run Keyword And Return If   '${vmware_url}'!='${EMPTY}'   Setup Vmware Vim   ${vmware_url}   'vmware'      'pytest system test'
     ${openstack_vim}=    Run Keyword And Return If   '${openstack_url}'!='${EMPTY}'   Setup Openstack Vim    ${openstack_url}    'openstack'   'pytest system test'
-
+    Should Not Be Empty    ${vim}    VIM details not provided
     Log Many   @{vim}
 
 
 Setup Openstack Vim
     [Documentation]  Openstack Vim Account Setup
+    [Tags]    vim-setup
     [Arguments]  ${authurl}  ${type}     ${desc}
 
     ${user}=  Get Environment Variable    OS_USERNAME   ''
@@ -84,12 +92,17 @@
     ${rc}   ${stdout}=      Run and Return RC and Output	    osm vim-create --name ${vim_name} --user ${user} --password ${password} --auth_url ${authurl} --tenant ${tenant} --account_type ${type} --description ${desc} --config ${vim-config}
     log  ${stdout}
     Should Be Equal As Integers    ${rc}    ${success_return_code}
+    Sleep    30s    Wait for to get vim ready
+    ${rc}   ${vim_detail}=      Run and Return RC and Output    osm vim-show ${vim_name}
+    Should Contain    ${vim_detail}    "operationalState": "ENABLED"    msg=Openstack vim is not available    values=False
     Append To List     ${vim}       ${stdout}
+
     [Return]  ${stdout}
 
 
 Setup Vmware Vim
     [Documentation]  Vmware Vim Account Setup
+    [Tags]    vim-setup
     [Arguments]  ${authurl}  ${type}     ${desc}
 
     ${user}=  Get Environment Variable    VCD_USERNAME   ''
@@ -102,7 +115,11 @@
     ${rc}   ${stdout}=      Run and Return RC and Output	    osm vim-create --name ${vim_name} --user ${user} --password ${password} --auth_url ${authurl} --tenant ${tenant} --account_type ${type} --description ${desc} --config ${vim-config}
     log  ${stdout}
     Should Be Equal As Integers    ${rc}    ${success_return_code}
+    Sleep    30s    Wait for to get vim ready
+    ${rc}   ${vim_detail}=      Run and Return RC and Output    osm vim-show ${vim_name}
+    Should Contain    ${vim_detail}    "operationalState": "ENABLED"    msg=VMWare VCD vim is not available    values=False
     Append To List     ${vim}       ${stdout}
+
     [Return]  ${stdout}
 
 
diff --git a/robot-systest/run_test.sh b/robot-systest/run_test.sh
index 74f8aa1..42b2328 100644
--- a/robot-systest/run_test.sh
+++ b/robot-systest/run_test.sh
@@ -32,11 +32,6 @@
     echo -e "\nInstalling robot requirements"
     # installing python packages
     pip install haikunator requests robotframework robotframework-seleniumlibrary robotframework-requests
-
-    # installing chrome driver and chrome for UI testing
-    curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
-    echo "deb [arch=amd64]  http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
-    apt-get update && apt-get -y install google-chrome-stable chromium-chromedriver
 }
 
 while getopts ":t:-:" o; do
@@ -65,7 +60,7 @@
     exit 0
 elif [[ "$TEST" == "smoke" ]]; then
     echo "Robot Framework SMOKE test"
-    robot -d $BASEDIR/reports -i smoke $BASEDIR/testsuite/
+    robot --removekeywords tag:vim-setup --removekeywords WUKS -d $BASEDIR/reports -i smoke $BASEDIR/testsuite/
     exit 0
 elif [[ "$TEST" == "sanity" ]]; then
     echo "Robot Framework Cirros VNF Test"
@@ -81,10 +76,16 @@
         ovf_converter $BASEDIR/images/cache/cirros-0.3.5-x86_64-disk.img -n cirros
         python $TOPDIR/tools/vmware_ovf_upload.py $VCD_AUTH_URL $VCD_USERNAME $VCD_PASSWORD $VCD_ORGANIZATION $BASEDIR/images/cache/cirros.ovf
     fi
-    robot -d $BASEDIR/reports -i sanity $BASEDIR/testsuite/
+    robot --removekeywords tag:vim-setup --removekeywords WUKS -d $BASEDIR/reports -i sanity $BASEDIR/testsuite/
     exit 0
 elif [[ "$TEST" == "comprehensive" ]]; then
     echo "Robot Framework Comprehensive Test"
+    echo "Installing chrome driver and chrome for UI testing"
+    # installing chrome driver and chrome for UI testing
+    curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
+    echo "deb [arch=amd64]  http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
+    apt-get update && apt-get -y install google-chrome-stable chromium-chromedriver
+    echo "Checking of image over VIMs"
     mkdir -p $BASEDIR/images/cache
     if [[ ! -z $OS_AUTH_URL ]]; then
         (openstack image show ubuntu1604) || (wget -r -nc https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img -O $BASEDIR/images/cache/xenial-server-cloudimg-amd64-disk1.img && make $BASEDIR/images/cache/xenial-server-cloudimg-amd64-disk1.img && openstack image create --file $BASEDIR/images/cache/xenial-server-cloudimg-amd64-disk1.img ubuntu1604)
@@ -98,7 +99,7 @@
         ovf_converter $BASEDIR/images/cache/xenial-server-cloudimg-amd64-disk1.img -n ubuntu1604
         python $TOPDIR/tools/vmware_ovf_upload.py $VCD_AUTH_URL $VCD_USERNAME $VCD_PASSWORD $VCD_ORGANIZATION $BASEDIR/images/cache/ubuntu1604.ovf
     fi
-    robot -d $BASEDIR/reports -i comprehensive $BASEDIR/testsuite/
+    robot --removekeywords tag:vim-setup --removekeywords WUKS -d $BASEDIR/reports -i comprehensive $BASEDIR/testsuite/
     exit 0
 else
     echo "wrong test provided"
diff --git a/robot-systest/testsuite/cli/TS01__Test_VNF.robot b/robot-systest/testsuite/cli/TS01__Test_VNF.robot
index 08a4e0e..4059cff 100644
--- a/robot-systest/testsuite/cli/TS01__Test_VNF.robot
+++ b/robot-systest/testsuite/cli/TS01__Test_VNF.robot
@@ -42,8 +42,6 @@
 @{vnfd_ids}
 @{nsd_ids}
 @{ns_ids}
-@{vim}
-#${vim_name}     robot_test
 
 
 *** Test Cases ***
@@ -66,10 +64,8 @@
 Network Service Instance Test
     [Documentation]  Launch and terminate network services
     [Tags]    sanity
-    [Setup]  VIM Setup To Launch Network Services
     [Teardown]  Run Keyword And Ignore Error    Network Service Instance Cleanup
 
-    Should Not Be Empty    ${vim}    VIM details not provided
     :FOR    ${vim_name}    IN    @{vim}
     \    Launch Network Services and Return    ${vim_name}
 
@@ -104,6 +100,3 @@
 
     :FOR    ${ns}  IN   @{ns_ids}
     \   Force Delete NS   ${ns}
-
-    :FOR    ${vim_id}  IN   @{vim}
-    \   Force Delete Vim Account    ${vim_id}
diff --git a/robot-systest/testsuite/cli/TS03__Hackfest_Basic_NS.robot b/robot-systest/testsuite/cli/TS03__Hackfest_Basic_NS.robot
index d55540a..1065b3a 100644
--- a/robot-systest/testsuite/cli/TS03__Hackfest_Basic_NS.robot
+++ b/robot-systest/testsuite/cli/TS03__Hackfest_Basic_NS.robot
@@ -43,7 +43,6 @@
 ${nsd_id}
 @{nsd_ids}
 @{ns_ids}
-@{vim}
 
 
 *** Test Cases ***
@@ -66,10 +65,8 @@
 Network Service Instance Test
     [Documentation]  Launch and terminate network services
     [Tags]   comprehensive   hackfest_basic_ns
-    [Setup]  VIM Setup To Launch Network Services
     [Teardown]  Run Keyword And Ignore Error    Network Service Instance Cleanup
 
-    Should Not Be Empty    ${vim}    VIM details not provided
     :FOR    ${vim_name}    IN    @{vim}
     \    Launch Network Services and Return    ${vim_name}
 
@@ -104,6 +101,3 @@
 
     :FOR    ${ns_id}  IN   @{ns_ids}
     \   Force Delete NS   ${ns_id}
-
-    :FOR    ${vim_id}  IN   @{vim}
-    \   Force Delete Vim Account    ${vim_id}
diff --git a/robot-systest/testsuite/cli/TS04__Hackfest_Simplecharm_NS.robot b/robot-systest/testsuite/cli/TS04__Hackfest_Simplecharm_NS.robot
index 7439259..6534deb 100644
--- a/robot-systest/testsuite/cli/TS04__Hackfest_Simplecharm_NS.robot
+++ b/robot-systest/testsuite/cli/TS04__Hackfest_Simplecharm_NS.robot
@@ -43,7 +43,6 @@
 ${nsd_id}
 @{nsd_ids}
 @{ns_ids}
-@{vim}
 ${vnfdftpPath}    https://osm-download.etsi.org/ftp/osm-6.0-six/7th-hackfest/packages/hackfest_simplecharm_vnf.tar.gz
 ${nsdftpPath}    https://osm-download.etsi.org/ftp/osm-6.0-six/7th-hackfest/packages/hackfest_simplecharm_ns.tar.gz
 
@@ -54,7 +53,7 @@
 
     #Build VNF Descriptor    ${vnfdPckgPath}
     #Workarround for charm build issue
-    ${rc}   ${stdout}=      Run and Return RC and Output	    wget -P '${CURDIR}${/}../../..${vnfdPckgPath}${/}build/' ${vnfdftpPath}
+    ${rc}   ${stdout}=      Run and Return RC and Output    wget -P '${CURDIR}${/}../../..${vnfdPckgPath}${/}build/' ${vnfdftpPath}
     ${vnfd_id}=    Create VNFD    '${CURDIR}${/}../../..${vnfdPckgPath}${vnfdPckg}'
     Append To List     ${vnfd_ids}       ${vnfd_id}
 
@@ -63,7 +62,7 @@
     [Tags]   hackfest_simplecharm    comprehensive
 
     #Build NS Descriptor    ${nsdPckgPath}
-	${rc}   ${stdout}=      Run and Return RC and Output	    wget -P '${CURDIR}${/}../../..${nsdPckgPath}${/}build/' ${nsdftpPath}
+    ${rc}   ${stdout}=      Run and Return RC and Output    wget -P '${CURDIR}${/}../../..${nsdPckgPath}${/}build/' ${nsdftpPath}
     ${nsd_id}=    Create NSD    '${CURDIR}${/}../../..${nsdPckgPath}${nsdPckg}'
     Append To List     ${nsd_ids}       ${nsd_id}
 
@@ -71,10 +70,8 @@
 Network Service Instance Test
     [Documentation]  Launch and terminate network services
     [Tags]   hackfest_simplecharm    comprehensive
-    [Setup]  VIM Setup To Launch Network Services
     [Teardown]  Run Keyword And Ignore Error    Network Service Instance Cleanup
 
-    Should Not Be Empty    ${vim}    VIM details not provided
     :FOR    ${vim_name}    IN    @{vim}
     \    Launch Network Services and Return    ${vim_name}
 
@@ -109,6 +106,3 @@
 
     :FOR    ${ns_id}  IN   @{ns_ids}
     \   Force Delete NS   ${ns_id}
-
-    :FOR    ${vim_id}  IN   @{vim}
-    \   Force Delete Vim Account    ${vim_id}
diff --git a/robot-systest/testsuite/cli/TS05__Hackfest_Multivdu_NS.robot b/robot-systest/testsuite/cli/TS05__Hackfest_Multivdu_NS.robot
index 7fa6c24..dd6ee10 100644
--- a/robot-systest/testsuite/cli/TS05__Hackfest_Multivdu_NS.robot
+++ b/robot-systest/testsuite/cli/TS05__Hackfest_Multivdu_NS.robot
@@ -43,7 +43,6 @@
 ${nsd_id}
 @{nsd_ids}
 @{ns_ids}
-@{vim}
 
 
 *** Test Cases ***
@@ -66,10 +65,8 @@
 Network Service Instance Test
     [Documentation]  Launch and terminate network services
     [Tags]   comprehensive   hackfest_multivdu
-    [Setup]  VIM Setup To Launch Network Services
     [Teardown]  Run Keyword And Ignore Error    Network Service Instance Cleanup
 
-    Should Not Be Empty    ${vim}    VIM details not provided
     :FOR    ${vim_name}    IN    @{vim}
     \    Launch Network Services and Return    ${vim_name}
 
@@ -104,6 +101,3 @@
 
     :FOR    ${ns_id}  IN   @{ns_ids}
     \   Force Delete NS   ${ns_id}
-
-    :FOR    ${vim_id}  IN   @{vim}
-    \   Force Delete Vim Account    ${vim_id}
diff --git a/robot-systest/testsuite/cli/TS06__Hackfest_Cloudinit_NS.robot b/robot-systest/testsuite/cli/TS06__Hackfest_Cloudinit_NS.robot
index a43f3a2..9f3e01d 100644
--- a/robot-systest/testsuite/cli/TS06__Hackfest_Cloudinit_NS.robot
+++ b/robot-systest/testsuite/cli/TS06__Hackfest_Cloudinit_NS.robot
@@ -43,7 +43,6 @@
 ${nsd_id}
 @{nsd_ids}
 @{ns_ids}
-@{vim}
 
 
 *** Test Cases ***
@@ -66,10 +65,8 @@
 Network Service Instance Test
     [Documentation]  Launch and terminate network services
     [Tags]   comprehensive   hackfest_cloudinit
-    [Setup]  VIM Setup To Launch Network Services
     [Teardown]  Run Keyword And Ignore Error    Network Service Instance Cleanup
 
-    Should Not Be Empty    ${vim}    VIM details not provided
     :FOR    ${vim_name}    IN    @{vim}
     \    Launch Network Services and Return    ${vim_name}
 
@@ -104,6 +101,3 @@
 
     :FOR    ${ns_id}  IN   @{ns_ids}
     \   Force Delete NS   ${ns_id}
-
-    :FOR    ${vim_id}  IN   @{vim}
-    \   Force Delete Vim Account    ${vim_id}
diff --git a/robot-systest/testsuite/cli/TS07__Hackfest_EPA_NS.robot b/robot-systest/testsuite/cli/TS07__Hackfest_EPA_NS.robot
index 2d8d3be..4d7f12d 100644
--- a/robot-systest/testsuite/cli/TS07__Hackfest_EPA_NS.robot
+++ b/robot-systest/testsuite/cli/TS07__Hackfest_EPA_NS.robot
@@ -43,7 +43,6 @@
 ${nsd_id}
 @{nsd_ids}
 @{ns_ids}
-@{vim}
 
 
 *** Test Cases ***
@@ -66,10 +65,8 @@
 Network Service Instance Test
     [Documentation]  Launch and terminate network services
     [Tags]    hackfest_epa
-    [Setup]  VIM Setup To Launch Network Services
     [Teardown]  Run Keyword And Ignore Error    Network Service Instance Cleanup
 
-    Should Not Be Empty    ${vim}    VIM details not provided
     :FOR    ${vim_name}    IN    @{vim}
     \    Launch Network Services and Return    ${vim_name}
 
@@ -104,6 +101,3 @@
 
     :FOR    ${ns_id}  IN   @{ns_ids}
     \   Force Delete NS   ${ns_id}
-
-    :FOR    ${vim_id}  IN   @{vim}
-    \   Force Delete Vim Account    ${vim_id}
diff --git a/robot-systest/testsuite/cli/__init__.robot b/robot-systest/testsuite/cli/__init__.robot
new file mode 100644
index 0000000..2d959da
--- /dev/null
+++ b/robot-systest/testsuite/cli/__init__.robot
@@ -0,0 +1,39 @@
+# -*- 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.
+##
+
+*** Settings ***
+Library     OperatingSystem
+Library     String
+Library     Collections
+Library     ../../lib/custom_lib.py
+Resource    ../../lib/cli/vim_account_lib.robot
+
+Suite Setup     Wait Until Keyword Succeeds    2x    30sec    VIM Setup To Launch Network Services
+Suite Teardown     Run Keyword And Ignore Error    Suite Cleanup
+
+
+*** Variables ***
+@{vim}
+
+
+*** Keywords ***
+Suite Cleanup
+    :FOR    ${vim_id}  IN   @{vim}
+    \   Force Delete Vim Account    ${vim_id}
\ No newline at end of file
diff --git a/robot-systest/testsuite/client_library/TS01__OSMClient_Library_Test.robot b/robot-systest/testsuite/client_library/TS01__OSMClient_Library_Test.robot
index 42b455a..88d8b5c 100644
--- a/robot-systest/testsuite/client_library/TS01__OSMClient_Library_Test.robot
+++ b/robot-systest/testsuite/client_library/TS01__OSMClient_Library_Test.robot
@@ -79,4 +79,4 @@
 Setup OSM Client
     evaluate    sys.path.append('${CURDIR}${/}../../lib/client_lib')    modules=sys
     ${host}=    Get Environment Variable    OSM_HOSTNAME    127.0.0.1
-    Import Library    ClientLib    host=${host}    WITH NAME    osmclient
+    Import Library    client_lib.ClientLib    host=${host}    WITH NAME    osmclient
