diff --git a/ldap_config.json b/ldap_config.json
index 62d56afd83e512b39a220484d2a40ac058b29342..93e8eb9158fe04e9dbed3a4414a08cb87b241682 100644
--- a/ldap_config.json
+++ b/ldap_config.json
@@ -11,7 +11,6 @@
 		"group":"ou=groups,dc=frankiz,dc=net",
 		"user": "ou=eleves,dc=frankiz,dc=net"
 	},
-	"key_id": "uid",
 	
 	"comment_3": "Placeholders et indications de contenu de certains champs du LDAP généré par frankiz pour les utilisateurs",
 	"user": {
@@ -35,7 +34,7 @@
 	},
 	"comment_4": "Placeholders et indications de contenu de certains champs du LDAP généré par frankiz pour les groupes",
 	"group": {
-		"gid": "uid",
+		"gid": "cn",
 		"name": "sn",
 		"site": "website",
 		"description": "description",
diff --git a/src/graphql/models/authorization.ts b/src/graphql/models/authorization.ts
index be0a395ba06f54dca5d6d06f986dc22d6de0729f..a4dc65cb588421cdd7392abe635f4488bc91a033 100644
--- a/src/graphql/models/authorization.ts
+++ b/src/graphql/models/authorization.ts
@@ -70,7 +70,7 @@ export class AuthorizationModel {
         console.log("calling UT.peek from ldap connector (User Tool)...")
         let data = await UT.peek(this.uid);
         console.log("UT.peek returned with data:");
-        console.log(data);
+        //console.log(data);
 
         this.viewerOf = await Tools.viewerOf(data);
         this.memberOf = await Tools.memberOf(data);
diff --git a/src/ldap/export/user.ts b/src/ldap/export/user.ts
index 0924928abeef251f6b507505e04f76b6aaf1efc0..0d192ecc74d850aae2f4de3ef300185bd2cb0f20 100644
--- a/src/ldap/export/user.ts
+++ b/src/ldap/export/user.ts
@@ -6,6 +6,7 @@
 import {ldapConfig, userData, categories} from '../internal/config';
 import {Basics} from '../internal/basics';
 import {Tools} from '../internal/tools';
+import ldapEscape from 'ldap-escape';
 
 //------------------------------------------------------------------------------------------------------------------------
 // Classes à exporter TBT
@@ -34,7 +35,12 @@ export class User {
     static async peek(uid: string) : Promise<userData> {
         try { 
             let data : userData = await Tools.peek<userData>("user", uid, userData);
-            for (let cat in categories) { data[cat] = await Basics.searchSingle("group", ldapConfig.group.key_id, "*", ldapConfig.group[cat]+"="+uid); }
+            for (let cat of categories) { 
+                let dn = ldapConfig.user.uid + "=" + ldapEscape.filter("${txt}", { txt: uid }) + "," + ldapConfig.dn.user;
+                console.log(ldapConfig.group[cat] + "=" + dn);
+                data[cat] = await Basics.searchSingle("group", ldapConfig.group.gid, null, ldapConfig.group[cat] + "=" + dn);
+                console.log(data[cat]);
+            }
             return data;
         }
         catch(err) {
diff --git a/src/ldap/internal/basics.ts b/src/ldap/internal/basics.ts
index 7097d58574c7c17d6ef55cc92c07d63a4b9b1773..942790db170d8ab1edc84477e9117a067b68b324 100644
--- a/src/ldap/internal/basics.ts
+++ b/src/ldap/internal/basics.ts
@@ -101,7 +101,11 @@ export class Basics {
     static search(domain: 'group'|'user', attributes: string[], id: string, filter: string, handler : (entry: any) => void) : Promise<void> {
         Basics.adminBind();
         let dn ="";
-        if (id != null)     { dn+=ldapConfig.key_id+'='+ ldapEscape.dn("${txt}", { txt: id}) +','; }
+        if (id != null)     {
+            if (domain == "group")  { dn+=ldapConfig.group.gid; }
+            else                    { dn += ldapConfig.user.uid; }
+            dn += '=' + ldapEscape.dn("${txt}", { txt: id }) + ',';
+        }
         dn+=ldapConfig.dn[domain];
         // Interrogation LDAP selon filter
         let promise = new Promise<void>(function(resolve, reject) {
@@ -144,6 +148,7 @@ export class Basics {
         let vals=[];
         await Basics.search(domain, [attribute], id, filter,  entry => {
             // Cas un seul attribut où le résultat est une liste directement
+            console.log(entry.object)
             vals.push(entry.object[attribute]);
         });
         return vals;
diff --git a/src/ldap/internal/config.ts b/src/ldap/internal/config.ts
index 4924c34c41df60fdcf5e89c67e5bce54d1f9ab16..51e345f4523dade9cdf9cc744574d160ee44f0de 100644
--- a/src/ldap/internal/config.ts
+++ b/src/ldap/internal/config.ts
@@ -10,10 +10,10 @@ import fs from 'fs';
 import path from 'path';
 import colors from 'colors';
 import dotenv from 'dotenv';
-dotenv.config({ path: path.resolve("/"+__dirname, '..', '..', '..', './.env') });
+dotenv.config({ path: path.resolve(__dirname, '..', '..', '..', './.env') });
 
 // Point central ; tous les champs de la BDD sont 'cachés' dans config.json et pas visibles directement
-let path_config = path.resolve("/"+__dirname, '..', '..', '..', './ldap_config.json');
+let path_config = path.resolve(__dirname, '..', '..', '..', './ldap_config.json');
 console.log(colors.cyan("Loading LDAP config file from "+path_config));
 export const ldapConfig = JSON.parse(fs.readFileSync(path_config).toString());
 
diff --git a/src/ldap/internal/tools.ts b/src/ldap/internal/tools.ts
index 507d909a9384b0ee5ff2e84fa2347c23e5e07395..1c5a6b2f6ac6551d201c1773301bd6921dddd8b5 100644
--- a/src/ldap/internal/tools.ts
+++ b/src/ldap/internal/tools.ts
@@ -34,20 +34,17 @@ export class Tools {
      * @async
      */
     static async peek<T>(domain: 'user'|'group', id: string, type: new () => T) : Promise<T> {
-        var dirtyKeys = ldapConfig[domain];
-        let cleanData : T = new type();
-        let attr = Object.keys(dirtyKeys).map(key => dirtyKeys[key]);
-        //console.log(attr);
-        let dirtyData = (await Basics.searchMultiple(domain, attr, id))[0];
-        console.log(dirtyData);
-        console.log(cleanData);
+        let map = ldapConfig[domain];
+        let cleanKeys = Object.keys(map);
+        let dirtyKeys = cleanKeys.map(key => map[key]);
+
+        let cleanData: T = new type();
+        let dirtyData = (await Basics.searchMultiple(domain, dirtyKeys, id))[0];
         // Rename output
-        for (let uncleanKey in dirtyData) {
-            for (let cleanKey of Object.keys(cleanData)) {
-                console.log(cleanKey);
-                if (uncleanKey==dirtyKeys[cleanKey]) { cleanData[cleanKey] = dirtyData[uncleanKey]; }
-            }
+        for(let cleanKey of cleanKeys) {
+            cleanData[cleanKey] = dirtyData[map[cleanKey]];
         }
+        //console.log(cleanData);
         return cleanData;
     }