diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/Source.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/Source.java
index 0ebbf91..f75ea7b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/Source.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/Source.java
@@ -318,13 +318,6 @@
                         ref);
                     throw new NoSuchProjectException(project);
                   }
-                  if (!projectState.get().statePermitsRead()) {
-                    repLog.warn(
-                        "NOT scheduling replication {}:{} because project is not readable",
-                        project,
-                        ref);
-                    return false;
-                  }
                   if (!shouldReplicate(projectState.get(), userProvider.get())) {
                     return false;
                   }
diff --git a/src/main/resources/Documentation/about.md b/src/main/resources/Documentation/about.md
index 22b52e7..73c5c05 100644
--- a/src/main/resources/Documentation/about.md
+++ b/src/main/resources/Documentation/about.md
@@ -16,6 +16,10 @@
 group that is granted the 'Pull Replication' capability (provided
 by this plugin) or the 'Administrate Server' capability.
 
+When replicating hidden projects, the pull replication user needs to have
+the 'Administrate Server' capability or being added as the owner of each
+individual project that is supposed to be replicated.
+
 Change Indexing
 --------
 
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index b85aeb6..65b03b8 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -80,6 +80,21 @@
 
 	Default is 1024.
 
+cache.projects.refreshAfterWrite
+:	The Gerrit configuration of the `projects` cache, as [documented](/Documentation/config-gerrit.html#cache.name.refreshAfterWrite)
+
+	Needs to be set to a relatively low value (e.g. 1 min) for allowing the
+	project settings cache to be kept relatively up-to-date (e.g. within 1 mins)
+	with the incoming replication tasks updating it.
+
+cache.project_list.refreshAfterWrite
+:	The Gerrit configuration of the `project_list` cache, as [documented](/Documentation/config-gerrit.html#cache.name.refreshAfterWrite)
+
+	Needs to be set to a relatively low value (e.g. 5 min) for allowing the
+	creation, removal and hiding of projects performed by incoming
+	replication tasks to be reflected relavitely soon (e.g. within 5 mins)
+	in the list of projects.
+
 File `@PLUGIN@.config`
 -------------------------
 
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/fetch/ApplyObjectIT.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/fetch/ApplyObjectIT.java
index 161830b..c75d32a 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/fetch/ApplyObjectIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/fetch/ApplyObjectIT.java
@@ -77,12 +77,15 @@
     Result pushResult = createChange();
     String refName = RefNames.changeMetaRef(pushResult.getChange().getId());
 
-    Optional<RevisionData> revisionData =
-        reader.read(
-            Project.nameKey(testRepoProjectName), pushResult.getCommit().toObjectId(), refName, 0);
-
     RefSpec refSpec = new RefSpec(refName);
-    objectUnderTest.apply(project, refSpec, toArray(revisionData));
+    Optional<RevisionData> revisionData;
+    NameKey testRepoKey = Project.nameKey(testRepoProjectName);
+
+    try (Repository repo = repoManager.openRepository(testRepoKey)) {
+      revisionData = reader.read(testRepoKey, repo.exactRef(refName).getObjectId(), refName, 0);
+      objectUnderTest.apply(project, refSpec, toArray(revisionData));
+    }
+
     try (Repository repo = repoManager.openRepository(project);
         TestRepository<Repository> testRepo = new TestRepository<>(repo); ) {
       Optional<RevisionData> newRevisionData =
