diff --git a/doc/contributions.txt b/doc/contributions.txt
index 9df072e937ebdcaa8f7d86199cb7ab46abf6701e..7bdd287fb1c2ba6b9fc9d31b4d624b2c0cbf6730 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -127,6 +127,8 @@ Asuka Neely
 	VWR-8179
 Balp Allen
 	VWR-4157
+Be Holder
+	SNOW-397
 Benja Kepler
 	VWR-746
 Biancaluce Robbiani
@@ -153,6 +155,7 @@ Boroondas Gupte
 	SNOW-503
 	SNOW-510
 	SNOW-527
+	SNOW-610
 	SNOW-624
 	VWR-233
 	WEB-262
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 42b78a84af2557bc0917ef90edf502441e0db610..b78ebc69695da5eb6b424fa1a4859cab34ef596e 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -827,6 +827,11 @@ LLVector3d LLAgent::getPosGlobalFromAgent(const LLVector3 &pos_agent) const
 	return pos_agent_d + mAgentOriginGlobal;
 }
 
+void LLAgent::sitDown()
+{
+	setControlFlags(AGENT_CONTROL_SIT_ON_GROUND);
+}
+
 
 //-----------------------------------------------------------------------------
 // resetAxes()
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index 0d95683a9837c60a731af0e3a8a1fbd752a5c7db..c643cef78fffcae33a5027bc09745986037b12b8 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -345,6 +345,8 @@ private:
 	//--------------------------------------------------------------------
 public:
 	void			standUp();
+	/// @brief ground-sit at agent's current position
+	void			sitDown();
 
 	//--------------------------------------------------------------------
 	// Busy
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 476e761c280ab58a8c70349bd666441e972b2a4c..d02e1fdc8f3ec8808fce18958abad8d091332ffc 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -3381,8 +3381,21 @@ class LLSelfStandUp : public view_listener_t
 
 bool enable_standup_self()
 {
-	bool new_value = isAgentAvatarValid() && gAgentAvatarp->isSitting();
-	return new_value;
+    return isAgentAvatarValid() && gAgentAvatarp->isSitting();
+}
+
+class LLSelfSitDown : public view_listener_t
+    {
+        bool handleEvent(const LLSD& userdata)
+        {
+            gAgent.sitDown();
+            return true;
+        }
+    };
+
+bool enable_sitdown_self()
+{
+    return isAgentAvatarValid() && !gAgentAvatarp->isSitting() && !gAgent.getFlying();
 }
 
 // Used from the login screen to aid in UI work on side tray
@@ -8037,11 +8050,13 @@ void initialize_menus()
 	// Admin top level
 	view_listener_t::addMenu(new LLAdminOnSaveState(), "Admin.OnSaveState");
 
-	// Self pie menu
+	// Self context menu
 	view_listener_t::addMenu(new LLSelfStandUp(), "Self.StandUp");
+	enable.add("Self.EnableStandUp", boost::bind(&enable_standup_self));
+	view_listener_t::addMenu(new LLSelfSitDown(), "Self.SitDown");
+	enable.add("Self.EnableSitDown", boost::bind(&enable_sitdown_self));
 	view_listener_t::addMenu(new LLSelfRemoveAllAttachments(), "Self.RemoveAllAttachments");
 
-	enable.add("Self.EnableStandUp", boost::bind(&enable_standup_self));
 	view_listener_t::addMenu(new LLSelfEnableRemoveAllAttachments(), "Self.EnableRemoveAllAttachments");
 
 	// we don't use boost::bind directly to delay side tray construction
diff --git a/indra/newview/skins/default/xui/en/menu_attachment_self.xml b/indra/newview/skins/default/xui/en/menu_attachment_self.xml
index e2348375d55b7a25b67a7a7ec1a0794315cfce77..84e81397beb465b0df1b180f7cd845ab60decc93 100644
--- a/indra/newview/skins/default/xui/en/menu_attachment_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_attachment_self.xml
@@ -23,7 +23,7 @@
         <menu_item_call.on_enable
          function="Self.EnableStandUp" />
     </menu_item_call-->
-        <menu_item_call
+    <menu_item_call
      enabled="false"
      label="Edit"
      layout="topleft"
@@ -46,6 +46,17 @@
   <menu_item_separator
     layout="topleft" />
 
+    <menu_item_call
+     label="Sit Down"
+     layout="topleft"
+     name="Sit Down Here">
+        <menu_item_call.on_click
+         function="Self.SitDown"
+         parameter="" />
+        <menu_item_call.on_enable
+         function="Self.EnableSitDown" />
+    </menu_item_call>
+
   <menu_item_call
 label="Stand Up"
 layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_self.xml b/indra/newview/skins/default/xui/en/menu_avatar_self.xml
index d5b993152a5374bbfafe973e9b8ebbd5e789abc8..9059745f4602ea858e08caafb28ce06a4d992cfa 100644
--- a/indra/newview/skins/default/xui/en/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_self.xml
@@ -2,7 +2,17 @@
 <context_menu
  layout="topleft"
  name="Self Pie">
-       <menu_item_call
+    <menu_item_call
+     label="Sit Down"
+     layout="topleft"
+     name="Sit Down Here">
+        <menu_item_call.on_click
+         function="Self.SitDown"
+         parameter="" />
+        <menu_item_call.on_enable
+         function="Self.EnableSitDown" />
+    </menu_item_call>
+    <menu_item_call
      label="Stand Up"
      layout="topleft"
      name="Stand Up">
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
index ea18e02ca1e770c2d7d29da9e48d5f2ba3c0721f..30c2cde552d3f83777b0bc60daf2b96404e8ec6a 100644
--- a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
@@ -5,6 +5,16 @@
          mouse_opaque="false"
          visible="false"
          name="Gear Menu">
+  <menu_item_call
+   label="Sit Down"
+   enabled="true"
+   name="sit_down_here">
+    <menu_item_call.on_click
+     function="Self.SitDown"
+     parameter="" />
+    <menu_item_call.on_visible
+     function="Self.EnableSitDown" />
+  </menu_item_call>
   <menu_item_call
    label="Stand Up"
    enabled="true"