diff --git a/rp_reporter/rp_reporter/batch_reporter.py b/rp_reporter/rp_reporter/batch_reporter.py
index 3f904d2..1d210c4 100755
--- a/rp_reporter/rp_reporter/batch_reporter.py
+++ b/rp_reporter/rp_reporter/batch_reporter.py
@@ -1,3 +1,5 @@
+from time import sleep
+
 import click
 import logging
 from collections import deque
@@ -13,7 +15,8 @@
 
 LOG = logging.getLogger("rp_reporter")
 
-def grep(text: List, patterns: List, context_size: int) :
+def grep(text: List, patterns: List, context_size: int,
+         blacklist: List[str] = None ) :
     """Works like `grep -rn`
     returns found text with line before and after
     :param text:
@@ -27,6 +30,9 @@
     for num, line in enumerate(text, start=1):
         context.append(f"{num} {line}")
         if any(pattern.lower() in line.lower() for pattern in patterns):
+            if any(blacklisted.lower() in line.lower()
+                   for blacklisted in blacklist):
+                continue
             if not result:
                 result = list(context)
             after_count = context_size
@@ -79,6 +85,8 @@
         tags["openstack"] = context_name.split("/")[0]
         tags["context"] = context_name.split("/")[-1]
 
+
+
     if "mosk-24.3" in job.name:
         tags["mosk_version"] = "mosk-24.3"
     elif "mosk-25.1" in job.name:
@@ -144,13 +152,23 @@
         "discovered openstack controller version is"
     ]
 
+    blacklist = [
+        "[Pipeline] error",
+        "failureDomain:",
+        "portprober_arping_target_failure",
+        "ingress:[error-pages:",
+
+    ]
+
     all_logs = job.get_logs()
-    for log in grep(text=all_logs, patterns=catch_logs, context_size=8):
+    for log in grep(text=all_logs, patterns=catch_logs, context_size=8,
+                    blacklist=blacklist):
         # LOG.error("Attach logs {}".format("\n".join(log)))
         rp_client.log(time=timestamp(),
                       message="\n".join(log),
                       item_id=subjob_item_id
                       )
+        sleep(0.001)
     # ipdb.set_trace()
     rp_client.finish_test_item(item_id=subjob_item_id,
                                status=status,
