diff --git a/ring-android/app/src/main/java/cx/ring/adapters/ContactDetailsTask.java b/ring-android/app/src/main/java/cx/ring/adapters/ContactDetailsTask.java
index 78baec54194dd5f9690a7e315c5d908432fea129..940efdd1c2c6bffe200f3d190c1d8fe7ef2f9bbf 100644
--- a/ring-android/app/src/main/java/cx/ring/adapters/ContactDetailsTask.java
+++ b/ring-android/app/src/main/java/cx/ring/adapters/ContactDetailsTask.java
@@ -80,7 +80,7 @@ public class ContactDetailsTask implements Runnable {
     }
 
     public interface DetailsLoadedCallback {
-        void onDetailsLoaded(String formattedName);
+        void onDetailsLoaded(Bitmap bmp, String formattedName, String username);
     }
 
     public ContactDetailsTask(Context context, ImageView element, CallContact item) {
@@ -187,7 +187,7 @@ public class ContactDetailsTask implements Runnable {
             mImageViewWeakRef.clear();
             if (v == null) {
                 for (DetailsLoadedCallback cb : mCallbacks) {
-                    cb.onDetailsLoaded(formattedName);
+                    cb.onDetailsLoaded(externalBMP, formattedName, mContact.getUsername());
                 }
             } else {
                 v.post(new Runnable() {
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
index 1e9293b3f3bf5955db7cab36dfa75ee796e2f632..df0657b14a82e4fec064c64f94c7aec6ce5c5e39 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
@@ -322,10 +322,13 @@ public class ConversationFragment extends BaseFragment<ConversationPresenter> im
     }
 
     @Override
-    public void onDetailsLoaded(String formattedName) {
+    public void onDetailsLoaded(Bitmap bmp, String formattedName, String username) {
         ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
         if (actionBar != null && formattedName != null) {
             actionBar.setTitle(formattedName);
+            if (username != null && !username.equals(formattedName)) {
+                actionBar.setSubtitle(username);
+            }
         }
     }
 
diff --git a/ring-android/libringclient/src/main/java/cx/ring/facades/ConversationFacade.java b/ring-android/libringclient/src/main/java/cx/ring/facades/ConversationFacade.java
index 71175b64eb2c9c87979c4cda0aaa894fc2d1c56b..f60fec7995781574895d857fd90c6f48199a5e3b 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/facades/ConversationFacade.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/facades/ConversationFacade.java
@@ -222,8 +222,12 @@ public class ConversationFacade extends Observable implements Observer<ServiceEv
         }
 
         CallContact contact = conversation.getContact();
-        if (contact == null || contact.getDisplayName().equals(newDisplayName)
-                || !contact.getDisplayName().contains(ringId)) {
+        if (contact == null || contact.getDisplayName().equals(newDisplayName)) {
+            return;
+        }
+
+        if (!contact.getDisplayName().contains(ringId)) {
+            contact.setUsername(newDisplayName);
             return;
         }
 
@@ -231,6 +235,7 @@ public class ConversationFacade extends Observable implements Observer<ServiceEv
         contact.getPhones().clear();
         contact.getPhones().add(new cx.ring.model.Phone(ringIdUri, 0));
         contact.setDisplayName(newDisplayName);
+        contact.setUsername(newDisplayName);
 
         setChanged();
         ServiceEvent event = new ServiceEvent(ServiceEvent.EventType.USERNAME_CHANGED);
diff --git a/ring-android/libringclient/src/main/java/cx/ring/model/CallContact.java b/ring-android/libringclient/src/main/java/cx/ring/model/CallContact.java
index 3b7197837c3e02340969c82a82464cb7c53735d6..a6fedd40ca8be226aae3dda13fb5072540d036cb 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/model/CallContact.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/model/CallContact.java
@@ -35,6 +35,7 @@ public class CallContact {
     private long mId;
     private String mKey;
     private String mDisplayName;
+    private String mUsername;
     private long mPhotoId;
     private final ArrayList<Phone> mPhones;
     private boolean isUser;
@@ -55,6 +56,7 @@ public class CallContact {
         mId = cID;
         mKey = k;
         mDisplayName = displayName;
+        mUsername = displayName;
         mPhones = p;
         mPhotoId = photoID;
         isUser = user;
@@ -97,6 +99,9 @@ public class CallContact {
         mKey = k;
         mDisplayName = displayName;
         this.mPhotoId = photo_id;
+        if (mUsername == null && displayName.contains(PREFIX_RING)) {
+            mUsername = displayName;
+        }
     }
 
     public static String canonicalNumber(String number) {
@@ -242,6 +247,14 @@ public class CallContact {
         mDisplayName = displayName;
     }
 
+    public String getUsername() {
+        return mUsername;
+    }
+
+    public void setUsername(String mUsername) {
+        this.mUsername = mUsername;
+    }
+
     //region Equals
     @Override
     public boolean equals(Object o) {