diff --git a/contracts/admin.py b/contracts/admin.py
index 6240321f3915855db68e73736d8e7e89f068c3f0..ad19a97f11fcadc8bd9086822461b9ab615d1481 100644
--- a/contracts/admin.py
+++ b/contracts/admin.py
@@ -5,6 +5,7 @@ import typing
 import uuid
 
 import requests
+import threading
 from admin_auto_filters.filters import AutocompleteFilterFactory
 from django.conf import settings
 from django.contrib import admin
@@ -295,6 +296,8 @@ class ContractAdmin(
         FieldsetInlineOrder.FIELDSET,
     ]
 
+    external_requests_timeout = 20
+
     def get_queryset(self, request):
         queryset = super().get_queryset(request)
 
@@ -360,6 +363,7 @@ class ContractAdmin(
                         }
                     ),
                     headers=headers,
+                    timeout=external_requests_timeout,
                 )
 
                 notice.raise_for_status()
@@ -372,6 +376,7 @@ class ContractAdmin(
                     requests.post(
                         f"{settings.NASTENKA_API_URL}/{obj.after_approval_nastenka_notice_id}/all-hidden",
                         headers=headers,
+                        timeout=external_requests_timeout,
                     ).raise_for_status()
 
                     obj.after_approval_nastenka_notice_id = None
@@ -381,6 +386,7 @@ class ContractAdmin(
                     requests.post(
                         f"{settings.NASTENKA_API_URL}/{obj.to_be_approved_nastenka_notice_id}/all-hidden",
                         headers=headers,
+                        timeout=external_requests_timeout,
                     ).raise_for_status()
 
                     obj.to_be_approved_nastenka_notice_id = None
@@ -416,6 +422,7 @@ class ContractAdmin(
                             }
                         ),
                         headers=headers,
+                        timeout=external_requests_timeout,
                     )
 
                     notice.raise_for_status()
@@ -428,6 +435,7 @@ class ContractAdmin(
                         requests.post(
                             f"{settings.NASTENKA_API_URL}/{obj.work_in_progress_nastenka_notice_id}/all-hidden",
                             headers=headers,
+                            timeout=external_requests_timeout,
                         ).raise_for_status()
 
                         obj.work_in_progress_nastenka_notice_id = None
@@ -456,6 +464,7 @@ class ContractAdmin(
                             }
                         ),
                         headers=headers,
+                        timeout=external_requests_timeout,
                     )
 
                     notice.raise_for_status()
@@ -468,6 +477,7 @@ class ContractAdmin(
                         requests.post(
                             f"{settings.NASTENKA_API_URL}/{obj.to_be_approved_nastenka_notice_id}/all-hidden",
                             headers=headers,
+                            timeout=external_requests_timeout,
                         ).raise_for_status()
 
                         obj.to_be_approved_nastenka_notice_id = None
@@ -496,6 +506,7 @@ class ContractAdmin(
                             }
                         ),
                         headers=headers,
+                        timeout=external_requests_timeout,
                     )
 
                     notice.raise_for_status()
@@ -508,6 +519,7 @@ class ContractAdmin(
                         requests.post(
                             f"{settings.NASTENKA_API_URL}/{obj.to_be_approved_nastenka_notice_id}/all-hidden",
                             headers=headers,
+                            timeout=external_requests_timeout,
                         ).raise_for_status()
 
                         obj.to_be_approved_nastenka_notice_id = None