diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h
index 515c86bae82f6ee4bb64543982897d3216c6c675..33ef4c81cdcbe42a882332f71546141c5c1282b3 100644
--- a/indra/newview/llnotificationhandler.h
+++ b/indra/newview/llnotificationhandler.h
@@ -298,6 +298,11 @@ class LLHandlerUtil
 	 * Writes notification message to nearby chat.
 	 */
 	static void logToNearbyChat(const LLNotificationPtr& notification, EChatSourceType type);
+
+	/**
+	 * Spawns IM session.
+	 */
+	static void spawnIMSession(const std::string& name, const LLUUID& from_id);
 };
 
 }
diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp
index 5b54092c5cdea3d5bcd6ff81a914490ced6afdf0..174efd24a64f0f6938bf87f943a8b7b7a8920572 100644
--- a/indra/newview/llnotificationhandlerutil.cpp
+++ b/indra/newview/llnotificationhandlerutil.cpp
@@ -47,11 +47,13 @@ const static std::string GRANTED_MODIFY_RIGHTS("GrantedModifyRights"),
 				"ObjectGiveItem"), OBJECT_GIVE_ITEM_UNKNOWN_USER(
 				"ObjectGiveItemUnknownUser"), PAYMENT_RECIVED("PaymentRecived"),
 						ADD_FRIEND_WITH_MESSAGE("AddFriendWithMessage"),
-						USER_GIVE_ITEM("UserGiveItem"), OFFER_FRIENDSHIP("OfferFriendship"),
+						USER_GIVE_ITEM("UserGiveItem"), INVENTORY_ACCEPTED("InventoryAccepted"),
+						OFFER_FRIENDSHIP("OfferFriendship"),
 						FRIENDSHIP_ACCEPTED("FriendshipAccepted"),
 						FRIENDSHIP_OFFERED("FriendshipOffered"),
 						FRIEND_ONLINE("FriendOnline"), FRIEND_OFFLINE("FriendOffline"),
-						SERVER_OBJECT_MESSAGE("ServerObjectMessage");
+						SERVER_OBJECT_MESSAGE("ServerObjectMessage"),
+						TELEPORT_OFFERED("TeleportOffered");
 
 // static
 bool LLHandlerUtil::canLogToIM(const LLNotificationPtr& notification)
@@ -60,7 +62,8 @@ bool LLHandlerUtil::canLogToIM(const LLNotificationPtr& notification)
 			|| REVOKED_MODIFY_RIGHTS == notification->getName()
 			|| PAYMENT_RECIVED == notification->getName()
 			|| FRIENDSHIP_OFFERED == notification->getName()
-			|| SERVER_OBJECT_MESSAGE == notification->getName();
+			|| SERVER_OBJECT_MESSAGE == notification->getName()
+			|| INVENTORY_ACCEPTED == notification->getName();
 }
 
 // static
@@ -68,7 +71,8 @@ bool LLHandlerUtil::canLogToNearbyChat(const LLNotificationPtr& notification)
 {
 	return notification->getType() == "notifytip"
 			&&  FRIEND_ONLINE != notification->getName()
-			&& FRIEND_OFFLINE != notification->getName();
+			&& FRIEND_OFFLINE != notification->getName()
+			&& INVENTORY_ACCEPTED != notification->getName();
 }
 
 // static
@@ -76,7 +80,10 @@ bool LLHandlerUtil::canSpawnIMSession(const LLNotificationPtr& notification)
 {
 	return ADD_FRIEND_WITH_MESSAGE == notification->getName()
 			|| OFFER_FRIENDSHIP == notification->getName()
-			|| FRIENDSHIP_ACCEPTED == notification->getName();
+			|| FRIENDSHIP_ACCEPTED == notification->getName()
+			|| USER_GIVE_ITEM == notification->getName()
+			|| INVENTORY_ACCEPTED == notification->getName()
+			|| TELEPORT_OFFERED == notification->getName();
 }
 
 // static
@@ -169,3 +176,16 @@ void LLHandlerUtil::logToNearbyChat(const LLNotificationPtr& notification, EChat
 	}
 }
 
+// static
+void LLHandlerUtil::spawnIMSession(const std::string& name, const LLUUID& from_id)
+{
+	LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, from_id);
+
+	LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(
+			session_id);
+	if (session == NULL)
+	{
+		LLIMMgr::instance().addSession(name, IM_NOTHING_SPECIAL, from_id);
+	}
+}
+
diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp
index 4d64c5c0e4043d29eef27ffe1e36825e5ed7a853..5861a802e9d6d5b9fb4f86b41e910ba3f8c88c3e 100644
--- a/indra/newview/llnotificationofferhandler.cpp
+++ b/indra/newview/llnotificationofferhandler.cpp
@@ -111,16 +111,7 @@ bool LLOfferHandler::processNotification(const LLSD& notify)
 
 				LLUUID from_id = notification->getPayload()["from_id"];
 
-				LLUUID session_id = LLIMMgr::computeSessionID(
-						IM_NOTHING_SPECIAL, from_id);
-
-				LLIMModel::LLIMSession* session =
-						LLIMModel::instance().findIMSession(session_id);
-				if (session == NULL)
-				{
-					LLIMMgr::instance().addSession(name, IM_NOTHING_SPECIAL,
-							from_id);
-				}
+				LLHandlerUtil::spawnIMSession(name, from_id);
 			}
 
 			if (notification->getPayload().has("SUPPRES_TOST")
diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp
index 9afaddae82ee0578c476e778277b3fc792364571..83a2215ac619ba2ba9bbdb83adf4bc8e84af4bf9 100644
--- a/indra/newview/llnotificationtiphandler.cpp
+++ b/indra/newview/llnotificationtiphandler.cpp
@@ -101,6 +101,19 @@ bool LLTipHandler::processNotification(const LLSD& notify)
 			}
 		}
 
+		const std::string name = notification->getSubstitutions()["NAME"];
+		LLUUID from_id = notification->getPayload()["from_id"];
+		if (LLHandlerUtil::canLogToIM(notification))
+		{
+			LLHandlerUtil::logToIM(IM_NOTHING_SPECIAL, name, name,
+					notification->getMessage(), from_id, from_id);
+		}
+
+		if (LLHandlerUtil::canSpawnIMSession(notification))
+		{
+			LLHandlerUtil::spawnIMSession(name, from_id);
+		}
+
 		LLToastNotifyPanel* notify_box = new LLToastNotifyPanel(notification);
 
 		LLToast::Params p;
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index d4b712e048d384de5d9142345d7ac6b0f3d0092a..ee8b7a5132ec16d5169a62c6af875732fca774ad 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -4498,7 +4498,7 @@ You don't have permission to copy this.
   <notification
    icon="notifytip.tga"
    name="InventoryAccepted"
-   type="offer">
+   type="notifytip">
 [NAME] received your inventory offer.
   </notification>