diff --git a/rest/index.php b/rest/index.php
index 58577f8a47ba3f51bb78b127ffa334aff9fd035e..c9273d695edcc9687883e411e4826fbe7fbbdf89 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -98,6 +98,7 @@ $app->get('/autocomplete/folders', \SrcCore\controllers\AutoCompleteController::
 $app->get('/autocomplete/tags', \SrcCore\controllers\AutoCompleteController::class . ':getTags');
 $app->get('/autocomplete/ouM2MAnnuary', \SrcCore\controllers\AutoCompleteController::class . ':getOuM2MAnnuary');
 $app->get('/autocomplete/businessIdM2MAnnuary', \SrcCore\controllers\AutoCompleteController::class . ':getBusinessIdM2MAnnuary');
+$app->get('/autocomplete/contacts/m2m', \SrcCore\controllers\AutoCompleteController::class . ':getAvailableContactsForM2M');
 
 //Baskets
 $app->get('/baskets', \Basket\controllers\BasketController::class . ':get');
diff --git a/src/core/controllers/AutoCompleteController.php b/src/core/controllers/AutoCompleteController.php
index 3182e6338d4120ea9a653f2a626fe816d3e0b8db..0511bdcbb20347a5271851910c59dde4bb26bc55 100755
--- a/src/core/controllers/AutoCompleteController.php
+++ b/src/core/controllers/AutoCompleteController.php
@@ -731,6 +731,58 @@ class AutoCompleteController
         return $response->withJson($unitOrganizations);
     }
 
+    public static function getAvailableContactsForM2M(Request $request, Response $response)
+    {
+        $queryParams = $request->getQueryParams();
+        if (!Validator::stringType()->notEmpty()->validate($queryParams['search'])) {
+            return $response->withStatus(400)->withJson(['errors' => 'Query params search is empty']);
+        }
+
+        $autocompleteData = [];
+        $searchableParameters = ContactParameterModel::get(['select' => ['identifier'], 'where' => ['searchable = ?'], 'data' => [true]]);
+
+        $fields = [];
+        foreach ($searchableParameters as $searchableParameter) {
+            if (strpos($searchableParameter['identifier'], 'contactCustomField_') !== false) {
+                $customFieldId = explode('_', $searchableParameter['identifier'])[1];
+                $fields[] = "custom_fields->>'{$customFieldId}'";
+            } else {
+                $fields[] = ContactController::MAPPING_FIELDS[$searchableParameter['identifier']];
+            }
+        }
+
+        $fieldsNumber = count($fields);
+        $fields = AutoCompleteController::getUnsensitiveFieldsForRequest(['fields' => $fields]);
+
+        $requestData = AutoCompleteController::getDataForRequest([
+            'search'        => $queryParams['search'],
+            'fields'        => $fields,
+            'where'         => ['enabled = ?', "external_id->>'m2m' is not null", "(communication_means->>'url' is not null OR communication_means->>'email' is not null)"],
+            'data'          => [true],
+            'fieldsNumber'  => $fieldsNumber
+        ]);
+
+        $contacts = ContactModel::get([
+            'select'    => ['id', 'communication_means', 'external_id'],
+            'where'     => $requestData['where'],
+            'data'      => $requestData['data'],
+            'orderBy'   => ['company', 'lastname NULLS FIRST'],
+            'limit'     => self::TINY_LIMIT
+        ]);
+
+        foreach ($contacts as $contact) {
+            $autoContact = ContactController::getAutocompleteFormat(['id' => $contact['id']]);
+
+            $externalId = json_decode($contact['external_id'], true);
+            $communicationMeans = json_decode($contact['communication_means'], true);
+            $autoContact['m2m'] = $externalId['m2m'];
+            $autoContact['communicationMeans'] = $communicationMeans['url'] ?? $communicationMeans['email'];
+            $autocompleteData[] = $autoContact;
+        }
+
+        return $response->withJson($autocompleteData);
+    }
+
     public static function getBusinessIdM2MAnnuary(Request $request, Response $response)
     {
         $data = $request->getQueryParams();