diff --git a/htdocs/admin/ldap.php b/htdocs/admin/ldap.php
index c74761c754987b919af7a5b06acdc2b959a2bf8b..04222accced7b60af90a149807c32ddae3a9111d 100644
--- a/htdocs/admin/ldap.php
+++ b/htdocs/admin/ldap.php
@@ -2,6 +2,7 @@
 /* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  * Copyright (C) 2004 Sebastien Di Cintio  <sdicintio@ressource-toi.org>
  * Copyright (C) 2004 Benoit Mortier       <benoit.mortier@opensides.be>
+ * Copyright (C) 2005 Regis Houssin        <regis.houssin@cap-networks.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -46,23 +47,41 @@ if ($_GET["action"] == 'setvalue' && $user->admin)
 
   $sql = "INSERT INTO ".MAIN_DB_PREFIX."const (name,value,visible) VALUES
 	('LDAP_SERVER_HOST','".$_POST["host"]."',0);";
-	
-  $db->query($sql);
+	$db->query($sql);
 
-  $sql = "DELETE FROM ".MAIN_DB_PREFIX."const WHERE name = 'LDAP_SERVER_DN';";
+  $sql = "DELETE FROM ".MAIN_DB_PREFIX."const WHERE name = 'LDAP_SUFFIX_DN';";
   $db->query($sql);
 
+  $sql = "INSERT INTO ".MAIN_DB_PREFIX."const (name,value,visible) VALUES
+	('LDAP_SUFFIX_DN','".$_POST["dn"]."',0);";
+  $db->query($sql);
+  
+  $sql = "DELETE FROM ".MAIN_DB_PREFIX."const WHERE name = 'LDAP_ADMIN_DN';";
+  $db->query($sql);
   
   $sql = "INSERT INTO ".MAIN_DB_PREFIX."const (name,value,visible) VALUES
-	('LDAP_SERVER_DN','".$_POST["dn"]."',0);";
+	('LDAP_ADMIN_DN','".$_POST["pass"]."',0);";
   $db->query($sql);
 
-  $sql = "DELETE FROM ".MAIN_DB_PREFIX."const WHERE name = 'LDAP_SERVER_PASS';";
+  $sql = "DELETE FROM ".MAIN_DB_PREFIX."const WHERE name = 'LDAP_ADMIN_PASS';";
   $db->query($sql);
   
   $sql = "INSERT INTO ".MAIN_DB_PREFIX."const (name,value,visible) VALUES
-	('LDAP_SERVER_PASS','".$_POST["pass"]."',0);";
+	('LDAP_ADMIN_PASS','".$_POST["pass"]."',0);";
+  $db->query($sql);
+  
+  $sql = "DELETE FROM ".MAIN_DB_PREFIX."const WHERE name = 'LDAP_USER_DN';";
+  $db->query($sql);
+
+  $sql = "INSERT INTO ".MAIN_DB_PREFIX."const (name,value,visible) VALUES
+	('LDAP_USER_DN','".$_POST["dn"]."',0);";
+  $db->query($sql);
+  
+  $sql = "DELETE FROM ".MAIN_DB_PREFIX."const WHERE name = 'LDAP_GROUP_DN';";
+  $db->query($sql);
 
+  $sql = "INSERT INTO ".MAIN_DB_PREFIX."const (name,value,visible) VALUES
+	('LDAP_GROUP_DN','".$_POST["dn"]."',0);";
   $db->query($sql);
 
   $sql = "DELETE FROM ".MAIN_DB_PREFIX."const WHERE name = 'LDAP_SERVER_TYPE';";
@@ -94,9 +113,11 @@ print '<td>'.$langs->trans("Parameter").'</td>';
 print '<td>'.$langs->trans("Value").'</td><td colspan="2">&nbsp;</td>';
 print "</tr>\n";
 print '<tr><td>'.$langs->trans("LDAPServer").'</td><td>'.LDAP_SERVER_HOST.'</td></tr>';
-
-print '<tr><td>'.$langs->trans("DN").'</td><td>'.LDAP_SERVER_DN.'</td></tr>';
-print '<tr><td>'.$langs->trans("Password").'</td><td>'.LDAP_SERVER_PASS.'</td></tr>';
+print '<tr><td>'.$langs->trans("LDAPSuffix").'</td><td>'.LDAP_SUFFIX_DN.'</td></tr>';
+print '<tr><td>'.$langs->trans("DNAdmin").'</td><td>'.LDAP_ADMIN_DN.'</td></tr>';
+print '<tr><td>'.$langs->trans("LDAPPassword").'</td><td>'.LDAP_ADMIN_PASS.'</td></tr>';
+print '<tr><td>'.$langs->trans("DNUser").'</td><td>'.LDAP_USER_DN.'</td></tr>';
+print '<tr><td>'.$langs->trans("DNGroup").'</td><td>'.LDAP_GROUP_DN.'</td></tr>';
 print '<tr><td>'.$langs->trans("Type").'</td><td>'.LDAP_SERVER_TYPE.'</td></tr>';
 
 print '</table>';
@@ -114,11 +135,20 @@ print '<tr><td>';
 print $langs->trans("LDAPServer").'</td><td>';
 print '<input size="25" type="text" name="host" value="'.LDAP_SERVER_HOST.'">';
 print '</td></tr>';
-print '<tr><td>'.$langs->trans("DN").'</td><td>';
-print '<input size="25" type="text" name="dn" value="'.LDAP_SERVER_DN.'">';
+print '<tr><td>'.$langs->trans("LDAPSuffix").'</td><td>';
+print '<input size="25" type="text" name="suffix" value="'.LDAP_SUFFIX_DN.'">';
+print '</td></tr>';
+print '<tr><td>'.$langs->trans("DNAdmin").'</td><td>';
+print '<input size="25" type="text" name="admin" value="'.LDAP_ADMIN_DN.'">';
+print '</td></tr>';
+print '<tr><td>'.$langs->trans("LDAPPassword").'</td><td>';
+print '<input size="25" type="text" name="pass" value="'.LDAP_ADMIN_PASS.'">';
+print '</td></tr>';
+print '<tr><td>'.$langs->trans("DNUser").'</td><td>';
+print '<input size="25" type="text" name="user" value="'.LDAP_USER_DN.'">';
 print '</td></tr>';
-print '<tr><td>'.$langs->trans("Password").'</td><td>';
-print '<input size="25" type="text" name="pass" value="'.LDAP_SERVER_PASS.'">';
+print '<tr><td>'.$langs->trans("DNGroup").'</td><td>';
+print '<input size="25" type="text" name="group" value="'.LDAP_GROUP_DN.'">';
 print '</td></tr>';
 
 print '<tr><td>'.$langs->trans("Type").'</td><td><select name="type">';
@@ -136,8 +166,9 @@ print '</td></tr></table>';
   *
   */
 
-if (defined("LDAP_SERVER_HOST") && LDAP_SERVER_HOST && $_GET["action"] == 'test') {
-    print '<a class="tabAction" href="ldap.php?action=test">'.$langs->trans("TestConnection").'</a><br>';
+//if (defined("LDAP_SERVER_HOST") && LDAP_SERVER_HOST && $_GET["action"] == 'test') {
+if (defined("LDAP_SERVER_HOST") && LDAP_SERVER_HOST) {
+    print '<a class="tabAction" href="ldap.php?action=test">'.$langs->trans("TestConnectLdap").'</a><br>';
 }
 
 
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 76deaada6457c3c78852ba93d1ef546c2ac7f23c..1d9931bb6c27e0f29b50c9ef85c0eb5466c8ee26 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -263,6 +263,7 @@ InterventionsSetup=Interventions module setup
 ##### LDAP setup ####
 LDAPSetup=LDAP Setup
 LDAPServer=LDAP Server
+TestConnectLdap=Test connection
 ##### Propal #####
 PropalSetup=Commercial proposals module setup
 ##### Sendings #####
diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang
index 6f65e9a3ebdcb50e7d2f58ba9e2ca9d451ad84da..e2c802878a93140fb9533b17c17638be4138b699 100644
--- a/htdocs/langs/fr_FR/admin.lang
+++ b/htdocs/langs/fr_FR/admin.lang
@@ -263,6 +263,7 @@ InterventionsSetup=Configuration du module Interventions
 ##### LDAP setup #####
 LDAPSetup=Configuration du module LDAP
 LDAPServer=Serveur LDAP
+TestConnectLdap=Tester la connexion
 ##### Propal #####
 PropalSetup=Configuration du module Propositions Commerciales
 ##### Sendings #####
diff --git a/htdocs/lib/ldap.lib.php b/htdocs/lib/ldap.lib.php
index e48feec0ec9a6c376be425297e0a2817d97a9f9e..3c230436d8f3b095a8296541f96a32d60ffb2c05 100644
--- a/htdocs/lib/ldap.lib.php
+++ b/htdocs/lib/ldap.lib.php
@@ -1,6 +1,7 @@
 <?php
 /* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
+ * Copyright (C) 2005 Regis Houssin  <regis.houssin@cap-networks.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -53,9 +54,9 @@ function dolibarr_ldap_connect()
 
 function dolibarr_ldap_bind($ds)
 {
-  if (defined("LDAP_SERVER_PASS") && LDAP_SERVER_DN && LDAP_SERVER_PASS)
+  if (defined("LDAP_SERVER_PASS") && LDAP_ADMIN_DN && LDAP_ADMIN_PASS)
     {
-      $ldapbind = ldap_bind($ds, LDAP_SERVER_DN, LDAP_SERVER_PASS);
+      $ldapbind = ldap_bind($ds, LDAP_ADMIN_DN, LDAP_ADMIN_PASS);
     }
 
   return $ldapbind;