diff --git a/indra/newview/llnotificationstorage.cpp b/indra/newview/llnotificationstorage.cpp
index 2923221c90787356742b9ad8ee66fa9ef7d86ccd..e9970de58c8b02e8f119ba7bcb947fb53c8a6527 100755
--- a/indra/newview/llnotificationstorage.cpp
+++ b/indra/newview/llnotificationstorage.cpp
@@ -103,19 +103,21 @@ bool LLNotificationStorage::writeNotifications(const LLSD& pNotificationData) co
 	return didFileOpen;
 }
 
-bool LLNotificationStorage::readNotifications(LLSD& pNotificationData) const
+bool LLNotificationStorage::readNotifications(LLSD& pNotificationData, bool is_new_filename) const
 {
-	LL_INFOS("LLNotificationStorage") << "starting read '" << mFileName << "'" << LL_ENDL;
+	std::string filename = is_new_filename? mFileName : mOldFileName;
+
+	LL_INFOS("LLNotificationStorage") << "starting read '" << filename << "'" << LL_ENDL;
 
 	bool didFileRead;
 
 	pNotificationData.clear();
 
-	llifstream notifyFile(mFileName.c_str());
+	llifstream notifyFile(filename.c_str());
 	didFileRead = notifyFile.is_open();
 	if (!didFileRead)
 	{
-		LL_WARNS("LLNotificationStorage") << "Failed to open file '" << mFileName << "'" << LL_ENDL;
+		LL_WARNS("LLNotificationStorage") << "Failed to open file '" << filename << "'" << LL_ENDL;
 	}
 	else
 	{
@@ -128,7 +130,19 @@ bool LLNotificationStorage::readNotifications(LLSD& pNotificationData) const
 		}
 	}
 
-	LL_INFOS("LLNotificationStorage") << "ending read '" << mFileName << "'" << LL_ENDL;
+	LL_INFOS("LLNotificationStorage") << "ending read '" << filename << "'" << LL_ENDL;
+	if (!didFileRead)
+	{
+		if(is_new_filename)
+		{
+			didFileRead = readNotifications(pNotificationData, false);
+			if(didFileRead)
+			{
+				writeNotifications(pNotificationData);
+				LLFile::remove(mOldFileName);
+			}
+		}
+	}
 
 	return didFileRead;
 }
diff --git a/indra/newview/llnotificationstorage.h b/indra/newview/llnotificationstorage.h
index 53fd898ea4ee09b1e694945babb0fa48724311ef..21d7123747db9139f23f33e2adc865792ea4674d 100755
--- a/indra/newview/llnotificationstorage.h
+++ b/indra/newview/llnotificationstorage.h
@@ -43,13 +43,15 @@ class LLNotificationStorage
 
 protected:
 	bool writeNotifications(const LLSD& pNotificationData) const;
-	bool readNotifications(LLSD& pNotificationData) const;
+	bool readNotifications(LLSD& pNotificationData, bool is_new_filename = true) const;
 	void setFileName(std::string pFileName) {mFileName = pFileName;}
+	void setOldFileName(std::string pFileName) {mOldFileName = pFileName;}
 
 	LLNotificationResponderInterface* createResponder(const std::string& pNotificationName, const LLSD& pParams) const;
 
 private:
 	std::string mFileName;
+	std::string mOldFileName;
 };
 
 #endif // LL_NOTIFICATIONSTORAGE_H
diff --git a/indra/newview/llpersistentnotificationstorage.cpp b/indra/newview/llpersistentnotificationstorage.cpp
index 8658921dc47d53bd95587306b863cec9c3f54b8b..9e4f50b7a7d2fbeb9c8b97045377d03ab350dbf8 100755
--- a/indra/newview/llpersistentnotificationstorage.cpp
+++ b/indra/newview/llpersistentnotificationstorage.cpp
@@ -35,7 +35,7 @@
 #include "llscreenchannel.h"
 #include "llscriptfloater.h"
 #include "llviewermessage.h"
-
+#include "llviewernetwork.h"
 LLPersistentNotificationStorage::LLPersistentNotificationStorage()
 	: LLSingleton<LLPersistentNotificationStorage>()
 	, LLNotificationStorage("")
@@ -158,7 +158,10 @@ void LLPersistentNotificationStorage::loadNotifications()
 
 void LLPersistentNotificationStorage::initialize()
 {
-	setFileName(gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "open_notifications.xml"));
+	std::string file_name = "open_notifications_" + LLGridManager::getInstance()->getGrid() + ".xml";
+	setFileName(gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, file_name));
+	setOldFileName(gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "open_notifications.xml"));
+
 	LLNotifications::instance().getChannel("Persistent")->
 		connectChanged(boost::bind(&LLPersistentNotificationStorage::onPersistentChannelChanged, this, _1));
 }