diff --git a/testrail_bot/control/celery_tasks/schedules_pipeline.py b/testrail_bot/control/celery_tasks/schedules_pipeline.py
index 1ad090a..080519a 100644
--- a/testrail_bot/control/celery_tasks/schedules_pipeline.py
+++ b/testrail_bot/control/celery_tasks/schedules_pipeline.py
@@ -1,5 +1,5 @@
 import os
-from datetime import datetime
+from datetime import datetime, timedelta
 
 from .. import models
 from . import tasks
@@ -81,3 +81,33 @@
         path=path,
         is_testplan=True,
     )
+
+
+def task_to_delete_old_2m_testruns():
+    """
+    Delete test runs after 2 month
+    Clear mechanism 31.12.XXXX - 2 month
+    delete 1-31.10.XXXX and older
+    """
+    today = datetime.today()
+    border_date = (today - timedelta(days=30 * 2)).strftime("%Y-%m-%d")
+    runs = models.TestRailTestRun.objects.all()
+    for run in runs:
+        if run.created_at.strftime("%Y-%m-%d") < border_date:
+            run.delete()
+            print(run.created_at.strftime("%Y-%m-%d"))
+
+
+def task_to_delete_old_2m_reports():
+    """
+    Delete reports after 2 month
+    Clear mechanism 31.12.XXXX - 2 month
+    delete 1-31.10.XXXX and older
+    """
+    today = datetime.today()
+    border_date = (today - timedelta(days=30 * 2)).strftime("%Y-%m-%d")
+    reports = models.TestRailReport.objects.order_by("-created_at").all()
+    for report in reports:
+        if report.created_at.strftime("%Y-%m-%d") < border_date:
+            report.delete()
+            print(report.created_at.strftime("%Y-%m-%d"))
diff --git a/testrail_bot/control/celery_tasks/tasks.py b/testrail_bot/control/celery_tasks/tasks.py
index cd18f6d..3d090c2 100644
--- a/testrail_bot/control/celery_tasks/tasks.py
+++ b/testrail_bot/control/celery_tasks/tasks.py
@@ -66,3 +66,27 @@
     :return:
     """
     schedules_pipeline.task_to_check_testplan(testplan_id)
+
+
+@shared_task
+def delete_old_2m_testruns(*args, **kwargs):
+    """
+    Finds today testplan
+    Creates TestRun with this id
+    Creates Periodic task to analyze created TestRun
+
+    :return:
+    """
+    schedules_pipeline.task_to_delete_old_2m_testruns()
+
+
+@shared_task
+def delete_old_2m_reports(*args, **kwargs):
+    """
+    Finds today testplan
+    Creates TestRun with this id
+    Creates Periodic task to analyze created TestRun
+
+    :return:
+    """
+    schedules_pipeline.task_to_delete_old_2m_reports()
diff --git a/testrail_bot/control/migrations/0013_testrailtestrun_created_at_and_more.py b/testrail_bot/control/migrations/0013_testrailtestrun_created_at_and_more.py
new file mode 100644
index 0000000..bbbee9a
--- /dev/null
+++ b/testrail_bot/control/migrations/0013_testrailtestrun_created_at_and_more.py
@@ -0,0 +1,48 @@
+# Generated by Django 4.2.7 on 2024-06-19 12:59
+
+from django.db import migrations, models
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("control", "0012_alter_suitepassrate_suite_id"),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name="testrailtestrun",
+            name="created_at",
+            field=models.DateTimeField(
+                auto_now_add=True, default=django.utils.timezone.now
+            ),
+            preserve_default=False,
+        ),
+        migrations.AlterField(
+            model_name="cronperiodictask",
+            name="task_name",
+            field=models.CharField(
+                choices=[
+                    (
+                        "control.celery_tasks.tasks.check_today_testplan",
+                        "Check today testplan",
+                    ),
+                    (
+                        "control.celery_tasks.tasks.check_specific_testplan",
+                        "Check specific testplan",
+                    ),
+                    (
+                        "control.celery_tasks.tasks.delete_old_2m_testruns",
+                        "Delete previous 2-month TestRuns(for bot view)",
+                    ),
+                    (
+                        "control.celery_tasks.tasks.delete_old_2m_reports",
+                        "Delete previous 2-month Reports(for bot view)",
+                    ),
+                ],
+                default="control.celery_tasks.tasks.check_today_testplan",
+                max_length=300,
+            ),
+        ),
+    ]
diff --git a/testrail_bot/control/models.py b/testrail_bot/control/models.py
index b438dec..f613292 100644
--- a/testrail_bot/control/models.py
+++ b/testrail_bot/control/models.py
@@ -51,6 +51,7 @@
     filter_last_traceback = models.BooleanField(default=True)
     created_before = models.DateField(default=now)
     created_after = models.DateField(default=default_created_after)
+    created_at = models.DateTimeField(auto_now_add=True)
 
     @property
     def text_filters(self):
@@ -155,6 +156,16 @@
         "Check specific testplan",
         ["testplan_id_arg"],
     ),
+    (
+        "control.celery_tasks.tasks.delete_old_2m_testruns",
+        "Delete previous 2-month TestRuns(for bot view)",
+        [],
+    ),
+    (
+        "control.celery_tasks.tasks.delete_old_2m_reports",
+        "Delete previous 2-month Reports(for bot view)",
+        [],
+    ),
 ]
 
 TASK_CHOICES = list(map(lambda x: x[:-1], TASKS))
diff --git a/testrail_bot/control/templates/control/index.html b/testrail_bot/control/templates/control/index.html
index 8736ef9..ca89024 100644
--- a/testrail_bot/control/templates/control/index.html
+++ b/testrail_bot/control/templates/control/index.html
@@ -21,6 +21,8 @@
             {% else %}
                 Run from {{run.plan_name}} plan in {{run.project_name}} project
             {% endif %}
+            <span class="justify-content-end px-3 mx-2 fw-bold rounded-pill float-sm-end
+                text-dark bg-white">created at {{ run.created_at }}</span>
         </a>
     {% endfor %}
 </div>
diff --git a/testrail_bot/control/templates/control/reports.html b/testrail_bot/control/templates/control/reports.html
index 337349b..f62a614 100644
--- a/testrail_bot/control/templates/control/reports.html
+++ b/testrail_bot/control/templates/control/reports.html
@@ -11,7 +11,8 @@
         {% endif %}
         ">
         {{report.report_name}}
-
+        <span class="justify-content-end px-3 mx-2 fw-bold rounded-pill float-sm-end
+            text-dark bg-white">created at {{ report.created_at }}</span>
         </a>
     {% endfor %}
 </div>
