diff --git a/packages/component-helper-service/src/services/Collection.js b/packages/component-helper-service/src/services/Collection.js
index da5501f62f064197439b80b7e6814ff024493dee..154e8f28f5f3bba1ea3f7851489a6d33ad77b60d 100644
--- a/packages/component-helper-service/src/services/Collection.js
+++ b/packages/component-helper-service/src/services/Collection.js
@@ -1,3 +1,7 @@
+const { findLast, get } = require('lodash')
+
+const Fragment = require('./Fragment')
+
 class Collection {
   constructor({ collection = {} }) {
     this.collection = collection
@@ -103,6 +107,36 @@ class Collection {
     const [firstName, lastName] = this.collection.handlingEditor.name.split(' ')
     return lastName || firstName
   }
+
+  // eslint-disable-next-line class-methods-use-this
+  hasAtLeastOneReviewReport(fragments) {
+    return fragments.some(fragment =>
+      new Fragment({ fragment }).hasReviewReport(),
+    )
+  }
+
+  canHEMakeRecommendation(fragments, fragmentHelper) {
+    if (this.collection.fragments.length === 1) {
+      return fragmentHelper.hasReviewReport()
+    }
+    const previousVersionRecommendations = get(
+      fragments[fragments.length - 2],
+      'recommendations',
+      [],
+    )
+
+    const lastRecommendationByHE = findLast(
+      previousVersionRecommendations,
+      recommendation =>
+        recommendation.userId === this.collection.handlingEditor.id &&
+        recommendation.recommendationType === 'editorRecommendation',
+    )
+    if (lastRecommendationByHE.recommendation === 'minor') {
+      return this.hasAtLeastOneReviewReport(fragments)
+    } else if (lastRecommendationByHE.recommendation === 'major') {
+      return fragmentHelper.hasReviewReport()
+    }
+  }
 }
 
 module.exports = Collection
diff --git a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
index ccb5a6d7c12fa6b3ea8de897ac0b791fa7d3fe75..68ac1a9ada44f9046590f4c2f5cbd36d3ffcb0c9 100644
--- a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
+++ b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
@@ -42,6 +42,8 @@ module.exports = models => async (req, res) => {
     })
   }
 
+  const collectionHelper = new Collection({ collection })
+
   try {
     fragments = await Promise.all(
       collection.fragments.map(
@@ -102,38 +104,13 @@ module.exports = models => async (req, res) => {
       .json({ error: 'Cannot make another recommendation on this version.' })
   }
 
-  function canHEMakeRecommendation(fragmentHelper) {
-    if (collection.fragments.length === 1) {
-      return fragmentHelper.hasReviewReport()
-    }
-    const previousVersionRecommendations = get(
-      fragments[fragments.length - 2],
-      'recommendations',
-      [],
-    )
-
-    const lastRecommendationByHE = findLast(
-      previousVersionRecommendations,
-      recommendation =>
-        recommendation.userId === collection.handlingEditor.id &&
-        recommendation.recommendationType === 'editorRecommendation',
-    )
-    if (lastRecommendationByHE.recommendation === 'minor') {
-      return fragments.find(fragment =>
-        new Fragment({ fragment }).hasReviewReport(),
-      )
-    } else if (lastRecommendationByHE.recommendation === 'major') {
-      return fragmentHelper.hasReviewReport()
-    }
-  }
-
   if (
     recommendation === recommendations.publish &&
     recommendationType === recommendations.type.editor &&
     collection.handlingEditor &&
     collection.handlingEditor.id === req.user
   ) {
-    if (!canHEMakeRecommendation(fragmentHelper)) {
+    if (!collectionHelper.canHEMakeRecommendation(fragments, fragmentHelper)) {
       return res.status(400).json({
         error: 'Cannot publish without at least one reviewer report.',
       })
@@ -153,8 +130,6 @@ module.exports = models => async (req, res) => {
   newRecommendation.comments = comments || undefined
 
   if (recommendationType === 'editorRecommendation') {
-    const collectionHelper = new Collection({ collection })
-
     collectionHelper.updateStatusOnRecommendation({
       isEditorInChief,
       recommendation,