diff --git a/testrail_bot/control/celery_tasks/tasks.py b/testrail_bot/control/celery_tasks/tasks.py
index 71b6783..6450c68 100644
--- a/testrail_bot/control/celery_tasks/tasks.py
+++ b/testrail_bot/control/celery_tasks/tasks.py
@@ -24,3 +24,17 @@
 @shared_task
 def update_plot_data():
     jenkins_pipeline.update_plot()
+
+
+@shared_task
+def get_test_passability_in_suite(diff_id: int, report_id: int):
+    try:
+        testrail_pipeline.get_test_passrate_in_suite(diff_id, report_id)
+    except BaseException as e:
+        print(f"Caught next exception: {e}")
+        traceback.print_exc()
+        from .. import models
+        r = models.SuitePassRate.objects.get(pk=report_id)
+        r.status = "Unexpected fail"
+        r.finished = True
+        r.save()
diff --git a/testrail_bot/control/celery_tasks/test_rail_api.py b/testrail_bot/control/celery_tasks/test_rail_api.py
index e5932bc..d77b511 100644
--- a/testrail_bot/control/celery_tasks/test_rail_api.py
+++ b/testrail_bot/control/celery_tasks/test_rail_api.py
@@ -66,7 +66,7 @@
                                 run_name: str = None,
                                 created_after: str = None,
                                 created_before: str = None,
-                                created_by: int = None) -> \
+                                created_by: int = None, **kwargs) -> \
         Iterator[List[dict]]:
     limit_step = 100
     suite_id = api.cases.get_case(case_id=case_id)["suite_id"]
diff --git a/testrail_bot/control/celery_tasks/testrail_pipeline.py b/testrail_bot/control/celery_tasks/testrail_pipeline.py
index 175fe74..f1e4bf0 100644
--- a/testrail_bot/control/celery_tasks/testrail_pipeline.py
+++ b/testrail_bot/control/celery_tasks/testrail_pipeline.py
@@ -1,8 +1,11 @@
+import datetime
 import difflib
-from typing import TextIO, List, Tuple, Optional, Iterator
+import json
+from typing import TextIO, List, Tuple, Optional, Iterator, Dict
 
 from datetime import datetime as dt
 from datetime import timedelta
+from itertools import islice
 from . import filters
 from .enums import StatusEnum
 from . import test_rail_api
@@ -242,7 +245,7 @@
                     "{defect}</a>".format(defect=sim_result["defects"])
         test_link = "<a href=https://mirantis.testrail.com/index.php?/tests/" \
                     "view/{test_id}>{test_id}</a>".format(
-                        test_id=sim_result["test_id"])
+            test_id=sim_result["test_id"])
         status_id = int(sim_result['status_id'])
         if status_id in [StatusEnum.retest, StatusEnum.failed,
                          StatusEnum.blocked]:
@@ -372,3 +375,99 @@
         f.write("Test processing finished")
         f.flush()
         finish_report(report)
+
+
+def get_cases(project_id: int, suite_id: int,
+              limit: int = 250,
+              max_limit: int = 1000,
+              filter: str = None,
+              created_after: int = None,
+              created_before: int = None,
+              ) -> Iterator[Dict]:
+    for offset in range(0, max_limit, limit):
+        cases = test_rail_api.api.cases.get_cases(
+            project_id=project_id,
+            suite_id=suite_id,
+            limit=limit,
+            offset=offset,
+            created_after=created_after,
+            created_before=created_before,
+            filter=filter).get("cases")
+
+        if not cases:
+            return
+        for case in cases:
+            yield case
+
+
+def get_test_passrate_in_suite(diff_id: int, report_id: int) -> Dict:
+    """
+    Returns a percentage of passed tests for each test in the suite
+
+    :param diff_id: ID of models.DiffOfSuitesPassRates object in the DB to
+    retrieve settings for comparing test suites
+    :param report_id: ID of models.SuitePassRate object which contains a
+    results of fetching passrates for specific test suite
+
+    :return: dict with
+    {"test_title": {
+        "rate": 40,
+        "case_id": 12345
+        },
+    "test_title2": {
+        "rate": 80,
+        "case_id": 12346
+        }
+    }
+    """
+
+    diff_obj: models.DiffOfSuitesPassRates = \
+        models.DiffOfSuitesPassRates.objects.get(pk=diff_id)
+    report: models.SuitePassRate = models.SuitePassRate.objects.get(
+        pk=report_id)
+    suite_id = report.suite_id
+
+    project_id = test_rail_api.get_project_id("Mirantis Cloud Platform")
+    report.suite_name = test_rail_api.get_suite_by_id(suite_id)["name"]
+
+    end_lookup_date = datetime.datetime.now()
+    start_lookup_date = end_lookup_date + timedelta(days=-15)
+    _filters = {
+        "created_by": 109,
+        "plan_name": "[MCP2.0]OSCORE",
+        "created_before": int(dt.timestamp(end_lookup_date)),
+        "created_after": int(dt.timestamp(start_lookup_date)),
+    }
+
+    passrate_by_cases = dict()
+    params = dict(project_id=project_id,
+                  suite_id=suite_id,
+                  filter=diff_obj.test_keyword,
+                  limit=200)
+    for _n, case in enumerate(get_cases(**params), start=1):
+        case_title = case['title']
+        case_id = case["id"]
+        report.status = f"Current case: {_n}"
+        report.save()
+        # Limit generator to the list with  the length defined in the
+        # DiffOfSuitesPassRates
+        last_case_results = list(islice(
+            test_rail_api.get_result_history_for_case(case_id, **_filters),
+            diff_obj.limit))
+
+        passrate_by_cases[case_title] = dict()
+        passrate_by_cases[case_title]['case_id'] = case_id
+        if last_case_results:
+            passed_tests = [x for x in last_case_results
+                            if x[-1]["status_id"] == StatusEnum.passed]
+            passrate_by_cases[case_title]['rate'] = \
+                len(passed_tests) * 100 / diff_obj.limit
+        else:
+            passrate_by_cases[case_title]['rate'] = "No result found"
+        report.passrate_by_tests = json.dumps(passrate_by_cases,
+                                              indent=4)
+        report.status = f"Current case: {_n}"
+        report.save()
+    report.finished = True
+    report.save()
+    return passrate_by_cases
diff --git a/testrail_bot/control/forms.py b/testrail_bot/control/forms.py
index 2bdffe3..a7f28bb 100644
--- a/testrail_bot/control/forms.py
+++ b/testrail_bot/control/forms.py
@@ -1,6 +1,6 @@
 from datetime import date
 from django import forms
-from .models import TestRailTestRun
+from .models import TestRailTestRun, DiffOfSuitesPassRates, SuitePassRate
 
 
 class TestRunForm(forms.ModelForm):
@@ -29,3 +29,22 @@
             "filter_func": "Leave blank if not used",
         }
 
+
+class DiffPassRatesForm(forms.ModelForm):
+    class Meta:
+        model = DiffOfSuitesPassRates
+        fields = ["limit", "test_keyword"]
+        labels = {
+            "test_keyword": "Pattern to search by tests",
+            "limit": "Count of tests to define the passrate. Don't recommend "
+                     "to use a number greater that 10"
+        }
+
+
+class SuitePassRateForm(forms.ModelForm):
+    class Meta:
+        model = SuitePassRate
+        fields = ["suite_id"]
+        labels = {
+            "suite_id": "Suite ID"
+        }
diff --git a/testrail_bot/control/migrations/0003_suitepassrate_diffofsuitespassrates.py b/testrail_bot/control/migrations/0003_suitepassrate_diffofsuitespassrates.py
new file mode 100644
index 0000000..6215a62
--- /dev/null
+++ b/testrail_bot/control/migrations/0003_suitepassrate_diffofsuitespassrates.py
@@ -0,0 +1,36 @@
+# Generated by Django 4.2.7 on 2023-11-20 17:46
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('control', '0002_testrailtestrun_checked_tests'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='SuitePassRate',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('suite_id', models.CharField(choices=[('10651', '[MCP2.0_ROCKY]Tempest'), ('10635', '[MCP2.0_STEIN]Tempest'), ('10653', '[MCP2.0_TRAIN]Tempest'), ('10710', '[MCP2.0_USSURI]Tempest'), ('10888', '[MCP2.0_VICTORIA]Tempest'), ('11167', '[MCP2.0_WALLABY]Tempest'), ('11188', '[MCP2.0_XENA]Tempest'), ('11170', '[MCP2.0_YOGA]Tempest'), ('11192', '[MCP2.0_ANTELOPE]Tempest'), ('11193', '[MCP2.0_ANTELOPE]Stepler'), ('10886', '[MCP2.0_USSURI]Stepler'), ('10887', '[MCP2.0_VICTORIA]Stepler'), ('11171', '[MCP2.0_YOGA]Stepler')], max_length=20)),
+                ('suite_name', models.CharField(blank=True, max_length=100)),
+                ('passrate_by_tests', models.JSONField(blank=True, default='{}')),
+                ('status', models.TextField(blank=True, max_length=300)),
+                ('finished', models.BooleanField(blank=True, default=False)),
+            ],
+        ),
+        migrations.CreateModel(
+            name='DiffOfSuitesPassRates',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('started_at', models.DateTimeField(auto_created=True, auto_now=True)),
+                ('limit', models.IntegerField(blank=True, default=10)),
+                ('test_keyword', models.CharField(blank=True, default='', max_length=300)),
+                ('report1', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, related_name='report1', to='control.suitepassrate')),
+                ('report2', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, related_name='report2', to='control.suitepassrate')),
+            ],
+        ),
+    ]
diff --git a/testrail_bot/control/models.py b/testrail_bot/control/models.py
index f0e014f..0956b1a 100644
--- a/testrail_bot/control/models.py
+++ b/testrail_bot/control/models.py
@@ -78,3 +78,42 @@
 class ActionLog(models.Model):
     name = models.CharField(max_length=500)
     date = models.DateTimeField(null=True)
+
+
+class SuitePassRate(models.Model):
+    SUITE_CHOICES = [
+        ("10651", "[MCP2.0_ROCKY]Tempest"),
+        ("10635", "[MCP2.0_STEIN]Tempest"),
+        ("10653", "[MCP2.0_TRAIN]Tempest"),
+        ("10710", "[MCP2.0_USSURI]Tempest"),
+        ("10888", "[MCP2.0_VICTORIA]Tempest"),
+        ("11167", "[MCP2.0_WALLABY]Tempest"),
+        ("11188", "[MCP2.0_XENA]Tempest"),
+        ("11170", "[MCP2.0_YOGA]Tempest"),
+        ("11192", "[MCP2.0_ANTELOPE]Tempest"),
+
+        ("11193", "[MCP2.0_ANTELOPE]Stepler"),
+        ("10886", "[MCP2.0_USSURI]Stepler"),
+        ("10887", "[MCP2.0_VICTORIA]Stepler"),
+        ("11171", "[MCP2.0_YOGA]Stepler"),
+    ]
+    suite_id = models.CharField(max_length=20, choices=SUITE_CHOICES)
+    suite_name = models.CharField(max_length=100, blank=True)
+    passrate_by_tests = models.JSONField(default="{}", blank=True)
+    status = models.TextField(max_length=300, blank=True)
+    finished = models.BooleanField(default=False, blank=True)
+
+
+class DiffOfSuitesPassRates(models.Model):
+    limit = models.IntegerField(default=10, blank=True)
+    test_keyword = models.CharField(default="", max_length=300, blank=True)
+    report1 = models.ForeignKey(to=SuitePassRate,
+                                related_name="report1",
+                                on_delete=models.CASCADE,
+                                blank=True)
+    report2 = models.ForeignKey(to=SuitePassRate,
+                                related_name="report2",
+                                on_delete=models.CASCADE,
+                                blank=True)
+    started_at = models.DateTimeField(auto_created=True,
+                                      auto_now=True)
diff --git a/testrail_bot/control/template_tags/custom_tags.py b/testrail_bot/control/template_tags/custom_tags.py
new file mode 100644
index 0000000..92e203a
--- /dev/null
+++ b/testrail_bot/control/template_tags/custom_tags.py
@@ -0,0 +1,10 @@
+from django.template.defaulttags import register
+
+
+@register.filter
+def is_numberic(value):
+    try:
+        float(value)
+        return True
+    except ValueError:
+        return False
diff --git a/testrail_bot/control/templates/base.html b/testrail_bot/control/templates/base.html
index d2dd9a3..4bd5e45 100644
--- a/testrail_bot/control/templates/base.html
+++ b/testrail_bot/control/templates/base.html
@@ -25,6 +25,8 @@
             <li class="nav-item">
                 <a class="nav-link" href="{% url 'list_reports' %}">Reports</a></li>
             <li class="nav-item">
+                <a class="nav-link" href="{% url 'list_of_comparing_reports' %}">Compare Suites</a></li>
+            <li class="nav-item">
                 <a class="nav-link" href="{% url 'help' %}">Help</a></li>
             <li class="nav-item">
                 <a class="nav-link" href="{% url 'jenkins_plot' %}">Jenkins
diff --git a/testrail_bot/control/templates/control/compare_suites.html b/testrail_bot/control/templates/control/compare_suites.html
new file mode 100644
index 0000000..f5905fa
--- /dev/null
+++ b/testrail_bot/control/templates/control/compare_suites.html
@@ -0,0 +1,100 @@
+{% extends "base.html" %}
+{% load bootstrap5 %}
+{% load custom_tags %}
+{% block section %}
+
+{% if is_finished != None %}
+    {% if is_finished %}
+        <i>Generating completed</i>
+    {% else %}
+        <meta http-equiv="refresh" content="10">
+        <i>Generating in progress...</i>
+    {% endif %}
+{% endif %}
+
+<div class="p-2 border">
+  <h3>Compare Suites</h3>
+  <div class="input-group inline">
+    {% bootstrap_form_errors diff_form type='non_fields' %}
+    {% bootstrap_form_errors report1_form type='non_fields' %}
+    {% bootstrap_form_errors report2_form type='non_fields' %}
+    <form action="{% url 'submit_suites' %}" method="post" class="form">
+    {% csrf_token %}
+      <div class="col-xs-8 d-inline-flex">
+        {% bootstrap_field report1_form.suite_id size='sm' %}</div>
+      <div class="col-xs-8 d-inline-flex">
+        {% bootstrap_field report2_form.suite_id size='sm' %}</div>
+    <div class="col-xs-8">
+        {% bootstrap_field diff_form.test_keyword  size='sm' %}</div>
+    <div class="col-xs-8">
+        {% bootstrap_field diff_form.limit  size='sm' %}</div>
+
+    <input type="submit" class="btn btn-primary m-1"
+           value="Compare results" />
+    </form>
+  </div>
+
+  {% if is_finished or diff_table %}
+    Total: {{ diff_table | length  }}
+    <table id="diff_table" class="p-4 table table-sm border">
+      <tbody>
+      <tr>
+          <th></th>
+          <th>{% if report1.finished %} Completed
+              {% else %} in progress...{% endif %}
+          </th>
+          <th>
+              {% if report2.finished %} Completed
+              {% else %} in progress...{% endif %}
+          </th>
+      </tr>
+      <tr>
+          <th></th>
+          <th>{{ report1.suite_name}}
+          </th>
+          <th>
+              {{ report2.suite_name}}
+          </th>
+      </tr>
+      <tr>
+          <th></th>
+          <th>
+              {{ report1.status}}
+          </th>
+          <th>
+              {{ report2.status}}
+          </th>
+      </tr>
+      {% for test_name, probabilities in diff_table.items %}
+      <tr>
+        <th scope="row">{{ test_name }}</th>
+            {% for prob in probabilities %}
+                {% if prob %}
+                  <td>
+                <a href="https://mirantis.testrail.com/index.php?/cases/results/{{ prob.case_id }}"
+                class="text-decoration-none
+                  {% if prob.rate|is_numberic %}
+                    {% if prob.rate > 90 %}
+                      badge bg-success
+                    {% elif prob.rate > 10 %}
+                      badge bg-warning
+                    {% else %}
+                      badge bg-danger
+                    {% endif %}
+                  {% endif%}
+">
+                   {{ prob.rate }}</a>
+                  </td>
+                {% else %}
+                    <td> Not found </td>
+                {% endif %}
+            {% endfor %}
+      </tr>
+      {% endfor %}
+      </tbody>
+    </table>
+  {% endif %}
+<!--    for test purposes only -->
+<!--    <pre class="text-wrap"> {{data | safe}}</pre>-->
+</div>
+{% endblock %}
diff --git a/testrail_bot/control/templates/control/list_comparing_suites.html b/testrail_bot/control/templates/control/list_comparing_suites.html
new file mode 100644
index 0000000..8d90718
--- /dev/null
+++ b/testrail_bot/control/templates/control/list_comparing_suites.html
@@ -0,0 +1,29 @@
+{% extends "base.html" %}
+{% load bootstrap5 %}
+{% block section %}
+    <div class="p-2 border">
+        <input type="button"
+               onclick="location.href='{% url 'compare_suites' %}'"
+               class="btn btn-primary m-1"
+               value="Start new comparing" />
+
+        {% for report in reports %}
+        <a href="{% url 'report_comparing_suites' report.id  %}"
+            class="list-group-item
+                {% if report.report1.finished and report.report2.finished  %}
+                    list-group-item-success
+                {% else %}
+                    list-group-item-warning
+                {% endif %}
+           ">
+            <b>{{report.report1.suite_name}}</b> vs.
+            <b>{{report.report2.suite_name}}</b>
+
+            {% if report.test_keyword %}
+              [{{ report.test_keyword }}]
+            {% endif %}
+            started at {{ report.started_at |date:'Y-m-d H:i:s' }}
+            </a>
+        {% endfor %}
+    </div>
+{% endblock %}
diff --git a/testrail_bot/control/urls.py b/testrail_bot/control/urls.py
index d5b717f..6592132 100644
--- a/testrail_bot/control/urls.py
+++ b/testrail_bot/control/urls.py
@@ -14,6 +14,15 @@
          name="delete_report"),
     path('index/', views.index, name='index'),
     path("help/", views.show_help, name="help"),
-    path("update_jenkins_plot", views.update_jenkins_plot, name="update_jenkins"),
-    path("jenkins_plot", views.jenkins_plot, name="jenkins_plot")
+    path("update_jenkins_plot",
+         views.update_jenkins_plot,
+         name="update_jenkins"),
+    path("jenkins_plot", views.jenkins_plot, name="jenkins_plot"),
+    path("compare_suites/new/", views.compare_suites, name="compare_suites"),
+    path("compare_suites/",
+         views.list_of_comparing_reports,
+         name="list_of_comparing_reports"),
+    path("compare_suites/submit/", views.submit_suites, name="submit_suites"),
+    path("compare_suites/<int:report_id>/", views.report_comparing_suites,
+         name="report_comparing_suites"),
 ]
diff --git a/testrail_bot/control/utils.py b/testrail_bot/control/utils.py
new file mode 100644
index 0000000..2dabafe
--- /dev/null
+++ b/testrail_bot/control/utils.py
@@ -0,0 +1,57 @@
+from parse import parse
+from typing import Dict, List
+
+
+def parse_title(test_name):
+    # Sometimes id can be without the closing ] symbol
+    if "[" in test_name and "]" not in test_name:
+        test_name += "]"
+    token_count = test_name.split(".").__len__()
+
+    if test_name.startswith("=="):
+        return test_name
+
+    if test_name.startswith(".setUp") or test_name.startswith(".tearDown"):
+        fmt = "{test_title}(" + "{}." * (token_count - 2) + "{class_name})"
+        r = parse(fmt, test_name)
+        return f"{r['class_name']}.{r['test_title']}".strip()
+    try:
+        fmt = "{}." * (token_count - 2) + "{class_name}.{test_title}[{id}]"
+        r = parse(fmt, test_name)
+        return f"{r['test_title']}[{r['id']}]"
+    except TypeError:
+        # return file_name.test_class.test_name in other complicated cases
+        return '.'.join(test_name.split(".")[:3])
+
+
+def short_names_for_dict(_dict):
+    __dict = {}
+    for _k in _dict.keys():
+        __k = parse_title(_k)
+        # Replace only those keys which are absent in the dict or empty
+        # (defined as "No result found")
+        if __dict.get(__k) == "No result found" or not __dict.get(__k):
+            __dict[__k] = _dict[_k]
+    return __dict
+
+
+def get_dict_diff(dict1: dict,
+                  dict2: dict,
+                  compare_by_key=None) -> Dict[str, List]:
+    all_keys = sorted(set(list(dict1.keys()) + list(dict2.keys())))
+
+    result = dict()
+    for k in all_keys:
+        if compare_by_key:
+            if dict1.get(k, {}).get(compare_by_key) == dict2.get(k, {}).get(
+                    compare_by_key):
+                continue
+        else:
+            if dict1.get(k) == dict2.get(k):
+                continue
+        result[k] = [dict1.get(k), dict2.get(k)]
+    return result
+
+
+if __name__ == "__main__":
+    pass
diff --git a/testrail_bot/control/views.py b/testrail_bot/control/views.py
index 42b87c0..0ebdf41 100644
--- a/testrail_bot/control/views.py
+++ b/testrail_bot/control/views.py
@@ -7,7 +7,9 @@
 
 from . import models
 from . import forms
-from .celery_tasks.tasks import process_run, update_plot_data
+from .celery_tasks.tasks import process_run, update_plot_data, \
+    get_test_passability_in_suite
+from .utils import short_names_for_dict, get_dict_diff
 
 
 def index(request):
@@ -55,7 +57,8 @@
 def single_report(request, report_id):
     report = models.TestRailReport.objects.get(pk=report_id)
     data = report.path.read().decode("utf-8")
-    if request.method == "POST" and request.is_ajax():
+    if request.method == "POST" \
+            and request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest':
         return HttpResponse(
             json.dumps({"data": data, "finished": report.finished}),
             content_type="application/json")
@@ -151,3 +154,80 @@
         request, "control/jenkins_plot.html",
         {"update_date": update_date, "update_started": update_started,
          "job_names": enumerate(job_names, 1)})
+
+
+def submit_suites(request):
+    form = forms.DiffPassRatesForm(request.POST)
+    if not form.is_valid():
+        print(f"{form.errors=}")
+        return
+    report1 = models.SuitePassRate(suite_id=request.POST["first-suite_id"])
+    report1.save()
+    report2 = models.SuitePassRate(suite_id=request.POST["second-suite_id"])
+    report2.save()
+
+    diff_model = models.DiffOfSuitesPassRates(
+        report1=report1,
+        report2=report2,
+        limit=form.cleaned_data["limit"],
+        test_keyword=form.cleaned_data["test_keyword"]
+    )
+    diff_model.save()
+    get_test_passability_in_suite.delay(diff_model.id, report1.id)
+    get_test_passability_in_suite.delay(diff_model.id, report2.id)
+
+    return redirect("report_comparing_suites", diff_model.id)
+
+
+def compare_suites(request):
+    if request.method == "POST":
+        return submit_suites(request)
+
+    diff_form = forms.DiffPassRatesForm()
+    report1_form = forms.SuitePassRateForm(prefix='first')
+    report2_form = forms.SuitePassRateForm(prefix='second')
+
+    return render(
+        request, "control/compare_suites.html",
+        {
+         "diff_form": diff_form,
+         "report1_form": report1_form,
+         "report2_form": report2_form,
+         "finished": None
+        })
+
+
+def list_of_comparing_reports(request):
+    list_of_reports = models.DiffOfSuitesPassRates.objects.all()
+    return render(
+        request, "control/list_comparing_suites.html",
+        {
+            "reports": list_of_reports
+        })
+
+
+def report_comparing_suites(request, report_id):
+    report = models.DiffOfSuitesPassRates.objects.get(pk=report_id)
+    passrate1 = short_names_for_dict(json.loads(
+        report.report1.passrate_by_tests))
+    passrate2 = short_names_for_dict(json.loads(
+        report.report2.passrate_by_tests))
+
+    diff_table = get_dict_diff(dict1=passrate1,
+                               dict2=passrate2,
+                               compare_by_key="rate")
+    diff_form = forms.DiffPassRatesForm(instance=report)
+    report1_form = forms.SuitePassRateForm(instance=report.report1,
+                                           prefix="first")
+    report2_form = forms.SuitePassRateForm(instance=report.report2,
+                                           prefix="second")
+
+    return render(
+        request, "control/compare_suites.html",
+        {"diff_form": diff_form,
+         "report1_form": report1_form,
+         "report2_form": report2_form,
+         "report1": report.report1,
+         "report2": report.report2,
+         "is_finished": report.report1.finished and report.report2.finished,
+         "diff_table": diff_table})
diff --git a/testrail_bot/requirements.txt b/testrail_bot/requirements.txt
index 41fe5c8..d0c566a 100644
--- a/testrail_bot/requirements.txt
+++ b/testrail_bot/requirements.txt
@@ -1,5 +1,5 @@
 celery==4.4.6
-Django==3.0.7
+Django==4.2.7
 django-bootstrap-v5==1.0.11
 psycopg2-binary==2.8.5
 redis==3.5.3
@@ -8,4 +8,6 @@
 python-jenkins==1.7.0
 matplotlib==3.3.2
 retry==0.9.2
-
+psycopg2==2.9.9
+parse==1.19.1
+rpdb==0.1.6
diff --git a/testrail_bot/testrail_bot/settings.py b/testrail_bot/testrail_bot/settings.py
index a40279d..0dfc606 100644
--- a/testrail_bot/testrail_bot/settings.py
+++ b/testrail_bot/testrail_bot/settings.py
@@ -65,6 +65,9 @@
                 'django.contrib.auth.context_processors.auth',
                 'django.contrib.messages.context_processors.messages',
             ],
+            'libraries': {
+                'custom_tags': 'control.template_tags.custom_tags'
+                }
         },
     },
 ]
