diff --git a/webform_references.user.inc b/webform_references.user.inc
index e160213..7676960 100644
--- a/webform_references.user.inc
+++ b/webform_references.user.inc
@@ -328,12 +328,22 @@ function theme_webform_display_user_reference_field($variables) {
  *   Name of the user (Linked if $link parameter is set to TRUE).
  */
 function _webform_references_get_user_name($uid, $link = FALSE) {
-  $user_items = db_select('users', 'u')
-    ->fields('u', array('name'))
-    ->condition('uid', $uid)
-    ->execute()
-    ->fetchAssoc();
-  $name = ($link == TRUE) ? l($user_items['name'], 'user/' . $uid) : check_plain($user_items['name']);
+  if (module_exists('realname')) {
+    $user_items = db_select('realname')
+      ->fields('realname', array('realname'))
+      ->condition('uid', $uid)
+      ->execute()
+      ->fetchAssoc();
+    $name = ($link == TRUE) ? l($user_items['realname'], 'user/' . $uid) : check_plain($user_items['realname']);
+  }
+  else {
+    $user_items = db_select('users', 'u')
+      ->fields('u', array('name'))
+      ->condition('uid', $uid)
+      ->execute()
+      ->fetchAssoc();
+    $name = ($link == TRUE) ? l($user_items['name'], 'user/' . $uid) : check_plain($user_items['name']);
+  }
   return $name;
 }
 
@@ -426,24 +436,45 @@ function webform_references_user_autocomplete($bundles, $string = '') {
  */
 function _webform_references_get_user_list($roles, $string = '', $sort_by = 'uid', $order = 'ASC') {
   $roles = array_filter($roles);
-  $query = db_select('users', 'u');
-  $query->fields('u', array('uid', 'name'));
-  if (!empty($roles) && !isset($roles[2])) {
-    $query->join('users_roles', 'ur', 'ur.uid = u.uid');
-    $query->condition('ur.rid', $roles, 'IN');
-  }
-  if ($string != '') {
-    $query->condition('u.name', '%' . $string . '%', 'LIKE');
-    $query->range(0, 10);
-  }
-  else {
+  if (module_exists('realname')) {
+    $query = db_select('realname');
+    $query->fields('realname', array('uid', 'realname'));
+    $query->join('users', 'u', 'u.uid = realname.uid');
+    $query->condition('u.status', 1);
+    if (!empty($roles) && !isset($roles[2])) {
+      $query->join('users_roles', 'ur', 'ur.uid = realname.uid');
+      $query->condition('ur.rid', $roles, 'IN');
+    }
+    $query->condition('realname', '%' . $string . '%', 'LIKE');
+    $sort_by = ($sort_by == 'name') ? 'realname' : $sort_by;
     $query->orderBy($sort_by, $order);
+    $results = $query->execute()->fetchAll();
+    $user_list = array();
+    foreach ($results as $result) {
+      $user_list[$result->uid] = $result->realname;
+    }
   }
-  $query->condition('u.status', 1);
-  $results = $query->execute()->fetchAll();
-  $user_list = array();
-  foreach ($results as $result) {
-    $user_list[$result->uid] = $result->name;
+  else {
+    $query = db_select('users', 'u');
+    $query->fields('u', array('uid', 'name'));
+    if (!empty($roles) && !isset($roles[2])) {
+      $query->join('users_roles', 'ur', 'ur.uid = u.uid');
+      $query->condition('ur.rid', $roles, 'IN');
+    }
+    if ($string != '') {
+      $query->condition('u.name', '%' . $string . '%', 'LIKE');
+      $query->range(0, 10);
+    }
+    else {
+      $query->orderBy($sort_by, $order);
+    }
+    $query->condition('u.status', 1);
+    $results = $query->execute()->fetchAll();
+    $user_list = array();
+    foreach ($results as $result) {
+      $user_list[$result->uid] = $result->name;
+    }
   }
+
   return $user_list;
 }
