Using HOOK_username_alter() to hide the real username I'm using a pattern for the username creation using the contrib module: automatic_usernames, this results in the following pattern for my use case: [hotel_name][uid]. Example: Hilton10

Here is the dilemma. This is fine for the business to see, but I do not want them to see their customer's actual username that they just created such as Hilton11 and instead I would like them to see the first name + last name of the customer.

How would I go about this using the following custom fields?

[#field_name] =&gt; field_customer_first_name

[#field_name] =&gt; field_customer_last_name

function MyCustomModule_username_alter(&amp;$name, $account){
 global $user;
    if(in_array('venue admin', $user-&gt;roles)) {
    $name = ? //this is where im stuck
}
The $account argument in hook_username_alter() provides the user entity object with all its field values. You can use its field values for your $name substitution. For example:

function MyCustomModule_username_alter(&amp;$name, $account){
  global $user;

  // This example presumes a field_first_name as a user first name field.
  // It will vary based on your field &amp; language environment.
  // use Devel's dpm() to find your actual value for user entity.
  if (isset($account-&gt;field_first_name[LANGUAGE_NONE][0]['value']) 
      &amp;&amp; in_array('venue admin', $user-&gt;roles)) {
    $name = $account-&gt;field_first_name[LANGUAGE_NONE][0]['value'];
  }
}