diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
index 9186172..5682c49 100644
--- oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
@@ -100,6 +100,7 @@ import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
 import org.apache.jackrabbit.oak.spi.lifecycle.WorkspaceInitializer;
 import org.apache.jackrabbit.oak.spi.query.CompositeQueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
+import org.apache.jackrabbit.oak.spi.query.QueryIndexProviderAware;
 import org.apache.jackrabbit.oak.spi.query.QueryLimits;
 import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
@@ -716,7 +717,11 @@ public class Oak {
                         new Function<SecurityConfiguration, WorkspaceInitializer>() {
                             @Override
                             public WorkspaceInitializer apply(SecurityConfiguration sc) {
-                                return sc.getWorkspaceInitializer();
+                                WorkspaceInitializer wi = sc.getWorkspaceInitializer();
+                                if (wi instanceof QueryIndexProviderAware){
+                                    ((QueryIndexProviderAware) wi).setQueryIndexProvider(indexProvider);
+                                }
+                                return wi;
                             }
                         });
         OakInitializer.initialize(
diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java
index 6940040..729aaf6 100644
--- oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserInitializer.java
@@ -28,14 +28,13 @@ import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
 import org.apache.jackrabbit.oak.plugins.index.IndexUtils;
-import org.apache.jackrabbit.oak.plugins.index.nodetype.NodeTypeIndexProvider;
-import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexProvider;
 import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
 import org.apache.jackrabbit.oak.plugins.tree.factories.RootFactory;
 import org.apache.jackrabbit.oak.plugins.tree.TreeUtil;
 import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
 import org.apache.jackrabbit.oak.spi.lifecycle.WorkspaceInitializer;
-import org.apache.jackrabbit.oak.spi.query.CompositeQueryIndexProvider;
+import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
+import org.apache.jackrabbit.oak.spi.query.QueryIndexProviderAware;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
@@ -46,6 +45,7 @@ import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.squeeze;
 
@@ -73,7 +73,7 @@ import static org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.squeeze
  * <li>{@link UserConstants#REP_MEMBERS}</li>
  * </ul>
  */
-class UserInitializer implements WorkspaceInitializer, UserConstants {
+class UserInitializer implements WorkspaceInitializer, UserConstants, QueryIndexProviderAware {
 
     /**
      * logger instance
@@ -82,6 +82,8 @@ class UserInitializer implements WorkspaceInitializer, UserConstants {
 
     private final SecurityProvider securityProvider;
 
+    private QueryIndexProvider queryIndexProvider;
+
     UserInitializer(SecurityProvider securityProvider) {
         this.securityProvider = securityProvider;
     }
@@ -95,8 +97,7 @@ class UserInitializer implements WorkspaceInitializer, UserConstants {
         MemoryNodeStore store = new MemoryNodeStore(base);
 
         Root root = RootFactory.createSystemRoot(store, EmptyHook.INSTANCE, workspaceName,
-                securityProvider,
-                new CompositeQueryIndexProvider(new PropertyIndexProvider(), new NodeTypeIndexProvider()));
+                securityProvider,  getIndexProvider());
 
         UserConfiguration userConfiguration = securityProvider.getConfiguration(UserConfiguration.class);
         UserManager userManager = userConfiguration.getUserManager(root, NamePathMapper.DEFAULT);
@@ -153,4 +154,13 @@ class UserInitializer implements WorkspaceInitializer, UserConstants {
         NodeState target = store.getRoot();
         target.compareAgainstBaseState(base, new ApplyDiff(builder));
     }
+
+    private QueryIndexProvider getIndexProvider() {
+        return checkNotNull(queryIndexProvider, "QueryIndexProvider yet not initialized");
+    }
+
+    @Override
+    public void setQueryIndexProvider(QueryIndexProvider provider) {
+        this.queryIndexProvider = provider;
+    }
 }
diff --git oak-query-spi/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndexProviderAware.java oak-query-spi/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndexProviderAware.java
new file mode 100644
index 0000000..675cb18
--- /dev/null
+++ oak-query-spi/src/main/java/org/apache/jackrabbit/oak/spi/query/QueryIndexProviderAware.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.jackrabbit.oak.spi.query;
+
+public interface QueryIndexProviderAware {
+
+    void setQueryIndexProvider(QueryIndexProvider provider);
+}
