diff --git a/packages/component-manuscript-manager/config/test.js b/packages/component-manuscript-manager/config/test.js
index 05b1d59442a96f114ea5a6d3f713ff61a30f6376..6869d659a3af2b1b643561889f4f81d4c486d1cf 100644
--- a/packages/component-manuscript-manager/config/test.js
+++ b/packages/component-manuscript-manager/config/test.js
@@ -59,6 +59,14 @@ module.exports = {
       public: 'Under Review',
       private: 'Pending Approval',
     },
+    rejected: {
+      public: 'Rejected',
+      private: 'Rejected',
+    },
+    published: {
+      public: 'Published',
+      private: 'Published',
+    },
   },
   'manuscript-types': {
     research: 'Research',
diff --git a/packages/component-manuscript-manager/src/FragmentsRecommendations.js b/packages/component-manuscript-manager/src/FragmentsRecommendations.js
index 681be174ddfeeefd8e41a8bebf8c2a18b61e90dd..2c5d6471192f2832c6ff6757a7048769bb6f026e 100644
--- a/packages/component-manuscript-manager/src/FragmentsRecommendations.js
+++ b/packages/component-manuscript-manager/src/FragmentsRecommendations.js
@@ -15,7 +15,7 @@ const FragmentsRecommendations = app => {
    * @apiParam {fragmentId} fragmentId Fragment id
    * @apiParamExample {json} Body
    *    {
-   *      "recommendation": "accept", [acceptedValues: accept, revise, etc.],
+   *      "recommendation": "publish", [acceptedValues: publish, reject, minor, major],
    *      "comments":
    *      [
    *        {
@@ -40,7 +40,7 @@ const FragmentsRecommendations = app => {
    *     "userId": "4c3f8ee1-785b-4adb-87b4-407a27f652c6",
    *     "createdOn": 1525428890167,
    *     "updatedOn": 1525428890167,
-   *     "recommendation": "accept", [acceptedValues: accept, revise, etc.],
+   *     "recommendation": "publish",
    *     "comments":
    *     [
    *       {
@@ -56,7 +56,7 @@ const FragmentsRecommendations = app => {
    *        ]
    *      }
    *     ],
-   *     "recommendationType": "review" [acceptedValues: review, editorRecommendation]
+   *     "recommendationType": "review"
    *   }
    * @apiErrorExample {json} Invite user errors
    *    HTTP/1.1 403 Forbidden
@@ -70,14 +70,14 @@ const FragmentsRecommendations = app => {
     require(`${routePath}/post`)(app.locals.models),
   )
   /**
-   * @api {patch} /api/collections/:collectionId/fragments/:fragmentId/recommendations/:recommendationId Create a recommendation on a fragment
+   * @api {patch} /api/collections/:collectionId/fragments/:fragmentId/recommendations/:recommendationId Modify a recommendation on a fragment
    * @apiGroup FragmentsRecommendations
    * @apiParam {collectionId} collectionId Collection id
    * @apiParam {fragmentId} fragmentId Fragment id
    * @apiParam {recommendationId} recommendationId Recommendation id
    * @apiParamExample {json} Body
    *   {
-   *     "recommendation": "accept", [acceptedValues: accept, revise, etc.],
+   *     "recommendation": "publish", [acceptedValues: publish, reject, minor, major],
    *     "comments":
    *     [
    *       {
@@ -102,7 +102,7 @@ const FragmentsRecommendations = app => {
    *     "userId": "4c3f8ee1-785b-4adb-87b4-407a27f652c6",
    *     "createdOn": 1525428890167,
    *     "updatedOn": 1525428890167,
-   *     "recommendation": "accept", [acceptedValues: accept, revise, etc.],
+   *     "recommendation": "publish",
    *     "comments":
    *     [
    *       {
diff --git a/packages/component-manuscript-manager/src/helpers/Collection.js b/packages/component-manuscript-manager/src/helpers/Collection.js
index b3897a93f2decd4f284610210515eb352ebfd37f..85a056a5c6e0dff186fbdbac54c1c743315a1b2b 100644
--- a/packages/component-manuscript-manager/src/helpers/Collection.js
+++ b/packages/component-manuscript-manager/src/helpers/Collection.js
@@ -12,6 +12,29 @@ const updateStatusByRecommendation = async (collection, recommendation) => {
   await collection.save()
 }
 
+const updateFinalStatusByRecommendation = async (
+  collection,
+  recommendation,
+) => {
+  let newStatus
+  switch (recommendation) {
+    case 'reject':
+      newStatus = 'rejected'
+      break
+    case 'publish':
+      newStatus = 'published'
+      break
+    case 'return-to-handling-editor':
+      newStatus = 'reviewCompleted'
+      break
+    default:
+      break
+  }
+  collection.status = newStatus
+  collection.visibleStatus = statuses[collection.status].private
+  await collection.save()
+}
+
 const updateStatus = async (collection, newStatus) => {
   collection.status = newStatus
   collection.visibleStatus = statuses[collection.status].private
@@ -55,4 +78,5 @@ module.exports = {
   getFragmentAndAuthorData,
   getAgreedReviewerInvitation,
   updateStatus,
+  updateFinalStatusByRecommendation,
 }
diff --git a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
index 3e44b62e5a419c4b11b705347a98148ca0fb316a..592c6cea794b2164a6b0f1d7f6a39cb3837b7c84 100644
--- a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
+++ b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
@@ -54,6 +54,12 @@ module.exports = models => async (req, res) => {
   newRecommendation.comments = comments || undefined
 
   if (recommendationType === 'editorRecommendation') {
+    if (reqUser.editorInChief === true) {
+      await collectionHelper.updateFinalStatusByRecommendation(
+        collection,
+        recommendation,
+      )
+    }
     await collectionHelper.updateStatusByRecommendation(
       collection,
       recommendation,
diff --git a/packages/xpub-faraday/config/authsome-mode.js b/packages/xpub-faraday/config/authsome-mode.js
index fbbea3d6a4401ca8752656b9b80ef5eeca1aa7c3..88f4b83d333383179fffa23d9403a76e319c2502 100644
--- a/packages/xpub-faraday/config/authsome-mode.js
+++ b/packages/xpub-faraday/config/authsome-mode.js
@@ -14,6 +14,11 @@ async function teamPermissions(user, operation, object, context) {
   let collectionsPermissions = await Promise.all(
     teams.map(async team => {
       const collection = await context.models.Collection.find(team.object.id)
+      if (
+        collection.status === 'rejected' &&
+        team.teamType.permissions === 'reviewer'
+      )
+        return null
       const collPerm = {
         id: collection.id,
         permission: team.teamType.permissions,