diff --git a/TestON/JenkinsFile/CHO_Graph_Generator b/TestON/JenkinsFile/CHO_Graph_Generator
new file mode 100644
index 0000000..424f9a3
--- /dev/null
+++ b/TestON/JenkinsFile/CHO_Graph_Generator
@@ -0,0 +1,53 @@
+#!groovy
+fileRelated = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsPathAndFiles.groovy' )
+
+fileRelated.init()
+branches = params.ONOSbranch
+hours = params.hours
+branchList = branches.tokenize( "\n;, " )
+script_file = fileRelated.trendCHO
+saving_directory = fileRelated.jenkinsWorkspace + "postjob-Fabric5/"
+scriptDir = fileRelated.CHOScriptDir
+
+graphScript = generateGraphScript( branchList )
+
+stage( 'Generating-Graph' ){
+    node( "TestStation-Fabric5s" ){
+        runScript( graphScript )
+    }
+}
+stage( 'posting-result' ){
+    postJob()
+}
+
+def generateGraphScript( branchList ){
+    graphScript = ''''''
+    for( branch in branchList ){
+        branchDir = scriptDir + branch + "/"
+        graphScript += '''export BRANCH=''' + branchDir + '''
+                          mkdir ''' + branchDir + ''';
+                          if [ ! -f ''' + branchDir + '''existing.txt ]; then
+                             cp *.csv ''' + branchDir + ''';
+                             echo "1" > ''' + branchDir + '''existing.txt;
+                          fi;
+                          bash log-summary;''' + '''
+                          Rscript ''' +  script_file + ' ' + branchDir + 'event.csv ' +
+                                branchDir + 'failure.csv ' + branchDir + 'error.csv ' +
+                                branch + ' 60 ' + hours + ' ' +  saving_directory + ''';
+        '''
+        print( graphScript )
+    }
+    return graphScript
+}
+def runScript( graphScript ){
+    sh '''#!/bin/bash -l
+          set -i
+          set +e
+          export PYTHONPATH=/home/sdn/TestON:/home/sdn/sts
+          cd ''' + scriptDir + ''';
+          ''' + graphScript
+}
+def postJob(){
+        jobToRun = "postjob-Fabric5"
+        build job: jobToRun, propagate: false
+}
diff --git a/TestON/JenkinsFile/FUNCJenkinsFile b/TestON/JenkinsFile/FUNCJenkinsFile
index 8592090..c063ee2 100644
--- a/TestON/JenkinsFile/FUNCJenkinsFile
+++ b/TestON/JenkinsFile/FUNCJenkinsFile
@@ -1,15 +1,18 @@
 #!groovy
-funcs = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsCommonFuncs.groovy' )
-test_lists = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsTestONTests.groovy' )
+funcs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy' )
+test_lists = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsTestONTests.groovy' )
+fileRelated = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsPathAndFiles.groovy' )
 
+fileRelated.init()
 funcs.initialize( "FUNC" );
+
 // This is a Jenkinsfile for a scripted pipeline for the FUNC tests
 def prop = null
 prop = funcs.getProperties()
 FUNC = test_lists.getAllTheTests( prop[ "WikiPrefix" ] )[ "FUNC" ]
 
-graph_generator_file = "~/OnosSystemTest/TestON/JenkinsFile/scripts/testCaseGraphGenerator.R"
-graph_saved_directory = "/var/jenkins/workspace/postjob-VM/"
+graph_generator_file = fileRelated.trendIndividual
+graph_saved_directory = fileRelated.jenkinsWorkspace + "postjob-VM/"
 
 echo( "Testcases:" )
 def testsToRun = null
@@ -29,4 +32,4 @@
     tests[ test ].call()
 }
 funcs.generateOverallGraph( prop, FUNC, graph_saved_directory )
-funcs.sendResultToSlack( start,  prop[ "manualRun" ], prop[ "WikiPrefix" ] )
\ No newline at end of file
+funcs.sendResultToSlack( start,  prop[ "manualRun" ], prop[ "WikiPrefix" ] )
diff --git a/TestON/JenkinsFile/FabricJenkinsfileTrigger b/TestON/JenkinsFile/FabricJenkinsfileTrigger
index da75805..ef805a9 100644
--- a/TestON/JenkinsFile/FabricJenkinsfileTrigger
+++ b/TestON/JenkinsFile/FabricJenkinsfileTrigger
@@ -1,9 +1,11 @@
 #!groovy
 
-funcs = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsCommonFuncs.groovy' )
-test_lists = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsTestONTests.groovy' )
-triggerFuncs = evaluate readTrusted( 'TestON/JenkinsFile/TriggerFuncs.groovy' )
+funcs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy' )
+test_lists = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsTestONTests.groovy' )
+triggerFuncs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/TriggerFuncs.groovy' )
+fileRelated = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsPathAndFiles.groovy' )
 
+fileRelated.init()
 current_version = "master"
 previous_version = "1.13"
 before_previous_version = "1.12"
@@ -53,9 +55,9 @@
 FUNC_choices = ""
 HA_choices = ""
 SR_choices = ""
-stat_graph_generator_file = "testCategoryBuildStats.R"
-pie_graph_generator_file = "testCategoryPiePassFail.R"
-graph_saved_directory = "/var/jenkins/workspace/postjob-Fabric/"
+stat_graph_generator_file = fileRelated.histogramMultiple
+pie_graph_generator_file = fileRelated.pieMultiple
+graph_saved_directory = fileRelated.jenkinsWorkspace + "postjob-Fabric/"
 
 post_result = params.PostResult
 if( !manually_run ){
diff --git a/TestON/JenkinsFile/HAJenkinsFile b/TestON/JenkinsFile/HAJenkinsFile
index a03b71e..7a0638d 100644
--- a/TestON/JenkinsFile/HAJenkinsFile
+++ b/TestON/JenkinsFile/HAJenkinsFile
@@ -1,15 +1,17 @@
 #!groovy
-funcs = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsCommonFuncs.groovy' )
-test_lists = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsTestONTests.groovy' )
+funcs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy' )
+test_lists = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsTestONTests.groovy' )
+fileRelated = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsPathAndFiles.groovy' )
 
+fileRelated.init()
 funcs.initialize( "HA" );
 // This is a Jenkinsfile for a scripted pipeline for the HA tests
 def prop = null
 prop = funcs.getProperties()
 HA = test_lists.getAllTheTests( prop[ "WikiPrefix" ] )[ "HA" ]
 
-graph_generator_file = "~/OnosSystemTest/TestON/JenkinsFile/scripts/testCaseGraphGenerator.R"
-graph_saved_directory = "/var/jenkins/workspace/postjob-VM/"
+graph_generator_file = fileRelated.trendIndividual
+graph_saved_directory = fileRelated.jenkinsWorkspace + "postjob-VM/"
 
 echo( "Testcases:" )
 def testsToRun = null
diff --git a/TestON/JenkinsFile/JenkinsfileTrigger b/TestON/JenkinsFile/JenkinsfileTrigger
index d744a67..6625355 100644
--- a/TestON/JenkinsFile/JenkinsfileTrigger
+++ b/TestON/JenkinsFile/JenkinsfileTrigger
@@ -1,5 +1,5 @@
 #!groovy
-funcs = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsCommonFuncs.groovy' )
+funcs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy' )
 
 def now = funcs.getCurrentTime()
 print now.toString()
diff --git a/TestON/JenkinsFile/Overall_Graph_Generator b/TestON/JenkinsFile/Overall_Graph_Generator
index ba34a89..f08f18a 100644
--- a/TestON/JenkinsFile/Overall_Graph_Generator
+++ b/TestON/JenkinsFile/Overall_Graph_Generator
@@ -1,10 +1,12 @@
 #!groovy
-funcs = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsCommonFuncs.groovy' )
-test_lists = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsTestONTests.groovy' )
+funcs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy' )
+test_lists = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsTestONTests.groovy' )
+fileRelated = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsPathAndFiles.groovy' )
 
-stat_graph_generator_file = "testCategoryBuildStats.R"
-pie_graph_generator_file = "testCategoryPiePassFail.R"
-graph_saved_directory = "/var/jenkins/workspace/postjob-VM/"
+fileRelated.init()
+stat_graph_generator_file = fileRelated.histogramMultiple
+pie_graph_generator_file = fileRelated.pieMultiple
+graph_saved_directory = fileRelated.jenkinsWorkspace + "postjob-VM/"
 
 funcs.initializeTrend( "VM" )
 
@@ -16,4 +18,4 @@
                          AllTheTests,
                          stat_graph_generator_file,
                          pie_graph_generator_file,
-                         graph_saved_directory )
\ No newline at end of file
+                         graph_saved_directory )
diff --git a/TestON/JenkinsFile/SCPFJenkinsFile b/TestON/JenkinsFile/SCPFJenkinsFile
index 741f353..5f039b5 100644
--- a/TestON/JenkinsFile/SCPFJenkinsFile
+++ b/TestON/JenkinsFile/SCPFJenkinsFile
@@ -1,7 +1,7 @@
 #!groovy
-SCPFfuncs = evaluate readTrusted( 'TestON/JenkinsFile/PerformanceFuncs.groovy' )
+SCPFfuncs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/PerformanceFuncs.groovy' )
 SCPFfuncs.init()
-funcs = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsCommonFuncs.groovy' )
+funcs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy' )
 funcs.initialize( "SCPF", SCPFfuncs );
 // This is a Jenkinsfile for a scripted pipeline for the SCPF tests
 def prop = null
diff --git a/TestON/JenkinsFile/SCPF_Graph_Generator b/TestON/JenkinsFile/SCPF_Graph_Generator
index 679ccd4..938faf8 100644
--- a/TestON/JenkinsFile/SCPF_Graph_Generator
+++ b/TestON/JenkinsFile/SCPF_Graph_Generator
@@ -1,7 +1,7 @@
 #!groovy
-SCPFfuncs = evaluate readTrusted( 'TestON/JenkinsFile/PerformanceFuncs.groovy' )
+SCPFfuncs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/PerformanceFuncs.groovy' )
 SCPFfuncs.init()
-funcs = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsCommonFuncs.groovy' )
+funcs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy' )
 funcs.initialize( "SCPF", SCPFfuncs );
 
 def prop = null
@@ -25,4 +25,4 @@
 
 for ( test in tests.keySet() ){
     tests[ test ].call()
-}
\ No newline at end of file
+}
diff --git a/TestON/JenkinsFile/SRJenkinsFile b/TestON/JenkinsFile/SRJenkinsFile
index a583774..c9c00e5 100644
--- a/TestON/JenkinsFile/SRJenkinsFile
+++ b/TestON/JenkinsFile/SRJenkinsFile
@@ -1,7 +1,9 @@
 #!groovy
-funcs = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsCommonFuncs.groovy' )
-test_lists = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsTestONTests.groovy' )
+funcs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy' )
+test_lists = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsTestONTests.groovy' )
+fileRelated = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsPathAndFiles.groovy' )
 
+fileRelated.init()
 funcs.initialize( "SR" );
 jobName = env.JOB_NAME
 funcs.additionalInitForSR( jobName )
@@ -10,8 +12,8 @@
 prop = funcs.getProperties()
 SR = test_lists.getAllTheTests( prop[ "WikiPrefix" ] )[ "SR" ]
 
-graph_generator_file = "~/OnosSystemTest/TestON/JenkinsFile/scripts/testCaseGraphGenerator.R"
-graph_saved_directory = "/var/jenkins/workspace/postjob-Fabric" + funcs.fabricOn( prop[ "ONOSBranch" ] ) + "/"
+graph_generator_file = fileRelated.trendIndividual
+graph_saved_directory = fileRelated.jenkinsWorkspace + "postjob-Fabric" + funcs.fabricOn( prop[ "ONOSBranch" ] ) + "/"
 
 echo( "Testcases:" )
 def testsToRun = null
diff --git a/TestON/JenkinsFile/Trend_Graph_Generator b/TestON/JenkinsFile/Trend_Graph_Generator
index 5f3ccfd..3430b40 100644
--- a/TestON/JenkinsFile/Trend_Graph_Generator
+++ b/TestON/JenkinsFile/Trend_Graph_Generator
@@ -1,5 +1,8 @@
 #!groovy
-funcs = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsCommonFuncs.groovy' )
+funcs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy' )
+fileRelated = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsPathAndFiles.groovy' )
+
+fileRelated.init()
 nodeCluster = params.NodeCluster
 
 funcs.initializeTrend( nodeCluster );
@@ -12,8 +15,8 @@
 prop[ "ONOSBranch" ] = params.ONOSbranch
 
 
-graph_generator_file = "~/OnosSystemTest/TestON/JenkinsFile/scripts/testCaseGraphGenerator.R"
-graph_saved_directory = "/var/jenkins/workspace/postjob-" + nodeCluster + ( nodeCluster == "Fabric" ? funcs.fabricOn( prop[ "ONOSBranch" ] ) : "" ) + "/"
+graph_generator_file = fileRelated.trendIndividual
+graph_saved_directory = fileRelated.jenkinsWorkspace + "postjob-" + nodeCluster + ( nodeCluster == "Fabric" ? funcs.fabricOn( prop[ "ONOSBranch" ] ) : "" ) + "/"
 
 def testsToRun = null
 testsToRun = funcs.getTestsToRun( Tests )
diff --git a/TestON/JenkinsFile/USECASEJenkinsFile b/TestON/JenkinsFile/USECASEJenkinsFile
index 34abfa9..6493914 100644
--- a/TestON/JenkinsFile/USECASEJenkinsFile
+++ b/TestON/JenkinsFile/USECASEJenkinsFile
@@ -1,15 +1,17 @@
 #!groovy
-funcs = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsCommonFuncs.groovy' )
-test_lists = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsTestONTests.groovy' )
+funcs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy' )
+test_lists = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsTestONTests.groovy' )
+fileRelated = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsPathAndFiles.groovy' )
 
+fileRelated.init()
 funcs.initialize( "USECASE" );
 // This is a Jenkinsfile for a scripted pipeline for the USECASE tests
 def prop = null
 prop = funcs.getProperties()
 USECASE = test_lists.getAllTheTests( prop[ "WikiPrefix" ] )[ "USECASE" ]
 
-graph_generator_file = "~/OnosSystemTest/TestON/JenkinsFile/scripts/testCaseGraphGenerator.R"
-graph_saved_directory = "/var/jenkins/workspace/postjob-BM/"
+graph_generator_file = fileRelated.trendIndividual
+graph_saved_directory = fileRelated.jenkinsWorkspace + "postjob-BM/"
 
 echo( "Testcases:" )
 def testsToRun = null
@@ -29,4 +31,4 @@
     tests[ test ].call()
 }
 funcs.sendResultToSlack( start,  prop[ "manualRun" ], prop[ "WikiPrefix" ] )
-funcs.generateOverallGraph( prop, USECASE, graph_saved_directory )
\ No newline at end of file
+funcs.generateOverallGraph( prop, USECASE, graph_saved_directory )
diff --git a/TestON/JenkinsFile/VM_BMJenkinsfileTrigger b/TestON/JenkinsFile/VM_BMJenkinsfileTrigger
index 3d03048..119b427 100644
--- a/TestON/JenkinsFile/VM_BMJenkinsfileTrigger
+++ b/TestON/JenkinsFile/VM_BMJenkinsfileTrigger
@@ -1,9 +1,11 @@
 #!groovy
 
-funcs = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsCommonFuncs.groovy' )
-test_lists = evaluate readTrusted( 'TestON/JenkinsFile/JenkinsTestONTests.groovy' )
-triggerFuncs = evaluate readTrusted( 'TestON/JenkinsFile/TriggerFuncs.groovy' )
+funcs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy' )
+test_lists = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsTestONTests.groovy' )
+triggerFuncs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/TriggerFuncs.groovy' )
+fileRelated = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsPathAndFiles.groovy' )
 
+fileRelated.init()
 current_version = "master"
 previous_version = "1.13"
 before_previous_version = "1.12"
@@ -56,9 +58,9 @@
 FUNC_choices = ""
 HA_choices = ""
 SR_choices = ""
-stat_graph_generator_file = "testCategoryBuildStats.R"
-pie_graph_generator_file = "testCategoryPiePassFail.R"
-graph_saved_directory = "/var/jenkins/workspace/postjob-VM/"
+stat_graph_generator_file = fileRelated.histogramMultiple
+pie_graph_generator_file = fileRelated.pieMultiple
+graph_saved_directory = fileRelated.jenkinsWorkspace + "postjob-VM/"
 
 post_result = params.PostResult
 if( !manually_run ){
@@ -381,7 +383,7 @@
 }
 def postToWiki( contents ){
     node( testMachine ){
-        workspace = "/var/jenkins/workspace/all-pipeline-trigger/"
+        workspace = fileRelated.jenkinsWorkspace + "all-pipeline-trigger/"
         filename = "jenkinsSchedule.txt"
         writeFile file: workspace + filename, text: contents
         funcs.publishToConfluence( "false", "true",
diff --git a/TestON/JenkinsFile/GeneralFuncs.groovy b/TestON/JenkinsFile/dependencies/GeneralFuncs.groovy
similarity index 85%
rename from TestON/JenkinsFile/GeneralFuncs.groovy
rename to TestON/JenkinsFile/dependencies/GeneralFuncs.groovy
index 70b0fe0..a0c70c9 100644
--- a/TestON/JenkinsFile/GeneralFuncs.groovy
+++ b/TestON/JenkinsFile/dependencies/GeneralFuncs.groovy
@@ -6,13 +6,10 @@
 def basicGraphPart( rFileName, host, port, user, pass, subject, branchName ){
   return " Rscript " + rFileName + " " + host + " " + port + " " + user + " " + pass + " " + subject + " " + branchName
 }
-def initBasicVars(){
-  rScriptLocation = "~/OnosSystemTest/TestON/JenkinsFile/scripts/"
-}
 def getTestList( tests ){
     list = ""
     for( String test : tests.keySet() )
         list += test + ","
     return list[ 0..-2 ]
 }
-return this;
\ No newline at end of file
+return this;
diff --git a/TestON/JenkinsFile/JenkinsCommonFuncs.groovy b/TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy
similarity index 94%
rename from TestON/JenkinsFile/JenkinsCommonFuncs.groovy
rename to TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy
index fd7253b..8c480d3 100644
--- a/TestON/JenkinsFile/JenkinsCommonFuncs.groovy
+++ b/TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy
@@ -1,6 +1,9 @@
 #!groovy
 import groovy.time.*
-generalFuncs = evaluate readTrusted( 'TestON/JenkinsFile/GeneralFuncs.groovy' )
+generalFuncs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/GeneralFuncs.groovy' )
+fileRelated = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsPathAndFiles.groovy' )
+
+fileRelated.init()
 
 def initializeTrend( machine ){
   table_name = "executed_test_tests"
@@ -9,7 +12,6 @@
   this.machine = machine
   isSCPF = false
   isTrend = true
-  generalFuncs.initBasicVars();
 }
 def initialize( type, SCPFfuncs ){
   init( type )
@@ -22,8 +24,8 @@
   SCPFfunc = null
   table_name = "executed_test_tests"
   result_name = "executed_test_results"
-  trend_generator_file = generalFuncs.rScriptLocation + "testCategoryTrend.R"
-  build_stats_generator_file = generalFuncs.rScriptLocation + "testCategoryBuildStats.R"
+  trend_generator_file = fileRelated.trendMultiple
+  build_stats_generator_file = fileRelated.histogramMultiple
   isSCPF = false
 }
 def init( type ){
@@ -35,7 +37,6 @@
   testType = type;
   testMachine = "TestStation-" + machineType[ type ] + "s";
   isTrend = false
-  generalFuncs.initBasicVars();
 }
 def additionalInitForSR( branch ){
   testMachine = ( ( new StringBuilder( testMachine ) ).insert( testMachine.size()-1, fabricOn( branch ) ) ).toString()
@@ -297,9 +298,9 @@
           string( credentialsId: 'db_host', variable: 'host' ),
           string( credentialsId: 'db_port', variable: 'port' ) ] ) {
               sh '''#!/bin/bash
-              ''' + generalFuncs.basicGraphPart( generalFuncs.rScriptLocation + stat_file, host, port, user, pass, type, branch ) + " \"" + testListPart + "\" latest " + save_path + '''
-              ''' + getOverallPieGraph( generalFuncs.rScriptLocation + pie_file, host, port, user, pass, branch, type, pieTestListPart, 'y', save_path ) + '''
-              ''' + getOverallPieGraph( generalFuncs.rScriptLocation + pie_file, host, port, user, pass, branch, type, pieTestListPart, 'n', save_path )
+              ''' + generalFuncs.basicGraphPart( stat_file, host, port, user, pass, type, branch ) + " \"" + testListPart + "\" latest " + save_path + '''
+              ''' + getOverallPieGraph( pie_file, host, port, user, pass, branch, type, pieTestListPart, 'y', save_path ) + '''
+              ''' + getOverallPieGraph( pie_file, host, port, user, pass, branch, type, pieTestListPart, 'n', save_path )
           }
         }
       postResult( [], true )
diff --git a/TestON/JenkinsFile/dependencies/JenkinsPathAndFiles.groovy b/TestON/JenkinsFile/dependencies/JenkinsPathAndFiles.groovy
new file mode 100644
index 0000000..fc89730
--- /dev/null
+++ b/TestON/JenkinsFile/dependencies/JenkinsPathAndFiles.groovy
@@ -0,0 +1,23 @@
+#!groovy
+
+def initLocation(){
+    jenkinsFolder = "~/OnosSystemTest/TestON/JenkinsFile/"
+    rScriptLocation = jenkinsFolder + "wikiGraphRScripts/"
+    jenkinsWorkspace = "/var/jenkins/workspace/"
+    SCPFSpecificLocation = rScriptLocation + "SCPFspecificGraphRScripts/"
+    CHOScriptDir = "~/CHO_Jenkins_Scripts/"
+}
+def initFiles(){
+    trendIndividual = rScriptLocation + "trendIndividualTest.R"
+    trendMultiple = rScriptLocation + "trendMultipleTests.R"
+    trendSCPF = rScriptLocation + "trendSCPF.R"
+    trendCHO = rScriptLocation + "trendCHO.R"
+    histogramMultiple = rScriptLocation + "histogramMultipleTestGroups.R"
+    pieMultiple = rScriptLocation + "pieMultipleTests.R"
+}
+def init(){
+    initLocation()
+    initFiles()
+}
+return this;
+
diff --git a/TestON/JenkinsFile/JenkinsTestONTests.groovy b/TestON/JenkinsFile/dependencies/JenkinsTestONTests.groovy
similarity index 100%
rename from TestON/JenkinsFile/JenkinsTestONTests.groovy
rename to TestON/JenkinsFile/dependencies/JenkinsTestONTests.groovy
diff --git a/TestON/JenkinsFile/PerformanceFuncs.groovy b/TestON/JenkinsFile/dependencies/PerformanceFuncs.groovy
similarity index 94%
rename from TestON/JenkinsFile/PerformanceFuncs.groovy
rename to TestON/JenkinsFile/dependencies/PerformanceFuncs.groovy
index 5077bd9..a759051 100644
--- a/TestON/JenkinsFile/PerformanceFuncs.groovy
+++ b/TestON/JenkinsFile/dependencies/PerformanceFuncs.groovy
@@ -1,5 +1,7 @@
 #!groovy
-//generalFuncs = evaluate readTrusted( 'TestON/JenkinsFile/GeneralFuncs.groovy' )
+fileRelated = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsPathAndFiles.groovy' )
+
+fileRelated.init()
 def init(){
     none = [ "" ]
     batches = [ 1, 100, 1000 ]
@@ -24,7 +26,7 @@
         SCPFintentInstallWithdrawLatWithFlowObj: [ flows:true, test:'SCPFintentInstallWithdrawLat --params TEST/flowObj=True', table:'intent_latency_fobj_tests', results:'intent_latency_fobj_results', file:'IntentInstallWithdrawLatDBWFO', rFile:'SCPFIntentInstallWithdrawRerouteLat.R y', extra:batches, finalResult:0 ],
         SCPFmastershipFailoverLat:               [ flows:false, test:'SCPFmastershipFailoverLat', table:'mastership_failover_tests', results:'mastership_failover_results', file:'mastershipFailoverLatDB', rFile:'SCPFmastershipFailoverLat.R', extra:none, finalResult:1, graphTitle:[ 'Mastership Failover Test' ], dbCols:[ 'kill_deact_avg,deact_role_avg' ], dbWhere:'AND scale=5', y_axis:'Latency (ms)' ]
     ]
-    graph_saved_directory = "/var/jenkins/workspace/postjob-BM/"
+    graph_saved_directory = fileRelated.jenkinsWorkspace + "postjob-BM/"
 }
 def getGraphCommand( rFileName, extras, host, port, user, pass, testName, branchName, isOldFlow ){
     result = ""
@@ -35,14 +37,14 @@
 }
 def generateGraph( rFileName, batch, host, port, user, pass, testName, branchName, isOldFlow ){
 
-    return generalFuncs.basicGraphPart( generalFuncs.rScriptLocation + rFileName, host, port, user, pass, testName, branchName ) +
+    return generalFuncs.basicGraphPart( fileRelated.SCPFSpecificLocation + rFileName, host, port, user, pass, testName, branchName ) +
            " " + batch + " " + usingOldFlow( isOldFlow, testName ) + graph_saved_directory
 }
 def generateCombinedResultGraph( host, port, user, pass, testName, branchName, isOldFlow ){
     result = ""
 
     for ( int i=0; i< SCPF[ testName ][ 'graphTitle' ].size(); i++ ){
-        result += generalFuncs.basicGraphPart( generalFuncs.rScriptLocation + "SCPFLineGraph.R", host, port, user, pass, "\"" + SCPF[ testName ][ 'graphTitle' ][ i ] + "\"", branchName ) +
+        result += generalFuncs.basicGraphPart(  fileRelated.trendSCPF, host, port, user, pass, "\"" + SCPF[ testName ][ 'graphTitle' ][ i ] + "\"", branchName ) +
         " " + 50 + " \"SELECT " + checkIfList( testName, 'dbCols', i ) + ", build FROM " + SCPF[ testName ][ 'table' ] + " WHERE  branch=\'" + branchName + "\' " + sqlOldFlow( isOldFlow, testName ) +
         checkIfList( testName, 'dbWhere', i ) + " ORDER BY date DESC LIMIT 50\" \"" + SCPF[ testName ][ 'y_axis' ] + "\" " + hasOldFlow( isOldFlow, testName ) + graph_saved_directory + ";"
     }
diff --git a/TestON/JenkinsFile/TriggerFuncs.groovy b/TestON/JenkinsFile/dependencies/TriggerFuncs.groovy
similarity index 100%
rename from TestON/JenkinsFile/TriggerFuncs.groovy
rename to TestON/JenkinsFile/dependencies/TriggerFuncs.groovy
diff --git a/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFbatchFlowResp.R b/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFbatchFlowResp.R
index 0b68425..66dc505 100644
--- a/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFbatchFlowResp.R
+++ b/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFbatchFlowResp.R
@@ -47,10 +47,10 @@
 library( ggplot2 )
 library( reshape2 )
 library( RPostgreSQL )    # For databases
-source( "dependencies/saveGraph.R" )
-source( "dependencies/fundamentalGraphData.R" )
-source( "dependencies/initSQL.R" )
-source( "dependencies/cliArgs.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/saveGraph.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/initSQL.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/cliArgs.R" )
 
 # -------------------
 # Check CLI Arguments
diff --git a/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFcbench.R b/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFcbench.R
index 871000f..7e8e8c2 100644
--- a/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFcbench.R
+++ b/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFcbench.R
@@ -43,10 +43,10 @@
 library( ggplot2 )
 library( reshape2 )
 library( RPostgreSQL )    # For databases
-source( "dependencies/saveGraph.R" )
-source( "dependencies/fundamentalGraphData.R" )
-source( "dependencies/initSQL.R" )
-source( "dependencies/cliArgs.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/saveGraph.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/initSQL.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/cliArgs.R" )
 
 # -------------------
 # Check CLI Arguments
diff --git a/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFhostLat.R b/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFhostLat.R
index c4c30b2..b34010a 100644
--- a/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFhostLat.R
+++ b/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFhostLat.R
@@ -42,10 +42,10 @@
 library( ggplot2 )
 library( reshape2 )
 library( RPostgreSQL )    # For databases
-source( "dependencies/saveGraph.R" )
-source( "dependencies/fundamentalGraphData.R" )
-source( "dependencies/initSQL.R" )
-source( "dependencies/cliArgs.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/saveGraph.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/initSQL.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/cliArgs.R" )
 
 # -------------------
 # Check CLI Arguments
diff --git a/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFmastershipFailoverLat.R b/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFmastershipFailoverLat.R
index 2525009..c6e3503 100644
--- a/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFmastershipFailoverLat.R
+++ b/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFmastershipFailoverLat.R
@@ -43,10 +43,10 @@
 library( ggplot2 )
 library( reshape2 )
 library( RPostgreSQL )    # For databases
-source( "dependencies/saveGraph.R" )
-source( "dependencies/fundamentalGraphData.R" )
-source( "dependencies/initSQL.R" )
-source( "dependencies/cliArgs.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/saveGraph.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/initSQL.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/cliArgs.R" )
 
 # -------------------
 # Check CLI Arguments
diff --git a/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFportLat.R b/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFportLat.R
index 70d6607..dd3d95d 100644
--- a/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFportLat.R
+++ b/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFportLat.R
@@ -43,10 +43,10 @@
 library( ggplot2 )
 library( reshape2 )
 library( RPostgreSQL )    # For databases
-source( "dependencies/saveGraph.R" )
-source( "dependencies/fundamentalGraphData.R" )
-source( "dependencies/initSQL.R" )
-source( "dependencies/cliArgs.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/saveGraph.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/initSQL.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/cliArgs.R" )
 
 # -------------------
 # Check CLI Arguments
diff --git a/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFscaleTopo.R b/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFscaleTopo.R
index 2afe86e..0a03b3a 100644
--- a/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFscaleTopo.R
+++ b/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFscaleTopo.R
@@ -43,10 +43,10 @@
 library( ggplot2 )
 library( reshape2 )
 library( RPostgreSQL )    # For databases
-source( "dependencies/saveGraph.R" )
-source( "dependencies/fundamentalGraphData.R" )
-source( "dependencies/initSQL.R" )
-source( "dependencies/cliArgs.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/saveGraph.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/initSQL.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/cliArgs.R" )
 
 # -------------------
 # Check CLI Arguments
diff --git a/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFswitchLat.R b/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFswitchLat.R
index 192ac8f..8082c4a 100644
--- a/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFswitchLat.R
+++ b/TestON/JenkinsFile/wikiGraphRScripts/SCPFspecificGraphRScripts/SCPFswitchLat.R
@@ -43,10 +43,10 @@
 library( ggplot2 )
 library( reshape2 )
 library( RPostgreSQL )    # For databases
-source( "dependencies/saveGraph.R" )
-source( "dependencies/fundamentalGraphData.R" )
-source( "dependencies/initSQL.R" )
-source( "dependencies/cliArgs.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/saveGraph.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/initSQL.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/cliArgs.R" )
 
 # -------------------
 # Check CLI Arguments
diff --git a/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R b/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R
index e2c4ed8..820c538 100644
--- a/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R
+++ b/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R
@@ -37,14 +37,18 @@
             blue = "#0033FF",
             light_blue = "#3399FF",
             black = "#111111",
-            yellow = "#EEB600",
+            yellow = "#CCCC00",
             purple = "#9900FF",
             gray = "#CCCCCC",
-            darkerGray = "#666666" )
+            darkerGray = "#666666",
+            orange = "#FF9900",
+            magenta = "#FF00FF",
+            brown = "#993300"
+    )
 }
 
-wrapLegend <- function(){
-    guides( color = guide_legend( nrow = 2, byrow = TRUE ) )
+wrapLegend <- function( byrow=TRUE ){
+    guides( color = guide_legend( nrow = 2, byrow = byrow ) )
 }
 
 lastUpdatedLabel <- function(){
diff --git a/TestON/JenkinsFile/wikiGraphRScripts/histogramMultipleTestGroups.R b/TestON/JenkinsFile/wikiGraphRScripts/histogramMultipleTestGroups.R
index 0143071..78c3fe0 100644
--- a/TestON/JenkinsFile/wikiGraphRScripts/histogramMultipleTestGroups.R
+++ b/TestON/JenkinsFile/wikiGraphRScripts/histogramMultipleTestGroups.R
@@ -45,10 +45,10 @@
 library( ggplot2 )
 library( reshape2 )
 library( RPostgreSQL )
-source( "dependencies/saveGraph.R" )
-source( "dependencies/fundamentalGraphData.R" )
-source( "dependencies/initSQL.R" )
-source( "dependencies/cliArgs.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/saveGraph.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/initSQL.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/cliArgs.R" )
 
 # -------------------
 # Check CLI Arguments
diff --git a/TestON/JenkinsFile/wikiGraphRScripts/pieMultipleTests.R b/TestON/JenkinsFile/wikiGraphRScripts/pieMultipleTests.R
index a9a1cd4..46f671f 100644
--- a/TestON/JenkinsFile/wikiGraphRScripts/pieMultipleTests.R
+++ b/TestON/JenkinsFile/wikiGraphRScripts/pieMultipleTests.R
@@ -46,10 +46,10 @@
 library( ggplot2 )
 library( reshape2 )
 library( RPostgreSQL )
-source( "dependencies/saveGraph.R" )
-source( "dependencies/fundamentalGraphData.R" )
-source( "dependencies/initSQL.R" )
-source( "dependencies/cliArgs.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/saveGraph.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/initSQL.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/cliArgs.R" )
 
 # -------------------
 # Check CLI Arguments
diff --git a/TestON/JenkinsFile/wikiGraphRScripts/trendCHO.R b/TestON/JenkinsFile/wikiGraphRScripts/trendCHO.R
new file mode 100644
index 0000000..32b11e7
--- /dev/null
+++ b/TestON/JenkinsFile/wikiGraphRScripts/trendCHO.R
@@ -0,0 +1,558 @@
+# Copyright 2017 Open Networking Foundation (ONF)
+#
+# Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+# the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+# or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
+#
+#     TestON is free software: you can redistribute it and/or modify
+#     it under the terms of the GNU General Public License as published by
+#     the Free Software Foundation, either version 2 of the License, or
+#     (at your option) any later version.
+#
+#     TestON is distributed in the hope that it will be useful,
+#     but WITHOUT ANY WARRANTY; without even the implied warranty of
+#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#     GNU General Public License for more details.
+#
+#     You should have received a copy of the GNU General Public License
+#     along with TestON.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Example script:
+# Rscript trendCHO event.csv failure.csv error.csv master 60 /path/to/save/directory/
+
+# **********************************************************
+# STEP 1: Data management.
+# **********************************************************
+
+print( "**********************************************************" )
+print( "STEP 1: Data management." )
+print( "**********************************************************" )
+
+# Command line arguments are read. Args include the database credentials, test name, branch name, and the directory to output files.
+print( "Reading commmand-line args." )
+args <- commandArgs( trailingOnly=TRUE )
+
+
+limitToDisplayIndividually <- 37    # must be less than this number to display individually
+
+event_input_file <- 1
+failure_input_file <- 2
+error_input_file <- 3
+branch_name <- 4
+time_quantum <- 5
+maxDataToDisplayParam <- 6             # the maximum amount of data to display on the graph. Last data point is most recent
+save_directory <- 7
+
+# ----------------
+# Import Libraries
+# ----------------
+
+print( "Importing libraries." )
+library( ggplot2 )
+library( reshape2 )
+library( RPostgreSQL )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/saveGraph.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R" )
+
+# -------------------
+# Check CLI Arguments
+# -------------------
+
+print( "Verifying CLI args." )
+
+if ( length( args ) != save_directory ){
+    print( "Usage: Rscript trendCHO.R <events-input-file> <failures-input-file> <errors-input-file> <branch-name> <time_quantum> <max-data-to-display> <directory-to-save-graph>" )
+    quit( status = 1 )
+}
+
+# ----------------------
+# Read From File: Events
+# ----------------------
+
+print( "Reading from file for 'events' input." )
+
+event_fileData <- read.delim2( args[ event_input_file ],
+                               header = TRUE,
+                               sep = ",",
+                               dec = "." )
+print( "Event File Data:" )
+print( event_fileData )
+
+# ------------------------
+# Read From File: Failures
+# ------------------------
+
+print( "Reading from file for 'failure' input." )
+
+failure_fileData <- read.delim2( args[ failure_input_file ],
+                                 header = TRUE,
+                                 sep = ",",
+                                 dec = "." )
+print( "Failure File Data:" )
+print( failure_fileData )
+
+# ----------------------
+# Read From File: Errors
+# ----------------------
+
+print( "Reading from file for 'errors' input." )
+
+error_fileData <- read.delim2( args[ error_input_file ],
+                               header = TRUE,
+                               sep = ",",
+                               dec = "." )
+print( "Error File Data:" )
+print( error_fileData )
+
+# -------------------------------
+# Create Title and Graph Filename
+# -------------------------------
+
+print( "Creating titles of graphs." )
+
+failedChecksTitle <- paste( "Failed Checks - ",
+                            args[ branch_name ],
+                            "\nFrequency per ",
+                            args[ time_quantum ],
+                            " Minutes - Last ",
+                            args[ maxDataToDisplayParam ],
+                            " Hours",
+                            sep="" )
+
+eventsTitle <- paste( "Network, Application, and ONOS Events - ",
+                      args[ branch_name ],
+                      "\nFrequency per ",
+                      args[ time_quantum ],
+                      " Minutes - Last ",
+                      args[ maxDataToDisplayParam ],
+                      " Hours",
+                      sep="" )
+
+errorsTitle <- paste( "Warnings, Errors, and Exceptions from Logs - ",
+                      args[ branch_name ],
+                      "\nFrequency per ",
+                      args[ time_quantum ],
+                      " Minutes - Last ",
+                      args[ maxDataToDisplayParam ],
+                      " Hours",
+                      sep="" )
+
+print( "Creating graph filenames." )
+
+failedChecksFilename <- paste( args[ save_directory ],
+                            "CHO_Failure-Check_",
+                            args[ branch_name ],
+                            "_",
+                            args[ maxDataToDisplayParam ],
+                            "-maxData_graph.jpg",
+                            sep="" )
+
+eventsFilename <- paste( args[ save_directory ],
+                         "CHO_Events_",
+                         args[ branch_name ],
+                         "_",
+                         args[ maxDataToDisplayParam ],
+                         "-maxData_graph.jpg",
+                         sep="" )
+
+errorsFilename <- paste( args[ save_directory ],
+                         "CHO_Errors_",
+                         args[ branch_name ],
+                         "_",
+                         args[ maxDataToDisplayParam ],
+                         "-maxData_graph.jpg",
+                         sep="" )
+
+# **********************************************************
+# STEP 2: Organize data.
+# **********************************************************
+
+print( "**********************************************************" )
+print( "STEP 2: Organize Data." )
+print( "**********************************************************" )
+
+# -------------------------------------------------------
+# Verifying all required columns are present.
+# -------------------------------------------------------
+
+# ------------------
+# Verifying 'Events'
+# ------------------
+
+print( "Verifying all required columns are present for 'events'." )
+
+requiredColumns <- c( "Link.Down",
+                      "Link.Up",
+                      "Device.Down",
+                      "Device.Up",
+                      "Add.Host.Intent",
+                      "Delete.Host.Intent",
+                      "Add.Point.Intent",
+                      "Delete.Point.Intent",
+                      "ONOS.Down",
+                      "ONOS.Up" )
+
+tryCatch( eventsCombined <- c( event_fileData[ requiredColumns] ),
+          error = function( e ) {
+              print( "[ERROR] One or more expected columns are missing from 'events'. Please check that the data and file are valid, then try again." )
+              print( "Required columns: " )
+              print( requiredColumns )
+              print( "Actual columns: " )
+              print( names( event_fileData ) )
+              print( "Error dump:" )
+              print( e )
+              quit( status = 1 )
+          }
+         )
+
+# --------------------
+# Verifying 'Failures'
+# --------------------
+
+print( "Verifying all required columns are present for 'failures'." )
+
+requiredColumns <- c( "Intent.Check.Failure",
+                      "Flow.Check.Failure",
+                      "Traffic.Check.Failure",
+                      "Topo.Check.Failure",
+                      "ONOS.Check.Failure" )
+
+tryCatch( failureCombined <- c( failure_fileData[ requiredColumns] ),
+          error = function( e ) {
+              print( "[ERROR] One or more expected columns are missing from 'failures'. Please check that the data and file are valid, then try again." )
+              print( "Required columns: " )
+              print( requiredColumns )
+              print( "Actual columns: " )
+              print( names( failure_fileData ) )
+              print( "Error dump:" )
+              print( e )
+              quit( status = 1 )
+          }
+         )
+
+# ------------------
+# Verifying 'Errors'
+# ------------------
+
+print( "Verifying all required columns are present for 'errors'." )
+
+requiredColumns <- c( "Test.Warnings",
+                      "ONOS.Warnings",
+                      "ONOS.Errors",
+                      "Exceptions" )
+
+tryCatch( errorCombined <- c( error_fileData[ requiredColumns] ),
+          error = function( e ) {
+              print( "[ERROR] One or more expected columns are missing from 'errors'. Please check that the data and file are valid, then try again." )
+              print( "Required columns: " )
+              print( requiredColumns )
+              print( "Actual columns: " )
+              print( names( error_fileData ) )
+              print( "Error dump:" )
+              print( e )
+              quit( status = 1 )
+          }
+         )
+
+# -------------------------------
+# Create Events Data Frame
+# -------------------------------
+
+maxDataToDisplay <- strtoi( args[ maxDataToDisplayParam ] )
+
+# -------------------
+# 'Events' Data Frame
+# -------------------
+
+print( "Constructing data frame for 'events'." )
+
+events_dataFrame <- melt( eventsCombined )
+
+# Rename column names in events_dataFrame
+colnames( events_dataFrame ) <- c( "Events",
+                            "Type" )
+
+# Format data frame so that the data is in the same order as it appeared in the file.
+events_dataFrame$Type <- as.character( events_dataFrame$Type )
+events_dataFrame$Type <- factor( events_dataFrame$Type, levels = unique( events_dataFrame$Type ) )
+
+events_dataFrame$timeStamps <- rev( gsub('^(.{11})(.*)$', '\\1\n\\2', event_fileData$Time ) )
+
+# Adding a temporary reversed iterative list to the events_dataFrame so that there are no gaps in-between build numbers.
+events_dataFrame$iterative <- rev( seq( 1, nrow( event_fileData ), by = 1 ) )
+
+# Omit any data that doesn't exist
+events_dataFrame <- na.omit( events_dataFrame )
+
+
+dataLength <- nrow( event_fileData )
+moduloFactor <- floor( dataLength / limitToDisplayIndividually ) + 1
+
+if ( dataLength > maxDataToDisplay ){
+    events_dataFrame <- events_dataFrame[ events_dataFrame$iterative >= dataLength - maxDataToDisplay, ]
+}
+
+if ( moduloFactor > 1 ){
+    events_dataFrame[ events_dataFrame$iterative %% moduloFactor != dataLength %% moduloFactor, ]$timeStamps <- ""
+}
+
+print( "'Events' Data Frame Results:" )
+print( events_dataFrame )
+
+# ---------------------
+# 'Failures' Data Frame
+# ---------------------
+
+print( "Constructing data frame for 'failures'." )
+
+failures_dataFrame <- melt( failureCombined )
+
+# Rename column names in failures_dataFrame
+colnames( failures_dataFrame ) <- c( "Failures",
+                                     "Type" )
+
+# Format data frame so that the data is in the same order as it appeared in the file.
+failures_dataFrame$Type <- as.character( failures_dataFrame$Type )
+failures_dataFrame$Type <- factor( failures_dataFrame$Type, levels = unique( failures_dataFrame$Type ) )
+
+failures_dataFrame$timeStamps <- rev( gsub('^(.{11})(.*)$', '\\1\n\\2', failure_fileData$Time ) )
+
+# Adding a temporary reversed iterative list to the failures_dataFrame so that there are no gaps in-between build numbers.
+failures_dataFrame$iterative <- rev( seq( 1, nrow( failure_fileData ), by = 1 ) )
+
+# Omit any data that doesn't exist
+failures_dataFrame <- na.omit( failures_dataFrame )
+
+if ( dataLength > maxDataToDisplay ){
+    failures_dataFrame <- failures_dataFrame[ failures_dataFrame$iterative >= dataLength - maxDataToDisplay, ]
+}
+
+if ( moduloFactor > 1 ){
+    failures_dataFrame[ failures_dataFrame$iterative %% moduloFactor != dataLength %% moduloFactor, ]$timeStamps <- ""
+}
+
+print( "'Failures' Data Frame Results:" )
+print( failures_dataFrame )
+
+# -------------------
+# 'Errors' Data Frame
+# -------------------
+
+print( "Constructing data frame for 'errors'." )
+
+errors_dataFrame <- melt( errorCombined )
+
+# Rename column names in errors_dataFrame
+colnames( errors_dataFrame ) <- c( "Errors",
+                                   "Type" )
+
+# Format data frame so that the data is in the same order as it appeared in the file.
+errors_dataFrame$Type <- as.character( errors_dataFrame$Type )
+errors_dataFrame$Type <- factor( errors_dataFrame$Type, levels = unique( errors_dataFrame$Type ) )
+
+errors_dataFrame$timeStamps <- gsub('^(.{11})(.*)$', '\\1\n\\2', error_fileData$Time )
+
+# Adding a temporary reversed iterative list to the errors_dataFrame so that there are no gaps in-between build numbers.
+errors_dataFrame$iterative <- seq( 1, nrow( error_fileData ), by = 1 )
+
+# Omit any data that doesn't exist
+errors_dataFrame <- na.omit( errors_dataFrame )
+
+if ( dataLength > maxDataToDisplay ){
+    errors_dataFrame <- errors_dataFrame[ errors_dataFrame$iterative >= dataLength - maxDataToDisplay, ]
+}
+
+if ( moduloFactor > 1 ){
+    errors_dataFrame[ errors_dataFrame$iterative %% moduloFactor != dataLength %% moduloFactor, ]$timeStamps <- ""
+}
+
+print( "'Errors' Data Frame Results:" )
+print( errors_dataFrame )
+
+# **********************************************************
+# STEP 3: Generate graphs.
+# **********************************************************
+
+print( "**********************************************************" )
+print( "STEP 3: Generate Graph." )
+print( "**********************************************************" )
+
+# -------------------
+# Main Plot Generated
+# -------------------
+
+print( "Creating main plots." )
+
+eventsPlot <- ggplot( data = events_dataFrame, aes( x = iterative,
+                                                    y = Events,
+                                                    color = Type ) )
+
+failuresPlot <- ggplot( data = failures_dataFrame, aes( x = iterative,
+                                                        y = Failures,
+                                                        color = Type ) )
+
+errorsPlot <- ggplot( data = errors_dataFrame, aes( x = iterative,
+                                                    y = Errors,
+                                                    color = Type ) )
+
+# ------------------------------
+# Fundamental Variables Assigned
+# ------------------------------
+
+print( "Generating fundamental graph data used in all 3 graphs." )
+
+defaultTextSize()
+
+yAxisTicksExponents <- seq( -1, floor( max( c( max( events_dataFrame$Events ), max( failures_dataFrame$Failures ), max( errors_dataFrame$Errors ) ) ) ^ 0.1 ) + 1, by=1 )
+yAxisTicks <- 10 ^ yAxisTicksExponents
+yAxisTicksLabels <- floor( yAxisTicks )
+
+yScaleConfig <- scale_y_log10( breaks = yAxisTicks,
+                               labels = yAxisTicksLabels )
+xLabel <- xlab( "Time" )
+
+print( "Generating line graph." )
+
+lineGraphFormat <- geom_line( size = 0.5 )
+pointFormat <- geom_point( size = 0 )
+
+graphTheme <- graphTheme() + theme( axis.text.x = element_text( angle = 90, hjust = 1.0, vjust = 0.5, size = 11 ),
+                                    axis.text.y = element_text( size = 17 ) )
+
+# -------------------
+# 'Events' Graph Data
+# -------------------
+
+print( "Generating 'events' graph data." )
+
+yLabel <- ylab( "Events" )
+
+xScaleConfig <- scale_x_continuous( breaks = events_dataFrame$iterative,
+                                    label = events_dataFrame$timeStamps )
+
+lineColorsAndLabels <- scale_color_manual( values=c( webColor( "light_blue" ),
+                                            webColor( "red" ),
+                                            webColor( "purple" ),
+                                            webColor( "yellow" ),
+                                            webColor( "orange" ),
+                                            webColor( "blue" ),
+                                            webColor( "magenta" ),
+                                            webColor( "green" ),
+                                            webColor( "brown" ),
+                                            webColor( "black" )
+                                          ),
+                                  labels = c( "Link Down",
+                                              "Link Up",
+                                              "Device Down",
+                                              "Device Up",
+                                              "Add Host Intent",
+                                              "Delete Host Intent",
+                                              "Add Point Intent",
+                                              "Delete Point Intent",
+                                              "ONOS Down",
+                                              "ONOS Up" )
+                                )
+
+title <- labs( title = eventsTitle, subtitle = lastUpdatedLabel() )
+
+result <- eventsPlot +
+          xScaleConfig +
+          yScaleConfig +
+          xLabel +
+          yLabel +
+          graphTheme +
+          title +
+          lineGraphFormat +
+          lineColorsAndLabels +
+          pointFormat
+
+# -----------------------
+# Exporting Graph to File
+# -----------------------
+
+saveGraph( eventsFilename ) # from saveGraph.R
+
+# ---------------------
+# 'Failures' Graph Data
+# ---------------------
+
+print( "Generating 'failures' graph data." )
+
+yLabel <- ylab( "Failures" )
+
+xScaleConfig <- scale_x_continuous( breaks = failures_dataFrame$iterative,
+                                    label = failures_dataFrame$timeStamps )
+
+lineColorsAndLabels <- scale_color_manual( values=c( webColor( "red" ),
+                                            webColor( "yellow" ),
+                                            webColor( "green" ),
+                                            webColor( "blue" ),
+                                            webColor( "magenta" )
+                                          ),
+                                  labels = c( "Intent Check Failure",
+                                              "Flow Check Failure",
+                                              "Traffic Check Failure",
+                                              "Topo Check Failure",
+                                              "ONOS Check Failure" )
+                                )
+
+title <- labs( title = failedChecksTitle, subtitle = lastUpdatedLabel() )
+
+result <- failuresPlot +
+          xScaleConfig +
+          yScaleConfig +
+          xLabel +
+          yLabel +
+          graphTheme +
+          title +
+          lineGraphFormat +
+          lineColorsAndLabels + wrapLegend(byrow=FALSE) +
+          pointFormat
+
+
+# -----------------------
+# Exporting Graph to File
+# -----------------------
+
+saveGraph( failedChecksFilename ) # from saveGraph.R
+
+# ---------------------
+# 'Errors' Graph Data
+# ---------------------
+
+print( "Generating 'errors' graph data." )
+
+yLabel <- ylab( "Errors" )
+
+xScaleConfig <- scale_x_continuous( breaks = errors_dataFrame$iterative,
+                                    label = errors_dataFrame$timeStamps )
+
+lineColorsAndLabels <- scale_color_manual( values=c( webColor( "magenta" ),
+                                            webColor( "yellow" ),
+                                            webColor( "orange" ),
+                                            webColor( "red" )
+                                          ),
+                                  labels = c( "Test Warnings",
+                                              "ONOS Warnings",
+                                              "ONOS Errors",
+                                              "Exceptions" )
+                                )
+
+title <- labs( title = errorsTitle, subtitle = lastUpdatedLabel() )
+
+result <- errorsPlot +
+          xScaleConfig +
+          yScaleConfig +
+          xLabel +
+          yLabel +
+          graphTheme +
+          title +
+          lineGraphFormat +
+          lineColorsAndLabels +
+          pointFormat
+
+# -----------------------
+# Exporting Graph to File
+# -----------------------
+
+saveGraph( errorsFilename ) # from saveGraph.R
diff --git a/TestON/JenkinsFile/wikiGraphRScripts/trendIndividualTest.R b/TestON/JenkinsFile/wikiGraphRScripts/trendIndividualTest.R
index f2f46bb..93d58ed 100644
--- a/TestON/JenkinsFile/wikiGraphRScripts/trendIndividualTest.R
+++ b/TestON/JenkinsFile/wikiGraphRScripts/trendIndividualTest.R
@@ -46,10 +46,10 @@
 library( ggplot2 )
 library( reshape2 )
 library( RPostgreSQL )
-source( "dependencies/saveGraph.R" )
-source( "dependencies/fundamentalGraphData.R" )
-source( "dependencies/initSQL.R" )
-source( "dependencies/cliArgs.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/saveGraph.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/initSQL.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/cliArgs.R" )
 
 # -------------------
 # Check CLI Arguments
diff --git a/TestON/JenkinsFile/wikiGraphRScripts/trendMultipleTests.R b/TestON/JenkinsFile/wikiGraphRScripts/trendMultipleTests.R
index 524d715..f85477b 100644
--- a/TestON/JenkinsFile/wikiGraphRScripts/trendMultipleTests.R
+++ b/TestON/JenkinsFile/wikiGraphRScripts/trendMultipleTests.R
@@ -41,10 +41,10 @@
 library( ggplot2 )
 library( reshape2 )
 library( RPostgreSQL )
-source( "dependencies/saveGraph.R" )
-source( "dependencies/fundamentalGraphData.R" )
-source( "dependencies/initSQL.R" )
-source( "dependencies/cliArgs.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/saveGraph.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/initSQL.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/cliArgs.R" )
 
 # -------------------
 # Check CLI Arguments
diff --git a/TestON/JenkinsFile/wikiGraphRScripts/trendSCPF.R b/TestON/JenkinsFile/wikiGraphRScripts/trendSCPF.R
index b2c68c6..0a4968a 100644
--- a/TestON/JenkinsFile/wikiGraphRScripts/trendSCPF.R
+++ b/TestON/JenkinsFile/wikiGraphRScripts/trendSCPF.R
@@ -46,10 +46,10 @@
 library( ggplot2 )
 library( reshape2 )
 library( RPostgreSQL )
-source( "dependencies/saveGraph.R" )
-source( "dependencies/fundamentalGraphData.R" )
-source( "dependencies/initSQL.R" )
-source( "dependencies/cliArgs.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/saveGraph.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/fundamentalGraphData.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/initSQL.R" )
+source( "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/dependencies/cliArgs.R" )
 
 # -------------------
 # Check CLI Arguments
diff --git a/TestON/bin/.pylint b/TestON/bin/.pylint
index 469a744..57208b9 100644
--- a/TestON/bin/.pylint
+++ b/TestON/bin/.pylint
@@ -13,7 +13,7 @@
 
 # Python code to execute, usually for sys.path manipulation such as
 # pygtk.require().
-#init-hook=
+init-hook='import sys;sys.path.append("/home/sdn/TestON")'
 
 # Profiled execution.
 profile=no
@@ -136,7 +136,7 @@
 bad-names=foo,bar,baz,toto,tutu,tata
 
 # List of builtins function names that should not be used, separated by a comma
-bad-functions=map,filter,apply,inpu
+bad-functions=map,filter,apply,inpu,in,list,str
 
 
 # try to find bugs in the code using type inference
@@ -244,7 +244,7 @@
 
 # Create a graph of every (i.e. internal and external) dependencies in the
 # given file (report R0402 must not be disabled)
-import-graph=
+import-graph=y
 
 # Create a graph of external dependencies in the given file (report R0402 mus
 # not be disabled)
@@ -281,7 +281,7 @@
 [MISCELLANEOUS]
 
 # List of note tags to take in consideration, separated by a comma.
-notes=FIXME,XXX,TODO
+notes=FIXME,XXX,TODO,NOTE
 
 
 # checks for similarities and duplicated code. This computation may be
diff --git a/TestON/bin/codecheck b/TestON/bin/codecheck
index e3769da..51b9649 100755
--- a/TestON/bin/codecheck
+++ b/TestON/bin/codecheck
@@ -30,16 +30,16 @@
     autopep8 --in-place -a -a $file --ignore=$EXCLUDE,$P8IGN
 elif [ -z "$2" ] || [ "$2" = "--reason" ] || [ "$2" = "--relaxed" ]; then
     echo "Running pyflakes..."
-    #Pyflakes is a source checker. It doesn't run the code so it is safer than other programs
-    #ignoring some errors due to TestON
-    pyflakes $1 | grep -v "undefined name 'main'" | grep -v "undefined name 'utilities'"
+    # Pyflakes is a source checker. It doesn't run the code so it is safer than other programs
+    # ignoring some errors due to TestON
+    pyflakes $1 | grep -v "undefined name 'main'" | grep -v "undefined name 'utilities'" | grep -v "unable to detect undefined names"
     echo "Running pylint..."
-    #Pylint is a static code checker
-    #ignoring some errors due to TestON
+    # Pylint is a static code checker
+    # ignoring some errors due to TestON
     pylint -E --rcfile=$(dirname "${BASH_SOURCE}")/.pylint $1 | grep -v "Undefined variable 'main'" | grep -v "Undefined variable 'utilities'"
 
     echo "Running PEP8..."
-    #PEP8 is a the most common python coding style standard
+    # PEP8 is a the most common python coding style standard
     if [ "$2" = "--reason" ]; then
         pep8 --repeat --show-source --show-pep8 --ignore=$P8IGN $1
     elif [ "$2" = "--relaxed" ]; then
diff --git a/TestON/bin/findPatchScript.sh b/TestON/bin/findPatchScript.sh
new file mode 100755
index 0000000..f88f528
--- /dev/null
+++ b/TestON/bin/findPatchScript.sh
@@ -0,0 +1,105 @@
+#!/bin/bash
+
+# Copyright 2015 Open Networking Foundation (ONF)
+#
+# Please refer questions to either the onos test mailing list at <onos-test@onosproject.org>,
+# the System Testing Plans and Results wiki page at <https://wiki.onosproject.org/x/voMg>,
+# or the System Testing Guide page at <https://wiki.onosproject.org/x/WYQg>
+#
+#     TestON is free software: you can redistribute it and/or modify
+#     it under the terms of the GNU General Public License as published by
+#     the Free Software Foundation, either version 2 of the License, or
+#     (at your option) any later version.
+#
+#     TestON is distributed in the hope that it will be useful,
+#     but WITHOUT ANY WARRANTY; without even the implied warranty of
+#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#     GNU General Public License for more details.
+#
+#     You should have received a copy of the GNU General Public License
+#     along with TestON.  If not, see <http://www.gnu.org/licenses/>.
+#
+#    Usage : ./findPatchScript.sh -t <testName> (optional choices : -n <# : number of run on each commit>
+#                                                                   -s <# : number of commits to skip every iteration>
+
+#source $ONOS_ROOT/tools/dev/bash_profile
+
+#!/bin/bash
+usage() { echo "Usage:$0 [-t <test_name>] Optional:{ -n <number_of_running_test_on_each_commit>
+                                                       -s <number_of_skipping_commit> }"; 1>&2; exit 1;  }
+
+NUM_RUN=1
+SKIP_COMMIT=1
+LOG_FILE="/home/sdn/OnosSystemTest/TestON/logs/findCommitLog.txt"
+while getopts ":t:n:s:" ARGS; do
+    case $ARGS in
+        t)
+            TESTNAME=${OPTARG}
+            ;;
+        n)
+            NUM_RUN=${OPTARG}
+            ((NUM_RUN > 0)) || usage
+            ;;
+        s)
+            SKIP_COMMIT=${OPTARG}
+            ((SKIP_COMMIT > 0)) || usage
+            ;;
+        *)
+            usage
+            ;;
+    esac
+done
+
+if [ -z "${TESTNAME}" ]; then
+    usage
+fi
+
+exportMsg() {
+    echo "Log exported to $LOG_FILE"
+}
+runScript() {
+    echo -n > "$LOG_FILE"
+    PREVIOUS_COMMIT=""
+    while true; do
+        TEST_RESULT="1"
+        for ((i=0; i < NUM_RUN; i++))
+        do
+            cd ~/onos
+            COMMIT=$(git log -1 --pretty=fuller | grep -m1 -Po "(?<=commit\s)\w+")
+            echo "Current Commit : $COMMIT"
+            echo "Current Commit : $COMMIT" >> "$LOG_FILE"
+            echo "1" > /tmp/findPatchResult.txt
+            cd ~/OnosSystemTest/TestON/bin
+            ./cleanup.sh
+            ./cli.py run $TESTNAME
+            TEST_RESULT=$(cat /tmp/findPatchResult.txt)
+            echo $TEST_RESULT
+            if [ "$TEST_RESULT" == "0" ]; then
+                break
+            fi
+        done
+        if [ "$TEST_RESULT" == "1" ]; then
+            echo "Found the commit that has no problem : $(tput setaf 2)$COMMIT$(tput sgr 0)"
+            echo "Found the commit that has no problem : $COMMIT" >> $LOG_FILE
+            echo "Last commit that had a problem : $(tput setaf 1)$PREVIOUS_COMMIT$(tput sgr 0)"
+            echo "Last commit that had a problem : $PREVIOUS_COMMIT" >> $LOG_FILE
+            break
+        fi
+
+        cd ~/onos
+        COMMIT=$(git log -1 --skip $SKIP_COMMIT --pretty=fuller | grep -m1 -Po "(?<=commit\s)\w+")
+        echo "New commit to be tested : $COMMIT"
+        echo "New commit to be tested : $COMMIT" >> $LOG_FILE
+        PREVIOUS_COMMIT=$COMMIT
+        STASH_RESULT=$(git stash)
+        git checkout $COMMIT
+        if [ "$STASH_RESULT" != "No local changes to save" ]; then
+            git stash pop
+        fi
+    done
+}
+
+runScript
+echo >> $LOG_FILE
+echo >> $LOG_FILE
+exportMsg
diff --git a/TestON/core/teston.py b/TestON/core/teston.py
index 19449f4..978c206 100644
--- a/TestON/core/teston.py
+++ b/TestON/core/teston.py
@@ -474,6 +474,26 @@
         for driver in self.driversList:
             vars( self )[ driver ].write( stepHeader + "\n" + caseFooter )
 
+    def setCheckingPoint( self ):
+        '''
+        Using when running findPatchScript.sh. This function needs to be placed
+        on the point that has the problem.
+
+        For example, if you see unusual behavior or from the portion of the code,
+        this is where you need to put with the conditional statement.
+        If some of the latency result is much greater than usual, have if statement
+        that checks if the result is greater than some point and include this function.
+
+        This will mark the 0 to findPatchResult.txt in /tmp/ and exit the test.
+        Then from findPatchScript, it will move onto the next commit and re-run the
+        test.
+        '''
+        self.log.error( "Reached to the checking point. Will mark the result and exit the test" )
+        resultFile = open( "/tmp/findPatchResult.txt", "w" )
+        resultFile.write( "0" )
+        resultFile.close()
+        self.cleanAndExit()
+
     def cleanup( self ):
         '''
         Print a summary of the current test's results then attempt to release
diff --git a/TestON/tests/HA/HAfullNetPartition/HAfullNetPartition.py b/TestON/tests/HA/HAfullNetPartition/HAfullNetPartition.py
index f04e878..886c672 100644
--- a/TestON/tests/HA/HAfullNetPartition/HAfullNetPartition.py
+++ b/TestON/tests/HA/HAfullNetPartition/HAfullNetPartition.py
@@ -249,6 +249,7 @@
         utilities.assert_equals( expect=main.TRUE, actual=partitionResults,
                                  onpass="Firewall rules set successfully",
                                  onfail="Error setting firewall rules" )
+        main.Cluster.reset()
 
         main.step( "Sleeping 60 seconds" )
         time.sleep( 60 )
@@ -277,6 +278,7 @@
 
         for node in main.partition:
             main.Cluster.runningNodes[ node ].active = True
+        main.Cluster.reset()
 
         main.step( "Checking ONOS nodes" )
         nodeResults = utilities.retry( main.Cluster.nodesCheck,
diff --git a/TestON/tests/HA/HAscaling/HAscaling.py b/TestON/tests/HA/HAscaling/HAscaling.py
index e46271d..4e18b30 100644
--- a/TestON/tests/HA/HAscaling/HAscaling.py
+++ b/TestON/tests/HA/HAscaling/HAscaling.py
@@ -226,7 +226,7 @@
 
         activeNodes = range( 0, main.Cluster.numCtrls )
         newNodes = [ x for x in activeNodes if x not in prevNodes ]
-        main.Cluster.resetActive()
+        main.Cluster.clearActive()
         main.step( "Start new nodes" )  # OR stop old nodes?
         started = main.TRUE
         for i in newNodes:
diff --git a/TestON/tests/HA/HAstopNodes/HAstopNodes.py b/TestON/tests/HA/HAstopNodes/HAstopNodes.py
index bbb8db7..62b8ee5 100644
--- a/TestON/tests/HA/HAstopNodes/HAstopNodes.py
+++ b/TestON/tests/HA/HAstopNodes/HAstopNodes.py
@@ -196,6 +196,7 @@
             killResults = killResults and\
                           ctrl.onosStop( ctrl.ipAddress )
             ctrl.active = False
+        main.Cluster.reset()
         utilities.assert_equals( expect=main.TRUE, actual=killResults,
                                  onpass="ONOS nodes stopped successfully",
                                  onfail="ONOS nodes NOT successfully stopped" )
diff --git a/TestON/tests/HA/HAswapNodes/HAswapNodes.py b/TestON/tests/HA/HAswapNodes/HAswapNodes.py
index 9c2d180..bf1a589 100644
--- a/TestON/tests/HA/HAswapNodes/HAswapNodes.py
+++ b/TestON/tests/HA/HAswapNodes/HAswapNodes.py
@@ -222,7 +222,7 @@
                                  onpass="New cluster metadata file generated",
                                  onfail="Failled to generate new metadata file" )
         time.sleep( 5 )  # Give time for nodes to read new file
-        main.Cluster.resetActive()
+        main.Cluster.clearActive()
         # Note : done up to this point.
         main.step( "Start new nodes" )  # OR stop old nodes?
         started = main.TRUE
diff --git a/TestON/tests/dependencies/Cluster.py b/TestON/tests/dependencies/Cluster.py
index 61c141c..a67bad5 100644
--- a/TestON/tests/dependencies/Cluster.py
+++ b/TestON/tests/dependencies/Cluster.py
@@ -72,12 +72,10 @@
 
         return ips
 
-    def resetActive( self ):
+    def clearActive( self ):
         """
         Description:
-            reset the activeness of the cluster to be false
-        Required:
-        Returns:
+            Sets the activeness of each cluster node to be False
         """
         for ctrl in self.controllers:
             ctrl.active = False
@@ -126,14 +124,16 @@
 
     def next( self ):
         """
-        An iterator for the cluster's controllers that
+        An iterator for the cluster's active controllers that
         resets when there are no more elements.
 
         Returns the next controller in the cluster
         """
         try:
-            return self.iterator.next()
-        except StopIteration:
+            node = self.iterator.next()
+            assert node.active
+            return node
+        except ( StopIteration, AssertionError ):
             self.reset()
             try:
                 return self.iterator.next()
