diff --git a/rest/index.php b/rest/index.php
index cad7080243b9f7c78e8e41a9067acf562334f0dc..77c1aa7b3ba56bda34809a96d2e4c701fa255e48 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -338,6 +338,7 @@ $app->get('/res/{resId}/notes/count', \Resource\controllers\ResController::class
 $app->put('/res/externalInfos', \Resource\controllers\ResController::class . ':updateExternalInfos');
 $app->get('/categories', \Resource\controllers\ResController::class . ':getCategories');
 $app->get('/resources/{resId}/users/{userId}/isDestinationChanging', \Action\controllers\PreProcessActionController::class . ':isDestinationChanging');
+$app->put('/resources/{resId}/users/{userId}/groups/{groupId}/baskets/{basketId}', \Resource\controllers\ResController::class . ':updateFromBasket');
 
 //ResourcesList
 $app->get('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}', \Resource\controllers\ResourceListController::class . ':get');
diff --git a/src/app/resource/controllers/ResController.php b/src/app/resource/controllers/ResController.php
index 712f7bd64b24e98b8760f4104a4c8dcd4c9bd8a8..48bcc7dbeec741b7ecec58c7d81d09776bf31227 100755
--- a/src/app/resource/controllers/ResController.php
+++ b/src/app/resource/controllers/ResController.php
@@ -16,6 +16,7 @@ namespace Resource\controllers;
 
 use AcknowledgementReceipt\models\AcknowledgementReceiptModel;
 use Basket\models\BasketModel;
+use Basket\models\GroupBasketModel;
 use Basket\models\RedirectBasketModel;
 use Convert\controllers\ConvertPdfController;
 use Convert\controllers\ConvertThumbnailController;
@@ -32,6 +33,7 @@ use Folder\models\FolderModel;
 use Folder\models\ResourceFolderModel;
 use Group\controllers\GroupController;
 use Group\controllers\PrivilegeController;
+use Group\models\GroupModel;
 use Group\models\PrivilegeModel;
 use History\controllers\HistoryController;
 use IndexingModel\models\IndexingModelFieldModel;
@@ -250,6 +252,81 @@ class ResController
         return $response->withStatus(204);
     }
 
+    public function updateFromBasket(Request $request, Response $response, array $args)
+    {
+        $errors = ResourceListController::listControl(['groupId' => $args['groupId'], 'userId' => $args['userId'], 'basketId' => $args['basketId'], 'currentUserId' => $GLOBALS['id']]);
+        if (!empty($errors['errors'])) {
+            return $response->withStatus($errors['code'])->withJson(['errors' => $errors['errors']]);
+        }
+
+        $user   = UserModel::getById(['id' => $args['userId'], 'select' => ['user_id']]);
+        $basket = BasketModel::getById(['id' => $args['basketId'], 'select' => ['basket_id', 'basket_clause']]);
+        $group  = GroupModel::getById(['id' => $args['groupId'], 'select' => ['group_id']]);
+
+        $groupBasket = GroupBasketModel::get(['select' => ['list_event_data', 'list_event'], 'where' => ['basket_id = ?', 'group_id = ?'], 'data' => [$basket['basket_id'], $group['group_id']]]);
+        $listEventData = json_decode($groupBasket[0]['list_event_data'], true);
+        if ($groupBasket[0]['list_event'] != 'processDocument' || !$listEventData['canUpdate']) {
+            return $response->withStatus(400)->withJson(['errors' => 'Basket can not update resources']);
+        }
+
+        $whereClause = PreparedClauseController::getPreparedClause(['clause' => $basket['basket_clause'], 'login' => $user['user_id']]);
+        $resource = ResModel::getOnView([
+            'select'    => [1],
+            'where'     => [$whereClause, 'res_view_letterbox.res_id = ?'],
+            'data'      => [$args['resId']]
+        ]);
+        if (empty($resource)) {
+            return $response->withStatus(400)->withJson(['errors' => 'Resource does not belong to this basket']);
+        }
+
+        $body = $request->getParsedBody();
+
+        $control = ResController::controlUpdateResource(['body' => $body, 'resId' => $args['resId']]);
+        if (!empty($control['errors'])) {
+            return $response->withStatus(400)->withJson(['errors' => $control['errors']]);
+        }
+
+        $body['resId'] = $args['resId'];
+        $resId = StoreController::storeResource($body);
+        if (empty($resId) || !empty($resId['errors'])) {
+            return $response->withStatus(500)->withJson(['errors' => '[ResController update] ' . $resId['errors']]);
+        }
+
+        ResController::updateAdjacentData(['body' => $body, 'resId' => $args['resId']]);
+
+        if (!empty($body['encodedFile'])) {
+            AdrModel::deleteDocumentAdr(['where' => ['res_id = ?'], 'data' => [$args['resId']]]);
+            ConvertPdfController::convert([
+                'resId'     => $args['resId'],
+                'collId'    => 'letterbox_coll'
+            ]);
+
+            $customId = CoreConfigModel::getCustomId();
+            $customId = empty($customId) ? 'null' : $customId;
+            exec("php src/app/convert/scripts/FullTextScript.php --customId {$customId} --resId {$args['resId']} --collId letterbox_coll --userId {$GLOBALS['id']} > /dev/null &");
+
+            HistoryController::add([
+                'tableName' => 'res_letterbox',
+                'recordId'  => $args['resId'],
+                'eventType' => 'UP',
+                'info'      => _FILE_UPDATED,
+                'moduleId'  => 'resource',
+                'eventId'   => 'fileModification'
+            ]);
+        }
+
+        HistoryController::add([
+            'tableName' => 'res_letterbox',
+            'recordId'  => $args['resId'],
+            'eventType' => 'UP',
+            'info'      => _DOC_UPDATED,
+            'moduleId'  => 'resource',
+            'eventId'   => 'resourceModification'
+        ]);
+
+        return $response->withStatus(204);
+    }
+
     public function updateStatus(Request $request, Response $response)
     {
         $data = $request->getParams();