diff --git a/indra/newview/llfloaterprofile.cpp b/indra/newview/llfloaterprofile.cpp
index a4a9fe84106f11308557b7908dcc9a9e2b99c210..624075e9fdeaffc10e6bc15b75ed95a0466de5cc 100644
--- a/indra/newview/llfloaterprofile.cpp
+++ b/indra/newview/llfloaterprofile.cpp
@@ -137,6 +137,20 @@ bool LLFloaterProfile::isPickTabSelected()
     return mPanelProfile->isPickTabSelected();
 }
 
+void LLFloaterProfile::refreshName()
+{
+    if (!mNameCallbackConnection.connected())
+    {
+        mNameCallbackConnection = LLAvatarNameCache::get(mAvatarId, boost::bind(&LLFloaterProfile::onAvatarNameCache, this, _1, _2));
+    }
+
+    LLPanelProfileSecondLife *panel = findChild<LLPanelProfileSecondLife>("panel_profile_secondlife");
+    if (panel)
+    {
+        panel->refreshName();
+    }
+}
+
 void LLFloaterProfile::showClassified(const LLUUID& classified_id, bool edit)
 {
     mPanelProfile->showClassified(classified_id, edit);
diff --git a/indra/newview/llfloaterprofile.h b/indra/newview/llfloaterprofile.h
index 36023077d3efcf28bec1febca87def6388c3d3f7..c2b90a1dce5dedbc83c25f91dedf90f209c8ee4c 100644
--- a/indra/newview/llfloaterprofile.h
+++ b/indra/newview/llfloaterprofile.h
@@ -49,6 +49,7 @@ class LLFloaterProfile : public LLFloater
     void createPick(const LLPickData &data);
     void showPick(const LLUUID& pick_id = LLUUID::null);
     bool isPickTabSelected();
+    void refreshName();
 
     void showClassified(const LLUUID& classified_id = LLUUID::null, bool edit = false);
 
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index 195244ea226da12f021d9f7298ed4b40d058e4c0..2f4da59cfd10b1f2ea1b4a06fcdfb6a2494887b1 100644
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -973,6 +973,14 @@ void LLPanelProfileSecondLife::updateData()
     }
 }
 
+void LLPanelProfileSecondLife::refreshName()
+{
+    if (!mAvatarNameCacheConnection.connected())
+    {
+        mAvatarNameCacheConnection = LLAvatarNameCache::get(getAvatarId(), boost::bind(&LLPanelProfileSecondLife::onAvatarNameCache, this, _1, _2));
+    }
+}
+
 void LLPanelProfileSecondLife::resetData()
 {
     resetLoading();
@@ -2576,6 +2584,11 @@ void LLPanelProfile::updateData()
     }
 }
 
+void LLPanelProfile::refreshName()
+{
+    mPanelSecondlife->refreshName();
+}
+
 void LLPanelProfile::createPick(const LLPickData &data)
 {
     mTabContainer->selectTabPanel(mPanelPicks);
diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h
index b363bd3fd2b8575e14e0aca5ace005431f7423d2..41533c137f1c86f58e26bebf3bd25614e4d4576c 100644
--- a/indra/newview/llpanelprofile.h
+++ b/indra/newview/llpanelprofile.h
@@ -96,6 +96,7 @@ class LLPanelProfileSecondLife
 	 * Sends update data request to server.
 	 */
 	void updateData() override;
+    void refreshName();
 
 	void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
 
@@ -368,6 +369,7 @@ class LLPanelProfile
     BOOL postBuild() override;
 
     void updateData() override;
+    void refreshName();
 
     void onOpen(const LLSD& key) override;
 
diff --git a/indra/newview/llviewerdisplayname.cpp b/indra/newview/llviewerdisplayname.cpp
index d444d4762427edb157b2069c7fa6703e44ce2117..cec08c4f152fdb6ee8ea9f3a3af1107bcc3594f0 100644
--- a/indra/newview/llviewerdisplayname.cpp
+++ b/indra/newview/llviewerdisplayname.cpp
@@ -30,6 +30,8 @@
 
 // viewer includes
 #include "llagent.h"
+#include "llfloaterprofile.h"
+#include "llfloaterreg.h"
 #include "llviewerregion.h"
 #include "llvoavatar.h"
 
@@ -206,6 +208,12 @@ class LLDisplayNameUpdate : public LLHTTPNode
 		{
 			LLViewerDisplayName::sNameChangedSignal();
 		}
+
+        LLFloaterProfile* profile_floater = dynamic_cast<LLFloaterProfile*>(LLFloaterReg::findInstance("profile", LLSD().with("id", agent_id)));
+        if (profile_floater)
+        {
+            profile_floater->refreshName();
+        }
 	}
 };