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 )
