diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
index 85dde52..50e62f8 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
@@ -732,5 +732,4 @@ public class Oak {
             this.closed = true;
         }
     }
-
 }
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/package-info.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/package-info.java
index fe882f2..7beeddf 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/package-info.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/package-info.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("1.1.0")
+@Version("1.2.0")
 @Export(optional = "provide:=true")
 package org.apache.jackrabbit.oak;
 
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
index adc9b33..676e6ed 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
@@ -108,6 +108,7 @@ import org.apache.jackrabbit.oak.spi.commit.CommitHook;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.Observer;
 import org.apache.jackrabbit.oak.spi.state.AbstractNodeState;
+import org.apache.jackrabbit.oak.spi.state.Clusterable;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStateDiff;
@@ -121,7 +122,7 @@ import org.slf4j.LoggerFactory;
  * Implementation of a NodeStore on {@link DocumentStore}.
  */
 public final class DocumentNodeStore
-        implements NodeStore, RevisionContext, Observable {
+        implements NodeStore, RevisionContext, Observable, Clusterable {
 
     private static final Logger LOG = LoggerFactory.getLogger(DocumentNodeStore.class);
 
@@ -2728,4 +2729,9 @@ public final class DocumentNodeStore
     public void setPersistentCache(PersistentCache persistentCache) {
         this.persistentCache = persistentCache;
     }
+
+    @Override
+    public String getInstanceId() {
+        return String.valueOf(getClusterId());
+    }
 }
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
index 3169381..98e1e6a 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
@@ -70,6 +70,7 @@ import org.apache.jackrabbit.oak.plugins.identifier.ClusterRepositoryInfo;
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
 import org.apache.jackrabbit.oak.spi.blob.BlobStoreWrapper;
 import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore;
+import org.apache.jackrabbit.oak.spi.state.Clusterable;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.apache.jackrabbit.oak.spi.state.RevisionGC;
 import org.apache.jackrabbit.oak.spi.state.RevisionGCMBean;
@@ -488,7 +489,13 @@ public class DocumentNodeStoreService {
         // OAK-2844: in order to allow DocumentDiscoveryLiteService to directly
         // require a service DocumentNodeStore (instead of having to do an 'instanceof')
         // the registration is now done for both NodeStore and DocumentNodeStore here.
-        reg = context.getBundleContext().registerService(new String[]{NodeStore.class.getName(), DocumentNodeStore.class.getName()}, store, props);
+        reg = context.getBundleContext().registerService(
+            new String[]{
+                 NodeStore.class.getName(), 
+                 DocumentNodeStore.class.getName(), 
+                 Clusterable.class.getName()
+            }, 
+            store, props);
     }
 
     @Deactivate
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/Clusterable.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/Clusterable.java
new file mode 100644
index 0000000..f32f41e
--- /dev/null
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/Clusterable.java
@@ -0,0 +1,38 @@
+/*
+ * 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.state;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Defines a clusterable persistence implementation. Normally associated with a {@link NodeStore}.
+ */
+public interface Clusterable {
+    /**
+     * <p>
+     * Will return a unique number per instance across the cluster. It will only make its best
+     * effort to preserve the same number across restarts but it must be unique across the cluster.
+     * </p>
+     * <p>
+     *  It may be the same as a cluster id. See {@link RevisionContext#getClusterId()}.
+     * </p>
+     * 
+     * @return Cannot be null or empty.
+     */
+    @Nonnull
+    String getInstanceId();
+}
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/package-info.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/package-info.java
index a7e4446..97b36b1 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/package-info.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/package-info.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("1.2.0")
+@Version("1.3.0")
 @Export(optional = "provide:=true")
 package org.apache.jackrabbit.oak.spi.state;
 
diff --git a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java
index 53b045a..1d2a673 100644
--- a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java
+++ b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java
@@ -43,6 +43,7 @@ import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexProvider;
 import org.apache.jackrabbit.oak.plugins.index.reference.ReferenceEditorProvider;
 import org.apache.jackrabbit.oak.plugins.index.reference.ReferenceIndexProvider;
 import org.apache.jackrabbit.oak.plugins.itemsave.ItemSaveValidatorProvider;
+import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
 import org.apache.jackrabbit.oak.plugins.name.NameValidatorProvider;
 import org.apache.jackrabbit.oak.plugins.name.NamespaceEditorProvider;
 import org.apache.jackrabbit.oak.plugins.nodetype.TypeEditorProvider;
@@ -61,6 +62,7 @@ import org.apache.jackrabbit.oak.spi.commit.PartialConflictHandler;
 import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
+import org.apache.jackrabbit.oak.spi.state.Clusterable;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
 
@@ -91,6 +93,8 @@ public class Jcr {
     private final Set<Observer> observers = newLinkedHashSet();
 
     private final CompositeConflictHandler conflictHandler = createJcrConflictHandler();
+    private String instanceId;
+
     private SecurityProvider securityProvider;
     private CommitRateLimiter commitRateLimiter;
     private ScheduledExecutorService scheduledExecutor;
@@ -105,9 +109,15 @@ public class Jcr {
     private ContentRepository contentRepository;
     private Repository repository;
         
-    public Jcr(Oak oak) {
+    public Jcr(Oak oak, NodeStore store) {
         this.oak = oak;
         
+        if (store instanceof Clusterable) {
+            instanceId = ((Clusterable) store).getInstanceId();
+        } else {
+            instanceId = null;
+        }
+        
         with(new InitialContent());
 
         with(new EditorHook(new VersionEditorProvider()));
@@ -134,11 +144,11 @@ public class Jcr {
     }
 
     public Jcr() {
-        this(new Oak());
+        this(new MemoryNodeStore());
     }
 
     public Jcr(NodeStore store) {
-        this(new Oak(store));
+        this(new Oak(store), store);
     }
 
     @Nonnull
@@ -366,5 +376,4 @@ public class Jcr {
         }
         return repository;
     }
-
 }
diff --git a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/package-info.java b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/package-info.java
index b8b03d6..2d09da9 100644
--- a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/package-info.java
+++ b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/package-info.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("1.1.0")
+@Version("2.0.0")
 @Export(optional = "provide:=true")
 package org.apache.jackrabbit.oak.jcr;
 
diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakTarMKRepositoryStub.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakTarMKRepositoryStub.java
index b970354..7497d7f 100644
--- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakTarMKRepositoryStub.java
+++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakTarMKRepositoryStub.java
@@ -18,11 +18,11 @@ package org.apache.jackrabbit.oak.jcr;
 
 import java.io.File;
 import java.util.Properties;
+
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
-import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore;
 import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
 import org.apache.jackrabbit.oak.query.QueryEngineSettings;
@@ -50,7 +50,7 @@ public class OakTarMKRepositoryStub extends OakRepositoryStub {
             File directory =
                     new File("target", "tarmk-" + System.currentTimeMillis());
             this.store = new FileStore(directory, 1, false);
-            Jcr jcr = new Jcr(new Oak(new SegmentNodeStore(store)));
+            Jcr jcr = new Jcr(new SegmentNodeStore(store));
             QueryEngineSettings qs = new QueryEngineSettings();
             qs.setFullTextComparisonWithoutIndex(true);
             jcr.with(qs);
diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RefreshOnGCTest.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RefreshOnGCTest.java
index 49e8dbc..1a9b819 100644
--- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RefreshOnGCTest.java
+++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RefreshOnGCTest.java
@@ -97,7 +97,7 @@ public class RefreshOnGCTest {
         NodeStore nodeStore = new SegmentNodeStore(fileStore);
         Oak oak = new Oak(nodeStore);
         oak.with(whiteboard);
-        repository = new Jcr(oak).createRepository();
+        repository = new Jcr(oak, nodeStore).createRepository();
     }
 
     @After
diff --git a/oak-remote/src/test/java/org/apache/jackrabbit/oak/remote/http/handler/RemoteServerIT.java b/oak-remote/src/test/java/org/apache/jackrabbit/oak/remote/http/handler/RemoteServerIT.java
index bd86ce8..c76f698 100644
--- a/oak-remote/src/test/java/org/apache/jackrabbit/oak/remote/http/handler/RemoteServerIT.java
+++ b/oak-remote/src/test/java/org/apache/jackrabbit/oak/remote/http/handler/RemoteServerIT.java
@@ -95,7 +95,7 @@ public class RemoteServerIT extends OakBaseTest {
     }
 
     private ContentRepository getContentRepository() {
-        return new Jcr(new Oak(store)).createContentRepository();
+        return new Jcr(store).createContentRepository();
     }
 
     private ContentSession getContentSession(ContentRepository repository) throws Exception {
diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractLoginTest.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractLoginTest.java
index 6afb19c..7538bec 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractLoginTest.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/AbstractLoginTest.java
@@ -123,7 +123,7 @@ abstract class AbstractLoginTest extends AbstractTest {
                                     UserConfiguration.NAME, ConfigurationParameters.of(iterations, cache));
                         }
                         SecurityProvider sp = new SecurityProviderImpl(conf);
-                        return new Jcr(oak).with(sp);
+                        return new Jcr(oak, null).with(sp);
                     }
                 });
             } else {
diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/CompositeAuthorizationTest.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/CompositeAuthorizationTest.java
index c4db81b..2495385 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/CompositeAuthorizationTest.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/CompositeAuthorizationTest.java
@@ -78,7 +78,7 @@ public class CompositeAuthorizationTest extends ReadDeepTreeTest {
             return ((OakRepositoryFixture) fixture).setUpCluster(1, new JcrCreator() {
                 @Override
                 public Jcr customize(Oak oak) {
-                    return new Jcr(oak).with(new TmpSecurityProvider(cnt));
+                    return new Jcr(oak, null).with(new TmpSecurityProvider(cnt));
                 }
             });
         } else {
diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/CugOakTest.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/CugOakTest.java
index 76872c5..c691ece 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/CugOakTest.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/CugOakTest.java
@@ -58,7 +58,7 @@ public class CugOakTest extends CugTest {
             return ((OakRepositoryFixture) fixture).setUpCluster(1, new JcrCreator() {
                 @Override
                 public Jcr customize(Oak oak) {
-                    Jcr jcr = new Jcr(oak).with(createSecurityProvider());
+                    Jcr jcr = new Jcr(oak, null).with(createSecurityProvider());
                     contentRepository = jcr.createContentRepository();
                     return jcr;
                 }
diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/CugTest.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/CugTest.java
index b402b96..9820582 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/CugTest.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/CugTest.java
@@ -59,7 +59,7 @@ public class CugTest extends ReadDeepTreeTest {
             return ((OakRepositoryFixture) fixture).setUpCluster(1, new JcrCreator() {
                 @Override
                 public Jcr customize(Oak oak) {
-                    return new Jcr(oak).with(createSecurityProvider());
+                    return new Jcr(oak, null).with(createSecurityProvider());
                 }
             });
         } else {
diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSearchTest.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSearchTest.java
index 5be07db..beb213c 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSearchTest.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSearchTest.java
@@ -186,7 +186,7 @@ public class FullTextSearchTest extends AbstractTest<FullTextSearchTest.TestCont
                             .with((Observer) provider)
                             .with(new LuceneIndexEditorProvider())
                             .with(new LuceneInitializerHelper("luceneGlobal", storageEnabled));
-                    return new Jcr(oak);
+                    return new Jcr(oak, null);
                 }
             });
         }
diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSolrSearchTest.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSolrSearchTest.java
index e31f5d7..a105bb3 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSolrSearchTest.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSolrSearchTest.java
@@ -82,7 +82,7 @@ public class FullTextSolrSearchTest extends FullTextSearchTest {
                         .with(new NodeStateSolrServersObserver())
                         .with(new SolrIndexEditorProvider(serverProvider, configurationProvider))
                         .with(new SolrIndexInitializer(false));
-                    return new Jcr(oak);
+                    return new Jcr(oak, null);
                 }
             });
         }
diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFTSeparated.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFTSeparated.java
index 630d4fe..f9e476f 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFTSeparated.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFTSeparated.java
@@ -65,7 +65,7 @@ public class LucenePropertyFTSeparated extends LucenePropertyFullTextTest {
                        .with(new LucenePropertyInitialiser("luceneTitle", of("title")))
                        .withAsyncIndexing("async", 5)
                        .withAsyncIndexing("async-slow", 5);
-                    return new Jcr(oak);
+                    return new Jcr(oak, null);
                 }
             });
         }
diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFullTextTest.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFullTextTest.java
index 25edd25..bfd5864 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFullTextTest.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/LucenePropertyFullTextTest.java
@@ -195,7 +195,7 @@ public class LucenePropertyFullTextTest extends AbstractTest<LucenePropertyFullT
                        // the WikipediaImporter set a property `title`
                        .with(new LucenePropertyInitialiser("luceneTitle", of("title")))
                        .withAsyncIndexing("async", 5);
-                    return new Jcr(oak);
+                    return new Jcr(oak, null);
                 }
             });
         }
diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ManyGroupMembersTest.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ManyGroupMembersTest.java
index 653bfd1..b5f7ea4 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ManyGroupMembersTest.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ManyGroupMembersTest.java
@@ -138,7 +138,7 @@ public class ManyGroupMembersTest extends AbstractTest {
                 @Override
                 public Jcr customize(Oak oak) {
                     SecurityProvider sp = new SecurityProviderImpl(ConfigurationParameters.of(UserConfiguration.NAME, ConfigurationParameters.of(ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR, importBehavior)));
-                    return new Jcr(oak).with(sp);
+                    return new Jcr(oak, null).with(sp);
                 }
             });
         } else {
diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ObservationTest.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ObservationTest.java
index c1502f5..c68fb88 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ObservationTest.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ObservationTest.java
@@ -82,7 +82,7 @@ public class ObservationTest extends Benchmark {
                             @Override
                             public Jcr customize(Oak oak) {
                                 whiteboardRef.set(oak.getWhiteboard());
-                                return new Jcr(oak);
+                                return new Jcr(oak, null);
                             }
                         });
                     } else {
diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadPropertyTest.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadPropertyTest.java
index de2fcbd..96a1f8b 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadPropertyTest.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/ReadPropertyTest.java
@@ -106,7 +106,7 @@ public class ReadPropertyTest extends AbstractTest {
                                 .build();
                         reporter.start(30, TimeUnit.SECONDS);
                     }
-                    return new Jcr(oak);
+                    return new Jcr(oak, null);
                 }
             });
         }
diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/RepositoryGrowthTest.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/RepositoryGrowthTest.java
index aaa1093..b518c4d 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/RepositoryGrowthTest.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/RepositoryGrowthTest.java
@@ -76,7 +76,7 @@ public class RepositoryGrowthTest extends WikipediaImport {
                             .with(new LuceneIndexEditorProvider())
                             .with(new LuceneInitializerHelper("luceneGlobal", LuceneIndexHelper.JR_PROPERTY_INCLUDES,
                                     null, path, null));
-                    return new Jcr(oak);
+                    return new Jcr(oak, null);
                 }
             });
         }
diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/RevisionGCTest.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/RevisionGCTest.java
index 6766458..67b0fe1 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/RevisionGCTest.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/RevisionGCTest.java
@@ -65,7 +65,7 @@ public class RevisionGCTest extends Benchmark {
                             @Override
                             public Jcr customize(Oak oak) {
                                 whiteboardRef.set(oak);
-                                return new Jcr(oak);
+                                return new Jcr(oak, null);
                             }
                         });
                     } else {
diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/JcrCreator.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/JcrCreator.java
index 4d7fc1d..85be64a 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/JcrCreator.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/fixture/JcrCreator.java
@@ -26,7 +26,7 @@ public interface JcrCreator {
     JcrCreator DEFAULT = new JcrCreator() {
         @Override
         public Jcr customize(Oak oak) {
-            return new Jcr(oak);
+            return new Jcr(oak, null);
         }
     };
 
diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java
index 8a79d9a..1329553 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/run/Main.java
@@ -1255,7 +1255,7 @@ public final class Main {
         }
 
         private void addServlets(Oak oak, String path) {
-            Jcr jcr = new Jcr(oak);
+            Jcr jcr = new Jcr(oak, null);
 
             // 1 - OakServer
             ContentRepository repository = jcr.createContentRepository();
diff --git a/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java b/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java
index c7c3e5f..0ea323a 100644
--- a/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java
+++ b/oak-run/src/main/java/org/apache/jackrabbit/oak/scalability/suites/ScalabilityNodeSuite.java
@@ -460,7 +460,7 @@ public class ScalabilityNodeSuite extends ScalabilityAbstractSuite {
                     }
 
                     whiteboard = oak.getWhiteboard();
-                    return new Jcr(oak);
+                    return new Jcr(oak, null);
                 }
             });
         }
diff --git a/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/AbstractRepositoryUpgradeTest.java b/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/AbstractRepositoryUpgradeTest.java
index e587f0d..e85a125 100644
--- a/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/AbstractRepositoryUpgradeTest.java
+++ b/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/AbstractRepositoryUpgradeTest.java
@@ -140,8 +140,7 @@ public abstract class AbstractRepositoryUpgradeTest {
 
     public Repository getTargetRepository() {
         if (targetRepository == null) {
-            targetRepository = (JackrabbitRepository) new Jcr(new Oak(
-                    targetNodeStore)).createRepository();
+            targetRepository = (JackrabbitRepository) new Jcr(targetNodeStore).createRepository();
         }
         return targetRepository;
     }
diff --git a/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistorySidegradeTest.java b/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistorySidegradeTest.java
index d291531..83bd9a5 100644
--- a/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistorySidegradeTest.java
+++ b/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistorySidegradeTest.java
@@ -38,7 +38,7 @@ public class CopyVersionHistorySidegradeTest extends CopyVersionHistoryTest {
     public void upgradeRepository() throws Exception {
         if (sourceNodeStore == null) {
             sourceNodeStore = new MemoryNodeStore();
-            RepositoryImpl repository = (RepositoryImpl) new Jcr(new Oak(sourceNodeStore)).createRepository();
+            RepositoryImpl repository = (RepositoryImpl) new Jcr(sourceNodeStore).createRepository();
             Session session = repository.login(CREDENTIALS);
             try {
                 createSourceContent(session);
@@ -56,7 +56,7 @@ public class CopyVersionHistorySidegradeTest extends CopyVersionHistoryTest {
         setup.setup(sidegrade.versionCopyConfiguration);
         sidegrade.copy(null);
 
-        repository = (RepositoryImpl) new Jcr(new Oak(targetNodeStore)).createRepository();
+        repository = (RepositoryImpl) new Jcr(targetNodeStore).createRepository();
         Session s = repository.login(AbstractRepositoryUpgradeTest.CREDENTIALS);
         sessions.add(s);
         return s;
diff --git a/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java b/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java
index ae3f461..4ce7275 100644
--- a/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java
+++ b/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java
@@ -236,7 +236,7 @@ public class CopyVersionHistoryTest extends AbstractRepositoryUpgradeTest {
             sourceContext.getRepository().shutdown();
         }
 
-        repository = (RepositoryImpl) new Jcr(new Oak(targetNodeStore)).createRepository();
+        repository = (RepositoryImpl) new Jcr(targetNodeStore).createRepository();
         Session s = repository.login(AbstractRepositoryUpgradeTest.CREDENTIALS);
         sessions.add(s);
         return s;
diff --git a/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/IncludeExcludeSidegradeTest.java b/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/IncludeExcludeSidegradeTest.java
index 3ab1306..d546f4a 100644
--- a/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/IncludeExcludeSidegradeTest.java
+++ b/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/IncludeExcludeSidegradeTest.java
@@ -40,7 +40,7 @@ public class IncludeExcludeSidegradeTest extends IncludeExcludeUpgradeTest {
             source.mkdirs();
             FileStore fileStore = FileStore.newFileStore(source).create();
             SegmentNodeStore segmentNodeStore = SegmentNodeStore.newSegmentNodeStore(fileStore).create();
-            RepositoryImpl repository = (RepositoryImpl) new Jcr(new Oak(segmentNodeStore)).createRepository();
+            RepositoryImpl repository = (RepositoryImpl) new Jcr(segmentNodeStore).createRepository();
             Session session = repository.login(CREDENTIALS);
             try {
                 createSourceContent(session);
diff --git a/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositorySidegradeTest.java b/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositorySidegradeTest.java
index 232ffa7..f9417ad 100644
--- a/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositorySidegradeTest.java
+++ b/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepeatedRepositorySidegradeTest.java
@@ -45,7 +45,7 @@ public class RepeatedRepositorySidegradeTest extends RepeatedRepositoryUpgradeTe
 
             FileStore fileStore = FileStore.newFileStore(sourceDir).create();
             SegmentNodeStore segmentNodeStore = SegmentNodeStore.newSegmentNodeStore(fileStore).create();
-            RepositoryImpl repository = (RepositoryImpl) new Jcr(new Oak(segmentNodeStore)).createRepository();
+            RepositoryImpl repository = (RepositoryImpl) new Jcr(segmentNodeStore).createRepository();
             Session session = repository.login(CREDENTIALS);
             try {
                 createSourceContent(session);
@@ -62,7 +62,7 @@ public class RepeatedRepositorySidegradeTest extends RepeatedRepositoryUpgradeTe
 
             fileStore = FileStore.newFileStore(sourceDir).create();
             segmentNodeStore = SegmentNodeStore.newSegmentNodeStore(fileStore).create();
-            repository = (RepositoryImpl) new Jcr(new Oak(segmentNodeStore)).createRepository();
+            repository = (RepositoryImpl) new Jcr(segmentNodeStore).createRepository();
             session = repository.login(CREDENTIALS);
             try {
                 modifySourceContent(session);
diff --git a/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegradeTest.java b/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegradeTest.java
index ec14fc9..30ff59f 100644
--- a/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegradeTest.java
+++ b/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegradeTest.java
@@ -89,7 +89,7 @@ public class RepositorySidegradeTest {
     @Before
     public synchronized void upgradeRepository() throws Exception {
         targetNodeStore = new SegmentNodeStore();
-        targetRepository = new Jcr(new Oak(targetNodeStore)).createRepository();
+        targetRepository = new Jcr(targetNodeStore).createRepository();
         NodeStore source = createSourceContent();
         RepositorySidegrade sidegrade = new RepositorySidegrade(source, targetNodeStore);
         sidegrade.copy();
@@ -118,7 +118,7 @@ public class RepositorySidegradeTest {
         NodeStore source = new SegmentNodeStore();
         setAsync(source);
         
-        Repository repository = new Jcr(new Oak(source)).createRepository();
+        Repository repository = new Jcr(source).createRepository();
 
         Session session = repository.login(CREDENTIALS);
         try {
