diff --git a/packages/component-manuscript-manager/src/routes/fragments/notifications/notifications.js b/packages/component-manuscript-manager/src/routes/fragments/notifications/notifications.js
index 7f0b8fd3d3364ddc038385f6424ec53b9578fba3..f5de86d1026287e797a681f68886838fe27d0e1f 100644
--- a/packages/component-manuscript-manager/src/routes/fragments/notifications/notifications.js
+++ b/packages/component-manuscript-manager/src/routes/fragments/notifications/notifications.js
@@ -15,34 +15,29 @@ const unsubscribeSlug = config.get('unsubscribe.url')
 const { getEmailCopy } = require('./emailCopy')
 
 module.exports = {
-  async sendNotifications({
-    baseUrl,
-    fragment,
-    UserModel,
-    collection,
-    isNewVersion = false,
-    previousVersion,
-    isTechnicalCheck,
-    isMajorRecommendation,
-  }) {
+  async sendHandlingEditorEmail({ baseUrl, fragment, UserModel, collection }) {
     const fragmentHelper = new Fragment({ fragment })
     const handlingEditor = get(collection, 'handlingEditor')
     const parsedFragment = await fragmentHelper.getFragmentData({
       handlingEditor,
     })
-    const {
-      submittingAuthor,
-      activeAuthors: authors,
-    } = await fragmentHelper.getAuthorData({
-      UserModel,
+
+    const { paragraph, ...bodyProps } = getEmailCopy({
+      emailType: 'he-new-version-submitted',
+      titleText: `the manuscript titled "${parsedFragment.title}"`,
     })
 
-    const { customId } = collection
+    const heUser = await UserModel.find(handlingEditor.id)
 
     const email = new Email({
       type: 'user',
       fromEmail: `${journalName} <${staffEmail}>`,
+      toUser: {
+        email: heUser.email,
+      },
       content: {
+        subject: `${collection.customId}: Revision submitted`,
+        paragraph,
         signatureName: '',
         signatureJournal: journalName,
         ctaLink: services.createUrl(
@@ -50,240 +45,199 @@ module.exports = {
           `/projects/${collection.id}/versions/${fragment.id}/details`,
         ),
         ctaText: 'MANUSCRIPT DETAILS',
+        unsubscribeLink: services.createUrl(baseUrl, unsubscribeSlug, {
+          id: heUser.id,
+          token: heUser.accessTokens.unsubscribe,
+        }),
       },
+      bodyProps,
     })
 
-    const userHelper = new User({ UserModel })
-    const eicName = await userHelper.getEiCName()
-
-    if (isNewVersion) {
-      const heUser = await UserModel.find(handlingEditor.id)
-      sendHandlingEditorEmail({
-        email,
-        baseUrl,
-        customId,
-        title: parsedFragment.title,
-        handlingEditor: heUser,
-      })
-    }
-
-    if (isMajorRecommendation) {
-      sendReviewersEmail({
-        email,
-        baseUrl,
-        customId,
-        UserModel,
-        previousVersion,
-        title: parsedFragment.title,
-        heName: collection.handlingEditor.name,
-      })
-    }
-
-    if (isTechnicalCheck) {
-      sendEQSEmail({
-        email,
-        eicName,
-        baseUrl,
-        collection,
-      })
-      sendAuthorsEmail({
-        email,
-        baseUrl,
-        UserModel,
-        fragmentId: fragment.id,
-        fragmentAuthors: authors,
-        collectionId: collection.id,
-        title: parsedFragment.title,
-        submittingAuthorName: `${submittingAuthor.firstName} ${
-          submittingAuthor.lastName
-        }`,
-      })
-    }
+    email.sendEmail()
   },
-}
-
-const sendHandlingEditorEmail = ({
-  email,
-  title,
-  baseUrl,
-  customId,
-  handlingEditor,
-}) => {
-  const emailType = 'he-new-version-submitted'
-
-  email.toUser = {
-    email: handlingEditor.email,
-  }
-  email.content.unsubscribeLink = services.createUrl(baseUrl, unsubscribeSlug, {
-    id: handlingEditor.id,
-    token: handlingEditor.accessTokens.unsubscribe,
-  })
-  email.content.subject = `${customId}: Revision submitted`
-
-  const { html, text } = email.getNotificationBody({
-    emailBodyProps: getEmailCopy({
-      emailType,
-      titleText: `the manuscript titled "${title}"`,
-    }),
-  })
-  email.sendEmail({ html, text })
-}
-
-const sendReviewersEmail = async ({
-  email,
-  title,
-  heName,
-  baseUrl,
-  customId,
-  UserModel,
-  previousVersion,
-}) => {
-  email.content.subject = `${customId}: A manuscript you reviewed has been revised`
-  email.content.signatureName = heName
-  email.fromEmail = `${heName} <${staffEmail}>`
-  const emailType = 'submitted-reviewers-after-revision'
 
-  const fragmentHelper = new Fragment({ fragment: previousVersion })
-  const reviewers = await fragmentHelper.getReviewers({
+  async sendReviewersEmail({
+    baseUrl,
+    fragment,
     UserModel,
-    type: 'submitted',
-  })
-
-  reviewers.forEach(reviewer => {
-    email.toUser = {
-      email: reviewer.email,
-      name: `${reviewer.lastName}`,
-    }
+    collection,
+    previousVersion,
+  }) {
+    const fragmentHelper = new Fragment({ fragment: previousVersion })
+    const handlingEditor = get(collection, 'handlingEditor')
+    const parsedFragment = await fragmentHelper.getFragmentData({
+      handlingEditor,
+    })
 
-    email.content.unsubscribeLink = services.createUrl(
-      baseUrl,
-      unsubscribeSlug,
-      {
-        id: reviewer.id,
-        token: reviewer.accessTokens.unsubscribe,
-      },
-    )
+    const reviewers = await fragmentHelper.getReviewers({
+      UserModel,
+      type: 'submitted',
+    })
 
-    const { html, text } = email.getNotificationBody({
-      emailBodyProps: getEmailCopy({
-        emailType,
-        titleText: `the manuscript titled "${title}"`,
-        expectedDate: services.getExpectedDate({ daysExpected: 14 }),
-      }),
+    const { paragraph, ...bodyProps } = getEmailCopy({
+      emailType: 'submitted-reviewers-after-revision',
+      titleText: `the manuscript titled "${parsedFragment.title}"`,
+      expectedDate: services.getExpectedDate({ daysExpected: 14 }),
     })
 
-    email.sendEmail({ html, text })
-  })
-}
+    reviewers.forEach(reviewer => {
+      const email = new Email({
+        type: 'user',
+        fromEmail: `${handlingEditor.name} <${staffEmail}>`,
+        toUser: {
+          email: reviewer.email,
+          name: `${reviewer.lastName}`,
+        },
+        content: {
+          subject: `${
+            collection.customId
+          }: A manuscript you reviewed has been revised`,
+          paragraph,
+          signatureName: handlingEditor.name,
+          signatureJournal: journalName,
+          ctaLink: services.createUrl(
+            baseUrl,
+            `/projects/${collection.id}/versions/${fragment.id}/details`,
+          ),
+          ctaText: 'MANUSCRIPT DETAILS',
+          unsubscribeLink: services.createUrl(baseUrl, unsubscribeSlug, {
+            id: reviewer.id,
+            token: reviewer.accessTokens.unsubscribe,
+          }),
+        },
+        bodyProps,
+      })
 
-const sendEQSEmail = ({ email, eicName, baseUrl, collection }) => {
-  const emailType = 'eqs-manuscript-submitted'
+      email.sendEmail()
+    })
+  },
 
-  email.toUser = {
-    email: staffEmail,
-    name: 'Editorial Assistant',
-  }
+  async sendEQSEmail({ baseUrl, fragment, UserModel, collection }) {
+    const userHelper = new User({ UserModel })
+    const eicName = await userHelper.getEiCName()
 
-  email.content.unsubscribeLink = baseUrl
-  email.content.signatureName = eicName
-  email.content.subject = `Manuscript Submitted`
-  email.content.ctaLink = services.createUrl(
-    baseUrl,
-    config.get('eqs-decision.url'),
-    {
-      collectionId: collection.id,
+    const { paragraph, ...bodyProps } = getEmailCopy({
+      emailType: 'eqs-manuscript-submitted',
       customId: collection.customId,
-      token: collection.technicalChecks.token,
-    },
-  )
-  email.content.ctaText = 'MAKE DECISION'
+    })
 
-  const { html, text } = email.getNotificationBody({
-    emailBodyProps: getEmailCopy({
-      emailType,
-      customId: collection.customId,
-    }),
-  })
-  email.sendEmail({ html, text })
-}
+    const email = new Email({
+      type: 'user',
+      fromEmail: `${journalName} <${staffEmail}>`,
+      toUser: {
+        email: staffEmail,
+        name: 'Editorial Assistant',
+      },
+      content: {
+        subject: `Manuscript Submitted`,
+        paragraph,
+        signatureName: eicName,
+        signatureJournal: journalName,
+        ctaLink: services.createUrl(baseUrl, config.get('eqs-decision.url'), {
+          collectionId: collection.id,
+          customId: collection.customId,
+          token: collection.technicalChecks.token,
+        }),
+        ctaText: 'MAKE DECISION',
+        unsubscribeLink: baseUrl,
+      },
+      bodyProps,
+    })
 
-const sendAuthorsEmail = async ({
-  email,
-  title,
-  baseUrl,
-  UserModel,
-  fragmentId,
-  collectionId,
-  fragmentAuthors,
-  submittingAuthorName,
-}) => {
-  email.content.subject = `Manuscript submitted to ${journalName}`
-  email.content.signatureName = ''
+    email.sendEmail()
+  },
 
-  const userEmailData = await Promise.all(
-    fragmentAuthors.map(async author => {
-      const user = await UserModel.find(author.id)
-      return {
-        ...author,
-        isConfirmed: user.isConfirmed,
-        unsubscribeToken: user.accessTokens.unsubscribe,
-        passwordResetToken: user.accessTokens.passwordReset,
-        ...getEmailCopy({
+  async sendAuthorsEmail({ baseUrl, fragment, UserModel, collection }) {
+    const fragmentHelper = new Fragment({ fragment })
+    const handlingEditor = get(collection, 'handlingEditor')
+    const parsedFragment = await fragmentHelper.getFragmentData({
+      handlingEditor,
+    })
+    const {
+      submittingAuthor,
+      activeAuthors: fragmentAuthors,
+    } = await fragmentHelper.getAuthorData({
+      UserModel,
+    })
+
+    const submittingAuthorName = `${submittingAuthor.firstName} ${
+      submittingAuthor.lastName
+    }`
+
+    const userEmailData = await Promise.all(
+      fragmentAuthors.map(async author => {
+        const { paragraph, ...bodyProps } = getEmailCopy({
           emailType: author.isSubmitting
             ? 'submitting-author-manuscript-submitted'
             : 'coauthors-manuscript-submitted',
           titleText: author.isSubmitting
-            ? `the manuscript titled "${title}"`
-            : `The manuscript titled "${title}" has been submitted to ${journalName} by ${submittingAuthorName}`,
-        }),
-      }
-    }),
-  )
-
-  userEmailData.forEach(author => {
-    email.toUser = {
-      email: author.email,
-      name: `${author.lastName}`,
-    }
-    email.content.unsubscribeLink = services.createUrl(
-      baseUrl,
-      unsubscribeSlug,
-      {
-        id: author.id,
-        token: author.unsubscribeToken,
-      },
+            ? `the manuscript titled "${parsedFragment.title}"`
+            : `The manuscript titled "${
+                parsedFragment.title
+              }" has been submitted to ${journalName} by ${submittingAuthorName}`,
+        })
+        const user = await UserModel.find(author.id)
+        return {
+          author: Object.assign(author, {
+            isConfirmed: user.isConfirmed,
+            unsubscribeToken: user.accessTokens.unsubscribe,
+            passwordResetToken: user.accessTokens.passwordReset,
+          }),
+          paragraph,
+          bodyProps,
+        }
+      }),
     )
 
-    if (author.isSubmitting) {
-      email.content.ctaLink = services.createUrl(
-        baseUrl,
-        `/projects/${collectionId}/versions/${fragmentId}/details`,
-      )
-      email.content.ctaText = 'MANUSCRIPT DETAILS'
-    } else if (author.isConfirmed) {
-      email.content.ctaLink = services.createUrl(baseUrl, '')
-      email.content.ctaText = 'LOG IN'
-    } else {
-      email.content.ctaLink = services.createUrl(baseUrl, resetPath, {
-        email: author.email,
-        token: author.passwordResetToken,
-        firstName: author.firstName,
-        lastName: author.lastName,
-        affiliation: author.affiliation,
-        title: author.title,
-        country: author.country,
+    userEmailData.forEach(({ author, paragraph, bodyProps }) => {
+      const email = new Email({
+        type: 'user',
+        fromEmail: `${journalName} <${staffEmail}>`,
+        toUser: {
+          email: author.email,
+          name: `${author.lastName}`,
+        },
+        content: {
+          subject: `Manuscript submitted to ${journalName}`,
+          paragraph,
+          signatureName: '',
+          signatureJournal: journalName,
+          ctaLink: services.createUrl(
+            baseUrl,
+            `/projects/${collection.id}/versions/${fragment.id}/details`,
+          ),
+          ctaText: 'MANUSCRIPT DETAILS',
+          unsubscribeLink: services.createUrl(baseUrl, unsubscribeSlug, {
+            id: author.id,
+            token: author.unsubscribeToken,
+          }),
+        },
+        bodyProps,
       })
-      email.content.ctaText = 'CONFIRM ACCOUNT'
-    }
 
-    const { html, text } = email.getNotificationBody({
-      emailBodyProps: {
-        paragraph: author.paragraph,
-        hasLink: author.hasLink,
-        hasIntro: author.hasIntro,
-        hasSignature: author.hasSignature,
-      },
+      if (author.isSubmitting) {
+        email.content.ctaLink = services.createUrl(
+          baseUrl,
+          `/projects/${collection.id}/versions/${fragment.id}/details`,
+        )
+        email.content.ctaText = 'MANUSCRIPT DETAILS'
+      } else if (author.isConfirmed) {
+        email.content.ctaLink = services.createUrl(baseUrl, '')
+        email.content.ctaText = 'LOG IN'
+      } else {
+        email.content.ctaLink = services.createUrl(baseUrl, resetPath, {
+          email: author.email,
+          token: author.passwordResetToken,
+          firstName: author.firstName,
+          lastName: author.lastName,
+          affiliation: author.affiliation,
+          title: author.title,
+          country: author.country,
+        })
+        email.content.ctaText = 'CONFIRM ACCOUNT'
+      }
+
+      email.sendEmail()
     })
-    email.sendEmail({ html, text })
-  })
+  },
 }
diff --git a/packages/component-manuscript-manager/src/routes/fragments/patch.js b/packages/component-manuscript-manager/src/routes/fragments/patch.js
index f28b8cc0847abbbdaff894bc7f4337572a28877c..396672ff07542005238642045ebe226e45d8fa3c 100644
--- a/packages/component-manuscript-manager/src/routes/fragments/patch.js
+++ b/packages/component-manuscript-manager/src/routes/fragments/patch.js
@@ -112,16 +112,23 @@ module.exports = models => async (req, res) => {
     collection.fragments.push(newFragment.id)
     collection.save()
 
-    notifications.sendNotifications({
-      collection,
-      isNewVersion: true,
+    notifications.sendHandlingEditorEmail({
+      baseUrl: services.getBaseUrl(req),
       fragment: newFragment,
       UserModel: models.User,
-      previousVersion: fragment,
-      baseUrl: services.getBaseUrl(req),
-      isMajorRecommendation: heRecommendation.recommendation === 'major',
+      collection,
     })
 
+    if (heRecommendation.recommendation === 'major') {
+      notifications.sendReviewersEmail({
+        baseUrl: services.getBaseUrl(req),
+        fragment: newFragment,
+        UserModel: models.User,
+        collection,
+        previousVersion: fragment,
+      })
+    }
+
     return res.status(200).json(newFragment)
   } catch (e) {
     const notFoundError = await services.handleNotFoundError(e, 'Item')
diff --git a/packages/component-manuscript-manager/src/routes/fragments/post.js b/packages/component-manuscript-manager/src/routes/fragments/post.js
index 7b541025809ee4dea338b7f5cd6f2136e47dd034..dc5bc1a1a3bfcea4d9620be72f94176211f1f1a0 100644
--- a/packages/component-manuscript-manager/src/routes/fragments/post.js
+++ b/packages/component-manuscript-manager/src/routes/fragments/post.js
@@ -62,11 +62,17 @@ module.exports = models => async (req, res) => {
       await sendMTSPackage(collection, fragment)
     }
 
-    notifications.sendNotifications({
+    notifications.sendEQSEmail({
+      fragment,
+      collection,
+      UserModel: models.User,
+      baseUrl: services.getBaseUrl(req),
+    })
+
+    notifications.sendAuthorsEmail({
       fragment,
       collection,
       UserModel: models.User,
-      isTechnicalCheck: true,
       baseUrl: services.getBaseUrl(req),
     })