diff --git a/packages/component-manuscript-manager/src/routes/fragments/post.js b/packages/component-manuscript-manager/src/routes/fragments/post.js
index 046d92be556828113fa9a5b3b63375acbf75aef2..97ad2389943da68a469015f21cf483f465cdd1ff 100644
--- a/packages/component-manuscript-manager/src/routes/fragments/post.js
+++ b/packages/component-manuscript-manager/src/routes/fragments/post.js
@@ -66,7 +66,8 @@ module.exports = models => async (req, res) => {
         customId: collection.customId,
       },
     }
-    MTS.sendPackage(packageFragment)
+
+    await MTS.sendPackage(packageFragment)
 
     return res.status(200).json(fragment)
   } catch (e) {
diff --git a/packages/component-mts-package/src/MTS.js b/packages/component-mts-package/src/MTS.js
index 0686bd52e65fb7ea5310585f140bded09e8a6384..6d1b108eaf5c2c3420747e0658af9710c0775749 100644
--- a/packages/component-mts-package/src/MTS.js
+++ b/packages/component-mts-package/src/MTS.js
@@ -1,7 +1,7 @@
 const convert = require('xml-js')
 const { set, get } = require('lodash')
 
-const createFilesPackage = require('./PackageManager')
+const PackageManager = require('./PackageManager')
 const mts = require('./mts-json-template')
 const {
   defaultConfig,
@@ -88,11 +88,7 @@ class MTS {
       'article.front.article-meta.article-categories',
       articleType,
     )
-    set(
-      jsonTemplate,
-      'article.front.article-meta.abstract',
-      this.parseHtml(metadata.abstract),
-    )
+    set(jsonTemplate, 'article.front.article-meta.abstract', metadata.abstract)
 
     return jsonTemplate
   }
@@ -211,9 +207,18 @@ class MTS {
 
   sendPackage(fragment = {}) {
     const xmlFile = this.convertFragmentToXML(fragment)
-    return createFilesPackage(this.s3Config, this.ftpConfig)({
+
+    return PackageManager.createFilesPackage(this.s3Config, this.ftpConfig)({
       fragment,
       xmlFile,
+    }).then(() => {
+      const manuscriptName = get(xmlFile, 'name', '').replace('.xml', '')
+      const filename = `${manuscriptName}.zip`
+      return PackageManager.uploadFiles({
+        filename,
+        s3Config: this.s3Config,
+        config: this.ftpConfig,
+      })
     })
   }
 }
diff --git a/packages/component-mts-package/src/PackageManager.js b/packages/component-mts-package/src/PackageManager.js
index 76880ecb153d1a37b499a699bbbc0e6919ad8367..ee338dbfb34193d0ad5bb2c5c3daeaeac5f1ef4a 100644
--- a/packages/component-mts-package/src/PackageManager.js
+++ b/packages/component-mts-package/src/PackageManager.js
@@ -58,14 +58,7 @@ const createFilesPackage = (s3Config, ftpConfig, archiver = nodeArchiver) => {
             throw err
           })
           archive.on('end', err => {
-            const filename = `${manuscriptName}.zip`
             if (err) throw err
-            uploadFiles({
-              s3,
-              filename,
-              Bucket: s3Config.bucket,
-              config: ftpConfig,
-            })
           })
           archive.finalize()
         }
@@ -88,32 +81,39 @@ const readFile = filename =>
     })
   })
 
-const uploadFiles = async ({ s3, filename, Bucket, config }) => {
+const fileError = filename => err => {
+  logger.error(err)
+  deleteFile(filename)
+  throw err
+}
+
+const uploadFiles = async ({ filename, s3Config, config }) => {
   const data = await readFile(filename)
+  AWS.config.update({
+    secretAccessKey: s3Config.secretAccessKey,
+    accessKeyId: s3Config.accessKeyId,
+    region: s3Config.region,
+  })
+  const s3 = new AWS.S3()
+
   const params = {
-    Bucket,
+    Bucket: s3Config.bucket,
     Body: data,
     Key: `mts/${filename}`,
   }
-  s3.upload(params, async err => {
-    await uploadFTP({ filename, config })
-      .then(res => {
-        logger.info(`Successfully uploaded ${filename} to FTP`)
-      })
-      .catch(err => {
-        logger.error(err)
-        deleteFile(filename)
-        throw err
-      })
 
-    deleteFile(filename)
+  const asyncUploadS3 = promisify(s3.upload.bind(s3))
 
-    if (err) {
-      throw err
-    } else {
+  return asyncUploadS3(params)
+    .then(() => {
       logger.info(`Successfully uploaded ${filename} to S3`)
-    }
-  })
+      return uploadFTP({ filename, config })
+    })
+    .then(() => {
+      logger.info(`Successfully uploaded ${filename} to FTP`)
+      deleteFile(filename)
+    })
+    .catch(fileError(filename))
 }
 
 const deleteFile = filename => {
@@ -136,4 +136,7 @@ const uploadFTP = ({ filename, config }) => {
   return ftpDeploy.deploy(configs)
 }
 
-module.exports = createFilesPackage
+module.exports = {
+  createFilesPackage,
+  uploadFiles,
+}