diff --git a/packages/component-invite/src/controllers/assignCollectionRole.js b/packages/component-invite/src/controllers/assignCollectionRole.js
index cccf36662b9113cdcffd9b4bd2ccfd2feb0d637a..aa194324155156c40f30ed7945d2118a51876a8b 100644
--- a/packages/component-invite/src/controllers/assignCollectionRole.js
+++ b/packages/component-invite/src/controllers/assignCollectionRole.js
@@ -47,7 +47,8 @@ module.exports = async (
       isAccepted: false,
       collectionId,
     }
-    user.assignation = assignation
+    user.assignations = []
+    user.assignations.push(assignation)
     user = await user.save()
     await mailService.setupAssignEmail(
       user.email,
diff --git a/packages/component-invite/src/routes/postAssignation.js b/packages/component-invite/src/routes/postAssignation.js
index 17f841bbbab57cbb0e693a406c04bfe0b95905a2..5829a21ed5f3c2da7e7edb7c56f21a577e839bea 100644
--- a/packages/component-invite/src/routes/postAssignation.js
+++ b/packages/component-invite/src/routes/postAssignation.js
@@ -11,31 +11,35 @@ module.exports = models => async (req, res) => {
   }
 
   const user = await models.User.find(req.user)
-  if (!user.assignation) {
+  if (!user.assignations) {
     res.status(400).json({ error: 'The user has no assignation' })
     logger.error('The request user does not have any assignation')
     return
   }
   const { collectionId } = req.params
-  if (collectionId !== user.assignation.collectionId) {
+  const assignations = user.assignations.filter(
+    assignation => assignation.collectionId === collectionId,
+  )
+
+  if (assignations.length === 0) {
     res.status(400).json({
-      error: 'User collection and provided collection do not match',
+      error: `Collection ${collectionId} does not match any user assignation`,
     })
     logger.error(
-      `Param ${collectionId} does not match user collection: ${
-        user.assignation.collectionId
-      }`,
+      `Collection ${collectionId} does not match any user assignation`,
     )
     return
   }
 
-  if (type !== user.assignation.type) {
+  const matchingAssignation = assignations[0]
+
+  if (type !== matchingAssignation.type) {
     res.status(400).json({
       error: 'User assignation type and provided type do not match',
     })
     logger.error(
       `Param ${type} does not match user assignation type: ${
-        user.assignation.type
+        matchingAssignation.type
       }`,
     )
     return
@@ -44,9 +48,9 @@ module.exports = models => async (req, res) => {
   try {
     await models.Collection.find(collectionId)
     // TODO: create a team and add the team id to the user's teams array
-    user.assignation.hasAnswer = true
+    matchingAssignation.hasAnswer = true
     if (accept === true) {
-      user.assignation.isAccepted = true
+      matchingAssignation.isAccepted = true
     }
     await user.save()
     res.status(204).json()
diff --git a/packages/component-invite/src/tests/fixtures/users.js b/packages/component-invite/src/tests/fixtures/users.js
index 012d67453bf27075f7e643e09d995d76f7b8ffd8..b918c91c60b44252d28d7750280dc3ffc4a5c616 100644
--- a/packages/component-invite/src/tests/fixtures/users.js
+++ b/packages/component-invite/src/tests/fixtures/users.js
@@ -31,11 +31,13 @@ const users = {
     admin: false,
     id: 'handling123',
     roles: ['handlingEditor'],
-    assignation: {
-      type: 'handlingEditor',
-      hasAnswer: false,
-      isAccepted: false,
-    },
+    assignations: [
+      {
+        type: 'handlingEditor',
+        hasAnswer: false,
+        isAccepted: false,
+      },
+    ],
     save: jest.fn(() => users.handlingEditor),
   },
   author: {
diff --git a/packages/component-invite/src/tests/postAssignation.test.js b/packages/component-invite/src/tests/postAssignation.test.js
index 5610f418c1500ee5a101bdd89505abe355676a80..a2e4dbd9be1de81560050c6fcd7004b24ffd9a6d 100644
--- a/packages/component-invite/src/tests/postAssignation.test.js
+++ b/packages/component-invite/src/tests/postAssignation.test.js
@@ -53,8 +53,8 @@ describe('Post assignation route handler', () => {
     await require(postAssignationPath)(models)(req, res)
 
     expect(res.statusCode).toBe(204)
-    expect(acceptingHE.assignation.hasAnswer).toBeTruthy()
-    expect(acceptingHE.assignation.isAccepted).toBeTruthy()
+    expect(acceptingHE.assignations[0].hasAnswer).toBeTruthy()
+    expect(acceptingHE.assignations[0].isAccepted).toBeTruthy()
   })
   it('should return success when the handling editor refuses work on a collection', async () => {
     const refusingHE = cloneDeep(handlingEditor)
@@ -71,8 +71,8 @@ describe('Post assignation route handler', () => {
     await require(postAssignationPath)(models)(req, res)
 
     expect(res.statusCode).toBe(204)
-    expect(refusingHE.assignation.hasAnswer).toBeTruthy()
-    expect(refusingHE.assignation.isAccepted).toBeFalsy()
+    expect(refusingHE.assignations[0].hasAnswer).toBeTruthy()
+    expect(refusingHE.assignations[0].isAccepted).toBeFalsy()
   })
   it('should return an error params are missing', async () => {
     const body = {
@@ -116,7 +116,7 @@ describe('Post assignation route handler', () => {
     const req = httpMocks.createRequest({
       body,
     })
-    delete noAssignationEditor.assignation
+    delete noAssignationEditor.assignations
     req.user = noAssignationEditor
     const res = httpMocks.createResponse()
     const models = buildModels(standardCollection, noAssignationEditor)
diff --git a/packages/component-invite/src/tests/postInvite.test.js b/packages/component-invite/src/tests/postInvite.test.js
index d03f3ebc8f0dc8758bea0f9d49a10abeee3485d5..5a3bdc423ac6499fe156ff50ad5f1b32d92d95af 100644
--- a/packages/component-invite/src/tests/postInvite.test.js
+++ b/packages/component-invite/src/tests/postInvite.test.js
@@ -208,7 +208,7 @@ describe('Post invite route handler', () => {
     const data = JSON.parse(res._getData())
     expect(data.roles).toContain(body.role)
     expect(data.email).toEqual(body.email)
-    expect(data.assignation.collectionId).toEqual(req.params.collectionId)
+    expect(data.assignations[0].collectionId).toEqual(req.params.collectionId)
   })
   it('should return success when the handlingEditor invites a reviewer with a collection', async () => {
     const body = {
@@ -228,6 +228,6 @@ describe('Post invite route handler', () => {
     const data = JSON.parse(res._getData())
     expect(data.roles).toContain(body.role)
     expect(data.email).toEqual(body.email)
-    expect(data.assignation.collectionId).toEqual(req.params.collectionId)
+    expect(data.assignations[0].collectionId).toEqual(req.params.collectionId)
   })
 })
diff --git a/packages/xpub-faraday/config/validations.js b/packages/xpub-faraday/config/validations.js
index 4a753517200ef603bd276a194767b62915db1048..49323a02f1db61c4055a8908af6cd5496b8f8df1 100644
--- a/packages/xpub-faraday/config/validations.js
+++ b/packages/xpub-faraday/config/validations.js
@@ -93,7 +93,7 @@ module.exports = {
     lastName: Joi.string().allow(''),
     affiliation: Joi.string().allow(''),
     title: Joi.string().allow(''),
-    assignation: Joi.object(),
+    assignations: Joi.array(),
   },
   team: {
     group: Joi.string(),