diff --git a/TestON/tests/FUNCintent/Dependency/FuncIntentFunction.py b/TestON/tests/FUNCintent/Dependency/FuncIntentFunction.py
index 58d5f34..f82b8c8 100644
--- a/TestON/tests/FUNCintent/Dependency/FuncIntentFunction.py
+++ b/TestON/tests/FUNCintent/Dependency/FuncIntentFunction.py
@@ -1357,3 +1357,35 @@
         return main.FALSE
     else:
         return main.TRUE
+
+def report( main ):
+    """
+    Report errors/warnings/exceptions
+    """
+
+    main.ONOSbench.logReport( main.ONOSip[ 0 ],
+                              [ "INFO",
+                                "FOLLOWER",
+                                "WARN",
+                                "flow",
+                                "ERROR",
+                                "Except" ],
+                              "s" )
+
+    main.log.info( "ERROR report: \n" )
+    for i in range( main.numCtrls ):
+        main.ONOSbench.logReport( main.ONOSip[ i ],
+                [ "ERROR" ],
+                "d" )
+
+    main.log.info( "EXCEPTIONS report: \n" )
+    for i in range( main.numCtrls ):
+        main.ONOSbench.logReport( main.ONOSip[ i ],
+                [ "Except" ],
+                "d" )
+
+    main.log.info( "WARNING report: \n" )
+    for i in range( main.numCtrls ):
+        main.ONOSbench.logReport( main.ONOSip[ i ],
+                [ "WARN" ],
+                "d" )
diff --git a/TestON/tests/FUNCintent/FUNCintent.params b/TestON/tests/FUNCintent/FUNCintent.params
index 745426f..81e5bb2 100644
--- a/TestON/tests/FUNCintent/FUNCintent.params
+++ b/TestON/tests/FUNCintent/FUNCintent.params
@@ -13,7 +13,7 @@
     # 3000 - Test single to multi point intents
     # 4000 - Test multi to single point intents
 
-    <testcases>1,[2,10,12,8,13,1000,2000,3000,4000,5000,9,14]*2,[2,11,12,8,13,1000,2000,3000,4000,5000,9,14]*2</testcases>
+    <testcases>1,[2,10,12,8,13,1000,2000,3000,4000,5000,14]*2,[2,11,12,8,13,1000,2000,3000,4000,5000,14]*2</testcases>
 
     <SCALE>
         <size>1,3,1,3</size>
diff --git a/TestON/tests/FUNCintent/FUNCintent.py b/TestON/tests/FUNCintent/FUNCintent.py
index 6a9a774..0b690c7 100644
--- a/TestON/tests/FUNCintent/FUNCintent.py
+++ b/TestON/tests/FUNCintent/FUNCintent.py
@@ -236,6 +236,8 @@
         # Remove the first element in main.scale list
         main.scale.remove( main.scale[ 0 ] )
 
+        main.intentFunction.report( main )
+
     def CASE8( self, main ):
         """
         Compare Topo
@@ -315,41 +317,6 @@
                                  onpass="ONOS correctly discovered the topology",
                                  onfail="ONOS incorrectly discovered the topology" )
 
-
-    def CASE9( self, main ):
-        '''
-            Report errors/warnings/exceptions
-        '''
-        main.case( main.testName + " Report - " + str( main.numCtrls ) +
-                   " NODE(S) - OF " + main.OFProtocol )
-
-        main.ONOSbench.logReport( main.ONOSip[ 0 ],
-                                  [ "INFO",
-                                    "FOLLOWER",
-                                    "WARN",
-                                    "flow",
-                                    "ERROR",
-                                    "Except" ],
-                                  "s" )
-
-        main.step( "ERROR report: \n" )
-        for i in range( main.numCtrls ):
-            main.ONOSbench.logReport( main.ONOSip[ i ],
-                    [ "ERROR" ],
-                    "d" )
-
-        main.step( "EXCEPTIONS report: \n" )
-        for i in range( main.numCtrls ):
-            main.ONOSbench.logReport( main.ONOSip[ i ],
-                    [ "Except" ],
-                    "d" )
-
-        main.step( "WARNING report: \n" )
-        for i in range( main.numCtrls ):
-            main.ONOSbench.logReport( main.ONOSip[ i ],
-                    [ "WARN" ],
-                    "d" )
-
     def CASE10( self, main ):
         """
             Start Mininet topology with OF 1.0 switches
@@ -642,6 +609,8 @@
         main.intentFunction.checkLeaderChange( intentLeadersOld,
                                                 intentLeadersNew )
 
+        main.intentFunction.report( main )
+
     def CASE2000( self, main ):
         """
             Add point intents between 2 hosts:
@@ -925,6 +894,8 @@
                                         "failed using IPV4 type with " +
                                         "no MAC addresses" )
 
+        main.intentFunction.report( main )
+
     def CASE3000( self, main ):
         """
             Add single point to multi point intents
@@ -1066,6 +1037,8 @@
                                         " with IPV4 type and MAC addresses" +
                                         " in the same VLAN")
 
+        main.intentFunction.report( main )
+
     def CASE4000( self, main ):
         """
             Add multi point to single point intents
@@ -1249,3 +1222,5 @@
                                         "between two IPV4 hosts",
                                  onfail="IPV4: Host intent test failed " +
                                         "between two IPV4 hosts")
+
+        main.intentFunction.report( main )
