diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h
index d42b0148d6196f539249daef98efd246e8670bb5..b561f795f5d929d90fb8ca48c6da240e8c1777bf 100644
--- a/indra/newview/llnotificationhandler.h
+++ b/indra/newview/llnotificationhandler.h
@@ -268,7 +268,7 @@ class LLHandlerUtil
 	/**
 	 * Writes notification message to IM session.
 	 */
-	static void logToIM(const LLNotificationPtr& notification);
+	static void logToIMP2P(const LLNotificationPtr& notification);
 };
 
 }
diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp
index e1236b935ee79bcaf5bef531101ae3fbe19bdce8..112d82956312e6c435c322ec33e8fe180614485c 100644
--- a/indra/newview/llnotificationhandlerutil.cpp
+++ b/indra/newview/llnotificationhandlerutil.cpp
@@ -52,7 +52,7 @@ bool LLHandlerUtil::canLogToIM(const LLNotificationPtr& notification)
 }
 
 // static
-void LLHandlerUtil::logToIM(const LLNotificationPtr& notification)
+void LLHandlerUtil::logToIMP2P(const LLNotificationPtr& notification)
 {
 	// add message to IM
 	const std::string
@@ -82,7 +82,18 @@ void LLHandlerUtil::logToIM(const LLNotificationPtr& notification)
 			return;
 		}
 
-		LLIMModel::instance().addMessageSilently(*session, name, from_id,
+
+		// store active session id
+		const LLUUID & active_session_id =
+				LLIMModel::instance().getActiveSessionID();
+
+		// set created session as active to avoid IM toast popup
+		LLIMModel::instance().setActiveSessionID(session->mSessionID);
+
+		LLIMModel::instance().addMessage(session->mSessionID, name, from_id,
 				notification->getMessage());
+
+		// restore active session id
+		LLIMModel::instance().setActiveSessionID(active_session_id);
 	}
 }
diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp
index cfe7fd09ac1abe6e1aee61e859ae69c93544b54d..c179a2cf90a881f5fc086b0dc6d4d81f60594ba5 100644
--- a/indra/newview/llnotificationofferhandler.cpp
+++ b/indra/newview/llnotificationofferhandler.cpp
@@ -90,7 +90,7 @@ bool LLOfferHandler::processNotification(const LLSD& notify)
 
 	if(notify["sigtype"].asString() == "add" || notify["sigtype"].asString() == "change")
 	{
-		LLHandlerUtil::logToIM(notification);
+		LLHandlerUtil::logToIMP2P(notification);
 
 		LLToastNotifyPanel* notify_box = new LLToastNotifyPanel(notification);
 
diff --git a/indra/newview/llnotificationscripthandler.cpp b/indra/newview/llnotificationscripthandler.cpp
index 6f91b6e58b4dc18dca6552d2bb1d9e69e36a9367..c7261199e3cee2268d570d5be410f16ba059a32f 100644
--- a/indra/newview/llnotificationscripthandler.cpp
+++ b/indra/newview/llnotificationscripthandler.cpp
@@ -98,7 +98,7 @@ bool LLScriptHandler::processNotification(const LLSD& notify)
 	{
 		if (LLHandlerUtil::canLogToIM(notification))
 		{
-			LLHandlerUtil::logToIM(notification);
+			LLHandlerUtil::logToIMP2P(notification);
 		}
 
 		if(SCRIPT_DIALOG == notification->getName() || SCRIPT_DIALOG_GROUP == notification->getName() || SCRIPT_LOAD_URL == notification->getName())