diff --git a/ldap_user/LdapUserConf.class.php b/ldap_user/LdapUserConf.class.php
index b5d6d7d..eacbbe8 100644
--- a/ldap_user/LdapUserConf.class.php
+++ b/ldap_user/LdapUserConf.class.php
@@ -780,18 +780,28 @@ class LdapUserConf {
       return FALSE;
     }
 
-    if (!$ldap_user && $this->drupalAcctProvisionServer) {
-      $ldap_user = ldap_servers_get_user_ldap_data($drupal_user->name, $this->drupalAcctProvisionServer, 'ldap_user_prov_to_drupal');
+    if (is_object($drupal_user) && !empty($drupal_user->ldap_user_puid_sid['und'][0]['value'])) {
+      $user_sid = $drupal_user->ldap_user_puid_sid['und'][0]['value'];
+    }
+    elseif (!empty($ldap_user['sid'])) {
+      $user_sid = $ldap_user['sid'];
+    }
+    else {
+      $user_sid = $this->drupalAcctProvisionServer;
+    }
+    
+    if (!$ldap_user && $user_sid) {
+      $ldap_user = ldap_servers_get_user_ldap_data($drupal_user->name, $user_sid, 'ldap_user_prov_to_drupal');
     }
 
     if (!$ldap_user) {
       return FALSE;
     }
 
-    if ($this->drupalAcctProvisionServer) {
-      $ldap_server = ldap_servers_get_servers($this->drupalAcctProvisionServer, NULL, TRUE);
+   // if ($this->drupalAcctProvisionServer) {
+      $ldap_server = ldap_servers_get_servers($user_sid, NULL, TRUE);
       $this->entryToUserEdit($ldap_user, $user_edit, $ldap_server, LDAP_USER_PROV_DIRECTION_TO_DRUPAL_USER, array($prov_event));
-    }
+  //  }
 
     if ($save) {
       $account = user_load($drupal_user->uid);
