diff --git a/indra/newview/llaisapi.cpp b/indra/newview/llaisapi.cpp
index 714b456ae72a1513ea7b678cb5fcac12bc7b4344..d8b6cc729dd5befe2b13ade103e1b4673d81d5f1 100755
--- a/indra/newview/llaisapi.cpp
+++ b/indra/newview/llaisapi.cpp
@@ -567,13 +567,25 @@ void AISUpdate::parseCategory(const LLSD& category_map)
 		parseDescendentCount(category_id, category_map["_embedded"]);
 	}
 
-	LLPointer<LLViewerInventoryCategory> new_cat(new LLViewerInventoryCategory(category_id));
+	LLPointer<LLViewerInventoryCategory> new_cat;
 	LLViewerInventoryCategory *curr_cat = gInventory.getCategory(category_id);
 	if (curr_cat)
 	{
 		// Default to current values where not provided.
-		new_cat->copyViewerCategory(curr_cat);
-	}
+        new_cat = new LLViewerInventoryCategory(curr_cat);
+    }
+    else
+    {
+        if (category_map.has("agent_id"))
+        {
+            new_cat = new LLViewerInventoryCategory(category_map["agent_id"].asUUID());
+        }
+        else
+        {
+            LL_DEBUGS() << "No owner provided, folder might be assigned wrong owner" << LL_ENDL;
+            new_cat = new LLViewerInventoryCategory(LLUUID::null);
+        }
+    }
 	BOOL rv = new_cat->unpackMessage(category_map);
 	// *NOTE: unpackMessage does not unpack version or descendent count.
 	//if (category_map.has("version"))
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 0bad4702e00b45fb5e73b6daacdcc1ffe03139ee..e123a3e68a92cc510f0c0c8b3f7fbc9971467ae8 100755
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -1075,7 +1075,7 @@ void LLInventoryModel::updateCategory(const LLViewerInventoryCategory* cat, U32
 	else
 	{
 		// add this category
-		LLPointer<LLViewerInventoryCategory> new_cat = new LLViewerInventoryCategory(cat->getParentUUID());
+		LLPointer<LLViewerInventoryCategory> new_cat = new LLViewerInventoryCategory(cat->getOwnerID());
 		new_cat->copyViewerCategory(cat);
 		addCategory(new_cat);