diff --git a/src/graphql/models/groupModel.ts b/src/graphql/models/groupModel.ts
index 63d90257e2d9c30e830ef2233ff5db8283f69734..9785d3c2f3570fe113845b7f48f14cfa3cfeccb0 100644
--- a/src/graphql/models/groupModel.ts
+++ b/src/graphql/models/groupModel.ts
@@ -151,6 +151,21 @@ export class GroupModel {
         return res;
     }
 
+    /**
+     * @memberof GraphQL.GroupModel#
+     * @function getAllSimpleGroupsFromMeta
+     * @summary Fonction qui renvoie tous les groupes simples du groupe meta.
+     * @arg {string} gid - identifiant du groupe en question.
+     * @return {GroupSet} Renvoie le tableau de groupes correspondant
+     * @rights connectedOrOnplatal
+     */
+    getAllSimpleGroupsFromMeta(gid: string): Promise<GroupSet> {
+        let arg=new GroupSet();
+        arg.add(gid);
+        let res=Tools.simpleGroupsOfGroups(arg);
+        return res;
+    }
+
     /**
      * @memberof GraphQL.GroupModel#
      * @function likeGroup
diff --git a/src/graphql/models/messageModel.ts b/src/graphql/models/messageModel.ts
index 1e2683c5a93d075ec733a87cdffd188054e67c2d..3a5af1d5d28ca2fa85bcf79d6bba26a279651161 100644
--- a/src/graphql/models/messageModel.ts
+++ b/src/graphql/models/messageModel.ts
@@ -75,6 +75,24 @@ export class MessageModel {
         return Question.tryCreate(mid);
     }
 
+    /**
+     * @memberof GraphQL.Group#
+     * @function questions
+     * @summary Renvoie les questions adressées a ce groupe
+     * @arg {string} gid
+     * @return {Promise(Question[])}
+     * @rights viewer
+     * @async
+     */
+    async getAllQuestionsReceived(gid: string): Promise<Question[]> {
+        throw "Not implemented"
+        // let result = await knex('questions').select().whereIn('id', received_messages);
+        // for(let entry of result){
+        //     entry.type = "Question";
+        // }
+        // return result;
+    }
+
     /**
      * @memberof GraphQL.MessageModel#
      * @function getAnswer
@@ -88,6 +106,25 @@ export class MessageModel {
         return Answer.tryCreate(mid);
     }
 
+    /**
+     * @memberof GraphQL.Group#
+     * @function answers
+     * @summary Renvoie les réponses de ce groupe
+     * @arg {string} gid
+     * @return {Promise(Answer[])}
+     * @rights viewer
+     * @async
+     */
+    async getAllAnswersSent(gid: string): Promise<Answer[]> {
+        throw "Not implemented"
+        // let received_messages = await selectors.recievedMessages(user, groupUID);
+        // let result = await knex('answers').select().whereIn('id', received_messages);
+        // for(let entry of result){
+        //     entry.type = "Answer";
+        // }
+        // return result;
+    }
+
     /**
      * @memberof GraphQL.MessageModel#
      * @function getAllMessages
diff --git a/src/graphql/models/tools.ts b/src/graphql/models/tools.ts
index 26d0f8b9357507a2abd7c3edc7b7c763c13ecb43..7a1895ad0033304dfce3c44ee36a9985cfe1844b 100644
--- a/src/graphql/models/tools.ts
+++ b/src/graphql/models/tools.ts
@@ -119,6 +119,21 @@ export class Tools {
         }));
     }
 
+    /**
+     * @memberof GraphQL
+     * @summary Fonction qui renvoit tous les simple-groupes dont ces groupes sont membres.
+     * @arg {GroupSet} groups - Un ensemble de gid des groupes a considérer.
+     * @return {Promise(GroupSet)} Renvoie un GroupSet contenant le nom des simple-groupes.
+     * @static
+     * @async
+     */
+    static async simpleGroupsOfGroups(groups: GroupSet): Promise<GroupSet> {
+        let simples = await knex.select('simple_group_gid').from('metagroup_memberships').whereIn('meta_group_gid', [...groups]);
+        return new GroupSet(simples.map( elt => {
+            return elt.simple_group_gid;
+        }));
+    }
+
     /**
      * @memberof GraphQL
      * @summary Fonction qui renvoit tous les groupes (simples ou méta) dont le user est membre.
diff --git a/src/graphql/object_resolvers/groups.ts b/src/graphql/object_resolvers/groups.ts
index ec502e237d04eac972bf4508b8ddd599c74d7a6d..994d9450182af82022243477498b426e2cfd2f9f 100644
--- a/src/graphql/object_resolvers/groups.ts
+++ b/src/graphql/object_resolvers/groups.ts
@@ -11,6 +11,8 @@ import { Context } from '../typeDefs/queries';
 import { ApolloError, AuthenticationError } from 'apollo-server-core';
 import { Request, UserJoinGroup, GroupJoinMetagroup, GroupCoauthorEvent } from './requests';
 import { GroupSet } from '../models/tools';
+import { is } from 'bluebird';
+import { userData } from '../../ldap/export/user';
 
 export abstract class Group {
 
@@ -190,7 +192,7 @@ export abstract class Group {
      */
     async questions(args, context: Context, info): Promise<Question[]> {
         if (context.models.auth.isViewer(this.gid)) {
-            throw "Not implemented"
+            return context.models.message.getAllQuestionsReceived(this.gid);
 
             // let result = await knex('questions').select().whereIn('id', received_messages);
             // for(let entry of result){
@@ -211,7 +213,7 @@ export abstract class Group {
      */
     async answers(args, context: Context, info): Promise<Answer[]> {
         if (context.models.auth.isViewer(this.gid)) {
-            throw "Not implemented"
+            return context.models.message.getAllAnswersSent(this.gid);
 
             // let received_messages = await selectors.recievedMessages(user, groupUID);
             // let result = await knex('answers').select().whereIn('id', received_messages);
@@ -552,14 +554,28 @@ export class SimpleGroup extends Group {
      */
     async admins(args, context: Context, info): Promise<User[]> {
         if(context.models.auth.isViewer(this.gid)) {
-            await this.fetchData();
-            return this.m_admins.map(uid => {
+            let list_admins =await this.auxAdmins();
+            return list_admins.map(uid => {
                 return new User(uid);
             });
         }
         throw new AuthenticationError("Not a viewer");
     }
 
+    /**
+     * @memberof GraphQL.SimpleGroup#
+     * @function auxAdmins
+     * @summary Renvoie la liste des admins en String
+     * @return {Promise(String[])}
+     * @async
+     */
+    async auxAdmins(): Promise<string[]> {
+        await this.fetchData();
+        return this.m_admins;
+    }
+
+
+
     /**
      * @memberof GraphQL.SimpleGroup#
      * @function likers
@@ -747,7 +763,16 @@ export class MetaGroup extends Group {
      */
     async admins(args, context: Context, info): Promise<User[]> {
         if (context.models.auth.isViewer(this.gid)) {
-            throw "Not implemented";
+            let admins = new Set<string>();
+            let arg = await context.models.group.getAllSimpleGroupsFromMeta(this.gid);
+            for(let g of arg){
+                let sg=new SimpleGroup(g);
+                let sg_admins= await sg.auxAdmins();
+                for(let admin of sg_admins){
+                    admins.add(admin);
+                }
+            }
+            return [...admins].map(uid => new User(uid));
         }
         throw new AuthenticationError("Not a viewer");
     }
@@ -762,7 +787,12 @@ export class MetaGroup extends Group {
      */
     async members(args, context: Context, info): Promise<SimpleGroup[]> {
         if (context.models.auth.isViewer(this.gid)) {
-            throw "Not implemented"
+            let arg = await context.models.group.getAllSimpleGroupsFromMeta(this.gid);
+            let res = new Array<SimpleGroup>();
+            for(let g of arg){
+                res.push(new SimpleGroup(g));
+            }
+            return res;
 
             /*let member_group_list = await knex.distinct().select().from('groups')
                 .innerJoin('meta_group_membership', 'groups.uid', 'meta_group_membership.member_uid')