diff --git a/packages/component-mts-package/src/MTS.js b/packages/component-mts-package/src/MTS.js
index a880ad990360ec4ea8c70c328962789a1189346b..7449255e045e9a9fba0da7ce92f1ac154b2f1888 100644
--- a/packages/component-mts-package/src/MTS.js
+++ b/packages/component-mts-package/src/MTS.js
@@ -1,6 +1,6 @@
 const fs = require('fs')
 const convert = require('xml-js')
-const { set } = require('lodash')
+const { set, get } = require('lodash')
 const logger = require('@pubsweet/logger')
 
 const mts = require('./mts-json-template')
@@ -13,16 +13,34 @@ class MTS {
     this.jsonTemplate = mts.getJsonTemplate(config)
   }
 
-  async createXMLFile(json = {}, name = 'output.xml') {
-    const result = convert.json2xml(json, this.options)
+  createFileName(id = Date.now()) {
+    return `${this.config.prefix}${id}`
+  }
+
+  convertToXML(json = {}) {
+    const content = convert.json2xml(json, this.options)
+    const customId = get(
+      json,
+      'article.front.article-meta.article-id[0]._text',
+      this.createFileName(),
+    )
+    const name = `${customId}.xml`
+    return {
+      name,
+      content,
+    }
+  }
 
-    await fs.writeFile(name, result, err => {
+  async createXMLFile(json = {}, defaultPath = '../files/') {
+    const { content, name } = this.convertToXML(json)
+    await fs.writeFile(`${defaultPath}${name}`, content, err => {
       if (err) return logger.error(err)
       logger.info('Created XML file')
     })
   }
 
   setMetadata(metadata, jsonTemplate) {
+    const fileName = this.createFileName(metadata.customId)
     const titleGroup = {
       'article-title':
         convert.xml2js(metadata.title, this.options) || 'Untitled',
@@ -32,13 +50,13 @@ class MTS {
         _attributes: {
           'pub-id-type': 'publisher-id',
         },
-        _text: `${this.config.prefix}${metadata.customId || '0000000'}`,
+        _text: fileName,
       },
       {
         _attributes: {
           'pub-id-type': 'manuscript',
         },
-        _text: `${this.config.prefix}${metadata.customId || '0000000'}`,
+        _text: fileName,
       },
     ]
 
@@ -165,7 +183,7 @@ class MTS {
   composeJson(fragment = {}) {
     const {
       authors = [],
-      metadata = { title: 'untitled', abstract: 'no abstract' },
+      metadata = { title: 'untitled', abstract: '' },
       submitted = new Date(),
     } = fragment
 
@@ -177,6 +195,14 @@ class MTS {
       // ...this.constructor.setFigures(files, this.jsonTemplate),
     }
   }
+
+  createXMLFileFromFragment(fragment = {}, defaultPath) {
+    return this.createXMLFile(this.composeJson(fragment), defaultPath)
+  }
+
+  convertFragmentToXML(fragment = {}) {
+    return this.convertToXML(this.composeJson(fragment))
+  }
 }
 
 module.exports = MTS