diff --git a/TestON/tests/HA/HAkillNodes/HAkillNodes.py b/TestON/tests/HA/HAkillNodes/HAkillNodes.py
index 63e34cb..4a95206 100644
--- a/TestON/tests/HA/HAkillNodes/HAkillNodes.py
+++ b/TestON/tests/HA/HAkillNodes/HAkillNodes.py
@@ -90,15 +90,14 @@
         main.testSetUp.evnSetupConclusion( stepResult )
         main.HA.generateGraph( "HAkillNodes" )
 
-        main.step( "Make sure ONOS service doesn't automatically respawn" )
-        main.ONOSbench.preventAutoRespawn()
-
         main.testSetUp.ONOSSetUp( main.Mininet1, main.Cluster, cellName=cellName, removeLog=True,
-                                 extraApply=[ main.HA.startingMininet,
-                                              main.HA.customizeOnosGenPartitions ],
-                                 extraClean=main.HA.cleanUpGenPartition )
+                                  extraApply=[ main.HA.startingMininet,
+                                               main.HA.customizeOnosGenPartitions,
+                                               main.HA.copyBackupConfig,
+                                               main.ONOSbench.preventAutoRespawn ],
+                                  extraClean= main.HA.cleanUpGenPartition )
 
-        main.HA.initialSetUp()
+        main.HA.initialSetUp( serviceClean=True )
 
     def CASE2( self, main ):
         """
@@ -150,7 +149,9 @@
             main.kill.append( main.Cluster.runningNodes[ p - 1 ] )
             # NOTE: This only works for cluster sizes of 3,5, or 7.
 
-        main.step( "Killing nodes: " + str( main.kill ) )
+        #NOTE: This is to fix an issue with wiki formating
+        nodeNames = [ node.name for node in main.kill ]
+        main.step( "Killing nodes: " + str( nodeNames ) )
         killResults = main.TRUE
         for ctrl in main.kill:
             killResults = killResults and\
diff --git a/TestON/tests/HA/HAscaling/HAscaling.py b/TestON/tests/HA/HAscaling/HAscaling.py
index cecd09e..f986cc2 100644
--- a/TestON/tests/HA/HAscaling/HAscaling.py
+++ b/TestON/tests/HA/HAscaling/HAscaling.py
@@ -79,9 +79,8 @@
             from tests.dependencies.ONOSSetup import ONOSSetup
             main.testSetUp = ONOSSetup()
         except ImportError:
-            main.log.error( "ONOSSetup not found exiting the test" )
+            main.log.error( "ONOSSetup not found. exiting the test" )
             main.cleanAndExit()
-
         main.testSetUp.envSetupDescription()
         try:
             from tests.HA.dependencies.HA import HA
@@ -99,14 +98,15 @@
         main.HA.generateGraph( "HAscaling", index=1 )
 
         main.testSetUp.ONOSSetUp( main.Mininet1, main.Cluster, cellName=cellName, removeLog=True,
-                                 extraApply=[ main.HA.setServerForCluster,
-                                              main.HA.scalingMetadata,
-                                              main.HA.startingMininet,
-                                              main.HA.copyingBackupConfig ],
-                                 extraClean=main.HA.cleanUpOnosService,
-                                 installMax=True )
+                                  extraApply=[ main.HA.setServerForCluster,
+                                               main.HA.scalingMetadata,
+                                               main.HA.startingMininet,
+                                               main.HA.copyBackupConfig,
+                                               main.HA.setMetadataUrl ],
+                                  extraClean=main.HA.cleanUpOnosService,
+                                  installMax=True )
 
-        main.HA.initialSetUp( True )
+        main.HA.initialSetUp( serviceClean=True )
 
     def CASE2( self, main ):
         """
diff --git a/TestON/tests/HA/HAsingleInstanceRestart/HAsingleInstanceRestart.py b/TestON/tests/HA/HAsingleInstanceRestart/HAsingleInstanceRestart.py
index 53cccb3..eeb4310 100644
--- a/TestON/tests/HA/HAsingleInstanceRestart/HAsingleInstanceRestart.py
+++ b/TestON/tests/HA/HAsingleInstanceRestart/HAsingleInstanceRestart.py
@@ -105,10 +105,10 @@
                                   extraApply=[ main.testSetUp.createApplyCell,
                                                main.HA.startingMininet,
                                                main.testSetUp.createApplyCell ],
-                                  arg=[ [ main.Cluster, True, cellName, main.Mininet1, True, ip ],
-                                        None,
-                                        [ main.Cluster, True, "SingleHA", main.Mininet1,
-                                        True, main.Cluster.runningNodes[ 0 ].ipAddress ] ] )
+                                  applyArgs=[ [ main.Cluster, True, cellName, main.Mininet1, True, ip ],
+                                              None,
+                                              [ main.Cluster, True, "SingleHA", main.Mininet1,
+                                                True, main.Cluster.runningNodes[ 0 ].ipAddress ] ] )
 
         main.HA.initialSetUp()
 
diff --git a/TestON/tests/HA/HAstopNodes/HAstopNodes.py b/TestON/tests/HA/HAstopNodes/HAstopNodes.py
index 2c4f059..e7bdcd4 100644
--- a/TestON/tests/HA/HAstopNodes/HAstopNodes.py
+++ b/TestON/tests/HA/HAstopNodes/HAstopNodes.py
@@ -92,10 +92,11 @@
 
         main.testSetUp.ONOSSetUp( main.Mininet1, main.Cluster, cellName=cellName, removeLog=True,
                                   extraApply=[ main.HA.startingMininet,
-                                               main.HA.customizeOnosGenPartitions ],
-                                  extraClean=main.HA.cleanUpGenPartition )
+                                               main.HA.customizeOnosGenPartitions,
+                                               main.HA.copyBackupConfig ],
+                                  extraClean= main.HA.cleanUpGenPartition )
 
-        main.HA.initialSetUp()
+        main.HA.initialSetUp( serviceClean=True )
 
     def CASE2( self, main ):
         """
@@ -147,7 +148,9 @@
             main.kill.append( main.Cluster.runningNodes[ p - 1 ] )
             # NOTE: This only works for cluster sizes of 3,5, or 7.
 
-        main.step( "Stopping nodes: " + str( main.kill ) )
+        #NOTE: This is to fix an issue with wiki formating
+        nodeNames = [ node.name for node in main.kill ]
+        main.step( "Stopping nodes: " + str( nodeNames ) )
         killResults = main.TRUE
         for ctrl in main.kill:
             killResults = killResults and\
diff --git a/TestON/tests/HA/HAswapNodes/HAswapNodes.py b/TestON/tests/HA/HAswapNodes/HAswapNodes.py
index 2de9f87..1fa8106 100644
--- a/TestON/tests/HA/HAswapNodes/HAswapNodes.py
+++ b/TestON/tests/HA/HAswapNodes/HAswapNodes.py
@@ -101,7 +101,8 @@
                                  extraApply=[ main.HA.setServerForCluster,
                                               main.HA.swapNodeMetadata,
                                               main.HA.startingMininet,
-                                              main.HA.copyingBackupConfig ],
+                                              main.HA.copyBackupConfig,
+                                              main.HA.setMetadataUrl ],
                                  extraClean=main.HA.cleanUpOnosService,
                                  installMax=True )
         main.HA.initialSetUp()
diff --git a/TestON/tests/HA/dependencies/HA.py b/TestON/tests/HA/dependencies/HA.py
index 3d18eaa..f1ddaef 100644
--- a/TestON/tests/HA/dependencies/HA.py
+++ b/TestON/tests/HA/dependencies/HA.py
@@ -112,7 +112,7 @@
                                  onpass="Server started",
                                  onfail="Failled to start SimpleHTTPServer" )
 
-    def copyingBackupConfig( self ):
+    def copyBackupConfig( self ):
         main.step( "Copying backup config files" )
         main.onosServicepath = main.ONOSbench.home + "/tools/package/bin/onos-service"
         cp = main.ONOSbench.scp( main.ONOSbench,
@@ -124,6 +124,9 @@
                                  actual=cp,
                                  onpass="Copy backup config file succeeded",
                                  onfail="Copy backup config file failed" )
+
+    def setMetadataUrl( self ):
+        # NOTE: You should probably backup the config before and reset the config after the test
         # we need to modify the onos-service file to use remote metadata file
         # url for cluster metadata file
         iface = main.params[ 'server' ].get( 'interface' )
