diff --git a/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java b/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java
index 73d9943b9e5df2e6c3900a1af89e9ecdea82c540..c686d80783132b8cb799ac1745e30153be7e4720 100644
--- a/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java
+++ b/ad-connector/src/main/java/net/jami/jams/ad/connector/service/UserProfileService.java
@@ -80,7 +80,9 @@ public class UserProfileService {
         try {
             UserProfile userProfile = new UserProfile();
             for (Field field : fields) {
-                UserProfile.exposedMethods.get("set" + fieldMap.get(field.getName())).invoke(userProfile, field.getValue());
+                if(fieldMap.containsKey(field.getName())) {
+                    UserProfile.exposedMethods.get("set" + fieldMap.get(field.getName())).invoke(userProfile, field.getValue());
+                }
             }
             return userProfile;
         }
diff --git a/jams-server/src/main/java/net/jami/jams/server/Server.java b/jams-server/src/main/java/net/jami/jams/server/Server.java
index 757241b7a1cdf80b1221eb37dc1946383f6fe4a6..ecb00bbb3648fbad38724db71e7582868d4b4ae7 100644
--- a/jams-server/src/main/java/net/jami/jams/server/Server.java
+++ b/jams-server/src/main/java/net/jami/jams/server/Server.java
@@ -57,11 +57,11 @@ public class Server {
         try {
             InputStream path;
             ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
-            path = classLoader.getResourceAsStream("adsampleconfig.json");
-            userAuthenticationModule.attachADAuthSource(new String(path.readAllBytes()));
+            path = classLoader.getResourceAsStream("ldapconfig.json");
+            userAuthenticationModule.attachLDAPAuthSource(new String(path.readAllBytes()));
             UserProfile userProfile = userAuthenticationModule.getAuthenticationSources()
-                    .get(new AuthModuleKey("SAVOIRFAIRELINU", AuthenticationSourceType.AD))
-                    .getUserProfile("fsidokhine","LOGON_NAME");
+                    .get(new AuthModuleKey("savoirfairelinux", AuthenticationSourceType.LDAP))
+                    .getUserProfile("Sidokhine","FULL_TEXT_NAME");
             System.out.println(userProfile);
         } catch (Exception e) {
             log.error("Could not load and inject active directory connector with error: " + e.toString());
diff --git a/jams-server/src/main/resources/ldapconfig.json b/jams-server/src/main/resources/ldapconfig.json
index aa5e439c4e537e556f459752816bae6460ac7b27..54a125b26f823a186fb604d04ed092627108cbf1 100644
--- a/jams-server/src/main/resources/ldapconfig.json
+++ b/jams-server/src/main/resources/ldapconfig.json
@@ -5,5 +5,5 @@
   "host": "ldap://annuaire.savoirfairelinux.com",
   "username": "cn=sipallow,ou=dsa,dc=savoirfairelinux,dc=net",
   "password": "Dewaaghei3Yo",
-  "usernameField": "uid=%s"
+  "usernameField": "uid"
 }
\ No newline at end of file
diff --git a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/LDAPConnector.java b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/LDAPConnector.java
index f1b7461b12d692c83940fb2f76a48d4f5c08f3ec..194212863ac904972a05a6e5d29a1405bc2fdf68 100644
--- a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/LDAPConnector.java
+++ b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/LDAPConnector.java
@@ -10,6 +10,7 @@ import net.jami.jams.common.objects.user.User;
 import net.jami.jams.common.objects.user.UserProfile;
 import net.jami.jams.common.serialization.JsoniterRegistry;
 import net.jami.jams.ldap.connector.service.AuthenticationService;
+import net.jami.jams.ldap.connector.service.UserProfileService;
 import org.ldaptive.BindConnectionInitializer;
 import org.ldaptive.ConnectionConfig;
 import org.ldaptive.Credential;
@@ -18,7 +19,8 @@ import org.ldaptive.DefaultConnectionFactory;
 @Slf4j
 public class LDAPConnector implements AuthenticationSource {
 
-    private AuthenticationService authenticationService;
+    private final AuthenticationService authenticationService;
+    private final UserProfileService userProfileService;
     public static LDAPSettings settings;
 
     public LDAPConnector(String strSettings) {
@@ -33,6 +35,7 @@ public class LDAPConnector implements AuthenticationSource {
                 .connectionInitializers(bindConnectionInitializer)
                 .build();
         authenticationService = new AuthenticationService(new DefaultConnectionFactory(connConfig));
+        userProfileService = new UserProfileService(new DefaultConnectionFactory(connConfig));
         log.info("Started LDAP Connector!");
     }
 
@@ -43,7 +46,7 @@ public class LDAPConnector implements AuthenticationSource {
 
     @Override
     public UserProfile getUserProfile(String queryString, String field) {
-        return null;
+        return userProfileService.getUserProfile(queryString,field);
     }
 
     @Override
diff --git a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/AuthenticationService.java b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/AuthenticationService.java
index 90b07eec2aa19b78f0e525f45a7f998dd3908afe..1ce8eff4ff7ebec37c7da26d91887bba63744c3a 100644
--- a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/AuthenticationService.java
+++ b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/AuthenticationService.java
@@ -19,7 +19,7 @@ public class AuthenticationService {
     public boolean authenticateUser(String username, String password) {
         try {
             FormatDnResolver dnResolver = new FormatDnResolver();
-            dnResolver.setFormat(settings.getUsernameField() + "," + settings.getBaseDN());
+            dnResolver.setFormat(settings.getUsernameField() + "=%s," + settings.getBaseDN());
             SimpleBindAuthenticationHandler bindAuthenticationHandler = new SimpleBindAuthenticationHandler(connectionFactory);
             Authenticator auth = new Authenticator();
             auth.setDnResolver(dnResolver);
diff --git a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java
index 0fa7b5472464117406ecf75883b3e710a76c1293..faff16aaf2d5a234e092829f27c54afcc072fcce 100644
--- a/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java
+++ b/ldap-connector/src/main/java/net/jami/jams/ldap/connector/service/UserProfileService.java
@@ -1,4 +1,89 @@
 package net.jami.jams.ldap.connector.service;
 
+import lombok.extern.slf4j.Slf4j;
+import net.jami.jams.common.objects.user.UserProfile;
+import net.jami.jams.ldap.connector.LDAPConnector;
+import org.ldaptive.*;
+
+import java.util.HashMap;
+
+@Slf4j
 public class UserProfileService {
+
+    private static final HashMap<String,String> fieldMap = new HashMap<>();
+    private final ConnectionFactory connectionFactory;
+
+    static{
+        fieldMap.put("givenName","FirstName");
+        fieldMap.put("sn","LastName");
+        fieldMap.put("jpegPhoto","ProfilePicture");
+        fieldMap.put("mail","Email");
+        fieldMap.put("telephoneNumber","PhoneNumber");
+        fieldMap.put("mobile","MobileNumber");
+        fieldMap.put("facsimileTelephoneNumber","FaxNumber");
+        fieldMap.put("extensionName","PhoneNumberExtension");
+        fieldMap.put("o","Organization");
+    }
+
+    public UserProfileService(ConnectionFactory connectionFactory) {
+        this.connectionFactory = connectionFactory;
+    }
+
+    public UserProfile getUserProfile(String queryString, String field){
+        Connection connection = null;
+        try {
+            connection = connectionFactory.getConnection();
+            try {
+                connection.open();
+                SearchOperation search = new SearchOperation(connectionFactory);
+                SearchResponse res = search.execute(buildRequest(queryString,field));
+                if (res.getEntries().size() > 0) return profileFromResponse(res.getEntry());
+                return null;
+            } catch (Exception e) {
+                log.error("Could not search LDAP directory with error " + e.toString());
+                return null;
+            }
+        }
+        catch (Exception e){
+            log.info("Failed to search LDAP directory with error " + e.toString());
+            return null;
+        }
+        finally {
+            connection.close();
+        }
+    }
+
+
+    public static SearchRequest buildRequest(String queryString, String field) {
+        if(field.equals("LOGON_NAME")) {
+            return SearchRequest.builder()
+                    .dn(LDAPConnector.settings.getBaseDN())
+                    .filter("(&("+LDAPConnector.settings.getUsernameField()+"=" + queryString + "))")
+                    .build();
+        }
+        if(field.equals("FULL_TEXT_NAME")){
+            return SearchRequest.builder()
+                    .dn(LDAPConnector.settings.getBaseDN())
+                    .filter("(|(givenName=" + queryString + ")(sn="+queryString+")")
+                    .build();
+        }
+        return null;
+    }
+
+    public static UserProfile profileFromResponse(LdapEntry entry){
+        //Use reflection to remap.
+        try {
+            UserProfile userProfile = new UserProfile();
+            for (String attribute : entry.getAttributeNames()) {
+                if(fieldMap.containsKey(attribute)) {
+                    UserProfile.exposedMethods.get("set" + fieldMap.get(attribute)).invoke(userProfile, entry.getAttribute(attribute).getStringValue());
+                }
+            }
+            return userProfile;
+        }
+        catch (Exception e){
+            log.error("An error occured while trying to invoke methods: " + e.toString());
+            return null;
+        }
+    }
 }