diff --git a/contracts/management/commands/import_old_contracts.py b/contracts/management/commands/import_old_contracts.py
index 36a3b9e416f290261f1736fd9e15495626ec8f46..d2fafd01efce80a7967a22edb1984e9eb8b7b81a 100644
--- a/contracts/management/commands/import_old_contracts.py
+++ b/contracts/management/commands/import_old_contracts.py
@@ -74,11 +74,20 @@ class Command(BaseCommand):
             help="Purge all previous contracts, types and filing areas before the import.",
         )
 
-    def use_issue(self, contract, name: str) -> None:
-        try:
-            issue = ContractIssue.objects.get(name=name)
-        except ContractIssue.DoesNotExist:
+    def use_issue(self, name: str) -> None:
+        issues = ContractIssue.objects.filter(name=name).all()
+
+        if len(issues) != 0:
+            issue = issues[0]
+        elif len(issues) > 1:
+            for issue in issues[1:]:
+                for contract in issue.contracts:
+                    contract.issues.add(issue)
+
+                issue.delete()
+        else:
             issue = ContractIssue(name=name)
+            issue.save()
 
         return issue
 
@@ -385,7 +394,7 @@ class Command(BaseCommand):
             contract.notes += (
                 f"Nepojmenovaná smluvní strana, zdrojová data: {signing_party}\n"
             )
-            issues.append(self.use_issue(contract, "Špatně pojmenovaná smluvní strana"))
+            issues.append(self.use_issue("Špatně pojmenovaná smluvní strana"))
 
             if self.verbosity >= 2:
                 self.stderr.write(
@@ -473,9 +482,7 @@ class Command(BaseCommand):
                         issue_count += 1
                         contract.notes += f"Špatně zadané sídlo smluvní strany: {signing_party_value}\n"
                         issues.append(
-                            self.use_issue(
-                                contract, "Špatně zadané sídlo smluvní strany"
-                            )
+                            self.use_issue("Špatně zadané sídlo smluvní strany")
                         )
 
                         if self.verbosity >= 2:
@@ -537,7 +544,7 @@ class Command(BaseCommand):
                             f"Špatně zadané IČO smluvní strany: {signing_party_value}\n"
                         )
                         issues.append(
-                            self.use_issue(contract, "Špatně zadané IČO smluvní strany")
+                            self.use_issue("Špatně zadané IČO smluvní strany")
                         )
 
                         if self.verbosity >= 2:
@@ -555,9 +562,7 @@ class Command(BaseCommand):
                         issue_count += 1
                         contract.notes += f"Špatně zadaný zástupce smluvní strany: {signing_party_value}\n"
                         issues.append(
-                            self.use_issue(
-                                contract, "Špatně zadaný zástupce smluvní strany"
-                            )
+                            self.use_issue("Špatně zadaný zástupce smluvní strany")
                         )
 
                         if self.verbosity >= 2:
@@ -583,10 +588,7 @@ class Command(BaseCommand):
                                 issue_count += 1
                                 contract.notes += f"Špatně zadaná funkce zástupce smluvní strany: {signing_party['funkce']}\n"
                                 issues.append(
-                                    self.use_issue(
-                                        contract,
-                                        "Špatně zadaná funkce zástupce smluvní strany",
-                                    )
+                                    self.use_issue("Špatně zadaná funkce zástupce smluvní strany")
                                 )
 
                                 if self.verbosity >= 2:
@@ -606,10 +608,7 @@ class Command(BaseCommand):
                                 issue_count += 1
                                 contract.notes += f"Špatně zadaný jeden ze zástupců smluvní strany: {representative_name}\n"
                                 issues.append(
-                                    self.use_issue(
-                                        contract,
-                                        "Špatně zadaný zástupce smluvní strany",
-                                    )
+                                    self.use_issue("Špatně zadaný zástupce smluvní strany")
                                 )
 
                                 if self.verbosity >= 2:
@@ -633,9 +632,7 @@ class Command(BaseCommand):
                         issue_count += 1
                         contract.notes += f"Špatně zadaný orgán smluvní strany: {signing_party_value}\n"
                         issues.append(
-                            self.use_issue(
-                                contract, "Špatně zadaný orgán smluvní strany"
-                            )
+                            self.use_issue("Špatně zadaný orgán smluvní strany")
                         )
 
                         if self.verbosity >= 2:
@@ -783,7 +780,7 @@ class Command(BaseCommand):
                         observed_issues_count += 1
                         contract.notes += f"Špatně zadaný začátek platnosti: {value}\n"
                         issues.append(
-                            self.use_issue(contract, "Špatně zadaný začátek platnosti")
+                            self.use_issue("Špatně zadaný začátek platnosti")
                         )
 
                         if self.verbosity >= 2:
@@ -802,7 +799,7 @@ class Command(BaseCommand):
                         observed_issues_count += 1
                         contract.notes += f"Špatně zadaný konec platnosti: {value}\n"
                         issues.append(
-                            self.use_issue(contract, "Špatně zadaný konec platnosti")
+                            self.use_issue("Špatně zadaný konec platnosti")
                         )
 
                         if self.verbosity >= 2:
@@ -839,7 +836,7 @@ class Command(BaseCommand):
                     elif not isinstance(value, list):
                         observed_issues_count += 1
                         contract.notes += f"Špatně zadané typy: {value}\n"
-                        issues.append(self.use_issue(contract, "Špatně zadané typy"))
+                        issues.append(self.use_issue("Špatně zadané typy"))
 
                         if self.verbosity >= 2:
                             self.stderr.write(
@@ -854,7 +851,7 @@ class Command(BaseCommand):
                         if not isinstance(type_name, str):
                             observed_issues_count += 1
                             contract.notes += f"Špatně zadaný typ: {type_name}\n"
-                            issues.append(self.use_issue(contract, "Špatně zadaný typ"))
+                            issues.append(self.use_issue("Špatně zadaný typ"))
 
                             if self.verbosity >= 2:
                                 self.stderr.write(
@@ -896,7 +893,7 @@ class Command(BaseCommand):
                     else:
                         observed_issues_count += 1
                         contract.notes += f"Neznámý stav: {value}\n"
-                        issues.append(self.use_issue(contract, "Neznámý právní stav"))
+                        issues.append(self.use_issue("Neznámý právní stav"))
 
                         if self.verbosity >= 2:
                             self.stderr.write(
@@ -918,7 +915,7 @@ class Command(BaseCommand):
                                 f"Původní, špatně zadané náklady: {value}\n"
                             )
                             issues.append(
-                                self.use_issue(contract, "Špatně zadané náklady")
+                                self.use_issue("Špatně zadané náklady")
                             )
 
                             if self.verbosity >= 2:
@@ -948,7 +945,7 @@ class Command(BaseCommand):
                             observed_issues_count += 1
                             contract.notes += f"Původní, neropoznané náklady: {value}\n"
                             issues.append(
-                                self.use_issue(contract, "Špatně zadané náklady")
+                                self.use_issue("Špatně zadané náklady")
                             )
 
                             if self.verbosity >= 2:
@@ -965,7 +962,7 @@ class Command(BaseCommand):
                     elif value not in (None, "0"):
                         observed_issues_count += 1
                         contract.notes += f"Původní, neropoznané náklady: {value}\n"
-                        issues.append(self.use_issue(contract, "Špatně zadané náklady"))
+                        issues.append(self.use_issue("Špatně zadané náklady"))
 
                         if self.verbosity >= 2:
                             self.stderr.write(
@@ -991,7 +988,7 @@ class Command(BaseCommand):
                             observed_issues_count += 1
                             contract.notes += f"Špatně zadaná spisovna: {value}\n"
                             issues.append(
-                                self.use_issue(contract, "Špatně zadaná spisovna")
+                                self.use_issue("Špatně zadaná spisovna")
                             )
 
                             if self.verbosity >= 2:
@@ -1007,7 +1004,7 @@ class Command(BaseCommand):
                             f"Špatně zadané smluvní strany, nejsou seznam: {value}\n"
                         )
                         issues.append(
-                            self.use_issue(contract, "Špatně zadaný smluvní strany")
+                            self.use_issue("Špatně zadaný smluvní strany")
                         )
 
                         if self.verbosity >= 2:
@@ -1026,7 +1023,7 @@ class Command(BaseCommand):
                                 f"Špatně zadaná smluvní strana: {signing_party}\n"
                             )
                             issues.append(
-                                self.use_issue(contract, "Špatně zadaná smluvní strana")
+                                self.use_issue("Špatně zadaná smluvní strana")
                             )
 
                             if self.verbosity >= 2:
@@ -1062,7 +1059,7 @@ class Command(BaseCommand):
                     if not isinstance(value, list):
                         observed_issues_count += 1
                         contract.notes += f"Špatně zadané soubory.\n"
-                        issues.append(self.use_issue(contract, "Špatně zadané soubory"))
+                        issues.append(self.use_issue("Špatně zadané soubory"))
 
                         if self.verbosity >= 2:
                             self.stderr.write(
@@ -1073,6 +1070,8 @@ class Command(BaseCommand):
 
                         continue
 
+                    at_least_one_incorrect_filename = False
+
                     for file_data in value:
                         if not isinstance(file_data, dict):
                             observed_issues_count += 1
@@ -1080,9 +1079,7 @@ class Command(BaseCommand):
                                 f"Špatně zadané informace o souboru: {file_data}.\n"
                             )
                             issues.append(
-                                self.use_issue(
-                                    contract, "Špatně zadané informace o souboru"
-                                )
+                                self.use_issue("Špatně zadané informace o souboru")
                             )
 
                             if self.verbosity >= 2:
@@ -1103,9 +1100,11 @@ class Command(BaseCommand):
                             if not isinstance(file_value, str):
                                 observed_issues_count += 1
                                 contract.notes += f"Špatně zadaný název souboru {file_key}: {file_value}.\n"
-                                issues.append(
-                                    self.use_issue(contract, "Neplatný název souboru")
-                                )
+
+                                if not at_least_one_incorrect_filename:
+                                    issues.append(
+                                        self.use_issue("Neplatný název souboru")
+                                    )
 
                                 if self.verbosity >= 2:
                                     self.stderr.write(
@@ -1114,6 +1113,8 @@ class Command(BaseCommand):
                                         )
                                     )
 
+                                at_least_one_incorrect_filename = True
+
                                 continue
 
                             file_path = os.path.join(contract_root, file_value)
@@ -1124,7 +1125,7 @@ class Command(BaseCommand):
                                     f"Neexistující soubor: {file_value}.\n"
                                 )
                                 issues.append(
-                                    self.use_issue(contract, "Neexistující soubor")
+                                    self.use_issue("Neexistující soubor")
                                 )
 
                                 if self.verbosity >= 2:
@@ -1215,9 +1216,6 @@ class Command(BaseCommand):
             for file in files:
                 file.save()
 
-            for issue in issues:
-                issue.save()
-
             contract.filing_area = filing_area
             contract.types.set(types)
             contract.issues.set(issues)
@@ -1385,6 +1383,7 @@ class Command(BaseCommand):
                 Contract,
                 ContractType,
                 ContractFilingArea,
+                ContractIssue,
                 ContractFile,
                 Contractee,
                 ContracteeSignature,
diff --git a/registry/templates/admin/index.html b/registry/templates/admin/index.html
index 27a456266339ad636a0e7ad4c7948440329aa5fe..834866cf238c91b8f6a64496c0e198221679e69c 100644
--- a/registry/templates/admin/index.html
+++ b/registry/templates/admin/index.html
@@ -29,3 +29,19 @@
 {{ block.super }}
 
 {% endblock %}
+
+{% block sidebar %}
+
+{{ block.super }}
+
+<div style="width:100%;float:left;padding-top:0.5rem;margin-top:0.5rem;border-top:1px solid var(--hairline-color)"> 
+    <h2>Tvá oprávnění</h2>
+
+    <ul>
+        {% for permission in request.user.get_all_permissions_ordered %}
+            <li>{{ permission }}</li>
+        {% endfor %}
+    </ul>
+</div>
+
+{% endblock %}
diff --git a/users/models.py b/users/models.py
index 64dee9b879678b89f0304418b428213490a116b4..99f97b6a47a6759f990b35ec7ee6c51caf08895f 100644
--- a/users/models.py
+++ b/users/models.py
@@ -1,5 +1,6 @@
 from django.conf import settings
 from django.contrib.auth.models import Group as AuthGroup
+from django.contrib.auth.models import Permission
 from django.db import models
 from pirates import models as pirates_models
 
@@ -86,6 +87,28 @@ class User(pirates_models.AbstractUser):
 
         return f"{first_name}{self.last_name}"
 
+    def get_all_permissions_ordered(self, obj=None) -> list:
+        #permissions_set = self.get_all_permissions(obj)
+
+        #print(permissions_set)
+
+        if not self.is_superuser:
+            permissions = (
+                Permission.
+                objects.
+                filter(
+                    models.Q(content_type__name=self.groups.all()) |
+                    models.Q(user=self)
+                ).
+                order_by("content_type__app_label").
+                distinct().
+                all()
+            )
+        else:
+            permissions = Permission.objects.order_by("content_type__app_label").all()
+
+        return permissions
+
     def save(self, *args, saved_by_auth: bool = False, **kwargs):
         if (
             not self._state.adding