diff --git a/indra/newview/lldonotdisturbnotificationstorage.cpp b/indra/newview/lldonotdisturbnotificationstorage.cpp
index 22f35752bd302339830584742589a661667a4520..be20adeb8a10f647ce7cd675ac584da1e667fbbe 100644
--- a/indra/newview/lldonotdisturbnotificationstorage.cpp
+++ b/indra/newview/lldonotdisturbnotificationstorage.cpp
@@ -33,6 +33,7 @@
 #include "lldir.h"
 #include "llerror.h"
 #include "llfloaterreg.h"
+#include "llimview.h"
 #include "llnotifications.h"
 #include "llnotificationhandler.h"
 #include "llnotificationstorage.h"
@@ -145,6 +146,8 @@ void LLDoNotDisturbNotificationStorage::loadNotifications()
 	
 	LLNotifications& instance = LLNotifications::instance();
     bool imToastExists = false;
+	bool group_ad_hoc_toast_exists = false;
+	S32 toastSessionType;
     bool offerExists = false;
 	
 	for (LLSD::array_const_iterator notification_it = data.beginArray();
@@ -158,7 +161,20 @@ void LLDoNotDisturbNotificationStorage::loadNotifications()
 
         if(notificationName == toastName)
         {
-            imToastExists = true;
+			toastSessionType = notification_params["payload"]["SESSION_TYPE"];
+			if(toastSessionType == LLIMModel::LLIMSession::P2P_SESSION)
+			{
+				imToastExists = true;
+			}
+			//Don't add group/ad-hoc messages to the notification system because
+			//this means the group/ad-hoc session has to be re-created
+			else if(toastSessionType == LLIMModel::LLIMSession::GROUP_SESSION 
+					|| toastSessionType == LLIMModel::LLIMSession::ADHOC_SESSION)
+			{
+				//Just allows opening the conversation log for group/ad-hoc messages upon startup
+				group_ad_hoc_toast_exists = true;
+				continue;
+			}
         }
         else if(notificationName == offerName)
         {
@@ -197,7 +213,12 @@ void LLDoNotDisturbNotificationStorage::loadNotifications()
         LLFloaterReg::showInstance("im_container");
     }
 
-    if(imToastExists || offerExists)
+	if(group_ad_hoc_toast_exists)
+	{
+		LLFloaterReg::showInstance("conversation");
+	}
+
+    if(imToastExists || group_ad_hoc_toast_exists || offerExists)
     {
 		make_ui_sound_deferred("UISndNewIncomingIMSession");
     }
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 10e214bc9083ea4d1cf9a85a0e202c97f6a41017..8c862548bbc5ac2bdb3f986cd2c27200324722b3 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -154,6 +154,7 @@ static void on_avatar_name_cache_toast(const LLUUID& agent_id,
 	args["FROM"] = av_name.getCompleteName();
 	args["FROM_ID"] = msg["from_id"];
 	args["SESSION_ID"] = msg["session_id"];
+	args["SESSION_TYPE"] = msg["session_type"];
 	LLNotificationsUtil::add("IMToast", args, args, boost::bind(&LLFloaterIMContainer::showConversation, LLFloaterIMContainer::getInstance(), msg["session_id"].asUUID()));
 }
 
@@ -1008,6 +1009,7 @@ bool LLIMModel::addMessage(const LLUUID& session_id, const std::string& from, co
 	arg["from"] = from;
 	arg["from_id"] = from_id;
 	arg["time"] = LLLogChat::timestamp(false);
+	arg["session_type"] = session->mSessionType;
 	mNewMsgSignal(arg);
 
 	return true;