diff --git a/container-images/gerrit-init/README.md b/container-images/gerrit-init/README.md
index 3f54bd5..2dc2333 100644
--- a/container-images/gerrit-init/README.md
+++ b/container-images/gerrit-init/README.md
@@ -32,6 +32,13 @@
 * waits for the reviewdb database
 + waits for some selected tables to ensure that the schema is initialized
 
+The `validate_notedb.py`-script
+
+* validates and waits for the repository `All-Projects.git` with the refs
+`refs/meta/config`.
+* validates and waits for the repository `All-Users.git` with the ref
+`refs/meta/config`.
+
 ## How to install/update python packages in container
 
 * Python 3.6 is required
diff --git a/container-images/gerrit-init/tools/validate_notedb.py b/container-images/gerrit-init/tools/validate_notedb.py
new file mode 100755
index 0000000..4fec993
--- /dev/null
+++ b/container-images/gerrit-init/tools/validate_notedb.py
@@ -0,0 +1,77 @@
+#!/usr/bin/python3
+
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed 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.
+
+import argparse
+import os
+import subprocess
+import time
+
+from log import get_logger
+
+LOG = get_logger("init")
+
+
+class NoteDbValidator:
+    def __init__(self, site):
+        self.site = site
+
+        self.notedb_repos = ["All-Projects.git", "All-Users.git"]
+        self.required_refs = {
+            "All-Projects.git": ["refs/meta/config"],
+            "All-Users.git": ["refs/meta/config"],
+        }
+
+    def _test_repo_exists(self, repo):
+        return os.path.exists(os.path.join(self.site, "git", repo))
+
+    def _test_ref_exists(self, repo, ref):
+        command = "git --git-dir %s/git/%s show-ref %s" % (self.site, repo, ref)
+        git_show_ref = subprocess.run(
+            command.split(), stdout=subprocess.PIPE, universal_newlines=True
+        )
+
+        return git_show_ref.returncode == 0
+
+    def execute(self):
+        for repo in self.notedb_repos:
+            LOG.info("Waiting for repository %s.", repo)
+            while not self._test_repo_exists(repo):
+                time.sleep(1)
+            LOG.info("Found %s.", repo)
+
+            for ref in self.required_refs[repo]:
+                LOG.info("Waiting for ref %s in repository %s.", ref, repo)
+                while not self._test_ref_exists(repo, ref):
+                    time.sleep(1)
+                LOG.info("Found ref %s in repo %s.", ref, repo)
+
+
+# pylint: disable=C0103
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser()
+    parser.add_argument(
+        "-s",
+        "--site",
+        help="Path to Gerrit site",
+        dest="site",
+        action="store",
+        default="/var/gerrit",
+        required=True,
+    )
+    args = parser.parse_args()
+
+    init = NoteDbValidator(args.site)
+    init.execute()
diff --git a/helm-charts/gerrit-slave/README.md b/helm-charts/gerrit-slave/README.md
index 1569c12..1c2cbab 100644
--- a/helm-charts/gerrit-slave/README.md
+++ b/helm-charts/gerrit-slave/README.md
@@ -62,6 +62,21 @@
 [configuration section](#Configuration) lists the parameters that can be
 configured during installation.
 
+If the NoteDB is used, the Gerrit slave requires the replicated `All-Projects.git`-
+and `All-Users.git`-repositories to be present in the `/var/gerrit/git`-directory.
+The `gerrit-init`-InitContainer will wait for this being the case. A way to do
+this is to access the Gerrit slave pod and to clone the repositories from the
+Gerrit master (Make sure that you have the correct access rights do so.):
+
+```sh
+kubectl exec -it <gerrit-slave-pod> -c gerrit-init bash
+gerrit@<gerrit-slave-pod>:/var/tools$ cd /var/gerrit/git
+gerrit@<gerrit-slave-pod>:/var/gerrit/git$ git clone "http://gerrit-master.com/All-Projects" --mirror
+Cloning into bare repository 'All-Projects.git'...
+gerrit@<gerrit-slave-pod>:/var/gerrit/git$ git clone "http://gerrit-master.com/All-Users" --mirror
+Cloning into bare repository 'All-Users.git'...
+```
+
 ## Configuration
 
 The following sections list the configurable values in `values.yaml`. To configure
diff --git a/helm-charts/gerrit-slave/templates/gerrit-slave.deployment.yaml b/helm-charts/gerrit-slave/templates/gerrit-slave.deployment.yaml
index 68cfed3..b158e3e 100644
--- a/helm-charts/gerrit-slave/templates/gerrit-slave.deployment.yaml
+++ b/helm-charts/gerrit-slave/templates/gerrit-slave.deployment.yaml
@@ -57,7 +57,13 @@
         - -ce
         args:
         - |
+          mkdir -p /var/gerrit/etc
+          ln -sf /var/config/secure.config /var/gerrit/etc/secure.config
+
           /var/tools/gerrit_init.py \
+            {{- if .Values.gerritSlave.reviewdb.enabled }}
+            --reviewdb \
+            {{- end }}
             -s /var/gerrit \
             -p singleusergroup
 
@@ -66,6 +72,9 @@
         volumeMounts:
         - name: gerrit-site
           mountPath: "/var/gerrit"
+        - name: gerrit-slave-secure-config
+          mountPath: "/var/config/secure.config"
+          subPath: secure.config
       {{- end }}
       # Wait for database to be ready and, if configured, run initialization
       # taking the given Gerrit configuration and persisted volumes into account.
@@ -94,13 +103,20 @@
 
           {{ if .Values.gerritSlave.initializeTestSite.enabled -}}
           /var/tools/gerrit_init.py \
+            {{- if .Values.gerritSlave.reviewdb.enabled }}
+            --reviewdb \
+            {{- end }}
             -s /var/gerrit \
             -p singleusergroup
 
           symlink_config_to_site
           {{- end }}
 
+          {{- if .Values.gerritSlave.reviewdb.enabled }}
           /var/tools/validate_db.py -s /var/gerrit
+          {{- else }}
+          /var/tools/validate_notedb.py -s /var/gerrit
+          {{- end }}
         volumeMounts:
         - name: gerrit-site
           mountPath: "/var/gerrit"
diff --git a/helm-charts/gerrit-slave/values.yaml b/helm-charts/gerrit-slave/values.yaml
index abd3fdb..919e4f9 100644
--- a/helm-charts/gerrit-slave/values.yaml
+++ b/helm-charts/gerrit-slave/values.yaml
@@ -192,6 +192,9 @@
   # automatic encoding using helm does not work here.
   keystore:
 
+  reviewdb:
+    enabled: true
+
   config:
     # Some values are expected to have a specific value for the deployment installed
     # by this chart to work. These are marked with `# FIXED`.
