diff --git a/src/app/contentManagement/controllers/MergeController.php b/src/app/contentManagement/controllers/MergeController.php
index b7ffe15f42450d6495b080892e8ddc732ac60687..495cd701e003163dae79dabce5cdbb6f990aee4c 100644
--- a/src/app/contentManagement/controllers/MergeController.php
+++ b/src/app/contentManagement/controllers/MergeController.php
@@ -31,6 +31,8 @@ include_once('vendor/tinybutstrong/opentbs/tbs_plugin_opentbs.php');
 
 class MergeController
 {
+    const OFFICE_EXTENSIONS = ['odt', 'ods', 'odp', 'xlsx', 'pptx', 'docx', 'odf'];
+
     public static function mergeDocument(array $args)
     {
         ValidatorModel::notEmpty($args, ['data']);
@@ -70,7 +72,7 @@ class MergeController
             $tbs->MergeField($key, $value);
         }
 
-        if (in_array($extension, ['odt', 'ods', 'odp', 'xlsx', 'pptx', 'docx', 'odf'])) {
+        if (in_array($extension, MergeController::OFFICE_EXTENSIONS)) {
             $tbs->Show(OPENTBS_STRING);
         } else {
             $tbs->Show(TBS_NOTHING);
@@ -102,6 +104,7 @@ class MergeController
             }
             $resource = [
                 'model_id'              => $args['modelId'] ?? null,
+                'alt_identifier'        => '[res_letterbox.alt_identifier]',
                 'category_id'           => $indexingModel['category'] ?? null,
                 'type_id'               => $args['doctype'] ?? null,
                 'subject'               => $args['subject'] ?? null,
@@ -269,4 +272,44 @@ class MergeController
 
         return $dataToBeMerge;
     }
+
+    public static function mergeChronoDocument(array $args)
+    {
+        ValidatorModel::stringType($args, ['path', 'content', 'chrono']);
+
+        $tbs = new \clsTinyButStrong();
+        $tbs->NoErr = true;
+        $tbs->PlugIn(TBS_INSTALL, OPENTBS_PLUGIN);
+
+        if (!empty($args['path'])) {
+            $pathInfo = pathinfo($args['path']);
+            $extension = $pathInfo['extension'];
+        } else {
+            $tbs->Source = $args['content'];
+            $extension = 'unknow';
+            $args['path'] = null;
+        }
+
+        if (!empty($args['path'])) {
+            if ($extension == 'odt') {
+                $tbs->LoadTemplate($args['path'], OPENTBS_ALREADY_UTF8);
+                //            $tbs->LoadTemplate("{$args['path']}#content.xml;styles.xml", OPENTBS_ALREADY_UTF8);
+            } elseif ($extension == 'docx') {
+                $tbs->LoadTemplate($args['path'], OPENTBS_ALREADY_UTF8);
+                //            $tbs->LoadTemplate("{$args['path']}#word/header1.xml;word/footer1.xml", OPENTBS_ALREADY_UTF8);
+            } else {
+                $tbs->LoadTemplate($args['path'], OPENTBS_ALREADY_UTF8);
+            }
+        }
+
+        $tbs->MergeField('res_letterbox', ['alt_identifier' => $args['chrono']]);
+
+        if (in_array($extension, MergeController::OFFICE_EXTENSIONS)) {
+            $tbs->Show(OPENTBS_STRING);
+        } else {
+            $tbs->Show(TBS_NOTHING);
+        }
+
+        return ['encodedDocument' => base64_encode($tbs->Source)];
+    }
 }
diff --git a/src/app/resource/controllers/StoreController.php b/src/app/resource/controllers/StoreController.php
index 265717bf8a25d8fb438bf22eb257cc34eb02be2f..f786c88fedb105f9a41fbc62211986c0fa2abef2 100755
--- a/src/app/resource/controllers/StoreController.php
+++ b/src/app/resource/controllers/StoreController.php
@@ -16,6 +16,7 @@
 namespace Resource\controllers;
 
 use Attachment\models\AttachmentModel;
+use ContentManagement\controllers\MergeController;
 use Docserver\controllers\DocserverController;
 use Entity\models\EntityModel;
 use IndexingModel\models\IndexingModelModel;
@@ -36,10 +37,22 @@ class StoreController
             $resId = DatabaseModel::getNextSequenceValue(['sequenceId' => 'res_id_mlb_seq']);
 
             $data = ['resId' => $resId];
+            $data = array_merge($args, $data);
+            $data = StoreController::prepareStorage($data);
 
             if (!empty($args['encodedFile'])) {
                 $fileContent = base64_decode(str_replace(['-', '_'], ['+', '/'], $args['encodedFile']));
 
+                if (in_array($args['format'], MergeController::OFFICE_EXTENSIONS)) {
+                    $tmpPath = CoreConfigModel::getTmpPath();
+                    $uniqueId = CoreConfigModel::uniqueId();
+                    $tmpFilename = "storeTmp_{$GLOBALS['id']}_{$uniqueId}.{$args['format']}";
+                    file_put_contents($tmpPath . $tmpFilename, $fileContent);
+                    $fileContent = MergeController::mergeChronoDocument(['chrono' => $data['alt_identifier'], 'path' => $tmpPath . $tmpFilename]);
+                    $fileContent = base64_decode($fileContent['encodedDocument']);
+                    unlink($tmpPath . $tmpFilename);
+                }
+
                 $storeResult = DocserverController::storeResourceOnDocServer([
                     'collId'            => 'letterbox_coll',
                     'docserverTypeId'   => 'DOC',
@@ -57,9 +70,6 @@ class StoreController
                 $data['fingerprint'] = $storeResult['fingerPrint'];
             }
 
-            $data = array_merge($args, $data);
-            $data = StoreController::prepareStorage($data);
-
             ResModel::create($data);
 
             return $resId;
@@ -113,8 +123,7 @@ class StoreController
     public static function prepareStorage(array $args)
     {
         ValidatorModel::notEmpty($args, ['resId', 'modelId']);
-        ValidatorModel::stringType($args, ['docserver_id', 'filename', 'format', 'path', 'fingerprint']);
-        ValidatorModel::intVal($args, ['resId', 'modelId', 'filesize']);
+        ValidatorModel::intVal($args, ['resId', 'modelId']);
 
         $indexingModel = IndexingModelModel::getById(['id' => $args['modelId'], 'select' => ['category']]);
 
@@ -164,12 +173,6 @@ class StoreController
             'barcode'               => $args['barcode'] ?? null,
             'origin'                => $args['origin'] ?? null,
             'external_id'           => $externalId,
-            'format'                => empty($args['encodedFile']) ? null : $args['format'],
-            'docserver_id'          => empty($args['encodedFile']) ? null : $args['docserver_id'],
-            'filename'              => empty($args['encodedFile']) ? null : $args['filename'],
-            'filesize'              => empty($args['encodedFile']) ? null : $args['filesize'],
-            'path'                  => empty($args['encodedFile']) ? null : $args['path'],
-            'fingerprint'           => empty($args['encodedFile']) ? null : $args['fingerprint'],
             'creation_date'         => 'CURRENT_TIMESTAMP'
         ];