diff --git a/auth/db/auth.php b/auth/db/auth.php
index f245d60..faa02ad 100644
--- a/auth/db/auth.php
+++ b/auth/db/auth.php
@@ -287,16 +287,36 @@
                 $trace->output(get_string('auth_dbuserstoremove','auth_db', count($remove_users)));
 
                 foreach ($remove_users as $user) {
-                    if ($this->config->removeuser == AUTH_REMOVEUSER_FULLDELETE) {
-                        delete_user($user);
-                        $trace->output(get_string('auth_dbdeleteuser', 'auth_db', array('name'=>$user->username, 'id'=>$user->id)), 1);
-                    } else if ($this->config->removeuser == AUTH_REMOVEUSER_SUSPEND) {
-                        $updateuser = new stdClass();
-                        $updateuser->id   = $user->id;
-                        $updateuser->suspended = 1;
-                        $updateuser->timemodified = time();
-                        $DB->update_record('user', $updateuser);
-                        $trace->output(get_string('auth_dbsuspenduser', 'auth_db', array('name'=>$user->username, 'id'=>$user->id)), 1);
+                    
+                    //check if user changed username
+                    $user_changed_name=FALSE;
+                    if (!empty($user->idnumber)) {
+                        $authdb = $this->db_init();
+                        $sql="SELECT ".$this->config->field_map_idnumber." AS idnumber , ".$this->config->fielduser." AS username
+                                                     FROM {$this->config->table}
+                                                     WHERE ".$this->config->field_map_idnumber." = '".addslashes($user->idnumber)."'";
+                        $rs = $authdb->GetRow($sql);
+                        if ($rs) {
+                            $updateuser = new stdClass();
+                            $updateuser->id   = $user->id;
+                            $updateuser->username = $rs['username'];
+                            $DB->update_record('user', $updateuser); 
+                            $user_changed_name = TRUE;
+                          }
+                          $authdb->Close();
+                    }
+                    if (!$user_changed_name) {
+                        if ($this->config->removeuser == AUTH_REMOVEUSER_FULLDELETE) {
+                            delete_user($user);
+                            $trace->output(get_string('auth_dbdeleteuser', 'auth_db', array('name'=>$user->username, 'id'=>$user->id)), 1);
+                        } else if ($this->config->removeuser == AUTH_REMOVEUSER_SUSPEND) {
+                            $updateuser = new stdClass();
+                            $updateuser->id   = $user->id;
+                            $updateuser->suspended = 1;
+                            $updateuser->timemodified = time();
+                            $DB->update_record('user', $updateuser);
+                            $trace->output(get_string('auth_dbsuspenduser', 'auth_db', array('name'=>$user->username, 'id'=>$user->id)), 1);
+                        }
                     }
                 }
             }
