diff --git a/TestON/JenkinsFile/FabricJenkinsfileTrigger b/TestON/JenkinsFile/FabricJenkinsfileTrigger
index f5a7dc2..7f62fe4 100644
--- a/TestON/JenkinsFile/FabricJenkinsfileTrigger
+++ b/TestON/JenkinsFile/FabricJenkinsfileTrigger
@@ -31,7 +31,7 @@
 // set the versions of the onos.
 current_version = "master"
 previous_version = "1.15"
-before_previous_version = "1.14"
+before_previous_version = "2.0"
 
 // Function that will initialize the configuration of the Fabric.
 funcs.initializeTrend( "Fabric" )
diff --git a/TestON/JenkinsFile/README b/TestON/JenkinsFile/README
index 1e837e4..73c9749 100644
--- a/TestON/JenkinsFile/README
+++ b/TestON/JenkinsFile/README
@@ -12,7 +12,7 @@
   2) change the portion on line 31 :
      current_version = "master"
      previous_version = "1.15"
-     before_previous_version = "1.14"
+     before_previous_version = "2.0"
 
 
 2. If you want to change the branch to be run for the Segment Routing tests :
@@ -21,18 +21,18 @@
   2) change the variable values on line 32:
      current_version = "master"
      previous_version = "1.15"
-     before_previous_version = "1.14"
+     before_previous_version = "2.0"
   3) If you want certain branch to be run on different machine then change
      a) line 155 - 157:
         testcases[ "SR" ][ "nodeName" ][ <node you want> ] 0: Fabric2, 1: Fabric3, 2: Fabric4
      b) Then, go to dependencies/JenkinsCommonFuncs.groovy
         change def fabricOn( branch ) on line 86.
-        Currently, master, 1.15 and 1.14 run on Fabric4, 2 and 3 respectively.
-     c) Make sure to change the URLs on Wiki as well. If 1.14 runs on Fabric2 instead of Fabric3, then you
+        Currently, master, 2.0 and 1.15 run on Fabric4, 3 and 2 respectively.
+     c) Make sure to change the URLs on Wiki as well. If 1.15 runs on Fabric2 instead of Fabric3, then you
         have to update the URL from
-          https://jenkins.onosproject.org/view/QA/job/postjob-Fabric3/lastSuccessfulBuild/artifact/SRBridging_onos-1.14_20-builds_graph.jpg
+          https://jenkins.onosproject.org/view/QA/job/postjob-Fabric3/lastSuccessfulBuild/artifact/SRBridging_onos-1.15_20-builds_graph.jpg
           to
-          https://jenkins.onosproject.org/view/QA/job/postjob-Fabric2/lastSuccessfulBuild/artifact/SRBridging_onos-1.14_20-builds_graph.jpg
+          https://jenkins.onosproject.org/view/QA/job/postjob-Fabric2/lastSuccessfulBuild/artifact/SRBridging_onos-1.15_20-builds_graph.jpg
 
 
 3. If you want to upload additional logs for the Segment Routing tests:
diff --git a/TestON/JenkinsFile/SRHAJenkinsFile b/TestON/JenkinsFile/SRHAJenkinsFile
index b13290f..98021fd 100644
--- a/TestON/JenkinsFile/SRHAJenkinsFile
+++ b/TestON/JenkinsFile/SRHAJenkinsFile
@@ -36,7 +36,7 @@
 jobName = env.JOB_NAME
 
 // read the TestON.property depends on which branch it is running.
-// ( currently master on Fabric4, 1.15 on Fabric2 and 1.14 on Fabric3 )
+// ( currently master on Fabric4, 2.0 on Fabric3 and 1.15 on Fabric2 )
 def prop = null
 prop = funcs.getProperties()
 SRHA = test_lists.getAllTheTests( prop[ "WikiPrefix" ] )[ "SRHA" ]
diff --git a/TestON/JenkinsFile/SRJenkinsFile b/TestON/JenkinsFile/SRJenkinsFile
index 30fba24..9b85b89 100644
--- a/TestON/JenkinsFile/SRJenkinsFile
+++ b/TestON/JenkinsFile/SRJenkinsFile
@@ -36,7 +36,7 @@
 funcs.additionalInitForSR( jobName )
 
 // read the TestON.property depends on which branch it is running.
-// ( currently master on Fabric4, 1.15 on Fabric2 and 1.14 on Fabric3 )
+// ( currently master on Fabric4, 1.15 on Fabric2 and 2.0 on Fabric3 )
 def prop = null
 prop = funcs.getProperties()
 SR = test_lists.getAllTheTests( prop[ "WikiPrefix" ] )[ "SR" ]
diff --git a/TestON/JenkinsFile/VM_BMJenkinsfileTrigger b/TestON/JenkinsFile/VM_BMJenkinsfileTrigger
index f2e8bc9..a1f7f29 100644
--- a/TestON/JenkinsFile/VM_BMJenkinsfileTrigger
+++ b/TestON/JenkinsFile/VM_BMJenkinsfileTrigger
@@ -30,7 +30,7 @@
 fileRelated.init()
 current_version = "master"
 previous_version = "1.15"
-before_previous_version = "1.14"
+before_previous_version = "2.0"
 
 // init trend graphs to be on VM.
 funcs.initializeTrend( "VM" );
diff --git a/TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy b/TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy
index 0a37eac..d309f44 100644
--- a/TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy
+++ b/TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy
@@ -83,7 +83,7 @@
 
 def additionalInitForSR( branch ){
     // additional setup for SegmentRouting tests to determine the machine depends on the branch it is running.
-    // branch : branch of the onos. ( master, 1.15, 1.14... )
+    // branch : branch of the onos. ( master, 2.0, 1.15... )
 
     testMachine = ( ( new StringBuilder( testMachine ) ).insert( testMachine.size() - 1, fabricOn( branch ) ) ).
             toString()
@@ -98,14 +98,15 @@
 
 def fabricOn( branch ){
     // gets the fabric machines with the branch of onos.
-    // branch : master, 1.15, 1.14...
+    // branch : master, 2.0, 1.15...
     // branch.reverse().take(4).reverse() will get last 4 characters of the string.
-    switch ( branch.reverse().take( 4 ).reverse() ){
-        case "ster": return "4"
-        case "1.15": return "2"
-        case "1.14": return "3"
-        case "1.13": return "2"
-        case "1.12": return "3"
+    switch ( branch.reverse().take( 3 ).reverse() ){
+        case "ter": return "4"
+        case "2.0": return "3"
+        case ".15": return "2"
+        case ".14": return "3"
+        case ".13": return "2"
+        case ".12": return "3"
         default: return "4"
     }
 }
@@ -294,7 +295,7 @@
 def postLogs( testName, prefix ){
     // posting logs of the onos jobs specifically SR tests
     // testName : name of the test
-    // prefix : branch prefix ( master, 1.15, 1.14 ... )
+    // prefix : branch prefix ( master, 2.0, 1.15 ... )
 
     resultURL = ""
     if ( testType == "SR" ){
@@ -384,7 +385,7 @@
                     def fileContents = ""
                     node( testMachine ) {
                         withEnv( [ 'ONOSBranch=' + prop[ "ONOSBranch" ],
-                                   'ONOSJVMHeap=' + prop[ "ONOSJVMHeap" ],
+                                   'ONOSJAVAOPTS=' + prop[ "ONOSJAVAOPTS" ],
                                    'TestONBranch=' + prop[ "TestONBranch" ],
                                    'ONOSTag=' + prop[ "ONOSTag" ],
                                    'WikiPrefix=' + prop[ "WikiPrefix" ],
@@ -463,7 +464,7 @@
     // stat_file : file name with full path for Rscript for the stat graph
     // pie_file : file name with full path for Rscript for the pie graph
     // type : type of the test ( USECASE, FUNC, HA )
-    // branch : branch of the test ( master, onos-1.15, onos-1.14 )
+    // branch : branch of the test ( master, onos-2.0, onos-1.15 )
     // testListPart : list of the test to be included
     // save_path : path that will save the graphs to
     // pieTestListPart : list of the test for pie graph
@@ -587,9 +588,11 @@
     else if ( branch == "1.13" )
         return "onos-1.13"
     else if ( branch == "1.14" )
-        return "onos-1.14"
+        return "onos-1.15"
     else if ( branch == "1.15" )
-        return "onos-1.14"
+        return "onos-1.15"
+    else if ( branch == "2.0" )
+        return "master"
     else
         return "master"
 }
diff --git a/TestON/JenkinsFile/dependencies/JenkinsTestONTests.groovy b/TestON/JenkinsFile/dependencies/JenkinsTestONTests.groovy
index 1f9df18..e1f1495 100644
--- a/TestON/JenkinsFile/dependencies/JenkinsTestONTests.groovy
+++ b/TestON/JenkinsFile/dependencies/JenkinsTestONTests.groovy
@@ -26,7 +26,7 @@
 
 def getAllTheTests( wikiPrefix ){
     // This contains the dictionary of the test and the category of them
-    // wikiPrefix : master, 1.15, 1.14 ...
+    // wikiPrefix : master, 2.0, 1.15 ...
 
     // category: it will be used to distinguish which category to be run on which days ( basic,extra_A, extra_B ... )
     // day: it will be used to display the schedule of the test to be run to the slack. It is empty in the first place but will be
diff --git a/TestON/JenkinsFile/dependencies/TriggerFuncs.groovy b/TestON/JenkinsFile/dependencies/TriggerFuncs.groovy
index 2ca4f72..effc766 100644
--- a/TestON/JenkinsFile/dependencies/TriggerFuncs.groovy
+++ b/TestON/JenkinsFile/dependencies/TriggerFuncs.groovy
@@ -135,7 +135,7 @@
             echo "TestONBranch=''' + test_branch + '''" >> /var/jenkins/TestONOS.property
             echo "ONOSTag=''' + onosTag + '''" >> /var/jenkins/TestONOS.property
             echo "WikiPrefix=''' + wiki + '''" >> /var/jenkins/TestONOS.property
-            echo "ONOSJVMHeap=''' + env.ONOSJVMHeap + '''" >> /var/jenkins/TestONOS.property
+            echo "ONOSJAVAOPTS=''' + env.ONOSJAVAOPTS + '''" >> /var/jenkins/TestONOS.property
             echo "Tests=''' + tests + '''" >> /var/jenkins/TestONOS.property
             echo "postResult=''' + postResult + '''" >> /var/jenkins/TestONOS.property
             echo "manualRun=''' + manually_run + '''" >> /var/jenkins/TestONOS.property
@@ -213,8 +213,8 @@
         git branch
         git log -1 --decorate
         echo -e "\n##### set jvm heap size to 8G #####"
-        echo ${ONOSJVMHeap}
-        inserted_line="export JAVA_OPTS=\"\${ONOSJVMHeap}\""
+        echo ${ONOSJAVAOPTS}
+        inserted_line="export JAVA_OPTS=\"\${ONOSJAVAOPTS}\""
         sed -i "s/bash/bash\\n$inserted_line/" ~/onos/tools/package/bin/onos-service
         echo "##### Check onos-service setting..... #####"
         cat ~/onos/tools/package/bin/onos-service
diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index b87e344..b09fa70 100755
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -522,7 +522,7 @@
             else:
                 main.cleanAndExit()
 
-    def sendline( self, cmdStr, showResponse=False, debug=False, timeout=10, noExit=False, relaxedRegex=True ):
+    def sendline( self, cmdStr, showResponse=False, debug=False, timeout=10, noExit=False, relaxedRegex=True, expectJson=False ):
         """
         A wrapper around pexpect's sendline/expect. Will return all the output from a given command
 
@@ -558,7 +558,7 @@
                 main.log.debug( self.name + ": " + repr( response ) )
 
             # Remove control codes from karaf 4.2.1
-            karafEscape = re.compile( r"('(0|1)~\'|\r\r\r\n\x1b\[A\x1b\[79Cx|\x1b(>|=)|\x1b\[90m~)" )
+            karafEscape = re.compile( r"('(0|1)~\'|\r\r\r\n\x1b\[A\x1b\[79C(x|\s)?|\x1b(>|=)|\x1b\[90m~)" )
             response = karafEscape.sub( '', response )
             if debug:
                 main.log.debug( self.name + ": karafEscape output" )
@@ -571,6 +571,8 @@
                 main.log.debug( self.name + ": " + repr( response ) )
 
             # Remove ANSI color control strings from output
+            # NOTE: karaf is sometimes adding a single character then two
+            #       backspaces and sometimes adding 2 characters with 2 backspaces??
             backspaceEscape = re.compile( r'((..\x08\x08)|(.|\s)\x08)' )
             response = backspaceEscape.sub( '', response )
             if debug:
@@ -591,20 +593,40 @@
                 main.log.debug( self.name + ": " + repr( response ) )
 
             # parse for just the output, remove the cmd from response
+            cmdPattern = cmdStr.strip()
+            main.log.debug( "REGEX PATTERN SET TO: " + repr( cmdPattern ) +
+                            "\nSENT COMMAND STRING WAS: " + repr( cmdStr ) )
             if relaxedRegex:
+                cmdPattern = cmdPattern.split( '|' )[ -1 ].strip()
+                main.log.debug( "REGEX PATTERN SET TO: " + repr( cmdPattern ) +
+                                "\nSENT COMMAND STRING WAS: " + repr( cmdStr ) )
                 # This was added because karaf 4.2 is stripping some characters from the command echo
-                endStr = cmdStr.split( '|' )[-1]
-                output = response.split( endStr.strip(), 1 )
-            else:
-                output = response.split( endStr.strip(), 1 )
+                output = response.split( cmdPattern, 1 )
+                if expectJson:
+                    main.log.warn( "Relaxed Regex: Searching for a json string amongst the output" )
+                    jsonPattern = r'\{.*\}'
+                    match = re.search( jsonPattern, output[ 0 ] )
+                    if match:
+                        output = [ '' , match.group( 0 ) ]  # We expect a list with the second element to be the output
                 if len( output ) < 2:
                     main.log.warn( "Relaxing regex match to last 5 characters of the sent command" )
-                    output = response.split( endStr.strip()[-5:], 1 )
+                    cmdPattern = cmdPattern[ -5: ]
+                    main.log.debug( "REGEX PATTERN SET TO: " + repr( cmdPattern ) +
+                                    "\nSENT COMMAND STRING WAS: " + repr( cmdStr ) )
+                    output = response.split( cmdPattern, 1 )
+            else:
+                output = response.split( cmdPattern, 1 )
+                if len( output ) < 2:  # TODO: Should we do this without the relaxedRegex flag?
+                    main.log.warn( "Relaxing regex match to last 5 characters of the sent command" )
+                    output = response.split( cmdPattern[ -5: ], 1 )
             if output:
                 if debug:
                     main.log.debug( self.name + ": split output" )
                     for r in output:
                         main.log.debug( self.name + ": " + repr( r ) )
+                if len( output ) == 1:
+                    main.log.error( "Could not remove sent command echo from output" )
+                    return output
                 output = output[ 1 ].strip()
             if showResponse:
                 main.log.info( "Response from ONOS: {}".format( output ) )
@@ -666,7 +688,7 @@
             return parsed.group( 1 )
         except IndexError:
             main.log.exception( self.name + ": Object not as expected" )
-            main.log.debug( "response: {}".format( repr( response ) ) )
+            main.log.debug( "response: {}".format( repr( numLines ) ) )
             return None
         except TypeError:
             main.log.exception( self.name + ": Object not as expected" )
@@ -2799,6 +2821,10 @@
                 return None
             return totalFlows
 
+        except IndexError:
+            main.log.exception( "{}: Object not as expected!".format( self.name ) )
+            main.log.debug( "rawFlows: {}".format( rawFlows ) )
+            return None
         except ( TypeError, ValueError ):
             main.log.exception( "{}: Object not as expected!".format( self.name ) )
             return None
@@ -4210,9 +4236,11 @@
                     componentStr += " " + propName
             if jsonFormat:
                 baseStr += " -j"
+                expectJson = True
             elif short:
                 baseStr += " -s"
-            output = self.sendline( baseStr + cmdStr + componentStr )
+                expectJson = False
+            output = self.sendline( baseStr + cmdStr + componentStr, expectJson=expectJson )
             assert output is not None, "Error in sendline"
             assert "Command not found:" not in output, output
             assert "Error executing command" not in output, output
@@ -4574,6 +4602,9 @@
             if jsonFormat:
                 cmdStr += " -j"
             output = self.sendline( cmdStr )
+            main.log.debug( self.name + ": Counters unparsed: " + output )
+            output = output.split( "\r\n" )[ -1 ]
+            main.log.debug( self.name + ": Counters parsed: " + output )
             assert output is not None, "Error in sendline"
             assert "Command not found:" not in output, output
             assert "Error executing command" not in output, output
@@ -4681,6 +4712,9 @@
             cmdStr = "value-test {} {}".format( valueName,
                                                 operation )
             output = self.distPrimitivesSend( cmdStr )
+            main.log.debug( self.name + ": value test unparsed: " + output )
+            output = output.split( "\r\n" )[ -1 ]
+            main.log.debug( self.name + ": value test parsed: " + output )
             pattern = "(\w+)"
             match = re.search( pattern, output )
             if match:
@@ -5401,8 +5435,8 @@
             elif mode == 'first':
                 cmd = cmd + " | grep \'" + searchTerm + "\'" + " | head -n 1"
             elif mode == 'num':
-                cmd = cmd + " | grep -c \'" + searchTerm + "\'"
-                num = self.sendline( cmd )
+                cmd = cmd + " | grep \'" + searchTerm + "\' | wc -l"
+                num = self.lineCount( cmd )
                 return num
             elif mode == 'total':
                 totalLines = self.lineCount( "cat /opt/onos/log/karaf.log | wc -l" )
@@ -5945,6 +5979,9 @@
             operation = "totalPending"
             cmdStr = " ".join( [ prefix, queueName, operation ] )
             output = self.distPrimitivesSend( cmdStr )
+            main.log.debug( self.name + ": work queue unparsed: " + output )
+            output = output.split( "\r\n" )[ -1 ]
+            main.log.debug( self.name + ": work queue parsed: " + output )
             pattern = r'\d+'
             if "Invalid operation name" in output:
                 main.log.warn( output )
@@ -5978,6 +6015,9 @@
             operation = "totalCompleted"
             cmdStr = " ".join( [ prefix, queueName, operation ] )
             output = self.distPrimitivesSend( cmdStr )
+            main.log.debug( self.name + ": work queue unparsed: " + output )
+            output = output.split( "\r\n" )[ -1 ]
+            main.log.debug( self.name + ": work queue parsed: " + output )
             pattern = r'\d+'
             if "Invalid operation name" in output:
                 main.log.warn( output )
@@ -6011,6 +6051,9 @@
             operation = "totalInProgress"
             cmdStr = " ".join( [ prefix, queueName, operation ] )
             output = self.distPrimitivesSend( cmdStr )
+            main.log.debug( self.name + ": work queue unparsed: " + output )
+            output = output.split( "\r\n" )[ -1 ]
+            main.log.debug( self.name + ": work queue parsed: " + output )
             pattern = r'\d+'
             if "Invalid operation name" in output:
                 main.log.warn( output )
diff --git a/TestON/drivers/common/cli/onosdriver.py b/TestON/drivers/common/cli/onosdriver.py
index 2b17d66..e47d34d 100755
--- a/TestON/drivers/common/cli/onosdriver.py
+++ b/TestON/drivers/common/cli/onosdriver.py
@@ -1435,6 +1435,8 @@
             i = self.handle.expect( [ self.prompt, pexpect.TIMEOUT, "Password:" ], timeout )
             if i == 0:
                 main.log.info( self.name + ": " + node + " is up" )
+                # FIXME: for now we sleep 5s for CLI to become ready
+                time.sleep( 5 )
                 return main.TRUE
             elif i == 1 or i == 2:
                 # NOTE: since this function won't return until ONOS is ready,
diff --git a/TestON/tests/FUNC/FUNCintent/FUNCintent.py b/TestON/tests/FUNC/FUNCintent/FUNCintent.py
index 86b9f53..6c12a4f 100644
--- a/TestON/tests/FUNC/FUNCintent/FUNCintent.py
+++ b/TestON/tests/FUNC/FUNCintent/FUNCintent.py
@@ -897,41 +897,6 @@
                                  onpass=main.assertReturnString,
                                  onfail=main.assertReturnString )
 
-        main.step( "Protected: Add point intents between h1 and h9" )
-        main.assertReturnString = "Assertion Result for protected point intent\n"
-        senders = [
-            { "name": "h1", "device": "of:0000000000000005/1", "mac": "00:00:00:00:00:01" }
-        ]
-        recipients = [
-            { "name": "h9", "device": "of:0000000000000006/1", "mac": "00:00:00:00:00:09" }
-        ]
-        testResult = main.FALSE
-        installResult = main.intents.installPointIntent(
-            main,
-            name="Protected",
-            senders=senders,
-            recipients=recipients,
-            protected=True )
-
-        if installResult:
-            testResult = main.intents.testPointIntent(
-                main,
-                name="Protected",
-                intentId=installResult,
-                senders=senders,
-                recipients=recipients,
-                sw1="s5",
-                sw2="s2",
-                protected=True,
-                expectedLink=18 )
-        else:
-            main.intents.removeAllExistIntents( main )
-
-        utilities.assert_equals( expect=main.TRUE,
-                                 actual=testResult,
-                                 onpass=main.assertReturnString,
-                                 onfail=main.assertReturnString )
-
         main.step( "IPV4_2: Add point intents between h1 and h9" )
         main.assertReturnString = "Assertion Result for IPV4 no mac address point intents\n"
         senders = [
diff --git a/TestON/tests/HA/HAbackupRecover/HAbackupRecover.py b/TestON/tests/HA/HAbackupRecover/HAbackupRecover.py
index 7010f93..e6ba11e 100644
--- a/TestON/tests/HA/HAbackupRecover/HAbackupRecover.py
+++ b/TestON/tests/HA/HAbackupRecover/HAbackupRecover.py
@@ -88,14 +88,15 @@
             main.testSetUp.envSetupException( e )
         main.testSetUp.evnSetupConclusion( stepResult )
 
+        applyFuncs = [ main.HA.removeKarafConsoleLogging ]
+
         try:
             if main.params[ 'topology' ][ 'topoFile' ]:
                 main.log.info( 'Skipping start of Mininet in this case, make sure you start it elsewhere' )
-                applyFuncs = None
             else:
-                applyFuncs = main.HA.startingMininet
+                applyFuncs.append( main.HA.startingMininet )
         except (KeyError, IndexError):
-            applyFuncs = main.HA.startingMininet
+            applyFuncs.append( main.HA.startingMininet )
 
         main.testSetUp.ONOSSetUp( main.Cluster, cellName=cellName, extraApply=applyFuncs )
 
diff --git a/TestON/tests/HA/HAclusterRestart/HAclusterRestart.py b/TestON/tests/HA/HAclusterRestart/HAclusterRestart.py
index 14a0898..35800d2 100644
--- a/TestON/tests/HA/HAclusterRestart/HAclusterRestart.py
+++ b/TestON/tests/HA/HAclusterRestart/HAclusterRestart.py
@@ -88,14 +88,15 @@
             main.testSetUp.envSetupException( e )
         main.testSetUp.evnSetupConclusion( stepResult )
 
+        applyFuncs = [ main.HA.removeKarafConsoleLogging ]
+
         try:
             if main.params[ 'topology' ][ 'topoFile' ]:
                 main.log.info( 'Skipping start of Mininet in this case, make sure you start it elsewhere' )
-                applyFuncs = None
             else:
-                applyFuncs = main.HA.startingMininet
+                applyFuncs.append( main.HA.startingMininet )
         except (KeyError, IndexError):
-            applyFuncs = main.HA.startingMininet
+            applyFuncs.append( main.HA.startingMininet )
 
         main.testSetUp.ONOSSetUp( main.Cluster, cellName=cellName, extraApply=applyFuncs )
 
diff --git a/TestON/tests/HA/HAcontinuousStopNodes/HAcontinuousStopNodes.py b/TestON/tests/HA/HAcontinuousStopNodes/HAcontinuousStopNodes.py
index 277e098..d770e83 100644
--- a/TestON/tests/HA/HAcontinuousStopNodes/HAcontinuousStopNodes.py
+++ b/TestON/tests/HA/HAcontinuousStopNodes/HAcontinuousStopNodes.py
@@ -91,8 +91,8 @@
             main.testSetUp.envSetupException( e )
         main.testSetUp.evnSetupConclusion( stepResult )
 
-        applyFuncs = [ main.HA.customizeOnosGenPartitions, main.HA.copyBackupConfig ]
-        applyArgs = [ None, None ]
+        applyFuncs = [ main.HA.removeKarafConsoleLogging, main.HA.customizeOnosGenPartitions, main.HA.copyBackupConfig ]
+        applyArgs = [ None, None, None ]
         try:
             if main.params[ 'topology' ][ 'topoFile' ]:
                 main.log.info( 'Skipping start of Mininet in this case, make sure you start it elsewhere' )
diff --git a/TestON/tests/HA/HAfullNetPartition/HAfullNetPartition.py b/TestON/tests/HA/HAfullNetPartition/HAfullNetPartition.py
index e3daf8e..9020edc 100644
--- a/TestON/tests/HA/HAfullNetPartition/HAfullNetPartition.py
+++ b/TestON/tests/HA/HAfullNetPartition/HAfullNetPartition.py
@@ -90,8 +90,8 @@
             main.testSetUp.envSetupException( e )
         main.testSetUp.evnSetupConclusion( stepResult )
 
-        applyFuncs = [ main.HA.customizeOnosGenPartitions ]
-        applyArgs = [ None ]
+        applyFuncs = [ main.HA.removeKarafConsoleLogging, main.HA.customizeOnosGenPartitions ]
+        applyArgs = [ None, None ]
         try:
             if main.params[ 'topology' ][ 'topoFile' ]:
                 main.log.info( 'Skipping start of Mininet in this case, make sure you start it elsewhere' )
diff --git a/TestON/tests/HA/HAkillNodes/HAkillNodes.py b/TestON/tests/HA/HAkillNodes/HAkillNodes.py
index 560b785..1be271f 100644
--- a/TestON/tests/HA/HAkillNodes/HAkillNodes.py
+++ b/TestON/tests/HA/HAkillNodes/HAkillNodes.py
@@ -88,10 +88,11 @@
             main.testSetUp.envSetupException( e )
         main.testSetUp.evnSetupConclusion( stepResult )
 
-        applyFuncs = [ main.HA.customizeOnosGenPartitions,
+        applyFuncs = [ main.HA.removeKarafConsoleLogging,
+                       main.HA.customizeOnosGenPartitions,
                        main.HA.copyBackupConfig,
                        main.ONOSbench.preventAutoRespawn ]
-        applyArgs = [ None, None, None ]
+        applyArgs = [ None, None, None, None ]
         try:
             if main.params[ 'topology' ][ 'topoFile' ]:
                 main.log.info( 'Skipping start of Mininet in this case, make sure you start it elsewhere' )
diff --git a/TestON/tests/HA/HApowerFailure/HApowerFailure.py b/TestON/tests/HA/HApowerFailure/HApowerFailure.py
index 85801e0..aa04792 100644
--- a/TestON/tests/HA/HApowerFailure/HApowerFailure.py
+++ b/TestON/tests/HA/HApowerFailure/HApowerFailure.py
@@ -88,10 +88,11 @@
             main.testSetUp.envSetupException( e )
         main.testSetUp.evnSetupConclusion( stepResult )
 
-        applyFuncs = [ main.HA.customizeOnosGenPartitions,
+        applyFuncs = [ main.HA.removeKarafConsoleLogging,
+                       main.HA.customizeOnosGenPartitions,
                        main.HA.copyBackupConfig,
                        main.ONOSbench.preventAutoRespawn ]
-        applyArgs = [ None, None, None ]
+        applyArgs = [ None, None, None, None ]
         try:
             if main.params[ 'topology' ][ 'topoFile' ]:
                 main.log.info( 'Skipping start of Mininet in this case, make sure you start it elsewhere' )
diff --git a/TestON/tests/HA/HAsanity/HAsanity.py b/TestON/tests/HA/HAsanity/HAsanity.py
index b6d00c0..eecd0f1 100644
--- a/TestON/tests/HA/HAsanity/HAsanity.py
+++ b/TestON/tests/HA/HAsanity/HAsanity.py
@@ -87,14 +87,15 @@
             main.testSetUp.envSetupException( e )
         main.testSetUp.evnSetupConclusion( stepResult )
 
+        applyFuncs = [ main.HA.removeKarafConsoleLogging ]
+
         try:
             if main.params[ 'topology' ][ 'topoFile' ]:
                 main.log.info( 'Skipping start of Mininet in this case, make sure you start it elsewhere' )
-                applyFuncs = None
             else:
-                applyFuncs = main.HA.startingMininet
+                applyFuncs.append( main.HA.startingMininet )
         except (KeyError, IndexError):
-            applyFuncs = main.HA.startingMininet
+            applyFuncs.append( main.HA.startingMininet )
 
         main.testSetUp.ONOSSetUp( main.Cluster, cellName=cellName,
                                   extraApply=applyFuncs, stopAtomix=True,
diff --git a/TestON/tests/HA/HAscaling/HAscaling.py b/TestON/tests/HA/HAscaling/HAscaling.py
index 6929ae7..19b0ec3 100644
--- a/TestON/tests/HA/HAscaling/HAscaling.py
+++ b/TestON/tests/HA/HAscaling/HAscaling.py
@@ -97,8 +97,8 @@
         main.log.debug( scale )
         main.Cluster.setRunningNode( int( re.search( "\d+", scale ).group( 0 ) ) )
 
-        applyFuncs = []
-        applyArgs = []
+        applyFuncs = [ main.HA.removeKarafConsoleLogging ]
+        applyArgs = [ None ]
         try:
             if main.params[ 'topology' ][ 'topoFile' ]:
                 main.log.info( 'Skipping start of Mininet in this case, make sure you start it elsewhere' )
diff --git a/TestON/tests/HA/HAsingleInstanceRestart/HAsingleInstanceRestart.py b/TestON/tests/HA/HAsingleInstanceRestart/HAsingleInstanceRestart.py
index af383f1..c23284b 100644
--- a/TestON/tests/HA/HAsingleInstanceRestart/HAsingleInstanceRestart.py
+++ b/TestON/tests/HA/HAsingleInstanceRestart/HAsingleInstanceRestart.py
@@ -92,9 +92,9 @@
         main.testSetUp.evnSetupConclusion( stepResult )
 
         cellApps = str( main.params["ENV"]["appString"] )
-        cellNAme = str( main.params["ENV"]["appString"] )
-        applyFuncs = [ main.testSetUp.createApplyCell ]
-        applyArgs = [ [ main.Cluster, True, cellName , cellApps, "", True, main.Cluster.runningNodes[ 0 ].ipAddress ] ]
+        cellName = str( main.params["ENV"]["appString"] )
+        applyFuncs = [ main.HA.removeKarafConsoleLogging, main.testSetUp.createApplyCell ]
+        applyArgs = [ None, [ main.Cluster, True, cellName , cellApps, "", True, main.Cluster.runningNodes[ 0 ].ipAddress ] ]
         try:
             if main.params[ 'topology' ][ 'topoFile' ]:
                 main.log.info( 'Skipping start of Mininet in this case, make sure you start it elsewhere' )
diff --git a/TestON/tests/HA/HAstopNodes/HAstopNodes.py b/TestON/tests/HA/HAstopNodes/HAstopNodes.py
index 998f29c..0c6c7d0 100644
--- a/TestON/tests/HA/HAstopNodes/HAstopNodes.py
+++ b/TestON/tests/HA/HAstopNodes/HAstopNodes.py
@@ -88,8 +88,8 @@
             main.testSetUp.envSetupException( e )
         main.testSetUp.evnSetupConclusion( stepResult )
 
-        applyFuncs = [ main.HA.customizeOnosGenPartitions, main.HA.copyBackupConfig ]
-        applyArgs = [ None, None ]
+        applyFuncs = [ main.HA.removeKarafConsoleLogging, main.HA.customizeOnosGenPartitions, main.HA.copyBackupConfig ]
+        applyArgs = [ None, None, None ]
         try:
             if main.params[ 'topology' ][ 'topoFile' ]:
                 main.log.info( 'Skipping start of Mininet in this case, make sure you start it elsewhere' )
diff --git a/TestON/tests/HA/HAswapNodes/HAswapNodes.py b/TestON/tests/HA/HAswapNodes/HAswapNodes.py
index 52da8ed..e2efe92 100644
--- a/TestON/tests/HA/HAswapNodes/HAswapNodes.py
+++ b/TestON/tests/HA/HAswapNodes/HAswapNodes.py
@@ -89,8 +89,8 @@
             main.testSetUp.envSetupException( e )
         main.testSetUp.evnSetupConclusion( stepResult )
 
-        applyFuncs = [ main.HA.swapNodeMetadata ]
-        applyArgs = [ None ]
+        applyFuncs = [ main.HA.removeKarafConsoleLogging, main.HA.swapNodeMetadata ]
+        applyArgs = [ None, None ]
         try:
             if main.params[ 'topology' ][ 'topoFile' ]:
                 main.log.info( 'Skipping start of Mininet in this case, make sure you start it elsewhere' )
diff --git a/TestON/tests/HA/HAupgrade/HAupgrade.py b/TestON/tests/HA/HAupgrade/HAupgrade.py
index f71cf79..cea03c8 100644
--- a/TestON/tests/HA/HAupgrade/HAupgrade.py
+++ b/TestON/tests/HA/HAupgrade/HAupgrade.py
@@ -92,8 +92,8 @@
             main.testSetUp.envSetupException( e )
         main.testSetUp.evnSetupConclusion( stepResult )
 
-        applyFuncs = [ main.HA.copyBackupConfig ]
-        applyArgs = [ None ]
+        applyFuncs = [ main.HA.removeKarafConsoleLogging, main.HA.copyBackupConfig ]
+        applyArgs = [ None, None ]
         try:
             if main.params[ 'topology' ][ 'topoFile' ]:
                 main.log.info( 'Skipping start of Mininet in this case, make sure you start it elsewhere' )
diff --git a/TestON/tests/HA/HAupgradeRollback/HAupgradeRollback.py b/TestON/tests/HA/HAupgradeRollback/HAupgradeRollback.py
index db5e503..f5ae894 100644
--- a/TestON/tests/HA/HAupgradeRollback/HAupgradeRollback.py
+++ b/TestON/tests/HA/HAupgradeRollback/HAupgradeRollback.py
@@ -92,8 +92,8 @@
             main.testSetUp.envSetupException( e )
         main.testSetUp.evnSetupConclusion( stepResult )
 
-        applyFuncs = [ main.HA.copyBackupConfig ]
-        applyArgs = [ None ]
+        applyFuncs = [ main.HA.removeKarafConsoleLogging, main.HA.copyBackupConfig ]
+        applyArgs = [ None, None ]
         try:
             if main.params[ 'topology' ][ 'topoFile' ]:
                 main.log.info( 'Skipping start of Mininet in this case, make sure you start it elsewhere' )
diff --git a/TestON/tests/HA/dependencies/HA.py b/TestON/tests/HA/dependencies/HA.py
index 4342f96..c809ffe 100644
--- a/TestON/tests/HA/dependencies/HA.py
+++ b/TestON/tests/HA/dependencies/HA.py
@@ -30,6 +30,12 @@
         self.default = ''
         main.topoMappings = {}
 
+    def removeKarafConsoleLogging( self ):
+        main.ONOSbench.handle.sendline( "cd " + main.ONOSbench.home )
+        main.ONOSbench.handle.expect( main.ONOSbench.prompt )
+        main.ONOSbench.handle.sendline( "sed -i 's/-Dkaraf.log.console=INFO //g' tools/package/bin/onos-service" )
+        main.ONOSbench.handle.expect( main.ONOSbench.prompt )
+
     def customizeOnosGenPartitions( self ):
         # copy gen-partions file to ONOS
         # NOTE: this assumes TestON and ONOS are on the same machine
diff --git a/TestON/tests/SCPF/SCPFintentInstallWithdrawLat/SCPFintentInstallWithdrawLat.py b/TestON/tests/SCPF/SCPFintentInstallWithdrawLat/SCPFintentInstallWithdrawLat.py
index 8b798bd..f4c1c8e 100644
--- a/TestON/tests/SCPF/SCPFintentInstallWithdrawLat/SCPFintentInstallWithdrawLat.py
+++ b/TestON/tests/SCPF/SCPFintentInstallWithdrawLat/SCPFintentInstallWithdrawLat.py
@@ -202,7 +202,7 @@
                                 continue
 
                         try:
-                            latency = int( installResult.split()[ 5 ] )
+                            latency = int( installResult.split()[ -2 ] )
                             main.log.info( installResult )
                         except:
                             main.log.error( "Failed to get latency, ignore this iteration." )
@@ -245,7 +245,7 @@
                                 continue
 
                         try:
-                            latency = int( withdrawResult.split()[ 5 ] )
+                            latency = int( withdrawResult.split()[ -2 ] )
                             main.log.info( withdrawResult )
                         except:
                             main.log.error( "Failed to get latency, ignore this iteration." )
diff --git a/TestON/tests/SCPF/SCPFmastershipFailoverLat/SCPFmastershipFailoverLat.params b/TestON/tests/SCPF/SCPFmastershipFailoverLat/SCPFmastershipFailoverLat.params
index 497bb9d..fa17b67 100644
--- a/TestON/tests/SCPF/SCPFmastershipFailoverLat/SCPFmastershipFailoverLat.params
+++ b/TestON/tests/SCPF/SCPFmastershipFailoverLat/SCPFmastershipFailoverLat.params
@@ -53,7 +53,7 @@
 
         # Percent of data that can be invalid per sample size iteration.
         # Any more than this will cause the test to fail and stop. Must be a float between 0 and 1.
-        <failPercent>0.25</failPercent>
+        <failPercent>0.5</failPercent>
 
    </TEST>
 
diff --git a/TestON/tests/SCPF/SCPFmastershipFailoverLat/SCPFmastershipFailoverLat.py b/TestON/tests/SCPF/SCPFmastershipFailoverLat/SCPFmastershipFailoverLat.py
index 700008b..b0dd227 100644
--- a/TestON/tests/SCPF/SCPFmastershipFailoverLat/SCPFmastershipFailoverLat.py
+++ b/TestON/tests/SCPF/SCPFmastershipFailoverLat/SCPFmastershipFailoverLat.py
@@ -220,7 +220,7 @@
                 main.log.warn( "Latency was NOT obtained from tshark successfully." )
 
             validDataCheck = False
-            if tsharkLatCheck:
+            if eventLatCheck and tsharkLatCheck:
                 main.log.info( "instanceDeactivated: " + str( instanceDeactivated ) )
                 main.log.info( "masterChanged: " + str( masterChanged ) )
                 main.log.info( "roleRequestLat: " + str( roleRequestLat ) )
@@ -271,8 +271,8 @@
             main.log.info( "Checking ONOS nodes." )
             nodeResults = utilities.retry( main.Cluster.nodesCheck,
                                            False,
-                                           sleep=1,
-                                           attempts=3 )
+                                           sleep=5,
+                                           attempts=50 )
 
             if not nodeResults:
                 main.log.error( "Nodes check NOT successful." )
diff --git a/TestON/tests/SCPF/SCPFscaleTopo/SCPFscaleTopo.params b/TestON/tests/SCPF/SCPFscaleTopo/SCPFscaleTopo.params
index 39f73bf..fee4291 100755
--- a/TestON/tests/SCPF/SCPFscaleTopo/SCPFscaleTopo.params
+++ b/TestON/tests/SCPF/SCPFscaleTopo/SCPFscaleTopo.params
@@ -78,7 +78,7 @@
 
     <TOPOLOGY>
         <topology>torus</topology>
-        <scale>10,20,30,40,50,55,60</scale>
+        <scale>10,20,30,40,50</scale>
         <host>True</host>
     </TOPOLOGY>
 
diff --git a/TestON/tests/SCPF/SCPFscaleTopo/dependencies/scaleTopoFunction.py b/TestON/tests/SCPF/SCPFscaleTopo/dependencies/scaleTopoFunction.py
index b59a833..c97006c 100644
--- a/TestON/tests/SCPF/SCPFscaleTopo/dependencies/scaleTopoFunction.py
+++ b/TestON/tests/SCPF/SCPFscaleTopo/dependencies/scaleTopoFunction.py
@@ -39,7 +39,7 @@
         timeString = timeString[ 0 ]
         from datetime import datetime
         # convert time string to timestamp
-        t = datetime.strptime( timeString, "%Y-%m-%d %H:%M:%S,%f" )
+        t = datetime.strptime( timeString, "%Y-%m-%dT%H:%M:%S,%f" )
         import time
         timestamp = time.mktime( t.timetuple() )
         timestamp += int( t.microsecond / 1000 ) / 1000.0
diff --git a/TestON/tests/USECASE/SegmentRouting/SRRouting/SRRouting.params b/TestON/tests/USECASE/SegmentRouting/SRRouting/SRRouting.params
index 72d8925..bfcf49f 100644
--- a/TestON/tests/USECASE/SegmentRouting/SRRouting/SRRouting.params
+++ b/TestON/tests/USECASE/SegmentRouting/SRRouting/SRRouting.params
@@ -39,7 +39,7 @@
         <OnosDiscovery>45</OnosDiscovery>
         <loadNetcfgSleep>5</loadNetcfgSleep>
         <startMininetSleep>25</startMininetSleep>
-        <dhcpSleep>60</dhcpSleep>
+        <dhcpSleep>120</dhcpSleep>
         <balanceMasterSleep>10</balanceMasterSleep>
     </timers>
 
diff --git a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
index 0b32c5a..e5433f9 100644
--- a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
+++ b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
@@ -321,13 +321,8 @@
         """
         Adds an ONOS static route with the use route-add command.
         """
-        main.step("Add static route for subnet {0} towards router interface {1}".format(subnet, intf))
         routeResult = main.Cluster.active( 0 ).addStaticRoute(subnet, intf)
 
-        utilities.assert_equals( expect=True, actual=( not routeResult ),
-                                 onpass="route-add command succeeded",
-                                 onfail="route-add command failed")
-
     @staticmethod
     def checkGroupsForBuckets( main, deviceId, subnetDict, routingTable=30 ):
         """
@@ -898,7 +893,7 @@
                 main.log.debug( "{} components not ACTIVE: \n{}".format(
                     ctrl.name,
                     ctrl.CLI.sendline( "onos:scr-list | grep -v ACTIVE" ) ) )
-            main.log.error( "Failed to kill ONOS, stopping test" )
+            main.log.error( "Failed to verify nodes, stopping test" )
             main.cleanAndExit()
 
     @staticmethod
