diff --git a/src/resources/groups/groupsModel.js b/src/resources/groups/groupsModel.js
index f9fc054694c65b3db8580ae1dd44abe4f5a40725..c3dc1c442db5b0b1bdce38bd21a4b543a3dc02a3 100644
--- a/src/resources/groups/groupsModel.js
+++ b/src/resources/groups/groupsModel.js
@@ -4,6 +4,7 @@ const GroupsSchema = new mongoose.Schema({
   name: {
     type: String,
     required: true,
+    index: { unique: true },
   },
   description: {
     type: String,
@@ -15,8 +16,6 @@ const GroupsSchema = new mongoose.Schema({
   },
 })
 
-GroupsSchema.index({ name: 1 })
-
 const Groups = mongoose.model('groups', GroupsSchema)
 
 exports.Groups = Groups
diff --git a/src/resources/user/__tests__/userFuncTest.js b/src/resources/user/__tests__/userFuncTest.js
index 619a9b3a16f98f29bfc1e536e9bcd1706cca3a42..973d7671562048b880459fecb73d62e4fe4f854d 100644
--- a/src/resources/user/__tests__/userFuncTest.js
+++ b/src/resources/user/__tests__/userFuncTest.js
@@ -130,6 +130,15 @@ describe('/user "Mentor" Functionality', () => {
     expect(response.statusCode).toBe(422)
     expect(response.body.messages).not.toBe(undefined)
   })
+  test(`GET users by role`, async () => {
+    const user = await User.create(fakeUserJson)
+    let response = await authSession.get(`${endpointUrl}/role/normal`)
+    expect(response.body.data.length).toBe(1)
+    response = await authSession.get(`${endpointUrl}/role/accepted`)
+    expect(response.body.data.length).toBe(0)
+    response = await authSession.get(`${endpointUrl}/role/mentor`)
+    expect(response.body.data.length).toBe(1)
+  })
 })
 
 describe('/user "Accepted" Functionality', () => {
diff --git a/src/resources/user/userControllers.js b/src/resources/user/userControllers.js
index 696bdb30c907a84665f4c4f9c1edf140da7f99e8..875314b1a99dd76d79143b6950b1e87324ca017b 100644
--- a/src/resources/user/userControllers.js
+++ b/src/resources/user/userControllers.js
@@ -2,7 +2,7 @@ const { crudControllers, getMany } = require('../../utils/crud')
 const { User } = require('./userModel')
 const { pick } = require('lodash')
 
-const defaultKeys = [
+const pickedKeys = [
   'schacc',
   'fullName',
   'secondaryEmail',
@@ -33,7 +33,7 @@ module.exports.getOne = async (req, res) => {
   try {
     // Get Own User
     if (req.params.schacc === req.user.schacc && req.user.role !== 'mentor')
-      return res.status(200).json({ data: pick(req.user, defaultKeys) })
+      return res.status(200).json({ data: pick(req.user, pickedKeys) })
 
     // Get Other User
     if (req.user.role !== 'mentor') return res.status(403).end()
@@ -47,7 +47,7 @@ module.exports.getOne = async (req, res) => {
 
     return res
       .status(200)
-      .json({ data: pick(user, [...defaultKeys, 'bit', 'presence']) })
+      .json({ data: pick(user, [...pickedKeys, 'bit', 'presence']) })
   } catch (err) {
     if (err.name === 'CastError')
       // Throwed by Mongoose
@@ -59,7 +59,18 @@ module.exports.getOne = async (req, res) => {
 }
 
 // Overwrite the returned keys
-module.exports.getMany = getMany(User, [...defaultKeys, 'bit', 'presence'])
+module.exports.getMany = getMany(User, [...pickedKeys, 'bit', 'presence'])
+
+module.exports.getManyByRole = async (req, res) => {
+  try {
+    const docs = await User.find({ role: req.params.role }).lean().exec()
+
+    res.status(200).json({ data: docs.map((e) => pick(e, pickedKeys)) })
+  } catch (e) {
+    console.error(e)
+    res.status(400).end()
+  }
+}
 
 // Doesn't delete the user just disable it
 module.exports.softRemove = async (req, res) => {
@@ -81,7 +92,7 @@ module.exports.softRemove = async (req, res) => {
 
     return res
       .status(200)
-      .json({ data: pick(user, [...defaultKeys, 'bit', 'presence']) })
+      .json({ data: pick(user, [...pickedKeys, 'bit', 'presence']) })
   } catch (e) {
     console.error(e)
     return res.status(400).end()
@@ -112,8 +123,8 @@ module.exports.updateOne = async (req, res) => {
     // Pick keys
     let returnData
     if (req.user.role === 'mentor')
-      returnData = pick(updatedUser, [...defaultKeys, 'bit', 'presence'])
-    else returnData = pick(updatedUser, defaultKeys)
+      returnData = pick(updatedUser, [...pickedKeys, 'bit', 'presence'])
+    else returnData = pick(updatedUser, pickedKeys)
 
     return res.status(200).json({
       data: returnData,
diff --git a/src/resources/user/userDocs.yml b/src/resources/user/userDocs.yml
index d68a3367894859a225fb954fe46154da7867f39e..1a836b3532505d043001f9dd2b3e18d1bf83136f 100644
--- a/src/resources/user/userDocs.yml
+++ b/src/resources/user/userDocs.yml
@@ -52,6 +52,22 @@ paths:
             application/json:
               schema:
                 $ref: '#/components/schemas/User'
+  /user/role/{role}:
+    get:
+      tags:
+        - 'User'
+      summary: 'Get a List of users by role'
+      description: 'This can only be done by a mentor.'
+      operationId: 'getAllUserByRole'
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                type: 'array'
+                items:
+                  $ref: '#/components/schemas/User'
   /user/schacc/{schacc}:
     get:
       tags:
diff --git a/src/resources/user/userModel.js b/src/resources/user/userModel.js
index 646dcfd8966343a6fe0459b6be99a83a1919f04a..9321af1c6a800207c6366647313bdfd892cc5264 100644
--- a/src/resources/user/userModel.js
+++ b/src/resources/user/userModel.js
@@ -10,7 +10,7 @@ const UserSchema = new mongoose.Schema(
     schacc: {
       type: String,
       required: true,
-      unique: true,
+      index: { unique: true },
     },
     fullName: {
       type: String,
@@ -63,8 +63,6 @@ const UserSchema = new mongoose.Schema(
   { timestamps: true }
 )
 
-UserSchema.index({ schacc: 1 })
-
 const User = mongoose.model('user', UserSchema)
 
 exports.User = User
diff --git a/src/resources/user/userRouter.js b/src/resources/user/userRouter.js
index ee018b912fcb70e0806f9c57faaadd24ae452e6d..583a0c920c50a3a8cbc16aa0c3d9e8726492d0cf 100644
--- a/src/resources/user/userRouter.js
+++ b/src/resources/user/userRouter.js
@@ -7,6 +7,9 @@ const router = Router()
 // /api/v1/user
 router.route('/').get(isLoggedIn, isMentor, controllers.getMany)
 
+// /api/v1/user/role/:role
+router.route('/role/:role').get(isLoggedIn, isMentor, controllers.getManyByRole)
+
 // /api/v1/user/schacc/:schacc
 router
   .route('/schacc/:schacc')