diff --git a/TestON/tests/USECASE/SegmentRouting/QOS/QOS.py b/TestON/tests/USECASE/SegmentRouting/QOS/QOS.py
index cf4b699..315328f 100644
--- a/TestON/tests/USECASE/SegmentRouting/QOS/QOS.py
+++ b/TestON/tests/USECASE/SegmentRouting/QOS/QOS.py
@@ -28,7 +28,6 @@
         main.step("Start P4rt client and setup TRex")
         # Use the first available ONOS instance CLI
         onos_cli = main.Cluster.active(0).CLI
-        initial_flow_count = onos_cli.checkFlowCount()
         up4 = UP4()
         trex = Trex()
         # Get the P4RT client connected to UP4 in the first available ONOS instance
@@ -41,8 +40,6 @@
         main.step("Verify PDRs and FARs in ONOS")
         up4.verifyUp4Flow(onos_cli)
 
-        run.checkFlows(main, minFlowCount=initial_flow_count+(up4.emulated_ues*2))
-
         # Load traffic config for the current test case
         main.step("Load test JSON config")
         cfgFile = main.configPath + "/tests/" + "leaf_edge_mobile.json"
@@ -75,8 +72,6 @@
         main.step("Verify removed PDRs and FARs from ONOS")
         up4.verifyNoUesFlow(onos_cli)
 
-        run.checkFlows(main, minFlowCount=initial_flow_count)
-
         main.step("Teardown")
         trex.teardown()
         up4.teardown()
diff --git a/TestON/tests/USECASE/SegmentRouting/UP4/UP4.py b/TestON/tests/USECASE/SegmentRouting/UP4/UP4.py
index 9acdd86..556304b 100644
--- a/TestON/tests/USECASE/SegmentRouting/UP4/UP4.py
+++ b/TestON/tests/USECASE/SegmentRouting/UP4/UP4.py
@@ -32,7 +32,6 @@
         main.step("Start scapy and p4rt client")
         # Use the first available ONOS instance CLI
         onos_cli = main.Cluster.active(0).CLI
-        initial_flow_count = onos_cli.checkFlowCount()
         up4 = UP4()
         # Get the P4RT client connected to UP4 in the first available ONOS instance
         up4.setup(main.Cluster.active(0).p4rtUp4)
@@ -41,8 +40,6 @@
         up4.attachUes()
         up4.verifyUp4Flow(onos_cli)
 
-        run.checkFlows(main, minFlowCount=initial_flow_count+(up4.emulated_ues*2))
-
         # ------- Test Upstream traffic (enb->pdn)
         main.step("Test upstream traffic")
         up4.testUpstreamTraffic()
@@ -55,13 +52,11 @@
         up4.detachUes()
         up4.verifyNoUesFlow(onos_cli)
 
-        run.checkFlows(main, minFlowCount=initial_flow_count)
-
         main.step("Stop scapy and p4rt client")
         up4.teardown()
         run.cleanup(main)
 
-    def CASE2(self, main):
+    def CASE2(self):
         main.case("BESS traffic routed")
         """
         Program PDRs and FARs for UEs managed via UP4
@@ -95,7 +90,6 @@
         main.step("Start scapy and p4rt client + Scapy on BESS Host")
         # Use the first available ONOS instance CLI
         onos_cli = main.Cluster.active(0).CLI
-        initial_flow_count = onos_cli.checkFlowCount()
         up4 = UP4()
         # Get the P4RT client connected to UP4 in the first available ONOS instance
         up4.setup(main.Cluster.active(0).p4rtUp4)
@@ -114,8 +108,6 @@
         up4.attachUes()
         up4.verifyUp4Flow(onos_cli)
 
-        run.checkFlows(main, minFlowCount=initial_flow_count+(up4.emulated_ues*2))
-
         # ------------------- UPSTREAM -------------------
         # ------- eNB -> fabric -> BESS (encapped)
         main.step("Test upstream eNB -> fabric -> BESS")
@@ -245,8 +237,6 @@
         up4.detachUes()
         up4.verifyNoUesFlow(onos_cli)
 
-        run.checkFlows(main, minFlowCount=initial_flow_count)
-
         main.step("Stop scapy and p4rt client")
         up4.teardown()
         bess_host.stopScapy()
@@ -284,7 +274,6 @@
         up4_0 = UP4()
         up4_1 = UP4()
         up4_2 = UP4()
-        initial_flow_count = onos_cli_0.checkFlowCount()
 
         main.step("Program and Verify PDRs and FARs via UP4 on ONOS 0")
         up4_0.setup(main.Cluster.active(0).p4rtUp4, no_host=True)
@@ -292,8 +281,6 @@
         up4_0.verifyUp4Flow(onos_cli_0)
         up4_0.teardown()
 
-        run.checkFlows(main, minFlowCount=initial_flow_count+(up4_0.emulated_ues*2))
-
         main.step("Verify PDRs and FARs number via UP4 P4RT on ONOS 1")
         up4_1.setup(main.Cluster.active(1).p4rtUp4, no_host=True)
         utilities.assert_equal(
@@ -329,8 +316,6 @@
         up4_2.detachUes()
         up4_2.verifyNoUesFlow(onos_cli_2)
 
-        run.checkFlows(main, minFlowCount=initial_flow_count)
-
         main.step("Verify no PDRs and FARs via UP4 P4RT on ONOS 2")
         utilities.assert_equal(
             expect=True,
@@ -409,16 +394,12 @@
         up4_1 = UP4()
         up4_2 = UP4()
 
-        initial_flow_count = onos_cli_0.checkFlowCount()
-
         main.step("Program and Verify PDRs and FARs via UP4 on ONOS 0")
         up4_0.setup(main.Cluster.active(0).p4rtUp4, no_host=True)
         up4_0.attachUes()
         up4_0.verifyUp4Flow(onos_cli_0)
         up4_0.teardown()
 
-        run.checkFlows(main, minFlowCount=initial_flow_count+(up4_0.emulated_ues*2))
-
         onosPod = main.params["UP4_delete_pod"]
         # Exit from previous port forwarding, because we need to restore
         # port-forwarding after ONOS reboot.
@@ -449,8 +430,6 @@
         up4_2.detachUes()
         up4_2.verifyNoUesFlow(onos_cli_2)
 
-        run.checkFlows(main, minFlowCount=initial_flow_count)
-
         main.step("Verify no PDRs and FARs via UP4 P4RT on ONOS 2")
         utilities.assert_equal(
             expect=True,
@@ -524,8 +503,6 @@
         up4_0.verifyUp4Flow(onos_cli_0)
         up4_0.teardown()
 
-        run.checkFlows(main, minFlowCount=initial_flow_count+(up4_0.emulated_ues*2))
-
         main.step("Verify PDRs and FARs via UP4 on ONOS 1")
         up4_1.setup(main.Cluster.active(1).p4rtUp4, no_host=True)
         up4_1.verifyUp4Flow(onos_cli_1)
@@ -547,6 +524,4 @@
         up4_1.verifyNoUesFlow(onos_cli_1)
         up4_1.teardown()
 
-        run.checkFlows(main, minFlowCount=initial_flow_count)
-
         run.cleanup(main)
