diff --git a/config/alfresco/model/permissionDefinitions.xml b/config/alfresco/model/permissionDefinitions.xml
index 7c72635b37..b6e956cba3 100644
--- a/config/alfresco/model/permissionDefinitions.xml
+++ b/config/alfresco/model/permissionDefinitions.xml
@@ -106,6 +106,7 @@
+
@@ -279,6 +280,15 @@
-->
+
+
+
+
+
+
+
@@ -536,4 +546,8 @@
+
+
+
+
diff --git a/source/java/org/alfresco/repo/admin/patch/impl/MoveWCMToGroupBasedPermissionsPatch.java b/source/java/org/alfresco/repo/admin/patch/impl/MoveWCMToGroupBasedPermissionsPatch.java
index 3af5b17286..c54fa710f3 100644
--- a/source/java/org/alfresco/repo/admin/patch/impl/MoveWCMToGroupBasedPermissionsPatch.java
+++ b/source/java/org/alfresco/repo/admin/patch/impl/MoveWCMToGroupBasedPermissionsPatch.java
@@ -41,6 +41,7 @@ import org.alfresco.repo.avm.AVMRepository;
import org.alfresco.repo.domain.PropertyValue;
import org.alfresco.repo.domain.hibernate.AclDaoComponentImpl;
import org.alfresco.repo.search.AVMSnapShotTriggeredIndexingMethodInterceptor;
+import org.alfresco.repo.search.AVMSnapShotTriggeredIndexingMethodInterceptor.StoreType;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
@@ -132,7 +133,10 @@ public class MoveWCMToGroupBasedPermissionsPatch extends AbstractPatch
List stores = avmService.getStores();
for (AVMStoreDescriptor store : stores)
{
- switch (avmSnapShotTriggeredIndexingMethodInterceptor.getStoreType(store.getName()))
+
+ Map storeProperties = avmService.getStoreProperties(store.getName());
+
+ switch (StoreType.getStoreType(store.getName(), store, storeProperties))
{
/* Set permissions in staging */
case STAGING:
diff --git a/source/java/org/alfresco/repo/admin/patch/impl/WCMPermissionPatch.java b/source/java/org/alfresco/repo/admin/patch/impl/WCMPermissionPatch.java
index 2ec49dd6f8..f37c4ed840 100644
--- a/source/java/org/alfresco/repo/admin/patch/impl/WCMPermissionPatch.java
+++ b/source/java/org/alfresco/repo/admin/patch/impl/WCMPermissionPatch.java
@@ -35,6 +35,7 @@ import org.alfresco.repo.avm.AVMRepository;
import org.alfresco.repo.domain.PropertyValue;
import org.alfresco.repo.domain.hibernate.AclDaoComponentImpl;
import org.alfresco.repo.search.AVMSnapShotTriggeredIndexingMethodInterceptor;
+import org.alfresco.repo.search.AVMSnapShotTriggeredIndexingMethodInterceptor.StoreType;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
@@ -103,7 +104,9 @@ public class WCMPermissionPatch extends AbstractPatch
List stores = avmService.getStores();
for (AVMStoreDescriptor store : stores)
{
- switch (avmSnapShotTriggeredIndexingMethodInterceptor.getStoreType(store.getName()))
+ Map storeProperties = avmService.getStoreProperties(store.getName());
+
+ switch (StoreType.getStoreType(store.getName(), store, storeProperties))
{
/* Set permissions in staging */
case STAGING:
diff --git a/source/java/org/alfresco/repo/avm/AVMDiffPerformanceTest.java b/source/java/org/alfresco/repo/avm/AVMDiffPerformanceTest.java
new file mode 100644
index 0000000000..d5240fd1b2
--- /dev/null
+++ b/source/java/org/alfresco/repo/avm/AVMDiffPerformanceTest.java
@@ -0,0 +1,79 @@
+package org.alfresco.repo.avm;
+
+import java.util.List;
+
+import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
+import org.alfresco.service.cmr.avmsync.AVMDifference;
+import org.alfresco.service.cmr.repository.StoreRef;
+import org.alfresco.service.cmr.search.ResultSet;
+import org.alfresco.service.cmr.search.SearchService;
+import org.alfresco.util.GUID;
+
+public class AVMDiffPerformanceTest extends AVMServiceTestBase
+{
+
+ public void test_10000() throws Exception
+ {
+ fTransactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback