diff --git a/TestON/JenkinsFile/JenkinsfileTrigger b/TestON/JenkinsFile/JenkinsfileTrigger
index c624984..e960d70 100644
--- a/TestON/JenkinsFile/JenkinsfileTrigger
+++ b/TestON/JenkinsFile/JenkinsfileTrigger
@@ -6,13 +6,13 @@
 previous_version = "1.12"
 before_previous_version = "1.11"
 funcs.initializeTrend( "VM" );
-
+wikiContents = ""
 testcases = [
-    "FUNC" : [ tests : "" , nodeName : "VM" ],
-    "HA" : [ tests : "" , nodeName : "VM" ],
-    "SR" : [ tests : "", nodeName : "VM" ],
-    "SCPF" : [ tests : "" , nodeName : "BM" ],
-    "USECASE" : [ tests : "" , nodeName : "BM" ]
+    "FUNC" : [ tests : "" , nodeName : "VM", wikiContent : "" ],
+    "HA" : [ tests : "" , nodeName : "VM", wikiContent : "" ],
+    "SCPF" : [ tests : "" , nodeName : "BM", wikiContent : "" ],
+    "SR" : [ tests : "", nodeName : "VM", wikiContent : "" ],
+    "USECASE" : [ tests : "" , nodeName : "BM", wikiContent : "" ]
 ]
 Prefix_organizer = [
     "FU" : "FUNC",
@@ -114,38 +114,41 @@
 def testDivider( today ){
     switch ( today ) {
         case Calendar.MONDAY:
+            initHtmlForWiki()
             monday( true )
             tuesday( true, false )
             wednesday( true, false )
             thursday( true, false )
             friday( true, false )
+            saturday( false, false )
+            sunday( false, false )
             day = "Monday"
+            closeHtmlForWiki()
+            postToWiki( wikiContents )
             slackSend( color:'#FFD988', message:"Tests to be run this weekdays : \n" + printDaysForTest() )
             break
         case Calendar.TUESDAY:
-            tuesday( true, true )
+            tuesday( false, true )
             day = "Tuesday"
             break
         case Calendar.WEDNESDAY:
-            wednesday( true, true )
+            wednesday( false, true )
             day = "Wednesday"
             break
         case Calendar.THURSDAY:
-            thursday( true, true )
+            thursday( false, true )
             day = "Thursday"
-            isOldFlow = false
             break
         case Calendar.FRIDAY:
-            friday( true, true )
+            friday( false, true )
             day = "Friday"
-            isOldFlow = false
             break
         case Calendar.SATURDAY:
-            saturday()
+            saturday( false, true )
             day = "Saturday"
             break
         case Calendar.SUNDAY:
-            sunday()
+            sunday( false , true )
             day = "Sunday"
             isOldFlow = false
             break
@@ -170,110 +173,250 @@
     return str
 }
 def monday( getResult ){
+    addingHeader( "FUNC" )
     FUNC_choices += adder( "FUNC", "basic", true, "M", getResult )
     FUNC_choices += adder( "FUNC", "new_Test", true, "M", getResult )
     FUNC_choices += adder( "FUNC", "extra_A", true, "M", getResult )
+    closingHeader( "FUNC" )
+    addingHeader( "HA" )
     HA_choices += adder( "HA", "basic", true, "M", getResult )
     HA_choices += adder( "HA", "extra_A", true, "M", getResult )
     //HA_choices += adder( "HA", "new_Test", true, "M", getResult )
-    SR_choices += adder( "SR", "basic", true, "M", getResult )
+    closingHeader( "HA" )
+    addingHeader( "SCPF" )
     SCPF_choices += adder( "SCPF", "basic", true, "M", getResult )
     SCPF_choices += adder( "SCPF", "extra_B", true, "M", getResult )
+    closingHeader( "SCPF" )
+    addingHeader( "SR" )
+    SR_choices += adder( "SR", "basic", true, "M", getResult )
+    closingHeader( "SR" )
+    addingHeader( "USECASE" )
+    closingHeader( "USECASE" )
 }
 def tuesday( getDay, getResult ){
+
+    addingHeader( "FUNC" )
     FUNC_choices += adder( "FUNC", "basic", getDay, "T", getResult )
     FUNC_choices += adder( "FUNC", "new_Test", getDay, "T", getResult )
     FUNC_choices += adder( "FUNC", "extra_B", getDay, "T", getResult )
+    closingHeader( "FUNC" )
+    addingHeader( "HA" )
     HA_choices += adder( "HA", "basic", getDay, "T", getResult )
     HA_choices += adder( "HA", "extra_B", getDay, "T", getResult )
     HA_choices += adder( "HA", "new_Test", getDay, "T", getResult )
-    SR_choices += adder( "SR", "basic", getDay, "T", getResult )
+    closingHeader( "HA" )
+    addingHeader( "SCPF" )
     SCPF_choices += adder( "SCPF", "basic", getDay, "T", getResult )
     SCPF_choices += adder( "SCPF", "extra_C", getDay, "T", getResult )
+    closingHeader( "SCPF" )
+    addingHeader( "SR" )
+    SR_choices += adder( "SR", "basic", getDay, "T", getResult )
+    closingHeader( "SR" )
+    addingHeader( "USECASE" )
     USECASE_choices += adder( "USECASE", "basic", getDay, "T", getResult )
     USECASE_choices += adder( "USECASE", "extra_A", getDay, "T", getResult )
-    USECASE_choices += adder( "USECASE", "new_Test", getDay, "T", getResult )
+    closingHeader( "USECASE" )
 }
 def wednesday( getDay, getResult ){
+    addingHeader( "FUNC" )
     FUNC_choices += adder( "FUNC", "basic", getDay, "W", getResult )
     FUNC_choices += adder( "FUNC", "new_Test", getDay, "W", getResult )
     FUNC_choices += adder( "FUNC", "extra_A", getDay, "W", getResult )
+    closingHeader( "FUNC" )
+    addingHeader( "HA" )
     HA_choices += adder( "HA", "basic", getDay, "W", getResult )
     HA_choices += adder( "HA", "extra_A", getDay, "W", getResult )
     //HA_choices += adder( "HA", "new_Test", getDay, "W", getResult )
-    SR_choices += adder( "SR", "basic", getDay, "W", getResult )
+    closingHeader( "HA" )
+    addingHeader( "SCPF" )
     SCPF_choices += adder( "SCPF", "basic", getDay, "W", getResult )
     SCPF_choices += adder( "SCPF", "extra_A", getDay, "W", getResult )
     SCPF_choices += adder( "SCPF", "new_Test", getDay, "W", getResult )
+    closingHeader( "SCPF" )
+    addingHeader( "SR" )
+    SR_choices += adder( "SR", "basic", getDay, "W", getResult )
+    closingHeader( "SR" )
+    addingHeader( "USECASE" )
+    closingHeader( "USECASE" )
 }
 def thursday( getDay, getResult ){
+    addingHeader( "FUNC" )
     FUNC_choices += adder( "FUNC", "basic", getDay, "Th", getResult )
     FUNC_choices += adder( "FUNC", "new_Test", getDay, "Th", getResult )
     FUNC_choices += adder( "FUNC", "extra_B", getDay, "Th", getResult )
+    closingHeader( "FUNC" )
+    addingHeader( "HA" )
     HA_choices += adder( "HA", "basic", getDay, "Th", getResult )
     HA_choices += adder( "HA", "extra_B", getDay, "Th", getResult )
     HA_choices += adder( "HA", "new_Test", getDay, "Th", getResult )
-    SR_choices += adder( "SR", "basic", getDay, "Th", getResult )
+    closingHeader( "HA" )
+    addingHeader( "SCPF" )
     SCPF_choices += adder( "SCPF", "basic", getDay, "Th", getResult )
     SCPF_choices += adder( "SCPF", "extra_B", getDay, "Th", getResult )
+    closingHeader( "SCPF" )
+    addingHeader( "SR" )
+    SR_choices += adder( "SR", "basic", getDay, "Th", getResult )
+    closingHeader( "SR" )
+    addingHeader( "USECASE" )
+    closingHeader( "USECASE" )
 }
 def friday( getDay, getResult ){
+    addingHeader( "FUNC" )
     FUNC_choices += adder( "FUNC", "basic", getDay, "F", getResult )
     FUNC_choices += adder( "FUNC", "new_Test", getDay, "F", getResult )
     FUNC_choices += adder( "FUNC", "extra_A", getDay, "F", getResult )
+    closingHeader( "FUNC" )
+    addingHeader( "HA" )
     HA_choices += adder( "HA", "basic", getDay, "F", getResult )
     HA_choices += adder( "HA", "extra_A", getDay, "F", getResult )
     //HA_choices += adder( "HA", "new_Test", getDay, "F", getResult )
-    SR_choices += adder( "SR", "basic", getDay, "F", getResult )
+    closingHeader( "HA" )
+    addingHeader( "SCPF" )
     SCPF_choices += adder( "SCPF", "basic", getDay, "F", getResult )
     SCPF_choices += adder( "SCPF", "extra_A", getDay, "F", getResult )
     SCPF_choices += adder( "SCPF", "extra_D", getDay, "F", getResult )
+    closingHeader( "SCPF" )
+    addingHeader( "SR" )
+    SR_choices += adder( "SR", "basic", getDay, "F", getResult )
+    closingHeader( "SR" )
+    addingHeader( "USECASE" )
+    closingHeader( "USECASE" )
 }
-def saturday(){
-    FUNC_choices += adder( "FUNC", "basic", false, "Sa", true )
-    FUNC_choices += adder( "FUNC", "extra_A", false, "Sa", true )
-    FUNC_choices += adder( "FUNC", "extra_B", false, "Sa", true )
-    FUNC_choices += adder( "FUNC", "new_Test", true, "Sa", true )
-    HA_choices += adder( "HA", "basic", false, "Sa", true )
-    HA_choices += adder( "HA", "extra_A", false, "Sa", true )
-    HA_choices += adder( "HA", "extra_B", false, "Sa", true )
-    HA_choices += adder( "HA", "new_Test", false, "Sa", true )
-    SR_choices += adder( "SR", "basic", false, "Sa", true )
-    SCPF_choices += adder( "SCPF", "basic", false, "Sa", true )
-    SCPF_choices += adder( "SCPF", "extra_A", false, "Sa", true )
-    SCPF_choices += adder( "SCPF", "extra_B", false, "Sa", true )
-    SCPF_choices += adder( "SCPF", "extra_C", false, "Sa", true )
-    SCPF_choices += adder( "SCPF", "extra_D", false, "Sa", true )
-    SCPF_choices += adder( "SCPF", "new_Test", false, "Sa", true )
-    USECASE_choices += adder( "USECASE", "basic", false, "Sa", true )
+def saturday( getDay, getResult ){
+    addingHeader( "FUNC" )
+    FUNC_choices += adder( "FUNC", "basic", getDay, "Sa", getResult )
+    FUNC_choices += adder( "FUNC", "extra_A", getDay, "Sa", getResult )
+    FUNC_choices += adder( "FUNC", "extra_B", getDay, "Sa", getResult )
+    FUNC_choices += adder( "FUNC", "new_Test", getDay, "Sa", getResult )
+    closingHeader( "FUNC" )
+    addingHeader( "HA" )
+    HA_choices += adder( "HA", "basic", getDay, "Sa", getResult )
+    HA_choices += adder( "HA", "extra_A", getDay, "Sa", getResult )
+    HA_choices += adder( "HA", "extra_B", getDay, "Sa", getResult )
+    HA_choices += adder( "HA", "new_Test", getDay, "Sa", getResult )
+    closingHeader( "HA" )
+    addingHeader( "SCPF" )
+    SCPF_choices += adder( "SCPF", "basic", getDay, "Sa", getResult )
+    SCPF_choices += adder( "SCPF", "extra_A", getDay, "Sa", getResult )
+    SCPF_choices += adder( "SCPF", "extra_B", getDay, "Sa", getResult )
+    SCPF_choices += adder( "SCPF", "extra_C", getDay, "Sa", getResult )
+    SCPF_choices += adder( "SCPF", "extra_D", getDay, "Sa", getResult )
+    SCPF_choices += adder( "SCPF", "new_Test", getDay, "Sa", getResult )
+    closingHeader( "SCPF" )
+    addingHeader( "SR" )
+    SR_choices += adder( "SR", "basic", getDay, "Sa", getResult )
+    closingHeader( "SR" )
+    addingHeader( "USECASE" )
+    USECASE_choices += adder( "USECASE", "basic", getDay, "Sa", getResult )
+    closingHeader( "USECASE" )
 }
-def sunday(){
-    FUNC_choices += adder( "FUNC", "basic", false, "S", true )
-    FUNC_choices += adder( "FUNC", "extra_A", false, "S", true )
-    FUNC_choices += adder( "FUNC", "extra_B", false, "S", true )
-    HA_choices += adder( "HA", "basic", false, "S", true )
-    HA_choices += adder( "HA", "extra_A", false, "S", true )
-    HA_choices += adder( "HA", "extra_B", false, "S", true )
-    SR_choices += adder( "SR", "basic", false, "S", true )
-    SCPF_choices += adder( "SCPF", "basic", false, "S", true )
-    SCPF_choices += adder( "SCPF", "extra_A", false, "S", true )
-    SCPF_choices += adder( "SCPF", "extra_B", false, "S", true )
-    SCPF_choices += adder( "SCPF", "extra_C", false, "S", true )
-    SCPF_choices += adder( "SCPF", "extra_D", false, "S", true )
-    USECASE_choices += adder( "USECASE", "basic", false, "S", true )
+def sunday( getDay, getResult ){
+    addingHeader( "FUNC" )
+    FUNC_choices += adder( "FUNC", "basic", getDay, "S", getResult )
+    FUNC_choices += adder( "FUNC", "extra_A", getDay, "S", getResult )
+    FUNC_choices += adder( "FUNC", "extra_B", getDay, "S", getResult )
+    closingHeader( "FUNC" )
+    addingHeader( "HA" )
+    HA_choices += adder( "HA", "basic", getDay, "S", getResult )
+    HA_choices += adder( "HA", "extra_A", getDay, "S", getResult )
+    HA_choices += adder( "HA", "extra_B", getDay, "S", getResult )
+    closingHeader( "HA" )
+    addingHeader( "SCPF" )
+    SCPF_choices += adder( "SCPF", "basic", getDay, "S", getResult )
+    SCPF_choices += adder( "SCPF", "extra_A", getDay, "S", getResult )
+    SCPF_choices += adder( "SCPF", "extra_B", getDay, "S", getResult )
+    SCPF_choices += adder( "SCPF", "extra_C", getDay, "S", getResult )
+    SCPF_choices += adder( "SCPF", "extra_D", getDay, "S", getResult )
+    closingHeader( "SCPF" )
+    addingHeader( "SR" )
+    SR_choices += adder( "SR", "basic", getDay, "S", getResult )
+    closingHeader( "SR" )
+    addingHeader( "USECASE" )
+    USECASE_choices += adder( "USECASE", "basic", getDay, "S", getResult )
+    closingHeader( "USECASE" )
 }
 def adder( testCat, set, dayAdding, day, getResult ){
     result = ""
-    for( String test in AllTheTests[ testCat ].keySet()  ){
+    for( String test in AllTheTests[ testCat ].keySet() ){
         if( AllTheTests[ testCat ][ test ][ set ] ){
             if( getResult )
                 result += test + ","
             if( dayAdding )
                 dayAdder( testCat, test, day )
+            makeHtmlColList( testCat, test )
         }
     }
     return result
 }
+def initHtmlForWiki(){
+    wikiContents = '''
+    <table class="wrapped confluenceTable">
+        <colgroup>
+              <col />
+              <col />
+              <col />
+              <col />
+              <col />
+              <col />
+        </colgroup>
+        <tbody>
+            <tr>
+                <th colspan="1" class="confluenceTh">
+                    <br />
+                </th>
+                <th class="confluenceTh"><p>Monday</p></th>
+                <th class="confluenceTh"><p>Tuesday</p></th>
+                <th class="confluenceTh"><p>Wednesday</p></th>
+                <th class="confluenceTh"><p>Thursday</p></th>
+                <th class="confluenceTh"><p>Friday</p></th>
+                <th class="confluenceTh"><p>Saturday</p></th>
+                <th class="confluenceTh"><p>Sunday</p></th>
+            </tr>'''
+    for( String test in testcases.keySet() ){
+        testcases[ test ][ 'wikiContent' ] = '''
+            <tr>
+                <th colspan="1" class="confluenceTh">''' + test + '''</th>'''
+    }
+}
+def addingHeader( testCategory ){
+    testcases[ testCategory ][ 'wikiContent' ] += '''
+                <td class="confluenceTd">
+                    <ul>'''
+}
+def makeHtmlColList( testCategory, testName ){
+    testcases[ testCategory ][ 'wikiContent' ] += '''
+                        <li>'''+ testName +'''</li>'''
+
+}
+def closingHeader( testCategory ){
+    testcases[ testCategory ][ 'wikiContent' ] += '''
+                    </ul>
+                </td>'''
+}
+def closeHtmlForWiki(){
+    for( String test in testcases.keySet() ){
+        wikiContents += testcases[ test ][ 'wikiContent' ]
+        wikiContents += '''
+            </tr>'''
+    }
+    wikiContents += '''
+        </tbody>
+    </table>
+    <p><strong>Everyday</strong>, all SegmentRouting tests are built and run on every branch.</p>
+    <p>On <strong>Weekdays</strong>, all the other tests are built and run on the master branch.</p>
+    <p>On <strong>Saturdays</strong>, all the other tests are built and run on the '''+ funcs.branchWithPrefix( previous_version ) +''' branch.</p>
+    <p>On <strong>Sundays</strong>, all the other tests are built and run on the '''+ funcs.branchWithPrefix( before_previous_version ) +''' branch.</p>'''
+}
+def postToWiki( contents ){
+    node( testMachine ){
+        workspace = "/var/jenkins/workspace/all-pipeline-trigger/"
+        filename = "jenkinsSchedule.txt"
+        writeFile file: workspace + filename, text: contents
+        funcs.publishToConfluence( "false", "true",
+                                   "Automated Test Schedule",
+                                   workspace + filename )
+    }
+}
 def dayAdder( testCat, testName, dayOfWeek ){
     AllTheTests[ testCat ][ testName ][ "day" ] += dayOfWeek + ","
 }
@@ -333,7 +476,6 @@
         }
     }
 }
-
 // export Environment properties.
 def exportEnvProperty( onos_branch, test_branch, wiki, tests, postResult, manually_run, onosTag, isOldFlow ){
     stage( "export Property" ){
