diff --git a/TestON/JenkinsFile/CommonJenkinsFile.groovy b/TestON/JenkinsFile/CommonJenkinsFile.groovy
index cd39c75..3060f08 100644
--- a/TestON/JenkinsFile/CommonJenkinsFile.groovy
+++ b/TestON/JenkinsFile/CommonJenkinsFile.groovy
@@ -140,7 +140,7 @@
     for ( String test : testsFromList.keySet() ){
         toBeRun = testsToRun.keySet().contains( test )
         stepName = ( toBeRun ? "" : "Not " ) + "Running $test"
-        pureTestName = ( testsFromList[ test ].containsKey( "test" ) ? testsFromList[ test ][ "test" ].split().head() : test )
+        pureTestName = test.contains( "WithFlowObj" ) ? test - "WithFlowObj" : test
         pipeline[ stepName ] = runTest( test,
                                         toBeRun,
                                         prop,
@@ -182,15 +182,23 @@
         '''
 }
 
-def runTestCli_py( testName, testCategory ){
+def runTestCli_py( testName, pureTestName, testCategory ){
     // Bash script that will run the test.
     // testName : name of the test
     // testCategory : (SR,FUNC ... )
+    flowObjFlag = false
 
-    return '''cd ~/OnosSystemTest/TestON/bin
-           ./cli.py run ''' +
-           testName +
-           ''' --params GRAPH/nodeCluster=''' + graphs.getPostjobType( nodeLabel )
+    if ( isSCPF && testName.contains( "WithFlowObj" ) ){
+        flowObjFlag = true
+    }
+
+    command = '''cd ~/OnosSystemTest/TestON/bin
+                 ./cli.py run ''' + pureTestName + ''' --params''' + ( flowObjFlag ? '''TEST/flowObj=True ''' : ''' ''' ) + '''GRAPH/nodeCluster=''' + graphs.getPostjobType( nodeLabel ) + ''' '''
+    echo command
+
+    return command
+
+
 }
 
 def concludeRunTest(){
@@ -272,13 +280,6 @@
   cd'''
 }
 
-def isPostingResult( manual, postresult ){
-    // check if it is posting the result.
-    // posting when it is automatically running or has postResult condition from the manual run
-
-    return manual == "false" || postresult == "true"
-}
-
 def publishToConfluence( isManualRun, isPostResult, wikiLink, file ){
     // publish HTML script to wiki confluence
     // isManualRun : string "true" "false"
@@ -286,7 +287,7 @@
     // wikiLink : link of the wiki page to publish
     // file : name of the file to be published
 
-    if ( isPostingResult( isManualRun, isPostResult ) ){
+    if ( graphs.isPostingResult( isManualRun, isPostResult ) ){
         publishConfluence siteName: 'wiki.onosproject.org', pageName: wikiLink, spaceName: 'ONOS',
                           attachArchivedArtifacts: true, buildIfUnstable: true,
                           editorList: [ confluenceWritePage( confluenceFile( file ) ) ]
@@ -374,7 +375,7 @@
                                 }
                                 sh script: initTest(), label: "Test Initialization: stc shutdown; stc teardown; ./cleanup.sh"
                                 catchError{
-                                    sh script: runTestCli_py( testName, testCategory ), label: ( "Run Test: ./cli.py run " + testName )
+                                    sh script: runTestCli_py( testName, pureTestName, testCategory ), label: ( "Run Test: ./cli.py run " + testName )
                                 }
                                 catchError{
                                     sh script: concludeRunTest(), label: "Conclude Running Test: ./cleanup.sh; git clean -df"
diff --git a/TestON/JenkinsFile/dependencies/JenkinsGraphs.groovy b/TestON/JenkinsFile/dependencies/JenkinsGraphs.groovy
index 8fccede..b39c2b4 100644
--- a/TestON/JenkinsFile/dependencies/JenkinsGraphs.groovy
+++ b/TestON/JenkinsFile/dependencies/JenkinsGraphs.groovy
@@ -159,7 +159,8 @@
                     string( credentialsId: 'db_host', variable: 'host' ),
                     string( credentialsId: 'db_port', variable: 'port' ) ] ) {
                 testList = test_list.getTestListAsString( tests )
-                sh script: ( '''#!/bin/bash''' +
+                sh script: ( '''#!/bin/bash
+                             ''' +
                    basicGraphPart( trend_generator_file, host, port,
                                                 user, pass, testType,
                                                 prop[ "ONOSBranch" ] ) + " " + testList + " 20 " + graph_saved_directory ), label: "Generate Overall Graph"
