diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index de11309394b03e2052197351b40fd813d0cc6b96..c18e9a12d8cebce90fe02ba7431b265991499cab 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -5546,6 +5546,17 @@
       <key>Value</key>
       <string />
     </map>
+	<key>MarketplaceListingsLogging</key>
+	<map>
+		<key>Comment</key>
+		<string>Enable debug output associated with the Marketplace Listings (SLM) API.</string>
+		<key>Persist</key>
+		<integer>1</integer>
+		<key>Type</key>
+		<string>Boolean</string>
+		<key>Value</key>
+		<integer>0</integer>
+	</map>
     <key>MarketplaceURL</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 05e6427dc16a39dfd2c3a9a1e6d814ed66504a76..f04724ace13376a7c05c1d6627a2dc526affd127 100755
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -866,9 +866,12 @@ void LLInvFVBridge::addMarketplaceContextMenuOptions(U32 flags,
         items.push_back(std::string("Marketplace Create Listing"));
         items.push_back(std::string("Marketplace Associate Listing"));
         items.push_back(std::string("Marketplace Disassociate Listing"));
-        items.push_back(std::string("Marketplace Get Listing"));
         items.push_back(std::string("Marketplace List"));
         items.push_back(std::string("Marketplace Unlist"));
+		if (gSavedSettings.getBOOL("MarketplaceListingsLogging"))
+		{
+            items.push_back(std::string("Marketplace Get Listing"));
+        }
         if (LLMarketplaceData::instance().isListed(mUUID))
         {
 			disabled_items.push_back(std::string("Marketplace Create Listing"));
@@ -893,9 +896,12 @@ void LLInvFVBridge::addMarketplaceContextMenuOptions(U32 flags,
         else
         {
 			disabled_items.push_back(std::string("Marketplace Disassociate Listing"));
-			disabled_items.push_back(std::string("Marketplace Get Listing"));
 			disabled_items.push_back(std::string("Marketplace List"));
 			disabled_items.push_back(std::string("Marketplace Unlist"));
+            if (gSavedSettings.getBOOL("MarketplaceListingsLogging"))
+            {
+                disabled_items.push_back(std::string("Marketplace Get Listing"));
+            }
         }
     }
     if (depth == 2)
diff --git a/indra/newview/llmarketplacefunctions.cpp b/indra/newview/llmarketplacefunctions.cpp
index ff43d82f032e21697617a56d18d35ae6511dd7ab..d8c25f1c02dfd585ad762939d856608d3bc95260 100755
--- a/indra/newview/llmarketplacefunctions.cpp
+++ b/indra/newview/llmarketplacefunctions.cpp
@@ -102,9 +102,19 @@ LLSD getMarketplaceStringSubstitutions()
 
 ///////////////////////////////////////////////////////////////////////////////
 // SLM Responders
-void log_SLM_error(const std::string& request, U32 status, const std::string& reason, const std::string& code, const std::string& description)
+void log_SLM_warning(const std::string& request, U32 status, const std::string& reason, const std::string& code, const std::string& description)
 {
-		LL_WARNS("SLM") << "Merov : " << request << " request failed. status : " << status << ", reason : " << reason << ", code : " << code << ", description : " << description << LL_ENDL;
+    if (gSavedSettings.getBOOL("MarketplaceListingsLogging"))
+    {
+		LL_WARNS("SLM") << "SLM API : Responder to " << request << ". status : " << status << ", reason : " << reason << ", code : " << code << ", description : " << description << LL_ENDL;
+    }
+}
+void log_SLM_warning(const std::string& request, const std::string& url, const std::string& data)
+{
+    if (gSavedSettings.getBOOL("MarketplaceListingsLogging"))
+    {
+		LL_WARNS("SLM") << "SLM API : Sending " << request << ". url : " << url << ", data : " << data << LL_ENDL;
+    }
 }
 
 // Merov: This is a temporary hack used by dev while secondlife-staging is down...
@@ -124,15 +134,17 @@ class LLSLMGetMerchantResponder : public LLHTTPClient::Responder
     {
 		if (isGoodStatus(status) || sBypassMerchant)
 		{
+            log_SLM_warning("Get /merchant", status, reason, "", "User is a merchant");
             LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_MERCHANT);
 		}
 		else if (status == SLMErrorCodes::SLM_NOT_FOUND)
 		{
+            log_SLM_warning("Get /merchant", status, reason, "", "User is not a merchant");
             LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_NOT_MERCHANT);
 		}
 		else
 		{
-            log_SLM_error("Get merchant", status, reason, content.get("error_code"), content.get("error_description"));
+            log_SLM_warning("Get /merchant", status, reason, content.get("error_code"), content.get("error_description"));
             LLMarketplaceData::instance().setSLMStatus(MarketplaceStatusCodes::MARKET_PLACE_CONNECTION_FAILURE);
 		}
     }
@@ -152,7 +164,7 @@ class LLSLMGetListingsResponder : public LLHTTPClient::Responder
     {
 		if (!isGoodStatus(status))
 		{
-            log_SLM_error("Get listings", status, reason, "", "");
+            log_SLM_warning("Get /listings", status, reason, "", "");
             return;
 		}
         
@@ -165,11 +177,11 @@ class LLSLMGetListingsResponder : public LLHTTPClient::Responder
         Json::Reader reader;
         if (!reader.parse(body,root))
         {
-            log_SLM_error("Get listings", status, "Json parsing failed", reader.getFormatedErrorMessages(), body);
+            log_SLM_warning("Get /listings", status, "Json parsing failed", reader.getFormatedErrorMessages(), body);
             return;
         }
 
-        llinfos << "Merov : Get listings completedRaw : data = " << body << llendl;
+        log_SLM_warning("Get /listings", status, reason, "", body);
 
         // Extract the info from the Json string
         Json::ValueIterator it = root["listings"].begin();
@@ -211,7 +223,7 @@ class LLSLMCreateListingsResponder : public LLHTTPClient::Responder
     {
 		if (!isGoodStatus(status))
 		{
-            log_SLM_error("Post listings", status, reason, "", "");
+            log_SLM_warning("Post /listings", status, reason, "", "");
             return;
 		}
         
@@ -224,11 +236,11 @@ class LLSLMCreateListingsResponder : public LLHTTPClient::Responder
         Json::Reader reader;
         if (!reader.parse(body,root))
         {
-            log_SLM_error("Post listings", status, "Json parsing failed", reader.getFormatedErrorMessages(), body);
+            log_SLM_warning("Post /listings", status, "Json parsing failed", reader.getFormatedErrorMessages(), body);
             return;
         }
 
-        llinfos << "Merov : Create listing completedRaw : data = " << body << llendl;
+        log_SLM_warning("Post /listings", status, reason, "", body);
 
         // Extract the info from the Json string
         Json::ValueIterator it = root["listings"].begin();
@@ -271,7 +283,7 @@ class LLSLMGetListingResponder : public LLHTTPClient::Responder
         
 		if (!isGoodStatus(status))
 		{
-            log_SLM_error("Get listing", status, reason, "", body);
+            log_SLM_warning("Get /listing", status, reason, "", body);
             return;
 		}
         
@@ -279,11 +291,11 @@ class LLSLMGetListingResponder : public LLHTTPClient::Responder
         Json::Reader reader;
         if (!reader.parse(body,root))
         {
-            log_SLM_error("Get listing", status, "Json parsing failed", reader.getFormatedErrorMessages(), body);
+            log_SLM_warning("Get /listing", status, "Json parsing failed", reader.getFormatedErrorMessages(), body);
             return;
         }
         
-        llinfos << "Merov : Get listing completedRaw : status = " << status << ", reason = " << reason << ", body = " << body << llendl;
+        log_SLM_warning("Get /listing", status, reason, "", body);
         
         // Extract the info from the Json string
         Json::ValueIterator it = root["listings"].begin();
@@ -331,7 +343,7 @@ class LLSLMUpdateListingsResponder : public LLHTTPClient::Responder
         
 		if (!isGoodStatus(status))
 		{
-            log_SLM_error("Put listings", status, reason, "", body);
+            log_SLM_warning("Put /listing", status, reason, "", body);
             return;
 		}
         
@@ -339,11 +351,11 @@ class LLSLMUpdateListingsResponder : public LLHTTPClient::Responder
         Json::Reader reader;
         if (!reader.parse(body,root))
         {
-            log_SLM_error("Put listings", status, "Json parsing failed", reader.getFormatedErrorMessages(), body);
+            log_SLM_warning("Put /listing", status, "Json parsing failed", reader.getFormatedErrorMessages(), body);
             return;
         }
         
-        llinfos << "Merov : Update listing completedRaw : status = " << status << ", reason = " << reason << ", body = " << body << llendl;
+        log_SLM_warning("Put /listing", status, reason, "", body);
 
         // Extract the info from the Json string
         Json::ValueIterator it = root["listings"].begin();
@@ -388,7 +400,7 @@ class LLSLMAssociateListingsResponder : public LLHTTPClient::Responder
     {
 		if (!isGoodStatus(status))
 		{
-            log_SLM_error("Associate listings", status, reason, "", "");
+            log_SLM_warning("Put /associate_inventory", status, reason, "", "");
             return;
 		}
         
@@ -401,11 +413,11 @@ class LLSLMAssociateListingsResponder : public LLHTTPClient::Responder
         Json::Reader reader;
         if (!reader.parse(body,root))
         {
-            log_SLM_error("Associate listings", status, "Json parsing failed", reader.getFormatedErrorMessages(), body);
+            log_SLM_warning("Put /associate_inventory", status, "Json parsing failed", reader.getFormatedErrorMessages(), body);
             return;
         }
         
-        llinfos << "Merov : Associate listing completedRaw : data = " << body << llendl;
+        log_SLM_warning("Put /associate_inventory", status, reason, "", body);
         
         // Extract the info from the Json string
         Json::ValueIterator it = root["listings"].begin();
@@ -460,7 +472,7 @@ class LLSLMDeleteListingsResponder : public LLHTTPClient::Responder
         
  		if (!isGoodStatus(status))
 		{
-            log_SLM_error("Delete listings", status, reason, "", body);
+            log_SLM_warning("Delete /listing", status, reason, "", body);
             return;
 		}
         
@@ -468,11 +480,11 @@ class LLSLMDeleteListingsResponder : public LLHTTPClient::Responder
         Json::Reader reader;
         if (!reader.parse(body,root))
         {
-            log_SLM_error("Delete listings", status, "Json parsing failed", reader.getFormatedErrorMessages(), body);
+            log_SLM_warning("Delete /listing", status, "Json parsing failed", reader.getFormatedErrorMessages(), body);
             return;
         }
         
-        llinfos << "Merov : Delete listing completedRaw : data = " << body << llendl;
+        log_SLM_warning("Delete /listing", status, reason, "", body);
         
         // Extract the info from the Json string
         Json::ValueIterator it = root["listings"].begin();
@@ -482,16 +494,8 @@ class LLSLMDeleteListingsResponder : public LLHTTPClient::Responder
             Json::Value listing = *it;
             
             int listing_id = listing["id"].asInt();
-            std::string folder_uuid_string = listing["inventory_info"]["listing_folder_id"].asString();
-            
-            LLUUID folder_id(folder_uuid_string);
-            
-            // Check that the listing ID is associated to the correct folder
-            LLUUID old_listing = LLMarketplaceData::instance().getListingFolder(listing_id);
-            if (old_listing == folder_id)
-            {
-                LLMarketplaceData::instance().deleteListing(folder_id);
-            }
+            LLUUID folder_id = LLMarketplaceData::instance().getListingFolder(listing_id);
+            LLMarketplaceData::instance().deleteListing(folder_id);
             
             it++;
         }
@@ -1040,13 +1044,18 @@ void LLMarketplaceData::initializeSLM(const status_updated_signal_t::slot_type&
 		mStatusUpdatedSignal = new status_updated_signal_t();
 	}
 	mStatusUpdatedSignal->connect(cb);
-	LLHTTPClient::get(getSLMConnectURL("/merchant"), new LLSLMGetMerchantResponder(), LLSD());
+    
+    std::string url = getSLMConnectURL("/merchant");
+    log_SLM_warning("LLHTTPClient::get", url, "");
+	LLHTTPClient::get(url, new LLSLMGetMerchantResponder(), LLSD());
 }
 
 // Get/Post/Put requests to the SLM Server using the SLM API
 void LLMarketplaceData::getSLMListings()
 {
-	LLHTTPClient::get(getSLMConnectURL("/listings"), new LLSLMGetListingsResponder(), LLSD());
+    std::string url = getSLMConnectURL("/listings");
+    log_SLM_warning("LLHTTPClient::get", url, "");
+	LLHTTPClient::get(url, new LLSLMGetListingsResponder(), LLSD());
 }
 
 void LLMarketplaceData::getSLMListing(S32 listing_id)
@@ -1057,7 +1066,7 @@ void LLMarketplaceData::getSLMListing(S32 listing_id)
     
 	// Send request
     std::string url = getSLMConnectURL("/listing/") + llformat("%d",listing_id);
-    llinfos << "Merov : get listing : " << url << llendl;
+    log_SLM_warning("LLHTTPClient::get", url, "");
 	LLHTTPClient::get(url, new LLSLMGetListingResponder(), headers);
 }
 
@@ -1083,7 +1092,9 @@ void LLMarketplaceData::createSLMListing(const LLUUID& folder_id)
 	memcpy(data, (U8*)(json_str.c_str()), size);
     
 	// Send request
-	LLHTTPClient::postRaw(getSLMConnectURL("/listings"), data, size, new LLSLMCreateListingsResponder(), headers);
+    std::string url = getSLMConnectURL("/listings");
+    log_SLM_warning("LLHTTPClient::postRaw", url, json_str);
+	LLHTTPClient::postRaw(url, data, size, new LLSLMCreateListingsResponder(), headers);
 }
 
 void LLMarketplaceData::updateSLMListing(const LLUUID& folder_id, S32 listing_id, const LLUUID& version_id, bool is_listed)
@@ -1110,7 +1121,7 @@ void LLMarketplaceData::updateSLMListing(const LLUUID& folder_id, S32 listing_id
     
 	// Send request
     std::string url = getSLMConnectURL("/listing/") + llformat("%d",listing_id);
-    llinfos << "Merov : updating listing : " << url << ", data = " << json_str << llendl;
+    log_SLM_warning("LLHTTPClient::putRaw", url, json_str);
 	LLHTTPClient::putRaw(url, data, size, new LLSLMUpdateListingsResponder(), headers);
 }
 
@@ -1137,7 +1148,7 @@ void LLMarketplaceData::associateSLMListing(const LLUUID& folder_id, S32 listing
     
 	// Send request
     std::string url = getSLMConnectURL("/associate_inventory/") + llformat("%d",listing_id);
-    llinfos << "Merov : associate listing : " << url << ", data = " << json_str << llendl;
+    log_SLM_warning("LLHTTPClient::putRaw", url, json_str);
 	LLHTTPClient::putRaw(url, data, size, new LLSLMAssociateListingsResponder(), headers);
 }
 
@@ -1149,7 +1160,7 @@ void LLMarketplaceData::deleteSLMListing(S32 listing_id)
         
 	// Send request
     std::string url = getSLMConnectURL("/listing/") + llformat("%d",listing_id);
-    llinfos << "Merov : delete listing : " << url << llendl;
+    log_SLM_warning("LLHTTPClient::del", url, "");
 	LLHTTPClient::del(url, new LLSLMDeleteListingsResponder(), headers);
 }
 
@@ -1215,8 +1226,6 @@ bool LLMarketplaceData::clearListing(const LLUUID& folder_id)
         return false;
     }
     
-    llinfos << "Merov : clearListing, folder id = " << folder_id << ", listing uuid = " << listing_uuid << ", listing id = " << listing_id << ", depth = " << depth << llendl;
-    
     // Update the SLM Server so that this listing is deleted (actually, archived...)
     deleteSLMListing(listing_id);
     
@@ -1242,8 +1251,6 @@ bool LLMarketplaceData::getListing(const LLUUID& folder_id)
         return false;
     }
     
-    llinfos << "Merov : getListing, listing uuid = " << listing_uuid << ", listing id = " << listing_id << ", depth = " << depth << llendl;
-    
     // Get listing data from SLM
     getSLMListing(listing_id);