diff --git a/src/ldap/ldap_data.js b/src/ldap/ldap_data.js
index 801a5652f912edf7ac0ba622722558e577aebda7..f34fba5f56a1ea0ce166f89df11264cfef9c745f 100644
--- a/src/ldap/ldap_data.js
+++ b/src/ldap/ldap_data.js
@@ -12,7 +12,7 @@ import path from 'path';
 /*var ldap = require('ldapjs');
 var fs = require('fs');
 var ldapEscape = require('ldap-escape');
-var path = require('path');*/
+var path = require('path'); */
 
 // Important ; permet de vérifier que l'utilisateur reste connecté.
 var ensureLoggedin =  require('connect-ensure-login').ensureLoggedIn;
@@ -25,7 +25,7 @@ var config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
 var client = ldap.createClient({ url: config.ldap.server});
 
 //------------------------------------------------------------------------------------------------------------------------
-// Fonctions de recherche
+// Fonctions de base
 //------------------------------------------------------------------------------------------------------------------------
 
 /**
@@ -85,6 +85,67 @@ function rechercheLDAP(user, base, filter, filter_dic, attributes) {
     });
 }
 
+/**
+ * @summary Fonction qui permet de modifier un élément sur le LDAP.
+ * @desc Cette fonction utilise une Promise pour être asynchrone ; elle renvoit la promesse d'une réponse puis traite la demande avec ldapjs (voir [`Client API`](http://ldapjs.org/client.html) méthode search). Il faut l'appeler suivant un schéma `modifierLDAP(...).then((res) => { truc avec res });`. Cette fonction fait une demande au LDAP qu'elle filtre selon un schéma prédéfini dans `dic` et à chaque résultat (event SearchEntry) le met dans une liste, et renvoit la liste à l'issue (event end).
+ * @arg {Object} user - Utilisateur de la forme nécessaire au bind
+ * @arg {string} user[key] - uid et password
+ * @arg {Object} mod - Dictionnaire contenant les attributs à modifier et les modifications
+ * @return {boolean} `true` si la modification s'est bien déroulée, false sinon
+ */
+function modifierLDAP(user, name, op, mod) {
+    // Debug TBM
+    //console.log(base);
+    //console.log(operation);
+    //console.log(modification);
+    return new Promise(function(resolve, reject) {
+        // A TBM utiliser user connecte (permet de pas avoir trop de demandes trop rapides et problème de permission)
+        client.bind(config.connexion.dn, config.connexion.passwd, (err, res) => {});
+
+        // Modification LDAP selon configuration en argument (pourrait prendre une liste de Changes)
+        client.modify(name, new ldap.Change({
+            operation: op,
+            modification: mod,
+        }), function(err) {
+            reject(err);
+        });
+        resolve(true);
+    });
+}
+
+/**
+ * @summary Fonction qui permet de rajouter un élément sur le LDAP.
+ * @desc Cette fonction utilise une Promise pour être asynchrone ; elle renvoit la promesse d'une réponse puis traite la demande avec ldapjs (voir [`Client API`](http://ldapjs.org/client.html) méthode search). Il faut l'appeler suivant un schéma `modifierLDAP(...).then((res) => { truc avec res });`. Cette fonction fait une demande au LDAP qu'elle filtre selon un schéma prédéfini dans `dic` et à chaque résultat (event SearchEntry) le met dans une liste, et renvoit la liste à l'issue (event end).
+ * @arg {Object} user - Utilisateur de la forme nécessaire au bind
+ * @arg {string} user[key] - uid et password
+ * @arg {string} dn - Adresse du parent
+ * @arg {Object} vals - Dictionnaire contenant les valeurs à 
+ * @return {boolean} `true` si la modification s'est bien déroulée, false sinon
+ */
+function addLDAP(user, name, op, mod) {
+    // Debug TBM
+    //console.log(base);
+    //console.log(operation);
+    //console.log(modification);
+    return new Promise(function(resolve, reject) {
+        // A TBM utiliser user connecte (permet de pas avoir trop de demandes trop rapides et problème de permission)
+        client.bind(config.connexion.dn, config.connexion.passwd, (err, res) => {});
+
+        // Modification LDAP selon configuration en argument (pourrait prendre une liste de Changes)
+        client.modify(name, new ldap.Change({
+            operation: op,
+            modification: mod,
+        }), function(err) {
+            reject(err);
+        });
+        resolve(true);
+    });
+}
+
+//------------------------------------------------------------------------------------------------------------------------
+// Fonctions de recherche
+//------------------------------------------------------------------------------------------------------------------------
+
 /**
  * @summary Fonction qui interroge le LDAP et retrouve les groupes dont un individu est membre.
  * @desc Cette fonction utilise rechercheLDAP avec un dictionnaire prédéfini dans config.json. Il faut l'appeler selon un schéma `listGroups(...).then((res) => { truc avec res })`;
@@ -95,7 +156,7 @@ function rechercheLDAP(user, base, filter, filter_dic, attributes) {
  */
 function listGroups(user, uid) {
     return new Promise(function(resolve, reject) {
-        resolve(rechercheLDAP(user,config.dn_users, config.filter_id, { id : uid }, config.attributes_lg).then(res => res[0]));
+        rechercheLDAP(user,config.dn_users, config.filter_id, { id : uid }, config.attributes_lg).then(res => resolve(res[0]));
     });
 }
 
@@ -109,7 +170,7 @@ function listGroups(user, uid) {
  */
 function listGroups2(user, uid) {
     return new Promise(function(resolve, reject) {
-        resolve(rechercheLDAP(user, config.dn_groups, config.filter_lg, { id : uid }, config.attributes_id));
+        rechercheLDAP(user, config.dn_groups, config.filter_lg, { id : uid }, config.attributes_id).then(res => resolve(res));
     });
 }
 
@@ -123,7 +184,7 @@ function listGroups2(user, uid) {
  */
 function listMembers(user, gid) {
     return new Promise(function(resolve, reject) {
-        resolve(rechercheLDAP(user, config.key_id+"="+gid+","+config.dn_groups, config.filter_id, { id: gid }, config.attributes_lm).then(res => res[0]));
+        rechercheLDAP(user, config.key_id+"="+gid+","+config.dn_groups, config.filter_id, { id: gid }, config.attributes_lm).then(res => resolve(res[0]));
     });
 }
 
@@ -137,7 +198,7 @@ function listMembers(user, gid) {
  */
 function listAdmins(user, gid) {
     return new Promise(function(resolve, reject) {
-        resolve(rechercheLDAP(user, config.key_id+"="+gid+","+config.dn_groups, config.filter_id, { id: gid }, config.attributes_al).then(res => res[0]));
+        rechercheLDAP(user, config.key_id+"="+gid+","+config.dn_groups, config.filter_id, { id: gid }, config.attributes_al).then(res => resolve(res[0]));
     });
 }
  
@@ -151,7 +212,7 @@ function listAdmins(user, gid) {
  */
 function rens(user, uid) {
     return new Promise(function(resolve, reject) {
-        resolve(rechercheLDAP(user, config.dn_users, config.filter_id, { id: uid }, config.attributes_all));
+        rechercheLDAP(user, config.dn_users, config.filter_id, { id: uid }, config.attributes_all).then(res => resolve(res));
     });
 }
 
@@ -192,7 +253,7 @@ function idTOL(user, c0="", c1="", c2="", c3="", c4="", c5="", c6="", c7="", c8=
         });
 
         // Appel rechercheLDAP avec filtre de l'espace 
-        resolve(rechercheLDAP(user, config.dn_users, filter, filter_dic, config.attributes_id));
+        rechercheLDAP(user, config.dn_users, filter, filter_dic, config.attributes_id).then(res => resolve(res));
     });
 }
 
@@ -218,9 +279,6 @@ function idTOL(user, c0="", c1="", c2="", c3="", c4="", c5="", c6="", c7="", c8=
  */
 function TOL(user, c0="", c1="", c2="", c3="", c4="", c5="", c6="", c7="", c8="", c9="", c10="", c11="", c12="") {
     return new Promise(function(resolve, reject) {
-        // Pas nécessaire mais bien
-        client.bind(config.connexion.dn, config.connexion.passwd, (err, res) => {});
-
         let filter="";
         let dic={};
         // Iteration pour chaque champ, alourdissement du filtre selon des trucs prédéfini dans config.json encore
@@ -238,7 +296,7 @@ function TOL(user, c0="", c1="", c2="", c3="", c4="", c5="", c6="", c7="", c8=""
         //console.log(filter);
         //console.log(dic);
 
-        rechercheLDAP(user, config.dn_users, filter, dic, config.attributes_all);
+        rechercheLDAP(user, config.dn_users, filter, dic, config.attributes_all).then(res => resolve(res));
     });
 }
 
@@ -246,53 +304,33 @@ function TOL(user, c0="", c1="", c2="", c3="", c4="", c5="", c6="", c7="", c8=""
 // Fonctions de modification
 //------------------------------------------------------------------------------------------------------------------------
 
-/**
- * @summary Fonction qui permet de créer un groupe sur le LDAP.
- * @desc Cette fonction utilise une Promise pour être asynchrone ; elle renvoit la promesse d'une réponse puis traite la demande avec ldapjs (voir [`Client API`](http://ldapjs.org/client.html) méthode search). Il faut l'appeler suivant un schéma `modifierLDAP(...).then((res) => { truc avec res });`. Cette fonction fait une demande au LDAP qu'elle filtre selon un schéma prédéfini dans `dic` et à chaque résultat (event SearchEntry) le met dans une liste, et renvoit la liste à l'issue (event end).
- * @arg {Object} user - Utilisateur de la forme nécessaire au bind
- * @arg {string} user[key] - uid et password
- * @arg {Object} mod - Dictionnaire contenant les attributs à modifier et les modifications
- * @return {boolean} `true` si la modification s'est bien déroulée, false sinon
- */
-function modifierLDAP(user, name, op, mod) {
-    // Debug TBM
-    //console.log(base);
-    //console.log(operation);
-    //console.log(modification);
-    return new Promise(function(resolve, reject) {
-        // A TBM utiliser user connecte (permet de pas avoir trop de demandes trop rapides et problème de permission)
-        client.bind(config.connexion.dn, config.connexion.passwd, (err, res) => {});
-
-        // Modification LDAP selon configuration en argument
-        client.modify(name, new ldap.Change({
-            operation: op,
-            modification: mod,
-        }), function(err) {
-            reject(err);
-        });
-        resolve(true);
-    });
-}
-
 /**
  * @summary Fonction qui va plonger dans le LDAP et modifier un certain jeu de valeur en argument.
  * @desc Cette fonction utilise une Promise pour être asynchrone ; elle renvoit la promesse d'une réponse puis traite la demande avec ldapjs (voir [`Client API`](http://ldapjs.org/client.html) méthode search). Il faut l'appeler suivant un schéma `modifierLDAP(...).then((res) => { truc avec res });`. Cette fonction fait une demande au LDAP qu'elle filtre selon un schéma prédéfini dans `dic` et à chaque résultat (event SearchEntry) le met dans une liste, et renvoit la liste à l'issue (event end).
  * @arg {Object} user - Utilisateur de la forme nécessaire au bind
  * @arg {string} user[key] - uid et password
- * @arg {Object} param - Dictionnaire contenant les attributs à modifier et les modifications
- * @arg {string} param[key] - Nouvelle valeur des attributs
+ * @arg {string} gid - Identifiant du group
+ * @arg {string} nom - Nom commun du group
+ * @arg {string} status - Statut du groupe (binet, autre ?)
+ * @arg {string[]} admins - Admins du groupe
+ * @arg {string[]} members - Nouvelle valeur des attributs
  * @return {boolean} `true` si la modification s'est bien déroulée, false sinon
  */
-function creerGroupe(param) {
+function creerGroupe(user, gid, nom, status, admins, members) {
     return new Promise(function(resolve, reject) {
+        let data = {};
+        data["uid"] = gid;
+        data["cn"] = nom;
+        data["brNS"] = status;
+        data[""];
         reject(false);
     });
 }
 
-//modifierLDAP("uid=quentin.chevalier,ou=eleves,dc=frankiz,dc=net","replace", {"displayName": ["hawkspar"]}).then(res => console.log(res));
-//rechercheLDAP(user, "uid=quentin.chevalier,ou=eleves,dc=frankiz,dc=net","(displayName=${cn})",{ cn: "Sire hawkspar" }, ["jpegPhoto"]).then(res => console.log(res));
+//listGroups({},"anatole.romon").then(res => console.log(res));
+//TOL({},"","","","","","","absolutvodkes","","","","","","").then(res => console.log(res));
 
 /* Partage pour le reste du monde ; même remarque synthaxe que pour l'import */
-export { rens, listAdmins, listGroups, listMembers, TOL };
+export { listGroups, listMembers, listAdmins, rens, idTOL, TOL };
 
 /*module.exports ={ listGroups, listMembers, listAdmins, rens, idTOL, TOL }; */