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
